%{
module Ast = Tiger_absyn
+ module Err = Tiger_error
module Sym = Tiger_symbol
let pos () =
%%
-program: exp EOF { $1 };
+program:
+ | exp EOF { $1 }
+ | error {Err.raise (Err.Invalid_syntax (pos ()))}
+ ;
exp:
| NIL
;
rec_fields_bind:
+ | { [] }
| ID EQ exp { (Sym.of_string $1, $3, pos ()) :: [] }
| ID EQ exp COMMA rec_fields_bind { (Sym.of_string $1, $3, pos ()) :: $5 }
;