uulib-0.9.20: Haskell Utrecht Tools Library

Safe HaskellNone
LanguageHaskell98

UU.Parsing.MachineInterface

Synopsis

Documentation

class InputState state s pos | state -> s, state -> pos where Source

The InputState class contains the interface that the AnaParser parsers expect for the input. A minimal complete instance definition consists of splitStateE, splitState and getPosition.

Minimal complete definition

splitStateE, splitState, getPosition

Methods

splitStateE :: state -> Either' state s Source

Splits the state in a strict variant of Either, with Left' if a symbol can be split off and Right' if none can

splitState :: state -> (#s, state#) Source

Splits the state in the first symbol and the remaining state

getPosition :: state -> pos Source

Gets the current position in the input

reportError :: Message s pos -> state -> state Source

Reports an error

insertSymbol :: s -> state -> state Source

Modify the state as the result of inserting a symbol s in the input. The symbol that has already been considered as having been inserted is passed. It should normally not be added to the state.

deleteSymbol :: s -> state -> state Source

Modify the state as the result of deleting a symbol s from the input. The symbol that has already been deleted from the input state is passed. It should normally not be deleted from the state.

Instances

InputState Input Char Pos 
InputState [s] s (Maybe s) 
InputState inp s p => InputState (inp, state) s p 
InputState inp s p => InputState (OffsideInput inp s p) (OffsideSymbol s) p 

class OutputState r where Source

Methods

acceptR :: v -> rest -> r v rest Source

nextR :: (a -> rest -> rest') -> (b -> a) -> r b rest -> rest' Source

Instances

class Symbol s where Source

Minimal complete definition

Nothing

Methods

deleteCost :: s -> Int# Source

symBefore :: s -> s Source

symAfter :: s -> s Source

Instances

data Either' state s Source

Constructors

Left' !s state 
Right' state 

data Steps val s p Source

Constructors

forall a . OkVal (a -> val) (Steps a s p) 
Ok 

Fields

rest :: Steps val s p
 
Cost 

Fields

costing :: Int#
 
rest :: Steps val s p
 
StRepair 

Fields

costing :: Int#
 
m :: !(Message s p)
 
rest :: Steps val s p
 
Best (Steps val s p) (Steps val s p) (Steps val s p) 
NoMoreSteps val 

data Action s Source

Constructors

Insert s 
Delete s 
Other String 

Instances

Show s => Show (Action s) 

val :: (a -> b) -> Steps a s p -> Steps b s p Source

evalSteps :: Steps a s p -> a Source

getMsgs :: Steps a s p -> [Message s p] Source

data Message sym pos Source

Constructors

Msg (Expecting sym) !pos (Action sym) 

Instances

(Eq s, Show s, Show p) => Show (Message s p) 

data Expecting s Source

Constructors

ESym (SymbolR s) 
EStr String 
EOr [Expecting s] 
ESeq [Expecting s] 

Instances

Eq s => Eq (Expecting s) 
Ord s => Ord (Expecting s) 
(Eq s, Show s) => Show (Expecting s) 

data SymbolR s Source

Constructors

Range !s !s 
EmptyR 

Instances

Eq s => Eq (SymbolR s) 
Ord s => Ord (SymbolR s) 
(Eq s, Show s) => Show (SymbolR s) 

mk_range :: Ord s => s -> s -> SymbolR s Source

symInRange :: Ord a => SymbolR a -> a -> Bool Source

symRS :: Ord a => SymbolR a -> a -> Ordering Source

except :: (Symbol a, Ord a) => SymbolR a -> [a] -> [SymbolR a] Source

systemerror :: [Char] -> [Char] -> t Source