ocaml_sql_parser/lexer/lexer.mll
2024-11-24 17:10:33 +01:00

28 lines
650 B
OCaml

{
open Parser
}
let whitespace = [' ' '\t']+
let digit = ['0'-'9']
let alpha = ['a'-'z' 'A'-'Z' '_']
let alphanumeric = (alpha|digit)
rule read_token = parse
| "SELECT" { SELECT }
| "DISTINCT" { DISTINCT }
| "FROM" { FROM }
| "LEFT" { LEFT }
| "RIGHT" { RIGHT }
| "CROSS" { CROSS }
| "UNION" { UNION }
| "JOIN" { JOIN }
| "ON" { ON }
| "*" { ASTERISK }
| "." { DOT }
| "=" { EQUALS_OPERATOR }
| whitespace { read_token lexbuf }
| "WHERE" { WHERE }
| alpha alphanumeric* as ident { IDENT ident }
| "," { COMMA }
| eof { EOF }