Example #1
0
        public override IExpression VisitCcIfBlock([NotNull] VBAConditionalCompilationParser.CcIfBlockContext context)
        {
            var ifCondTokens         = new ConstantExpression(new TokensValue(ParserRuleContextHelper.GetTokens(context.ccIf(), _tokenStream)));
            var ifCond               = Visit(context.ccIf().ccExpression());
            var ifBlock              = Visit(context.ccBlock());
            var elseIfCodeCondBlocks = context
                                       .ccElseIfBlock()
                                       .Select(elseIf =>
                                               Tuple.Create <IExpression, IExpression, IExpression>(
                                                   new ConstantExpression(new TokensValue(ParserRuleContextHelper.GetTokens(elseIf.ccElseIf(), _tokenStream))),
                                                   Visit(elseIf.ccElseIf().ccExpression()),
                                                   Visit(elseIf.ccBlock())))
                                       .ToList();

            IExpression elseCondTokens = null;
            IExpression elseBlock      = null;

            if (context.ccElseBlock() != null)
            {
                elseCondTokens = new ConstantExpression(new TokensValue(ParserRuleContextHelper.GetTokens(context.ccElseBlock().ccElse(), _tokenStream)));
                elseBlock      = Visit(context.ccElseBlock().ccBlock());
            }
            var endIfTokens = new ConstantExpression(new TokensValue(ParserRuleContextHelper.GetTokens(context.ccEndIf(), _tokenStream)));

            return(new ConditionalCompilationIfExpression(
                       ifCondTokens,
                       ifCond,
                       ifBlock,
                       elseIfCodeCondBlocks,
                       elseCondTokens,
                       elseBlock,
                       endIfTokens));
        }
Example #2
0
        public override IExpression VisitCcIfBlock([NotNull] VBAConditionalCompilationParser.CcIfBlockContext context)
        {
            var ifCondCode           = new ConstantExpression(new StringValue(context.ccIf().GetText()));
            var ifCond               = Visit(context.ccIf().ccExpression());
            var ifBlock              = Visit(context.ccBlock());
            var elseIfCodeCondBlocks = context
                                       .ccElseIfBlock()
                                       .Select(elseIf =>
                                               Tuple.Create <IExpression, IExpression, IExpression>(
                                                   new ConstantExpression(new StringValue(elseIf.ccElseIf().GetText())),
                                                   Visit(elseIf.ccElseIf().ccExpression()),
                                                   Visit(elseIf.ccBlock()))).ToList();

            IExpression elseCondCode = null;
            IExpression elseBlock    = null;

            if (context.ccElseBlock() != null)
            {
                elseCondCode = new ConstantExpression(new StringValue(context.ccElseBlock().ccElse().GetText()));
                elseBlock    = Visit(context.ccElseBlock().ccBlock());
            }
            IExpression endIf = new ConstantExpression(new StringValue(context.ccEndIf().GetText()));

            return(new ConditionalCompilationIfExpression(
                       ifCondCode,
                       ifCond,
                       ifBlock,
                       elseIfCodeCondBlocks,
                       elseCondCode,
                       elseBlock,
                       endIf));
        }
 /// <summary>
 /// Exit a parse tree produced by <see cref="VBAConditionalCompilationParser.ccIfBlock"/>.
 /// <para>The default implementation does nothing.</para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 public virtual void ExitCcIfBlock([NotNull] VBAConditionalCompilationParser.CcIfBlockContext context)
 {
 }
Example #4
0
 /// <summary>
 /// Visit a parse tree produced by <see cref="VBAConditionalCompilationParser.ccIfBlock"/>.
 /// <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 VisitCcIfBlock([NotNull] VBAConditionalCompilationParser.CcIfBlockContext context)
 {
     return(VisitChildren(context));
 }