let bs_identifier =
let h = Hashtbl.create 97 in
List.iter (fun (i,t) -> Hashtbl.add h i t)
[
"\\at", AT;
"\\base_addr", BASE_ADDR;
"\\block_length", BLOCK_LENGTH;
"\\empty", EMPTY;
"\\exists", EXISTS;
"\\false", FALSE;
"\\forall", FORALL;
"\\fresh", FRESH;
"\\from", FROM;
"\\initialized", INITIALIZED;
"\\inter", INTER;
"\\lambda", LAMBDA;
"\\let", LET;
"\\nothing", NOTHING;
"\\null", NULL;
"\\old", OLD;
"\\result", RESULT;
"\\separated", SEPARATED;
"\\true", TRUE;
"\\type", BSTYPE;
"\\typeof", TYPEOF;
"\\union", BSUNION;
"\\valid", VALID;
"\\valid_index", VALID_INDEX;
"\\valid_range", VALID_RANGE;
"\\with", WITH;
];
fun lexbuf ->
let s = lexeme lexbuf in
try Hashtbl.find h s with Not_found -> IDENTIFIER s