
Untitled
By: a guest on
May 2nd, 2012 | syntax:
None | size: 0.65 KB | hits: 10 | expires: Never
Assign right uid to the variables met in the parser
%{
let new_id =
let counter = ref 0 in
fun () -> incr counter; !counter
%}
binding:
| ids = separated_nonempty_list(COMMA, IDENT) COLON INTEGER
{ List.map (fun id -> { name_v = id ; type_v = Type.Tint ; uid_v = new_id ()}) ids }
| ids = separated_nonempty_list(COMMA, IDENT) COLON BOOLEAN
{ List.map (fun id -> { name_v = id ; type_v = Type.Tbool ; uid_v = new_id ()}) ids}
command:
| id = IDENT COLONEQ e = expression
{ Cassign (Lvar { name_v = id; type_v = Type.Ttop; uid_v = -100}, e) }
expression_int:
| id = IDENT { Evar { name_v = id; type_v = Type.Ttop; uid_v = -100} }