new correctif andor

This commit is contained in:
Antoine Riard 2017-03-29 16:53:06 +02:00
parent f5247f32dc
commit 07ed8ac3e3
9 changed files with 1106 additions and 3005 deletions

File diff suppressed because one or more lines are too long

View file

@ -484,3 +484,975 @@ src/parser/stack_init.c$$
src/parser/sym_free.c$$ src/parser/sym_free.c$$
src/parser/tree_func_free.c$$ src/parser/tree_func_free.c$$
src/parser/tree_wrapper.c$$ src/parser/tree_wrapper.c$$
src/builtin/bt_env_opt.c$$
src/builtin/bt_read_get.c$$
src/builtin/bt_read_term.c$$
src/builtin/builtin_cd.c$$
src/builtin/builtin_echo.c$$
src/builtin/builtin_env.c$$
src/builtin/builtin_exit.c$$
src/builtin/builtin_export.c$$
src/builtin/builtin_func.c$$
src/builtin/builtin_hash.c$$
src/builtin/builtin_history.c$$
src/builtin/builtin_math.c$$
src/builtin/builtin_read.c$$
src/builtin/builtin_setenv.c$$
src/builtin/builtin_unset.c$$
src/builtin/builtin_unsetenv.c$$
src/builtin/is_builtin.c$$
src/completion/c_arrow.c$$
src/completion/c_clear.c$$
src/completion/c_find_abspath.c$$
src/completion/c_find_binary.c$$
src/completion/c_find_env.c$$
src/completion/c_find_files.c$$
src/completion/c_init.c$$
src/completion/c_match.c$$
src/completion/c_match_glob.c$$
src/completion/c_match_update.c$$
src/completion/c_misc.c$$
src/completion/c_output.c$$
src/completion/c_parser.c$$
src/completion/c_pathsolver.c$$
src/completion/c_printer.c$$
src/completion/c_sizing.c$$
src/completion/c_terminal.c$$
src/completion/completion.c$$
src/exec/ast_free.c$$
src/exec/bad_fd.c$$
src/exec/exec_ampersand.c$$
src/exec/exec_and_if.c$$
src/exec/exec_bang.c$$
src/exec/exec_case_branch.c$$
src/exec/exec_destroy.c$$
src/exec/exec_elif.c$$
src/exec/exec_else.c$$
src/exec/exec_func.c$$
src/exec/exec_init.c$$
src/exec/exec_leaf.c$$
src/exec/exec_or_if.c$$
src/exec/exec_pipe.c$$
src/exec/exec_semi.c$$
src/exec/exec_var.c$$
src/exec/fd_is_valid.c$$
src/exec/ft_exec.c$$
src/exec/ft_findexec.c$$
src/exec/is_function.c$$
src/exec/mark_process_status.c$$
src/exec/node_copy.c$$
src/exec/pfree_cmd.c$$
src/exec/pfree_cond.c$$
src/exec/pfree_func.c$$
src/exec/pfree_list.c$$
src/exec/pfree_subshell.c$$
src/exec/plaunch_brace.c$$
src/exec/plaunch_builtin.c$$
src/exec/plaunch_case.c$$
src/exec/plaunch_empty.c$$
src/exec/plaunch_file.c$$
src/exec/plaunch_for.c$$
src/exec/plaunch_function.c$$
src/exec/plaunch_if.c$$
src/exec/plaunch_subshell.c$$
src/exec/plaunch_until.c$$
src/exec/plaunch_while.c$$
src/exec/process_launch.c$$
src/exec/process_redirect.c$$
src/exec/process_set.c$$
src/exec/process_setgroup.c$$
src/exec/process_setsig.c$$
src/exec/pset_brace.c$$
src/exec/pset_case.c$$
src/exec/pset_cmd.c$$
src/exec/pset_for.c$$
src/exec/pset_if.c$$
src/exec/pset_subshell.c$$
src/exec/pset_until.c$$
src/exec/pset_while.c$$
src/exec/redir_copy.c$$
src/exec/redir_free.c$$
src/exec/redirect_dgreat.c$$
src/exec/redirect_dless.c$$
src/exec/redirect_great.c$$
src/exec/redirect_greatand.c$$
src/exec/redirect_less.c$$
src/exec/redirect_lessand.c$$
src/exec/set_exitstatus.c$$
src/exec/token_to_argv.c$$
src/glob/command_getoutput.c$$
src/glob/dir_glob.c$$
src/glob/esc_print.c$$
src/glob/expand_bquote.c$$
src/glob/expand_brace.c$$
src/glob/expand_esc.c$$
src/glob/expand_home.c$$
src/glob/expand_var.c$$
src/glob/ft_strsplit_esc.c$$
src/glob/ft_strsplit_spe.c$$
src/glob/gen_tab_esc.c$$
src/glob/glob.c$$
src/glob/is_char_esc.c$$
src/glob/match_pattern.c$$
src/glob/tab_esc_copy.c$$
src/glob/word_is_assignment.c$$
src/hash_table/ft_add_hash.c$$
src/hash_table/hash.c$$
src/hash_table/hash_free.c$$
src/hash_table/hash_str.c$$
src/hash_table/is_hash.c$$
src/history/add_str_in_history.c$$
src/history/history.c$$
src/history/history_parsing.c$$
src/history/history_parsing_toolz.c$$
src/history/history_parsing_toolz_2.c$$
src/history/list_toolz.c$$
src/history/surch_in_history.c$$
src/job_control/builtin_bg.c$$
src/job_control/builtin_fg.c$$
src/job_control/builtin_jobs.c$$
src/job_control/do_job_notification.c$$
src/job_control/has_running_job.c$$
src/job_control/has_stopped_job.c$$
src/job_control/job_addprocess.c$$
src/job_control/job_cmp_id.c$$
src/job_control/job_format.c$$
src/job_control/job_format_head.c$$
src/job_control/job_free.c$$
src/job_control/job_getprocess.c$$
src/job_control/job_getrank.c$$
src/job_control/job_hup_all.c$$
src/job_control/job_is_completed.c$$
src/job_control/job_is_stopped.c$$
src/job_control/job_notify_change.c$$
src/job_control/job_notify_new.c$$
src/job_control/job_remove.c$$
src/job_control/job_run.c$$
src/job_control/job_update_id.c$$
src/job_control/job_update_status.c$$
src/job_control/job_wait.c$$
src/job_control/jobc_destroy.c$$
src/job_control/jobc_init.c$$
src/job_control/mark_job_as_running.c$$
src/job_control/pprint_brace.c$$
src/job_control/pprint_case.c$$
src/job_control/pprint_cmd.c$$
src/job_control/pprint_for.c$$
src/job_control/pprint_function.c$$
src/job_control/pprint_if.c$$
src/job_control/pprint_subshell.c$$
src/job_control/pprint_until.c$$
src/job_control/pprint_while.c$$
src/job_control/process_cmp_pid.c$$
src/job_control/process_format.c$$
src/job_control/process_free.c$$
src/job_control/put_job_in_background.c$$
src/job_control/put_job_in_foreground.c$$
src/job_control/sigchld_handler.c$$
src/job_control/sigint_handler.c$$
src/job_control/sigtstp_handler.c$$
src/job_control/sigttin_handler.c$$
src/job_control/sigttou_handler.c$$
src/lexer/do_lexer_routine.c$$
src/lexer/get_lexer_stack.c$$
src/lexer/get_lexer_stack2.c$$
src/lexer/get_reserved_words.c$$
src/lexer/get_state_global.c$$
src/lexer/get_state_redir.c$$
src/lexer/insert_newline.c$$
src/lexer/isrw_delim.c$$
src/lexer/keep_last_type.c$$
src/lexer/lexer_backslash.c$$
src/lexer/lexer_bquote.c$$
src/lexer/lexer_curly_braces.c$$
src/lexer/lexer_default.c$$
src/lexer/lexer_delim.c$$
src/lexer/lexer_destroy.c$$
src/lexer/lexer_dquote.c$$
src/lexer/lexer_end.c$$
src/lexer/lexer_great.c$$
src/lexer/lexer_heredoc.c$$
src/lexer/lexer_init.c$$
src/lexer/lexer_less.c$$
src/lexer/lexer_lex.c$$
src/lexer/lexer_newline.c$$
src/lexer/lexer_number.c$$
src/lexer/lexer_paren.c$$
src/lexer/lexer_quote.c$$
src/lexer/lexer_sep.c$$
src/lexer/lexer_word.c$$
src/lexer/token_append.c$$
src/lexer/token_cmp_type.c$$
src/lexer/token_free.c$$
src/lexer/token_init.c$$
src/lexer/token_print.c$$
src/line_editing/control_features.c$$
src/line_editing/ft_prompt.c$$
src/line_editing/get_key.c$$
src/line_editing/readline.c$$
src/line_editing/resize.c$$
src/main/data_exit.c$$
src/main/data_init.c$$
src/main/data_singleton.c$$
src/main/ft_putast.c$$
src/main/main.c$$
src/main/shell_fds.c$$
src/main/shell_init.c$$
src/main/shell_sig.c$$
src/parser/add_bang.c$$
src/parser/add_case.c$$
src/parser/add_cmd.c$$
src/parser/add_condition.c$$
src/parser/add_func.c$$
src/parser/add_loop.c$$
src/parser/add_number.c$$
src/parser/add_redir.c$$
src/parser/add_sep.c$$
src/parser/add_subshell.c$$
src/parser/aggregate_sym.c$$
src/parser/build_tree.c$$
src/parser/do_parser_routine.c$$
src/parser/error_syntax.c$$
src/parser/eval_sym.c$$
src/parser/ft_parse.c$$
src/parser/heredoc_parser.c$$
src/parser/parser_destroy.c$$
src/parser/parser_init.c$$
src/parser/pop_stack.c$$
src/parser/produce_sym.c$$
src/parser/push_stack.c$$
src/parser/read_stack.c$$
src/parser/redir_init.c$$
src/parser/stack_init.c$$
src/parser/sym_free.c$$
src/parser/tree_func_free.c$$
src/parser/tree_wrapper.c$$
src/builtin/bt_env_opt.c$$
src/builtin/bt_read_get.c$$
src/builtin/bt_read_term.c$$
src/builtin/builtin_cd.c$$
src/builtin/builtin_echo.c$$
src/builtin/builtin_env.c$$
src/builtin/builtin_exit.c$$
src/builtin/builtin_export.c$$
src/builtin/builtin_func.c$$
src/builtin/builtin_hash.c$$
src/builtin/builtin_history.c$$
src/builtin/builtin_math.c$$
src/builtin/builtin_read.c$$
src/builtin/builtin_setenv.c$$
src/builtin/builtin_unset.c$$
src/builtin/builtin_unsetenv.c$$
src/builtin/is_builtin.c$$
src/completion/c_arrow.c$$
src/completion/c_clear.c$$
src/completion/c_find_abspath.c$$
src/completion/c_find_binary.c$$
src/completion/c_find_env.c$$
src/completion/c_find_files.c$$
src/completion/c_init.c$$
src/completion/c_match.c$$
src/completion/c_match_glob.c$$
src/completion/c_match_update.c$$
src/completion/c_misc.c$$
src/completion/c_output.c$$
src/completion/c_parser.c$$
src/completion/c_pathsolver.c$$
src/completion/c_printer.c$$
src/completion/c_sizing.c$$
src/completion/c_terminal.c$$
src/completion/completion.c$$
src/exec/ast_free.c$$
src/exec/bad_fd.c$$
src/exec/exec_ampersand.c$$
src/exec/exec_and_if.c$$
src/exec/exec_bang.c$$
src/exec/exec_case_branch.c$$
src/exec/exec_destroy.c$$
src/exec/exec_elif.c$$
src/exec/exec_else.c$$
src/exec/exec_func.c$$
src/exec/exec_init.c$$
src/exec/exec_leaf.c$$
src/exec/exec_or_if.c$$
src/exec/exec_pipe.c$$
src/exec/exec_semi.c$$
src/exec/exec_var.c$$
src/exec/fd_is_valid.c$$
src/exec/ft_exec.c$$
src/exec/ft_findexec.c$$
src/exec/is_function.c$$
src/exec/mark_process_status.c$$
src/exec/node_copy.c$$
src/exec/pfree_cmd.c$$
src/exec/pfree_cond.c$$
src/exec/pfree_func.c$$
src/exec/pfree_list.c$$
src/exec/pfree_subshell.c$$
src/exec/plaunch_brace.c$$
src/exec/plaunch_builtin.c$$
src/exec/plaunch_case.c$$
src/exec/plaunch_empty.c$$
src/exec/plaunch_file.c$$
src/exec/plaunch_for.c$$
src/exec/plaunch_function.c$$
src/exec/plaunch_if.c$$
src/exec/plaunch_subshell.c$$
src/exec/plaunch_until.c$$
src/exec/plaunch_while.c$$
src/exec/process_launch.c$$
src/exec/process_redirect.c$$
src/exec/process_set.c$$
src/exec/process_setgroup.c$$
src/exec/process_setsig.c$$
src/exec/pset_brace.c$$
src/exec/pset_case.c$$
src/exec/pset_cmd.c$$
src/exec/pset_for.c$$
src/exec/pset_if.c$$
src/exec/pset_subshell.c$$
src/exec/pset_until.c$$
src/exec/pset_while.c$$
src/exec/redir_copy.c$$
src/exec/redir_free.c$$
src/exec/redirect_dgreat.c$$
src/exec/redirect_dless.c$$
src/exec/redirect_great.c$$
src/exec/redirect_greatand.c$$
src/exec/redirect_less.c$$
src/exec/redirect_lessand.c$$
src/exec/set_exitstatus.c$$
src/exec/token_to_argv.c$$
src/glob/command_getoutput.c$$
src/glob/dir_glob.c$$
src/glob/esc_print.c$$
src/glob/expand_bquote.c$$
src/glob/expand_brace.c$$
src/glob/expand_esc.c$$
src/glob/expand_home.c$$
src/glob/expand_var.c$$
src/glob/ft_strsplit_esc.c$$
src/glob/ft_strsplit_spe.c$$
src/glob/gen_tab_esc.c$$
src/glob/glob.c$$
src/glob/is_char_esc.c$$
src/glob/match_pattern.c$$
src/glob/tab_esc_copy.c$$
src/glob/word_is_assignment.c$$
src/hash_table/ft_add_hash.c$$
src/hash_table/hash.c$$
src/hash_table/hash_free.c$$
src/hash_table/hash_str.c$$
src/hash_table/is_hash.c$$
src/history/add_str_in_history.c$$
src/history/history.c$$
src/history/history_parsing.c$$
src/history/history_parsing_toolz.c$$
src/history/history_parsing_toolz_2.c$$
src/history/list_toolz.c$$
src/history/surch_in_history.c$$
src/job_control/builtin_bg.c$$
src/job_control/builtin_fg.c$$
src/job_control/builtin_jobs.c$$
src/job_control/do_job_notification.c$$
src/job_control/has_running_job.c$$
src/job_control/has_stopped_job.c$$
src/job_control/job_addprocess.c$$
src/job_control/job_cmp_id.c$$
src/job_control/job_format.c$$
src/job_control/job_format_head.c$$
src/job_control/job_free.c$$
src/job_control/job_getprocess.c$$
src/job_control/job_getrank.c$$
src/job_control/job_hup_all.c$$
src/job_control/job_is_completed.c$$
src/job_control/job_is_stopped.c$$
src/job_control/job_notify_change.c$$
src/job_control/job_notify_new.c$$
src/job_control/job_remove.c$$
src/job_control/job_run.c$$
src/job_control/job_update_id.c$$
src/job_control/job_update_status.c$$
src/job_control/job_wait.c$$
src/job_control/jobc_destroy.c$$
src/job_control/jobc_init.c$$
src/job_control/mark_job_as_running.c$$
src/job_control/pprint_brace.c$$
src/job_control/pprint_case.c$$
src/job_control/pprint_cmd.c$$
src/job_control/pprint_for.c$$
src/job_control/pprint_function.c$$
src/job_control/pprint_if.c$$
src/job_control/pprint_subshell.c$$
src/job_control/pprint_until.c$$
src/job_control/pprint_while.c$$
src/job_control/process_cmp_pid.c$$
src/job_control/process_format.c$$
src/job_control/process_free.c$$
src/job_control/put_job_in_background.c$$
src/job_control/put_job_in_foreground.c$$
src/job_control/sigchld_handler.c$$
src/job_control/sigint_handler.c$$
src/job_control/sigtstp_handler.c$$
src/job_control/sigttin_handler.c$$
src/job_control/sigttou_handler.c$$
src/lexer/do_lexer_routine.c$$
src/lexer/get_lexer_stack.c$$
src/lexer/get_lexer_stack2.c$$
src/lexer/get_reserved_words.c$$
src/lexer/get_state_global.c$$
src/lexer/get_state_redir.c$$
src/lexer/insert_newline.c$$
src/lexer/isrw_delim.c$$
src/lexer/keep_last_type.c$$
src/lexer/lexer_backslash.c$$
src/lexer/lexer_bquote.c$$
src/lexer/lexer_curly_braces.c$$
src/lexer/lexer_default.c$$
src/lexer/lexer_delim.c$$
src/lexer/lexer_destroy.c$$
src/lexer/lexer_dquote.c$$
src/lexer/lexer_end.c$$
src/lexer/lexer_great.c$$
src/lexer/lexer_heredoc.c$$
src/lexer/lexer_init.c$$
src/lexer/lexer_less.c$$
src/lexer/lexer_lex.c$$
src/lexer/lexer_newline.c$$
src/lexer/lexer_number.c$$
src/lexer/lexer_paren.c$$
src/lexer/lexer_quote.c$$
src/lexer/lexer_sep.c$$
src/lexer/lexer_word.c$$
src/lexer/token_append.c$$
src/lexer/token_cmp_type.c$$
src/lexer/token_free.c$$
src/lexer/token_init.c$$
src/lexer/token_print.c$$
src/line_editing/control_features.c$$
src/line_editing/ft_prompt.c$$
src/line_editing/get_key.c$$
src/line_editing/readline.c$$
src/line_editing/resize.c$$
src/main/data_exit.c$$
src/main/data_init.c$$
src/main/data_singleton.c$$
src/main/ft_putast.c$$
src/main/main.c$$
src/main/shell_fds.c$$
src/main/shell_init.c$$
src/main/shell_sig.c$$
src/parser/add_bang.c$$
src/parser/add_case.c$$
src/parser/add_cmd.c$$
src/parser/add_condition.c$$
src/parser/add_func.c$$
src/parser/add_loop.c$$
src/parser/add_number.c$$
src/parser/add_redir.c$$
src/parser/add_sep.c$$
src/parser/add_subshell.c$$
src/parser/aggregate_sym.c$$
src/parser/build_tree.c$$
src/parser/do_parser_routine.c$$
src/parser/error_syntax.c$$
src/parser/eval_sym.c$$
src/parser/ft_parse.c$$
src/parser/heredoc_parser.c$$
src/parser/parser_destroy.c$$
src/parser/parser_init.c$$
src/parser/pop_stack.c$$
src/parser/produce_sym.c$$
src/parser/push_stack.c$$
src/parser/read_stack.c$$
src/parser/redir_init.c$$
src/parser/stack_init.c$$
src/parser/sym_free.c$$
src/parser/tree_func_free.c$$
src/parser/tree_wrapper.c$$
src/builtin/bt_env_opt.c$$
src/builtin/bt_read_get.c$$
src/builtin/bt_read_term.c$$
src/builtin/builtin_cd.c$$
src/builtin/builtin_echo.c$$
src/builtin/builtin_env.c$$
src/builtin/builtin_exit.c$$
src/builtin/builtin_export.c$$
src/builtin/builtin_func.c$$
src/builtin/builtin_hash.c$$
src/builtin/builtin_history.c$$
src/builtin/builtin_math.c$$
src/builtin/builtin_read.c$$
src/builtin/builtin_setenv.c$$
src/builtin/builtin_unset.c$$
src/builtin/builtin_unsetenv.c$$
src/builtin/is_builtin.c$$
src/completion/c_arrow.c$$
src/completion/c_clear.c$$
src/completion/c_find_abspath.c$$
src/completion/c_find_binary.c$$
src/completion/c_find_env.c$$
src/completion/c_find_files.c$$
src/completion/c_init.c$$
src/completion/c_match.c$$
src/completion/c_match_glob.c$$
src/completion/c_match_update.c$$
src/completion/c_misc.c$$
src/completion/c_output.c$$
src/completion/c_parser.c$$
src/completion/c_pathsolver.c$$
src/completion/c_printer.c$$
src/completion/c_sizing.c$$
src/completion/c_terminal.c$$
src/completion/completion.c$$
src/exec/ast_free.c$$
src/exec/bad_fd.c$$
src/exec/exec_ampersand.c$$
src/exec/exec_and_if.c$$
src/exec/exec_bang.c$$
src/exec/exec_case_branch.c$$
src/exec/exec_destroy.c$$
src/exec/exec_elif.c$$
src/exec/exec_else.c$$
src/exec/exec_func.c$$
src/exec/exec_init.c$$
src/exec/exec_leaf.c$$
src/exec/exec_or_if.c$$
src/exec/exec_pipe.c$$
src/exec/exec_semi.c$$
src/exec/exec_var.c$$
src/exec/fd_is_valid.c$$
src/exec/ft_exec.c$$
src/exec/ft_findexec.c$$
src/exec/is_function.c$$
src/exec/mark_process_status.c$$
src/exec/node_copy.c$$
src/exec/pfree_cmd.c$$
src/exec/pfree_cond.c$$
src/exec/pfree_func.c$$
src/exec/pfree_list.c$$
src/exec/pfree_subshell.c$$
src/exec/plaunch_brace.c$$
src/exec/plaunch_builtin.c$$
src/exec/plaunch_case.c$$
src/exec/plaunch_empty.c$$
src/exec/plaunch_file.c$$
src/exec/plaunch_for.c$$
src/exec/plaunch_function.c$$
src/exec/plaunch_if.c$$
src/exec/plaunch_subshell.c$$
src/exec/plaunch_until.c$$
src/exec/plaunch_while.c$$
src/exec/process_launch.c$$
src/exec/process_redirect.c$$
src/exec/process_set.c$$
src/exec/process_setgroup.c$$
src/exec/process_setsig.c$$
src/exec/pset_brace.c$$
src/exec/pset_case.c$$
src/exec/pset_cmd.c$$
src/exec/pset_for.c$$
src/exec/pset_if.c$$
src/exec/pset_subshell.c$$
src/exec/pset_until.c$$
src/exec/pset_while.c$$
src/exec/redir_copy.c$$
src/exec/redir_free.c$$
src/exec/redirect_dgreat.c$$
src/exec/redirect_dless.c$$
src/exec/redirect_great.c$$
src/exec/redirect_greatand.c$$
src/exec/redirect_less.c$$
src/exec/redirect_lessand.c$$
src/exec/set_exitstatus.c$$
src/exec/token_to_argv.c$$
src/glob/command_getoutput.c$$
src/glob/dir_glob.c$$
src/glob/esc_print.c$$
src/glob/expand_bquote.c$$
src/glob/expand_brace.c$$
src/glob/expand_esc.c$$
src/glob/expand_home.c$$
src/glob/expand_var.c$$
src/glob/ft_strsplit_esc.c$$
src/glob/ft_strsplit_spe.c$$
src/glob/gen_tab_esc.c$$
src/glob/glob.c$$
src/glob/is_char_esc.c$$
src/glob/match_pattern.c$$
src/glob/tab_esc_copy.c$$
src/glob/word_is_assignment.c$$
src/hash_table/ft_add_hash.c$$
src/hash_table/hash.c$$
src/hash_table/hash_free.c$$
src/hash_table/hash_str.c$$
src/hash_table/is_hash.c$$
src/history/add_str_in_history.c$$
src/history/history.c$$
src/history/history_parsing.c$$
src/history/history_parsing_toolz.c$$
src/history/history_parsing_toolz_2.c$$
src/history/list_toolz.c$$
src/history/surch_in_history.c$$
src/job_control/builtin_bg.c$$
src/job_control/builtin_fg.c$$
src/job_control/builtin_jobs.c$$
src/job_control/do_job_notification.c$$
src/job_control/has_running_job.c$$
src/job_control/has_stopped_job.c$$
src/job_control/job_addprocess.c$$
src/job_control/job_cmp_id.c$$
src/job_control/job_format.c$$
src/job_control/job_format_head.c$$
src/job_control/job_free.c$$
src/job_control/job_getprocess.c$$
src/job_control/job_getrank.c$$
src/job_control/job_hup_all.c$$
src/job_control/job_is_completed.c$$
src/job_control/job_is_stopped.c$$
src/job_control/job_notify_change.c$$
src/job_control/job_notify_new.c$$
src/job_control/job_remove.c$$
src/job_control/job_run.c$$
src/job_control/job_update_id.c$$
src/job_control/job_update_status.c$$
src/job_control/job_wait.c$$
src/job_control/jobc_destroy.c$$
src/job_control/jobc_init.c$$
src/job_control/mark_job_as_running.c$$
src/job_control/pprint_brace.c$$
src/job_control/pprint_case.c$$
src/job_control/pprint_cmd.c$$
src/job_control/pprint_for.c$$
src/job_control/pprint_function.c$$
src/job_control/pprint_if.c$$
src/job_control/pprint_subshell.c$$
src/job_control/pprint_until.c$$
src/job_control/pprint_while.c$$
src/job_control/process_cmp_pid.c$$
src/job_control/process_format.c$$
src/job_control/process_free.c$$
src/job_control/put_job_in_background.c$$
src/job_control/put_job_in_foreground.c$$
src/job_control/sigchld_handler.c$$
src/job_control/sigint_handler.c$$
src/job_control/sigtstp_handler.c$$
src/job_control/sigttin_handler.c$$
src/job_control/sigttou_handler.c$$
src/lexer/do_lexer_routine.c$$
src/lexer/get_lexer_stack.c$$
src/lexer/get_lexer_stack2.c$$
src/lexer/get_reserved_words.c$$
src/lexer/get_state_global.c$$
src/lexer/get_state_redir.c$$
src/lexer/insert_newline.c$$
src/lexer/isrw_delim.c$$
src/lexer/keep_last_type.c$$
src/lexer/lexer_backslash.c$$
src/lexer/lexer_bquote.c$$
src/lexer/lexer_curly_braces.c$$
src/lexer/lexer_default.c$$
src/lexer/lexer_delim.c$$
src/lexer/lexer_destroy.c$$
src/lexer/lexer_dquote.c$$
src/lexer/lexer_end.c$$
src/lexer/lexer_great.c$$
src/lexer/lexer_heredoc.c$$
src/lexer/lexer_init.c$$
src/lexer/lexer_less.c$$
src/lexer/lexer_lex.c$$
src/lexer/lexer_newline.c$$
src/lexer/lexer_number.c$$
src/lexer/lexer_paren.c$$
src/lexer/lexer_quote.c$$
src/lexer/lexer_sep.c$$
src/lexer/lexer_word.c$$
src/lexer/token_append.c$$
src/lexer/token_cmp_type.c$$
src/lexer/token_free.c$$
src/lexer/token_init.c$$
src/lexer/token_print.c$$
src/line_editing/control_features.c$$
src/line_editing/ft_prompt.c$$
src/line_editing/get_key.c$$
src/line_editing/readline.c$$
src/line_editing/resize.c$$
src/main/data_exit.c$$
src/main/data_init.c$$
src/main/data_singleton.c$$
src/main/ft_putast.c$$
src/main/main.c$$
src/main/shell_fds.c$$
src/main/shell_init.c$$
src/main/shell_sig.c$$
src/parser/add_bang.c$$
src/parser/add_case.c$$
src/parser/add_cmd.c$$
src/parser/add_condition.c$$
src/parser/add_func.c$$
src/parser/add_loop.c$$
src/parser/add_number.c$$
src/parser/add_redir.c$$
src/parser/add_sep.c$$
src/parser/add_subshell.c$$
src/parser/aggregate_sym.c$$
src/parser/build_tree.c$$
src/parser/do_parser_routine.c$$
src/parser/error_syntax.c$$
src/parser/eval_sym.c$$
src/parser/ft_parse.c$$
src/parser/heredoc_parser.c$$
src/parser/parser_destroy.c$$
src/parser/parser_init.c$$
src/parser/pop_stack.c$$
src/parser/produce_sym.c$$
src/parser/push_stack.c$$
src/parser/read_stack.c$$
src/parser/redir_init.c$$
src/parser/stack_init.c$$
src/parser/sym_free.c$$
src/parser/tree_func_free.c$$
src/parser/tree_wrapper.c$$
src/builtin/bt_env_opt.c$$
src/builtin/bt_read_get.c$$
src/builtin/bt_read_term.c$$
src/builtin/builtin_cd.c$$
src/builtin/builtin_echo.c$$
src/builtin/builtin_env.c$$
src/builtin/builtin_exit.c$$
src/builtin/builtin_export.c$$
src/builtin/builtin_func.c$$
src/builtin/builtin_hash.c$$
src/builtin/builtin_history.c$$
src/builtin/builtin_math.c$$
src/builtin/builtin_read.c$$
src/builtin/builtin_setenv.c$$
src/builtin/builtin_unset.c$$
src/builtin/builtin_unsetenv.c$$
src/builtin/is_builtin.c$$
src/completion/c_arrow.c$$
src/completion/c_clear.c$$
src/completion/c_find_abspath.c$$
src/completion/c_find_binary.c$$
src/completion/c_find_env.c$$
src/completion/c_find_files.c$$
src/completion/c_init.c$$
src/completion/c_match.c$$
src/completion/c_match_glob.c$$
src/completion/c_match_update.c$$
src/completion/c_misc.c$$
src/completion/c_output.c$$
src/completion/c_parser.c$$
src/completion/c_pathsolver.c$$
src/completion/c_printer.c$$
src/completion/c_sizing.c$$
src/completion/c_terminal.c$$
src/completion/completion.c$$
src/exec/ast_free.c$$
src/exec/bad_fd.c$$
src/exec/exec_ampersand.c$$
src/exec/exec_and_if.c$$
src/exec/exec_bang.c$$
src/exec/exec_case_branch.c$$
src/exec/exec_destroy.c$$
src/exec/exec_elif.c$$
src/exec/exec_else.c$$
src/exec/exec_func.c$$
src/exec/exec_init.c$$
src/exec/exec_leaf.c$$
src/exec/exec_or_if.c$$
src/exec/exec_pipe.c$$
src/exec/exec_semi.c$$
src/exec/exec_var.c$$
src/exec/fd_is_valid.c$$
src/exec/ft_exec.c$$
src/exec/ft_findexec.c$$
src/exec/is_function.c$$
src/exec/mark_process_status.c$$
src/exec/node_copy.c$$
src/exec/pfree_cmd.c$$
src/exec/pfree_cond.c$$
src/exec/pfree_func.c$$
src/exec/pfree_list.c$$
src/exec/pfree_subshell.c$$
src/exec/plaunch_brace.c$$
src/exec/plaunch_builtin.c$$
src/exec/plaunch_case.c$$
src/exec/plaunch_empty.c$$
src/exec/plaunch_file.c$$
src/exec/plaunch_for.c$$
src/exec/plaunch_function.c$$
src/exec/plaunch_if.c$$
src/exec/plaunch_subshell.c$$
src/exec/plaunch_until.c$$
src/exec/plaunch_while.c$$
src/exec/process_launch.c$$
src/exec/process_redirect.c$$
src/exec/process_set.c$$
src/exec/process_setgroup.c$$
src/exec/process_setsig.c$$
src/exec/pset_brace.c$$
src/exec/pset_case.c$$
src/exec/pset_cmd.c$$
src/exec/pset_for.c$$
src/exec/pset_if.c$$
src/exec/pset_subshell.c$$
src/exec/pset_until.c$$
src/exec/pset_while.c$$
src/exec/redir_copy.c$$
src/exec/redir_free.c$$
src/exec/redirect_dgreat.c$$
src/exec/redirect_dless.c$$
src/exec/redirect_great.c$$
src/exec/redirect_greatand.c$$
src/exec/redirect_less.c$$
src/exec/redirect_lessand.c$$
src/exec/set_exitstatus.c$$
src/exec/token_to_argv.c$$
src/glob/command_getoutput.c$$
src/glob/dir_glob.c$$
src/glob/esc_print.c$$
src/glob/expand_bquote.c$$
src/glob/expand_brace.c$$
src/glob/expand_esc.c$$
src/glob/expand_home.c$$
src/glob/expand_var.c$$
src/glob/ft_strsplit_esc.c$$
src/glob/ft_strsplit_spe.c$$
src/glob/gen_tab_esc.c$$
src/glob/glob.c$$
src/glob/is_char_esc.c$$
src/glob/match_pattern.c$$
src/glob/tab_esc_copy.c$$
src/glob/word_is_assignment.c$$
src/hash_table/ft_add_hash.c$$
src/hash_table/hash.c$$
src/hash_table/hash_free.c$$
src/hash_table/hash_str.c$$
src/hash_table/is_hash.c$$
src/history/add_str_in_history.c$$
src/history/history.c$$
src/history/history_parsing.c$$
src/history/history_parsing_toolz.c$$
src/history/history_parsing_toolz_2.c$$
src/history/list_toolz.c$$
src/history/surch_in_history.c$$
src/job_control/builtin_bg.c$$
src/job_control/builtin_fg.c$$
src/job_control/builtin_jobs.c$$
src/job_control/do_job_notification.c$$
src/job_control/has_running_job.c$$
src/job_control/has_stopped_job.c$$
src/job_control/job_addprocess.c$$
src/job_control/job_cmp_id.c$$
src/job_control/job_format.c$$
src/job_control/job_format_head.c$$
src/job_control/job_free.c$$
src/job_control/job_getprocess.c$$
src/job_control/job_getrank.c$$
src/job_control/job_hup_all.c$$
src/job_control/job_is_completed.c$$
src/job_control/job_is_stopped.c$$
src/job_control/job_notify_change.c$$
src/job_control/job_notify_new.c$$
src/job_control/job_remove.c$$
src/job_control/job_run.c$$
src/job_control/job_update_id.c$$
src/job_control/job_update_status.c$$
src/job_control/job_wait.c$$
src/job_control/jobc_destroy.c$$
src/job_control/jobc_init.c$$
src/job_control/mark_job_as_running.c$$
src/job_control/pprint_brace.c$$
src/job_control/pprint_case.c$$
src/job_control/pprint_cmd.c$$
src/job_control/pprint_for.c$$
src/job_control/pprint_function.c$$
src/job_control/pprint_if.c$$
src/job_control/pprint_subshell.c$$
src/job_control/pprint_until.c$$
src/job_control/pprint_while.c$$
src/job_control/process_cmp_pid.c$$
src/job_control/process_format.c$$
src/job_control/process_free.c$$
src/job_control/put_job_in_background.c$$
src/job_control/put_job_in_foreground.c$$
src/job_control/sigchld_handler.c$$
src/job_control/sigint_handler.c$$
src/job_control/sigtstp_handler.c$$
src/job_control/sigttin_handler.c$$
src/job_control/sigttou_handler.c$$
src/lexer/do_lexer_routine.c$$
src/lexer/get_lexer_stack.c$$
src/lexer/get_lexer_stack2.c$$
src/lexer/get_reserved_words.c$$
src/lexer/get_state_global.c$$
src/lexer/get_state_redir.c$$
src/lexer/insert_newline.c$$
src/lexer/isrw_delim.c$$
src/lexer/keep_last_type.c$$
src/lexer/lexer_backslash.c$$
src/lexer/lexer_bquote.c$$
src/lexer/lexer_curly_braces.c$$
src/lexer/lexer_default.c$$
src/lexer/lexer_delim.c$$
src/lexer/lexer_destroy.c$$
src/lexer/lexer_dquote.c$$
src/lexer/lexer_end.c$$
src/lexer/lexer_great.c$$
src/lexer/lexer_heredoc.c$$
src/lexer/lexer_init.c$$
src/lexer/lexer_less.c$$
src/lexer/lexer_lex.c$$
src/lexer/lexer_newline.c$$
src/lexer/lexer_number.c$$
src/lexer/lexer_paren.c$$
src/lexer/lexer_quote.c$$
src/lexer/lexer_sep.c$$
src/lexer/lexer_word.c$$
src/lexer/token_append.c$$
src/lexer/token_cmp_type.c$$
src/lexer/token_free.c$$
src/lexer/token_init.c$$
src/lexer/token_print.c$$
src/line_editing/control_features.c$$
src/line_editing/ft_prompt.c$$
src/line_editing/get_key.c$$
src/line_editing/readline.c$$
src/line_editing/resize.c$$
src/main/data_exit.c$$
src/main/data_init.c$$
src/main/data_singleton.c$$
src/main/ft_putast.c$$
src/main/main.c$$
src/main/shell_fds.c$$
src/main/shell_init.c$$
src/main/shell_sig.c$$
src/parser/add_bang.c$$
src/parser/add_case.c$$
src/parser/add_cmd.c$$
src/parser/add_condition.c$$
src/parser/add_func.c$$
src/parser/add_loop.c$$
src/parser/add_number.c$$
src/parser/add_redir.c$$
src/parser/add_sep.c$$
src/parser/add_subshell.c$$
src/parser/aggregate_sym.c$$
src/parser/build_tree.c$$
src/parser/do_parser_routine.c$$
src/parser/error_syntax.c$$
src/parser/eval_sym.c$$
src/parser/ft_parse.c$$
src/parser/heredoc_parser.c$$
src/parser/parser_destroy.c$$
src/parser/parser_init.c$$
src/parser/pop_stack.c$$
src/parser/produce_sym.c$$
src/parser/push_stack.c$$
src/parser/read_stack.c$$
src/parser/redir_init.c$$
src/parser/stack_init.c$$
src/parser/sym_free.c$$
src/parser/tree_func_free.c$$
src/parser/tree_wrapper.c$$

