7a776d695502bec8b53225c031e31f808d207841
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_VOID,
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 };
54 struct oberon_type_t
55 {
65 GenerateFuncCallback genfunc;
66 GenerateProcCallback genproc;
73 };
75 enum oberon_object_kind
76 {
77 OBERON_CLASS_VAR,
78 OBERON_CLASS_TYPE,
79 OBERON_CLASS_PROC,
80 OBERON_CLASS_PARAM,
81 OBERON_CLASS_VAR_PARAM,
82 OBERON_CLASS_CONST,
83 OBERON_CLASS_FIELD,
84 OBERON_CLASS_MODULE
85 };
87 struct oberon_object_t
88 {
112 };
114 struct oberon_module_t
115 {
124 };
128 struct oberon_context_t
129 {
130 /*** SCANER DATA ***/
140 /*** END SCANER DATA ***/
142 /*** PARSER DATA ***/
145 /*** END PARSER DATA ***/
161 ModuleImportCallback import_module;
163 };
165 enum oberon_mode_kind
166 {
167 MODE_VAR,
168 MODE_INTEGER,
169 MODE_BOOLEAN,
170 MODE_CALL,
171 MODE_INDEX,
172 MODE_FIELD,
173 MODE_DEREF,
174 MODE_NIL,
175 MODE_NEW,
176 MODE_REAL,
177 MODE_CHAR,
178 MODE_STRING
179 };
181 enum oberon_operator_kind
182 {
183 OP_UNARY_MINUS,
184 OP_BITWISE_NOT,
185 OP_LOGIC_NOT,
186 OP_ABS,
188 OP_ADD,
189 OP_SUB,
190 OP_MUL,
191 OP_DIV,
192 OP_MOD,
193 OP_BITWISE_AND,
194 OP_BITWISE_XOR,
195 OP_BITWISE_OR,
196 OP_LOGIC_AND,
197 OP_LOGIC_OR,
199 OP_EQ,
200 OP_NEQ,
201 OP_LSS,
202 OP_LEQ,
203 OP_GRT,
204 OP_GEQ,
206 OP_CAST
207 };
209 struct oberon_item_t
210 {
227 };
229 struct oberon_oper_t
230 {
239 };
241 union oberon_expr_t
242 {
248 };
250 oberon_item_t item;
251 oberon_oper_t oper;
252 };