1e92de1763923d410e342e0d21cb29ab68c2961e
1 #ifndef OBERON_INTERNALS_H
2 #define OBERON_INTERNALS_H
4 #include <stdint.h>
5 #include <stdbool.h>
24 struct oberon_scope_t
25 {
33 };
35 enum
36 {
37 OBERON_TYPE_VOID,
38 OBERON_TYPE_INTEGER,
39 OBERON_TYPE_BOOLEAN,
40 OBERON_TYPE_PROCEDURE,
41 OBERON_TYPE_ARRAY,
42 OBERON_TYPE_RECORD,
43 OBERON_TYPE_POINTER,
44 OBERON_TYPE_REAL
45 };
47 struct oberon_type_t
48 {
62 };
64 enum
65 {
66 OBERON_CLASS_VAR,
67 OBERON_CLASS_TYPE,
68 OBERON_CLASS_PROC,
69 OBERON_CLASS_PARAM,
70 OBERON_CLASS_VAR_PARAM,
71 OBERON_CLASS_CONST,
72 OBERON_CLASS_FIELD,
73 OBERON_CLASS_MODULE
74 };
79 struct oberon_object_t
80 {
96 GenerateFuncCallback genfunc;
97 GenerateProcCallback genproc;
107 };
109 struct oberon_module_t
110 {
119 };
123 struct oberon_context_t
124 {
125 /*** SCANER DATA ***/
135 /*** END SCANER DATA ***/
137 /*** PARSER DATA ***/
140 /*** END PARSER DATA ***/
154 ModuleImportCallback import_module;
156 };
158 enum
159 {
160 MODE_VAR,
161 MODE_INTEGER,
162 MODE_BOOLEAN,
163 MODE_CALL,
164 MODE_INDEX,
165 MODE_FIELD,
166 MODE_DEREF,
167 MODE_NIL,
168 MODE_NEW,
169 MODE_REAL,
170 MODE_CAST
171 };
173 enum
174 {
175 OP_UNARY_MINUS,
176 OP_BITWISE_NOT,
177 OP_LOGIC_NOT,
178 OP_ABS,
180 OP_ADD,
181 OP_SUB,
182 OP_MUL,
183 OP_DIV,
184 OP_MOD,
185 OP_BITWISE_AND,
186 OP_BITWISE_XOR,
187 OP_BITWISE_OR,
188 OP_LOGIC_AND,
189 OP_LOGIC_OR,
191 OP_EQ,
192 OP_NEQ,
193 OP_LSS,
194 OP_LEQ,
195 OP_GRT,
196 OP_GEQ
197 };
199 struct oberon_item_t
200 {
216 };
218 struct oberon_oper_t
219 {
228 };
230 union oberon_expr_t
231 {
237 };
239 oberon_item_t item;
240 oberon_oper_t oper;
241 };