-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtoken.sml
87 lines (77 loc) · 1.49 KB
/
token.sml
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
structure Token = struct
datatype left
= Normal
| DotInRight
datatype t
= LOWER_IDENT of string
| UPPER_IDENT of string
| QUOTE_IDENT of string
| LPAREN of left ref
| RPAREN
| LBRACE of left ref
| RBRACE
| LPAREN_PROJ
| LBRACE_PROJ
| RARROW
| RDARROW
| AMPERSAND
| PLUS
| MINUS
| COLON
| COLON_GT
| COMMA
| DOT
| EQUAL
| BAR
| PACK
| UNPACK
| FN
| CASE
| INL
| INR
| FST
| SND
| MODULE
| SIGNATURE
| VAL
| TYPE
| INCLUDE
| WHERE
| LIKE
val show =
fn LOWER_IDENT s => s
| UPPER_IDENT s => s
| QUOTE_IDENT s => "'" ^ s
| LPAREN _ => "("
| RPAREN => ")"
| LBRACE _ => "{"
| RBRACE => "}"
| LPAREN_PROJ => "("
| LBRACE_PROJ => "{"
| RARROW => "->"
| RDARROW => "=>"
| AMPERSAND => "&"
| PLUS => "+"
| MINUS => "-"
| COLON => ":"
| COLON_GT => ":>"
| COMMA => ","
| DOT => "."
| EQUAL => "="
| BAR => "|"
| PACK => "pack"
| UNPACK => "unpack"
| FN => "fn"
| CASE => "case"
| INL => "inl"
| INR => "inr"
| FST => "fst"
| SND => "snd"
| MODULE => "module"
| SIGNATURE => "signature"
| VAL => "val"
| TYPE => "type"
| INCLUDE => "include"
| WHERE => "where"
| LIKE => "like"
end