2

我有一个解析树,它解析出一堆 char (stack<stack<char>>)。这会将字符放入解析树中。我的问题是如何将此解析树转换为 AST 以对其进行评估?

我有评估器为 AST 工作,我只需要将树转换为语法即可对其进行评估。

任何帮助,将不胜感激。

这是我要完成的工作的图片

4

1 回答 1

2

我能够使用树遍历算法转换它们

使用前序遍历

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)) 使用递归

于 2012-05-11T18:09:32.840 回答