1 #include <stdio.h>
2 #include <string.h>
3 #include <assert.h>
7 /*
8 static char source_test[] =
9 "(* Main module *)"
10 "MODULE Test;"
11 "IMPORT Out;"
12 "VAR"
13 " msg : ARRAY 20 OF CHAR;"
14 "BEGIN"
15 " msg := ''"
16 "END Test."
17 ;
18 */
21 "(* Main module *)"
22 "MODULE Test;"
23 "IMPORT Out;"
24 "CONST"
25 " helloworld = 'Hello World!';"
26 " null = 0X;"
27 " space = 020X;"
28 " bang = 021X;"
29 " h = 048X;"
30 " e = 045X;"
31 " l = 04CX;"
32 " o = 04FX;"
33 " w = 057X;"
34 " r = 052X;"
35 " d = 044X;"
36 ""
37 "TYPE"
38 " Ident = ARRAY 20 OF CHAR;"
39 " PrintString = PROCEDURE (str : ARRAY OF CHAR);"
40 ""
41 "VAR"
42 " msg : Ident;"
43 " print : PrintString;"
44 ""
45 "BEGIN"
46 " msg := helloworld;"
47 " print := Out.String;"
48 " Out.Open;"
49 " print(msg);"
50 " Out.Ln;"
52 " Out.Ln;"
53 "END Test."
54 ;
57 "MODULE Out;"
58 " PROCEDURE Open*;"
59 " END Open;"
60 ""
61 " PROCEDURE Char* (ch : CHAR);"
62 " END Char;"
63 ""
64 " PROCEDURE String* (str : ARRAY OF CHAR);"
65 " END String;"
66 ""
67 " PROCEDURE Int*(i, n : LONGINT);"
68 " END Int;"
69 ""
70 " PROCEDURE Real*(x : REAL; n : INTEGER);"
71 " END Real;"
72 ""
73 " PROCEDURE LongReal*(x : LONGREAL; n : INTEGER);"
74 " END LongReal;"
75 ""
76 " PROCEDURE Ln*;"
77 " END Ln;"
78 ""
79 "END Out."
80 ;
87 {
89 {
91 }
93 {
95 }
96 else
97 {
99 }
100 }
105 {
106 }
111 {
116 {
118 }
120 }
125 {
130 {
132 }
134 }
139 {
141 }
144 {
153 }
156 {
159 }
161 int
163 {
169 // init_system_modules();
171 // oberon_generator_dump(ctx, "dump.txt");
173 // start_module();
177 }