From b0d4b068aacd1924f234083c97a48a1049fc3929 Mon Sep 17 00:00:00 2001 From: Youssef <youssef.sellami@student-cs.fr> Date: Mon, 3 Mar 2025 14:58:18 +0100 Subject: [PATCH] grammar correction : an instruction can be a block --- expr_grammar_action.g | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/expr_grammar_action.g b/expr_grammar_action.g index d7734d1..d1d0e24 100644 --- a/expr_grammar_action.g +++ b/expr_grammar_action.g @@ -33,7 +33,7 @@ rules S -> FUNDEFS SYM_EOF { Node(Tlistglobdef, $1) } FUNDEFS -> FUNDEF FUNDEFS { Node(Tfundef, $1)::$2 } FUNDEFS -> { [] } -FUNDEF -> IDENTIFIER SYM_LPARENTHESIS LPARAMS SYM_RPARENTHESIS SYM_LBRACE LINSTRS SYM_RBRACE { [Node(Tfunname, [$1]); Node(Tfunargs, $3); Node(Tfunbody, [$6])] } +FUNDEF -> IDENTIFIER SYM_LPARENTHESIS LPARAMS SYM_RPARENTHESIS INSTR { [Node(Tfunname, [$1]); Node(Tfunargs, $3); Node(Tfunbody, [$5])] } LPARAMS -> IDENTIFIER REST_PARAMS { $1::$2 } LPARAMS -> { [] } @@ -46,10 +46,11 @@ INSTRS -> INSTR INSTRS { $1::$2 } INSTRS -> { [] } INSTR -> SYM_IF SYM_LPARENTHESIS EXPR SYM_RPARENTHESIS SYM_LBRACE LINSTRS SYM_RBRACE ELSE { Node(Tif, [$3; $6; $8]) } -INSTR -> SYM_WHILE SYM_LPARENTHESIS EXPR SYM_RPARENTHESIS SYM_LBRACE LINSTRS SYM_RBRACE { Node(Twhile, [$3; $6]) } +INSTR -> SYM_WHILE SYM_LPARENTHESIS EXPR SYM_RPARENTHESIS INSTR { Node(Twhile, [$3; $5]) } INSTR -> SYM_RETURN EXPR SYM_SEMICOLON { Node(Treturn, [$2]) } INSTR -> SYM_PRINT SYM_LPARENTHESIS EXPR SYM_RPARENTHESIS SYM_SEMICOLON { Node(Tprint, [$3]) } INSTR -> IDENTIFIER SYM_ASSIGN EXPR SYM_SEMICOLON { Node(Tassign, [$1; $3]) } +INSTR -> SYM_LBRACE LINSTRS SYM_RBRACE { $2 } ELSE -> SYM_ELSE SYM_LBRACE LINSTRS SYM_RBRACE { $3 } ELSE -> { NullLeaf } -- GitLab