构建抽象语法树

时间:2012-03-26 08:19:26

标签: c abstract-syntax-tree

我有我的解析树,现在我已经在解析树上按顺序遍历了一个符号表。 但是我如何为此构建AST呢?

这是我收集的内容(一些不可靠的资源):

  • 在你的解析树中,你进入订单I.e 取最左边的孩子,然后是父母,然后是其他孩子的名单。
  • 如果您遇到类似SEMICOL,括号的内容,请不要将其添加到AST,如果节点只有一个子节点,请删除该节点,然后使用子节点。

这就是我需要做的全部吗?

1 个答案:

答案 0 :(得分:0)

根据评论更新

在您的示例中,解析树可能包含类似此

的语句节点

(int) - > (ageArray) - > ([) - > (30) - > (]) - > (;)

教授期待像

这样的东西

(intArray) - > (ageArray) - > (30)

我想。


您正在使解决方案变得简单。这不仅仅是遍历你的树并抛出一些东西的问题。 AST代表程序语言的结构。为了构建AST,首先必须设计AST的样子。

例如,“IF”节点可能被设计为具有布尔方程元素(这本身也可能是树),真正的语句树和假语句树。

您必须根据要编译的语言设计所有元素的外观。一旦你有了这个设计,那么通常在解析树上使用词法分析器来生成AST。