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); }
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())); }