AntlrWorks&;and;语言语法错误 [英] AntlrWorks & language grammar errors
本文介绍了AntlrWorks&;and;语言语法错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
处理一个游戏项目,该项目涉及一种脚本语言,我希望将其解释为可以直接执行的虚拟机代码。我已经将语法包括在下面。所有的词法分析器规则都正确地显示在语法图中,但是当我点击任何解析器规则的主体时,对于给定的解析器规则X,我得到"无法显示规则X",因为没有找到起始状态。
我真的不确定为什么ANTLR会抱怨没有开始状态。语法应该明确地从代码行开始,它不会被任何其他解析器规则引用。此外,右上角的框为绿色,表示没有语法错误。
我梳理了其他一些留言板帖子,以及ANTLRv3示例语法下载中提供的许多语法,但它们都没有任何特殊代码向ANTLR指示哪个解析器规则是开始状态。我感觉简单的东西被打破了,但我陷入了僵局,到底是什么。
如有任何建议或帮助,我们将不胜感激!即使只是说"去读一读这篇文章"。
grammar RobotWarsGrammar;
EQUAL
options {
paraphrase = "=";
}
: '='
;
推荐答案
假定您使用的是ANTLR3.x。
所有这些:
options {
paraphrase = ...;
}
Stuff是(AFAIK)旧的ANTLR 2语法--请尝试删除它。
此外,comment
规则中!
comment
: !(DIGIT | LETTER | SPACE)*
;
是树重写运算符(see the cheat sheet)。但只有在以下情况下才有效:
options {
output=AST;
}
在你的语法中(你没有)。因此,也应从您规则中删除。除非您想匹配文字!
,在这种情况下,您需要用单引号将其括起来:
comment
: '!' (DIGIT | LETTER | SPACE)*
;
这篇关于AntlrWorks&;and;语言语法错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文