Agda- A dependently typed functional programming language and proof assistant

Safe HaskellNone




This module defines the things required by Alex and some other Alex related things.


Alex requirements

data AlexInput Source #

This is what the lexer manipulates.




alexInputPrevChar :: AlexInput -> Char Source #

Get the previously lexed character. Same as lexPrevChar. Alex needs this to be defined to handle "patterns with a left-context".

alexGetChar :: AlexInput -> Maybe (Char, AlexInput) Source #

Lex a character. No surprises.

This function is used by Alex 2.

alexGetByte :: AlexInput -> Maybe (Word8, AlexInput) Source #

A variant of alexGetChar.

This function is used by Alex 3.

Lex actions

type LexAction r = PreviousInput -> CurrentInput -> TokenLength -> Parser r Source #

In the lexer, regular expressions are associated with lex actions who's task it is to construct the tokens.

type LexPredicate = ([LexState], ParseFlags) -> PreviousInput -> TokenLength -> CurrentInput -> Bool Source #

Sometimes regular expressions aren't enough. Alex provides a way to do arbitrary computations to see if the input matches. This is done with a lex predicate.

Monad operations