symantic-grammar-0.0.0.20170623: Library for symantic grammars.

Safe HaskellNone
LanguageHaskell2010

Language.Symantic.Grammar.Meta

Contents

Synopsis

Type Gram_Reader

class Gram_Reader st g where Source #

Minimal complete definition

g_ask_before, g_ask_after

Methods

g_ask_before :: g (st -> a) -> g a Source #

g_ask_after :: g (st -> a) -> g a Source #

Instances

Gram_Reader st EBNF Source # 

Methods

g_ask_before :: EBNF (st -> a) -> EBNF a Source #

g_ask_after :: EBNF (st -> a) -> EBNF a Source #

Gram_Reader st RuleEBNF Source # 

Methods

g_ask_before :: RuleEBNF (st -> a) -> RuleEBNF a Source #

g_ask_after :: RuleEBNF (st -> a) -> RuleEBNF a Source #

Gram_Reader st g => Gram_Reader st (CF g) Source # 

Methods

g_ask_before :: CF g (st -> a) -> CF g a Source #

g_ask_after :: CF g (st -> a) -> CF g a Source #

Gram_Reader st g => Gram_Reader st (Reg lr g) Source # 

Methods

g_ask_before :: Reg lr g (st -> a) -> Reg lr g a Source #

g_ask_after :: Reg lr g (st -> a) -> Reg lr g a Source #

Type Gram_State

class Gram_State st g where Source #

Minimal complete definition

g_state_before, g_state_after

Methods

g_state_before :: g (st -> (st, a)) -> g a Source #

g_state_after :: g (st -> (st, a)) -> g a Source #

g_get_before :: g (st -> a) -> g a Source #

g_get_after :: g (st -> a) -> g a Source #

g_put :: g (st, a) -> g a Source #

g_get_before :: Functor g => g (st -> a) -> g a Source #

g_get_after :: Functor g => g (st -> a) -> g a Source #

g_put :: Functor g => g (st, a) -> g a Source #

Instances

Gram_State st EBNF Source # 

Methods

g_state_before :: EBNF (st -> (st, a)) -> EBNF a Source #

g_state_after :: EBNF (st -> (st, a)) -> EBNF a Source #

g_get_before :: EBNF (st -> a) -> EBNF a Source #

g_get_after :: EBNF (st -> a) -> EBNF a Source #

g_put :: EBNF (st, a) -> EBNF a Source #

Gram_State st RuleEBNF Source # 

Methods

g_state_before :: RuleEBNF (st -> (st, a)) -> RuleEBNF a Source #

g_state_after :: RuleEBNF (st -> (st, a)) -> RuleEBNF a Source #

g_get_before :: RuleEBNF (st -> a) -> RuleEBNF a Source #

g_get_after :: RuleEBNF (st -> a) -> RuleEBNF a Source #

g_put :: RuleEBNF (st, a) -> RuleEBNF a Source #

Gram_State st g => Gram_State st (CF g) Source # 

Methods

g_state_before :: CF g (st -> (st, a)) -> CF g a Source #

g_state_after :: CF g (st -> (st, a)) -> CF g a Source #

g_get_before :: CF g (st -> a) -> CF g a Source #

g_get_after :: CF g (st -> a) -> CF g a Source #

g_put :: CF g (st, a) -> CF g a Source #

Gram_State st g => Gram_State st (Reg lr g) Source # 

Methods

g_state_before :: Reg lr g (st -> (st, a)) -> Reg lr g a Source #

g_state_after :: Reg lr g (st -> (st, a)) -> Reg lr g a Source #

g_get_before :: Reg lr g (st -> a) -> Reg lr g a Source #

g_get_after :: Reg lr g (st -> a) -> Reg lr g a Source #

g_put :: Reg lr g (st, a) -> Reg lr g a Source #

Class Gram_Error

class Gram_Error err g where Source #

Symantics for handling errors at the semantic level (not the syntaxic one).

Minimal complete definition

g_catch

Methods

g_catch :: g (Either err a) -> g a Source #

Instances

Gram_Error err EBNF Source # 

Methods

g_catch :: EBNF (Either err a) -> EBNF a Source #

