uulib-0.9.3ContentsIndex
UU.Parsing.MachineInterface
Synopsis
class InputState state s pos | state -> s, state -> pos where
splitStateE :: state -> Either' state s
splitState :: state -> (s, state)
getPosition :: state -> pos
reportError :: Message s pos -> state -> state
insertSymbol :: s -> state -> state
deleteSymbol :: s -> state -> state
class OutputState r where
acceptR :: v -> rest -> r v rest
nextR :: (a -> rest -> rest') -> (b -> a) -> r b rest -> rest'
class Symbol s where
deleteCost :: s -> Int
symBefore :: s -> s
symAfter :: s -> s
data Either' state s
= Left' !s state
| Right' state
data Steps val s p
= forall a . OkVal (a -> val) (Steps a s p)
| Ok {
rest :: (Steps val s p)
}
| Cost {
costing :: Int
rest :: (Steps val s p)
}
| StRepair {
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
= Insert s
| Delete s
| Other String
val :: (a -> b) -> Steps a s p -> Steps b s p
evalSteps :: Steps a s p -> a
getMsgs :: Steps a s p -> [Message s p]
data Message sym pos = Msg (Expecting sym) !pos (Action sym)
data Expecting s
= ESym (SymbolR s)
| EStr String
| EOr [Expecting s]
| ESeq [Expecting s]
data SymbolR s
= Range !s !s
| EmptyR
Documentation
class InputState state s pos | state -> s, state -> pos where
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.
Methods
splitStateE :: state -> Either' state s
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)
Splits the state in the first symbol and the remaining state
getPosition :: state -> pos
Gets the current position in the input
reportError :: Message s pos -> state -> state
Reports an error
insertSymbol :: s -> state -> state
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
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.
show/hide Instances
InputState Input Char Pos
InputState inp s p => InputState (inp, state) s p
InputState [s] s (Maybe s)
InputState inp s p => InputState (OffsideInput inp s p) (OffsideSymbol s) p
class OutputState r where
Methods
acceptR :: v -> rest -> r v rest
nextR :: (a -> rest -> rest') -> (b -> a) -> r b rest -> rest'
show/hide Instances
class Symbol s where
Methods
deleteCost :: s -> Int
symBefore :: s -> s
symAfter :: s -> s
show/hide Instances
data Either' state s
Constructors
Left' !s state
Right' state
data Steps val s p
Constructors
forall a . OkVal (a -> val) (Steps a s p)
Ok
rest :: (Steps val s p)
Cost
costing :: Int
rest :: (Steps val s p)
StRepair
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
Constructors
Insert s
Delete s
Other String
show/hide Instances
Show s => Show (Action s)
val :: (a -> b) -> Steps a s p -> Steps b s p
evalSteps :: Steps a s p -> a
getMsgs :: Steps a s p -> [Message s p]
data Message sym pos
Constructors
Msg (Expecting sym) !pos (Action sym)
show/hide Instances
(Eq s, Show s, Show p) => Show (Message s p)
data Expecting s
Constructors
ESym (SymbolR s)
EStr String
EOr [Expecting s]
ESeq [Expecting s]
show/hide Instances
??? s => Eq (Expecting s)
??? s => Ord (Expecting s)
(Eq s, Show s) => Show (Expecting s)
data SymbolR s
Constructors
Range !s !s
EmptyR
show/hide Instances
Eq s => Eq (SymbolR s)
Ord s => Ord (SymbolR s)
(Eq s, Show s) => Show (SymbolR s)
Produced by Haddock version 0.8