diff --git a/python_arborist.py b/python_arborist.py index b73cbdd9ece08fdad31e15db9c15b0d3ea073fd3..9ac7e97905ede63131bfa1cd52e5d30f66c599ce 100644 --- a/python_arborist.py +++ b/python_arborist.py @@ -261,6 +261,28 @@ MULTOP = 0xAB00 STDMASK = 0xff00 +rules = [ + (EXPRESSION, [EXPRESSION, ADDOP, TERM ]), + (EXPRESSION, [TERM ]), + (TERM, [TERM, MULTOP, FACTOR ]), + (TERM, [FACTOR ]), + (FACTOR, [OPENPAREN, EXPRESSION, CLOSEPAREN]), + (FACTOR, [INTEGER ]) + ] + +list_of_nonterminals = [EXPRESSION, TERM, FACTOR] + +list_of_terminals = [INTEGER, ADDOP, MULTOP, OPENPAREN, CLOSEPAREN] + +z = CFGBoltzmann.CFGBoltzmann(rules, list_of_nonterminals, list_of_terminals) +cooked_rules = z.preprocessor() +parse_me = z.Gzero_shimmed(EXPRESSION, 7) +parse_me.append(ENDOFPARSE) + +print("XXXXXXXXXXXXXXX",parse_me) + + + class TreeNode: def __init__(self, language_element, subnodes): self.language_element = language_element @@ -302,10 +324,9 @@ if __name__ == '__main__': break - init_data = [0XE104, ENDOFPARSE] with m.Switch(nine.input_memory_addr): - for addr,data in enumerate(init_data): + for addr,data in enumerate(parse_me): with m.Case(addr): #print(addr,data) m.d.sync += nine.input_memory_data.eq(data)