Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ANTLR输入不匹配'&书信电报;EOF>';_Antlr_Antlr4 - Fatal编程技术网

ANTLR输入不匹配'&书信电报;EOF>';

ANTLR输入不匹配'&书信电报;EOF>';,antlr,antlr4,Antlr,Antlr4,给出以下ANTLR 4.1语法,其中一行故意注释掉 grammar Foobar; //whyDoesThisRuleHelp : expression ; expression : operand | binaryOperation ; binaryOperation : operand WS BINARY_OPERATOR WS expression ; operand : LETTER ; BINARY_OPERATOR : 'EQ' ; LETTER : [a-z] ; WS : [

给出以下ANTLR 4.1语法,其中一行故意注释掉

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表达式产生

line 1:6 mismatched input '<EOF>' expecting WS
第1:6行不匹配的输入“”应为WS

但是如果我们取消注释
块:表达式
grun
不会产生错误

您看到了一个罕见但已知的错误的影响:


正确修复此问题对性能的影响目前令人震惊,因此我们无意在可预见的将来应用此修补程序。解决方法是创建一个以显式的
EOF
结尾的规则,并在那里开始解析。

我相信你,但是我的
为什么这个规则帮助中没有显式的EOF
规则。没有明确EOF的规则也能解决问题,这有什么有趣的(或教育性的)原因吗?谢谢(我读过,但一点都不懂,哈哈)@JaredBeck并不是每次你错过
EOF
时都会发生这种情况。您的两个语法(一个有注释行,一个没有注释行)显示了一种情况下它确实发生了,另一种情况下它没有发生。