コード例 #1
0
        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)));
        }
コード例 #2
0
        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);
        }
コード例 #3
0
 public override Expression VisitForStatement(ForStatementContext context)
 {
     throw new CompilationException("Unsupported statement. StatementType=for loop", context);
 }