在antlr3中获取语法规则的文本

时间:2014-01-17 07:24:51

标签: compiler-construction antlr antlr3

我有一个语法规则:

 type_specifier:INT | VOID

和INT和void是词法分析的2个正则表达式:

 INT:'int';
 VOID:'void';

我的语法中还有另一条规则:

 var_declaration:type_specifier ID SEMIC

我希望在达到此规则后得到type_specifier kind(int或void)如何在antlr中获取它?

1 个答案:

答案 0 :(得分:0)

启用生成AST,允许遍历树(默认情况下实际上只是一个列表)以获取每个找到的标记的类型和文本。为此,请在语法选项中设置输出类型:

options {
  ...
  output = AST;
  ...
}

在您的代码中,您可以使用运行时在返回的树中询问子节点,它们的文本和类型等。详细信息取决于您的目标语言,但所有语言的原则都是相同的。