首页 文章

无法迁移antlr语法

提问于
浏览
2

我以前从未使用过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; }

;

我收到以下错误 . syntax error:

不匹配的输入'[表达式值]'在匹配规则时期望ARG_ACTION .

我已经遇到了一个帖子Troubles with returns declaration on the first parser rule in an ANTLR4 grammar . 但Sam的回答并没有帮助我弄清楚我的情况应该改变什么 .

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

1 回答

  • 1

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

相关问题