这是我的语法。
grammar MainGrammar;
mainFile: statement*;
statement: stackStatement NL;
stackStatement: KEYWORD WS INT;
INT: [0-9]+;
KEYWORD: 'def';
SENTENCE: (~[rn@:=])+;
WS: [ t]+ -> skip;
NL: 'r'? 'n' -> skip;
我尝试主要规则主文件代码
def 123456
仅将文本匹配为句子标记,并且找不到关键字标记。 无论令牌的顺序如何。
知道吗?
您的问题是您跳过了WS
并NL
。因此,解析器甚至看不到相应的令牌。这就是为什么它不能匹配它们的原因(它们不是馈送到解析器中的TokenStream
的一部分)。
为了解决这个问题,你可以研究词法模式或这个问题