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}

Uses (12)

Used by (1)