From 2a70b3f702383d33dfacc0573639aaf207fe574c Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Sun, 12 Feb 2017 19:19:16 +0100 Subject: [PATCH] moar moar moar grammar --- 42sh/includes/.parser.h.swm | Bin 0 -> 24576 bytes 42sh/includes/parser.h | 4 ++- 42sh/src/parser/aggregate_sym.c | 27 ++++++++++++++++-- 42sh/src/parser/eval_sym.c | 48 +++++++++++++++++++++++++++++++- 4 files changed, 75 insertions(+), 4 deletions(-) create mode 100644 42sh/includes/.parser.h.swm diff --git a/42sh/includes/.parser.h.swm b/42sh/includes/.parser.h.swm new file mode 100644 index 0000000000000000000000000000000000000000..0fdd297dfa6e52f18a37c3b2bd0296d2c2266ecd GIT binary patch literal 24576 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 +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/12 17:41:16 by ariard ### ########.fr */ +/* Updated: 2017/02/12 19:02:48 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -106,6 +106,8 @@ enum e_sym SEPARATOR_OP, SEPARATOR, SEQUENTIAL_SEP, + LOOP, + FUNC, ALL = TK_LESS | TK_GREAT | TK_DLESS | TK_DGREAT | TK_LESSAND | TK_GREATAND\ | TK_SEMI | TK_PIPE | TK_AND_IF | TK_OR_IF | TK_AMP | TK_PAREN_OPEN\ | TK_PAREN_CLOSE | TK_BQUOTE | TK_SUBSHELL | TK_NEWLINE | TK_WHILE | TK_DO\ diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index d2bccfe3..4ae42267 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ -/* Updated: 2017/02/12 18:47:00 by ariard ### ########.fr */ +/* Updated: 2017/02/12 19:18:45 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -35,7 +35,8 @@ t_aggrematch g_aggrematch[] = {LINEBREAK, TK_SEMI, SEPARATOR_OP, ALL, tant que TK_SEMI}, //do one {LINEBREAK, TK_PAREN_CLOSE, TK_ESAC, CASE_ITEM_NS, tant que pattern ou '('}, - + {LINEBREAK, TK_PAREN_CLOSE, FUNC, ALL, FNAME}, + {NEWLINE_LIST, NEWLINE_LIST, NEWLINE_LIST, ALL, tant que newline}, {NEWLINE_LIST, NAME, SEPARATOR_SEP, ALL, 0}, {NEWlINE_LIST, IN, SEPARATOR_SEP, ALL, 0}, @@ -83,6 +84,28 @@ t_aggrematch g_aggrematch[] = {CMD_NAME, SEPARATOR_OP, SIMPLE_COMMAND, TK_NEWLINE ou TK_SEMI ou TK_AMP, 0}, {CMD_NAME, NEWLINE_LIST, SIMPLE_COMMAND, TK_NEWLINE ou TK_SEMI ou TK_AMP, 0}, + {SIMPLE_COMMAND, ALL, COMMAND, ALL, 0}, + + {DO_GROUP, NAME, FOR_CLAUSE, ALL, FOR}, + {DO_GROUP, SEQUENTIAL_SEP, FOR_CLAUSE, ALL, FOR}, + {DO_GROUP, COMPOUND_LIST, LOOP, ALL, COMPOUND_LIST}, + + {LOOP, WHILE, WHILE_CLAUSE, ALL, WHILE}, + {LOOP, UNTIL, UNTIL_CLAUSE, ALL, UNTIL}, + + {BRACE_GROUP, ALL, COMMAND, ALL, 0}, + + {FUNCTION_BODY, FUNC, FUNCTION_DEFINITION, ALL, 0}, + + {FUNCTION_DEFINITION, ALL, COMMAND, ALL, 0}, + + {UNTIL_CLAUSE, ALL, COMMAND, ALL, 0}, + + {WHILE_CLAUSE, ALL, COMMAND, ALL, 0}, + + {ELSE_PART, COMPOUND_LIST, ELSE_PART, ALL, ELIF}, + + {IF_CLAUSE, ALL, COMMAND, ALL, 0} {0, 0, 0}, } diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 711b4761..7c2d5e92 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 16:26:30 by ariard #+# #+# */ -/* Updated: 2017/02/12 18:46:15 by ariard ### ########.fr */ +/* Updated: 2017/02/12 19:18:30 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -283,6 +283,52 @@ t_stackmatch g_stackmatch[] = {CMD_NAME, TK_BANG}, {CMD_NAME, SEPARATOR_OP}, {CMD_NAME, NEWLINE_LIST}, + + {SIMPLE_COMMNAND, LINEBREAK}, + {SIMPLE_COMMAND, TK_BANG}, + {SIMPLE_COMMAND, SEPARATOR_OP}, + {SIMPLE_COMMAND, NEWLINE_LIST}, + + {DO_GROUP, COMPOUND_LIST}, + {DO_GROUP, NAME}, + {DO_GROUP, SEQUENTIAL_SEP}, + + {LOOP, WHILE}, + {LOOP, UNTIL}, + + {BRACE_GROUP, LINEBREAK}, + {BRACE_GROUP, TK_BANG}, + {BRACE_GROUP, SEPARATOR_OP}, + {BRACE_GROUP, NEWLINE_LIST}, + + {FNAME, LINEBREAK}, + {FNAME, TK_BANG}, + {FNAME, SEPARATOR_OP}, + {FNAME, NEWLINE_LIST}, + + {FUNCTION_BODY, FUNC}, + + {FUNCTION_DEFINITION, LINEBREAK}, + {FUNCTION_DEFINITION, TK_BANG}, + {FUNCTION_DEFINITION, SEPARATOR_OP}, + {FUNCTION_DEFINITION, NEWLINE_LIST}, + + {UNTIL_CLAUSE, LINEBREAK}, + {UNTIL_CLAUSE, TK_BANG}, + {UNTIL_CLAUSE, SEPARATOR_OP}, + {UNTIL_CLAUSE, NEWLINE_LIST}, + + {WHILE_CLAUSE, LINEBREAK}, + {WHILE_CLAUSE, TK_BANG}, + {WHILE_CLAUSE, SEPARATOR_OP}, + {WHILE_CLAUSE, NEWLINE_LIST}, + + {ELSE_PART, COMPOUND_LIST}, + + {IF_CLAUSE, LINEBREAK}, + {IF_CLAUSE, TK_BANG}, + {IF_CLAUSE, SEPARATOR_OP}, + {IF_CLAUSE, NEWLINE_LIST}, {0, 0}, };