language-haskell
Safe HaskellNone
LanguageHaskell2010

Language.Haskell.Reserializer

Description

This module exports functions for reserializing the parsed tree from the tokens stored with every node.

Synopsis

Documentation

newtype ParsedLexemes s Source #

Constructors

Trailing [Lexeme s] 

Instances

Instances details
Functor ParsedLexemes Source # 
Instance details

Defined in Language.Haskell.Reserializer

Methods

fmap :: (a -> b) -> ParsedLexemes a -> ParsedLexemes b #

(<$) :: a -> ParsedLexemes b -> ParsedLexemes a #

Monoid (ParsedLexemes s) Source # 
Instance details

Defined in Language.Haskell.Reserializer

Semigroup (ParsedLexemes s) Source # 
Instance details

Defined in Language.Haskell.Reserializer

Eq s => Eq (ParsedLexemes s) Source # 
Instance details

Defined in Language.Haskell.Reserializer

Data s => Data (ParsedLexemes s) Source # 
Instance details

Defined in Language.Haskell.Reserializer

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ParsedLexemes s -> c (ParsedLexemes s) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (ParsedLexemes s) #

toConstr :: ParsedLexemes s -> Constr #

dataTypeOf :: ParsedLexemes s -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (ParsedLexemes s)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (ParsedLexemes s)) #

gmapT :: (forall b. Data b => b -> b) -> ParsedLexemes s -> ParsedLexemes s #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ParsedLexemes s -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ParsedLexemes s -> r #

gmapQ :: (forall d. Data d => d -> u) -> ParsedLexemes s -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ParsedLexemes s -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ParsedLexemes s -> m (ParsedLexemes s) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ParsedLexemes s -> m (ParsedLexemes s) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ParsedLexemes s -> m (ParsedLexemes s) #

Show s => Show (ParsedLexemes s) Source # 
Instance details

Defined in Language.Haskell.Reserializer

(Traversable f, Foldable (g (Wrapped pos s)), Foldable (g (Compose f (Wrapped pos s))), Foldable (Fold (Compose f (Wrapped pos s)) (Sum Int)) g) => Foldable (Fold (Compose f (Wrapped pos s)) (Sum Int)) g Source # 
Instance details

Defined in Language.Haskell.Reserializer

Methods

foldMap :: (Codomain (Fold (Compose f (Wrapped pos s)) (Sum Int)) ~ (Const m :: Type -> Type), Monoid m) => Fold (Compose f (Wrapped pos s)) (Sum Int) -> Domain (Fold (Compose f (Wrapped pos s)) (Sum Int)) (g (Domain (Fold (Compose f (Wrapped pos s)) (Sum Int))) (Domain (Fold (Compose f (Wrapped pos s)) (Sum Int)))) -> m #

(Foldable (g (Wrapped pos s)), Foldable (Fold (Wrapped pos s) (Sum Int)) g) => Foldable (Fold (Wrapped pos s) (Sum Int)) g Source # 
Instance details

Defined in Language.Haskell.Reserializer

Methods

foldMap :: (Codomain (Fold (Wrapped pos s) (Sum Int)) ~ (Const m :: Type -> Type), Monoid m) => Fold (Wrapped pos s) (Sum Int) -> Domain (Fold (Wrapped pos s) (Sum Int)) (g (Domain (Fold (Wrapped pos s) (Sum Int))) (Domain (Fold (Wrapped pos s) (Sum Int)))) -> m #

(Functor (g (Compose ((,) (Attributes Language)) q)), Functor (Mapped ((,) (Attributes Language)) (Map q Placed)) g) => Functor (Mapped ((,) (Attributes Language)) (Map q Placed)) g Source # 
Instance details

Defined in Language.Haskell

(Factorial s, Foldable (g (Const (Sum Int) :: Type -> Type)), Position pos, Foldable (Fold (Wrapped pos s) (Sum Int)) g) => At (PositionAdjustment pos s) (g (Wrapped pos s) (Wrapped pos s)) Source # 
Instance details

Defined in Language.Haskell.Reserializer

Methods

($) :: PositionAdjustment pos s -> Domain (PositionAdjustment pos s) (g (Wrapped pos s) (Wrapped pos s)) -> Codomain (PositionAdjustment pos s) (g (Wrapped pos s) (Wrapped pos s)) #

