# minishell parser bashと同じ機能を持つシェルを作成するために以下の関数と`struct command`を作成してください。 `parse`はシェルコマンドの文字列を入力として受け取り、パースした結果を`t_command`に格納して返してください。 ``` typedef struct command t_command; t_command *parse(char *s); ``` できる範囲でなるべく多くの - metacharacter(| & ; ( ) < > space tab) - control operator(|| & && ; ;; ( ) | |& <newline>) に対応してください。 ## 入力とパース結果の例 ### `echo hello | cat` ``` [["echo", "hello"], ["cat"]] ``` ### `echo "hello" | cat` ``` [["echo", "hello"], ["cat"]] ``` ### `echo 'hello' | cat` ``` [["echo", "hello"], ["cat"]] ``` ### `echo hello | cat | wc` ``` [["echo", "hello"], ["cat"], ["wc"]] ``` ### `echo hello; ls | wc;` ``` [["echo", "hello"]] [["ls"], ["wc"]] ``` ### `echo hello "world" '42' | cat | wc` ``` [["echo", "hello", "world", "42"], ["cat"], ["wc"]] ``` ### `echo "echo hello | cat" | cat` ``` [["echo", "echo \"hello\" | cat"], ["cat"]] ``` ### `echo "echo 'echo hello | cat' | cat" | cat` ``` [["echo", "echo 'echo hello | cat' | cat"], ["cat"]] ``` ### `echo "echo 'echo' 'hello' '|' 'cat' | cat" | cat` ``` [["echo", "echo 'echo' 'hello' '|' 'cat' | cat"], ["cat"]] ```