X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=generator.h;h=08df5c892abb414e4f376e6829a697554a5b6398;hb=d1b4e7fdab92589146e19cf4b8b402edf4d6b33d;hp=78ae8601771442915dcdaa1f8f416b58d016d3c1;hpb=390a7e053165954865bc013a7c7057982c206453;p=dsw-obn.git diff --git a/generator.h b/generator.h index 78ae860..08df5c8 100644 --- a/generator.h +++ b/generator.h @@ -1,11 +1,41 @@ +/* + * Функции инициализации контекста и объектов + */ + 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_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); +void * oberon_generator_get_procedure(oberon_context_t * ctx, const char * name); +void * oberon_generator_get_var(oberon_context_t * ctx, const char * name);