Skip to content
Snippets Groups Projects
Commit 0959b54a authored by Sellami Youssef's avatar Sellami Youssef
Browse files

Grammar correction

parent 9e90172e
Branches
No related tags found
1 merge request!3Master
...@@ -11,7 +11,7 @@ non-terminals MUL_EXPRS MUL_EXPR ...@@ -11,7 +11,7 @@ non-terminals MUL_EXPRS MUL_EXPR
non-terminals CMP_EXPRS CMP_EXPR non-terminals CMP_EXPRS CMP_EXPR
non-terminals EQ_EXPRS EQ_EXPR non-terminals EQ_EXPRS EQ_EXPR
non-terminals AFTER_IDENTIFIER LARGS REST_ARGS non-terminals AFTER_IDENTIFIER_INSTR AFTER_IDENTIFIER_FACTOR LARGS REST_ARGS
axiom S axiom S
{ {
...@@ -44,12 +44,12 @@ FUNDEF -> IDENTIFIER SYM_LPARENTHESIS LPARAMS SYM_RPARENTHESIS INSTR { Node(Tfun ...@@ -44,12 +44,12 @@ FUNDEF -> IDENTIFIER SYM_LPARENTHESIS LPARAMS SYM_RPARENTHESIS INSTR { Node(Tfun
LPARAMS -> IDENTIFIER REST_PARAMS { Node(Targ, [$1])::$2 } LPARAMS -> IDENTIFIER REST_PARAMS { Node(Targ, [$1])::$2 }
LPARAMS -> { [] } LPARAMS -> { [] }
REST_PARAMS -> SYM_COMMA LPARAMS { $2 } REST_PARAMS -> SYM_COMMA IDENTIFIER REST_PARAMS { Node(Targ, [$2])::$3 }
REST_PARAMS -> { [] } REST_PARAMS -> { [] }
LARGS -> EXPR REST_ARGS { $1::$2 } LARGS -> EXPR REST_ARGS { $1::$2 }
LARGS -> { [] } LARGS -> { [] }
REST_ARGS -> SYM_COMMA LARGS { $2 } REST_ARGS -> SYM_COMMA EXPR REST_ARGS { $2::$3 }
REST_ARGS -> { [] } REST_ARGS -> { [] }
LINSTRS -> INSTR INSTRS { Node(Tblock, $1::$2) } LINSTRS -> INSTR INSTRS { Node(Tblock, $1::$2) }
...@@ -61,7 +61,7 @@ INSTR -> SYM_IF SYM_LPARENTHESIS EXPR SYM_RPARENTHESIS SYM_LBRACE LINSTRS SYM_RB ...@@ -61,7 +61,7 @@ INSTR -> SYM_IF SYM_LPARENTHESIS EXPR SYM_RPARENTHESIS SYM_LBRACE LINSTRS SYM_RB
INSTR -> SYM_WHILE SYM_LPARENTHESIS EXPR SYM_RPARENTHESIS INSTR { Node(Twhile, [$3; $5]) } INSTR -> SYM_WHILE SYM_LPARENTHESIS EXPR SYM_RPARENTHESIS INSTR { Node(Twhile, [$3; $5]) }
INSTR -> SYM_RETURN EXPR SYM_SEMICOLON { Node(Treturn, [$2]) } INSTR -> SYM_RETURN EXPR SYM_SEMICOLON { Node(Treturn, [$2]) }
INSTR -> SYM_PRINT SYM_LPARENTHESIS EXPR SYM_RPARENTHESIS SYM_SEMICOLON { Node(Tprint, [$3]) } INSTR -> SYM_PRINT SYM_LPARENTHESIS EXPR SYM_RPARENTHESIS SYM_SEMICOLON { Node(Tprint, [$3]) }
INSTR -> IDENTIFIER AFTER_IDENTIFIER SYM_SEMICOLON { INSTR -> IDENTIFIER AFTER_IDENTIFIER_INSTR SYM_SEMICOLON {
match $2 with match $2 with
| Assign exp -> Node(Tassign, [$1; exp]) | Assign exp -> Node(Tassign, [$1; exp])
| Funcall args -> Node(Tcall, [$1; Node(Targs, args)]) | Funcall args -> Node(Tcall, [$1; Node(Targs, args)])
...@@ -69,9 +69,8 @@ INSTR -> IDENTIFIER AFTER_IDENTIFIER SYM_SEMICOLON { ...@@ -69,9 +69,8 @@ INSTR -> IDENTIFIER AFTER_IDENTIFIER SYM_SEMICOLON {
} }
INSTR -> SYM_LBRACE LINSTRS SYM_RBRACE { $2 } INSTR -> SYM_LBRACE LINSTRS SYM_RBRACE { $2 }
AFTER_IDENTIFIER -> SYM_ASSIGN EXPR { Assign $2 } AFTER_IDENTIFIER_INSTR -> SYM_ASSIGN EXPR { Assign $2 }
AFTER_IDENTIFIER -> SYM_LPARENTHESIS LARGS SYM_RPARENTHESIS { Funcall $2 } AFTER_IDENTIFIER_INSTR -> SYM_LPARENTHESIS LARGS SYM_RPARENTHESIS { Funcall $2 }
AFTER_IDENTIFIER -> { Nothing }
ELSE -> SYM_ELSE SYM_LBRACE LINSTRS SYM_RBRACE { $3 } ELSE -> SYM_ELSE SYM_LBRACE LINSTRS SYM_RBRACE { $3 }
ELSE -> { NullLeaf } ELSE -> { NullLeaf }
...@@ -104,7 +103,7 @@ MUL_EXPRS -> SYM_MOD MUL_EXPR MUL_EXPRS { (Tmod, $2)::$3 } ...@@ -104,7 +103,7 @@ MUL_EXPRS -> SYM_MOD MUL_EXPR MUL_EXPRS { (Tmod, $2)::$3 }
MUL_EXPRS -> { [] } MUL_EXPRS -> { [] }
FACTOR -> INTEGER { $1 } FACTOR -> INTEGER { $1 }
FACTOR -> IDENTIFIER AFTER_IDENTIFIER { FACTOR -> IDENTIFIER AFTER_IDENTIFIER_FACTOR {
match $2 with match $2 with
| Funcall args -> Node(Tcall, [$1; Node(Targs, args)]) | Funcall args -> Node(Tcall, [$1; Node(Targs, args)])
| Nothing -> $1 | Nothing -> $1
...@@ -114,3 +113,6 @@ FACTOR -> SYM_LPARENTHESIS EXPR SYM_RPARENTHESIS { $2 } ...@@ -114,3 +113,6 @@ FACTOR -> SYM_LPARENTHESIS EXPR SYM_RPARENTHESIS { $2 }
IDENTIFIER -> SYM_IDENTIFIER {StringLeaf $1} IDENTIFIER -> SYM_IDENTIFIER {StringLeaf $1}
INTEGER -> SYM_INTEGER {IntLeaf $1} INTEGER -> SYM_INTEGER {IntLeaf $1}
AFTER_IDENTIFIER_FACTOR -> { Nothing }
AFTER_IDENTIFIER_FACTOR -> SYM_LPARENTHESIS LARGS SYM_RPARENTHESIS { Funcall $2 }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment