gpt4 book ai didi

java - 我应该如何针对 "expression+"模式运行操作?

转载 作者:行者123 更新时间:2023-12-01 11:46:57 25 4
gpt4 key购买 nike

我正在尝试匹配并收集此语法中的所有“字段”:

字段 a b c d e ...

我将使用一个字符串数组来包含所有这些 a b c d e 字符:

fields
: FIELDS fieldsExpression
{
// always zero
System.out.println ($fieldsExpression.value.size());
}
;

fieldsExpression returns [List<String> value]
@{ $value = new ArrayList<String> (); }
: Identifier
{ $value.add ($Identifier.text); }
| Identifier fieldsExpression
{ $value.addAll ($fieldsExpression.value); }
;

现在,如果我这样做,我将得到一个空数组。有什么问题吗?

另外,我想知道如何匹配这个?

field
: FIELDS Identifier+
{ ... }

这个Identifier+将返回多个Identifier,但我不知道如何“匹配”它们并对它们“运行操作”。

有什么想法吗?

最佳答案

尝试:

fieldsExpression  returns [List<String> value] 
: { $value = new ArrayList<String> (); }
(Identifier { $value.add ($Identifier.text); })+
;

如果您调整第二种选择,您的示例也应该有效

| Identifier fieldsExpression
{ $value.add($Identifier.text);$value.addAll ($fieldsExpression.value); }

关于java - 我应该如何针对 "expression+"模式运行操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29070817/

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