无法迁移antlr语法

时间:2015-09-08 12:21:42

标签: antlr antlr4 antlr3

我以前从未使用过antlr,但现在必须将旧版本的语法迁移到最新版本。我正在尝试为c#目标生成词法分析器和解析器。我不得不迁移下面的启动规则。

grammar expr;

DQUOTE: '\"';
SQUOTE: '\'';
NEG   : '-';
PLUS  : '+';
OPEN  : '(';
CLOSE : ')';
PERIOD: '.';
COMMA : ',';

start returns [Expression value]
:

    expression EOF { $value = $expression.value; }

;

expression returns [Expression value]

  :

    literal                             { $value = $literal.value; } 
  | name                                { $value = $name.value; } 
  | functionCall                        { $value = $functionCall.value; }

;

我收到以下错误。 语法错误:

  

不匹配的输入'[表达式值]'期待ARG_ACTION而   匹配规则。

我已经发现了帖子Troubles with returns declaration on the first parser rule in an ANTLR4 grammar。但Sam的反应并没有帮助我弄清楚我应该改变的是什么。

如果有人能让我知道相当于最新语法中的起始规则,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

您链接的答案似乎适用于您的案例。在像DQUOTE这样的解析器规则之后移动词法规则(即那些以大写字母开头的规则,start等)。