-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtoken.go
123 lines (116 loc) · 1.38 KB
/
token.go
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
// generated by Textmapper; DO NOT EDIT
package cool
import (
"fmt"
)
// Token is an enum of all terminal symbols of the cool language.
type Token int
// Token values.
const (
UNAVAILABLE Token = iota - 1
EOI
INVALID_TOKEN
WHITESPACE
ENTERBLOCKCOMMENT // (*
EXITBLOCKCOMMENT // *)
BLOCKCOMMENT
LINECOMMENT
OBJECTID
TYPEID
INTEGERLITERAL
BOOLLITERAL
STRINGLITERAL
CLASS
ELSE
IF
FI
IN
INHERITS
ISVOID
LET
LOOP
POOL
THEN
WHILE
CASE
ESAC
NEW
OF
NOT
LBRACE // {
RBRACE // }
LPAREN // (
RPAREN // )
DOT // .
SEMICOLON // ;
COMMA // ,
LT // <
LTASSIGN // <=
ASSIGNGT // =>
ATSIGN // @
PLUS // +
MINUS // -
MULT // *
DIV // /
LTMINUS // <-
TILDE // ~
COLON // :
ASSIGN // =
NumTokens
)
var tokenStr = [...]string{
"EOI",
"INVALID_TOKEN",
"WHITESPACE",
"(*",
"*)",
"BLOCKCOMMENT",
"LINECOMMENT",
"OBJECTID",
"TYPEID",
"INTEGERLITERAL",
"BOOLLITERAL",
"STRINGLITERAL",
"CLASS",
"ELSE",
"IF",
"FI",
"IN",
"INHERITS",
"ISVOID",
"LET",
"LOOP",
"POOL",
"THEN",
"WHILE",
"CASE",
"ESAC",
"NEW",
"OF",
"NOT",
"{",
"}",
"(",
")",
".",
";",
",",
"<",
"<=",
"=>",
"@",
"+",
"-",
"*",
"/",
"<-",
"~",
":",
"=",
}
func (tok Token) String() string {
if tok >= 0 && int(tok) < len(tokenStr) {
return tokenStr[tok]
}
return fmt.Sprintf("token(%d)", tok)
}