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 };
57 struct oberon_type_t
58 {
70 GenerateFuncCallback genfunc;
71 GenerateProcCallback genproc;
78 };
80 enum oberon_object_kind
81 {
82 OBERON_CLASS_VAR,
83 OBERON_CLASS_TYPE,
84 OBERON_CLASS_PROC,
85 OBERON_CLASS_PARAM,
86 OBERON_CLASS_VAR_PARAM,
87 OBERON_CLASS_CONST,
88 OBERON_CLASS_FIELD,
89 OBERON_CLASS_MODULE
90 };
92 struct oberon_object_t
93 {
117 };
119 struct oberon_module_t
120 {
130 };
134 struct oberon_context_t
135 {
136 /*** SCANER DATA ***/
146 /*** END SCANER DATA ***/
148 /*** PARSER DATA ***/
151 /*** END PARSER DATA ***/
171 ModuleImportCallback import_module;
173 };
175 enum oberon_mode_kind
176 {
177 MODE_VAR,
178 MODE_INTEGER,
179 MODE_BOOLEAN,
180 MODE_CALL,
181 MODE_INDEX,
182 MODE_FIELD,
183 MODE_DEREF,
184 MODE_NIL,
185 MODE_NEW,
186 MODE_REAL,
187 MODE_CHAR,
188 MODE_STRING,
189 MODE_TYPE,
190 MODE_SET,
191 MODE_LEN
192 };
194 enum oberon_operator_kind
195 {
196 OP_UNARY_MINUS,
197 OP_LOGIC_NOT,
198 OP_ABS,
199 OP_CAP,
200 OP_ENTIER,
202 OP_ADD,
203 OP_SUB,
204 OP_MUL,
205 OP_DIV,
206 OP_MOD,
207 OP_LOGIC_AND,
208 OP_LOGIC_OR,
210 OP_EQ,
211 OP_NEQ,
212 OP_LSS,
213 OP_LEQ,
214 OP_GRT,
215 OP_GEQ,
217 OP_CAST,
218 OP_IS,
220 OP_RANGE,
221 OP_UNION,
222 OP_INTERSECTION,
223 OP_DIFFERENCE,
224 OP_SYM_DIFFERENCE,
225 OP_COMPLEMENTATION,
226 OP_IN,
228 OP_ASH
229 };
231 struct oberon_item_t
232 {
248 };
250 struct oberon_oper_t
251 {
260 };
262 union oberon_expr_t
263 {
269 };
271 oberon_item_t item;
272 oberon_oper_t oper;
273 };