DEADSOFTWARE

Добавлен счёт строк
[dsw-obn.git] / src / oberon-internals.h
index ad2ecc654b1dfc66fd744ddab31a7ef26f05a515..d4f3cf211f02eb8411f06093b19043b1cfb8d1b1 100644 (file)
@@ -17,6 +17,8 @@ typedef struct oberon_module_t oberon_module_t;
 typedef struct oberon_context_t oberon_context_t;
 typedef struct oberon_scope_t oberon_scope_t;
 
+typedef struct oberon_location_t oberon_location_t;
+typedef struct oberon_scanner_t oberon_scanner_t;
 typedef struct oberon_item_t oberon_item_t;
 typedef struct oberon_oper_t oberon_oper_t;
 typedef union oberon_expr_t oberon_expr_t;
@@ -130,13 +132,28 @@ struct oberon_module_t
        gen_module_t * gen_mod;
 };
 
-typedef const char * (*ModuleImportCallback)(const char * name);
+struct oberon_location_t
+{
+       const char * source;
+       int line;
+       int col;
+};
+
+struct oberon_scanner_t
+{
+       char * source;
+       char * code;
+};
+
+typedef oberon_scanner_t * (*ModuleImportCallback)(const char * name);
 
 struct oberon_context_t
 {
        /*** SCANER DATA ***/
        const char * code;
        int code_index;
+       oberon_location_t loc;
+       oberon_location_t xloc;
 
        char c;
        int token;
@@ -278,4 +295,13 @@ union oberon_expr_t
        oberon_oper_t oper;
 };
 
+extern oberon_context_t *
+oberon_create_context(ModuleImportCallback import_module);
+
+extern void
+oberon_destroy_context(oberon_context_t * ctx);
+
+extern oberon_module_t *
+oberon_compile_module(oberon_context_t * ctx, oberon_scanner_t * s);
+
 #endif // OBERON_INTERNALS_H