uulib-0.9.20: Haskell Utrecht Tools Library

Safe Haskell | None
Language | Haskell98

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
- mk_range :: Ord s => s -> s -> SymbolR s
- symInRange :: Ord a => SymbolR a -> a -> Bool
- symRS :: Ord a => SymbolR a -> a -> Ordering
- except :: (Ord s, Foldable t, Symbol s) => SymbolR s -> t s -> [SymbolR s]
- usererror :: [Char] -> t
- systemerror :: [Char] -> [Char] -> t

# 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 Source |
InputState inp s p => InputState (OffsideInput inp s p) (OffsideSymbol s) p Source |

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

OutputState Pair Source |

class Symbol s where Source

Minimal complete definition

Nothing

Methods

deleteCost :: s -> Int# Source

symBefore :: s -> s Source

symAfter :: s -> s Source

Instances

Symbol s => Symbol (OffsideSymbol s) Source |

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

usererror :: [Char] -> t Source

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