fix do
This commit is contained in:
parent
ea27236f04
commit
5b915a88e8
1 changed files with 20 additions and 18 deletions
38
parser.mly
38
parser.mly
|
@ -51,12 +51,12 @@ args_ident:
|
||||||
/* ( */
|
/* ( */
|
||||||
| Lpardeb ; s = args_ident { s }
|
| Lpardeb ; s = args_ident { s }
|
||||||
|
|
||||||
/* a, ... */
|
/* type a, ... */
|
||||||
| t = Ltype ; a = arg_ident ; Lcomma ; s = args_ident { Arg { type_t = t
|
| t = Ltype ; a = arg_ident ; Lcomma ; s = args_ident { Arg { type_t = t
|
||||||
; name = a
|
; name = a
|
||||||
} :: s }
|
} :: s }
|
||||||
|
|
||||||
/* c) */
|
/* type c) */
|
||||||
| t = Ltype ; a = arg_ident ; Lparfin { [ Arg { type_t = t
|
| t = Ltype ; a = arg_ident ; Lparfin { [ Arg { type_t = t
|
||||||
; name = a } ] }
|
; name = a } ] }
|
||||||
|
|
||||||
|
@ -98,24 +98,11 @@ instr:
|
||||||
[ Assign { var = v ; expr = e ; pos = $startpos($2) } ]
|
[ Assign { var = v ; expr = e ; pos = $startpos($2) } ]
|
||||||
}
|
}
|
||||||
|
|
||||||
/* function(); */
|
/* e; */
|
||||||
| f = Lvar ; a = args_expr ; Lsc {
|
| e = expr ; Lsc {
|
||||||
[ Do { expr = Call { func = f ; args = a ; pos = $startpos(a) } ; pos = $startpos} ]
|
[ Do { expr = e ; pos = $startpos} ]
|
||||||
}
|
}
|
||||||
|
|
||||||
args_expr:
|
|
||||||
/* ( */
|
|
||||||
| Lpardeb ; s = args_expr { s }
|
|
||||||
|
|
||||||
/* a, ... */
|
|
||||||
| a = expr ; Lcomma ; s = args_expr { a :: s }
|
|
||||||
|
|
||||||
/* c) */
|
|
||||||
| a = expr ; Lparfin { [ a ] }
|
|
||||||
|
|
||||||
/* ) */
|
|
||||||
| Lparfin { [] }
|
|
||||||
|
|
||||||
expr:
|
expr:
|
||||||
/* int */
|
/* int */
|
||||||
| n = Lint {
|
| n = Lint {
|
||||||
|
@ -151,4 +138,19 @@ expr:
|
||||||
| a = expr ; Ldiv ; b = expr {
|
| a = expr ; Ldiv ; b = expr {
|
||||||
Call { func = "%div" ; args = [ a ; b ] ; pos = $startpos($2) }
|
Call { func = "%div" ; args = [ a ; b ] ; pos = $startpos($2) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* function() */
|
||||||
|
| f = Lvar ; Lpardeb ; a = args_expr {
|
||||||
|
Call { func = f ; args = a ; pos = $startpos(a) }
|
||||||
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
args_expr:
|
||||||
|
/* a, ... */
|
||||||
|
| a = expr ; Lcomma ; s = args_expr { a :: s }
|
||||||
|
|
||||||
|
/* c) */
|
||||||
|
| a = expr ; Lparfin { [ a ] }
|
||||||
|
|
||||||
|
/* ) */
|
||||||
|
| Lparfin { [] }
|
||||||
|
|
Reference in a new issue