public override Table VisitWhere_clause(QueryParser.Where_clauseContext context) { var result = new Table(_table); foreach (var row in _table) { var env = new Environment(row, _table.Columns); var value = new CondExprVisitor(_zmi, env).Visit(context.cond_expr()); if (value.HasValue && value.Val.Value.GetBoolean()) result.AppendRow(row); } return result; }
/// <summary> /// Visit a parse tree produced by <see cref="QueryParser.where_clause"/>. /// <para> /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/> /// on <paramref name="context"/>. /// </para> /// </summary> /// <param name="context">The parse tree.</param> /// <return>The visitor result.</return> public virtual Result VisitWhere_clause([NotNull] QueryParser.Where_clauseContext context) { return(VisitChildren(context)); }