colder Fri, 09 Jul 2010 09:43:07 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=301113
Log: Fix some stuff Changed paths: U php/php-src/branches/LEMON/Zend/zend_language_parser.y Modified: php/php-src/branches/LEMON/Zend/zend_language_parser.y =================================================================== --- php/php-src/branches/LEMON/Zend/zend_language_parser.y 2010-07-09 09:38:38 UTC (rev 301112) +++ php/php-src/branches/LEMON/Zend/zend_language_parser.y 2010-07-09 09:43:07 UTC (rev 301113) @@ -73,6 +73,8 @@ %type unticked_class_declaration_statement_i {znode_array} %type unticked_class_declaration_statement_ii {znode_array} %type while_cond {znode_array} +%type do_statement {znode_array} +%type for_cont {znode_array} /* TOKENS TRANSLATION: @@ -299,8 +301,8 @@ if_alt_cond(A) ::= IF LPAREN expr(B) RPAREN(C) COLON. { zend_do_if_cond(&B, &C TSRMLS_CC); A = C; } if_alt_cond_then ::= if_alt_cond(B) inner_statement_list. { zend_do_if_after_statement(&B, 1 TSRMLS_CC); } -while_begin(A) ::= WHILE(B) LPAREN. { B.u.op.opline_num = get_next_op_number(CG(active_op_array)); A = B } -while_cond(A) ::= while_begin(B) expr(C) RPAREN(D). { zend_do_while_cond(&C, &D TSRMLS_CC); A[0] = B; A[1] = D } +while_begin(A) ::= WHILE(B) LPAREN. { B.u.op.opline_num = get_next_op_number(CG(active_op_array)); A = B; } +while_cond(A) ::= while_begin(B) expr(C) RPAREN(D). { zend_do_while_cond(&C, &D TSRMLS_CC); A[0] = B; A[1] = D; } unticked_statement ::= while_cond(B) while_statement. { zend_do_while_end(&B[0], &B[1] TSRMLS_CC); } @@ -348,13 +350,13 @@ foreach_i(A) ::= foreach_ii(B) foreach_variable(C) foreach_optional_arg(D) RPAREN. { zend_do_foreach_cont(&B[0], &B[1], &B[2], &C, &D TSRMLS_CC); A[0] = B[0]; A[1] = B[2]; } foreach ::= foreach_i(B) foreach_statement. { zend_do_foreach_end(&B[0], &B[1] TSRMLS_CC); } -foreach2_ii(A) ::= FOREACH(B) LPAREN(C) expr_without_variable(D) AS(E). { zend_do_foreach_begin(&A, &B, &C, &D, 0 TSRMLS_CC); A[0] = B; A[1] = C; A[2] = E; } +foreach2_ii(A) ::= FOREACH(B) LPAREN(C) expr_without_variable(D) AS(E). { zend_do_foreach_begin(&B, &C, &D, &E, 0 TSRMLS_CC); A[0] = B; A[1] = C; A[2] = E; } foreach2_i(A) ::= foreach2_ii(B) variable(C) foreach_optional_arg(D) RPAREN. { zend_check_writable_variable(&C); zend_do_foreach_cont(&B[0], &B[1], &B[2], &C, &D TSRMLS_CC); A[0] = B[0]; A[1] = B[2]; } foreach2 ::= foreach2_i(B) foreach_statement. { zend_do_foreach_end(&B[0], &B[1] TSRMLS_CC); } try_catch_v(A) ::= TRY(B). { zend_do_try(&B TSRMLS_CC); A = B; } try_catch_iv(A) ::= try_catch_v(B) LBRACE inner_statement_list RBRACE CATCH LPAREN(C). { zend_initialize_try_catch_element(&B TSRMLS_CC); A[0] = B; A[1] = C; } -try_catch_iii(A) ::= try_catch_iv(B) fully_qualified_class_name(C). { zend_do_first_catch(&B TSRMLS_CC); A[0] = B[0]; A[1] = B[1]; A[2] = C; } +try_catch_iii(A) ::= try_catch_iv(B) fully_qualified_class_name(C). { zend_do_first_catch(&B[1] TSRMLS_CC); A[0] = B[0]; A[1] = B[1]; A[2] = C; } try_catch_ii(A) ::= try_catch_iii(B) VARIABLE(C) RPAREN. { zend_do_begin_catch(&B[0], &B[2], &C, &B[1] TSRMLS_CC); A = B[0]; } try_catch_i(A) ::= try_catch_ii(B) LBRACE inner_statement_list RBRACE. { zend_do_end_catch(&B TSRMLS_CC); A = B; } try_catch ::= try_catch_i(B) additional_catches(C). { zend_do_mark_last_catch(&B, &C TSRMLS_CC); } @@ -1412,9 +1414,16 @@ non_empty_static_array_pair_list(A) ::= non_empty_static_array_pair_list COMMA static_scalar(B) DOUBLE_ARROW static_scalar(C). { zend_do_add_static_array_element(&A, &B, &C); } non_empty_static_array_pair_list(A) ::= non_empty_static_array_pair_list COMMA static_scalar(B). { zend_do_add_static_array_element(&A, NULL, &B); } -non_empty_static_array_pair_list(A) ::= static_scalar(B) DOUBLE_ARROW static_scalar(C). { A.op_type = IS_CONST; INIT_PZVAL(&A.u.constant); array_init(&A.u.constant); zend_do_add_static_array_element(&A, &B, &C); } -non_empty_static_array_pair_list(A) ::= static_scalar(B). { A.op_type = IS_CONST; INIT_PZVAL(&A.u.constant); array_init(&A.u.constant); zend_do_add_static_array_element(&A, NULL, &B); } +non_empty_static_array_pair_list(A) ::= static_scalar(B) DOUBLE_ARROW static_scalar(C). { A.op_type = IS_CONST; + INIT_PZVAL(&A.u.constant); + array_init(&A.u.constant); + zend_do_add_static_array_element(&A, &B, &C); } +non_empty_static_array_pair_list(A) ::= static_scalar(B). { A.op_type = IS_CONST; + INIT_PZVAL(&A.u.constant); + array_init(&A.u.constant); + zend_do_add_static_array_element(&A, NULL, &B); } + //expr: // r_variable { $$ = $1; } // | expr_without_variable { $$ = $1; }
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php