minishell syntax diagram - Wolframike/minishell GitHub Wiki

program ::= and_or

and_or ::= pipeline ( ( 'AND_IF' | 'OR_IF' ) pipeline )*

pipeline ::= ( simple_command | subshell io_file? ) ( '|' ( simple_command | subshell io_file? ) )*

subshell ::= '(' and_or ')'

simple_command ::= (io_file?) + ( 'WORD' cmd_suffix? )?

cmd_suffix ::= ( io_file | 'WORD' )+

io_file ::= ( '<' | '>' | '>>' | '<<') 'WORD'