#include "oberon.h" #include "generator.h" #include #include static char source_test[] = "MODULE Test;" "IMPORT I := Imported;" "TYPE" " Callback = PROCEDURE() : INTEGER;" "" "VAR" " cb : Callback;" " i : INTEGER;" " r : I.Rider;" "" "PROCEDURE RelBack;" "BEGIN" " i := 666;" "END RelBack;" "" "BEGIN;" " i := ABS(-1);" " i := cb();" " RelBack;" " I.Ln;" "END Test." ; static char source_imported[] = "MODULE Imported;" "TYPE" " Rider = RECORD i : INTEGER; END;" "" "PROCEDURE Ln;" "END Ln;" "" "BEGIN;" "END Imported." ; static oberon_context_t * ctx; static oberon_module_t * mod; static const char * import_module(const char * name) { if(strcmp(name, "Test") == 0) { return source_test; } else if(strcmp(name, "Imported") == 0) { return source_imported; } else { return NULL; } } int main(int argc, char ** argv) { ctx = oberon_create_context(import_module); mod = oberon_compile_module(ctx, source_test); oberon_generate_code(ctx); oberon_generator_dump(ctx, "dump.txt"); oberon_destroy_context(ctx); return 0; }