Beispiel #1
0
        private IExpression VisitEq(VBAConditionalCompilationParser.CcExpressionContext context)
        {
            var left  = Visit(context.ccExpression()[0]);
            var right = Visit(context.ccExpression()[1]);

            return(new LogicalEqualsExpression(left, right));
        }
Beispiel #2
0
        private IExpression VisitDiv(VBAConditionalCompilationParser.CcExpressionContext context)
        {
            var left  = Visit(context.ccExpression()[0]);
            var right = Visit(context.ccExpression()[1]);

            return(new BinaryDivisionExpression(left, right));
        }
Beispiel #3
0
        private IExpression VisitLike(VBAConditionalCompilationParser.CcExpressionContext context)
        {
            var expr    = Visit(context.ccExpression()[0]);
            var pattern = Visit(context.ccExpression()[1]);

            return(new LikeExpression(expr, pattern));
        }
Beispiel #4
0
        private IExpression VisitLibraryFunction(VBAConditionalCompilationParser.CcExpressionContext context)
        {
            var intrinsicFunction = context.intrinsicFunction();
            var functionName      = ParserRuleContextHelper.GetText(intrinsicFunction.intrinsicFunctionName(), _stream);
            var argument          = Visit(intrinsicFunction.ccExpression());

            return(VBALibrary.CreateLibraryFunction(functionName, argument));
        }
Beispiel #5
0
 private IExpression Visit(VBAConditionalCompilationParser.CcExpressionContext context)
 {
     if (context.literal() != null)
     {
         return(Visit(context.literal()));
     }
     else if (context.name() != null)
     {
         return(Visit(context.name()));
     }
     else if (context.LPAREN() != null)
     {
         return(Visit(context.ccExpression()[0]));
     }
     else if (context.MINUS() != null && context.ccExpression().Count == 1)
     {
         return(VisitUnaryMinus(context));
     }
     else if (context.NOT() != null)
     {
         return(VisitUnaryNot(context));
     }
     else if (context.PLUS() != null)
     {
         return(VisitPlus(context));
     }
     else if (context.MINUS() != null && context.ccExpression().Count == 2)
     {
         return(VisitMinus(context));
     }
     else if (context.MULT() != null)
     {
         return(VisitMult(context));
     }
     else if (context.DIV() != null)
     {
         return(VisitDiv(context));
     }
     else if (context.INTDIV() != null)
     {
         return(VisitIntDiv(context));
     }
     else if (context.MOD() != null)
     {
         return(VisitMod(context));
     }
     else if (context.POW() != null)
     {
         return(VisitPow(context));
     }
     else if (context.AMPERSAND() != null)
     {
         return(VisitConcat(context));
     }
     else if (context.EQ() != null)
     {
         return(VisitEq(context));
     }
     else if (context.NEQ() != null)
     {
         return(VisitNeq(context));
     }
     else if (context.LT() != null)
     {
         return(VisitLt(context));
     }
     else if (context.GT() != null)
     {
         return(VisitGt(context));
     }
     else if (context.LEQ() != null)
     {
         return(VisitLeq(context));
     }
     else if (context.GEQ() != null)
     {
         return(VisitGeq(context));
     }
     else if (context.AND() != null)
     {
         return(VisitAnd(context));
     }
     else if (context.OR() != null)
     {
         return(VisitOr(context));
     }
     else if (context.XOR() != null)
     {
         return(VisitXor(context));
     }
     else if (context.EQV() != null)
     {
         return(VisitEqv(context));
     }
     else if (context.IMP() != null)
     {
         return(VisitImp(context));
     }
     else if (context.IS() != null)
     {
         return(VisitIs(context));
     }
     else if (context.LIKE() != null)
     {
         return(VisitLike(context));
     }
     else
     {
         return(VisitLibraryFunction(context));
     }
 }
Beispiel #6
0
 private IExpression VisitMinus(VBAConditionalCompilationParser.CcExpressionContext context)
 {
     return(new BinaryMinusExpression(Visit(context.ccExpression()[0]), Visit(context.ccExpression()[1])));
 }
Beispiel #7
0
 private IExpression VisitUnaryNot(VBAConditionalCompilationParser.CcExpressionContext context)
 {
     return(new UnaryNotExpression(Visit(context.ccExpression()[0])));
 }
 /// <summary>
 /// Exit a parse tree produced by <see cref="VBAConditionalCompilationParser.ccExpression"/>.
 /// <para>The default implementation does nothing.</para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 public virtual void ExitCcExpression([NotNull] VBAConditionalCompilationParser.CcExpressionContext context)
 {
 }
Beispiel #9
0
 /// <summary>
 /// Visit a parse tree produced by <see cref="VBAConditionalCompilationParser.ccExpression"/>.
 /// <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 VisitCcExpression([NotNull] VBAConditionalCompilationParser.CcExpressionContext context)
 {
     return(VisitChildren(context));
 }