迭代Antlr4中的所有op属性

时间:2017-12-20 03:46:26

标签: c# antlr4

我试图遍历我的Visitor类中的所有op属性。

这是我的语法:

where: expression ( op=( AND | OR ) expressions)* EOF;

我想解析的字符串是:

string str = "Name = 'John Doe' AND Age = 20 OR Age = 30";

对于我的Visitor类,我有一个简单的覆盖方法:

public override object VisitWhere([NotNull] WhereContext context)
{
    string operator = context.op.Text;
    return base.VisitWhere(context);
}

解析字符串后,operator变量返回op属性的最后一次出现,即' OR'。我如何获得' AND'?

1 个答案:

答案 0 :(得分:0)

如果规则或标记在规则中多次出现,则它将在关联的上下文中表示为数组。在您的情况下,您应该有一个数组context.op[]。这样的数组或简单的op属性只是访问子列表的便利方式。如果您希望完全访问规则中解析的所有内容,请查看该上下文的子项。