4
鑑於以下ANTLR 4.1語法,一個行故意註釋掉...ANTLR不匹配輸入 '<EOF>'
grammar Foobar;
//whyDoesThisRuleHelp : expression ;
expression : operand | binaryOperation ;
binaryOperation : operand WS BINARY_OPERATOR WS expression ;
operand : LETTER ;
BINARY_OPERATOR : 'EQ' ;
LETTER : [a-z] ;
WS : [ \n]+ ;
..爲什麼echo -n "a EQ b" | grun Foobar expression
產生
line 1:6 mismatched input '<EOF>' expecting WS
.. 但如果我們取消block : expression ;
行然後grun
產生沒有錯誤?
我相信你,但是我的'whyDoesThisRuleHelp'規則中沒有明確的EOF。是否有一個有趣的(或教育)的原因,爲什麼沒有明確的EOF規則也解決了這個問題?謝謝。 (我讀了[你提到的問題](https://github.com/antlr/antlr4/issues/118),但不明白任何它lol) –
@JaredBeck它不會發生每次你失蹤'EOF'。你的兩個語法(一個和一個沒有註釋的行)顯示了它發生的一種情況,以及它沒有發生的一種情況。 –