AntlrWorks∧语言语法错误 [英] AntlrWorks & language grammar errors

查看:0
本文介绍了AntlrWorks∧语言语法错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

处理一个游戏项目,该项目涉及一种脚本语言,我希望将其解释为可以直接执行的虚拟机代码。我已经将语法包括在下面。所有的词法分析器规则都正确地显示在语法图中,但是当我点击任何解析器规则的主体时,对于给定的解析器规则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∧语言语法错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