This module provides an experimental alternative to `Text.ILex.Stack` with a correctly typed parser stack.
data Stack : Bool -> (SnocList Type -> Type) -> SnocList Type -> TypeLin : Stack False s [<](:>) : Stack b s ts -> s ts -> Stack True s [<](:<) : Stack b s ts -> t -> Stack False s (ts :< t)push : Stack b s [<] -> t -> s [<t] -> Stack True s [<]record DStack : (SnocList Type -> Type) -> Type -> Type -> TypeS : Ref q ByteString -> Ref q ByteString -> Ref q Nat -> Ref q Integer -> Ref q Nat -> Ref q (SnocList BytePos) -> Ref q (SnocList String) -> Ref q (Stack True s [<]) -> Ref q (Maybe (BBErr e)) -> DStack s e q.cur_ : DStack s e q -> Ref q ByteString.error_ : DStack s e q -> Ref q (Maybe (BBErr e)).len_ : DStack s e q -> Ref q Nat.offset_ : DStack s e q -> Ref q Nat.positions_ : DStack s e q -> Ref q (SnocList BytePos).prev_ : DStack s e q -> Ref q ByteString.relpos_ : DStack s e q -> Ref q Integer.stack_ : DStack s e q -> Ref q (Stack True s [<]).strings_ : DStack s e q -> Ref q (SnocList String).prev_ : DStack s e q -> Ref q ByteStringprev_ : DStack s e q -> Ref q ByteString.cur_ : DStack s e q -> Ref q ByteStringcur_ : DStack s e q -> Ref q ByteString.offset_ : DStack s e q -> Ref q Natoffset_ : DStack s e q -> Ref q Nat.relpos_ : DStack s e q -> Ref q Integerrelpos_ : DStack s e q -> Ref q Integer.len_ : DStack s e q -> Ref q Natlen_ : DStack s e q -> Ref q Nat.positions_ : DStack s e q -> Ref q (SnocList BytePos)positions_ : DStack s e q -> Ref q (SnocList BytePos).strings_ : DStack s e q -> Ref q (SnocList String)strings_ : DStack s e q -> Ref q (SnocList String).stack_ : DStack s e q -> Ref q (Stack True s [<])stack_ : DStack s e q -> Ref q (Stack True s [<]).error_ : DStack s e q -> Ref q (Maybe (BBErr e))error_ : DStack s e q -> Ref q (Maybe (BBErr e))init : Stack True s [<] -> F1 q (DStack s e q)Initializes a new parser stack.
0 StateAct : Type -> (SnocList Type -> Type) -> Bits32 -> Typedact : DStack s e q => StateAct q s r -> F1 q (Index r)dput : DStack s e q => s ts -> Cast (s ts) a => Stack b s ts -> F1 q adpush0 : DStack s e q => s [<] -> Cast (s [<]) a => F1 q adpush : DStack s e q => s [<t] -> Cast (s [<t]) a => t -> F1 q aderr : DStack s e q => s [<] -> Cast (s [<]) a => Stack b s ts -> s ts -> F1 q a