X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=generator.h;h=6a7321ba50d2e5b7349c2bcc499c138ae8004926;hb=063ba732ee8778c34a3781270b18d52481dbf0cd;hp=e9dbd53847babb686a9d12555abeb091e4ce993c;hpb=c3449e207b5e1e85ecea55975163a4dc6b986962;p=dsw-obn.git diff --git a/generator.h b/generator.h index e9dbd53..6a7321b 100644 --- a/generator.h +++ b/generator.h @@ -1,11 +1,37 @@ +/* + * Функции инициализации контекста и объектов + */ + 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_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);