什么是正确的方法来解决这个问题,在这些代码:

我有一个简单的语法规则,说对名单的一个任意数量的元素。

list
: '[]' 
| '[' value (COMMA value)* ']'

如果我想要分配返回值的列表,并具有的价值是实际的列表的回值的生产,什么是适当的方式做到这一点?替代我有趣的是:

  • 创造我自己的堆在全球范围内跟踪这些名单
  • 尝试检查的树节点下面我并提取信息的方式
  • 访问它在一些光滑和冷静的方式,我希望找出在哪我可以容易获得这样的清单内的行动相关的规则。

我猜测的问题是:怎么酷的孩子这样做?

(仅供参考,我使用的是蟒蛇API for这些代码,但是如果你打我与另一语言,我可以处理)

有帮助吗?

解决方案

C#它可能看起来是这样的:

list returns [ List<string> ValueList ]
    @init
    {
        $ValueList = new List<string>();
    }
    : '[]'
    | '[' value {$ValueList.Add(value);} (COMMA value {$ValueList.Add(value);})* ']'
    ;

其他提示

我猜测一个更简单的方式可能是

list returns [ List values ]
: '[]' 
| '[' vs+=value (COMMA vs+=value)* ']' {
        $values = $vs;
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top