murder-1.0: MUtually Recursive Definitions Explicitly Represented

Safe HaskellNone

Language.Grammars.Murder

Documentation

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

type GramExt env start nts start' nts' = PreGramTrafo 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 

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

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

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

exportNTs :: NTRecord (nts env) => PreGramTrafo 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

extendExport :: Export start t env -> (t env -> nts env) -> Export start nts envSource