0

これを変更する方法:

fv (x,y,z) begin  print x;;;  print y ;;; return x + y + z end;

x = fv(2,34,5)

g (x) begin y = x + 45 ;;;  return y end;

z = g(23)

r = 53

h (x,y,z,r) begin  print x;;;  print y ;;; print z;;;print r;;;return x + y + z end;

これに:

def fv (x,y,z) :    
    print x   
    print y   
    return x + y + z 

x = fv(2,34,5)

def g (x) :  
    y = x + 45  
    return y 

z = g(23)

r = 53

def h (x,y,z,r) :   
    print x   
    print y   
    print z   
    print r   
    return x + y + z

私は完全なコードを求めたり、宿題をしたりするのではなく、アドバイスやサンプル、またはこれを行う方法の指示だけが必要です。

4

5 に答える 5

3

あなたは最初のヒントを探しているだけなので、これはおそらく宿題です...

さまざまなラインエンダー(「begin」、「;;;」、「end;」など)でreplace()を実行し、それらの1つに「:」を付けて「\n」に変換します。

結果のテキストを.split( "\ n")で行に分割します

行をウォークして、行のプレフィックス( "def"、インデント)を調整します

"\ n" .join(...)を使用して行を元に戻します

出力テキストを書く

于 2012-06-01T13:38:27.220 に答える
1

これはあなたが始めることができます

for line in code:
    line = line.replace( "begin", " :\n" + " " * 4 ).replace( ";;;", "\n" + " " * 4 ).replace( "end;", "\n" + " " * 4 )
于 2012-06-01T13:41:10.530 に答える
0

sedたとえば、コマンドラインツールを見てください。期待されている/使用が許可されているツールを知るのは少し難しいです...

于 2012-06-01T13:29:54.600 に答える
0

まず、ファイルを作成する場合open()は、そのreadlines()メソッドを使用してファイルを文字列のリストに入れます。

そこから、そのリストを反復処理して、メソッドの組み合わせまたは文字列のモジュールsplit(";;;")からのより複雑なものを使用できます。re

于 2012-06-01T13:34:15.597 に答える
0

これはやり過ぎかもしれませんが、Plyパーサープロジェクトを見てください。正規表現とバッカス・ナウア記法について学ぶ必要があります。

プライパーサー

于 2012-06-01T14:17:16.403 に答える