let white = [' ' '\t']+
let newline = '\r' | '\n' | "\r\n"
let comment = '#' (_#'\n')*
-let id = ['a'-'z' 'A'-'Z' '_'] ['a'-'z' 'A'-'Z' '0'-'9' '_']*
+let id = ['a'-'z' 'A'-'Z' '_'] ['a'-'z' 'A'-'Z' '0'-'9' '_' '-']*
rule read =
parse
| newline { new_line lexbuf; read lexbuf }
| "," { COMMA }
| ":" { COLON }
+ | ";" { SEMICOLON }
| "=" { EQUALS }
| "(" { LEFT_PAREN }
| ")" { RIGHT_PAREN }
*)
and read_code buf level =
parse
- | '{' { incr level; read_code buf level lexbuf }
+ | '{' { Ast.Substs.add_char buf '{';
+ incr level; read_code buf level lexbuf }
| '}' { decr level;
if !level = 0 then CODE (Ast.Substs.get buf)
else (