Compiler construction ANTLR4中的EOF行为
对于给定的输入:Compiler construction ANTLR4中的EOF行为,compiler-construction,antlr4,Compiler Construction,Antlr4,对于给定的输入: hello hello 和语法: grammar test; foo: bar ; bar : 'hello' bar | EOF; WS : [ \t\r\n]+ -> skip ; 我得到了规则栏的有效解析树 但当我删除foo规则时: grammar test; bar : 'hello' bar | EOF; WS : [ \t\r\n]+ -> skip ; 我得到一个错误“第1:11行输入“”没有可行的替代方案”。这是怎么回事?我
hello hello
和语法:
grammar test;
foo: bar ;
bar : 'hello' bar | EOF;
WS : [ \t\r\n]+ -> skip ;
我得到了规则栏的有效解析树
但当我删除foo规则时:
grammar test;
bar : 'hello' bar | EOF;
WS : [ \t\r\n]+ -> skip ;
我得到一个错误“第1:11行输入“
解决方法如问题中所建议的(使用额外的根规则foo)。闻起来像个bug:-\它看起来真像一只虫子。我发现他们在EOF和第一条规则上有问题,就像三年前一样。我想这是很难修复的。这是另一个@xprog修复的例子,它不太难。在不使ANTLR非常慢的情况下修复它,结果是非常困难的。