data Tokenizer : Type -> Type -> TypeDescription of a language's tokenization rule.
Direct : Tok True e tt -> Tokenizer e ttUse this for fast, direct lexing of constant tokens.
Note: It is assumed that the lexed characters do *NOT* contain
any line breaks.
Compose : Tok True e (tt, tag) -> Inf (tag -> Tokenizer e tt) -> (tag -> Tok True e tt) -> Tokenizer e tt(<|>) : Tokenizer e tt -> Lazy (Tokenizer e tt) -> Tokenizer e ttchoiceMap : (a -> Tokenizer e tt) -> (as : List a) -> {auto 0 _ : NonEmpty as} -> Tokenizer e ttchoice : (rs : List (Tokenizer e tt)) -> {auto 0 _ : NonEmpty rs} -> Tokenizer e ttrecord TokRes : Bool -> List Char -> Type -> Type -> TypeResult of running a `Tokenizer` repeatedly over a
sequence of characters.
TR : Position -> SnocList (Bounded a) -> Maybe r -> (rem : List Char) -> (0 _ : Suffix strict rem cs) -> TokRes strict cs r a.pos : TokRes strict cs r a -> Positionpos : TokRes strict cs r a -> Position.toks : TokRes strict cs r a -> SnocList (Bounded a)toks : TokRes strict cs r a -> SnocList (Bounded a).reason : TokRes strict cs r a -> Maybe rreason : TokRes strict cs r a -> Maybe r.rem : TokRes strict cs r a -> List Charrem : TokRes strict cs r a -> List Char0 .suf : ({rec:0} : TokRes strict cs r a) -> Suffix strict (rem {rec:0}) cs0 suf : ({rec:0} : TokRes strict cs r a) -> Suffix strict (rem {rec:0}) cslex : Interpolation a => Tokenizer e a -> (s : String) -> TokRes False (unpack s) (Bounded (InnerError e)) aGiven a tokenizer and an input string, return a list of recognised tokens,
and the line, column, and remainder of the input at the first point in the string
where there are no recognised tokens.