uulib-0.9.21: 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.

class OutputState r where Source

Methods

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

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

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) Source 

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) Source 

data Expecting s Source

Constructors

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

Instances

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

data SymbolR s Source

Constructors

Range !s !s 
EmptyR 

Instances

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

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 :: (Ord s, Foldable t, Symbol s) => SymbolR s -> t s -> [SymbolR s] Source

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