(Factorial s, Traversable f, Foldable (g (Const (Sum Int) :: Type -> Type)), Position pos, Foldable (Fold (Compose f (Wrapped pos s)) (Sum Int)) g) => At (NestedPositionAdjustment f pos s) (g (Compose f (Wrapped pos s)) (Compose f (Wrapped pos s))) Source # 
Instance details

Defined in Language.Haskell.Reserializer

Methods

($) :: NestedPositionAdjustment f pos s -> Domain (NestedPositionAdjustment f pos s) (g (Compose f (Wrapped pos s)) (Compose f (Wrapped pos s))) -> Codomain (NestedPositionAdjustment f pos s) (g (Compose f (Wrapped pos s)) (Compose f (Wrapped pos s))) #

data Lexeme s Source #

Constructors

WhiteSpace 

Fields

Comment 

Fields

Token 

Instances

Instances details
Functor Lexeme Source # 
Instance details

Defined in Language.Haskell.Reserializer

Methods

fmap :: (a -> b) -> Lexeme a -> Lexeme b #

(<$) :: a -> Lexeme b -> Lexeme a #

Eq s => Eq (Lexeme s) Source # 
Instance details

Defined in Language.Haskell.Reserializer

Methods

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

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

Data s => Data (Lexeme s) Source # 
Instance details

Defined in Language.Haskell.Reserializer

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Lexeme s -> c (Lexeme s) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Lexeme s) #

toConstr :: Lexeme s -> Constr #

dataTypeOf :: Lexeme s -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Lexeme s)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Lexeme s)) #

gmapT :: (forall b. Data b => b -> b) -> Lexeme s -> Lexeme s #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Lexeme s -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Lexeme s -> r #

gmapQ :: (forall d. Data d => d -> u) -> Lexeme s -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Lexeme s -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Lexeme s -> m (Lexeme s) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Lexeme s -> m (Lexeme s) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Lexeme s -> m (Lexeme s) #

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

Defined in Language.Haskell.Reserializer

Methods

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

show :: Lexeme s -> String #

showList :: [Lexeme s] -> ShowS #

(Apply g, Ord t, Show t, TextualMonoid t) => LexicalParsing (Parser g t) Source # 
Instance details

Defined in Language.Haskell.Grammar

(Apply g, Ord t, Show t, TextualMonoid t) => TokenParsing (Parser g t) Source # 
Instance details

Defined in Language.Haskell.Grammar

Methods

someSpace :: Parser g t () #

nesting :: Parser g t a -> Parser g t a #

semi :: Parser g t Char #

highlight :: Highlight -> Parser g t a -> Parser g t a #

token :: Parser g t a -> Parser g t a #

data TokenType Source #

Instances

Instances details
Eq TokenType Source # 
Instance details

Defined in Language.Haskell.Reserializer

Data TokenType Source # 
Instance details

Defined in Language.Haskell.Reserializer

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> TokenType -> c TokenType #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c TokenType #

toConstr :: TokenType -> Constr #

dataTypeOf :: TokenType -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c TokenType) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c TokenType) #

gmapT :: (forall b. Data b => b -> b) -> TokenType -> TokenType #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> TokenType -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> TokenType -> r #

gmapQ :: (forall d. Data d => d -> u) -> TokenType -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> TokenType -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> TokenType -> m TokenType #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> TokenType -> m TokenType #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> TokenType -> m TokenType #

Show TokenType Source # 
Instance details

Defined in Language.Haskell.Reserializer

type Wrapped pos s = (,) (pos, ParsedLexemes s, pos) Source #

adjustPositions :: (Factorial s, Position pos, Foldable (g (Const (Sum Int) :: Type -> Type)), Foldable (Fold (Wrapped pos s) (Sum Int)) g, Traversable (PositionAdjustment pos s) g) => Wrapped pos s (g (Wrapped pos s) (Wrapped pos s)) -> Wrapped pos s (g (Wrapped pos s) (Wrapped pos s)) Source #

Re-calculates the position of every node in the parse tree from the tokens stored with it and its children.

lexemes :: (Factorial s, Position pos, Foldable (Serialization pos s) g) => Wrapped pos s (g (Wrapped pos s) (Wrapped pos s)) -> [Lexeme s] Source #

Serializes the tree into the lexemes it was parsed from.

