pieuvre/lexer.mll
2024-04-16 10:07:09 +02:00

32 lines
765 B
OCaml

{
open Parser
exception Eof
}
let lowercase = ['a'-'z']
let uppercase = ['A'-'Z']
let digit = ['0'-'9']
let word = (lowercase | uppercase)*
let var_id = lowercase lowercase* digit*
let ty_id = uppercase uppercase* digit*
rule token = parse
| [' ' '\t'] { token lexbuf }
| '\n' { EOL }
| '+' { PLUS }
| '*' { TIMES }
| "True" { TOP }
| "False" { BOT }
| '(' { LPAREN }
| ')' { RPAREN }
| "fun" { FUN }
| ':' { COLON }
| "=>" { ARR }
| "->" { TARR }
| '~' { TILDE }
| "exf" { EXFALSO }
| var_id as s { VARID(s) }
| ty_id as s { TYID(s) }
| eof { raise Eof }