Beispiel #1
0
        public override Result VisitExpr_additive([NotNull] ExpressionParser.Expr_additiveContext context)
        {
            var(lSuc, lValue) = Visit(context.lhs);
            var(rSuc, rValue) = Visit(context.rhs);
            if (!(lSuc && rSuc))
            {
                return(DefaultResult);
            }

            switch (context.op.Type)
            {
            case ExpressionParser.PLUS: return(new Result(true, lValue + rValue));

            case ExpressionParser.MINUS: return(new Result(true, lValue - rValue));

            default: return(DefaultResult);
            }
        }
Beispiel #2
0
 /// <summary>
 /// Visit a parse tree produced by the <c>expr_additive</c>
 /// labeled alternative in <see cref="ExpressionParser.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 VisitExpr_additive([NotNull] ExpressionParser.Expr_additiveContext context)
 {
     return(VisitChildren(context));
 }
 /// <summary>
 /// Exit a parse tree produced by the <c>expr_additive</c>
 /// labeled alternative in <see cref="ExpressionParser.expr"/>.
 /// <para>The default implementation does nothing.</para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 public virtual void ExitExpr_additive([NotNull] ExpressionParser.Expr_additiveContext context)
 {
 }