我有我的解析树,现在我已经按照解析树上的顺序遍历了,并且生成了一个符号表。但我该如何构建AST呢?
以下是我收集到的(一些不可靠的资源):
在您的解析树中,您可以转到I。e取最左边的子节点,然后是父节点,然后是其他子节点的列表。如果遇到任何类似SEMICOL的情况,则不要将其添加到inOrder I。如果节点中只有一个子节点,则删除该节点,然后使用子节点。。
这就是我要做的?
发布于 2012-03-26 08:32:20
基于评论的更新
在您的示例中,解析树可能包含如下语句节点
(int) -> (ageArray) -> () -> (30) -> () -> (;)
教授希望有这样的事情
(intArray) -> (ageArray) -> (30)
我想是的。
你在做简单的解决方案。这不仅仅是一个穿越你的树和扔出一些东西的问题。AST表示程序语言的结构。为了构建AST,首先必须设计AST的外观。
例如,一个"IF“节点可能被设计为具有一个布尔方程元素(它本身也可能是一棵树)、一个真语句树和一个假语句树。
您必须根据正在编译的语言设计所有元素的外观。一旦您有了这个设计,那么通常会在解析树上使用一个lexer来生成AST。
https://stackoverflow.com/questions/9868735
复制相似问题