data Recognise : Bool -> Type
A language of token recognisers.
@ consumes If `True`, this recogniser is guaranteed to consume at
least one character of input when it succeeds.
Totality: total
Visibility: export
Constructors:
Empty : Recognise False
Fail : Recognise c
EOF : Recognise False
Lookahead : Bool -> Recognise c -> Recognise False
Pred : (Char -> Bool) -> Recognise True
SeqEat : Recognise True -> Inf (Recognise e) -> Recognise True
SeqEmpty : Recognise e1 -> Recognise e2 -> Recognise (e1 || Delay e2)
SeqSame : Recognise e -> Recognise e -> Recognise e
Alt : Recognise e1 -> Recognise e2 -> Recognise (e1 && Delay e2)
Lexer : Type
A token recogniser. Guaranteed to consume at least one character.
Totality: total
Visibility: public export(<+>) : Recognise c1 -> inf c1 (Recognise c2) -> Recognise (c1 || Delay c2)
Sequence two recognisers. If either consumes a character, the sequence
is guaranteed to consume a character.
Totality: total
Visibility: export
Fixity Declaration: infixl operator, level 8(<|>) : Recognise c1 -> Recognise c2 -> Recognise (c1 && Delay c2)
Alternative recognisers. If both consume, the combination is guaranteed
to consume a character.
Totality: total
Visibility: export
Fixity Declaration: infixr operator, level 2fail : Recognise c
A recogniser that always fails.
Totality: total
Visibility: exportempty : Recognise False
Recognise no input (doesn't consume any input)
Totality: total
Visibility: exporteof : Recognise False
Recognise end of input
Totality: total
Visibility: exportpred : (Char -> Bool) -> Lexer
Recognise a character that matches a predicate
Totality: total
Visibility: exportexpect : Recognise c -> Recognise False
Positive lookahead. Never consumes input.
Totality: total
Visibility: exportreject : Recognise c -> Recognise False
Negative lookahead. Never consumes input.
Totality: total
Visibility: exportconcatMap : (a -> Recognise c) -> (xs : List a) -> Recognise (isCons xs && Delay c)
Sequence the recognisers resulting from applying a function to each element
of a list. The resulting recogniser will consume input if the produced
recognisers consume and the list is non-empty.
Totality: total
Visibility: exportscan : Recognise c -> List Char -> List Char -> Maybe (List Char, List Char)
- Totality: total
Visibility: export TokenMap : Type -> Type
A mapping from lexers to the tokens they produce.
This is a list of pairs `(Lexer, String -> tokenType)`
For each Lexer in the list, if a substring in the input matches, run
the associated function to produce a token of type `tokenType`
Totality: total
Visibility: public exportlex : TokenMap a -> String -> (List (WithBounds a), (Int, (Int, String)))
Given a mapping from lexers to token generating functions (the
TokenMap a) 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.
Totality: total
Visibility: exportlexTo : (a -> Bool) -> TokenMap a -> String -> (List (WithBounds a), (Int, (Int, String)))
- Totality: total
Visibility: export