背景:
在寒假期间,我正在尝试使用Python和PLY实现一种名为Axe的编程语言(专为图形计算器设计)。简要说明:该语言仅允许全局变量,并且大量使用指针。
我正在尝试在这种语言中实现goto,但不知道如何做到这一点。
我的一般方法是首先使用PLY将代码解析为ast,然后在执行时遍历它。
例如,语句
我正在尝试在这种语言中实现goto,但不知道如何做到这一点。
我的一般方法是首先使用PLY将代码解析为ast,然后在执行时遍历它。
例如,语句
If 3
Disp 4
Disp 6
End
...会变成...
['PROGRAM',
['BLOCK',
['IF',
['CONDITION', 3],
['BLOCK',
['DISP', 4],
['DISP', 6]
]
]
]
]
我希望能够递归执行以下代码(为了易读性,我添加了缩进)。
由于ast是一棵树,我不确定如何在不同的节点之间跳转。我考虑将树转换为类似数组的形式['IF',['CONDITION',3],['DISP',4],['DISP',6]]
,这样我就可以使用类数组的索引来定位到代码中的特定行,但这似乎缺少某种优雅感,几乎感觉像是一步退步(虽然我可能错了)。
我查看了这里,但无法理解它的工作原理。
如果您能提供任何帮助或提示,将不胜感激。