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 };
50 struct oberon_type_t
51 {
61 GenerateFuncCallback genfunc;
62 GenerateProcCallback genproc;
69 };
71 enum
72 {
73 OBERON_CLASS_VAR,
74 OBERON_CLASS_TYPE,
75 OBERON_CLASS_PROC,
76 OBERON_CLASS_PARAM,
77 OBERON_CLASS_VAR_PARAM,
78 OBERON_CLASS_CONST,
79 OBERON_CLASS_FIELD,
80 OBERON_CLASS_MODULE
81 };
83 struct oberon_object_t
84 {
108 };
110 struct oberon_module_t
111 {
120 };
124 struct oberon_context_t
125 {
126 /*** SCANER DATA ***/
136 /*** END SCANER DATA ***/
138 /*** PARSER DATA ***/
141 /*** END PARSER DATA ***/
155 ModuleImportCallback import_module;
157 };
159 enum
160 {
161 MODE_VAR,
162 MODE_INTEGER,
163 MODE_BOOLEAN,
164 MODE_CALL,
165 MODE_INDEX,
166 MODE_FIELD,
167 MODE_DEREF,
168 MODE_NIL,
169 MODE_NEW,
170 MODE_REAL,
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,
198 OP_CAST
199 };
201 struct oberon_item_t
202 {
218 };
220 struct oberon_oper_t
221 {
230 };
232 union oberon_expr_t
233 {
239 };
241 oberon_item_t item;
242 oberon_oper_t oper;
243 };