diff --git a/combinatorial_LR_parser.py b/combinatorial_LR_parser.py index 30a1b9c1c79264e235601784608e3c78810b2dbe..4c4359b97bab9fbcef6ea3125018acef85c661df 100644 --- a/combinatorial_LR_parser.py +++ b/combinatorial_LR_parser.py @@ -359,13 +359,16 @@ class HitOrMiss(Elaboratable): stack_predicates.append(predicate_status) m.d.comb += stack_as_described.eq(reduce(lambda x, y: x & y, stack_predicates)) - if(stack_as_described == 1): + with m.If(stack_as_described == 1): m.d.comb += matching_reduce_rules_onehot[rule_number].eq(1) # We now have: # 1) a single-bit signal whether the new item is a valid new item or not - + # 2) a single-bit signal whether the new item must be shifted + # 3) a one-hot signal that tells us which reduce rules match + + with m.If match_index_out_bits = [] # these are the components of the one-hot match_index_out signal return m