使用ANTLR 4.2,我正在尝试对此测试数据进行非常简单的解析:
RRV0#ABC
Run Code Online (Sandbox Code Playgroud)
使用最小语法:
grammar Tiny;
thing : RRV N HASH ID ;
RRV : 'RRV' ;
N : [0-9]+ ;
HASH : '#' ;
ID : [a-zA-Z0-9]+ ;
WS : [\t\r\n]+ -> skip ; // match 1-or-more whitespace but discard
Run Code Online (Sandbox Code Playgroud)
根据Terence Parr的最终ANTLR 4参考文献中的摘录,我希望词法分析器RRV在ID之前匹配:
BEGIN : 'begin' ; // match b-e-g-i-n sequence; ambiguity resolves to BEGIN
ID : [a-z]+ ; // match one or more of any lowercase letter
Run Code Online (Sandbox Code Playgroud)
使用上面的测试数据运行ANTLR4测试台,输出为
[@0,0:3='RRV0',<4>,1:0]
[@1,4:4='#',<3>,1:4]
[@2,5:7='ABC',<4>,1:5]
[@3,10:9='<EOF>',<-1>,2:0]
line 1:0 mismatched input 'RRV0' expecting …Run Code Online (Sandbox Code Playgroud) antlr4 ×1