fa9b5d5280903bf0ea16496170cb3e81fcb69045
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 OBERON_TYPE_SET
50 };
55 struct oberon_type_t
56 {
66 GenerateFuncCallback genfunc;
67 GenerateProcCallback genproc;
74 };
76 enum oberon_object_kind
77 {
78 OBERON_CLASS_VAR,
79 OBERON_CLASS_TYPE,
80 OBERON_CLASS_PROC,
81 OBERON_CLASS_PARAM,
82 OBERON_CLASS_VAR_PARAM,
83 OBERON_CLASS_CONST,
84 OBERON_CLASS_FIELD,
85 OBERON_CLASS_MODULE
86 };
88 struct oberon_object_t
89 {
113 };
115 struct oberon_module_t
116 {
125 };
129 struct oberon_context_t
130 {
131 /*** SCANER DATA ***/
141 /*** END SCANER DATA ***/
143 /*** PARSER DATA ***/
146 /*** END PARSER DATA ***/
163 ModuleImportCallback import_module;
165 };
167 enum oberon_mode_kind
168 {
169 MODE_VAR,
170 MODE_INTEGER,
171 MODE_BOOLEAN,
172 MODE_CALL,
173 MODE_INDEX,
174 MODE_FIELD,
175 MODE_DEREF,
176 MODE_NIL,
177 MODE_NEW,
178 MODE_REAL,
179 MODE_CHAR,
180 MODE_STRING,
181 MODE_TYPE,
182 MODE_SET
183 };
185 enum oberon_operator_kind
186 {
187 OP_UNARY_MINUS,
188 OP_LOGIC_NOT,
189 OP_ABS,
191 OP_ADD,
192 OP_SUB,
193 OP_MUL,
194 OP_DIV,
195 OP_MOD,
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 OP_IS,
209 OP_RANGE,
210 OP_UNION,
211 OP_INTERSECTION,
212 OP_DIFFERENCE,
213 OP_SYM_DIFFERENCE,
214 OP_COMPLEMENTATION,
215 OP_IN
216 };
218 struct oberon_item_t
219 {
235 };
237 struct oberon_oper_t
238 {
247 };
249 union oberon_expr_t
250 {
256 };
258 oberon_item_t item;
259 oberon_oper_t oper;
260 };