From a07ed6eea7e85c3a92694ff08eb1f41a53cb32bf Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Sun, 12 Feb 2017 18:47:16 +0100 Subject: [PATCH] moaaaar grammar --- 42sh/includes/.parser.h.swn | Bin 0 -> 20480 bytes 42sh/includes/parser.h | 4 +- 42sh/src/parser/.eval_sym.c.swm | Bin 0 -> 16384 bytes 42sh/src/parser/.eval_sym.c.swn | Bin 0 -> 24576 bytes 42sh/src/parser/.produce_sym.c.swn | Bin 0 -> 12288 bytes 42sh/src/parser/aggregate_sym.c | 68 +++++++++++++++++---- 42sh/src/parser/eval_sym.c | 92 +++++++++++++++++++++++------ 42sh/src/parser/produce_sym.c | 2 +- 8 files changed, 133 insertions(+), 33 deletions(-) create mode 100644 42sh/includes/.parser.h.swn create mode 100644 42sh/src/parser/.eval_sym.c.swm create mode 100644 42sh/src/parser/.eval_sym.c.swn create mode 100644 42sh/src/parser/.produce_sym.c.swn diff --git a/42sh/includes/.parser.h.swn b/42sh/includes/.parser.h.swn new file mode 100644 index 0000000000000000000000000000000000000000..2abcaac7df2b3534f54e4e69c54e7874312065cc GIT binary patch literal 20480 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 x`|4V)2{ui<|_EG=< literal 0 HcmV?d00001 diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index d15dc7a9..8ca18491 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/10 15:58:05 by ariard ### ########.fr */ +/* Updated: 2017/02/12 17:41:16 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -203,8 +203,8 @@ extern t_prodmatch g_prodmatch[]; struct s_stackmatch { - t_sym under; t_sym top; + t_sym under; }; typedef struct s_stackmatch t_stackmatch; diff --git a/42sh/src/parser/.eval_sym.c.swm b/42sh/src/parser/.eval_sym.c.swm new file mode 100644 index 0000000000000000000000000000000000000000..f8bd1d65c0b323fce7f61b953a91a4b917bfc3bd GIT binary patch literal 16384 zcmeI3Z)_W99mlU7uzApJu#Jf#;FhRe(pZV}r)%&is$*YTGskxAWT}`o<0jscrcF}Y zWvfC)kvfDrK)@z=1$0pM0%`DKXcK5dplOJy0>+=AX=v{l8k#_Wv`$nY_&oRAouB9N zld38e0_m>$#J=D6x!?0V-{W=)BJ3g3l*sgP&tzS5O;QoKU-|5@7$*DIN z>&-LKu>-LKu>-LK zu>-LKu>=2?4zyP{JD;TGn}gP$2wpcCuU7>7t>E=jh92z3FR=r$1F-|K1F-|K1F-|K z1F-|K1F-|K1F-|K1OI~#)Oo&t1MNzQ1puD^p9tFc-D@4^ZrB1(U*kASuoa%);yCxi zE%4iSIL?D`5>{aa_CpDFK@VI9=ilx)e}@<0*YE^<8IHrfXNfv4dycnDTu1*3s0j`KVC5uAZjumlD82n@nI z;ms=@=M{Jk9*0L@9qQmg7PiAx@Ta#q&adG6a2h@h%dj8DU=(hIb8mH=m*IzS22Q~W z+yUdT72X5q-$FTf22R6+a0rSp1~+Y)R}Vr}~NnpenACf#gls$7~W=4yp}b$UJNL}Jz3P@LZ9 z6)j?LsK{FMW()bE7bO+-iFnm3XDXTLQl(ZZi^{?{@-O&}@99`4B>1bAKIkmKsg*hxFtKY1M^`%EVats~cqO#ktQ>Awtte^}myW4Sk7nkP_ADeHuJ@Pldg9|;} zZ0>M(T(-^KF(eXR#w|=ZvpQdIH|EpsNNRZ3P-a)w>j%U{Hv$kxe7JA>?D!p?8TFCv*N zk{(EFZ{&WM@S@YG1=Hy;CGW(B_#Y)ylZWqR!prtS;X^m%i2462bIt?IW5xVGe7^rW z^ZsALFW^ad3_c4F!78l40mwo>TnpF0o2(JM0zZN0;Boj0d;;q5G1vzqa1;E4b%gWq zdw2n!g0I0>;UpY^{jd|p;3jxC{EKykSK%x?58s0);8FM@tidA8!VKhK6h`2Euo*VN zYpgk(h3~+_(1I#dAO$zT-&kMxE4&0hhBNRD_&gkiWtfFM;KB#sO86t|4KKp8@NM`K ztieH;fIV(|U6js55ER4f0_zPq98k~in!U;GEhu~iLD2Q>L zg?Nh{h#iO>h#mOvII!*{nvM3c=Ca#2+<%*sU_Y@qFu=P+B&39pSiHyWTW;JZ{@7T*HT>0 zeoZ0hijqR~+bks}a+!)(tg%8IO!AZ?P{l-iJ;{AZVohD9vCZ3cJu+VphqFszSEO7p z84qvrqvnsW))e~11YUa{pdLA?`@yt6>54NDgN2>hXqGR6 zNRb1wf0-$UAsiv$s2>Q2S(cHjIclMBeMdej5{Jo%_SuZ0!9Yg)T8r}-tMy*iDU7l^ zE)|>CQc;u1T$PDRCQIMVXIxS(1giOkAbJ&Qw%S6CV(O@d;qGQkmNs~1r>eRf4z``VyXY~7HG(Nr1iZfUMm-0-x@l|e@M literal 0 HcmV?d00001 diff --git a/42sh/src/parser/.eval_sym.c.swn b/42sh/src/parser/.eval_sym.c.swn new file mode 100644 index 0000000000000000000000000000000000000000..15f49d57bcf37e914aa7f93299bb64c851f39efa GIT binary patch literal 24576 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 literal 0 HcmV?d00001 diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 35b9ea4d..d2bccfe3 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/09 20:19:29 by ariard ### ########.fr */ +/* Updated: 2017/02/12 18:47:00 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,25 +14,26 @@ t_aggrematch g_aggrematch[] = { - {CMD_SUFFIX, TK_WORD, CMD_SUFFIX}, - {TK_PIPE, TK_WORD, PATTERN}, - {WORDLIST, TK_WORD, WORDLIST}, + {TK_WORD, CMD_SUFFIX, CMD_SUFFIX, ALL, 0}, + {TK_WORD, TK_PIPE, PATTERN, ALL, 0}, + {TK_WORD, WORDLIST, WORDLIST, ALL, 0}, - {CMD_PREFIX, TK_ASSIGNEMENT_WORD, CMD_PREFIX}, + {TK_ASSIGNEMENT_WORD, CMD_PREFIX,CMD_PREFIX, ALL, 0}, - {ELSE_PART, TK_FI, IF_CLAUSE}, - {COMPOUND_LIST, TK_FI, IF_CLAUSE}, + {TK_FI, ELSE_PART, IF_CLAUSE, ALL, tant que IF}, + {TK_FI, COMPOUND_LIST, IF_CLAUSE, ALL, tant que IF}, - {COMPOUND_LIST, TK_DONE, DO_GROUP}, - {COMPOUND_LIST, TK_RBRACE, BRACE_GROUP}, + {TK_DONE, COMPOUND_LIST, DO_GROUP, ALL, tant DO}, - {TK_PAREN_CLOSE, COMPOUND_LIST, SUBSHELL, 2}, + {TK_RBRACE, COMPOUND_LIST, BRACE_GROUP, ALL tant que LBRACE}, + + {TK_PAREN_CLOSE, COMPOUND_LIST, SUBSHELL, ALL, tant que TK_PAREN_OPEN}, //watch this - {SEPARATOR, COMPOUND_LIST, COMPOUND_LIST, 1}, + {SEPARATOR, COMPOUND_LIST, COMPOUND_LIST, ALL, 0}, - {LINEBREAK, TK_SEMI, SEPARATOR_OP, 1}, -//prediction one + {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 '('}, {NEWLINE_LIST, NEWLINE_LIST, NEWLINE_LIST, ALL, tant que newline}, @@ -42,7 +43,48 @@ t_aggrematch g_aggrematch[] = {NEWLINE_LIST, TERM, SEPARATOR, ALL, 0}, {NEWLINE_LIST, COMPOUND_LIST, SEPARATOR, ALL, 0}, + {IO_HERE, ALL, IO_REDIRECT, ALL, TK_IO_NUMBER}, + + {FILENAME, TK_LESS, IO_FILE, ALL, TK_LESS}, + {FILENAME, TK_LESSAND, IO_FILE, ALL, TK_LESSAND}, + {FILENAME, TK_GREAT, IO_FILE, ALL, TK_GREAT}, + {FILENAME, TK_GREATAND, IO_FILE, ALL, TK_GREATAND}, + {FILENAME, TK_DGREAT, IO_FILE, ALL, TK_DGREAT}, + {FILENAME, TK_LESGREAT, IO_FILE, ALL, TK_LESSGREAT}, + {FILENAME, TK_CLOBBER, IO_FILE, ALL, TK_CLOBBER}, + + {IO_FILE, ALL, IO_REDIRECT, ALL, TK_IO_NUMBER}, + + {IO_REDIRECT, COMPOUND_COMMAND, REDIRECT_LIST, ALL, REDIRECT_LIST}, + {IO_REDIRECT, CMD_SUFFIX, CMD_SUFFIX, ALL, CMD_SUFFIX}, + {IO_REDIRECT, CMD_NAME, CMD_SUFFIX, ALL, 0}, + {IO_REDIRECT, CMD_WORD, CMD_SUFFIX, ALL, 0}, + {IO_REDIRECT, CMD_PREFIX, CMD_PREFIX, ALL, CMD_PREFIX}, + {IO_REDIRECT, LINEBREAK, CMD_PREFIX, ALL, 0}, + {IO_REDIRECT, TK_BANG, CMD_PREFIX, ALL, 0}, + {IO_REDIRECT, SEPARATOR_OP, CMD_PREFIX, ALL, 0}, + {IO_REDIRECT, NEWLINE_LIST, CMD_PREFIX, ALL, 0}, + + {REDIRECT_LIST, COMPOUND_COMMAND, COMPOUND_COMMAND, ALL, COMPOUND_COMMAND}, + + {CMD_SUFFIX, CMD_WORD, SIMPLE_COMMAND, ALL, CMD_PREFIX}, + {CMD_SUFFIX, CMD_NAME, SIMPLE_COMMAND, ALL, CMD_NAME}, + + {CMD_PREFIX, LINEBREAK, SIMPLE_COMMAND, TK_NEWLINE ou TK_SEMI ou TK_AMP, 0}, + {CMD_PREFIX, TK_BANG, SIMPLE_COMMAND, TK_NEWLINE ou TK_SEMI ou TK_AMP, 0}, + {CMD_PREFIX, SEPARATOR_OP, SIMPLE_COMMAND, TK_NEWLINE ou TK_SEMI ou TK_AMP, 0}, + {CMD_PREFIX, NEWLINE_LIST, SIMPLE_COMMAND, TK_NEWLINE ou TK_SEMI ou TK_AMP, 0}, + + {CMD_WORD, CMD_PREFIX, SIMPLE_COMMAND, TK_NEWLINE ou TK_SEMI ou TK_AMP, + CMD_PREFIX}, + + {CMD_NAME, LINEBREAK, SIMPLE_COMMAND, TK_NEWLINE ou TK_SEMI ou TK_AMP, 0}, + {CMD_NAME, TK_BANG, 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}, + {0, 0, 0}, +} int aggregate_sym(t_sym **stack, t_sym *new_sym) { diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index 72313720..711b4761 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/10 16:57:46 by ariard ### ########.fr */ +/* Updated: 2017/02/12 18:46:15 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,22 +14,22 @@ t_stackmatch g_stackmatch[] = { - {CMD_SUFFIX, TK_WORD}, - {TK_PIPE, TK_WORD}, - {CASE, TK_WORD}, - {WORDLIST, TK_WORD}, + {TK_WORD, CMD_SUFFIX}, + {TK_WORD, TK_PIPE}, + {TK_WORD, CASE}, + {TK_WORD, WORDLIST}, - {CMD_PREFIX, TK_ASSIGNEMENT_WORD}, + {TK_ASSIGNEMENT_WORD, CMD_PREFIX}, - {REDIRECT_LIST, TK_IO_NUMBER}, - {CMD_SUFFIX, TK_IO_NUMBER}, - {CMD_PREFIX, TK_IO_NUMBER}, - {CMD_NAME, TK_IO_NUMBER}, - {CMD_WORD, TK_IO_NUMBER}, - {LINEBREAK, TK_IO_NUMBER}, - {TK_BANG, TK_IO_NUMBER}, - {SEPARATOR_OP, TK_IO_NUMBER}, - {NEWLINE_LIST, TK_IO_NUMBER}, + {TK_IO_NUMBER, REDIRECT_LIST}, + {TK_IO_NUMBER, CMD_SUFFIX}, + {TK_IO_NUMBER, CMD_PREFIX}, + {TK_IO_NUMBER, CMD_NAME}, + {TK_IO_NUMBER, CMD_WORD}, + {TK_IO_NUMBER, LINEBREAK}, + {TK_IO_NUMBER, TK_BANG}, + {TK_IO_NUMBER, SEPARATOR_OP}, + {TK_IO_NUMBER, NEWWLINE_LIST}, {TK_AND_IF, AND_OR}, @@ -224,6 +224,65 @@ t_stackmatch g_stackmatch[] = {NEWLINE_LIST, COMPOUND_LIST}, {NEWLINE_LIST, COMPLETE_COMMANDS}, + {HERE_END, DLESS}, + {HERE_END, DLESSDASH}, + + {IO_HERE, TK_IO_NUMBER}, + {IO_HERE, REDIRECT_LIST}, + {IO_HERE, CMD_SUFFIX}, + {IO_HERE, CMD_PREFIX}, + {IO_HERE, CMD_WORD}, + {IO_HERE, CMD_NAME}, + {IO_HERE, LINEBREAK}, + {IO_HERE, TK_BANG}, + {IO_HERE, SEPARATOR_OP}, + {IO_HERE, NEWLINE_LIST}, + + {FILENAME, TK_LESS}, + {FILENAME, TK_LESSAND}, + {FILENAME, TK_GREAT}, + {FILENAME, TK_GREATAND}, + {FILENAME, TK_DGREAT}, + {FILENAME, TK_LESSGREAT}, + {FILENAME, TK_CLOBBER}, + + {IO_FILE, TK_IO_NUMBER}, + {IO_FILE, REDIRECT_LIST}, + {IO_FILE, CMD_SUFFIX}, + {IO_FILE, CMD_PREFIX}, + {IO_FILE, CMD_WORD}, + {IO_FILE, CMD_NAME}, + {IO_FILE, LINEBREAK}, + {IO_FILE, TK_BANG}, + {IO_FILE, SEPARATOR_OP}, + {IO_FILE, NEWLINE_LIST}, + + {IO_REDIRECT, REDIRECT_LIST}, + {IO_REDIRECT, CMD_SUFFIX}, + {IO_REDIRECT, CMD_PREFIX}, + {IO_REDIRECT, CMD_WORD}, + {IO_REDIRECT, CMD_NAME}, + {IO_REDIRECT, LINEBREAK}, + {IO_REDIRECT, TK_BANG}, + {IO_REDIRECT, SEPARATOR_OP}, + {IO_REDIRECT, NEWLINE_LIST}, + + {REDIRECT_LIST, COMPOUND_COMMAND} + + {CMD_SUFFIX, CMD_WORD}, + {CMD_SUFFIX, CMD_NAME}, + + {CMD_PREFIX, LINEBREAK}, + {CMD_PREFIX, TK_BANG}, + {CMD_PREFIX, SEPARATOR_OP}, + {CMD_PREFIX, NEWLINE_LIST}, + + {CMD_WORD, CMD_PREFIX}, + + {CMD_NAME, LINEBREAK}, + {CMD_NAME, TK_BANG}, + {CMD_NAME, SEPARATOR_OP}, + {CMD_NAME, NEWLINE_LIST}, {0, 0}, }; @@ -235,8 +294,7 @@ int eval_sym(t_sym stack, t_sym new_sym) i = 0; while (g_stackmatch[i].top) { - if (stack == g_stackmatch[i].under - && new_sym == g_stackmatch[i].top) + if (new_sym == g_stackmatch[i].top && stack == g.stackmatch[i].under) return (0); i++; } diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index 112ada0f..8dea1220 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:58:34 by ariard #+# #+# */ -/* Updated: 2017/02/10 16:57:17 by ariard ### ########.fr */ +/* Updated: 2017/02/12 17:41:45 by ariard ### ########.fr */ /* */ /* ************************************************************************** */