{ (******************************************************) (* Claudio Sacerdoti Coen *) (* 14/05/2000 *) (******************************************************) open Parser let comment_depth = ref 0;; let charint_of_lexeme l = String.set l 0 '0' ; int_of_string l ;; } let digit = ['0'-'9']|['A'-'F'] rule token = parse [' ' '\t' '\n'] { token lexbuf } | "let" { LET } | (['a'-'z']|'_')(['a'-'z']|['A'-'Z']|'_'|['0'-'9']|'\'')* { IDENT (Lexing.lexeme lexbuf) } | '=' { EQ } | ";;" { END_OF_LET } | "|" { PIPE } | '[' { LBRACKET } | ']' { RBRACKET } | '-' { RANGE } | "(*" { incr comment_depth ; comment lexbuf } | "#x" digit digit digit digit { CHAR (charint_of_lexeme (Lexing.lexeme lexbuf)) } | eof { EOF } and comment = parse "(*" { incr comment_depth ; comment lexbuf } | "*)" { decr comment_depth ; if !comment_depth = 0 then token lexbuf else comment lexbuf } | _ { comment lexbuf }