X-Git-Url: http://deadsoftware.ru/gitweb?p=dsw-obn.git;a=blobdiff_plain;f=src%2Fgenerator.h;h=a940dab046fb25f2376e91bc754f53b4100fa920;hp=e988ba0c3f1c1e1bb5f8a8dd3a8dfb69d761a3f6;hb=bc1691627adee054210acf7e801361fa574f8086;hpb=f89bbec89e4dd5c7cd15954f0c02370fb9127518 diff --git a/src/generator.h b/src/generator.h index e988ba0..a940dab 100644 --- a/src/generator.h +++ b/src/generator.h @@ -6,6 +6,7 @@ void oberon_generator_init_context(oberon_context_t * ctx); void oberon_generator_init_type(oberon_context_t * ctx, oberon_type_t * type); 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_temp_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); @@ -27,18 +28,14 @@ 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); +gen_label_t * oberon_generator_reserve_label(oberon_context_t * ctx); +void oberon_generate_label(oberon_context_t * ctx, gen_label_t * l); +void oberon_generate_branch(oberon_context_t * ctx, oberon_expr_t * cond, bool gotoif, gen_label_t * l); +void oberon_generate_goto(oberon_context_t * ctx, gen_label_t * l); + /* * Функции генерации операторов */ 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);