Java Antlr4';输入端没有可行的替代方案';用我的语法
我尝试使用antlr4,我有以下语法:Java Antlr4';输入端没有可行的替代方案';用我的语法,java,grammar,antlr4,rule,Java,Grammar,Antlr4,Rule,我尝试使用antlr4,我有以下语法: grammar Comp; start : 'ca\n'; ID : [a-zA-Z][a-zA-Z0-9]* ; // match identifiers INT : [0-9]+ ; // match integers NEWLINE : '\r'? '\n' ; // return newlines to parser (is end-statement signal) WS : [ \t]+ -
grammar Comp;
start : 'ca\n';
ID : [a-zA-Z][a-zA-Z0-9]* ; // match identifiers
INT : [0-9]+ ; // match integers
NEWLINE : '\r'? '\n' ; // return newlines to parser (is end-statement signal)
WS : [ \t]+ -> skip ; // toss out whitespace
OTHER : (~'\n')* '\n' ;
如果我发送lexem'ca\n'它可以工作。
但根据规则:
start : 'ca' '\n';
或
lexem未被识别。为什么?
谢谢你的帮助 lexer将始终匹配它能找到的最长规则。问题在于规则“OTHER”将整个字符串捕获为一个标记。其他将捕获“ca\n”,这将阻止“start”规则捕获“ca”和“\n”的单独标记。
start : 'ca' NEWLINE;