将解析树转换为AST(抽象语法树)C ++

时间:2012-05-05 19:05:12

标签: c++ parsing abstract-syntax-tree parse-tree

我有一个解析树,它解析出一堆char (stack<stack<char>>)的堆栈。这会将字符转换为解析树。我的问题是如何将这个解析树转换为AST来评估它?

我让评估员为AST工作我只需要将树转换为语法以便对其进行评估。

任何帮助都将不胜感激。

Here is a picture of what I am trying to accomplish

1 个答案:

答案 0 :(得分:2)

我可以使用Tree Traversal Algorithm

转换它们

使用预订序遍历

preorder(node)
  if node == null then return
  print node.value
  preorder(node.left) 
  preorder(node.right)

使用堆栈存储叶节点我将值添加到它们上,并且能够横向堆栈并转换为lea节点。

10 + 4

的示例

使用预订的解析树叶子会给我一堆[+ 10 4]

使用辅助函数我可以将其转换为

使用递归

Make_Plus(Make_Int(10),Make_Int(4))