From 68905f339f4115b1daae8648e52ebd25f5cc6683 Mon Sep 17 00:00:00 2001 From: Kia <kia@special-circumstanc.es> Date: Thu, 22 Apr 2021 09:35:10 -0600 Subject: [PATCH] conditionally add the components necessary for serializing if we're asked to generate a parse tree --- unoptimized_lr/simple_lr_automaton.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/unoptimized_lr/simple_lr_automaton.py b/unoptimized_lr/simple_lr_automaton.py index f6107f9..5d2bd4a 100644 --- a/unoptimized_lr/simple_lr_automaton.py +++ b/unoptimized_lr/simple_lr_automaton.py @@ -180,7 +180,8 @@ class ParametrizationConstants(): def __init__(self, *, number_of_terminals, number_of_nonterminals, number_of_states, number_of_reduce_rules, length_of_longest_rule_RHS, maximum_number_of_stack_items, - longest_serialized_parse_tree): + longest_serialized_parse_tree, + generating_tree): self.number_of_terminals = number_of_terminals self.number_of_nonterminals = number_of_nonterminals self.number_of_states = number_of_states @@ -188,6 +189,7 @@ class ParametrizationConstants(): self.length_of_longest_rule_RHS = length_of_longest_rule_RHS self.maximum_number_of_stack_items = maximum_number_of_stack_items self.longest_serialized_parse_tree = longest_serialized_parse_tree + self.generating_tree = generating_tree # We calculate the ceil(log_2())'s here all in one go: @@ -215,7 +217,7 @@ class ParametrizationConstants(): class LR_automaton_internal(Layout): def __init__(self, *, parameters): - super().__init__([ + interfaces = [ # TABLES ("ShiftReduce_table_bus"), ("GOTO_table_bus"), @@ -223,20 +225,24 @@ class LR_automaton_internal(Layout): # STACKS ("parse_stack_bus"), - ("index_stack_bus"), - ]) + ] + if(parameters.generating_tree == True): + interfaces.append(("index_stack_bus")) + super().__init__(interfaces) class LR_automaton_external(Layout): def __init__(self, *, parameters): - super().__init__([ + interfaces = [ # INPUT ("input_stream"), # OUTPUTS - ("serialization_bus"), ("sideband_bus") - ]) + ] + if (parameters.generating_tree == True): + interfaces.append(("serialization_bus")) + super().__init__(interfaces) class SimpleLRAutomaton(Elaboratable): def __init__(self, *, lr_tables, parameters): -- GitLab