X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=generator.h;h=2957aa8368a75796f6c023772c937792c66c0fcc;hb=8520fd72cf3c1daeabbb8da91290dae85fc39c91;hp=78ae8601771442915dcdaa1f8f416b58d016d3c1;hpb=390a7e053165954865bc013a7c7057982c206453;p=dsw-obn.git diff --git a/generator.h b/generator.h index 78ae860..2957aa8 100644 --- a/generator.h +++ b/generator.h @@ -1,11 +1,39 @@ +/* + * Функции инициализации контекста и объектов + */ + 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_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); +