diff --git a/python_arborist.py b/python_arborist.py index 9ac7e97905ede63131bfa1cd52e5d30f66c599ce..962174cbdd49942f234f603b648a3fdab5b77d49 100644 --- a/python_arborist.py +++ b/python_arborist.py @@ -245,6 +245,29 @@ class Cirno(Elaboratable): +tokens ={ +"BOTTOM": 0x5a00, +"ENDOFPARSE": 0x5500, +"EXPRESSION": 0xEE00, +"TERM": 0xE700, +"FACTOR": 0xEF00, +"INTEGER": 0xE100, + +"OPENPAREN": 0xCA00, +"CLOSEPAREN": 0xCB00, +"ADDOP" : 0xAA00, +"MULTOP" : 0xAB00, +"STDMASK" : 0xff00 +} + +revmap = {v: k for k, v in tokens.items()} + +print(revmap) + +def hex_to_name(x): + return revmap[x] + + BOTTOM = 0x5a00 ENDOFPARSE = 0x5500 @@ -260,7 +283,6 @@ ADDOP = 0xAA00 MULTOP = 0xAB00 STDMASK = 0xff00 - rules = [ (EXPRESSION, [EXPRESSION, ADDOP, TERM ]), (EXPRESSION, [TERM ]), @@ -279,7 +301,6 @@ cooked_rules = z.preprocessor() parse_me = z.Gzero_shimmed(EXPRESSION, 7) parse_me.append(ENDOFPARSE) -print("XXXXXXXXXXXXXXX",parse_me) @@ -289,14 +310,14 @@ class TreeNode: self.subnodes = subnodes def __str__(self): - return str(self.language_element) + str(self.subnodes) + return str(hex_to_name(self.language_element)) + str(self.subnodes) def walk_the_tree(tree, level = 1): if tree == None: return - print(" " * (level -1) + "|---" + hex(tree.language_element) + " with " + str(len(tree.subnodes)) + " subnodes") + print(" " * (level -1) + "|---" + hex_to_name(tree.language_element) + " with " + str(len(tree.subnodes)) + " subnodes") for subnode in tree.subnodes: walk_the_tree(subnode, level + 1) @@ -410,4 +431,6 @@ def deserializer(serialized_array): the_tree = deserializer(serialized_tree_final) print(the_tree) -walk_the_tree(the_tree) \ No newline at end of file +walk_the_tree(the_tree) + +print("THE ORIGINAL WAS", [hex_to_name(x) for x in parse_me])