在我的语法中,我有作业的规则。这是形式
assignment: VAR_TYPE ID '=' expr;
在VAR_TYPE
中,我有一些硬编码的值,如Integer,String等。
我想知道的是如何匹配文件中声明的任何类名?
假设某人声明了class Foo
和Class Bar
。如何将此标记为有效输入
不使用ID
。因为,如果我向|ID
规则发布VAR_TYPE
,则ID
永远不会
匹配,我不希望这样。
答案 0 :(得分:1)
您不应该对您的类型名称进行硬编码,除非它们实际上是您所用语言的关键字。然后创建一个解析器规则以匹配任何类型:
varType : ID;
assignment : varType ID '=' expr;
Integer
和String
将被视为常规ID
令牌。
在完成解析后使用侦听器来验证每个ID
中出现的varType
是否实际引用了某个类型。