ADPfusion-0.6.0.0: Efficient, high-level dynamic programming.

Safe HaskellNone
LanguageHaskell2010

ADP.Fusion.Core.Term.Chr

Description

TODO Rename Chr to Vtx, a vertex parser is a generalization of a char parser. But this is only semantics, so not super important to do now.

Synopsis

Documentation

data Chr r x where Source #

A generic Character parser that reads a single character but allows passing additional information.

Chr expects a function to retrieve r at index position, followed by the actual generic vector with data.

Constructors

Chr :: Vector v x => (v x -> Int -> r) -> !(v x) -> Chr r x 
Instances
(TermStream m (Z :. pos) (TermSymbol M (Chr r x)) (Elm (Term1 (Elm ls (PointL i))) (Z :. PointL i)) (Z :. PointL i), posLeft ~ LeftPosTy pos (Chr r x) (PointL i), TermStaticVar pos (Chr r x) (PointL i), MkStream m posLeft ls (PointL i)) => MkStream m (pos :: Type) (ls :!: Chr r x) (PointL i) Source #

First try in getting this right with a termStream.

TODO use PointL i since this is probably the same for all single-tape instances with ElmChr.

TODO it might even be possible to auto-generate this code via TH.

Instance details

Defined in ADP.Fusion.PointL.Term.Chr

Methods

mkStream :: Proxy pos -> (ls :!: Chr r x) -> Int# -> LimitType (PointL i) -> PointL i -> Stream m (Elm (ls :!: Chr r x) (PointL i)) Source #

(TermStream m (Z :. pos) (TermSymbol M (Chr r x)) (Elm (Term1 (Elm ls (PointR i))) (Z :. PointR i)) (Z :. PointR i), posLeft ~ LeftPosTy pos (Chr r x) (PointR i), TermStaticVar pos (Chr r x) (PointR i), MkStream m posLeft ls (PointR i)) => MkStream m (pos :: Type) (ls :!: Chr r x) (PointR i) Source # 
Instance details

Defined in ADP.Fusion.PointR.Term.Chr

Methods

mkStream :: Proxy pos -> (ls :!: Chr r x) -> Int# -> LimitType (PointR i) -> PointR i -> Stream m (Elm (ls :!: Chr r x) (PointR i)) Source #

TermStreamContext m ps ts s x0 i0 is (PointL O) => TermStream m (ps :. OStatic d :: Type) (TermSymbol ts (Chr r x)) s (is :. PointL O) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Chr

Methods

termStream :: Proxy (ps :. OStatic d) -> TermSymbol ts (Chr r x) -> LimitType (is :. PointL O) -> (is :. PointL O) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointL O) (TermArg (TermSymbol ts (Chr r x)))) Source #

TermStreamContext m ps ts s x0 i0 is (PointL I) => TermStream m (ps :. IStatic d :: Type) (TermSymbol ts (Chr r x)) s (is :. PointL I) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Chr

Methods

termStream :: Proxy (ps :. IStatic d) -> TermSymbol ts (Chr r x) -> LimitType (is :. PointL I) -> (is :. PointL I) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointL I) (TermArg (TermSymbol ts (Chr r x)))) Source #

TermStreamContext m ps ts s x0 i0 is (PointR I) => TermStream m (ps :. IVariable d :: Type) (TermSymbol ts (Chr r x)) s (is :. PointR I) Source # 
Instance details

Defined in ADP.Fusion.PointR.Term.Chr

Methods

termStream :: Proxy (ps :. IVariable d) -> TermSymbol ts (Chr r x) -> LimitType (is :. PointR I) -> (is :. PointR I) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointR I) (TermArg (TermSymbol ts (Chr r x)))) Source #

TermStreamContext m ps ts s x0 i0 is (PointR I) => TermStream m (ps :. IStatic d :: Type) (TermSymbol ts (Chr r x)) s (is :. PointR I) Source # 
Instance details

Defined in ADP.Fusion.PointR.Term.Chr

