AntlrWorks&语言语法错误

时间:2010-12-03 06:12:05

标签: compiler-construction antlr grammar antlrworks

处理涉及脚本语言的游戏项目,我想将其解释为可以直接执行的虚拟机代码。我在下面列出了语法。所有词法分析器规则都在语法图中正确显示,但是当我单击任何解析器规则的主体时,我得到“无法显示规则”X“因为找不到启动状态”对于给定的解析器规则X. / p>

我不确定为什么ANTLR抱怨没有开始状态。语法应该明确地从代码行开始,而代码行没有被任何其他解析器规则引用。此外,右上角的框为绿色,表示没有语法错误。

我梳理了一些其他留言板帖子,以及ANTLRv3示例语法下载中提供的许多语法,但它们都没有任何特殊代码向ANTLR指示哪个解析器规则是开始州。我觉得简单的东西被打破了,但我究竟究竟是什么样的僵局。

非常感谢任何建议或协助!即使它只是沿着“去读这个”的路线。

grammar RobotWarsGrammar;



EQUAL
options {
    paraphrase = "=";
}
   : '='
   ;

1 个答案:

答案 0 :(得分:2)

假设您使用的是ANTLR 3.x。

所有这些:

options {
    paraphrase = ...;
}

东西是(AFAIK)旧的ANTLR 2语法 - 尝试删除它。

此外,您!规则中的comment

comment
  :  !(DIGIT | LETTER | SPACE)*
  ;

tree-rewrite-operator see the cheat sheet)。但这只有在你有:

时才有效
options { 
  output=AST;
}

在你的语法中(你没有)。因此,请从!规则中删除comment。除非你想匹配文字!,在这种情况下你需要在它周围包装单引号:

comment
  :  '!' (DIGIT | LETTER | SPACE)*
  ;