在ANTLR中解决此问题的正确方法是什么:
我有一个简单的语法规则,比如一个包含任意数量元素的列表。
list
: '[]'
| '[' value (COMMA value)* ']'
如果我想为list分配一个返回值,并且该值是生产中返回值的实际列表,那么正确的方法是什么?我很有趣的选择是:
我想问题是:很酷的孩子怎么做呢?
(仅供参考我使用的是ANTLR的python API,但是如果你用另一种语言打我,我可以处理它)
答案 0 :(得分:5)
在C#中,它可能如下所示:
list returns [ List<string> ValueList ]
@init
{
$ValueList = new List<string>();
}
: '[]'
| '[' value {$ValueList.Add(value);} (COMMA value {$ValueList.Add(value);})* ']'
;
答案 1 :(得分:1)
我想更简单的方法可能是
list returns [ List values ]
: '[]'
| '[' vs+=value (COMMA vs+=value)* ']' {
$values = $vs;
}