symantic-parser-0.1.0.20210201: Parser combinators statically optimized and staged via typed meta-programming
Safe HaskellNone
LanguageHaskell2010

Symantic.Parser.Grammar

Synopsis

Documentation

type Grammar tok repr = (Applicable repr, Alternable repr, Satisfiable tok repr, Letable Name repr, Selectable repr, Matchable repr, Foldable repr, Lookable repr) Source #

grammar :: Grammar tok repr => ObserveSharing Name (OptimizeGrammar repr) a -> repr a Source #

A usual pipeline to interpret Combinators: observeSharing then optimizeGrammar then a polymorphic (repr).

showGrammar :: ObserveSharing Name (OptimizeGrammar (ViewGrammar showName)) a -> String Source #

An usual pipeline to show Combinators: observeSharing then optimizeGrammar then viewGrammar then show.

class Letable letName repr where Source #

This class is not for end-users like usual symantic operators, here def and ref are introduced by observeSharing.

Minimal complete definition

Nothing

Methods

def :: letName -> repr a -> repr a Source #

(def letName x) let-binds (letName) to be equal to (x).

ref :: Bool -> letName -> repr a Source #

(ref isRec letName) is a reference to (letName). (isRec) is True iif. this reference is recursive, ie. is reachable within its definition.

def :: Liftable1 repr => Letable letName (Output repr) => letName -> repr a -> repr a Source #

(def letName x) let-binds (letName) to be equal to (x).

ref :: Liftable repr => Letable letName (Output repr) => Bool -> letName -> repr a Source #

(ref isRec letName) is a reference to (letName). (isRec) is True iif. this reference is recursive, ie. is reachable within its definition.

Instances

Instances details
ShowLetName sN letName => Letable letName (WriteGrammar sN) Source # 
Instance details

Defined in Symantic.Parser.Grammar.Write

Methods

def :: letName -> WriteGrammar sN a -> WriteGrammar sN a Source #

ref :: Bool -> letName -> WriteGrammar sN a Source #

ShowLetName sN letName => Letable letName (ViewGrammar sN) Source # 
Instance details

Defined in Symantic.Parser.Grammar.View

Methods

def :: letName -> ViewGrammar sN a -> ViewGrammar sN a Source #

ref :: Bool -> letName -> ViewGrammar sN a Source #

(Letable letName repr, Typeable letName) => Letable letName (SomeComb repr) Source # 
Instance details

Defined in Symantic.Parser.Grammar.Optimize

Methods

def :: letName -> SomeComb repr a -> SomeComb repr a Source #

ref :: Bool -> letName -> SomeComb repr a Source #

Routinable repr => Letable Name (Program repr inp) Source # 
Instance details

Defined in Symantic.Parser.Machine.Program

Methods

def :: Name -> Program repr inp a -> Program repr inp a Source #

ref :: Bool -> Name -> Program repr inp a Source #

(Letable letName repr, Eq letName, Hashable letName) => Letable letName (CleanDefs letName repr) Source # 
Instance details

Defined in Symantic.Univariant.Letable

Methods

def :: letName -> CleanDefs letName repr a -> CleanDefs letName repr a Source #

ref :: Bool -> letName -> CleanDefs letName repr a Source #

(Letable letName repr, MakeLetName letName, Eq letName, Hashable letName) => Letable letName (ObserveSharing letName repr) Source # 
Instance details

Defined in Symantic.Univariant.Letable

Methods

def :: letName -> ObserveSharing letName repr a -> ObserveSharing letName repr a Source #

ref :: Bool -> letName -> ObserveSharing letName repr a Source #

Letable letName repr => Trans (Comb (Letable letName) repr) repr Source # 
Instance details

Defined in Symantic.Parser.Grammar.Optimize

Methods

trans :: Comb (Letable letName) repr a -> repr a Source #

data Comb (Letable letName) repr Source # 
Instance details

Defined in Symantic.Parser.Grammar.Optimize

data Comb (Letable letName) repr where