alex-tools-0.6: A set of functions for a common use case of Alex.
Safe HaskellNone
LanguageHaskell2010

AlexTools

Synopsis

Lexer Basics

initialInput Source #

Arguments

:: Text

Where the text came from

-> Text

The text to lex

-> Input 

Prepare the text for lexing.

initialInputAt Source #

Arguments

:: SourcePos

Starting poistion

-> Text

The text to lex, not including any preceeding text

-> Input 

Prepare the text for lexing, starting at a particular position. This is useful when the document is not at the start of the file. Since: 0.6

data Input Source #

Information about the lexer's input.

Constructors

Input 

Fields

inputFile :: Input -> Text Source #

The file/thing for the current position.

data Lexeme t Source #

Constructors

Lexeme 

Instances

Instances details
Eq t => Eq (Lexeme t) Source # 
Instance details

Defined in AlexTools

Methods

(==) :: Lexeme t -> Lexeme t -> Bool #

(/=) :: Lexeme t -> Lexeme t -> Bool #

Show t => Show (Lexeme t) Source # 
Instance details

Defined in AlexTools

Methods

showsPrec :: Int -> Lexeme t -> ShowS #

show :: Lexeme t -> String #

showList :: [Lexeme t] -> ShowS #

NFData t => NFData (Lexeme t) Source # 
Instance details

Defined in AlexTools

Methods

rnf :: Lexeme t -> () #

HasRange (Lexeme t) Source # 
Instance details

Defined in AlexTools

data SourcePos Source #

Constructors

SourcePos 

Instances

Instances details
Eq SourcePos Source # 
Instance details

Defined in AlexTools

Show SourcePos Source # 
Instance details

Defined in AlexTools

NFData SourcePos Source # 
Instance details

Defined in AlexTools

Methods

rnf :: SourcePos -> () #

HasRange SourcePos Source # 
Instance details

Defined in AlexTools

Lift SourcePos Source # 
Instance details

Defined in AlexTools

startPos Source #

Arguments

:: Text

Name of file/thing containing this

-> SourcePos 

prevPos :: SourcePos -> SourcePos Source #

Move one position back. Assumes that newlines use a single bytes.

This function is intended to be used when starting the lexing somewhere in the middle of the input, for example, if we are implementing a quasi quoter, and the previous part of the input is not in our language.

data SourceRange Source #

A range in the source code.

Constructors

SourceRange 

Instances

Instances details
Eq SourceRange Source # 
Instance details

Defined in AlexTools

Show SourceRange Source # 
Instance details

Defined in AlexTools

NFData SourceRange Source # 
Instance details

Defined in AlexTools

Methods

rnf :: SourceRange -> () #

HasRange SourceRange Source # 
Instance details

Defined in AlexTools

Lift SourceRange Source # 
Instance details

Defined in AlexTools

prettySourcePos :: SourcePos -> String Source #

Pretty print the source position without the file name.

prettySourceRange :: SourceRange -> String Source #

Pretty print the range, without the file name

prettySourcePosLong :: SourcePos -> String Source #

Pretty print the source position, including the file name.

prettySourceRangeLong :: SourceRange -> String Source #

Pretty print the range, including the file name.

class HasRange t where Source #

Methods

range :: t -> SourceRange Source #

Instances

Instances details
HasRange SourceRange Source # 
Instance details

Defined in AlexTools

HasRange SourcePos Source # 
Instance details

Defined in AlexTools

HasRange (Lexeme t) Source # 
Instance details

Defined in AlexTools

(HasRange a, HasRange b) => HasRange (Either a b) Source # 
Instance details

Defined in AlexTools

Methods

range :: Either a b -> SourceRange Source #

(<->) :: (HasRange a, HasRange b) => a -> b -> SourceRange Source #

moveSourcePos :: Char -> SourcePos -> SourcePos Source #

Update a SourcePos for a particular matched character

Writing Lexer Actions

data Action s a Source #

