summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndi Gutmans <andi@php.net>2000-08-11 09:56:28 +0000
committerAndi Gutmans <andi@php.net>2000-08-11 09:56:28 +0000
commit2336c0148e8a6d6e274595fe0d45893ecd1000d0 (patch)
tree381abd9eaa87e0e008375d25a55fe94e87bc09af
parent490de4de5770dbbeae199c91797b17b99432c75a (diff)
downloadphp-git-2336c0148e8a6d6e274595fe0d45893ecd1000d0.tar.gz
- Only support variables and array(...) in foreach loops
-rw-r--r--Zend/zend-parser.y7
1 files changed, 5 insertions, 2 deletions
diff --git a/Zend/zend-parser.y b/Zend/zend-parser.y
index bf7d7261ca..6d1b012b14 100644
--- a/Zend/zend-parser.y
+++ b/Zend/zend-parser.y
@@ -198,7 +198,7 @@ unticked_statement:
| T_USE use_filename ';' { zend_error(E_COMPILE_ERROR,"use: Not yet supported. Please use include_once() or require_once()"); zval_dtor(&$2.u.constant); }
| T_UNSET '(' unset_variables ')' ';'
| T_FOREACH '(' w_cvar T_AS { do_foreach_begin(&$1, &$3, &$2, &$4, 1 CLS_CC); } w_cvar foreach_optional_arg ')' { do_foreach_cont(&$6, &$7, &$4 CLS_CC); } foreach_statement { do_foreach_end(&$1, &$2 CLS_CC); }
- | T_FOREACH '(' expr_without_variable T_AS { do_foreach_begin(&$1, &$3, &$2, &$4, 0 CLS_CC); } w_cvar foreach_optional_arg ')' { do_foreach_cont(&$6, &$7, &$4 CLS_CC); } foreach_statement { do_foreach_end(&$1, &$2 CLS_CC); }
+ | T_FOREACH '(' array_construct T_AS { do_foreach_begin(&$1, &$3, &$2, &$4, 0 CLS_CC); } w_cvar foreach_optional_arg ')' { do_foreach_cont(&$6, &$7, &$4 CLS_CC); } foreach_statement { do_foreach_end(&$1, &$2 CLS_CC); }
| T_DECLARE { do_declare_begin(CLS_C); } '(' declare_list ')' declare_statement { do_declare_end(CLS_C); }
| ';' /* empty statement */
;
@@ -479,11 +479,14 @@ expr_without_variable:
| T_EXIT exit_expr { do_exit(&$$, &$2 CLS_CC); }
| '@' { do_begin_silence(&$1 CLS_CC); } expr { do_end_silence(&$1 CLS_CC); $$ = $3; }
| scalar { $$ = $1; }
- | T_ARRAY '(' array_pair_list ')' { $$ = $3; }
+ | array_construct { $$ = $1; }
| '`' encaps_list '`' { do_shell_exec(&$$, &$2 CLS_CC); }
| T_PRINT expr { do_print(&$$, &$2 CLS_CC); }
;
+array_construct:
+ T_ARRAY '(' array_pair_list ')' { $$ = $3; }
+;
function_call:
T_STRING '(' { $2.u.opline_num = do_begin_function_call(&$1 CLS_CC); }