1
解析,如果我用這個語法:antlr4與未引用的規則
grammar NameValue;
nameValue: (name=ID ':' value=ID)+ EOF;
//idWithSpace : ID (' ' ID)*;
ID : [a-zA-Z]+ ;
WS : [ \t\r\n]+ -> skip ; // Define whitespace rule, toss it out
與此輸入:
a:b
a : b
A : B
我得到這個解析:
(nameValue a : b a : b A : B <EOF>)
,但如果我取消註釋idWithSpace線,我得到這個解析:
line 2:1 extraneous input ' ' expecting ':'
line 2:3 extraneous input ' ' expecting ID
(nameValue a : b a : b A : B <EOF>)
爲什麼添加不引用的規則idWithSpace
idWithSpace : ID (' ' ID)*;
,導致解析改變?
我猜測問題是空間在idWithSpace規則中被跳過和使用。爲什麼你甚至需要ID之前的空間? – Divisadero