ANTLR错误(99)语法没有规则

Fel*_*ick 7 antlr

我之前发布过关于左递归问题的第一次使用ANTLR的尝试.

现在我已经解决了这些问题,当我尝试使用org.antlr.v4.Tool生成代码时,我收到以下错误:

error(99): C:test.g4::: grammar 'test' has no rules
Run Code Online (Sandbox Code Playgroud)

出现此错误的可能原因是什么?使用ANTLRWorks我当然可以在解析树中看到规则,为什么它不能看到它们呢?是因为它无法找到合适的START规则吗?

vdu*_*dua 5

我认为Antlr希望第一个规则名称是小写的。我的语法出现相同的错误

grammar ee;
Condition : LogicalExpression ;
LogicalExpression : BooleanLiteral ; 
BooleanLiteral :  True ;
True : 'true' ;
Run Code Online (Sandbox Code Playgroud)

通过将语法中的第一条生产规则更改为小写,它解决了该问题,即下面的语法对我有用。

grammar ee;
condition : LogicalExpression ;
LogicalExpression : BooleanLiteral ; 
BooleanLiteral :  True ;
True : 'true' ;
Run Code Online (Sandbox Code Playgroud)

注意:这是我的个人解释,在在线文档中找不到此推理。


小智 0

最可能的原因正是错误消息所暗示的内容。最可能的原因是您尚未将语法保存到文件中,或者如果您使用的是 ANTLRWorks2,ANTLRWorks 尚未将您的工作保存到文件中。我不知道为什么 ANTLRWorks 不能可靠地保存。