d6c3881d2d54e2cb67f554371479a2c0386153fe
1 #ifndef OBERON_INTERNALS_H
2 #define OBERON_INTERNALS_H
21 struct oberon_scope_t
22 {
30 };
32 enum
33 {
34 OBERON_TYPE_VOID,
35 OBERON_TYPE_INTEGER,
36 OBERON_TYPE_BOOLEAN,
37 OBERON_TYPE_PROCEDURE,
38 OBERON_TYPE_ARRAY,
39 OBERON_TYPE_RECORD,
40 OBERON_TYPE_POINTER,
41 OBERON_TYPE_REAL
42 };
44 struct oberon_type_t
45 {
58 };
60 enum
61 {
62 OBERON_CLASS_VAR,
63 OBERON_CLASS_TYPE,
64 OBERON_CLASS_PROC,
65 OBERON_CLASS_PARAM,
66 OBERON_CLASS_VAR_PARAM,
67 OBERON_CLASS_CONST,
68 OBERON_CLASS_FIELD,
69 OBERON_CLASS_MODULE
70 };
75 struct oberon_object_t
76 {
92 GenerateFuncCallback genfunc;
93 GenerateProcCallback genproc;
103 };
105 struct oberon_module_t
106 {
115 };
119 struct oberon_context_t
120 {
121 /*** SCANER DATA ***/
130 /*** END SCANER DATA ***/
132 /*** PARSER DATA ***/
135 /*** END PARSER DATA ***/
144 ModuleImportCallback import_module;
146 };
148 enum
149 {
150 MODE_VAR,
151 MODE_INTEGER,
152 MODE_BOOLEAN,
153 MODE_CALL,
154 MODE_INDEX,
155 MODE_FIELD,
156 MODE_DEREF,
157 MODE_NIL,
158 MODE_NEW,
159 MODE_REAL
160 };
162 enum
163 {
164 OP_UNARY_MINUS,
165 OP_BITWISE_NOT,
166 OP_LOGIC_NOT,
167 OP_ABS,
169 OP_ADD,
170 OP_SUB,
171 OP_MUL,
172 OP_DIV,
173 OP_MOD,
174 OP_BITWISE_AND,
175 OP_BITWISE_XOR,
176 OP_BITWISE_OR,
177 OP_LOGIC_AND,
178 OP_LOGIC_OR,
180 OP_EQ,
181 OP_NEQ,
182 OP_LSS,
183 OP_LEQ,
184 OP_GRT,
185 OP_GEQ
186 };
188 struct oberon_item_t
189 {
205 };
207 struct oberon_oper_t
208 {
217 };
219 union oberon_expr_t
220 {
226 };
228 oberon_item_t item;
229 oberon_oper_t oper;
230 };