1 #ifndef OBERON_INTERNALS_H
2 #define OBERON_INTERNALS_H
4 typedef struct gen_proc_t gen_proc_t
;
5 typedef struct gen_type_t gen_type_t
;
6 typedef struct gen_var_t gen_var_t
;
7 typedef struct gen_block_t gen_block_t
;
8 typedef struct gen_context_t gen_context_t
;
10 typedef struct oberon_type_t oberon_type_t
;
11 typedef struct oberon_object_t oberon_object_t
;
12 typedef struct oberon_module_t oberon_module_t
;
13 typedef struct oberon_context_t oberon_context_t
;
14 typedef struct oberon_scope_t oberon_scope_t
;
16 typedef struct oberon_item_t oberon_item_t
;
17 typedef struct oberon_oper_t oberon_oper_t
;
18 typedef union oberon_expr_t oberon_expr_t
;
22 oberon_context_t
* ctx
;
23 oberon_object_t
* list
;
26 oberon_object_t
* parent
;
35 OBERON_TYPE_PROCEDURE
,
49 oberon_object_t
* decl
;
51 oberon_module_t
* module
;
55 gen_type_t
* gen_type
;
64 OBERON_CLASS_VAR_PARAM
,
70 typedef oberon_expr_t
* (*GenerateFuncCallback
)(oberon_context_t
*, int, oberon_expr_t
*);
71 typedef void (*GenerateProcCallback
)(oberon_context_t
*, int, oberon_expr_t
*);
73 struct oberon_object_t
84 oberon_object_t
* parent
;
86 oberon_scope_t
* scope
; // for proc
87 int has_return
; // for proc
89 GenerateFuncCallback genfunc
;
90 GenerateProcCallback genproc
;
93 oberon_item_t
* value
;
94 oberon_object_t
* next
;
96 oberon_module_t
* module
;
99 gen_proc_t
* gen_proc
;
102 struct oberon_module_t
107 oberon_scope_t
* decl
;
109 oberon_module_t
* next
;
112 typedef const char * (*ModuleImportCallback
)(const char * name
);
114 struct oberon_context_t
116 /*** SCANER DATA ***/
125 /*** END SCANER DATA ***/
127 /*** PARSER DATA ***/
128 oberon_scope_t
* decl
;
129 oberon_module_t
* mod
;
130 /*** END PARSER DATA ***/
132 oberon_type_t
* int_type
;
133 oberon_type_t
* bool_type
;
134 oberon_type_t
* real_type
;
135 oberon_type_t
* void_type
;
136 oberon_type_t
* void_ptr_type
;
137 oberon_scope_t
* world_scope
;
138 oberon_module_t
* module_list
;
139 ModuleImportCallback import_module
;
140 gen_context_t
* gen_context
;
186 oberon_type_t
* result
;
187 oberon_expr_t
* next
;
194 oberon_object_t
* var
;
196 oberon_item_t
* parent
;
199 oberon_expr_t
* args
;
205 oberon_type_t
* result
;
206 oberon_expr_t
* next
;
210 oberon_expr_t
* left
;
211 oberon_expr_t
* right
;
218 oberon_type_t
* result
;
219 oberon_expr_t
* next
;
228 oberon_error(oberon_context_t
* ctx
, const char * fmt
, ...);
230 #endif // OBERON_INTERNALS_H