-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlexer.mll
44 lines (43 loc) · 889 Bytes
/
lexer.mll
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
34
35
36
37
38
39
40
41
42
43
44
{
open Grammar
}
rule token = parse
| '#'[^'\n']* { token lexbuf }
| ['\t''\n'' ''\r']+ { token lexbuf }
| eof { EOF }
| "fun" { FUN }
| "proc" { PROC }
| "while" { WHILE }
| "if" { IF }
| "else" { ELSE}
| "print" { PRINT }
| "var" { VAR }
| "int" { INT }
| "real" { REAL }
| "bool" { BOOL }
| "true"|"false" as v { BOOLLIT v }
| ['0'-'9']+'.'['0'-'9']+ as v { REALLIT v }
| ['0'-'9']+ as v { INTLIT v }
| ['_''A'-'Z''a'-'z']['0'-'9''_''A'-'Z''a'-'z']* as v { ID v }
| ',' { COMMA }
| ';' { SEMICOLON }
| '*' { MULT }
| '/' { DIV }
| '%' { MOD }
| '+' { PLUS }
| '-' { MINUS }
| "&&" { AND }
| "||" { OR }
| "<=" { LTE }
| '<' { LT }
| ">=" { GTE }
| '>' { GT }
| "==" { EQ }
| "!=" { NEQ }
| '=' { ASSIGN }
| '!' { NOT }
| '(' { LPAREN }
| ')' { RPAREN }
| '[' { LBRACKET }
| ']' { RBRACKET }
| '^' { RET }