reserialize :: (Monoid s, Factorial s, Position pos, Foldable (Serialization pos s) g) => Wrapped pos s (g (Wrapped pos s) (Wrapped pos s)) -> s Source #

Serializes the tree back into the text it was parsed from.

reserializeNested :: forall s pos (f :: Type -> Type) g. (Monoid s, Factorial s, Position pos, Foldable f, Foldable (Folded f (Serialization pos s)) g) => Compose f (Wrapped pos s) (g (Compose f (Wrapped pos s)) (Compose f (Wrapped pos s))) -> s Source #

Serializes the tree just like reserialize, but with an additional wrapping on every node.

sourceLength :: forall g s pos. (Factorial s, Foldable (g (Const (Sum Int) :: Type -> Type)), Foldable (Fold (Wrapped pos s) (Sum Int)) g) => Wrapped pos s (g (Wrapped pos s) (Wrapped pos s)) -> Int Source #

The length of the source code parsed into the argument node

joinWrapped :: (Position pos, Factorial s) => Wrapped pos s (Wrapped pos s a) -> Wrapped pos s a Source #

Join the two wrappings of a double-Wrapped value into one.

mergeLexemes :: (Position pos, Factorial s) => pos -> [Lexeme s] -> pos -> [Lexeme s] -> [Lexeme s] Source #

Given two lists of lexemes where the first wraps the second and their starting positions, return a single list sorted by position.

mapWrapping :: (pos -> pos') -> (s -> s') -> Wrapped pos s a -> Wrapped pos' s' a Source #

mapWrappings :: Functor (Map (Wrapped pos s) (Wrapped pos' s')) g => (pos -> pos') -> (s -> s') -> Wrapped pos s (g (Wrapped pos s) (Wrapped pos s)) -> Wrapped pos' s' (g (Wrapped pos' s') (Wrapped pos' s')) Source #

Map the stored positions and lexeme inputs in the entire tree and its wrapping

data PositionAdjustment pos s Source #

Transformation type used by adjustPositions

Constructors

PositionAdjustment 

Instances

Instances details
Transformation (PositionAdjustment pos s) Source # 
Instance details

Defined in Language.Haskell.Reserializer

Associated Types

type Domain (PositionAdjustment pos s) 
Instance details

Defined in Language.Haskell.Reserializer

type Domain (PositionAdjustment pos s) = Wrapped pos s
type Codomain (PositionAdjustment pos s) 
Instance details

Defined in Language.Haskell.Reserializer

(Factorial s, Foldable (g (Const (Sum Int) :: Type -> Type)), Traversable (g (Wrapped pos s)), Position pos, Foldable (Fold (Wrapped pos s) (Sum Int)) g, Traversable (PositionAdjustment pos s) g) => Traversable (PositionAdjustment pos s) g Source # 
Instance details

Defined in Language.Haskell.Reserializer

Methods

traverse :: Codomain (PositionAdjustment pos s) ~ Compose m f => PositionAdjustment pos s -> Domain (PositionAdjustment pos s) (g (Domain (PositionAdjustment pos s)) (Domain (PositionAdjustment pos s))) -> m (f (g f f)) #

(Factorial s, Foldable (g (Const (Sum Int) :: Type -> Type)), Position pos, Foldable (Fold (Wrapped pos s) (Sum Int)) g) => At (PositionAdjustment pos s) (g (Wrapped pos s) (Wrapped pos s)) Source # 
Instance details

Defined in Language.Haskell.Reserializer

Methods

($) :: PositionAdjustment pos s -> Domain (PositionAdjustment pos s) (g (Wrapped pos s) (Wrapped pos s)) -> Codomain (PositionAdjustment pos s) (g (Wrapped pos s) (Wrapped pos s)) #

type Codomain (PositionAdjustment pos s) Source # 
Instance details

Defined in Language.Haskell.Reserializer

type Domain (PositionAdjustment pos s) Source # 
Instance details

Defined in Language.Haskell.Reserializer

type Domain (PositionAdjustment pos s) = Wrapped pos s

data NestedPositionAdjustment (f :: Type -> Type) pos s Source #

Instances

Instances details
Transformation (NestedPositionAdjustment f pos s) Source # 
Instance details

Defined in Language.Haskell.Reserializer

Associated Types

type Domain (NestedPositionAdjustment f pos s) 
Instance details

