与收益申报第一解析器规则故障在ANTLR4语法(Troubles with returns decl

2019-09-02 02:11发布

我使用的回报 ,其适用于除第一个所有的语法规则我的语法规则。 如果我的语法第一解析器规则使用返回声明ANTLR4抱怨如下:

预计ARG_ACTION同时匹配规则

如果我添加其他解析器规则上面不使用“收益” ANTLR不抱怨。

这里有一个语法降低的问题:

grammar FirstParserRuleReturnIssue;
ID  :   ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')*;
aRule returns [String s]: ID { $s = $ID.text; };

我搜索以找到可以解释的行为,但没有发现任何东西的第一条规则的特殊作用。 它是一个错误吗? 难道我错过了一些了解呢?

Answer 1:

您需要将语法规则(以小写字母)词法规则之前(以大写字母)在你的语法。 遇到词法规则之后, [触发LEXER_CHAR_SET代替ARG_ACTION ,所以编译器看到的令牌流看起来像你传递一个字符集,其中的返回值应该是的。



文章来源: Troubles with returns declaration on the first parser rule in an ANTLR4 grammar
标签: antlr4