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

Language.Grammars.Grammar

Synopsis

Documentation

data TL Source

data FL a Source

data Grammar a Source

Constructors

forall env . Grammar (Ref a env) (GramEnv env env) 

Instances

newtype Productions l a env Source

Constructors

PS 

Fields

unPS :: [Prod l a env]
 

Instances

ShowEnv (Env (Productions l) env env') => Show (Env (Productions l) env env') 
Show (Productions l a env) 
ShowEnv (Env (Productions l) env env') 

data Prod l a env whereSource

Constructors

Star :: Prod l (a -> b) env -> Prod l a env -> Prod l b env 
FlipStar :: Prod l a env -> Prod l (a -> b) env -> Prod l b env 
Sym :: Symbol a t env -> Prod l a env 
Pure :: a -> Prod l a env 
Fix :: Productions (FL a) a env -> Prod l a env 
Var :: Prod (FL a) a env 

Instances

Show (Prod l a env) 

data TTerm Source

Instances

data TNonT Source

Instances

LabelSymbol TNonT v v 
GetNT nt (NTCons nt v l env) (Symbol v TNonT env) 

data TAttT Source

Instances

data Symbol a t env whereSource

Constructors

Term :: String -> Symbol DTerm TTerm env 
Nont :: Ref a env -> Symbol a TNonT env 
TermInt :: Symbol Int TAttT env 
TermChar :: Symbol Char TAttT env 
TermVarid :: Symbol String TAttT env 
TermConid :: Symbol String TAttT env 
TermOp :: Symbol String TAttT env 

Instances

GetNT nt (NTCons nt v l env) (Symbol v TNonT env) 
Show (Symbol a t env) 

getRefNT :: Symbol a TNonT env -> Ref a envSource

pairEq :: Maybe (Equal a b) -> Maybe (Equal (a, t) (b, t))Source

matchSym :: Symbol a t1 env -> Symbol b t2 env -> Maybe (Equal (a, t1) (b, t2))Source

newtype ListProd l env a Source

Constructors

PP 

Fields

unPP :: [Prod l a env]
 

Instances

Idiomatic l env x (Ii -> ListProd l env x) 
Idiomatic l env f g => Idiomatic l env (a -> f) (ListProd l env a -> g) 
Functor (ListProd l env) 
Applicative (ListProd l env) 
Alternative (ListProd l env) 

prod :: ListProd l env a -> Productions l a envSource

sym :: Symbol a t env -> ListProd l env aSource

nt :: Symbol a TNonT env -> ListProd l env aSource

ntPrd :: Symbol a TNonT env -> ListProd l env aSource

varPrd :: ListProd (FL a) env aSource

fixPrd :: ListProd (FL a) env a -> ListProd l env aSource

toFL :: ListProd l env a -> ListProd (FL b) env aSource

prodToFL :: Prod l a env -> Prod (FL b) a envSource

pSome :: ListProd (FL [a]) env a -> ListProd l env [a]Source

pMany :: ListProd (FL [a]) env a -> ListProd l env [a]Source

data Ii Source

The Ii is to be pronounced as stop

Constructors

Ii 

Instances

Idiomatic l env x (Ii -> ListProd l env x) 

iI :: Idiomatic l env (a -> a) g => gSource

The function iI is to be pronounced as start

class Idiomatic l env f g | g -> f l env whereSource

Methods

idiomatic :: ListProd l env f -> gSource

Instances

Idiomatic l env f g => Idiomatic l env f (String -> g) 
Idiomatic l env x (Ii -> ListProd l env x) 
Idiomatic l env f g => Idiomatic l env ((a -> b) -> f) ((a -> b) -> g) 
Idiomatic l env f g => Idiomatic l env (a -> f) (ListProd l env a -> g) 

newtype LSPair nt a t env Source

Constructors

LSPair 

Fields

symLSPair :: Symbol a t env
 

labelLSPair :: LSPair nt a t env -> ntSource

(^=) :: nt -> Symbol a t env -> LSPair nt a t envSource

class LabelSymbol t v v' | t v -> v' whereSource

Methods

(<=>) :: label -> Symbol v t env -> ListProd l env (LVPair label v')Source

class ShowEnv a whereSource

Methods

showEnv :: Int -> a -> StringSource

Instances

ShowEnv (Env (Productions l) env env')