带空格的词法分析器优先级



这是我的语法。

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

仅将文本匹配为句子标记,并且找不到关键字标记。 无论令牌的顺序如何。

知道吗?

您的问题是您跳过了WSNL。因此,解析器甚至看不到相应的令牌。这就是为什么它不能匹配它们的原因(它们不是馈送到解析器中的TokenStream的一部分)。

为了解决这个问题,你可以研究词法模式或这个问题

相关内容

  • 没有找到相关文章

最新更新