26 lines
596 B
OCaml
26 lines
596 B
OCaml
{
|
|
open Parser
|
|
}
|
|
|
|
let whitespace = [' ' '\t']+
|
|
let newline = ('\n'|"\r\n")
|
|
let digit = ['0'-'9']
|
|
let alpha = ['a'-'z' 'A'-'Z' '_']
|
|
let alphanumeric = (alpha|digit)
|
|
|
|
rule read_token = parse
|
|
| "type" { TYPE }
|
|
| "int" { INT }
|
|
| "string" { STRING }
|
|
| "date" { DATE }
|
|
| "range" { RANGE }
|
|
| "values" { VALUES }
|
|
| newline { LF }
|
|
| '=' { EQUALS }
|
|
| '[' { LEFT_BRACKET }
|
|
| ']' { RIGHT_BRACKET }
|
|
| ',' { COMMA }
|
|
| whitespace { read_token lexbuf }
|
|
| alphanumeric* as ident { IDENT ident }
|
|
| eof { EOF }
|