moar moar grammar
This commit is contained in:
parent
516e1dade5
commit
6601e2111f
4 changed files with 76 additions and 4 deletions
|
|
@ -61,6 +61,8 @@ enum e_sym
|
|||
TK_CASE,
|
||||
TK_LBRACE,
|
||||
TK_IN,
|
||||
TK_CASE,
|
||||
TK_ESAC,
|
||||
PROGRAM = 100,
|
||||
COMPLETE_COMMANDS,
|
||||
LIST,
|
||||
|
|
|
|||
|
|
@ -23,8 +23,25 @@ t_aggrematch g_aggrematch[] =
|
|||
{ELSE_PART, TK_FI, IF_CLAUSE},
|
||||
{COMPOUND_LIST, TK_FI, IF_CLAUSE},
|
||||
|
||||
{TK_COMPOUND_LIST, TK_DONE, DO_GROUP},
|
||||
{TK_COMPOUND_LIST, TK_RBRACE, BRACE_GROUP},
|
||||
{COMPOUND_LIST, TK_DONE, DO_GROUP},
|
||||
{COMPOUND_LIST, TK_RBRACE, BRACE_GROUP},
|
||||
|
||||
{TK_PAREN_CLOSE, COMPOUND_LIST, SUBSHELL, 2},
|
||||
|
||||
//watch this
|
||||
{SEPARATOR, COMPOUND_LIST, COMPOUND_LIST, 1},
|
||||
|
||||
{LINEBREAK, TK_SEMI, SEPARATOR_OP, 1},
|
||||
//prediction one
|
||||
{LINEBREAK, TK_PAREN_CLOSE, TK_ESAC, CASE_ITEM_NS, tant que pattern ou '('},
|
||||
|
||||
{NEWLINE_LIST, NEWLINE_LIST, NEWLINE_LIST, ALL, tant que newline},
|
||||
{NEWLINE_LIST, NAME, SEPARATOR_SEP, ALL, 0},
|
||||
{NEWlINE_LIST, IN, SEPARATOR_SEP, ALL, 0},
|
||||
{NEWLINE_LIST, WORDLIST, SEPARATOR_SEP, ALL, 0},
|
||||
{NEWLINE_LIST, TERM, SEPARATOR, ALL, 0},
|
||||
{NEWLINE_LIST, COMPOUND_LIST, SEPARATOR, ALL, 0},
|
||||
|
||||
{0, 0, 0},
|
||||
|
||||
int aggregate_sym(t_sym **stack, t_sym *new_sym)
|
||||
|
|
|
|||
|
|
@ -170,7 +170,60 @@ t_stackmatch g_stackmatch[] =
|
|||
{TK_BANG, SEPARATOR_OP},
|
||||
{TK_BANG, NEWLINE_LIST},
|
||||
|
||||
{TK_IN, LINEBREAK},
|
||||
{TK_IN, LINEBREAK},
|
||||
|
||||
{TK_SEMI, NAME},
|
||||
{TK_SEMI, IN},
|
||||
{TK_SEMI, WORDLIST},
|
||||
{TK_SEMI, LIST},
|
||||
{TK_SEMI, TERM},
|
||||
|
||||
{TK_AMP, LIST},
|
||||
{TK_AMP, TERM},
|
||||
|
||||
{TK_PIPE, PATTERN},
|
||||
{TK_PIPE, PIPE_SEQUENCE},
|
||||
|
||||
{TK_PAREN_OPEN, FNAME},
|
||||
{TK_PAREN_OPEN, CASE_LIST},
|
||||
{TK_PAREN_OPEN, LINEBREAK},
|
||||
{TK_PAREN_OPEN, TK_BANG},
|
||||
{TK_PAREN_OPEN, SEPARATOR_OP},
|
||||
{TK_PAREN_OPEN, NEWLINE_LIST},
|
||||
|
||||
{TK_PAREN_CLOSE, TK_PAREN_OPEN},
|
||||
{TK_PAREN_CLOSE, PATTERN},
|
||||
{TK_PAREN_CLOSE, COMPOUND_LIST},
|
||||
|
||||
{SEQUENTIAL_SEP, NAME},
|
||||
{SEQUENTIAL_SEP, IN},
|
||||
{SEQUENTIAL_SEP, WORDLIST},
|
||||
|
||||
{SEPARATOR, TERM},
|
||||
{SEPARATOR, COMPOUND_LIST},
|
||||
|
||||
{SEPARATOR_OP, LIST},
|
||||
{SEPARATOR_OP, TERM},
|
||||
{SEPARATOR_OP, COMPOUND_LIST},
|
||||
|
||||
{LINEBREAK, TK_SEMI},
|
||||
{LINEBREAK, TK_PAREN_CLOSE},
|
||||
{LINEBREAK, WORD},
|
||||
{LINEBREAK, IN},
|
||||
{LINEBREAK, TK_AND_IF},
|
||||
{LINEBREAK, TK_OR_IF},
|
||||
{LINEBREAK, TK_PIPE},
|
||||
{LINEBREAK, LINEBREAK},
|
||||
{LINEBREAK, COMPLETECOMMANDS},
|
||||
|
||||
{NEWLINE_LIST, NEWLINE_LIST},
|
||||
{NEWLINE_LIST, NAME},
|
||||
{NEWLINE_LIST, IN},
|
||||
{NEWLINE_LIST, WORDLIST},
|
||||
{NEWLINE_LIST, TERM},
|
||||
{NEWLINE_LIST, COMPOUND_LIST},
|
||||
{NEWLINE_LIST, COMPLETE_COMMANDS},
|
||||
|
||||
{0, 0},
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ t_prodmatch g_prodmatch[] =
|
|||
{TK_WORD, LINEBREAK, CMD_NAME},
|
||||
{TK_WORD, NEWLINE_LIST, CMD_NAME},
|
||||
{TK_WORD, IN, WORDLIST},
|
||||
// {{TK_WORD, CASE_LIST, PATTERN}, rule 4 ?
|
||||
{{TK_WORD, CASE_LIST, PATTERN},
|
||||
{TK_WORD, TK_PAREN_OPEN, PATTERN},
|
||||
|
||||
{TK_ASSIGNEMENT_WORD, LINEBREAK, CMD_PREFIX},
|
||||
|
|
|
|||
Loading…
Reference in a new issue