diff options
Diffstat (limited to 'tnslc/compile/ast.tnsl')
-rw-r--r-- | tnslc/compile/ast.tnsl | 247 |
1 files changed, 0 insertions, 247 deletions
diff --git a/tnslc/compile/ast.tnsl b/tnslc/compile/ast.tnsl deleted file mode 100644 index 6efee60..0000000 --- a/tnslc/compile/ast.tnsl +++ /dev/null @@ -1,247 +0,0 @@ - -int NT_MODULE = 0 -int NT_MOD_EX = 1 -int NT_BLOCK = 2 -int NT_FUNC = 3 -int NT_PARAM = 4 -int NT_RESULT = 5 -int NT_DATA = 6 -int NT_TYPE = 7 -int NT_STRUCT = 8 - -struct Node { - int _type, - ~uint8 data, - utils.Vector sub -} - -/; method Node - /; init (int typ, ~uint8 dat) - self._type = typ - self.data = dat - Node sub - self.sub.init(len sub) - ;/ - - /; end - _delete(self.data) - - ~Node n - /; loop (int i = 0; i < self.sub.count) [i++] - n = self.sub.get(i) - n`.end() - ;/ - self.sub.end() - ;/ - -;/ - -/; check_via_next (~utils.Iterator it, ~uint8 chk) [bool] - it`.next() - - /; if (it`.at_end() == true) - it`.prev() - return false - ;/ - - ~Token cur = it`.get() - /; if (utils.strcmp(cur`.data, cur) == true) - return true - ;/ - - it`.prev() - return false -;/ - -/; check_and_advance (~utils.Iterator it, ~uint8 chk) [bool] - /; if (it`.at_end() == true) - return false - ;/ - - ~Token cur = it`.get() - /; if (utils.strcmp(cur`.data, cur) == true) - it`.next() - return true - ;/ - - return false -;/ - -/; build_struct (~utils.Iterator it, ~Node mod, ~utils.File fin) -;/ - -/; build_module (~utils.Iterator it, ~Node mod, ~utils.File fin) - - int NT = NT_MODULE - ~Token t = it`.get() - /; if (utils.strcmp(t`.data, "export\0")) - NT = NT_MOD_EX - it`.next() - ;/ - - Node sub - it`.next() - t = it`.get() - - /; if (t`._type !== TT_DEFWORD) - _printf("Error in module decl") - return - ;/ - - sub.init(NT, utils.strcpy(t`.data)) - bool run = true - - /; loop (it`.at_end() == false && run == true) - t = it`.get() - - /; if (utils.strcmp(t`.data, ";/\0") || utils.strcmp(t`.data, ";;\0")) - run = false - - ;; else if (utils.strcmp(t`.data, "/;\0")) - _printf("Block detected!\n\0") - build_block(it, ~sub, fin) - - ;; else if (utils.strcmp(t`.data, "struct\0") == true) - _printf("Struct detected!\n\0") - build_struct(it, ~sub, fin) - - ;; else if (utils.strcmp(t`.data, ":\0") == true) - _printf("Preproc detected!\n\0") - build_preproc(it, ~sub, fin) - - ;; else if (at_defn(it) == true) - _printf("Defn detected!\n\0") - build_vardef(it, ~sub, fin) - - ;; else - # _printf("Error detected!\n\0") - # TODO: ERROR - ;/ - - /; if (run == true) - it`.next() - ;/ - ;/ - - mod`.sub.push(~sub) -;/ - -/; build_method (~utils.Iterator it, ~Node mod, ~utils.File fin) -;/ - -/; build_function (~utils.Iterator it, ~Node mod, ~utils.File fin) -;/ - -/; build_block (~utils.Iterator it, ~Node mod, ~utils.File fin) - it`.next() - - /; if (it`.at_end() == true) - return - ;/ - - ~Token cur - bool run = true - - /; loop (it`.at_end() == false && run == true) - cur = it`.get() - - /; if (utils.strcmp(cur`.data, "module\0") || utils.strcmp(cur`.data, "export\0")) - build_module(it, mod, fin) - - ;; else if (utils.strcmp(cur`.data, "method\0") == true) - build_method(it, mod, fin) - - ;; else if (cur`._type == TT_DEFWORD) - build_function(it, mod, fin) - - ;; else - # TODO: ERROR - - ;/ - - cur = it`.get() - - /; if (utils.strcmp(cur`.data, ";/\0") == true) - run = false - ;; else if (utils.strcmp(cur`.data, ";;\0") == true) - it`.next() - ;; else - run = false - # report error - ;/ - ;/ - -;/ - -/; build_preproc (~utils.Iterator it, ~Node mod, ~utils.File fin) - it`.next() - /; if (it`.at_end() == true) - return - ;/ - - ~Token cur = it`.get() - /; if (utils.strcmp(cur`.data, "import\0") == true) - # get file path - it`.next() - cur = it`.get() - - # gen new file struct - ~uint8 frel = utils.unquote_str(cur`.data) - _printf("\nReading file: \0") - _printf(frel) - _printf("\n\0") - utils.File fnew = fin`.relative(frel) - - # file import - build_file(~fnew, mod) - - # cleanup - _delete(frel) - fnew.end() - ;; else - # unknown preproc - return - ;/ -;/ - -/; build_vardef (~utils.Iterator it, ~Node mod, ~utils.File fin) -;/ - -/; at_defn (~utils.Iterator it) [bool] - return false -;/ - -~uint8 TOKEN_COUNT = "Token count: %d\n\0" - -/; build_file (~utils.File fin, ~Node mod) - utils.Vector tokens = tokenize(fin) - _print_num(TOKEN_COUNT, tokens.count) - - utils.Iterator tokit - tokit.init(~tokens) - - /; loop (tokit.at_end() == false) - ~Token t = tokit.get() - /; if (utils.strcmp(t`.data, "/;\0") || utils.strcmp(t`.data, ";;\0")) - _printf("Block detected!\n\0") - build_block(~tokit, mod, fin) - ;; else if (utils.strcmp(t`.data, "struct\0") == true) - _printf("Struct detected!\n\0") - build_struct(~tokit, mod, fin) - ;; else if (utils.strcmp(t`.data, ":\0") == true) - _printf("Preproc detected!\n\0") - build_preproc(~tokit, mod, fin) - ;; else if (at_defn(~tokit) == true) - _printf("Defn detected!\n\0") - build_vardef(~tokit, mod, fin) - ;; else - # _printf("Error detected!\n\0") - # TODO: ERROR - ;/ - - tokit.next() - ;/ - - free_token_list(~tokens) -;/ - |