Methods

termStream :: Proxy (ps :. IStatic d) -> TermSymbol ts (Chr r x) -> LimitType (is :. PointR I) -> (is :. PointR I) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointR I) (TermArg (TermSymbol ts (Chr r x)))) Source #

TermStaticVar (IVariable d :: Type) (Chr r x) (PointR I) Source # 
Instance details

Defined in ADP.Fusion.PointR.Term.Chr

TermStaticVar (IStatic d :: Type) (Chr r x) (PointL I) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Chr

TermStaticVar (IStatic d :: Type) (Chr r x) (PointR I) Source # 
Instance details

Defined in ADP.Fusion.PointR.Term.Chr

TermStaticVar (OStatic d :: Type) (Chr r x) (PointL O) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Chr

(Show i, Show (RunningIndex i), Show r, Show (Elm ls i)) => Show (Elm (ls :!: Chr r x) i) Source # 
Instance details

Defined in ADP.Fusion.Core.Term.Chr

Methods

showsPrec :: Int -> Elm (ls :!: Chr r x) i -> ShowS #

show :: Elm (ls :!: Chr r x) i -> String #

showList :: [Elm (ls :!: Chr r x) i] -> ShowS #

Build (Chr r x) Source # 
Instance details

Defined in ADP.Fusion.Core.Term.Chr

Associated Types

type Stack (Chr r x) :: Type Source #

Methods

build :: Chr r x -> Stack (Chr r x) Source #

Element ls i => Element (ls :!: Chr r x) i Source # 
Instance details

Defined in ADP.Fusion.Core.Term.Chr

Associated Types

data Elm (ls :!: Chr r x) i :: Type Source #

type RecElm (ls :!: Chr r x) i :: Type Source #

type Arg (ls :!: Chr r x) :: Type Source #

Methods

getArg :: Elm (ls :!: Chr r x) i -> Arg (ls :!: Chr r x) Source #

getIdx :: Elm (ls :!: Chr r x) i -> RunningIndex i Source #

getElm :: Elm (ls :!: Chr r x) i -> RecElm (ls :!: Chr r x) i Source #

type Stack (Chr r x) Source # 
Instance details

Defined in ADP.Fusion.Core.Term.Chr

type Stack (Chr r x) = S :!: Chr r x
data Elm (ls :!: Chr r x) i Source # 
Instance details

Defined in ADP.Fusion.Core.Term.Chr

data Elm (ls :!: Chr r x) i = ElmChr !r !(RunningIndex i) !(Elm ls i)
type Arg (ls :!: Chr r x) Source # 
Instance details

Defined in ADP.Fusion.Core.Term.Chr

type Arg (ls :!: Chr r x) = Arg ls :. r
type TermArg (Chr r x) Source # 
Instance details

Defined in ADP.Fusion.Core.Term.Chr

type TermArg (Chr r x) = r
type LeftPosTy (IVariable d) (Chr r x) (PointR I) Source # 
Instance details

Defined in ADP.Fusion.PointR.Term.Chr

type LeftPosTy (IVariable d) (Chr r x) (PointR I) = IVariable (d + 1)
type LeftPosTy (IStatic d) (Chr r x) (PointR I) Source # 
Instance details

Defined in ADP.Fusion.PointR.Term.Chr

type LeftPosTy (IStatic d) (Chr r x) (PointR I) = IStatic (d + 1)
type LeftPosTy (IStatic d) (Chr r x) (PointL I) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Chr

type LeftPosTy (IStatic d) (Chr r x) (PointL I) = IStatic d
type LeftPosTy (OStatic d) (Chr r x) (PointL O) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Chr

type LeftPosTy (OStatic d) (Chr r x) (PointL O) = OStatic (d + 1)

chr :: Vector v x => v x -> Chr x x Source #

smart constructor for regular 1-character parsers

chrLeft :: Vector v b => v b -> Chr (Maybe b, b) b Source #

Smart constructor for Maybe Peeking, followed by a character.