let QSTR = [^ '"' '\\']+
rule comm_token = parse
- | "*)" { query_token lexbuf }
- | [^ '*']* { comm_token lexbuf }
+ | "(*" { comm_token lexbuf; comm_token lexbuf }
+ | "*)" { () }
+ | ['*' '('] { comm_token lexbuf }
+ | [^ '*' '(']* { comm_token lexbuf }
and string_token = parse
| '"' { DQ }
| '\\' _ { STR (String.sub (Lexing.lexeme lexbuf) 1 1) }
| QSTR { STR (Lexing.lexeme lexbuf) }
| eof { EOF }
and query_token = parse
- | "(*" { comm_token lexbuf }
+ | "(*" { comm_token lexbuf; query_token lexbuf }
| SPC { query_token lexbuf }
| '"' { let str = qstr string_token lexbuf in
out ("STR " ^ str); STR str }