1 #ifndef OBERON_INTERNALS_H
2 #define OBERON_INTERNALS_H
20 struct oberon_scope_t
21 {
28 };
30 enum
31 {
32 OBERON_TYPE_VOID,
33 OBERON_TYPE_INTEGER,
34 OBERON_TYPE_BOOLEAN,
35 OBERON_TYPE_PROCEDURE,
36 OBERON_TYPE_ARRAY,
37 OBERON_TYPE_RECORD,
38 OBERON_TYPE_POINTER,
39 OBERON_TYPE_REAL
40 };
42 struct oberon_type_t
43 {
56 };
58 enum
59 {
60 OBERON_CLASS_VAR,
61 OBERON_CLASS_TYPE,
62 OBERON_CLASS_PROC,
63 OBERON_CLASS_PARAM,
64 OBERON_CLASS_VAR_PARAM,
65 OBERON_CLASS_CONST,
66 OBERON_CLASS_FIELD,
67 OBERON_CLASS_MODULE
68 };
73 struct oberon_object_t
74 {
89 GenerateFuncCallback genfunc;
90 GenerateProcCallback genproc;
100 };
102 struct oberon_module_t
103 {
110 };
114 struct oberon_context_t
115 {
116 /*** SCANER DATA ***/
125 /*** END SCANER DATA ***/
127 /*** PARSER DATA ***/
130 /*** END PARSER DATA ***/
139 ModuleImportCallback import_module;
141 };
143 enum
144 {
145 MODE_VAR,
146 MODE_INTEGER,
147 MODE_BOOLEAN,
148 MODE_CALL,
149 MODE_INDEX,
150 MODE_FIELD,
151 MODE_DEREF,
152 MODE_NIL,
153 MODE_NEW,
154 MODE_REAL
155 };
157 enum
158 {
159 OP_UNARY_MINUS,
160 OP_BITWISE_NOT,
161 OP_LOGIC_NOT,
162 OP_ABS,
164 OP_ADD,
165 OP_SUB,
166 OP_MUL,
167 OP_DIV,
168 OP_MOD,
169 OP_BITWISE_AND,
170 OP_BITWISE_XOR,
171 OP_BITWISE_OP,
172 OP_LOGIC_AND,
173 OP_LOGIC_OR,
175 OP_EQ,
176 OP_NEQ,
177 OP_LSS,
178 OP_LEQ,
179 OP_GRT,
180 OP_GEQ
181 };
183 struct oberon_item_t
184 {
200 };
202 struct oberon_oper_t
203 {
212 };
214 union oberon_expr_t
215 {
221 };
223 oberon_item_t item;
224 oberon_oper_t oper;
225 };