【发布时间】:2015-12-04 03:13:36
【问题描述】:
我过去从未使用过 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。但是山姆的回答并没有帮助我弄清楚我应该改变什么。
如果有人能告诉我最新语法中开始规则的等效内容,我将不胜感激。
【问题讨论】:
-
请发布完整的语法或至少部分符合规则。
-
@doublep :我在开始规则之前插入了所有语法。还在开始规则之后插入了解析器规则。代码生成似乎适用于除开始规则之外的所有规则。如果您需要更多详细信息,请告诉我。