about summary refs log tree commit diff
path: root/lib/Lexer.mll
blob: c33acae23ed8061f581f5a2b5f9434d4c3ca2b36 (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
32
33
{
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 }
  | "::" { DOUBLE_COLON }
  | ":" { COLON }
  | "," { COMMA }
  | "." { DOT }
  | "=>" { FATARROW }
  | "at" { AT }
  | "fst" { FST }
  | "snd" { SND }
  | "type" { TYPE }
  | "bool" { BOOL }
  | "true" { TRUE }
  | "false" { FALSE }
  | "bool-elim" { BOOL_ELIM }
  | ident { IDENT (Lexing.lexeme lexbuf) }
  | eof { EOF }