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() 将它们转换为“\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

这可能有点矫枉过正,但请看一下 Ply 解析器项目。您将必须了解正则表达式和 Backus Naur 格式。

层解析器

于 2012-06-01T14:17:16.403 回答
0

好吧,对于文件的初学者open(),使用它的readlines()方法将其放入字符串列表中。

从那里您可以遍历该列表并使用方法组合或字符串模块中split(";;;")更复杂的方法。re

于 2012-06-01T13:34:15.597 回答