def runqa

bend-kit-regex@0.8.0.0 · regex.bend:2062

import bend-kit-regex@0.8.0.0/regex.bend as Regex
import Base

2062# Each step consumes a byte; after the cache fills, continue in the plain Pike VM.
2063def runqa(+fuel: Nat, r: Qa, +len: U32, +prog: Trie<Inst>, +cfuel: Nat, +init: List<&2, Maybe<&2, U32>>, +start: Maybe<&2, List<&2, Inst>>, +asc: Maybe<&2, Asc>, +any: Bool, +slots: Nat, +cap: U32) -> Array<U32> & Maybe<&2, List<&2, Maybe<&2, U32>>>:
2064  match fuel:
2065    case 0n:
2066      Qa{a, tab, keys, n, id, i, d, ar, same} = r
2067      (a, None{})
2068    case 1n+f:
2069      Qa{a, tab, +keys, +n, +id, +i, d, ar, same} = r
2070      match d:
2071        case DEnd{}:
2072          qa.end.status(ar, a, prog, any)
2073        case Dc{+c, +w}:
2074          match ar:
2075            case QDone{best}:
2076              (a, Some{best})
2077            case QIdle{ar}:
2078              runqa(f, qa.from(rq.of(rb.idle(asc, a, len, (i + w : U32), c, prog, cfuel, init, start, any), tab, keys, n, cap), ar, init, cap), len, prog, cfuel, init, start, asc, any, slots, cap)
2079            case QLive{ar}:
2080              +j = (i + w : U32)
2081              runqa(f, qa.spin(qa.step(dec(a, len, j), j, tab, keys, n, id, ar, c, prog, cfuel, init, start, any, slots, cap), f, len, cap), len, prog, cfuel, init, start, asc, any, slots, cap)
2082            case QPlain{st}:
2083              runb(Nat.add(f, 1n), Rb{a, i, Dc{c, w}, st}, len, prog, cfuel, init, start, asc, any)

Uses (25)

Used by (1)