@@ -59,7 +59,7 @@ char *program_file_dir;
5959%token <bval> T_TRUE T_FALSE
6060%token <ival> T_INT T_TIMES_DO_INT
6161%token <fval> T_FLOAT
62- %token <sval> T_STRING T_VAR
62+ %token <sval> T_STRING T_VAR T_FOREACH_VAR
6363%token <lluval> T_UNSIGNED_LONG_LONG_INT
6464%token T_PLUS T_MINUS T_MULTIPLY T_DIVIDE T_LEFT T_RIGHT T_EQUAL
6565%token T_LEFT_BRACKET T_RIGHT_BRACKET T_LEFT_CURLY_BRACKET T_RIGHT_CURLY_BRACKET T_COMMA T_DOT T_COLON
@@ -228,7 +228,7 @@ line: T_NEWLINE
228228 | function T_NEWLINE { }
229229 | T_END decisionstart { }
230230 | T_IMPORT module T_NEWLINE { if (is_interactive) handleModuleImport(NULL , false ); }
231- | T_IMPORT module T_AS T_VAR T_NEWLINE { if (is_interactive) handleModuleImport($4 , false ); }
231+ | T_IMPORT module T_AS T_VAR T_NEWLINE { if (is_interactive) { handleModuleImport($4 , false ); } else { free( $4 ); } }
232232 | T_FROM module T_IMPORT T_MULTIPLY { if (is_interactive) handleModuleImport(NULL , true ); }
233233 | T_FROM module T_IMPORT function_name { if (is_interactive) handleModuleImport(NULL , true ); }
234234 | error T_NEWLINE parser { if (is_interactive) { yyerrok ; yyclearin ; } }
@@ -694,6 +694,9 @@ loop:
694694 | T_FOREACH T_VAR T_AS T_VAR { startForeach($2 , $4 ); }
695695 | T_FOREACH T_VAR T_AS T_VAR T_COLON T_VAR { startForeachDict($2 , $4 , $6 ); }
696696 | T_FOREACH T_VAR T_AS T_VAR T_FOREACH_AS_COLON T_VAR { startForeachDict($2 , $4 , $6 ); }
697+ | T_FOREACH T_FOREACH_VAR T_AS T_FOREACH_VAR { startForeach($2 , $4 ); }
698+ | T_FOREACH T_FOREACH_VAR T_AS T_FOREACH_VAR T_COLON T_FOREACH_VAR { startForeachDict($2 , $4 , $6 ); }
699+ | T_FOREACH T_FOREACH_VAR T_AS T_FOREACH_VAR T_FOREACH_AS_COLON T_FOREACH_VAR { startForeachDict($2 , $4 , $6 ); }
697700;
698701
699702decisionstart : { decision_mode = function_mode; handle_end_keyword(); }
@@ -753,6 +756,7 @@ preparser_line: { }
753756function :
754757 | T_FOREACH_AS_COLON function { }
755758 | T_TIMES_DO_INT function { }
759+ | T_FOREACH_VAR function { free($1 ); }
756760;
757761
758762quit : { }
0 commit comments