gpt4 book ai didi

java - Antlr 规则的返回值必须是 *Context 类型吗?

转载 作者:行者123 更新时间:2023-11-30 10:52:52 24 4
gpt4 key购买 nike

我正在使用 Antlr 4 更新我的 Antlr 技能(经过长时间的中断),我有一个看起来像这样的规则:

filterExpression returns [ActivityPredicate pred]: NAME OPERATOR NUMBER {
return new SingleActivityPredicate($NAME.text, Operator.fromCharacter($OPERATOR.text), $NUMBER.text);
};

在哪里SingleActivityPredicate是我编写的实现我的 ActivityPredicate 的类界面。

但是解析器中生成的方法是:

public final FilterExpressionContext filterExpression() throws RecognitionException {

因此,可以理解,解析器出现语法错误:

Type mismatch: cannot convert from SingleActivityPredicate to PredicatesParser.FilterExpressionContext

我如何允许我的规则返回自定义数据类型,不是 <RuleName>Context

寻找使用嵌入式 Java 代码的 Antlr 语法示例有点棘手,所以如果有人有任何推荐的阅读/资源,我会很乐意接受它们。

最佳答案

解决方案不是显式地返回任何东西,而是分配返回项的变量名:

filterExpression returns [ActivityPredicate pred]: NAME OPERATOR NUMBER {
$pred = new SingleActivityPredicate($NAME.text, Operator.fromCharacter($OPERATOR.text), $NUMBER.text);
};

关于java - Antlr 规则的返回值必须是 *Context 类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34246311/

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