java - ANTLR树遍历器,多次返回值

标签 java parsing tree antlr abstract-syntax-tree

我有一个这样的树行者:

function:
    ^(FUNCTION_TOK fcname=IDENTIFIER param=functionParameters*){
        a_param_arrayList.add(param);
    }
;

functionParameters returns [Object sth]:
    ^(PARAM_TOK value=IDENTIFIER){ sth = $value.getText();}
;

这是一个简单的场景,我只想将参数添加到数组列表中,但上面的代码(a_param_arrayList.add(param))只会收集第一个参数并忽略其他参数。但 functionParameters 实际上解析了多个参数。

有人知道如何修理这个树行者吗? 非常感谢!

最佳答案

我通过使用规则参数来解决这个问题。

function:
    ^(FUNCTION_TOK fcname=IDENTIFIER functionParameters[a_param_arraylist]*)
;

functionParameters [ArrayList arr] returns [Object sth]:
    ^(PARAM_TOK value=IDENTIFIER){ sth = $value.getText(); arr.add(sth);}
;

关于java - ANTLR树遍历器,多次返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11101606/

相关文章:

Java Statics 原语、对象、方法和堆(内存管理和最佳实践)

java - 读取/写入文件时出现异常

java - 如何在 Hibernate 中动态设置@Column 名称

c# - 使用 C# 反序列化 GWT-RPC 响应

php - Android应用程序和调度面板之间的实时通信

c - 通过从堆中删除值并向堆中插入值来同步文件和堆中的数据

java - 使用 javafx 的基本计算器 : how to reset or restart

java - 解析文本文件时如何跳行?

ruby - 将扁平树解析为非扁平树的算法

Java序列化包含许多空节点的N叉树