我试图遍历我的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'?
答案 0 :(得分:0)
如果规则或标记在规则中多次出现,则它将在关联的上下文中表示为数组。在您的情况下,您应该有一个数组context.op[]
。这样的数组或简单的op
属性只是访问子列表的便利方式。如果您希望完全访问规则中解析的所有内容,请查看该上下文的子项。