public override object VisitExprAdd([NotNull] MiniSQLParser.ExprAddContext context) { Expression left = (Expression)Visit(context.expr(0)); Expression right = (Expression)Visit(context.expr(1)); Expression obj = new Expression(); obj.LeftOperand = left; obj.RightOperand = right; if (context.PLUS_OPERATOR() != null) { obj.Operator = Operator.Plus; } else { obj.Operator = Operator.Minus; } // optimize expression if (left.Operator == Operator.AtomConcreteValue && right.Operator == Operator.AtomConcreteValue) { left.ConcreteValue = obj.Calculate(null); return(left); } return(obj); }
/// <summary> /// Exit a parse tree produced by the <c>exprAdd</c> /// labeled alternative in <see cref="MiniSQLParser.expr"/>. /// <para>The default implementation does nothing.</para> /// </summary> /// <param name="context">The parse tree.</param> public virtual void ExitExprAdd([NotNull] MiniSQLParser.ExprAddContext context) { }
/// <summary> /// Visit a parse tree produced by the <c>exprAdd</c> /// labeled alternative in <see cref="MiniSQLParser.expr"/>. /// <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 VisitExprAdd([NotNull] MiniSQLParser.ExprAddContext context) { return(VisitChildren(context)); }