DEADSOFTWARE

Реализованы неявные объявления типов наперёд
[dsw-obn.git] / generator.h
index e9dbd53847babb686a9d12555abeb091e4ce993c..085c2cacd37f49aee8a6cc2fbe12f77d08722c12 100644 (file)
@@ -1,11 +1,40 @@
+/*
+ * Функции инициализации контекста и объектов
+ */
+
 void oberon_generator_init_context(oberon_context_t * ctx);
-void oberon_generator_destroy_context(oberon_context_t * ctx);
 void oberon_generator_init_type(oberon_context_t * ctx, oberon_type_t * type);
-void oberon_generator_init_var(oberon_context_t * ctx, oberon_var_t * var);
+void oberon_generator_init_record(oberon_context_t * ctx, oberon_type_t * type);
+void oberon_generator_init_var(oberon_context_t * ctx, oberon_object_t * var);
+void oberon_generator_init_proc(oberon_context_t * ctx, oberon_object_t * proc);
+void oberon_generator_destroy_context(oberon_context_t * ctx);
+
+/*
+ * Функции генерации тела модуля
+ */
 
 void oberon_generate_begin_module(oberon_context_t * ctx);
 void oberon_generate_end_module(oberon_context_t * ctx);
 
-void oberon_generate_assign(oberon_context_t * ctx, oberon_item_t * src, oberon_item_t * dst);
+/*
+ * Функции генерации и вызова процедур
+ */
+
+void oberon_generate_begin_proc(oberon_context_t * ctx, oberon_object_t * proc);
+void oberon_generate_end_proc(oberon_context_t * ctx);
+void oberon_generate_call_proc(oberon_context_t * ctx, oberon_expr_t * desig);
+
+/*
+ * Функции генерации операторов
+ */
+
+void oberon_generate_assign(oberon_context_t * ctx, oberon_expr_t * src, oberon_expr_t * dst);
+void oberon_generate_return(oberon_context_t * ctx, oberon_expr_t * expr);
+
+/*
+ * Функции генерации кода
+ */
 
 void oberon_generate_code(oberon_context_t * ctx);
+void oberon_generator_dump(oberon_context_t * ctx, char * path);
+