public override IExpression VisitCcIfBlock([NotNull] VBAConditionalCompilationParser.CcIfBlockContext context) { var ifCondTokens = new ConstantExpression(new TokensValue(context.ccIf().GetTokens(_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(elseIf.ccElseIf().GetTokens(_tokenStream))), Visit(elseIf.ccElseIf().ccExpression()), Visit(elseIf.ccBlock()))) .ToList(); IExpression elseCondTokens = null; IExpression elseBlock = null; if (context.ccElseBlock() != null) { elseCondTokens = new ConstantExpression(new TokensValue(context.ccElseBlock().ccElse().GetTokens(_tokenStream))); elseBlock = Visit(context.ccElseBlock().ccBlock()); } var endIfTokens = new ConstantExpression(new TokensValue(context.ccEndIf().GetTokens(_tokenStream))); return(new ConditionalCompilationIfExpression( ifCondTokens, ifCond, ifBlock, elseIfCodeCondBlocks, elseCondTokens, elseBlock, endIfTokens)); }
public override IExpression VisitCcIfBlock([NotNull] VBAConditionalCompilationParser.CcIfBlockContext context) { var ifCondCode = new ConstantExpression(new StringValue(ParserRuleContextHelper.GetText(context.ccIf(), _stream))); 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(ParserRuleContextHelper.GetText(elseIf.ccElseIf(), _stream))), Visit(elseIf.ccElseIf().ccExpression()), Visit(elseIf.ccBlock()))).ToList(); IExpression elseCondCode = null; IExpression elseBlock = null; if (context.ccElseBlock() != null) { elseCondCode = new ConstantExpression(new StringValue(ParserRuleContextHelper.GetText(context.ccElseBlock().ccElse(), _stream))); elseBlock = Visit(context.ccElseBlock().ccBlock()); } IExpression endIf = new ConstantExpression(new StringValue(ParserRuleContextHelper.GetText(context.ccEndIf(), _stream))); return(new ConditionalCompilationIfExpression( ifCondCode, ifCond, ifBlock, elseIfCodeCondBlocks, elseCondCode, elseBlock, endIf)); }