b01a1d71958aa8e43cd9a4b10190291b8357802f
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 {
61 };
63 enum
64 {
65 OBERON_CLASS_VAR,
66 OBERON_CLASS_TYPE,
67 OBERON_CLASS_PROC,
68 OBERON_CLASS_PARAM,
69 OBERON_CLASS_VAR_PARAM,
70 OBERON_CLASS_CONST,
71 OBERON_CLASS_FIELD,
72 OBERON_CLASS_MODULE
73 };
78 struct oberon_object_t
79 {
95 GenerateFuncCallback genfunc;
96 GenerateProcCallback genproc;
106 };
108 struct oberon_module_t
109 {
118 };
122 struct oberon_context_t
123 {
124 /*** SCANER DATA ***/
134 /*** END SCANER DATA ***/
136 /*** PARSER DATA ***/
139 /*** END PARSER DATA ***/
153 ModuleImportCallback import_module;
155 };
157 enum
158 {
159 MODE_VAR,
160 MODE_INTEGER,
161 MODE_BOOLEAN,
162 MODE_CALL,
163 MODE_INDEX,
164 MODE_FIELD,
165 MODE_DEREF,
166 MODE_NIL,
167 MODE_NEW,
168 MODE_REAL,
169 MODE_CAST
170 };
172 enum
173 {
174 OP_UNARY_MINUS,
175 OP_BITWISE_NOT,
176 OP_LOGIC_NOT,
177 OP_ABS,
179 OP_ADD,
180 OP_SUB,
181 OP_MUL,
182 OP_DIV,
183 OP_MOD,
184 OP_BITWISE_AND,
185 OP_BITWISE_XOR,
186 OP_BITWISE_OR,
187 OP_LOGIC_AND,
188 OP_LOGIC_OR,
190 OP_EQ,
191 OP_NEQ,
192 OP_LSS,
193 OP_LEQ,
194 OP_GRT,
195 OP_GEQ
196 };
198 struct oberon_item_t
199 {
215 };
217 struct oberon_oper_t
218 {
227 };
229 union oberon_expr_t
230 {
236 };
238 oberon_item_t item;
239 oberon_oper_t oper;
240 };