X-Git-Url: http://deadsoftware.ru/gitweb?p=dsw-obn.git;a=blobdiff_plain;f=src%2Fgenerator.h;h=03e410ed384f35b620046cde9c969ea17bada88d;hp=436a0f8f01b3a3470a5681f436eb7a505f8ed074;hb=HEAD;hpb=99fa357db44a4c30957bd0810e14a20456c58347 diff --git a/src/generator.h b/src/generator.h index 436a0f8..03e410e 100644 --- a/src/generator.h +++ b/src/generator.h @@ -13,6 +13,8 @@ void oberon_generator_destroy_context(oberon_context_t * ctx); void oberon_generator_init_module(oberon_context_t * ctx, oberon_module_t * mod); void oberon_generator_fini_module(oberon_module_t * mod); +void oberon_set_typecheck(oberon_object_t * var, bool enable); + /* * Функции генерации тела модуля */ @@ -38,13 +40,13 @@ 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_set_out_directory(oberon_context_t * ctx, const char * path); -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_line(oberon_context_t * ctx, int line);