minishellakirawchen / mini_shell

It is a cooperate subject to create mini_shell
0 stars 0 forks source link

8-implement-analysis-part #8

Open ak0327 opened 1 year ago

ak0327 commented 1 year ago

Implement analysis part

ak0327 commented 1 year ago
ak0327 commented 1 year ago

入力コマンドを構造体->木構造とする方針で実装できる感触が掴めました。 pipeのみの試験ですが、以下のように正常に出力されるところまで確認済みです。 今後はpipe以外(and, or, subshell, etc)を適当な順番に展開していく実装を予定しています。

minishell $> echo hello | cat Makefile | grep a | grep @

// vv debug print vv
#DEBUG[print_stack : print stack]
 [root]
  |    
 [pipe]
  |    
 [cmd]--[echo], [hello]
 [cmd]--[cat], [Makefile]
 [cmd]--[grep], [a]
 [cmd]--[grep], [@]
// ^^debug print ^^

// command output
        @make -C $(LIBFT_DIR)
        @make -C $(LIBGNL_DIR)
        @make -C $(LIBFT_PRINTF_DIR)
        @mkdir -p $$(dirname $@)
        @make clean -C $(LIBFT_DIR)
        @make clean -C $(LIBGNL_DIR)
        @make clean -C $(LIBFT_PRINTF_DIR)
        @make fclean -C $(LIBFT_DIR)
        @make fclean -C $(LIBGNL_DIR)
        @make fclean -C $(LIBFT_PRINTF_DIR)
minishell $> 
ak0327 commented 1 year ago

上記、一旦Pendingして他の実装を進めます。 pipeは実行できるため、Mandatoryクリアに向けてに全体の完成度を高めるため。 他のパートの完成度が高まり次第、subshell, (and, or)に取り掛かる予定。

ak0327 commented 1 year ago

MEMO

ak0327 commented 1 year ago

MEMO

ak0327 commented 1 year ago
// test1
minishell $> echo hello | grep a | hoge | echo "hello | grep grep || test" | echo 'hogehoge | test "||foobar"'
#print tree

#DEBUG[print_stack : check tree]
 [root]
  |    
 [pipe]
  |    
 [cmd]--{"echo", "hello"}
 [cmd]--{"grep", "a"}
 [cmd]--{"hoge"}
 [cmd]--{"echo", ""hello | grep grep || test""}
 [cmd]--{"echo", "'hogehoge | test "||foobar"'"}

// test2
minishell $> echo hello || grep a
minishell: syntax error near unexpected token `||'
ak0327 commented 1 year ago
minishell $> echo hello | grep a > out | cat << end > out | echo "hoge > in | test|" |echo'test"test"|hoge'>>out

#DEBUG[print_stack : check tree]
 [root]
  |    
 [pipe]
  |    
 [cmd]--{"echo", "hello"}
 [cmd]--{"grep", "a", ">", "out"}
 [cmd]--{"cat", "<<", "end", ">", "out"}
 [cmd]--{"echo", ""hoge ", ">", " in | test|""}
 [cmd]--{"echo", "'test"test"|hoge'", ">>", "out"}
ak0327 commented 1 year ago

|と<>を段階的にsplitしているが、ひとつの関数で纏められるはず(気が向いたら or bonusで実装する)

ak0327 commented 1 year ago

残課題(bonus用に再実装する際に反映)