Defined in Language.Haskell.Reserializer

type Domain (NestedPositionAdjustment f pos s) = Compose f (Wrapped pos s)
type Codomain (NestedPositionAdjustment f pos s) 
Instance details

Defined in Language.Haskell.Reserializer

(Factorial s, Position pos, Traversable f, Foldable (g (Const (Sum Int) :: Type -> Type)), Traversable (g (Compose f (Wrapped pos s))), Foldable (Fold (Compose f (Wrapped pos s)) (Sum Int)) g, Traversable (NestedPositionAdjustment f pos s) g) => Traversable (NestedPositionAdjustment f pos s) g Source # 
Instance details

Defined in Language.Haskell.Reserializer

Methods

traverse :: Codomain (NestedPositionAdjustment f pos s) ~ Compose m f0 => NestedPositionAdjustment f pos s -> Domain (NestedPositionAdjustment f pos s) (g (Domain (NestedPositionAdjustment f pos s)) (Domain (NestedPositionAdjustment f pos s))) -> m (f0 (g f0 f0)) #

(Factorial s, Traversable f, Foldable (g (Const (Sum Int) :: Type -> Type)), Position pos, Foldable (Fold (Compose f (Wrapped pos s)) (Sum Int)) g) => At (NestedPositionAdjustment f pos s) (g (Compose f (Wrapped pos s)) (Compose f (Wrapped pos s))) Source # 
Instance details

Defined in Language.Haskell.Reserializer

Methods

($) :: NestedPositionAdjustment f pos s -> Domain (NestedPositionAdjustment f pos s) (g (Compose f (Wrapped pos s)) (Compose f (Wrapped pos s))) -> Codomain (NestedPositionAdjustment f pos s) (g (Compose f (Wrapped pos s)) (Compose f (Wrapped pos s))) #

type Codomain (NestedPositionAdjustment f pos s) Source # 
Instance details

Defined in Language.Haskell.Reserializer

type Domain (NestedPositionAdjustment f pos s) Source # 
Instance details

Defined in Language.Haskell.Reserializer

type Domain (NestedPositionAdjustment f pos s) = Compose f (Wrapped pos s)

data Serialization pos s Source #

Transformation type used by reserialize

Instances

Instances details
Transformation (Serialization pos s) Source # 
Instance details

Defined in Language.Haskell.Reserializer

Associated Types

type Domain (Serialization pos s) 
Instance details

Defined in Language.Haskell.Reserializer

type Domain (Serialization pos s) = Wrapped pos s
type Codomain (Serialization pos s) 
Instance details

Defined in Language.Haskell.Reserializer

type Codomain (Serialization pos s)
(Factorial s, Position pos) => At (Serialization pos s) a Source # 
Instance details

Defined in Language.Haskell.Reserializer

Methods

($) :: Serialization pos s -> Domain (Serialization pos s) a -> Codomain (Serialization pos s) a #

(Factorial s, Position pos, Foldable f, Foldable (g (Compose f (Wrapped pos s))), Foldable (Folded f (Serialization pos s)) g) => Foldable (Folded f (Serialization pos s)) g Source # 
Instance details

Defined in Language.Haskell.Reserializer

Methods

foldMap :: (Codomain (Folded f (Serialization pos s)) ~ (Const m :: Type -> Type), Monoid m) => Folded f (Serialization pos s) -> Domain (Folded f (Serialization pos s)) (g (Domain (Folded f (Serialization pos s))) (Domain (Folded f (Serialization pos s)))) -> m #

(Factorial s, Position pos, Foldable (g (Wrapped pos s)), Foldable (Serialization pos s) g) => Foldable (Serialization pos s) g Source # 
Instance details

Defined in Language.Haskell.Reserializer

Methods

foldMap :: (Codomain (Serialization pos s) ~ (Const m :: Type -> Type), Monoid m) => Serialization pos s -> Domain (Serialization pos s) (g (Domain (Serialization pos s)) (Domain (Serialization pos s))) -> m #

type Codomain (Serialization pos s) Source # 
Instance details

Defined in Language.Haskell.Reserializer

type Codomain (Serialization pos s)
type Domain (Serialization pos s) Source # 
Instance details

Defined in Language.Haskell.Reserializer

type Domain (Serialization pos s) = Wrapped pos s