gpt4 book ai didi

antlr4 - ANTLR4 语法中第一个解析器规则的返回声明问题

转载 作者:行者123 更新时间:2023-12-03 23:46:06 25 4
gpt4 key购买 nike

我正在使用 返回 对于我的解析器规则,它适用于除第一个之外的所有解析器规则。如果我的语法中的第一个解析器规则使用 返回 声明 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; };

我搜索了第一条规则的特殊作用,可以解释该行为,但没有找到任何东西。这是一个错误吗?我想念一些理解吗?

最佳答案

您需要在语法中的词法分析器规则(以大写字母开头)之前放置解析器规则(以小写字母开头)。遇到词法分析器规则后,[触发 LEXER_CHAR_SET而不是 ARG_ACTION ,所以编译器看到的 token 流看起来就像你在返回值应该是的地方传递一组字符。

关于antlr4 - ANTLR4 语法中第一个解析器规则的返回声明问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16396872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com