1 #ifndef OBERON_INTERNALS_H
2 #define OBERON_INTERNALS_H
4 #include <stdint.h>
5 #include <stdbool.h>
24 struct oberon_scope_t
25 {
35 };
37 enum oberon_type_kind
38 {
39 OBERON_TYPE_NOTYPE,
40 OBERON_TYPE_INTEGER,
41 OBERON_TYPE_BOOLEAN,
42 OBERON_TYPE_PROCEDURE,
43 OBERON_TYPE_ARRAY,
44 OBERON_TYPE_RECORD,
45 OBERON_TYPE_POINTER,
46 OBERON_TYPE_REAL,
47 OBERON_TYPE_CHAR,
48 OBERON_TYPE_STRING,
49 OBERON_TYPE_SET,
50 OBERON_TYPE_NIL,
51 OBERON_TYPE_SYSTEM_BYTE,
52 OBERON_TYPE_SYSTEM_PTR
53 };
58 struct oberon_type_t
59 {
71 GenerateFuncCallback genfunc;
72 GenerateProcCallback genproc;
79 };
81 enum oberon_object_kind
82 {
83 OBERON_CLASS_VAR,
84 OBERON_CLASS_TYPE,
85 OBERON_CLASS_PROC,
86 OBERON_CLASS_PARAM,
87 OBERON_CLASS_VAR_PARAM,
88 OBERON_CLASS_CONST,
89 OBERON_CLASS_FIELD,
90 OBERON_CLASS_MODULE
91 };
93 struct oberon_object_t
94 {
118 };
120 struct oberon_module_t
121 {
131 };
135 struct oberon_context_t
136 {
137 /*** SCANER DATA ***/
147 /*** END SCANER DATA ***/
149 /*** PARSER DATA ***/
152 /*** END PARSER DATA ***/
173 ModuleImportCallback import_module;
175 };
177 enum oberon_mode_kind
178 {
179 MODE_VAR,
180 MODE_INTEGER,
181 MODE_BOOLEAN,
182 MODE_CALL,
183 MODE_INDEX,
184 MODE_FIELD,
185 MODE_DEREF,
186 MODE_NIL,
187 MODE_NEW,
188 MODE_REAL,
189 MODE_CHAR,
190 MODE_STRING,
191 MODE_TYPE,
192 MODE_SET,
193 MODE_LEN,
194 MODE_SYSBYTE
195 };
197 enum oberon_operator_kind
198 {
199 OP_UNARY_MINUS,
200 OP_LOGIC_NOT,
201 OP_ABS,
202 OP_CAP,
203 OP_ENTIER,
205 OP_ADD,
206 OP_SUB,
207 OP_MUL,
208 OP_DIV,
209 OP_MOD,
210 OP_LOGIC_AND,
211 OP_LOGIC_OR,
213 OP_EQ,
214 OP_NEQ,
215 OP_LSS,
216 OP_LEQ,
217 OP_GRT,
218 OP_GEQ,
220 OP_CAST,
221 OP_HARDCAST,
222 OP_IS,
224 OP_RANGE,
225 OP_UNION,
226 OP_INTERSECTION,
227 OP_DIFFERENCE,
228 OP_SYM_DIFFERENCE,
229 OP_COMPLEMENTATION,
230 OP_IN,
232 OP_ASH,
233 OP_LSH,
234 OP_ROT
235 };
237 struct oberon_item_t
238 {
254 };
256 struct oberon_oper_t
257 {
266 };
268 union oberon_expr_t
269 {
275 };
277 oberon_item_t item;
278 oberon_oper_t oper;
279 };