From eb409589c581b8874269213f1449316efb5d2e8e Mon Sep 17 00:00:00 2001
From: Kia <kia@special-circumstanc.es>
Date: Mon, 9 Mar 2020 19:46:17 -0600
Subject: [PATCH] more work on tree serializer

---
 combinatorial_LR_parser.py | 23 ++++++++++++++++++-----
 1 file changed, 18 insertions(+), 5 deletions(-)

diff --git a/combinatorial_LR_parser.py b/combinatorial_LR_parser.py
index 95efc70..8d67085 100644
--- a/combinatorial_LR_parser.py
+++ b/combinatorial_LR_parser.py
@@ -453,19 +453,32 @@ class RuleExecutor(Elaboratable):
                 m.d.comb += self.push_item.eq(new_item_func(self.stack_view_in))
         return m
 
-# We create a serialized parsetree from the bottom up, with 
+# We create a serialized parse tree from the bottom up, with 
 
 class TreeSerializer(Elaboratable):
-    def __init__(self, item_width, serializing_ruleset):
+    def __init__(self, item_width, stack_depth, serializing_ruleset, number_to_pop, reduce_rule_number, item_created_by_reduce_rule, strobe_in, ready_out):
         # Parameters
         self.item_width = item_width
+        self.stack_depth = stack_depth
         self.serializing_ruleset = serializing_ruleset
 
-        self.item_created_by_reduce_rule_in = Signal(item_width)
-        self.reduce_rule_number_in          = Signal(item_width)
+        self.number_to_pop               = Signal(range(stack_depth))
+        self.reduce_rule_number          = Signal(item_width)
+        self.item_created_by_reduce_rule = Signal(item_width)
+
+        self.strobe_in                   = Signal(1)
+        self.ready_out                   = Signal(1)
 
+    def elaborate(self, platform):
+        m = Module()
+
+        to_pop = Signal(range(self.stack_depth))
+
+        with m.FSM() as fsm:
+            with m.State("READY"):
+                m.d.comb += self.ready_out.eq(1)
+                with m.If(strobe_in == 1):
 
-        
 
 
 # This is the master state machine -- it interfaces with the outside
-- 
GitLab