1 #include <stdio.h>
2 #include <string.h>
3 #include <assert.h>
8 "(* Main module *)"
9 "MODULE Test;"
10 "IMPORT Out;"
11 "TYPE"
12 " P = PROCEDURE;"
13 " F = PROCEDURE (x : INTEGER) : INTEGER;"
14 ""
15 "VAR"
16 " p : P;"
17 " f : F;"
18 " i : INTEGER;"
19 ""
20 "PROCEDURE Pow(x : INTEGER) : INTEGER;"
21 "BEGIN"
22 " RETURN x * x;"
23 "END Pow;"
24 ""
25 "PROCEDURE Do;"
26 "END Do;"
27 ""
28 "BEGIN;"
29 " p := Do;"
30 " f := Pow;"
31 " i := f(7);"
32 " p;"
33 " Out.Open;"
34 " Out.Int(i, 0); Out.Ln;"
35 " Out.Int(666, 0); Out.Ln;"
36 "END Test."
37 ;
39 // PROCEDURE Char* (ch : CHAR);
40 // PROCEDURE String* (str : ARRAY OF CHAR);
41 // PROCEDURE Int* (i, n : LONGINT); // Должно быть в таком виде
42 // PROCEDURE LongReal* (x : LONGREAL; n : INTEGER);
45 "MODULE Out;"
46 " PROCEDURE Open*;"
47 " END Open;"
48 ""
49 " PROCEDURE Int*(i, n : INTEGER);"
50 " END Int;"
51 ""
52 " PROCEDURE Real*(x : REAL; n : INTEGER);"
53 " END Real;"
54 ""
55 " PROCEDURE Ln*;"
56 " END Ln;"
57 ""
58 "END Out."
59 ;
66 {
68 {
70 }
72 {
74 }
75 else
76 {
78 }
79 }
84 {
85 }
90 {
95 {
97 }
99 }
104 {
109 {
111 }
113 }
118 {
120 }
123 {
132 }
135 {
138 }
140 int
142 {
148 // init_system_modules();
150 // oberon_generator_dump(ctx, "dump.txt");
152 // start_module();
156 }