我想为小C语言构建自己的编译器: 我已经完成了我的语法,使用ANTLR构建了一个AST(抽象语法树),并实现了我的符号表(遵循GRosemberg code)
我必须用我的符号填充我的符号表,但我真的不知道如何......
我这一步有点失落,有人有例子,或者可以告诉我该怎么办?
答案 0 :(得分:2)
对于ANTLR 3& 2您可以在解析器操作中轻松完成。跨越作用域边界并在适当的位置添加条目时,必须推送和弹出作用域。您可以在http://www.antlr3.org/grammar/cgram/grammars/StdCParser.g的真实C解析器中查看如何执行此操作。如果您愿意,也可以在树解析器中执行此操作。
在ANTLR 4中,您将编写一个执行push / pop并添加条目的侦听器。如果您的语法支持类似C的typedef,您需要在语法操作中处理它,因为符号表会影响解析。但是,Tiny C不应该这样做。