代码之家  ›  专栏  ›  技术社区  ›  Ryan

如何处理ANTLR中的列表返回值

  •  5
  • Ryan  · 技术社区  · 17 年前

    在ANTLR中解决此问题的正确方法是什么:

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

    如果我想为list分配一个返回值,并使该值成为实际的生产返回值列表,那么正确的方法是什么?我喜欢的其他选择是:

    • 以一种巧妙而酷的方式访问它,我希望找到一种方法,在这种方法中,我可以从与规则相关的操作中轻松访问这样的列表。

    (仅供参考,我正在使用ANTLR的python API,但如果您使用另一种语言,我可以处理)

    2 回复  |  直到 17 年前
        1
  •  5
  •   Don Reba    17 年前

    在C#中,可能是这样的:

    list returns [ List<string> ValueList ]
        @init
        {
            $ValueList = new List<string>();
        }
        : '[]'
        | '[' value {$ValueList.Add(value);} (COMMA value {$ValueList.Add(value);})* ']'
        ;
    
        2
  •  1
  •   fglez    17 年前

    list returns [ List values ]
    : '[]' 
    | '[' vs+=value (COMMA vs+=value)* ']' {
            $values = $vs;
    }
    
    推荐文章