pieuvre/lexer.mll
2024-05-05 20:33:39 +02:00

44 lines
1.0 KiB
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 }
| '.' { DOT }
| '+' { PLUS }
| '*' { TIMES }
| "True" { TOP }
| "False" { BOT }
| '(' { LPAREN }
| ')' { RPAREN }
| "fun" { FUN }
| ':' { COLON }
| "=>" { ARR }
| "->" { TARR }
| '~' { TILDE }
| "exf" { EXFALSO }
| "/\\" { AND }
| "\\/" { OR }
| "Goal" { GOAL }
| "exact" { EXACT }
| "assumption" { ASSUMPTION }
| "intros" { INTROS }
| "intro" { INTRO }
| "cut" { CUT }
| "apply" { APPLY }
| var_id as s { VARID(s) }
| ty_id as s { TYID(s) }
| eof { raise Eof }