Gram_Error err RuleEBNF Source # 

Methods

g_catch :: RuleEBNF (Either err a) -> RuleEBNF a Source #

Gram_Error err g => Gram_Error err (CF g) Source # 

Methods

g_catch :: CF g (Either err a) -> CF g a Source #

Gram_Error err g => Gram_Error err (Reg lr g) Source # 

Methods

g_catch :: Reg lr g (Either err a) -> Reg lr g a Source #

Class Inj_Error

class Inj_Error a b where Source #

Minimal complete definition

inj_Error

Methods

inj_Error :: a -> b Source #

Instances

Inj_Error err e => Inj_Error err (Either e a) Source # 

Methods

inj_Error :: err -> Either e a Source #

lift_Error :: forall e0 err e1 a. Inj_Error e0 e1 => Inj_Error e1 err => Proxy e1 -> Either e0 a -> Either err a Source #

Class Source

class Source src where Source #

Minimal complete definition

noSource

Methods

noSource :: src Source #

Instances

Source () Source # 

Methods

noSource :: () Source #

Class Inj_Source

class Source src => Inj_Source a src where Source #

Minimal complete definition

inj_Source

Methods

inj_Source :: a -> src Source #

Instances

Inj_Source a () Source # 

Methods

inj_Source :: a -> () Source #

Type family SourceOf

type family SourceOf a Source #

Type Sourced

class Source (SourceOf a) => Sourced a where Source #

Minimal complete definition

sourceOf, setSource

Methods

sourceOf :: a -> SourceOf a Source #

setSource :: a -> SourceOf a -> a infixl 5 Source #

source :: Inj_Source src (SourceOf a) => Sourced a => a -> src -> a Source #

Type Source_Input

type family Source_Input (src :: *) :: * Source #

Instances

type Source_Input () Source # 
type Source_Input () = ()

Type Span

data Span src Source #

Constructors

Span 

Fields

Instances

Eq src => Eq (Span src) Source # 

Methods

(==) :: Span src -> Span src -> Bool #

(/=) :: Span src -> Span src -> Bool #

Ord src => Ord (Span src) Source # 

Methods

compare :: Span src -> Span src -> Ordering #

(<) :: Span src -> Span src -> Bool #

(<=) :: Span src -> Span src -> Bool #

(>) :: Span src -> Span src -> Bool #

(>=) :: Span src -> Span src -> Bool #

max :: Span src -> Span src -> Span src #

min :: Span src -> Span src -> Span src #

Show src => Show (Span src) Source # 

Methods

showsPrec :: Int -> Span src -> ShowS #

show :: Span src -> String #

showList :: [Span src] -> ShowS #

Class Gram_Source

class (Gram_Reader (Source_Input src) g, Inj_Source (Span (Source_Input src)) src) => Gram_Source src g where Source #

Methods

g_source :: Functor g => g (src -> a) -> g a Source #

Instances

(Gram_Reader (Source_Input src) g, Inj_Source (Span (Source_Input src)) src) => Gram_Source src g Source # 

Methods

g_source :: Functor g => g (src -> a) -> g a Source #

Type At

data At src a Source #

Attach a Source to something.

Constructors

At 

Fields

Instances

Functor (At src) Source # 

Methods

fmap :: (a -> b) -> At src a -> At src b #

(<$) :: a -> At src b -> At src a #

(Eq a, Eq src) => Eq (At src a) Source # 

Methods

(==) :: At src a -> At src a -> Bool #

(/=) :: At src a -> At src a -> Bool #

(Ord a, Ord src) => Ord (At src a) Source # 

Methods

compare :: At src a -> At src a -> Ordering #

(<) :: At src a -> At src a -> Bool #

(<=) :: At src a -> At src a -> Bool #

(>) :: At src a -> At src a -> Bool #

(>=) :: At src a -> At src a -> Bool #

max :: At src a -> At src a -> At src a #

min :: At src a -> At src a -> At src a #

(Show a, Show src) => Show (At src a) Source # 

Methods

showsPrec :: Int -> At src a -> ShowS #

show :: At src a -> String #

showList :: [At src a] -> ShowS #