An action to be taken when a regular expression matchers.

Instances

Instances details
Monad (Action s) Source # 
Instance details

Defined in AlexTools

Methods

(>>=) :: Action s a -> (a -> Action s b) -> Action s b #

(>>) :: Action s a -> Action s b -> Action s b #

return :: a -> Action s a #

Functor (Action s) Source # 
Instance details

Defined in AlexTools

Methods

fmap :: (a -> b) -> Action s a -> Action s b #

(<$) :: a -> Action s b -> Action s a #

Applicative (Action s) Source # 
Instance details

Defined in AlexTools

Methods

pure :: a -> Action s a #

(<*>) :: Action s (a -> b) -> Action s a -> Action s b #

liftA2 :: (a -> b -> c) -> Action s a -> Action s b -> Action s c #

(*>) :: Action s a -> Action s b -> Action s b #

(<*) :: Action s a -> Action s b -> Action s a #

Lexemes

lexeme :: t -> Action s [Lexeme t] Source #

Use the token and the current match to construct a lexeme.

matchLength :: Action s Int Source #

The number of characters in the matching input.

matchRange :: Action s SourceRange Source #

Get the range for the matching input.

matchText :: Action s Text Source #

Get the text associated with the matched input.

Manipulating the lexer's state

getLexerState :: Action s s Source #

Acces the curent state of the lexer.

setLexerState :: s -> Action s () Source #

Change the state of the lexer.

Access to the lexer's input

startInput :: Action s Input Source #

Acces the input just before the regular expression started matching.

endInput :: Action s Input Source #

Acces the input just after the regular expression that matched.

Interface with Alex

makeLexer :: ExpQ Source #

Generate a function to use an Alex lexer. The expression is of type LexerConfig s t -> Input -> [Lexeme t]

data LexerConfig s t Source #

Lexer configuration.

Constructors

LexerConfig 

Fields

simpleLexer :: LexerConfig () t Source #

A lexer that uses no lexer-modes, and does not emit anything at the end of the file.

data Word8 #

8-bit unsigned integer type

Instances

Instances details
Bounded Word8

Since: base-2.1

Instance details

Defined in GHC.Word

Enum Word8

Since: base-2.1

Instance details

Defined in GHC.Word

Eq Word8

Since: base-2.1

Instance details

Defined in GHC.Word

Methods

(==) :: Word8 -> Word8 -> Bool #

(/=) :: Word8 -> Word8 -> Bool #

Integral Word8

Since: base-2.1

Instance details

Defined in GHC.Word

Num Word8

Since: base-2.1

Instance details

Defined in GHC.Word

Ord Word8

Since: base-2.1

Instance details

Defined in GHC.Word

Methods

compare :: Word8 -> Word8 -> Ordering #

(<) :: Word8 -> Word8 -> Bool #

(<=) :: Word8 -> Word8 -> Bool #

(>) :: Word8 -> Word8 -> Bool #

(>=) :: Word8 -> Word8 -> Bool #

max :: Word8 -> Word8 -> Word8 #

min :: Word8 -> Word8 -> Word8 #

Read Word8

Since: base-2.1

Instance details

Defined in GHC.Read

Real Word8

Since: base-2.1

Instance details

Defined in GHC.Word

Methods

toRational :: Word8 -> Rational #

Show Word8

Since: base-2.1

Instance details

Defined in GHC.Word

Methods

showsPrec :: Int -> Word8 -> ShowS #

show :: Word8 -> String #

showList :: [Word8] -> ShowS #

Ix Word8

Since: base-2.1

Instance details

Defined in GHC.Word

Bits Word8

Since: base-2.1

Instance details

Defined in GHC.Word

FiniteBits Word8

Since: base-4.6.0.0

Instance details

Defined in GHC.Word

NFData Word8 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Word8 -> () #

Lift Word8 
Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Word8 -> Q Exp #

liftTyped :: Word8 -> Q (TExp Word8) #