#include "oberon.h" #include "generator.h" #include #include static char source_test[] = "MODULE Test;" "IMPORT I := Imported;" "VAR" " x, y : I.Rider;" "PROCEDURE Proc(x, y, z : INTEGER);" "BEGIN" " x := 1;" "END Proc;" "BEGIN;" " y.i := 1;" " I.a[0] := 1;" "END Test." ; static char source_imported[] = "MODULE Imported;" "TYPE" " Rider* = RECORD i*, j-, k : INTEGER; END;" "VAR" " i- : INTEGER;" " a* : ARRAY 3 OF INTEGER;" "" "PROCEDURE Ln*;" "END Ln;" "" "BEGIN;" " i := 1;" " a[0] := 555;" "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; }