AntlrWorks和语言语法错误
问题描述:
使用涉及我想解释为可以直接执行的虚拟机代码的脚本语言的游戏项目。我已经包含下面的语法。所有词法分析器规则都在语法图中正确显示,但是当我单击任何分析器规则的主体时,对于给定分析器规则X,我得到“Can not display rule”X,因为“找不到开始状态”。AntlrWorks和语言语法错误
我不确定为什么ANTLR抱怨没有开始状态。语法应该明确地从codeline开始,这是任何其他解析器规则都没有引用的。此外,右上方的框为绿色,表示没有语法错误。
我梳理了其他一些留言板帖子,以及ANTLRv3示例语法下载中提供的许多语法,但他们没有任何特殊代码向ANTLR指示哪一个解析器规则是开始状态。我觉得简单的事情已经破裂了,但我却陷入了僵局。
任何意见或援助将不胜感激!即使只是沿着“去读这个”的路线。
grammar RobotWarsGrammar;
EQUAL
options {
paraphrase = "=";
}
: '='
;
答
假设你正在使用ANTLR 3.x.
所有这一切:
options {
paraphrase = ...;
}
东西(据我所知)老ANTLR 2语法 - 尝试删除它。
同样,!
在comment
规则:
comment
: !(DIGIT | LETTER | SPACE)*
;
是树改写运营商(see the cheat sheet)。但是,只有当你有:
options {
output=AST;
}
在你的语法(你不这样做)。因此,请从comment
规则中删除!
。除非你想匹配文字!
,在这种情况下,你需要用单引号围绕它:
comment
: '!' (DIGIT | LETTER | SPACE)*
;
任何帮助吗?我仍然无法弄清楚。 – 2010-12-03 13:49:11