public override ForStatementNode VisitForStatement([NotNull] ForStatementContext context) { var declaration = context.forDecStatement()?.inlineStatement().Invoke(VisitInlineStatement); var condition = context.forConExpression()?.expr().Invoke(VisitExpr); var increment = context.forIncStatement()?.inlineStatement().Invoke(VisitInlineStatement); var block = context.block().Invoke(VisitBlock); var statement = context.statement().Invoke(VisitStatement); var body = (Node)block ?? statement; return(new ForStatementNode(declaration, condition, increment, body, GetLocation(context))); }
public override void EnterForStatement([NotNull] ForStatementContext context) { ForStatement statement = new ForStatement(Parent, context); StatementListener statementListener = new StatementListener(statement); context.forControl().forInit.EnterRule(statementListener); statement.Init = statementListener.GetResult().First(); statementListener = new StatementListener(statement); context.statement().EnterRule(statementListener); statement.Statements = statementListener.GetResult(); ExpressionListener expressionListener = new ExpressionListener(statement); context.forControl().forCond.EnterRule(expressionListener); statement.Condition = expressionListener.GetResult(); statementListener = new StatementListener(statement); context.forControl().forUpdate.EnterRule(statementListener); statement.Update = statementListener.GetResult().First(); Result.Add(statement); }
public override Expression VisitForStatement(ForStatementContext context) { throw new CompilationException("Unsupported statement. StatementType=for loop", context); }