/## Copyright 2021 Kyle Gunger This file is licensed under the CDDL 1.0 (the License) and may only be used in accordance with the License. You should have received a copy of the License with this software/source code. If you did not, a copy can be found at the following URL: https://opensource.org/licenses/CDDL-1.0 THIS SOFTWARE/SOURCE CODE IS PROVIDED "AS IS" WITH NO WARRANTY, GUARANTEE, OR CLAIM OF FITNESS FOR ANY PURPOSE EXPRESS OR IMPLIED #/ /; make_null_node [Node] ;{}charp null_str = "" ;Token null_tok = {0, 0, 0, ~null_str} ;{}Node sub = {} ;return {null_tok, ~sub} ;/ /# # This should be the main entry point into the AST module # #; make_tree (~{}Token tokens, {}charp name) [Node] ;Token root = {0, 0, NODE_TYPE.FILE, ~name} ;{}Node sub = {} /; loop (int i = 0; i < len tokens`) [i++] ;{}charp to_check = tokens`{i}.data` /; if (string_equate(to_check, ";")) ;sub.append(tree_statement(tokens, ~i)) ;; else if (string_equate(to_check, ":")) ;sub.append(tree_preproc(tokens, ~i)) ;; else if (string_equate(to_check, "/;")) ;sub.append(tree_block(tokens, ~i)) ;; else if (string_equate(to_check, "/:")) ;sub.append(tree_preblock(tokens, ~i)) ;; else ;break ;/ ;/ ;return {root, ~sub} ;/