我有一个解析树,它解析出一堆 char (stack<stack<char>>)
。这会将字符放入解析树中。我的问题是如何将此解析树转换为 AST 以对其进行评估?
我有评估器为 AST 工作,我只需要将树转换为语法即可对其进行评估。
任何帮助,将不胜感激。
我有一个解析树,它解析出一堆 char (stack<stack<char>>)
。这会将字符放入解析树中。我的问题是如何将此解析树转换为 AST 以对其进行评估?
我有评估器为 AST 工作,我只需要将树转换为语法即可对其进行评估。
任何帮助,将不胜感激。
我能够使用树遍历算法转换它们
使用前序遍历
preorder(node)
if node == null then return
print node.value
preorder(node.left)
preorder(node.right)
使用堆栈来存储叶节点,我将值添加到它们上,并且能够横穿堆栈并更改为 lea 节点。
10 + 4 的示例
使用 preorder 的解析树叶会给我一堆 [+ 10 4]
使用辅助函数,我可以将其转换为
Make_Plus(Make_Int(10), Make_Int(4)) 使用递归