X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgenerator.h;h=5617e79796ac450128ab6536c7f9c35b7448ad9b;hb=dd629f9f9b42dcca96ef4fc58df5ccb2e332b65b;hp=23901dd41c83e027409eace3445ae5d11d276d09;hpb=51a1ab2543ec5c221d4a3a9ab89968ae7dd39981;p=dsw-obn.git diff --git a/src/generator.h b/src/generator.h index 23901dd..5617e79 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); @@ -37,13 +38,11 @@ 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_copy(oberon_context_t * ctx, oberon_expr_t * src, oberon_expr_t * dst); +void oberon_generate_assert_n(oberon_context_t * ctx, oberon_expr_t * cond, int64_t n); +void oberon_generate_assert(oberon_context_t * ctx, oberon_expr_t * cond); +void oberon_generate_trap(oberon_context_t * ctx, int64_t n); +void oberon_generate_halt(oberon_context_t * ctx, int64_t n); 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); +void oberon_set_out_directory(oberon_context_t * ctx, const char * path);