View file

@ -1 +1,19 @@
GAGNE /Users/ariard/Projects/42sh
/Users/ariard/Projects/42sh
42ShellTester
42sh
Makefile
README.md
STDBUG
another_file
auteur
donovan_segaults_06-02
file
includes
libft
objs
pdf
sample
scriptheader.sh
src
update_makefile.sh

View file

@ -6,7 +6,7 @@
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */ /* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/13 17:11:48 by jhalford #+# #+# */ /* Created: 2016/12/13 17:11:48 by jhalford #+# #+# */
/* Updated: 2017/03/29 13:59:26 by ariard ### ########.fr */ /* Updated: 2017/03/29 16:40:25 by ariard ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -194,6 +194,8 @@ enum e_sym
OTHER, OTHER,
REDIR, REDIR,
CMD, CMD,
AND_OR_MAJOR,
AND_OR_MINOR,
HEREDOCDATA, HEREDOCDATA,
HEREDOC_DELIM, HEREDOC_DELIM,
ALL = 200, ALL = 200,

View file

@ -2,3 +2,4 @@ echo "echo hello" >> sample/again.sh
echo hello echo hello
echo hello echo hello
echo hello echo hello
echo hello

View file

@ -6,7 +6,7 @@
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */ /* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/11 15:58:38 by ariard #+# #+# */ /* Created: 2017/03/11 15:58:38 by ariard #+# #+# */
/* Updated: 2017/03/29 16:19:14 by ariard ### ########.fr */ /* Updated: 2017/03/29 16:52:26 by ariard ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -22,8 +22,6 @@ static t_aggrematch g_aggrematch[] =
{TK_DSEMI, CMD_SUPERIOR, CLOSE_LIST, TK_PAREN_CLOSE}, {TK_DSEMI, CMD_SUPERIOR, CLOSE_LIST, TK_PAREN_CLOSE},
{TK_DSEMI, PIPE_SEMI_SEQUENCE, CLOSE_LIST, TK_PAREN_CLOSE}, {TK_DSEMI, PIPE_SEMI_SEQUENCE, CLOSE_LIST, TK_PAREN_CLOSE},
{TK_DSEMI, PIPE_CLOSE_SEQUENCE, CLOSE_LIST, TK_PAREN_CLOSE}, {TK_DSEMI, PIPE_CLOSE_SEQUENCE, CLOSE_LIST, TK_PAREN_CLOSE},
{TK_DSEMI, COMPOUND_LIST, CLOSE_LIST, TK_PAREN_CLOSE},
{TK_DSEMI, COMPLETE_COMMANDS, CLOSE_LIST, TK_PAREN_CLOSE},
{TK_PAREN_OPEN, TK_IN, PATTERN_CASE, 0}, {TK_PAREN_OPEN, TK_IN, PATTERN_CASE, 0},
{TK_PAREN_OPEN, CASE_LIST_NS, PATTERN_CASE, 0}, {TK_PAREN_OPEN, CASE_LIST_NS, PATTERN_CASE, 0},
{TK_PAREN_OPEN, CMD_SUPERIOR, OPEN_FUNC, 0}, {TK_PAREN_OPEN, CMD_SUPERIOR, OPEN_FUNC, 0},
@ -33,13 +31,11 @@ static t_aggrematch g_aggrematch[] =
{TK_PIPE, PIPE_CLOSE_SEQUENCE, SEQUENCE, PIPE_CLOSE_SEQUENCE}, {TK_PIPE, PIPE_CLOSE_SEQUENCE, SEQUENCE, PIPE_CLOSE_SEQUENCE},
{TK_FI, ELSE_PART, IF_CLAUSE, TK_IF}, {TK_FI, ELSE_PART, IF_CLAUSE, TK_IF},
{TK_FI, COMPOUND_LIST, IF_CLAUSE, COMPLETE_CONDITION}, {TK_FI, COMPOUND_LIST, IF_CLAUSE, COMPLETE_CONDITION},
{TK_FI, COMPLETE_COMMANDS, IF_CLAUSE, COMPLETE_CONDITION},
{TK_FI, COMPLETE_CONDITION, IF_CLAUSE, COMPLETE_CONDITION}, {TK_FI, COMPLETE_CONDITION, IF_CLAUSE, COMPLETE_CONDITION},
{TK_FI, CONDITION, IF_CLAUSE, COMPLETE_CONDITION}, {TK_FI, CONDITION, IF_CLAUSE, COMPLETE_CONDITION},
{TK_THEN, CONDITION, COMPLETE_CONDITION, CONDITION}, {TK_THEN, CONDITION, COMPLETE_CONDITION, CONDITION},
{TK_DONE, CMD_SUPERIOR, DO_GROUP, TK_DO}, {TK_DONE, CMD_SUPERIOR, DO_GROUP, TK_DO},
{TK_DONE, COMPOUND_LIST, DO_GROUP, TK_DO}, {TK_DONE, COMPOUND_LIST, DO_GROUP, TK_DO},
{TK_DONE, COMPLETE_COMMANDS, DO_GROUP, TK_DO},
{TK_ESAC, TK_IN, CASE_CLAUSE, TK_CASE}, {TK_ESAC, TK_IN, CASE_CLAUSE, TK_CASE},
{TK_ESAC, CASE_LIST_NS, CASE_CLAUSE, TK_CASE}, {TK_ESAC, CASE_LIST_NS, CASE_CLAUSE, TK_CASE},
{TK_PAREN_CLOSE, SUBSHELL, SUBSHELL, TK_PAREN_OPEN}, {TK_PAREN_CLOSE, SUBSHELL, SUBSHELL, TK_PAREN_OPEN},
@ -55,6 +51,12 @@ static t_aggrematch g_aggrematch[] =
{TK_RBRACE, PIPE_CLOSE_SEQUENCE, BRACE_CLAUSE, TK_LBRACE}, {TK_RBRACE, PIPE_CLOSE_SEQUENCE, BRACE_CLAUSE, TK_LBRACE},
{TK_RBRACE, COMPOUND_LIST, BRACE_CLAUSE, TK_LBRACE}, {TK_RBRACE, COMPOUND_LIST, BRACE_CLAUSE, TK_LBRACE},
{TK_RBRACE, CMD_SUPERIOR, BRACE_CLAUSE, TK_LBRACE}, {TK_RBRACE, CMD_SUPERIOR, BRACE_CLAUSE, TK_LBRACE},
{TK_AND_IF, CMD_SUPERIOR, AND_OR_MINOR, CMD_SUPERIOR},
{TK_AND_IF, PIPE_CLOSE_SEQUENCE, AND_OR_MINOR, PIPE_CLOSE_SEQUENCE},
{TK_AND_IF, PIPE_SEMI_SEQUENCE, AND_OR_MINOR, PIPE_SEMI_SEQUENCE},
{TK_OR_IF, PIPE_SEMI_SEQUENCE, AND_OR_MINOR, PIPE_SEMI_SEQUENCE},
{TK_OR_IF, CMD_SUPERIOR, AND_OR_MINOR, CMD_SUPERIOR},
{TK_OR_IF, PIPE_CLOSE_SEQUENCE, AND_OR_MINOR, PIPE_CLOSE_SEQUENCE},
{SEPARATOR_OP, CMD_SUPERIOR, SEPARATOR, 0}, {SEPARATOR_OP, CMD_SUPERIOR, SEPARATOR, 0},
{SEPARATOR_OP, COMPOUND_LIST, SEPARATOR, 0}, {SEPARATOR_OP, COMPOUND_LIST, SEPARATOR, 0},
{SEPARATOR_OP, CASE_LIST_NS, SEPARATOR, 0}, {SEPARATOR_OP, CASE_LIST_NS, SEPARATOR, 0},
@ -101,7 +103,6 @@ static t_aggrematch g_aggrematch[] =
{NEWLINE_LIST, CASE_LIST_NS, SEPARATOR, 0}, {NEWLINE_LIST, CASE_LIST_NS, SEPARATOR, 0},
{NEWLINE_LIST, COMPLETE_CONDITION, COMPLETE_CONDITION, COMPLETE_CONDITION}, {NEWLINE_LIST, COMPLETE_CONDITION, COMPLETE_CONDITION, COMPLETE_CONDITION},
{NEWLINE_LIST, CONDITION, CONDITION, CONDITION}, {NEWLINE_LIST, CONDITION, CONDITION, CONDITION},
{NEWLINE_LIST, AND_OR, AND_OR, AND_OR},
{NEWLINE_LIST, COMPLETE_COMMANDS, LINEBREAK, 0}, {NEWLINE_LIST, COMPLETE_COMMANDS, LINEBREAK, 0},
{NEWLINE_LIST, LINEBREAK, PROGRAM, LINEBREAK}, {NEWLINE_LIST, LINEBREAK, PROGRAM, LINEBREAK},
{NEWLINE_LIST, FOR_WORDLIST, SEQUENTIAL_SEP, 0}, {NEWLINE_LIST, FOR_WORDLIST, SEQUENTIAL_SEP, 0},
@ -194,7 +195,7 @@ static t_aggrematch g_aggrematch[] =
{CMD_NAME, CONDITION, CMD_SUPERIOR, 0}, {CMD_NAME, CONDITION, CMD_SUPERIOR, 0},
{CMD_NAME, TK_PIPE, CMD_SUPERIOR, 0}, {CMD_NAME, TK_PIPE, CMD_SUPERIOR, 0},
{CMD_NAME, SEQUENCE, CMD_SUPERIOR, 0}, {CMD_NAME, SEQUENCE, CMD_SUPERIOR, 0},
{CMD_NAME, AND_OR, CMD_SUPERIOR, 0}, {CMD_NAME, AND_OR_MAJOR, CMD_SUPERIOR, 0},
{CMD_SUPERIOR, SEQUENCE, PIPE_SEMI_SEQUENCE, SEQUENCE}, {CMD_SUPERIOR, SEQUENCE, PIPE_SEMI_SEQUENCE, SEQUENCE},
{SIMPLE_COMMAND, ALL, COMMAND, 0}, {SIMPLE_COMMAND, ALL, COMMAND, 0},
{DO_GROUP, NAME, FOR_CLAUSE, TK_FOR}, {DO_GROUP, NAME, FOR_CLAUSE, TK_FOR},
@ -225,6 +226,15 @@ static t_aggrematch g_aggrematch[] =
{SUBSHELL, ALL, COMPOUND_COMMAND, 0}, {SUBSHELL, ALL, COMPOUND_COMMAND, 0},
{BRACE_CLAUSE, ALL, COMPOUND_COMMAND, 0}, {BRACE_CLAUSE, ALL, COMPOUND_COMMAND, 0},
{COMPOUND_COMMAND, FUNC_NAME, COMMAND, FUNC_NAME}, {COMPOUND_COMMAND, FUNC_NAME, COMMAND, FUNC_NAME},
{AND_OR_MINOR, PIPE_SEMI_SEQUENCE, AND_OR_MAJOR, PIPE_SEMI_SEQUENCE},
{AND_OR_MINOR, PIPE_CLOSE_SEQUENCE, AND_OR_MAJOR, PIPE_CLOSE_SEQUENCE},
{AND_OR_MINOR, LINEBREAK, AND_OR_MAJOR, 0},
{AND_OR_MINOR, TK_PAREN_OPEN, AND_OR_MAJOR, 0},
{AND_OR_MINOR, TK_LBRACE, AND_OR_MAJOR, 0},
{AND_OR_MINOR, COMPOUND_LIST, AND_OR_MAJOR, 0},
{AND_OR_MINOR, COMPLETE_COMMANDS, AND_OR_MAJOR, 0},
{AND_OR_MINOR, AND_OR_MAJOR, AND_OR_MAJOR, 0},
{AND_OR_MINOR, TK_BANG, AND_OR_MAJOR, TK_BANG},
{COMMAND, SEQUENCE, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, SEQUENCE, PIPE_SEMI_SEQUENCE, 0},
{COMMAND, COMPOUND_LIST, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, COMPOUND_LIST, PIPE_SEMI_SEQUENCE, 0},
{COMMAND, CASE_LIST_NS, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, CASE_LIST_NS, PIPE_SEMI_SEQUENCE, 0},
@ -244,7 +254,7 @@ static t_aggrematch g_aggrematch[] =
{COMMAND, TK_PAREN_OPEN, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, TK_PAREN_OPEN, PIPE_SEMI_SEQUENCE, 0},
{COMMAND, TK_LBRACE, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, TK_LBRACE, PIPE_SEMI_SEQUENCE, 0},
{COMMAND, COMPLETE_COMMANDS, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, COMPLETE_COMMANDS, PIPE_SEMI_SEQUENCE, 0},
{COMMAND, AND_OR, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, AND_OR_MAJOR, PIPE_SEMI_SEQUENCE, 0},
{COMMAND, COMPLETE_CONDITION, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, COMPLETE_CONDITION, PIPE_SEMI_SEQUENCE, 0},
{COMMAND, CONDITION, PIPE_SEMI_SEQUENCE, 0}, {COMMAND, CONDITION, PIPE_SEMI_SEQUENCE, 0},
{COMPOUND_COMMAND, SEQUENCE, PIPE_CLOSE_SEQUENCE, 0}, {COMPOUND_COMMAND, SEQUENCE, PIPE_CLOSE_SEQUENCE, 0},
@ -266,11 +276,12 @@ static t_aggrematch g_aggrematch[] =
{COMPOUND_COMMAND, TK_PAREN_OPEN, PIPE_CLOSE_SEQUENCE, 0}, {COMPOUND_COMMAND, TK_PAREN_OPEN, PIPE_CLOSE_SEQUENCE, 0},
{COMPOUND_COMMAND, TK_LBRACE, PIPE_CLOSE_SEQUENCE, 0}, {COMPOUND_COMMAND, TK_LBRACE, PIPE_CLOSE_SEQUENCE, 0},
{COMPOUND_COMMAND, COMPLETE_COMMANDS, PIPE_CLOSE_SEQUENCE, 0}, {COMPOUND_COMMAND, COMPLETE_COMMANDS, PIPE_CLOSE_SEQUENCE, 0},
{COMPOUND_COMMAND, AND_OR, PIPE_CLOSE_SEQUENCE, 0}, {COMPOUND_COMMAND, AND_OR_MAJOR, PIPE_CLOSE_SEQUENCE, 0},
{COMPOUND_COMMAND, COMPLETE_CONDITION, PIPE_CLOSE_SEQUENCE, 0}, {COMPOUND_COMMAND, COMPLETE_CONDITION, PIPE_CLOSE_SEQUENCE, 0},
{COMPOUND_COMMAND, CONDITION, PIPE_CLOSE_SEQUENCE, 0}, {COMPOUND_COMMAND, CONDITION, PIPE_CLOSE_SEQUENCE, 0},
{END_COMMAND, SEQUENCE, PIPE_SEQUENCE, SEQUENCE}, {END_COMMAND, SEQUENCE, PIPE_SEQUENCE, SEQUENCE},
{END_COMMAND, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE}, {END_COMMAND, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE},
{END_COMMAND, AND_OR_MAJOR, AND_OR, AND_OR_MAJOR},
{END_COMMAND, TK_WHILE, PIPE_SEQUENCE, 0}, {END_COMMAND, TK_WHILE, PIPE_SEQUENCE, 0},
{END_COMMAND, TK_WHILE, PIPE_SEQUENCE, 0}, {END_COMMAND, TK_WHILE, PIPE_SEQUENCE, 0},
{END_COMMAND, TK_UNTIL, PIPE_SEQUENCE, 0}, {END_COMMAND, TK_UNTIL, PIPE_SEQUENCE, 0},
@ -289,7 +300,6 @@ static t_aggrematch g_aggrematch[] =
{END_COMMAND, CONDITION, PIPE_SEQUENCE, 0}, {END_COMMAND, CONDITION, PIPE_SEQUENCE, 0},
{END_COMMAND, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST}, {END_COMMAND, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST},
{END_COMMAND, CASE_LIST_NS, CASE_LIST_NS, CASE_LIST_NS}, {END_COMMAND, CASE_LIST_NS, CASE_LIST_NS, CASE_LIST_NS},
{END_COMMAND, AND_OR, COMPLETE_COMMANDS, 0},
{PIPE_SEMI_SEQUENCE, SEQUENCE, PIPE_SEMI_SEQUENCE, SEQUENCE}, {PIPE_SEMI_SEQUENCE, SEQUENCE, PIPE_SEMI_SEQUENCE, SEQUENCE},
{PIPE_CLOSE_SEQUENCE, SEQUENCE, PIPE_CLOSE_SEQUENCE, SEQUENCE}, {PIPE_CLOSE_SEQUENCE, SEQUENCE, PIPE_CLOSE_SEQUENCE, SEQUENCE},
{PIPE_SEQUENCE, TK_WHILE, PIPELINE, 0}, {PIPE_SEQUENCE, TK_WHILE, PIPELINE, 0},
@ -301,7 +311,7 @@ static t_aggrematch g_aggrematch[] =
{PIPE_SEQUENCE, TK_PAREN_OPEN, PIPELINE, 0}, {PIPE_SEQUENCE, TK_PAREN_OPEN, PIPELINE, 0},
{PIPE_SEQUENCE, TK_LBRACE, PIPELINE, 0}, {PIPE_SEQUENCE, TK_LBRACE, PIPELINE, 0},
{PIPE_SEQUENCE, COMPLETE_COMMANDS, PIPELINE, 0}, {PIPE_SEQUENCE, COMPLETE_COMMANDS, PIPELINE, 0},
{PIPE_SEQUENCE, AND_OR, PIPELINE, 0}, {PIPE_SEQUENCE, AND_OR_MAJOR, PIPELINE, 0},
{PIPE_SEQUENCE, TK_DO, PIPELINE, 0}, {PIPE_SEQUENCE, TK_DO, PIPELINE, 0},
{PIPE_SEQUENCE, TK_PAREN_CLOSE, PIPELINE, 0}, {PIPE_SEQUENCE, TK_PAREN_CLOSE, PIPELINE, 0},
{PIPE_SEQUENCE, TK_IF, PIPELINE, 0}, {PIPE_SEQUENCE, TK_IF, PIPELINE, 0},
@ -331,8 +341,8 @@ static t_aggrematch g_aggrematch[] =
{PIPELINE, SEPARATOR_OP, AND_OR, 0}, {PIPELINE, SEPARATOR_OP, AND_OR, 0},
{PIPELINE, COMPLETE_CONDITION, AND_OR, 0}, {PIPELINE, COMPLETE_CONDITION, AND_OR, 0},
{PIPELINE, CONDITION, AND_OR, 0}, {PIPELINE, CONDITION, AND_OR, 0},
{PIPELINE, AND_OR, COMPLETE_COMMANDS, 0}, {PIPELINE, AND_OR_MAJOR, AND_OR, AND_OR_MAJOR},
{AND_OR, AND_OR, AND_OR, AND_OR}, {AND_OR_MAJOR, AND_OR_MAJOR, AND_OR_MAJOR, AND_OR_MAJOR},
{AND_OR, TK_DO, COMPOUND_LIST, 0}, {AND_OR, TK_DO, COMPOUND_LIST, 0},
{AND_OR, TK_PAREN_CLOSE, COMPOUND_LIST, 0}, {AND_OR, TK_PAREN_CLOSE, COMPOUND_LIST, 0},
{AND_OR, TK_WHILE, COMPOUND_LIST, 0}, {AND_OR, TK_WHILE, COMPOUND_LIST, 0},
@ -347,7 +357,6 @@ static t_aggrematch g_aggrematch[] =
{AND_OR, CASE_LIST_NS, CASE_LIST_NS, 0}, {AND_OR, CASE_LIST_NS, CASE_LIST_NS, 0},
{AND_OR, COMPLETE_CONDITION, COMPOUND_LIST, 0}, {AND_OR, COMPLETE_CONDITION, COMPOUND_LIST, 0},
{AND_OR, CONDITION, COMPOUND_LIST, 0}, {AND_OR, CONDITION, COMPOUND_LIST, 0},
{AND_OR, COMPLETE_CONDITION, COMPOUND_LIST, 0},
{AND_OR, SEPARATOR_OP, LIST, LIST}, {AND_OR, SEPARATOR_OP, LIST, LIST},
{AND_OR, NEWLINE_LIST, LIST, 0}, {AND_OR, NEWLINE_LIST, LIST, 0},
{AND_OR, LINEBREAK, LIST, 0}, {AND_OR, LINEBREAK, LIST, 0},

View file

@ -6,7 +6,7 @@
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */ /* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/11 16:11:21 by ariard #+# #+# */ /* Created: 2017/03/11 16:11:21 by ariard #+# #+# */
/* Updated: 2017/03/29 16:19:59 by ariard ### ########.fr */ /* Updated: 2017/03/29 16:49:01 by ariard ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -16,7 +16,6 @@ static t_stackmatch g_stackmatch[] =
{ {
{TK_WORD, CMD_SUFFIX}, {TK_WORD, CMD_SUFFIX},
{TK_WORD, TK_PIPE}, {TK_WORD, TK_PIPE},
{TK_WORD, AND_OR},
{TK_WORD, TK_CASE}, {TK_WORD, TK_CASE},
{TK_WORD, WORDLIST}, {TK_WORD, WORDLIST},
{TK_WORD, LINEBREAK}, {TK_WORD, LINEBREAK},
@ -38,12 +37,12 @@ static t_stackmatch g_stackmatch[] =
{TK_IO_NUMBER, TK_LBRACE}, {TK_IO_NUMBER, TK_LBRACE},
{TK_IO_NUMBER, COMPLETE_COMMANDS}, {TK_IO_NUMBER, COMPLETE_COMMANDS},
{TK_IO_NUMBER, SEPARATOR_OP}, {TK_IO_NUMBER, SEPARATOR_OP},
{TK_IO_NUMBER, AND_OR},
{TK_IO_NUMBER, NEWLINE_LIST}, {TK_IO_NUMBER, NEWLINE_LIST},
{TK_IO_NUMBER, PIPE_SEMI_SEQUENCE}, {TK_IO_NUMBER, PIPE_SEMI_SEQUENCE},
{TK_IO_NUMBER, PIPE_CLOSE_SEQUENCE}, {TK_IO_NUMBER, PIPE_CLOSE_SEQUENCE},
{TK_IO_NUMBER, SEQUENCE}, {TK_IO_NUMBER, SEQUENCE},
{TK_IO_NUMBER, CMD_SUPERIOR}, {TK_IO_NUMBER, CMD_SUPERIOR},
{TK_IO_NUMBER, AND_OR_MAJOR},
{TK_IO_NUMBER, TK_WHILE}, {TK_IO_NUMBER, TK_WHILE},
{TK_IO_NUMBER, TK_UNTIL}, {TK_IO_NUMBER, TK_UNTIL},
{TK_IO_NUMBER, TK_IF}, {TK_IO_NUMBER, TK_IF},
@ -84,12 +83,12 @@ static t_stackmatch g_stackmatch[] =
{TK_LESS, COMPLETE_COMMANDS}, {TK_LESS, COMPLETE_COMMANDS},
{TK_LESS, TK_BANG}, {TK_LESS, TK_BANG},
{TK_LESS, SEPARATOR_OP}, {TK_LESS, SEPARATOR_OP},
{TK_LESS, AND_OR},
{TK_LESS, NEWLINE_LIST}, {TK_LESS, NEWLINE_LIST},
{TK_LESS, PIPE_SEMI_SEQUENCE}, {TK_LESS, PIPE_SEMI_SEQUENCE},
{TK_LESS, PIPE_CLOSE_SEQUENCE}, {TK_LESS, PIPE_CLOSE_SEQUENCE},
{TK_LESS, SEQUENCE}, {TK_LESS, SEQUENCE},
{TK_LESS, CMD_SUPERIOR}, {TK_LESS, CMD_SUPERIOR},
{TK_LESS, AND_OR_MAJOR},
{TK_LESS, TK_WHILE}, {TK_LESS, TK_WHILE},
{TK_LESS, TK_UNTIL}, {TK_LESS, TK_UNTIL},
{TK_LESS, TK_IF}, {TK_LESS, TK_IF},
@ -101,6 +100,7 @@ static t_stackmatch g_stackmatch[] =
{TK_LESS, CONDITION}, {TK_LESS, CONDITION},
{TK_LESS, COMPOUND_LIST}, {TK_LESS, COMPOUND_LIST},
{TK_LESS, CMD_SUPERIOR}, {TK_LESS, CMD_SUPERIOR},
{TK_LESS, AND_OR_MAJOR},
{TK_GREAT, TK_IO_NUMBER}, {TK_GREAT, TK_IO_NUMBER},
{TK_GREAT, REDIRECT_LIST}, {TK_GREAT, REDIRECT_LIST},
{TK_GREAT, CMD_SUFFIX}, {TK_GREAT, CMD_SUFFIX},
@ -113,12 +113,12 @@ static t_stackmatch g_stackmatch[] =
{TK_GREAT, TK_LBRACE}, {TK_GREAT, TK_LBRACE},
{TK_GREAT, COMPLETE_COMMANDS}, {TK_GREAT, COMPLETE_COMMANDS},
{TK_GREAT, SEPARATOR_OP}, {TK_GREAT, SEPARATOR_OP},
{TK_GREAT, AND_OR},
{TK_GREAT, NEWLINE_LIST}, {TK_GREAT, NEWLINE_LIST},
{TK_GREAT, PIPE_SEMI_SEQUENCE}, {TK_GREAT, PIPE_SEMI_SEQUENCE},
{TK_GREAT, PIPE_CLOSE_SEQUENCE}, {TK_GREAT, PIPE_CLOSE_SEQUENCE},
{TK_GREAT, SEQUENCE}, {TK_GREAT, SEQUENCE},
{TK_GREAT, CMD_SUPERIOR}, {TK_GREAT, CMD_SUPERIOR},
{TK_GREAT, AND_OR_MAJOR},
{TK_GREAT, TK_WHILE}, {TK_GREAT, TK_WHILE},
{TK_GREAT, TK_UNTIL}, {TK_GREAT, TK_UNTIL},
{TK_GREAT, TK_IF}, {TK_GREAT, TK_IF},
@ -130,6 +130,7 @@ static t_stackmatch g_stackmatch[] =
{TK_GREAT, CONDITION}, {TK_GREAT, CONDITION},
{TK_GREAT, COMPOUND_LIST}, {TK_GREAT, COMPOUND_LIST},
{TK_GREAT, CMD_SUPERIOR}, {TK_GREAT, CMD_SUPERIOR},
{TK_GREAT, AND_OR_MAJOR},
{TK_DLESS, TK_IO_NUMBER}, {TK_DLESS, TK_IO_NUMBER},
{TK_DLESS, REDIRECT_LIST}, {TK_DLESS, REDIRECT_LIST},
{TK_DLESS, CMD_SUFFIX}, {TK_DLESS, CMD_SUFFIX},
@ -142,12 +143,12 @@ static t_stackmatch g_stackmatch[] =
{TK_DLESS, COMPLETE_COMMANDS}, {TK_DLESS, COMPLETE_COMMANDS},
{TK_DLESS, TK_BANG}, {TK_DLESS, TK_BANG},
{TK_DLESS, SEPARATOR_OP}, {TK_DLESS, SEPARATOR_OP},
{TK_DLESS, AND_OR},
{TK_DLESS, NEWLINE_LIST}, {TK_DLESS, NEWLINE_LIST},
{TK_DLESS, PIPE_SEMI_SEQUENCE}, {TK_DLESS, PIPE_SEMI_SEQUENCE},
{TK_DLESS, PIPE_CLOSE_SEQUENCE}, {TK_DLESS, PIPE_CLOSE_SEQUENCE},
{TK_DLESS, SEQUENCE}, {TK_DLESS, SEQUENCE},
{TK_DLESS, CMD_SUPERIOR}, {TK_DLESS, CMD_SUPERIOR},
{TK_DLESS, AND_OR_MAJOR},
{TK_DLESS, TK_WHILE}, {TK_DLESS, TK_WHILE},
{TK_DLESS, TK_UNTIL}, {TK_DLESS, TK_UNTIL},
{TK_DLESS, TK_IF}, {TK_DLESS, TK_IF},
@ -159,6 +160,7 @@ static t_stackmatch g_stackmatch[] =
{TK_DLESS, CONDITION}, {TK_DLESS, CONDITION},
{TK_DLESS, COMPOUND_LIST}, {TK_DLESS, COMPOUND_LIST},
{TK_DLESS, CMD_SUPERIOR}, {TK_DLESS, CMD_SUPERIOR},
{TK_DLESS, AND_OR_MAJOR},
{TK_DGREAT, TK_IO_NUMBER}, {TK_DGREAT, TK_IO_NUMBER},
{TK_DGREAT, REDIRECT_LIST}, {TK_DGREAT, REDIRECT_LIST},
{TK_DGREAT, CMD_SUFFIX}, {TK_DGREAT, CMD_SUFFIX},
@ -171,12 +173,12 @@ static t_stackmatch g_stackmatch[] =
{TK_DGREAT, TK_LBRACE}, {TK_DGREAT, TK_LBRACE},
{TK_DGREAT, COMPLETE_COMMANDS}, {TK_DGREAT, COMPLETE_COMMANDS},
{TK_DGREAT, SEPARATOR_OP}, {TK_DGREAT, SEPARATOR_OP},
{TK_DGREAT, AND_OR},
{TK_DGREAT, NEWLINE_LIST}, {TK_DGREAT, NEWLINE_LIST},
{TK_DGREAT, PIPE_SEMI_SEQUENCE}, {TK_DGREAT, PIPE_SEMI_SEQUENCE},
{TK_DGREAT, PIPE_CLOSE_SEQUENCE}, {TK_DGREAT, PIPE_CLOSE_SEQUENCE},
{TK_DGREAT, SEQUENCE}, {TK_DGREAT, SEQUENCE},
{TK_DGREAT, CMD_SUPERIOR}, {TK_DGREAT, CMD_SUPERIOR},
{TK_DGREAT, AND_OR_MAJOR},
{TK_DGREAT, TK_WHILE}, {TK_DGREAT, TK_WHILE},
{TK_DGREAT, TK_UNTIL}, {TK_DGREAT, TK_UNTIL},
{TK_DGREAT, TK_IF}, {TK_DGREAT, TK_IF},
@ -188,6 +190,7 @@ static t_stackmatch g_stackmatch[] =
{TK_DGREAT, CONDITION}, {TK_DGREAT, CONDITION},
{TK_DGREAT, COMPOUND_LIST}, {TK_DGREAT, COMPOUND_LIST},
{TK_DGREAT, CMD_SUPERIOR}, {TK_DGREAT, CMD_SUPERIOR},
{TK_DGREAT, AND_OR_MAJOR},
{TK_LESSAND, TK_IO_NUMBER}, {TK_LESSAND, TK_IO_NUMBER},
{TK_LESSAND, REDIRECT_LIST}, {TK_LESSAND, REDIRECT_LIST},
{TK_LESSAND, CMD_SUFFIX}, {TK_LESSAND, CMD_SUFFIX},
@ -200,12 +203,12 @@ static t_stackmatch g_stackmatch[] =
{TK_LESSAND, TK_LBRACE}, {TK_LESSAND, TK_LBRACE},
{TK_LESSAND, COMPLETE_COMMANDS}, {TK_LESSAND, COMPLETE_COMMANDS},
{TK_LESSAND, SEPARATOR_OP}, {TK_LESSAND, SEPARATOR_OP},
{TK_LESSAND, AND_OR},
{TK_LESSAND, NEWLINE_LIST}, {TK_LESSAND, NEWLINE_LIST},
{TK_LESSAND, PIPE_SEMI_SEQUENCE}, {TK_LESSAND, PIPE_SEMI_SEQUENCE},
{TK_LESSAND, PIPE_CLOSE_SEQUENCE}, {TK_LESSAND, PIPE_CLOSE_SEQUENCE},
{TK_LESSAND, SEQUENCE}, {TK_LESSAND, SEQUENCE},
{TK_LESSAND, CMD_SUPERIOR}, {TK_LESSAND, CMD_SUPERIOR},
{TK_LESSAND, AND_OR_MAJOR},
{TK_LESSAND, TK_WHILE}, {TK_LESSAND, TK_WHILE},
{TK_LESSAND, TK_UNTIL}, {TK_LESSAND, TK_UNTIL},
{TK_LESSAND, TK_IF}, {TK_LESSAND, TK_IF},
@ -217,6 +220,7 @@ static t_stackmatch g_stackmatch[] =
{TK_LESSAND, CONDITION}, {TK_LESSAND, CONDITION},
{TK_LESSAND, COMPOUND_LIST}, {TK_LESSAND, COMPOUND_LIST},
{TK_LESSAND, CMD_SUPERIOR}, {TK_LESSAND, CMD_SUPERIOR},
{TK_LESSAND, AND_OR_MAJOR},
{TK_GREATAND, TK_IO_NUMBER}, {TK_GREATAND, TK_IO_NUMBER},
{TK_GREATAND, REDIRECT_LIST}, {TK_GREATAND, REDIRECT_LIST},
{TK_GREATAND, CMD_SUFFIX}, {TK_GREATAND, CMD_SUFFIX},
@ -229,12 +233,12 @@ static t_stackmatch g_stackmatch[] =
{TK_GREATAND, TK_LBRACE}, {TK_GREATAND, TK_LBRACE},
{TK_GREATAND, COMPLETE_COMMANDS}, {TK_GREATAND, COMPLETE_COMMANDS},
{TK_GREATAND, SEPARATOR_OP}, {TK_GREATAND, SEPARATOR_OP},
{TK_GREATAND, AND_OR},
{TK_GREATAND, NEWLINE_LIST}, {TK_GREATAND, NEWLINE_LIST},
{TK_GREATAND, PIPE_SEMI_SEQUENCE}, {TK_GREATAND, PIPE_SEMI_SEQUENCE},
{TK_GREATAND, PIPE_CLOSE_SEQUENCE}, {TK_GREATAND, PIPE_CLOSE_SEQUENCE},
{TK_GREATAND, SEQUENCE}, {TK_GREATAND, SEQUENCE},
{TK_GREATAND, CMD_SUPERIOR}, {TK_GREATAND, CMD_SUPERIOR},
{TK_GREATAND, AND_OR_MAJOR},
{TK_GREATAND, TK_WHILE}, {TK_GREATAND, TK_WHILE},
{TK_GREATAND, TK_UNTIL}, {TK_GREATAND, TK_UNTIL},
{TK_GREATAND, TK_IF}, {TK_GREATAND, TK_IF},
@ -246,6 +250,7 @@ static t_stackmatch g_stackmatch[] =
{TK_GREATAND, CONDITION}, {TK_GREATAND, CONDITION},
{TK_GREATAND, COMPOUND_LIST}, {TK_GREATAND, COMPOUND_LIST},
{TK_GREATAND, CMD_SUPERIOR}, {TK_GREATAND, CMD_SUPERIOR},
{TK_GREATAND, AND_OR_MAJOR},
{TK_IF, LINEBREAK}, {TK_IF, LINEBREAK},
{TK_IF, TK_BANG}, {TK_IF, TK_BANG},
{TK_IF, TK_PAREN_OPEN}, {TK_IF, TK_PAREN_OPEN},
@ -253,7 +258,6 @@ static t_stackmatch g_stackmatch[] =
{TK_IF, FUNC_NAME}, {TK_IF, FUNC_NAME},
{TK_IF, COMPLETE_COMMANDS}, {TK_IF, COMPLETE_COMMANDS},
{TK_IF, SEPARATOR_OP}, {TK_IF, SEPARATOR_OP},
{TK_IF, AND_OR},
{TK_IF, NEWLINE_LIST}, {TK_IF, NEWLINE_LIST},
{TK_IF, SEQUENCE}, {TK_IF, SEQUENCE},
{TK_IF, TK_WHILE}, {TK_IF, TK_WHILE},
@ -282,15 +286,13 @@ static t_stackmatch g_stackmatch[] =
{TK_FI, CMD_SUPERIOR}, {TK_FI, CMD_SUPERIOR},
{TK_FI, END_COMMAND}, {TK_FI, END_COMMAND},
{TK_FI, CONDITION}, {TK_FI, CONDITION},
{TK_FI, COMPLETE_CONDITION},
{TK_FI, COMPLETE_COMMANDS},
{TK_DO, CMD_SUPERIOR}, {TK_DO, CMD_SUPERIOR},
{TK_FI, COMPLETE_CONDITION},
{TK_DO, COMPOUND_LIST}, {TK_DO, COMPOUND_LIST},
{TK_DO, NAME}, {TK_DO, NAME},
{TK_DO, SEQUENTIAL_SEP}, {TK_DO, SEQUENTIAL_SEP},
{TK_DONE, CMD_SUPERIOR}, {TK_DONE, CMD_SUPERIOR},
{TK_DONE, COMPOUND_LIST}, {TK_DONE, COMPOUND_LIST},
{TK_DONE, COMPLETE_COMMANDS},
{TK_DONE, END_COMMAND}, {TK_DONE, END_COMMAND},
{TK_CASE, LINEBREAK}, {TK_CASE, LINEBREAK},
{TK_CASE, TK_BANG}, {TK_CASE, TK_BANG},
@ -313,7 +315,6 @@ static t_stackmatch g_stackmatch[] =
{TK_CASE, COMPOUND_LIST}, {TK_CASE, COMPOUND_LIST},
{TK_CASE, NEWLINE_LIST}, {TK_CASE, NEWLINE_LIST},
{TK_CASE, SEPARATOR_OP}, {TK_CASE, SEPARATOR_OP},
{TK_CASE, AND_OR},
{TK_CASE, SEQUENCE}, {TK_CASE, SEQUENCE},
{TK_IN, TK_WORD}, {TK_IN, TK_WORD},
{TK_IN, NAME}, {TK_IN, NAME},
@ -327,7 +328,6 @@ static t_stackmatch g_stackmatch[] =
{TK_WHILE, COMPLETE_COMMANDS}, {TK_WHILE, COMPLETE_COMMANDS},
{TK_WHILE, TK_BANG}, {TK_WHILE, TK_BANG},
{TK_WHILE, SEPARATOR_OP}, {TK_WHILE, SEPARATOR_OP},
{TK_WHILE, AND_OR},
{TK_WHILE, NEWLINE_LIST}, {TK_WHILE, NEWLINE_LIST},
{TK_WHILE, SEQUENCE}, {TK_WHILE, SEQUENCE},
{TK_WHILE, TK_DO}, {TK_WHILE, TK_DO},
@ -350,7 +350,6 @@ static t_stackmatch g_stackmatch[] =
{TK_UNTIL, COMPLETE_COMMANDS}, {TK_UNTIL, COMPLETE_COMMANDS},
{TK_UNTIL, TK_BANG}, {TK_UNTIL, TK_BANG},
{TK_UNTIL, SEPARATOR_OP}, {TK_UNTIL, SEPARATOR_OP},
{TK_UNTIL, AND_OR},
{TK_UNTIL, NEWLINE_LIST}, {TK_UNTIL, NEWLINE_LIST},
{TK_UNTIL, SEQUENCE}, {TK_UNTIL, SEQUENCE},
{TK_UNTIL, TK_DO}, {TK_UNTIL, TK_DO},
@ -373,7 +372,6 @@ static t_stackmatch g_stackmatch[] =
{FUNC_NAME, FUNC_NAME}, {FUNC_NAME, FUNC_NAME},
{FUNC_NAME, COMPLETE_COMMANDS}, {FUNC_NAME, COMPLETE_COMMANDS},
{FUNC_NAME, SEPARATOR_OP}, {FUNC_NAME, SEPARATOR_OP},
{FUNC_NAME, AND_OR},
{FUNC_NAME, NEWLINE_LIST}, {FUNC_NAME, NEWLINE_LIST},
{FUNC_NAME, SEQUENCE}, {FUNC_NAME, SEQUENCE},
{FUNC_NAME, TK_WHILE}, {FUNC_NAME, TK_WHILE},
@ -396,7 +394,6 @@ static t_stackmatch g_stackmatch[] =
{TK_FOR, FUNC_NAME}, {TK_FOR, FUNC_NAME},
{TK_FOR, COMPLETE_COMMANDS}, {TK_FOR, COMPLETE_COMMANDS},
{TK_FOR, SEPARATOR_OP}, {TK_FOR, SEPARATOR_OP},
{TK_FOR, AND_OR},
{TK_FOR, NEWLINE_LIST}, {TK_FOR, NEWLINE_LIST},
{TK_FOR, SEQUENCE}, {TK_FOR, SEQUENCE},
{TK_FOR, TK_DO}, {TK_FOR, TK_DO},
@ -418,9 +415,9 @@ static t_stackmatch g_stackmatch[] =
{TK_LBRACE, TK_LBRACE}, {TK_LBRACE, TK_LBRACE},
{TK_LBRACE, TK_PAREN_OPEN}, {TK_LBRACE, TK_PAREN_OPEN},
{TK_LBRACE, SEPARATOR_OP}, {TK_LBRACE, SEPARATOR_OP},
{TK_LBRACE, AND_OR},
{TK_LBRACE, NEWLINE_LIST}, {TK_LBRACE, NEWLINE_LIST},
{TK_LBRACE, SEQUENCE}, {TK_LBRACE, SEQUENCE},
{TK_LBRACE, AND_OR_MAJOR},
{TK_LBRACE, TK_WHILE}, {TK_LBRACE, TK_WHILE},
{TK_LBRACE, FUNC_NAME}, {TK_LBRACE, FUNC_NAME},
{TK_LBRACE, TK_UNTIL}, {TK_LBRACE, TK_UNTIL},
@ -436,11 +433,9 @@ static t_stackmatch g_stackmatch[] =
{TK_LBRACE, CONDITION}, {TK_LBRACE, CONDITION},
{TK_LBRACE, TK_IN}, {TK_LBRACE, TK_IN},
{TK_LBRACE, TK_PIPE}, {TK_LBRACE, TK_PIPE},
{TK_LBRACE, AND_OR},
{TK_RBRACE, TK_SEMI}, {TK_RBRACE, TK_SEMI},
{TK_RBRACE, END_COMMAND}, {TK_RBRACE, END_COMMAND},
{TK_RBRACE, SEPARATOR_OP}, {TK_RBRACE, SEPARATOR_OP},
{TK_RBRACE, AND_OR},
{TK_RBRACE, WORD}, {TK_RBRACE, WORD},
{TK_RBRACE, IN}, {TK_RBRACE, IN},
{TK_RBRACE, TK_AND_IF}, {TK_RBRACE, TK_AND_IF},
@ -463,20 +458,18 @@ static t_stackmatch g_stackmatch[] =
{TK_BANG, TK_LBRACE}, {TK_BANG, TK_LBRACE},
{TK_BANG, COMPLETE_COMMANDS}, {TK_BANG, COMPLETE_COMMANDS},
{TK_BANG, SEPARATOR_OP}, {TK_BANG, SEPARATOR_OP},
{TK_BANG, AND_OR},
{TK_BANG, NEWLINE_LIST}, {TK_BANG, NEWLINE_LIST},
{TK_IN, LINEBREAK}, {TK_IN, LINEBREAK},
{TK_SEMI, NAME}, {TK_SEMI, NAME},
{TK_SEMI, IN}, {TK_SEMI, IN},
{TK_SEMI, WORDLIST}, {TK_SEMI, WORDLIST},
{TK_SEMI, LIST}, {TK_SEMI, LIST},
{TK_SEMI, TERM},
{TK_SEMI, CMD_NAME}, {TK_SEMI, CMD_NAME},
{TK_SEMI, PROGRAM}, {TK_SEMI, PROGRAM},
{TK_SEMI, FOR_WORDLIST}, {TK_SEMI, FOR_WORDLIST},
{TK_AMP, LIST}, {TK_AMP, LIST},
{TK_AMP, TERM}, {TK_AMP, TERM},
{TK_AMP, PROGRAM},
{TK_AMP, CMD_NAME},
{TK_PIPE, PATTERN}, {TK_PIPE, PATTERN},
{TK_PIPE, CMD_SUPERIOR}, {TK_PIPE, CMD_SUPERIOR},
{TK_PIPE, PIPE_SEMI_SEQUENCE}, {TK_PIPE, PIPE_SEMI_SEQUENCE},
@ -488,10 +481,10 @@ static t_stackmatch g_stackmatch[] =
{TK_PAREN_OPEN, TK_BANG}, {TK_PAREN_OPEN, TK_BANG},
{TK_PAREN_OPEN, TK_PAREN_OPEN}, {TK_PAREN_OPEN, TK_PAREN_OPEN},
{TK_PAREN_OPEN, SEPARATOR_OP}, {TK_PAREN_OPEN, SEPARATOR_OP},
{TK_PAREN_OPEN, AND_OR},
{TK_PAREN_OPEN, NEWLINE_LIST}, {TK_PAREN_OPEN, NEWLINE_LIST},
{TK_PAREN_OPEN, SEQUENCE}, {TK_PAREN_OPEN, SEQUENCE},
{TK_PAREN_OPEN, FUNC_NAME}, {TK_PAREN_OPEN, FUNC_NAME},
{TK_PAREN_OPEN, AND_OR_MAJOR},
{TK_PAREN_OPEN, TK_WHILE}, {TK_PAREN_OPEN, TK_WHILE},
{TK_PAREN_OPEN, TK_LBRACE}, {TK_PAREN_OPEN, TK_LBRACE},
{TK_PAREN_OPEN, FUNC_NAME}, {TK_PAREN_OPEN, FUNC_NAME},
@ -515,6 +508,7 @@ static t_stackmatch g_stackmatch[] =
{SEQUENTIAL_SEP, FOR_WORDLIST}, {SEQUENTIAL_SEP, FOR_WORDLIST},
{END_COMMAND, SEQUENCE}, {END_COMMAND, SEQUENCE},
{END_COMMAND, PIPE_SEMI_SEQUENCE}, {END_COMMAND, PIPE_SEMI_SEQUENCE},
{END_COMMAND, AND_OR_MAJOR},
{END_COMMAND, TK_WHILE}, {END_COMMAND, TK_WHILE},
{END_COMMAND, FUNC_NAME}, {END_COMMAND, FUNC_NAME},
{END_COMMAND, TK_UNTIL}, {END_COMMAND, TK_UNTIL},
@ -533,7 +527,6 @@ static t_stackmatch g_stackmatch[] =
{END_COMMAND, CASE_LIST_NS}, {END_COMMAND, CASE_LIST_NS},
{END_COMMAND, COMPLETE_CONDITION}, {END_COMMAND, COMPLETE_CONDITION},
{END_COMMAND, CONDITION}, {END_COMMAND, CONDITION},
{END_COMMAND, AND_OR},
{SEPARATOR, CMD_SUPERIOR}, {SEPARATOR, CMD_SUPERIOR},
{SEPARATOR, TERM}, {SEPARATOR, TERM},
{SEPARATOR, COMPOUND_LIST}, {SEPARATOR, COMPOUND_LIST},
@ -542,6 +535,7 @@ static t_stackmatch g_stackmatch[] =
{SEPARATOR, PIPE_CLOSE_SEQUENCE}, {SEPARATOR, PIPE_CLOSE_SEQUENCE},
{SEPARATOR_OP, CMD_SUPERIOR}, {SEPARATOR_OP, CMD_SUPERIOR},
{SEPARATOR_OP, LIST}, {SEPARATOR_OP, LIST},
{SEPARATOR_OP, TERM},
{SEPARATOR_OP, CASE_LIST_NS}, {SEPARATOR_OP, CASE_LIST_NS},
{SEPARATOR_OP, COMPOUND_LIST}, {SEPARATOR_OP, COMPOUND_LIST},
{SEPARATOR_OP, PIPE_SEMI_SEQUENCE}, {SEPARATOR_OP, PIPE_SEMI_SEQUENCE},
@ -549,12 +543,12 @@ static t_stackmatch g_stackmatch[] =
{LINEBREAK, TK_SEMI}, {LINEBREAK, TK_SEMI},
{LINEBREAK, END_COMMAND}, {LINEBREAK, END_COMMAND},
{LINEBREAK, SEPARATOR_OP}, {LINEBREAK, SEPARATOR_OP},
{LINEBREAK, AND_OR},
{LINEBREAK, TK_PAREN_CLOSE}, {LINEBREAK, TK_PAREN_CLOSE},
{LINEBREAK, WORD}, {LINEBREAK, WORD},
{LINEBREAK, IN}, {LINEBREAK, IN},
{LINEBREAK, TK_AND_IF},
{LINEBREAK, TK_OR_IF},
{LINEBREAK, TK_PIPE}, {LINEBREAK, TK_PIPE},
{LINEBREAK, AND_OR},
{LINEBREAK, LINEBREAK}, {LINEBREAK, LINEBREAK},
{LINEBREAK, TK_BANG}, {LINEBREAK, TK_BANG},
{LINEBREAK, COMPLETE_COMMANDS}, {LINEBREAK, COMPLETE_COMMANDS},
@ -569,7 +563,6 @@ static t_stackmatch g_stackmatch[] =
{TK_PAREN_CLOSE, TK_SEMI}, {TK_PAREN_CLOSE, TK_SEMI},
{TK_PAREN_CLOSE, END_COMMAND}, {TK_PAREN_CLOSE, END_COMMAND},
{TK_PAREN_CLOSE, SEPARATOR_OP}, {TK_PAREN_CLOSE, SEPARATOR_OP},
{TK_PAREN_CLOSE, AND_OR},
{TK_PAREN_CLOSE, WORD}, {TK_PAREN_CLOSE, WORD},
{TK_PAREN_CLOSE, IN}, {TK_PAREN_CLOSE, IN},
{TK_PAREN_CLOSE, TK_PIPE}, {TK_PAREN_CLOSE, TK_PIPE},
@ -589,7 +582,6 @@ static t_stackmatch g_stackmatch[] =
{TK_RBRACE, TK_SEMI}, {TK_RBRACE, TK_SEMI},
{TK_RBRACE, END_COMMAND}, {TK_RBRACE, END_COMMAND},
{TK_RBRACE, SEPARATOR_OP}, {TK_RBRACE, SEPARATOR_OP},
{TK_RBRACE, AND_OR},
{TK_RBRACE, WORD}, {TK_RBRACE, WORD},
{TK_RBRACE, IN}, {TK_RBRACE, IN},
{TK_RBRACE, TK_PIPE}, {TK_RBRACE, TK_PIPE},
@ -622,7 +614,6 @@ static t_stackmatch g_stackmatch[] =
{NEWLINE_LIST, TK_ELSE}, {NEWLINE_LIST, TK_ELSE},
{NEWLINE_LIST, CMD_NAME}, {NEWLINE_LIST, CMD_NAME},
{NEWLINE_LIST, NEWLINE_LIST}, {NEWLINE_LIST, NEWLINE_LIST},
{NEWLINE_LIST, AND_OR},
{NEWLINE_LIST, NAME}, {NEWLINE_LIST, NAME},
{NEWLINE_LIST, IN}, {NEWLINE_LIST, IN},
{NEWLINE_LIST, WORDLIST}, {NEWLINE_LIST, WORDLIST},
@ -654,12 +645,12 @@ static t_stackmatch g_stackmatch[] =
{IO_HERE, TK_LBRACE}, {IO_HERE, TK_LBRACE},
{IO_HERE, COMPLETE_COMMANDS}, {IO_HERE, COMPLETE_COMMANDS},
{IO_HERE, SEPARATOR_OP}, {IO_HERE, SEPARATOR_OP},
{IO_HERE, AND_OR},
{IO_HERE, NEWLINE_LIST}, {IO_HERE, NEWLINE_LIST},
{IO_HERE, PIPE_SEMI_SEQUENCE}, {IO_HERE, PIPE_SEMI_SEQUENCE},
{IO_HERE, PIPE_CLOSE_SEQUENCE}, {IO_HERE, PIPE_CLOSE_SEQUENCE},
{IO_HERE, SEQUENCE}, {IO_HERE, SEQUENCE},
{IO_HERE, CMD_SUPERIOR}, {IO_HERE, CMD_SUPERIOR},
{IO_HERE, AND_OR_MAJOR},
{IO_HERE, TK_WHILE}, {IO_HERE, TK_WHILE},
{IO_HERE, TK_UNTIL}, {IO_HERE, TK_UNTIL},
{IO_HERE, TK_IF}, {IO_HERE, TK_IF},
@ -688,12 +679,12 @@ static t_stackmatch g_stackmatch[] =
{IO_FILE, TK_BANG}, {IO_FILE, TK_BANG},
{IO_FILE, COMPLETE_COMMANDS}, {IO_FILE, COMPLETE_COMMANDS},
{IO_FILE, SEPARATOR_OP}, {IO_FILE, SEPARATOR_OP},
{IO_FILE, AND_OR},
{IO_FILE, NEWLINE_LIST}, {IO_FILE, NEWLINE_LIST},
{IO_FILE, PIPE_SEMI_SEQUENCE}, {IO_FILE, PIPE_SEMI_SEQUENCE},
{IO_FILE, PIPE_CLOSE_SEQUENCE}, {IO_FILE, PIPE_CLOSE_SEQUENCE},
{IO_FILE, SEQUENCE}, {IO_FILE, SEQUENCE},
{IO_FILE, CMD_SUPERIOR}, {IO_FILE, CMD_SUPERIOR},
{IO_FILE, AND_OR_MAJOR},
{IO_FILE, TK_WHILE}, {IO_FILE, TK_WHILE},
{IO_FILE, TK_UNTIL}, {IO_FILE, TK_UNTIL},
{IO_FILE, TK_IF}, {IO_FILE, TK_IF},
@ -716,12 +707,12 @@ static t_stackmatch g_stackmatch[] =
{IO_REDIRECT, TK_LBRACE}, {IO_REDIRECT, TK_LBRACE},
{IO_REDIRECT, COMPLETE_COMMANDS}, {IO_REDIRECT, COMPLETE_COMMANDS},
{IO_REDIRECT, SEPARATOR_OP}, {IO_REDIRECT, SEPARATOR_OP},
{IO_REDIRECT, AND_OR},
{IO_REDIRECT, NEWLINE_LIST}, {IO_REDIRECT, NEWLINE_LIST},
{IO_REDIRECT, PIPE_SEMI_SEQUENCE}, {IO_REDIRECT, PIPE_SEMI_SEQUENCE},
{IO_REDIRECT, PIPE_CLOSE_SEQUENCE}, {IO_REDIRECT, PIPE_CLOSE_SEQUENCE},
{IO_REDIRECT, SEQUENCE}, {IO_REDIRECT, SEQUENCE},
{IO_REDIRECT, CMD_SUPERIOR}, {IO_REDIRECT, CMD_SUPERIOR},
{IO_REDIRECT, AND_OR_MAJOR},
{IO_REDIRECT, TK_WHILE}, {IO_REDIRECT, TK_WHILE},
{IO_REDIRECT, TK_UNTIL}, {IO_REDIRECT, TK_UNTIL},
{IO_REDIRECT, TK_IF}, {IO_REDIRECT, TK_IF},
@ -744,10 +735,10 @@ static t_stackmatch g_stackmatch[] =
{CMD_PREFIX, COMPLETE_COMMANDS}, {CMD_PREFIX, COMPLETE_COMMANDS},
{CMD_PREFIX, TK_BANG}, {CMD_PREFIX, TK_BANG},
{CMD_PREFIX, SEPARATOR_OP}, {CMD_PREFIX, SEPARATOR_OP},
{CMD_PREFIX, AND_OR},
{CMD_PREFIX, NEWLINE_LIST}, {CMD_PREFIX, NEWLINE_LIST},
{CMD_PREFIX, SEQUENCE}, {CMD_PREFIX, SEQUENCE},
{CMD_PREFIX, CMD_SUPERIOR}, {CMD_PREFIX, CMD_SUPERIOR},
{CMD_PREFIX, AND_OR_MAJOR},
{CMD_PREFIX, TK_WHILE}, {CMD_PREFIX, TK_WHILE},
{CMD_PREFIX, TK_UNTIL}, {CMD_PREFIX, TK_UNTIL},
{CMD_PREFIX, TK_IF}, {CMD_PREFIX, TK_IF},
@ -765,12 +756,13 @@ static t_stackmatch g_stackmatch[] =
{CMD_NAME, TK_LBRACE}, {CMD_NAME, TK_LBRACE},
{CMD_NAME, TK_BANG}, {CMD_NAME, TK_BANG},
{CMD_NAME, SEPARATOR_OP}, {CMD_NAME, SEPARATOR_OP},
{CMD_NAME, AND_OR},
{CMD_NAME, NEWLINE_LIST}, {CMD_NAME, NEWLINE_LIST},
{CMD_NAME, SEQUENCE}, {CMD_NAME, SEQUENCE},
{CMD_NAME, CMD_SUPERIOR}, {CMD_NAME, CMD_SUPERIOR},
{CMD_NAME, AND_OR_MAJOR},
{CMD_NAME, CONDITION}, {CMD_NAME, CONDITION},
{CMD_NAME, COMPOUND_LIST}, {CMD_NAME, COMPOUND_LIST},
{CMD_NAME, AND_OR_MAJOR},
{CMD_NAME, TK_WHILE}, {CMD_NAME, TK_WHILE},
{CMD_NAME, FUNC_NAME}, {CMD_NAME, FUNC_NAME},
{CMD_NAME, TK_UNTIL}, {CMD_NAME, TK_UNTIL},
@ -803,10 +795,10 @@ static t_stackmatch g_stackmatch[] =
{CMD_SUPERIOR, COMPLETE_COMMANDS}, {CMD_SUPERIOR, COMPLETE_COMMANDS},
{CMD_SUPERIOR, TK_BANG}, {CMD_SUPERIOR, TK_BANG},
{CMD_SUPERIOR, SEPARATOR_OP}, {CMD_SUPERIOR, SEPARATOR_OP},
{CMD_SUPERIOR, AND_OR},
{CMD_SUPERIOR, NEWLINE_LIST}, {CMD_SUPERIOR, NEWLINE_LIST},
{CMD_SUPERIOR, TK_PIPE}, {CMD_SUPERIOR, TK_PIPE},
{CMD_SUPERIOR, SEQUENCE}, {CMD_SUPERIOR, SEQUENCE},
{CMD_SUPERIOR, AND_OR_MAJOR},
{CLOSE_FUNC, CMD_SUPERIOR}, {CLOSE_FUNC, CMD_SUPERIOR},
{CLOSE_FUNC, OPEN_FUNC}, {CLOSE_FUNC, OPEN_FUNC},
{SIMPLE_COMMAND, TK_WHILE}, {SIMPLE_COMMAND, TK_WHILE},
@ -827,9 +819,9 @@ static t_stackmatch g_stackmatch[] =
{SIMPLE_COMMAND, COMPLETE_COMMANDS}, {SIMPLE_COMMAND, COMPLETE_COMMANDS},
{SIMPLE_COMMAND, TK_BANG}, {SIMPLE_COMMAND, TK_BANG},
{SIMPLE_COMMAND, SEPARATOR_OP}, {SIMPLE_COMMAND, SEPARATOR_OP},
{SIMPLE_COMMAND, AND_OR},
{SIMPLE_COMMAND, NEWLINE_LIST}, {SIMPLE_COMMAND, NEWLINE_LIST},
{SIMPLE_COMMAND, SEQUENCE}, {SIMPLE_COMMAND, SEQUENCE},
{SIMPLE_COMMAND, AND_OR_MAJOR},
{DO_GROUP, CMD_SUPERIOR}, {DO_GROUP, CMD_SUPERIOR},
{DO_GROUP, COMPOUND_LIST}, {DO_GROUP, COMPOUND_LIST},
{DO_GROUP, NAME}, {DO_GROUP, NAME},
@ -862,8 +854,8 @@ static t_stackmatch g_stackmatch[] =
{COMPLETE_CONDITION, CASE_LIST_NS}, {COMPLETE_CONDITION, CASE_LIST_NS},
{COMPLETE_CONDITION, TK_BANG}, {COMPLETE_CONDITION, TK_BANG},
{COMPLETE_CONDITION, SEPARATOR_OP}, {COMPLETE_CONDITION, SEPARATOR_OP},
{COMPLETE_CONDITION, AND_OR},
{COMPLETE_CONDITION, NEWLINE_LIST}, {COMPLETE_CONDITION, NEWLINE_LIST},
{COMPLETE_CONDITION, AND_OR_MAJOR},
{COMPLETE_CONDITION, CASE_LIST_NS}, {COMPLETE_CONDITION, CASE_LIST_NS},
{COMPLETE_CONDITION, FUNC_NAME}, {COMPLETE_CONDITION, FUNC_NAME},
{FNAME, LINEBREAK}, {FNAME, LINEBREAK},
@ -872,7 +864,6 @@ static t_stackmatch g_stackmatch[] =
{FNAME, COMPLETE_COMMANDS}, {FNAME, COMPLETE_COMMANDS},
{FNAME, TK_BANG}, {FNAME, TK_BANG},
{FNAME, SEPARATOR_OP}, {FNAME, SEPARATOR_OP},
{FNAME, AND_OR},
{FNAME, NEWLINE_LIST}, {FNAME, NEWLINE_LIST},
{FNAME, SEQUENCE}, {FNAME, SEQUENCE},
{FUNCTION_BODY, FUNC}, {FUNCTION_BODY, FUNC},
@ -883,7 +874,6 @@ static t_stackmatch g_stackmatch[] =
{FUNCTION_DEFINITION, COMPLETE_COMMANDS}, {FUNCTION_DEFINITION, COMPLETE_COMMANDS},
{FUNCTION_DEFINITION, TK_BANG}, {FUNCTION_DEFINITION, TK_BANG},
{FUNCTION_DEFINITION, SEPARATOR_OP}, {FUNCTION_DEFINITION, SEPARATOR_OP},
{FUNCTION_DEFINITION, AND_OR},
{FUNCTION_DEFINITION, NEWLINE_LIST}, {FUNCTION_DEFINITION, NEWLINE_LIST},
{FUNCTION_DEFINITION, SEQUENCE}, {FUNCTION_DEFINITION, SEQUENCE},
{UNTIL_CLAUSE, LINEBREAK}, {UNTIL_CLAUSE, LINEBREAK},
@ -893,7 +883,6 @@ static t_stackmatch g_stackmatch[] =
{UNTIL_CLAUSE, COMPLETE_COMMANDS}, {UNTIL_CLAUSE, COMPLETE_COMMANDS},
{UNTIL_CLAUSE, TK_BANG}, {UNTIL_CLAUSE, TK_BANG},
{UNTIL_CLAUSE, SEPARATOR_OP}, {UNTIL_CLAUSE, SEPARATOR_OP},
{UNTIL_CLAUSE, AND_OR},
{UNTIL_CLAUSE, NEWLINE_LIST}, {UNTIL_CLAUSE, NEWLINE_LIST},
{UNTIL_CLAUSE, SEQUENCE}, {UNTIL_CLAUSE, SEQUENCE},
{UNTIL_CLAUSE, TK_DO}, {UNTIL_CLAUSE, TK_DO},
@ -909,11 +898,11 @@ static t_stackmatch g_stackmatch[] =
{UNTIL_CLAUSE, CASE_LIST_NS}, {UNTIL_CLAUSE, CASE_LIST_NS},
{UNTIL_CLAUSE, COMPLETE_CONDITION}, {UNTIL_CLAUSE, COMPLETE_CONDITION},
{UNTIL_CLAUSE, CONDITION}, {UNTIL_CLAUSE, CONDITION},
{UNTIL_CLAUSE, AND_OR_MAJOR},
{WHILE_CLAUSE, LINEBREAK}, {WHILE_CLAUSE, LINEBREAK},
{WHILE_CLAUSE, COMPLETE_COMMANDS}, {WHILE_CLAUSE, COMPLETE_COMMANDS},
{WHILE_CLAUSE, TK_BANG}, {WHILE_CLAUSE, TK_BANG},
{WHILE_CLAUSE, SEPARATOR_OP}, {WHILE_CLAUSE, SEPARATOR_OP},
{WHILE_CLAUSE, AND_OR},
{WHILE_CLAUSE, NEWLINE_LIST}, {WHILE_CLAUSE, NEWLINE_LIST},
{WHILE_CLAUSE, SEQUENCE}, {WHILE_CLAUSE, SEQUENCE},
{WHILE_CLAUSE, TK_DO}, {WHILE_CLAUSE, TK_DO},
@ -931,6 +920,7 @@ static t_stackmatch g_stackmatch[] =
{WHILE_CLAUSE, CASE_LIST_NS}, {WHILE_CLAUSE, CASE_LIST_NS},
{WHILE_CLAUSE, COMPLETE_CONDITION}, {WHILE_CLAUSE, COMPLETE_CONDITION},
{WHILE_CLAUSE, CONDITION}, {WHILE_CLAUSE, CONDITION},
{WHILE_CLAUSE, AND_OR_MAJOR},
{IF_CLAUSE, LINEBREAK}, {IF_CLAUSE, LINEBREAK},
{IF_CLAUSE, TK_BANG}, {IF_CLAUSE, TK_BANG},
{IF_CLAUSE, TK_PAREN_OPEN}, {IF_CLAUSE, TK_PAREN_OPEN},
@ -938,7 +928,6 @@ static t_stackmatch g_stackmatch[] =
{IF_CLAUSE, FUNC_NAME}, {IF_CLAUSE, FUNC_NAME},
{IF_CLAUSE, COMPLETE_COMMANDS}, {IF_CLAUSE, COMPLETE_COMMANDS},
{IF_CLAUSE, SEPARATOR_OP}, {IF_CLAUSE, SEPARATOR_OP},
{IF_CLAUSE, AND_OR},
{IF_CLAUSE, NEWLINE_LIST}, {IF_CLAUSE, NEWLINE_LIST},
{IF_CLAUSE, SEQUENCE}, {IF_CLAUSE, SEQUENCE},
{IF_CLAUSE, TK_DO}, {IF_CLAUSE, TK_DO},
@ -955,6 +944,7 @@ static t_stackmatch g_stackmatch[] =
{IF_CLAUSE, COMPLETE_COMMAND}, {IF_CLAUSE, COMPLETE_COMMAND},
{IF_CLAUSE, COMPLETE_CONDITION}, {IF_CLAUSE, COMPLETE_CONDITION},
{IF_CLAUSE, CONDITION}, {IF_CLAUSE, CONDITION},
{IF_CLAUSE, AND_OR_MAJOR},
{BRACE_CLAUSE, LINEBREAK}, {BRACE_CLAUSE, LINEBREAK},
{BRACE_CLAUSE, TK_PAREN_OPEN}, {BRACE_CLAUSE, TK_PAREN_OPEN},
{BRACE_CLAUSE, TK_LBRACE}, {BRACE_CLAUSE, TK_LBRACE},
@ -962,7 +952,6 @@ static t_stackmatch g_stackmatch[] =
{BRACE_CLAUSE, COMPLETE_COMMANDS}, {BRACE_CLAUSE, COMPLETE_COMMANDS},
{BRACE_CLAUSE, TK_BANG}, {BRACE_CLAUSE, TK_BANG},
{BRACE_CLAUSE, SEPARATOR_OP}, {BRACE_CLAUSE, SEPARATOR_OP},
{BRACE_CLAUSE, AND_OR},
{BRACE_CLAUSE, NEWLINE_LIST}, {BRACE_CLAUSE, NEWLINE_LIST},
{BRACE_CLAUSE, SEQUENCE}, {BRACE_CLAUSE, SEQUENCE},
{BRACE_CLAUSE, TK_DO}, {BRACE_CLAUSE, TK_DO},
@ -979,6 +968,7 @@ static t_stackmatch g_stackmatch[] =
{BRACE_CLAUSE, COMPLETE_COMMAND}, {BRACE_CLAUSE, COMPLETE_COMMAND},
{BRACE_CLAUSE, COMPLETE_CONDITION}, {BRACE_CLAUSE, COMPLETE_CONDITION},
{BRACE_CLAUSE, CONDITION}, {BRACE_CLAUSE, CONDITION},
{BRACE_CLAUSE, AND_OR_MAJOR},
{PATTERN, PATTERN_CASE}, {PATTERN, PATTERN_CASE},
{PATTERN, CASE_LIST}, {PATTERN, CASE_LIST},
{PATTERN, TK_IN}, {PATTERN, TK_IN},
@ -991,7 +981,6 @@ static t_stackmatch g_stackmatch[] =
{CASE_CLAUSE, FUNC_NAME}, {CASE_CLAUSE, FUNC_NAME},
{CASE_CLAUSE, COMPLETE_COMMANDS}, {CASE_CLAUSE, COMPLETE_COMMANDS},
{CASE_CLAUSE, SEPARATOR_OP}, {CASE_CLAUSE, SEPARATOR_OP},
{CASE_CLAUSE, AND_OR},
{CASE_CLAUSE, NEWLINE_LIST}, {CASE_CLAUSE, NEWLINE_LIST},
{CASE_CLAUSE, SEQUENCE}, {CASE_CLAUSE, SEQUENCE},
{CASE_CLAUSE, TK_PAREN_CLOSE}, {CASE_CLAUSE, TK_PAREN_CLOSE},
@ -1008,6 +997,7 @@ static t_stackmatch g_stackmatch[] =
{CASE_CLAUSE, CASE_LIST_NS}, {CASE_CLAUSE, CASE_LIST_NS},
{CASE_CLAUSE, COMPLETE_CONDITION}, {CASE_CLAUSE, COMPLETE_CONDITION},
{CASE_CLAUSE, CONDITION}, {CASE_CLAUSE, CONDITION},
{CASE_CLAUSE, AND_OR_MAJOR},
{WORDLIST, IN}, {WORDLIST, IN},
{IN, LINEBREAK}, {IN, LINEBREAK},
{NAME, TK_FOR}, {NAME, TK_FOR},
@ -1019,7 +1009,6 @@ static t_stackmatch g_stackmatch[] =
{FOR_CLAUSE, FUNC_NAME}, {FOR_CLAUSE, FUNC_NAME},
{FOR_CLAUSE, COMPLETE_COMMANDS}, {FOR_CLAUSE, COMPLETE_COMMANDS},
{FOR_CLAUSE, SEPARATOR_OP}, {FOR_CLAUSE, SEPARATOR_OP},
{FOR_CLAUSE, AND_OR},
{FOR_CLAUSE, NEWLINE_LIST}, {FOR_CLAUSE, NEWLINE_LIST},
{FOR_CLAUSE, SEQUENCE}, {FOR_CLAUSE, SEQUENCE},
{FOR_CLAUSE, TK_DO}, {FOR_CLAUSE, TK_DO},
@ -1035,6 +1024,7 @@ static t_stackmatch g_stackmatch[] =
{FOR_CLAUSE, CASE_LIST_NS}, {FOR_CLAUSE, CASE_LIST_NS},
{FOR_CLAUSE, COMPLETE_CONDITION}, {FOR_CLAUSE, COMPLETE_CONDITION},
{FOR_CLAUSE, CONDITION}, {FOR_CLAUSE, CONDITION},
{FOR_CLAUSE, AND_OR_MAJOR},
{COMPOUND_LIST, TK_DO}, {COMPOUND_LIST, TK_DO},
{COMPOUND_LIST, TK_PAREN_CLOSE}, {COMPOUND_LIST, TK_PAREN_CLOSE},
{COMPOUND_LIST, TK_LBRACE}, {COMPOUND_LIST, TK_LBRACE},
@ -1055,13 +1045,11 @@ static t_stackmatch g_stackmatch[] =
{SUBSHELL, COMPLETE_COMMANDS}, {SUBSHELL, COMPLETE_COMMANDS},
{SUBSHELL, TK_BANG}, {SUBSHELL, TK_BANG},
{SUBSHELL, SEPARATOR_OP}, {SUBSHELL, SEPARATOR_OP},
{SUBSHELL, AND_OR},
{SUBSHELL, NEWLINE_LIST}, {SUBSHELL, NEWLINE_LIST},
{SUBSHELL, SEQUENCE}, {SUBSHELL, SEQUENCE},
{SUBSHELL, TK_LBRACE}, {SUBSHELL, TK_LBRACE},
{SUBSHELL, TK_PAREN_OPEN}, {SUBSHELL, TK_PAREN_OPEN},
{SUBSHELL, SEPARATOR_OP}, {SUBSHELL, SEPARATOR_OP},
{SUBSHELL, AND_OR},
{SUBSHELL, NEWLINE_LIST}, {SUBSHELL, NEWLINE_LIST},
{SUBSHELL, TK_DO}, {SUBSHELL, TK_DO},
{SUBSHELL, TK_PAREN_CLOSE}, {SUBSHELL, TK_PAREN_CLOSE},
@ -1076,13 +1064,13 @@ static t_stackmatch g_stackmatch[] =
{SUBSHELL, CASE_LIST_NS}, {SUBSHELL, CASE_LIST_NS},
{SUBSHELL, COMPLETE_CONDITION}, {SUBSHELL, COMPLETE_CONDITION},
{SUBSHELL, CONDITION}, {SUBSHELL, CONDITION},
{SUBSHELL, AND_OR_MAJOR},
{COMPOUND_COMMAND, LINEBREAK}, {COMPOUND_COMMAND, LINEBREAK},
{COMPOUND_COMMAND, TK_PAREN_OPEN}, {COMPOUND_COMMAND, TK_PAREN_OPEN},
{COMPOUND_COMMAND, TK_LBRACE}, {COMPOUND_COMMAND, TK_LBRACE},
{COMPOUND_COMMAND, COMPLETE_COMMANDS}, {COMPOUND_COMMAND, COMPLETE_COMMANDS},
{COMPOUND_COMMAND, TK_BANG}, {COMPOUND_COMMAND, TK_BANG},
{COMPOUND_COMMAND, SEPARATOR_OP}, {COMPOUND_COMMAND, SEPARATOR_OP},
{COMPOUND_COMMAND, AND_OR},
{COMPOUND_COMMAND, NEWLINE_LIST}, {COMPOUND_COMMAND, NEWLINE_LIST},
{COMPOUND_COMMAND, SEQUENCE}, {COMPOUND_COMMAND, SEQUENCE},
{COMPOUND_COMMAND, FUNC}, {COMPOUND_COMMAND, FUNC},
@ -1099,6 +1087,7 @@ static t_stackmatch g_stackmatch[] =
{COMPOUND_COMMAND, CASE_LIST_NS}, {COMPOUND_COMMAND, CASE_LIST_NS},
{COMPOUND_COMMAND, COMPLETE_CONDITION}, {COMPOUND_COMMAND, COMPLETE_CONDITION},
{COMPOUND_COMMAND, CONDITION}, {COMPOUND_COMMAND, CONDITION},
{COMPOUND_COMMAND, AND_OR_MAJOR},
{COMMAND, TK_WHILE}, {COMMAND, TK_WHILE},
{COMMAND, TK_UNTIL}, {COMMAND, TK_UNTIL},
{COMMAND, LINEBREAK}, {COMMAND, LINEBREAK},
@ -1117,9 +1106,17 @@ static t_stackmatch g_stackmatch[] =
{COMMAND, COMPLETE_CONDITION}, {COMMAND, COMPLETE_CONDITION},
{COMMAND, CONDITION}, {COMMAND, CONDITION},
{COMMAND, SEPARATOR_OP}, {COMMAND, SEPARATOR_OP},
{COMMAND, AND_OR},
{COMMAND, NEWLINE_LIST}, {COMMAND, NEWLINE_LIST},
{COMMAND, SEQUENCE}, {COMMAND, SEQUENCE},
{COMMAND, AND_OR_MAJOR},
{AND_OR_MINOR, SEQUENCE},
{AND_OR_MINOR, LINEBREAK},
{AND_OR_MINOR, TK_BANG},
{AND_OR_MINOR, TK_PAREN_OPEN},
{AND_OR_MINOR, TK_LBRACE},
{AND_OR_MINOR, COMPLETE_COMMANDS},
{AND_OR_MINOR, COMPOUND_LIST},
{AND_OR_MINOR, AND_OR_MAJOR},
{PIPE_SEQUENCE, TK_WHILE}, {PIPE_SEQUENCE, TK_WHILE},
{PIPE_SEQUENCE, FUNC_NAME}, {PIPE_SEQUENCE, FUNC_NAME},
{PIPE_SEQUENCE, TK_UNTIL}, {PIPE_SEQUENCE, TK_UNTIL},
@ -1139,8 +1136,8 @@ static t_stackmatch g_stackmatch[] =
{PIPE_SEQUENCE, TK_LBRACE}, {PIPE_SEQUENCE, TK_LBRACE},
{PIPE_SEQUENCE, COMPLETE_COMMANDS}, {PIPE_SEQUENCE, COMPLETE_COMMANDS},
{PIPE_SEQUENCE, SEPARATOR_OP}, {PIPE_SEQUENCE, SEPARATOR_OP},
{PIPE_SEQUENCE, AND_OR},
{PIPE_SEQUENCE, NEWLINE_LIST}, {PIPE_SEQUENCE, NEWLINE_LIST},
{PIPE_SEQUENCE, AND_OR_MAJOR},
{TK_BANG, TK_WHILE}, {TK_BANG, TK_WHILE},
{TK_BANG, TK_UNTIL}, {TK_BANG, TK_UNTIL},
{TK_BANG, TK_DO}, {TK_BANG, TK_DO},
@ -1158,8 +1155,8 @@ static t_stackmatch g_stackmatch[] =
{TK_BANG, TK_LBRACE}, {TK_BANG, TK_LBRACE},
{TK_BANG, COMPLETE_COMMANDS}, {TK_BANG, COMPLETE_COMMANDS},
{TK_BANG, SEPARATOR_OP}, {TK_BANG, SEPARATOR_OP},
{TK_BANG, AND_OR},
{TK_BANG, NEWLINE_LIST}, {TK_BANG, NEWLINE_LIST},
{TK_BANG, AND_OR_MAJOR},
{PIPE_SEMI_SEQUENCE, TK_WHILE}, {PIPE_SEMI_SEQUENCE, TK_WHILE},
{PIPE_SEMI_SEQUENCE, TK_UNTIL}, {PIPE_SEMI_SEQUENCE, TK_UNTIL},
{PIPE_SEMI_SEQUENCE, TK_DO}, {PIPE_SEMI_SEQUENCE, TK_DO},
@ -1178,8 +1175,8 @@ static t_stackmatch g_stackmatch[] =
{PIPE_SEMI_SEQUENCE, TK_LBRACE}, {PIPE_SEMI_SEQUENCE, TK_LBRACE},
{PIPE_SEMI_SEQUENCE, COMPLETE_COMMANDS}, {PIPE_SEMI_SEQUENCE, COMPLETE_COMMANDS},
{PIPE_SEMI_SEQUENCE, SEPARATOR_OP}, {PIPE_SEMI_SEQUENCE, SEPARATOR_OP},
{PIPE_SEMI_SEQUENCE, AND_OR},
{PIPE_SEMI_SEQUENCE, NEWLINE_LIST}, {PIPE_SEMI_SEQUENCE, NEWLINE_LIST},
{PIPE_SEMI_SEQUENCE, AND_OR_MAJOR},
{PIPE_SEMI_SEQUENCE, SEQUENCE}, {PIPE_SEMI_SEQUENCE, SEQUENCE},
{PIPE_CLOSE_SEQUENCE, TK_WHILE}, {PIPE_CLOSE_SEQUENCE, TK_WHILE},
{PIPE_CLOSE_SEQUENCE, TK_UNTIL}, {PIPE_CLOSE_SEQUENCE, TK_UNTIL},
@ -1199,8 +1196,8 @@ static t_stackmatch g_stackmatch[] =
{PIPE_CLOSE_SEQUENCE, TK_LBRACE}, {PIPE_CLOSE_SEQUENCE, TK_LBRACE},
{PIPE_CLOSE_SEQUENCE, COMPLETE_COMMANDS}, {PIPE_CLOSE_SEQUENCE, COMPLETE_COMMANDS},
{PIPE_CLOSE_SEQUENCE, SEPARATOR_OP}, {PIPE_CLOSE_SEQUENCE, SEPARATOR_OP},
{PIPE_CLOSE_SEQUENCE, AND_OR},
{PIPE_CLOSE_SEQUENCE, NEWLINE_LIST}, {PIPE_CLOSE_SEQUENCE, NEWLINE_LIST},
{PIPE_CLOSE_SEQUENCE, AND_OR_MAJOR},
{PIPE_CLOSE_SEQUENCE, SEQUENCE}, {PIPE_CLOSE_SEQUENCE, SEQUENCE},
{SEQUENCE, PIPE_SEMI_SEQUENCE}, {SEQUENCE, PIPE_SEMI_SEQUENCE},
{SEQUENCE, PIPE_CLOSE_SEQUENCE}, {SEQUENCE, PIPE_CLOSE_SEQUENCE},
@ -1222,8 +1219,8 @@ static t_stackmatch g_stackmatch[] =
{SEQUENCE, COMPLETE_COMMANDS}, {SEQUENCE, COMPLETE_COMMANDS},
{SEQUENCE, TK_BANG}, {SEQUENCE, TK_BANG},
{SEQUENCE, SEPARATOR_OP}, {SEQUENCE, SEPARATOR_OP},
{SEQUENCE, AND_OR},
{SEQUENCE, NEWLINE_LIST}, {SEQUENCE, NEWLINE_LIST},
{SEQUENCE, AND_OR_MAJOR},
{SEQUENCE, SEQUENCE}, {SEQUENCE, SEQUENCE},
{PIPELINE, TK_WHILE}, {PIPELINE, TK_WHILE},
{PIPELINE, TK_UNTIL}, {PIPELINE, TK_UNTIL},
@ -1243,27 +1240,36 @@ static t_stackmatch g_stackmatch[] =
{PIPELINE, TK_LBRACE}, {PIPELINE, TK_LBRACE},
{PIPELINE, COMPLETE_COMMANDS}, {PIPELINE, COMPLETE_COMMANDS},
{PIPELINE, SEPARATOR_OP}, {PIPELINE, SEPARATOR_OP},
{PIPELINE, AND_OR}, {PIPELINE, SEPARATOR_OP},
{PIPELINE, NEWLINE_LIST}, {PIPELINE, NEWLINE_LIST},
{PIPELINE, AND_OR_MAJOR},
{AND_OR_MAJOR, LINEBREAK},
{AND_OR_MAJOR, TK_BANG},
{AND_OR_MAJOR, TK_PAREN_OPEN},
{AND_OR_MAJOR, TK_LBRACE},
{AND_OR_MAJOR, COMPOUND_LIST},
{AND_OR_MAJOR, COMPLETE_COMMANDS},
{AND_OR_MAJOR, AND_OR_MAJOR},
{AND_OR_MAJOR, AND_OR_MAJOR},
{AND_OR, TK_DO},
{AND_OR, TK_PAREN_CLOSE}, {AND_OR, TK_PAREN_CLOSE},
{AND_OR, TK_WHILE}, {AND_OR, TK_WHILE},
{AND_OR, TK_UNTIL}, {AND_OR, TK_UNTIL},
{AND_OR, TK_IF}, {AND_OR, TK_IF},
{AND_OR, TK_THEN},
{AND_OR, TK_ELIF}, {AND_OR, TK_ELIF},
{AND_OR, TK_THEN},
{AND_OR, TK_ELSE}, {AND_OR, TK_ELSE},
{AND_OR, CMD_SUPERIOR},
{AND_OR, COMPOUND_LIST}, {AND_OR, COMPOUND_LIST},
{AND_OR, PIPE_SEMI_SEQUENCE},
{AND_OR, PIPE_CLOSE_SEQUENCE},
{AND_OR, CASE_LIST_NS}, {AND_OR, CASE_LIST_NS},
{AND_OR, CONDITION},
{AND_OR, COMPLETE_CONDITION}, {AND_OR, COMPLETE_CONDITION},
{AND_OR, CONDITION},
{AND_OR, LINEBREAK}, {AND_OR, LINEBREAK},
{AND_OR, TK_BANG}, {AND_OR, TK_BANG},
{AND_OR, TK_PAREN_OPEN}, {AND_OR, TK_PAREN_OPEN},
{AND_OR, TK_LBRACE}, {AND_OR, TK_LBRACE},
{AND_OR, COMPLETE_COMMANDS}, {AND_OR, COMPLETE_COMMANDS},
{AND_OR, SEPARATOR_OP},
{AND_OR, SEPARATOR_OP},
{AND_OR, NEWLINE_LIST}, {AND_OR, NEWLINE_LIST},
{LIST, LINEBREAK}, {LIST, LINEBREAK},
{LIST, COMPLETE_COMMANDS}, {LIST, COMPLETE_COMMANDS},

View file

@ -6,7 +6,7 @@
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */ /* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */
/* Updated: 2017/03/29 16:20:29 by ariard ### ########.fr */ /* Updated: 2017/03/27 17:22:10 by ariard ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -31,6 +31,7 @@ static t_prodmatch g_prodmatch[] =
{TK_WORD, TK_BANG, CMD_NAME}, {TK_WORD, TK_BANG, CMD_NAME},
{TK_WORD, TK_PIPE, CMD_NAME}, {TK_WORD, TK_PIPE, CMD_NAME},
{TK_WORD, AND_OR, CMD_NAME}, {TK_WORD, AND_OR, CMD_NAME},
{TK_WORD, AND_OR_MAJOR, CMD_NAME},
{TK_WORD, TK_PAREN_CLOSE, CMD_NAME}, {TK_WORD, TK_PAREN_CLOSE, CMD_NAME},
{TK_WORD, TK_WHILE, CMD_NAME}, {TK_WORD, TK_WHILE, CMD_NAME},
{TK_WORD, TK_UNTIL, CMD_NAME}, {TK_WORD, TK_UNTIL, CMD_NAME},
@ -74,6 +75,7 @@ static t_prodmatch g_prodmatch[] =
{TK_ASSIGNMENT_WORD, COMPLETE_CONDITION, CMD_PREFIX}, {TK_ASSIGNMENT_WORD, COMPLETE_CONDITION, CMD_PREFIX},
{TK_ASSIGNMENT_WORD, CONDITION, CMD_PREFIX}, {TK_ASSIGNMENT_WORD, CONDITION, CMD_PREFIX},
{TK_ASSIGNMENT_WORD, AND_OR, CMD_PREFIX}, {TK_ASSIGNMENT_WORD, AND_OR, CMD_PREFIX},
{TK_ASSIGNMENT_WORD, AND_OR_MAJOR, CMD_PREFIX},
{TK_ASSIGNMENT_WORD, PIPE_SEMI_SEQUENCE, CMD_SUFFIX}, {TK_ASSIGNMENT_WORD, PIPE_SEMI_SEQUENCE, CMD_SUFFIX},
{TK_ASSIGNMENT_WORD, SEQUENCE, CMD_PREFIX}, {TK_ASSIGNMENT_WORD, SEQUENCE, CMD_PREFIX},
{TK_ASSIGNMENT_WORD, COMPLETE_COMMANDS, CMD_PREFIX}, {TK_ASSIGNMENT_WORD, COMPLETE_COMMANDS, CMD_PREFIX},
@ -117,7 +119,6 @@ static t_prodmatch g_prodmatch[] =
{TK_NEWLINE, CONDITION, NEWLINE_LIST}, {TK_NEWLINE, CONDITION, NEWLINE_LIST},
{TK_NEWLINE, FOR_WORDLIST, NEWLINE_LIST}, {TK_NEWLINE, FOR_WORDLIST, NEWLINE_LIST},
{TK_NEWLINE, SEQUENTIAL_SEP, NEWLINE_LIST}, {TK_NEWLINE, SEQUENTIAL_SEP, NEWLINE_LIST},
{TK_NEWLINE, AND_OR, NEWLINE_LIST},
{TK_NEWLINE, PROGRAM, NEWLINE_LIST}, {TK_NEWLINE, PROGRAM, NEWLINE_LIST},
{TK_SEMI, CMD_SUPERIOR, SEPARATOR_OP}, {TK_SEMI, CMD_SUPERIOR, SEPARATOR_OP},
{TK_SEMI, LIST, SEPARATOR_OP}, {TK_SEMI, LIST, SEPARATOR_OP},
@ -127,10 +128,6 @@ static t_prodmatch g_prodmatch[] =
{TK_AMP, LIST, SEPARATOR_OP}, {TK_AMP, LIST, SEPARATOR_OP},
{TK_AMP, PIPE_SEMI_SEQUENCE, SEPARATOR_OP}, {TK_AMP, PIPE_SEMI_SEQUENCE, SEPARATOR_OP},
{TK_AMP, PIPE_CLOSE_SEQUENCE, SEPARATOR_OP}, {TK_AMP, PIPE_CLOSE_SEQUENCE, SEPARATOR_OP},
{TK_AND_IF, ALL, AND_OR},
{TK_OR_IF, ALL, AND_OR},
{TK_AND_IF, COMPLETE_CONDITION, OTHER},
{TK_OR_IF, COMPLETE_CONDITION, OTHER},
{0, 0, 0}, {0, 0, 0},
}; };
@ -146,11 +143,10 @@ int produce_sym(t_list **stack, t_sym *new_sym, t_list **lst)
head = (*stack)->content; head = (*stack)->content;
i = 0; i = 0;
*new_sym = 0; *new_sym = 0;
DG();
while (g_prodmatch[i].new_sym) while (g_prodmatch[i].new_sym)
{ {
if (token->type == g_prodmatch[i].token if (token->type == g_prodmatch[i].token
&& (*head == g_prodmatch[i].stack || g_prodmatch[i].stack == ALL)) && *head == g_prodmatch[i].stack)
*new_sym = g_prodmatch[i].new_sym; *new_sym = g_prodmatch[i].new_sym;
i++; i++;
} }

View file

@ -6,7 +6,7 @@
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */ /* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/02/09 15:32:10 by ariard #+# #+# */ /* Created: 2017/02/09 15:32:10 by ariard #+# #+# */
/* Updated: 2017/03/29 14:15:17 by ariard ### ########.fr */ /* Updated: 2017/03/29 16:43:45 by ariard ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -14,6 +14,10 @@
char *read_state(t_sym current) char *read_state(t_sym current)
{ {
if (current == AND_OR_MINOR)
return ("AND_OR_MINOR");
if (current == AND_OR_MAJOR)
return ("AND_OR_MAJOR");
if (current == FNAME) if (current == FNAME)
return ("FNAME"); return ("FNAME");
if (current == PIPE_CLOSE_SEQUENCE) if (current == PIPE_CLOSE_SEQUENCE)