Выделяет инициализацию переменной в for в отдельную строку

Issue #10 resolved
Develops repo owner created an issue

До

for ($i = 1;; $i < 10; ++$i) {
        print("1");
}

После

$i = 1;

for (; $i < 10; ++$i) {
        print("1");
}

Comments (3)

  1. Develops reporter

    Скорее всего, проблема не решаема, т.к. компилятор никак не отделяет эти инструкции в первом блоке for.

    |   T_FOR
                '('
                    for_expr
                ';' { zend_do_free(&$3 TSRMLS_CC); $4.u.opline_num = get_next_op_number(CG(active_op_array)); }
                    for_expr
                ';' { zend_do_extended_info(TSRMLS_C); zend_do_for_cond(&$6, &$7 TSRMLS_CC); }
                    for_expr
                ')' { zend_do_free(&$9 TSRMLS_CC); zend_do_for_before_statement(&$4, &$7 TSRMLS_CC); }
                for_statement { zend_do_for_end(&$7 TSRMLS_CC); }
    
    for_expr:
            /* empty */         { $$.op_type = IS_CONST;  Z_TYPE($$.u.constant) = IS_BOOL;  Z_LVAL($$.u.constant) = 1; }
        |   non_empty_for_expr  { $$ = $1; }
    ;
    
    non_empty_for_expr:
            non_empty_for_expr ','  { zend_do_free(&$1 TSRMLS_CC); } expr { $$ = $4; }
        |   expr                    { $$ = $1; }
    ;
    
  2. Log in to comment