commands_as_list : push_commands commands_as_list1 pop_commands {$$=$2; } ; push_commands : { dopush_commands(); } ; pop_commands : { dopop_commands(); } ; commands_as_list1: {$$=0; set_cmdlineno(yylineno); } | commands_as_list_something {$$=$1;} ; commands_as_list_something : atline commands_all1 atline opt_semi { $$=malloc(sizeof(s_commands)); $$->cmds.cmds_len=1; $$->cmds.cmds_val=malloc(sizeof($$->cmds.cmds_val[0]) * $$->cmds.cmds_len); $$->cmds.cmds_val[$$->cmds.cmds_len-1]=$2; $$->first_lineno=$1; $$->last_lineno=$3; lastlineno=yylineno; } | commands_as_list_something commands_all1 atline opt_semi { $$=$1; $$->cmds.cmds_len=$1->cmds.cmds_len+1; $$->cmds.cmds_val=realloc($1->cmds.cmds_val, sizeof($$->cmds.cmds_val[0]) * $$->cmds.cmds_len); $$->cmds.cmds_val[$$->cmds.cmds_len-1]=$2; lastlineno=yylineno; $$->last_lineno=$3; } ;