Пример #1
0
        public override AstNode VisitIfStatement([NotNull] QLParser.IfStatementContext context)
        {
            var ifs = context
                      .conditionBlock()
                      .Select(child => child.Accept(this))
                      .Cast <IfThenElse>()
                      .ToList();

            var root = ifs.First();
            var last = root;

            foreach (var other in ifs.Skip(1))
            {
                last.Else = other;
                last      = other;
            }

            var finalElse = context.statement();

            if (finalElse != null)
            {
                last.Else = finalElse.Accept(this) as Statement;
            }

            return(root);
        }
Пример #2
0
        public override Statement VisitIfStatement(QLParser.IfStatementContext context)
        {
            Expression condition = context.expr().Accept(new ExpressionBuilder());

            var thenStatements = new List <Statement>();
            var elseStatements = new List <Statement>();

            foreach (var statement in context._then)
            {
                thenStatements.Add(statement.Accept(this));
            }
            foreach (var statement in context._else)
            {
                elseStatements.Add(statement.Accept(this));
            }

            return(new IfStatement(condition, thenStatements, elseStatements, context.GetTextPosition()));
        }