ANTLR匹配类名

时间:2013-11-04 22:57:48

标签: parsing antlr grammar lexical-analysis

在我的语法中,我有作业的规则。这是形式 assignment: VAR_TYPE ID '=' expr;

VAR_TYPE中,我有一些硬编码的值,如Integer,String等。

我想知道的是如何匹配文件中声明的任何类名?

假设某人声明了class FooClass Bar。如何将此标记为有效输入 不使用ID。因为,如果我向|ID规则发布VAR_TYPE,则ID永远不会 匹配,我不希望这样。

1 个答案:

答案 0 :(得分:1)

您不应该对您的类型名称进行硬编码,除非它们实际上是您所用语言的关键字。然后创建一个解析器规则以匹配任何类型:

varType : ID;
assignment : varType ID '=' expr;

IntegerString将被视为常规ID令牌。

在完成解析后使用侦听器来验证每个ID中出现的varType是否实际引用了某个类型。