{ open Parser } let eat_ws = [' ' '\t' '\n']* rule token = parse [' ' '\t' '\n'] { token lexbuf } (* skip blanks *) | ';'[^'\n']*'\n' { token lexbuf } (* skip comments *) | '(' { OPENP } | ')' { CLOSEP } | "->" { ARROW } | '|' { BAR } | '=' { EQ } | '@' { AT } | ['A'-'Z'] ['A'-'Z' 'a'-'z' '0'-'9' '_']* as id { ATOM id } | ['a'-'z'] ['A'-'Z' 'a'-'z' '0'-'9' '_']* as id { ID id } (* | ['!' '$' '%' '&' '*' '+' '.' '\\' '/' '<' '>' '?' '^' '~' '-']+ as id { OP id } *) | eof { EOF }