e411c6c2fdaa455bf15fddcd54c7b94a37f3c8c3
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <stdarg.h>
4 #include <ctype.h>
5 #include <string.h>
10 IDENT,
11 MODULE,
12 SEMICOLON,
13 END,
14 DOT,
15 VAR,
16 COLON,
17 BEGIN,
18 ASSIGN,
19 INTEGER
20 };
23 MODE_VAR,
24 MODE_INTEGER,
25 };
28 {
34 // =======================================================================
35 // UTILS
36 // =======================================================================
38 static void
40 {
51 }
53 static int
55 {
59 {
61 }
63 {
65 }
66 else
67 {
69 }
72 }
74 // =======================================================================
75 // TABLE
76 // =======================================================================
80 {
83 {
85 }
88 }
92 {
95 {
97 }
100 }
102 static void
104 {
107 {
109 }
112 {
114 }
122 }
124 // =======================================================================
125 // GENERATOR
126 // =======================================================================
128 static void
130 {
132 }
134 // =======================================================================
135 // SCANER
136 // =======================================================================
138 static void
140 {
143 }
145 static void
147 {
151 }
153 static void
155 {
161 {
165 }
177 {
179 }
181 {
183 }
185 {
187 }
189 {
191 }
192 }
194 static void
196 {
202 {
206 }
217 }
219 static void
221 {
223 {
225 }
226 }
228 static void
230 {
235 {
237 }
239 {
241 }
242 else
243 {
245 {
249 /****************************************************/
252 {
255 }
257 /****************************************************/
260 }
261 }
262 }
264 // =======================================================================
265 // PARSER
266 // =======================================================================
268 static void
270 {
272 {
274 }
275 }
277 static void
279 {
282 }
286 {
292 }
296 {
301 {
303 }
306 }
308 static void
310 {
315 }
317 static void
319 {
321 {
324 {
327 }
328 }
329 }
333 {
338 {
342 {
344 }
347 }
349 {
353 }
354 else
355 {
357 }
360 }
362 static void
364 {
366 {
368 }
374 {
376 }
378 // TODO: code generation
380 }
382 static void
384 {
389 {
394 }
395 }
397 static void
399 {
402 {
405 }
406 }
408 static void
410 {
422 {
425 }
432 {
434 }
435 }
437 // =======================================================================
438 // LIBRARY
439 // =======================================================================
441 oberon_context_t *
443 {
452 }
454 oberon_module_t *
456 {
467 }
469 void
471 {
474 {
476 }
479 {
481 }
483 // TODO: copy type name (not a pointer)
489 }