48 lines
1.2 KiB
OCaml
48 lines
1.2 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' '\n'] { token lexbuf }
|
|
| '.' { DOT }
|
|
| '+' { PLUS }
|
|
| '*' { TIMES }
|
|
| "True" { TOP }
|
|
| "False" { BOT }
|
|
| '(' { LPAREN }
|
|
| ')' { RPAREN }
|
|
| "fun" { FUN }
|
|
| ':' { COLON }
|
|
| "=>" { ARR }
|
|
| "->" { TARR }
|
|
| '~' { TILDE }
|
|
| "exf" { EXFALSO }
|
|
| "/\\" { AND }
|
|
| "\\/" { OR }
|
|
|
|
| "Goal" { GOAL }
|
|
| "Undo" { UNDO }
|
|
| "Qed" { QED }
|
|
| "exact" { EXACT }
|
|
| "assumption" { ASSUMPTION }
|
|
| "intros" { INTROS }
|
|
| "intro" { INTRO }
|
|
| "cut" { CUT }
|
|
| "apply" { APPLY }
|
|
| "left" { LEFT }
|
|
| "right" { RIGHT }
|
|
| "split" { SPLIT }
|
|
|
|
| var_id as s { VARID(s) }
|
|
| ty_id as s { TYID(s) }
|
|
| eof { EOF }
|