1namespace libfcf;
2
3public class Token
4{
5 public string value = "";
6
7 public int lineStart;
8 public int lineEnd;
9 public int charStart;
10 public int charEnd;
11}
12
13internal class TokenIdentifier : Token
14{
15 public new string value;
16
17 public new int lineStart;
18 public new int lineEnd;
19 public new int charStart;
20 public new int charEnd;
21
22 public TokenIdentifier(string value, int lineStart, int lineEnd, int charStart, int charEnd)
23 {
24 this.value = value;
25
26 this.lineStart = lineStart;
27 this.lineEnd = lineEnd;
28 this.charStart = charStart;
29 this.charEnd = charEnd;
30 }
31}
32
33internal class TokenString : Token
34{
35 public new string value;
36
37 public new int lineStart;
38 public new int lineEnd;
39 public new int charStart;
40 public new int charEnd;
41
42 public TokenString(string value, int lineStart, int lineEnd, int charStart, int charEnd)
43 {
44 this.value = value;
45
46 this.lineStart = lineStart;
47 this.lineEnd = lineEnd;
48 this.charStart = charStart;
49 this.charEnd = charEnd;
50 }
51}
52
53internal class TokenNumber : Token
54{
55 public new float value;
56
57 public new int lineStart;
58 public new int lineEnd;
59 public new int charStart;
60 public new int charEnd;
61
62 public TokenNumber(float value, int lineStart, int lineEnd, int charStart, int charEnd)
63 {
64 this.value = value;
65
66 this.lineStart = lineStart;
67 this.lineEnd = lineEnd;
68 this.charStart = charStart;
69 this.charEnd = charEnd;
70 }
71}
72
73internal class TokenBoolean : Token
74{
75 public new bool value;
76
77 public new int lineStart;
78 public new int lineEnd;
79 public new int charStart;
80 public new int charEnd;
81
82 public TokenBoolean(bool value, int lineStart, int lineEnd, int charStart, int charEnd)
83 {
84 this.value = value;
85
86 this.lineStart = lineStart;
87 this.lineEnd = lineEnd;
88 this.charStart = charStart;
89 this.charEnd = charEnd;
90 }
91}
92
93internal class TokenAssign : Token
94{
95 public new string value = "=";
96
97 public new int lineStart;
98 public new int lineEnd;
99 public new int charStart;
100 public new int charEnd;
101
102 public TokenAssign(int lineStart, int lineEnd, int charStart, int charEnd)
103 {
104 this.lineStart = lineStart;
105 this.lineEnd = lineEnd;
106 this.charStart = charStart;
107 this.charEnd = charEnd;
108 }
109}
110
111internal class TokenComma : Token
112{
113 public new string value = ",";
114
115 public new int lineStart;
116 public new int lineEnd;
117 public new int charStart;
118 public new int charEnd;
119
120 public TokenComma(int lineStart, int lineEnd, int charStart, int charEnd)
121 {
122 this.lineStart = lineStart;
123 this.lineEnd = lineEnd;
124 this.charStart = charStart;
125 this.charEnd = charEnd;
126 }
127}
128
129internal class TokenArrayStart : Token
130{
131 public new string value = "[";
132
133 public new int lineStart;
134 public new int lineEnd;
135 public new int charStart;
136 public new int charEnd;
137
138 public TokenArrayStart(int lineStart, int lineEnd, int charStart, int charEnd)
139 {
140 this.lineStart = lineStart;
141 this.lineEnd = lineEnd;
142 this.charStart = charStart;
143 this.charEnd = charEnd;
144 }
145}
146
147internal class TokenArrayEnd : Token
148{
149 public new string value = "]";
150
151 public new int lineStart;
152 public new int lineEnd;
153 public new int charStart;
154 public new int charEnd;
155
156 public TokenArrayEnd(int lineStart, int lineEnd, int charStart, int charEnd)
157 {
158 this.lineStart = lineStart;
159 this.lineEnd = lineEnd;
160 this.charStart = charStart;
161 this.charEnd = charEnd;
162 }
163}
164
165internal class TokenDictStart : Token
166{
167 public new string value = "{";
168
169 public new int lineStart;
170 public new int lineEnd;
171 public new int charStart;
172 public new int charEnd;
173
174 public TokenDictStart(int lineStart, int lineEnd, int charStart, int charEnd)
175 {
176 this.lineStart = lineStart;
177 this.lineEnd = lineEnd;
178 this.charStart = charStart;
179 this.charEnd = charEnd;
180 }
181}
182
183internal class TokenDictEnd : Token
184{
185 public new string value = "}";
186
187 public new int lineStart;
188 public new int lineEnd;
189 public new int charStart;
190 public new int charEnd;
191
192 public TokenDictEnd(int lineStart, int lineEnd, int charStart, int charEnd)
193 {
194 this.lineStart = lineStart;
195 this.lineEnd = lineEnd;
196 this.charStart = charStart;
197 this.charEnd = charEnd;
198 }
199}
200
201public class InvalidTokenTypeException : Exception
202{
203 public dynamic token;
204
205 public InvalidTokenTypeException(string message, dynamic token) : base(message)
206 {
207 this.token = token;
208 }
209}