public override ASTNode VisitIfBlockStatement([NotNull] DaedalusParser.IfBlockStatementContext context) { ConditionalNode conditionalNode = (ConditionalNode)VisitIfBlock(context.ifBlock()); List <ConditionalNode> conditionalNodes = new List <ConditionalNode>(); List <StatementNode> elseNodeBodyNodes = null; foreach (DaedalusParser.ElseIfBlockContext elseIfBlockContext in context.elseIfBlock()) { conditionalNodes.Add((ConditionalNode)VisitElseIfBlock(elseIfBlockContext)); } if (context.elseBlock() != null) { elseNodeBodyNodes = GetStatementNodes(context.elseBlock().statementBlock()); } return(new IfStatementNode(GetLocation(context), conditionalNode, conditionalNodes, elseNodeBodyNodes)); }
private void AddStatementsFromIf(List <Statement> target, DaedalusParser.IfBlockStatementContext context) { var ifStmt = context.ifBlock().statementBlock(); if (ifStmt != null) { AddStatementsFromBlock(target, ifStmt); } foreach (var elseIfStmt in context.elseIfBlock()) { AddStatementsFromBlock(target, elseIfStmt.statementBlock()); } var elseStmt = context.elseBlock()?.statementBlock(); if (elseStmt != null) { AddStatementsFromBlock(target, elseStmt); } }
/// <summary> /// Visit a parse tree produced by <see cref="DaedalusParser.ifBlockStatement"/>. /// <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 VisitIfBlockStatement([NotNull] DaedalusParser.IfBlockStatementContext context) { return(VisitChildren(context)); }
public override void ExitIfBlockStatement(DaedalusParser.IfBlockStatementContext context) { _assemblyBuilder.IfBlockStatementEnd(); }
public override void EnterIfBlockStatement(DaedalusParser.IfBlockStatementContext context) { _assemblyBuilder.IfBlockStatementStart(); }
/// <summary> /// Exit a parse tree produced by <see cref="DaedalusParser.ifBlockStatement"/>. /// <para>The default implementation does nothing.</para> /// </summary> /// <param name="context">The parse tree.</param> public virtual void ExitIfBlockStatement([NotNull] DaedalusParser.IfBlockStatementContext context) { }