about summary refs log tree commit diff
path: root/lib/Lexer.mll
blob: 55a22c2470afaf682953555461b83db44b29f7f7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
{
open Parser
}

let whitespace = [' ' '\t' '\r' '\n']+
let letter = ['a'-'z' 'A'-'Z']
let ident = letter+

rule lex =
  parse
  | whitespace { lex lexbuf }
  | "(" { LPR }
  | ")" { RPR }
  | "[" { LBR }
  | "]" { RBR }
  | "->" { ARROW }
  | "*" { ASTERISK }
  | "\\" { BACKSLASH }
  | ":" { COLON }
  | "," { COMMA }
  | "." { DOT }
  | "=>" { FATARROW }
  | "bool" { BOOL }
  | "true" { TRUE }
  | "false" { FALSE }
  | "bool-elim" { BOOL_ELIM }
  | "at" { AT }
  | "fst" { FST }
  | "snd" { SND }
  | ident { IDENT (Lexing.lexeme lexbuf) }
  | eof { EOF }