SyntaxMacros-1.0: Syntax Macros in the form of an EDSL

Language.Grammars.SyntaxMacros

Documentation

type ExtGram env start nts = GramTrafo env () (Export start nts env)Source

type SyntaxMacro env start nts start' nts' = GramTrafo env (Export start nts env) (Export start' nts' env)Source

data Export start nts env Source

Constructors

Export (Symbol start TNonT env) (nts env) 

Instances

GetNT nt (nts env) r => GetNT nt (Export start nts env) r 

addNT :: GramTrafo env (ListProd TL env a) (Symbol a TNonT env)Source

closeGram :: (forall env. ExtGram env a nts) -> Grammar aSource

extendGram :: (NTRecord (nts env), NTRecord (nts' env)) => ExtGram env start nts -> SyntaxMacro env start nts start' nts' -> ExtGram env start' nts'Source

(<++>) :: (NTRecord (nts env), NTRecord (nts' env)) => ExtGram env start nts -> SyntaxMacro env start nts start' nts' -> ExtGram env start' nts'Source

exportNTs :: NTRecord (nts env) => GramTrafo env (Export start nts env) (Export start nts env)Source

data NTCons nt v l env Source

Constructors

NTCons (LSPair nt v TNonT env) (l env) 

Instances

NotDuplicated nt1 (l env) => NotDuplicated nt1 (NTCons nt2 v l env) 
Fail (Duplicated nt) => NotDuplicated nt (NTCons nt v l env) 
GetNT nt1 (l env) r => GetNT nt1 (NTCons nt2 v l env) r 
GetNT nt (NTCons nt v l env) (Symbol v TNonT env) 
(NTRecord (l env), NotDuplicated nt (l env)) => NTRecord (NTCons nt v l env) 

data NTNil env Source

Constructors

NTNil 

Instances

NotDuplicated nt (NTNil env) 
Fail (NotFound nt) => GetNT nt (NTNil env) r 
NTRecord (NTNil env) 

class NTRecord r Source

Instances

NTRecord (NTNil env) 
(NTRecord (l env), NotDuplicated nt (l env)) => NTRecord (NTCons nt v l env) 

class Fail err Source

class NotDuplicated nt r Source

Instances

NotDuplicated nt (NTNil env) 
NotDuplicated nt1 (l env) => NotDuplicated nt1 (NTCons nt2 v l env) 
Fail (Duplicated nt) => NotDuplicated nt (NTCons nt v l env) 

(^|) :: NTRecord (NTCons nt a l env) => LSPair nt a TNonT env -> l env -> NTCons nt a l envSource

class GetNT nt r v | nt r -> v whereSource

Methods

getNT :: nt -> r -> vSource

Instances

Fail (NotFound nt) => GetNT nt (NTNil env) r 
GetNT nt (nts env) r => GetNT nt (Export start nts env) r 
GetNT nt1 (l env) r => GetNT nt1 (NTCons nt2 v l env) r 
GetNT nt (NTCons nt v l env) (Symbol v TNonT env) 

getStart :: Export start nts env -> Symbol start TNonT envSource

exportList :: Symbol start TNonT env -> (NTNil env -> nts env) -> Export start nts envSource

export :: (NTRecord (l env), NotDuplicated nt (l env)) => nt -> Symbol a TNonT env -> l env -> NTCons nt a l envSource

newtype Const f a s Source

Constructors

C 

Fields

unC :: f a
 

mapEnv :: (forall a. f a s -> g a s) -> Env f s env -> Env g s envSource

data ParseResult a Source

Constructors

Ok a 
Rep a [ParseMsg] 

Instances

Show a => Show (ParseResult a) 

rparse :: Parser Token a -> [Token] -> (a, [ParseMsg])Source