A really cool shell for GNU/Linux.
- Need to add timeout for matching partial key bindings.
- Scanner should support escapes.
- LT ('<')
- GT ('>')
- PIPE ('|')
- AT ('@')
- STR (TODO: description)
LAMBDA
is the empty string, and EOF
is the end of the token stream.
<pipeline> ::= STR <str-more> <pipeline-more>
<str-more> ::= STR <str-more>
::= LAMBDA
<pipeline-more> ::= <nary-pipe> <pipeline>
::= LAMBDA
<unary-pipe> ::= <maybe-fd> PIPE <maybe-fd>
<nary-pipe> ::= LT <unary-pipe> <nary-pipe-more> GT
<nary-pipe-more> ::= <unary-pipe> <nary-pipe-more>
::= LAMBDA
<maybe-fd> ::= STR
::= AT
::= LAMBDA
Non-terminal (N) | First(N) | Follow(N) |
---|---|---|
pipeline | STR | EOF |
str-more | STR, LAMBDA | LT, EOF |
pipeline-more | LT, LAMBDA | EOF |
unary-pipe | STR, AT, PIPE | STR, AT, PIPE, GT |
nary-pipe | LT | STR |
nary-pipe-more | STR, AT, PIPE, LAMBDA | GT |
maybe-fd | STR, AT, LAMBDA | STR, AT, PIPE, GT |