首先,我要说的是,我并不是在寻找自动的解决方案。我想把代码从Python翻译成Smalltalk,因为我注意到一些非常简单的句子可以自动翻译,例如:
将变量分配给值
Python
i = 1
小谈话
i := 1.
创建类的新实例
Python
instance = module.ClassName()
小谈话
instance := ClassName new.
A用于循环
Python
for a in [0,1,2]:
print (str(a)+str(a))
小谈话
#(0 1 2) do: [: a | Transcript show: a + a; cr ]
等等(循环、条件等)。我的想法是有一个工具来翻译所有这些极端“简单”的案例,然后我可以手工完成或教授一个规则系统。
你知道有什么程序设计、翻译工具或库可以帮助我吗?
如果您还没有听说过任何工具,您将使用什么技术/模式来实现这种转换?你能提供一个链接到一个例子吗?
谢谢
发布于 2012-04-23 06:34:50
我不知道任何这样的工具,一般情况下,它可能是复杂和/或低效的。因此,您的路径将取决于您更精确的需求:移植现有的python库,只使用smalltalk,或者编写与python相同的干净的smalltalk代码。
我会考虑的路线:
请注意,生成器变体在一般情况下可能面临一些困难问题,例如,smalltalk有固定数量的实例变量,而在python中,您可以在运行时附加这些变量。您可以解决这个问题,但是由此产生的smalltalk代码可能不是很好。
至于在smalltalk中实现python --请看Lukas的helvetia演示文稿,它的主题是在smalltalk中包含其他语言。
发布于 2012-04-23 00:50:15
您需要解析Python代码,遍历解析器生成的抽象语法树并输出Smalltalk。有一篇关于班德斯基的Python的好文章,还有一篇稍早一些的这里文章。由于Python标准库公开了很多解释器的内部工具,而且文档相当全面,所以Python就比较直截了当。
发布于 2012-04-23 00:53:17
看看铺层,它是一个implementation实现。我主要使用它来构建Python,将其他语言转换为Python字节代码,但也有可能出现相反的情况。
https://stackoverflow.com/questions/10273513
复制相似问题