parsley-0.1.1.0: A fast parser combinator library backed by Typed Template Haskell
Safe HaskellNone
LanguageHaskell2010

Parsley.Internal.Backend.Machine.Instructions

Documentation

data MetaInstr (n :: Nat) where Source #

Constructors

AddCoins :: Int -> MetaInstr (Succ n) 
RefundCoins :: Int -> MetaInstr n 
DrainCoins :: Int -> MetaInstr (Succ n) 

Instances

Instances details
Show (MetaInstr n) Source # 
Instance details

Defined in Parsley.Internal.Backend.Machine.Instructions

data Access Source #

Constructors

Hard 
Soft 

Instances

Instances details
Show Access Source # 
Instance details

Defined in Parsley.Internal.Backend.Machine.Instructions

data Instr (o :: rep) (k :: [Type] -> Nat -> Type -> Type -> Type) (xs :: [Type]) (n :: Nat) (r :: Type) (a :: Type) where Source #

Constructors

Ret :: Instr o k '[x] n x a 
Push :: Defunc x -> k (x ': xs) n r a -> Instr o k xs n r a 
Pop :: k xs n r a -> Instr o k (x ': xs) n r a 
Lift2 :: Defunc (x -> y -> z) -> k (z ': xs) n r a -> Instr o k (y ': (x ': xs)) n r a 
Sat :: Defunc (Char -> Bool) -> k (Char ': xs) (Succ n) r a -> Instr o k xs (Succ n) r a 
Call :: MVar x -> k (x ': xs) (Succ n) r a -> Instr o k xs (Succ n) r a 
Jump :: MVar x -> Instr o k '[] (Succ n) x a 
Empt :: Instr o k xs (Succ n) r a 
Commit :: k xs n r a -> Instr o k xs (Succ n) r a 
Catch :: k xs (Succ n) r a -> k (o ': xs) n r a -> Instr o k xs n r a 
Tell :: k (o ': xs) n r a -> Instr o k xs n r a 
Seek :: k xs n r a -> Instr o k (o ': xs) n r a 
Case :: k (x ': xs) n r a -> k (y ': xs) n r a -> Instr o k (Either x y ': xs) n r a 
Choices :: [Defunc (x -> Bool)] -> [k xs n r a] -> k xs n r a -> Instr o k (x ': xs) n r a 
Iter :: MVar Void -> k '[] One Void a -> k (o ': xs) n r a -> Instr o k xs n r a 
Join :: ΦVar x -> Instr o k (x ': xs) n r a 
MkJoin :: ΦVar x -> k (x ': xs) n r a -> k xs n r a -> Instr o k xs n r a 
Swap :: k (x ': (y ': xs)) n r a -> Instr o k (y ': (x ': xs)) n r a 
Dup :: k (x ': (x ': xs)) n r a -> Instr o k (x ': xs) n r a 
Make :: ΣVar x -> Access -> k xs n r a -> Instr o k (x ': xs) n r a 
Get :: ΣVar x -> Access -> k (x ': xs) n r a -> Instr o k xs n r a 
Put :: ΣVar x -> Access -> k xs n r a -> Instr o k (x ': xs) n r a 
LogEnter :: String -> k xs (Succ (Succ n)) r a -> Instr o k xs (Succ n) r a 
LogExit :: String -> k xs n r a -> Instr o k xs n r a 
MetaInstr :: MetaInstr n -> k xs n r a -> Instr o k xs n r a 

Instances

Instances details
IFunctor4 (Instr o) Source # 
Instance details

Defined in Parsley.Internal.Backend.Machine.Instructions

Methods

imap4 :: forall a x b (i :: [Type]) (j :: Nat) k. (forall (i' :: [Type]) (j' :: Nat) k'. a i' j' k' x -> b i' j' k' x) -> Instr o a i j k x -> Instr o b i j k x Source #

Show (Fix4 (Instr o) xs n r a) Source # 
Instance details

Defined in Parsley.Internal.Backend.Machine.Instructions

Methods

showsPrec :: Int -> Fix4 (Instr o) xs n r a -> ShowS #

show :: Fix4 (Instr o) xs n r a -> String #

showList :: [Fix4 (Instr o) xs n r a] -> ShowS #

pattern If :: Fix4 (Instr o) xs n r a -> Fix4 (Instr o) xs n r a -> Instr o (Fix4 (Instr o)) (Bool ': xs) n r a Source #

pattern Fmap :: Defunc (x -> y) -> Fix4 (Instr o) (y ': xs) n r a -> Instr o (Fix4 (Instr o)) (x ': xs) n r a Source #

pattern App :: Fix4 (Instr o) (y ': xs) n r a -> Instr o (Fix4 (Instr o)) (x ': ((x -> y) ': xs)) n r a Source #

mkCoin :: (Int -> MetaInstr n) -> Int -> Fix4 (Instr o) xs n r a -> Fix4 (Instr o) xs n r a Source #

addCoins :: Int -> Fix4 (Instr o) xs (Succ n) r a -> Fix4 (Instr o) xs (Succ n) r a Source #

refundCoins :: Int -> Fix4 (Instr o) xs n r a -> Fix4 (Instr o) xs n r a Source #

drainCoins :: Int -> Fix4 (Instr o) xs (Succ n) r a -> Fix4 (Instr o) xs (Succ n) r a Source #

_Modify :: ΣVar x -> Fix4 (Instr o) xs n r a -> Instr o (Fix4 (Instr o)) ((x -> x) ': xs) n r a Source #

_Make :: ΣVar x -> k xs n r a -> Instr o k (x ': xs) n r a Source #

_Put :: ΣVar x -> k xs n r a -> Instr o k (x ': xs) n r a Source #

_Get :: ΣVar x -> k (x ': xs) n r a -> Instr o k xs n r a Source #