def eps.inst
bend-kit-regex@0.8.0.0 · regex.bend:793
import bend-kit-regex@0.8.0.0/regex.bend as Regex
import Base
793def eps.inst(i: Maybe<&2, Inst>, +pc: U32, +at0: Bool, +at1: Bool, stack: List<&2, U32>, seen: List<&2, U32>, +mask: U32, hit: Bool) -> Ew:
794 match i:
795 case Some{IJmp{x}}:
796 Ew{x <> stack, seen, mask, hit}
797 case Some{ISplit{x, y}}:
798 Ew{x <> y <> stack, seen, mask, hit}
799 case Some{ISave{k}}:
800 Ew{(pc + 1 : U32) <> stack, seen, mask, hit}
801 case Some{IAssert{k}}:
802 eps.assert(eps.ctx(k, at0, at1), pc, stack, seen, mask, hit)
803 case Some{ISet{neg, items}}:
804 Ew{stack, seen, (mask .|. (1 << U32.to_nat(pc)) : U32), hit}
805 case Some{IMatch{}}:
806 Ew{stack, seen, mask, True{}}
807 case None{}:
808 Ew{stack, seen, mask, hit}