moar moar moar grammar
This commit is contained in:
parent
f16b0b923f
commit
2a70b3f702
4 changed files with 75 additions and 4 deletions
BIN
42sh/includes/.parser.h.swm
Normal file
BIN
42sh/includes/.parser.h.swm
Normal file
Binary file not shown.
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */
|
/* 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_OP,
|
||||||
SEPARATOR,
|
SEPARATOR,
|
||||||
SEQUENTIAL_SEP,
|
SEQUENTIAL_SEP,
|
||||||
|
LOOP,
|
||||||
|
FUNC,
|
||||||
ALL = TK_LESS | TK_GREAT | TK_DLESS | TK_DGREAT | TK_LESSAND | TK_GREATAND\
|
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_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\
|
| TK_PAREN_CLOSE | TK_BQUOTE | TK_SUBSHELL | TK_NEWLINE | TK_WHILE | TK_DO\
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
|
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/02/09 17:39:18 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,6 +35,7 @@ t_aggrematch g_aggrematch[] =
|
||||||
{LINEBREAK, TK_SEMI, SEPARATOR_OP, ALL, tant que TK_SEMI},
|
{LINEBREAK, TK_SEMI, SEPARATOR_OP, ALL, tant que TK_SEMI},
|
||||||
//do one
|
//do one
|
||||||
{LINEBREAK, TK_PAREN_CLOSE, TK_ESAC, CASE_ITEM_NS, tant que pattern ou '('},
|
{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, NEWLINE_LIST, NEWLINE_LIST, ALL, tant que newline},
|
||||||
{NEWLINE_LIST, NAME, SEPARATOR_SEP, ALL, 0},
|
{NEWLINE_LIST, NAME, 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, 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},
|
{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},
|
{0, 0, 0},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
|
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/02/09 16:26:30 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, TK_BANG},
|
||||||
{CMD_NAME, SEPARATOR_OP},
|
{CMD_NAME, SEPARATOR_OP},
|
||||||
{CMD_NAME, NEWLINE_LIST},
|
{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},
|
{0, 0},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue