我之前发布过关于左递归问题的第一次使用ANTLR的尝试.
现在我已经解决了这些问题,当我尝试使用org.antlr.v4.Tool生成代码时,我收到以下错误:
error(99): C:test.g4::: grammar 'test' has no rules
Run Code Online (Sandbox Code Playgroud)
出现此错误的可能原因是什么?使用ANTLRWorks我当然可以在解析树中看到规则,为什么它不能看到它们呢?是因为它无法找到合适的START规则吗?
我认为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 不能可靠地保存。