| Safe Haskell | None | 
|---|---|
| Language | Haskell2010 | 
Language.Parser.Ptera.Syntax
Synopsis
- type T ctx = GrammarM ctx
 - class HasField (x :: k) r a | x r -> a where
- getField :: r -> a
 
 - class (KnownSymbol v, HasField v rules (RuleExprType rules (RuleExprReturnType rules v))) => HasRuleExprField rules v where
- type RuleExprReturnType rules v :: Type
 - nonTerminalName :: rules -> proxy v -> String
 
 - type family TokensTag (tokens :: Type) :: [Symbol]
 - type family RulesTag (rules :: Type) :: [Symbol]
 - type family RuleExprType (rules :: Type) :: Type -> Type
 - type GrammarM ctx = Grammar (SemActM ctx)
 - class MemberInitials rules initials where
- memberInitials :: T (DictF (HasRuleExprField rules)) initials
 
 - class Rules rules where
- generateRules :: T (DictF (HasRuleExprField rules)) (RulesTag rules)
 
 - class GrammarToken tokens elem where
- tokenToTerminal :: Proxy tokens -> elem -> T (TokensTag tokens)
 
 - type RuleExprM ctx = RuleExpr (SemActM ctx)
 - type AltM ctx = Alt (SemActM ctx)
 - data Expr rules tokens elem us
 - data HFList (a :: k -> Type) (b :: [k]) where
 - data DictF (a :: k -> Constraint) (b :: k) where
- DictF :: forall k (a :: k -> Constraint) (b :: k). a b => DictF a b
 
 - type HList = T Identity
 - pattern HNil :: HList '[]
 - pattern (:*) :: u -> HList us -> HList (u ': us)
 - newtype SemActM ctx us a = SemActM {
- semanticAction :: HList us -> ActionTask ctx a
 
 - semActM :: (HList us -> ActionTask ctx a) -> SemActM ctx us a
 - newtype ActionTask ctx a = ActionTask {
- runActionTask :: ctx -> ActionTaskResult ctx a
 
 - data ActionTaskResult ctx a
- = ActionTaskFail
 - | ActionTaskResult a
 - | ActionTaskModifyResult ctx a
 
 - getAction :: ActionTask ctx ctx
 - modifyAction :: (ctx -> ctx) -> ActionTask ctx ()
 - failAction :: ActionTask ctx a
 - type Grammar = GrammarM ()
 - type RuleExpr = RuleExprM ()
 - type Alt = AltM ()
 - type SemAct = SemActM ()
 - semAct :: (HList us -> a) -> SemActM ctx us a
 - fixGrammar :: forall initials action rules tokens elem. MemberInitials rules initials => Rules rules => RuleExprType rules ~ RuleExpr action rules tokens elem => rules -> Grammar action rules tokens elem initials
 - ruleExpr :: [Alt action rules tokens elem a] -> RuleExpr action rules tokens elem a
 - (<^>) :: Expr rules tokens elem us1 -> Expr rules tokens elem us2 -> Expr rules tokens elem (Concat us1 us2)
 - (<:>) :: Expr rules tokens elem us -> (HList us -> a) -> AltM ctx rules tokens elem a
 - eps :: (HList '[] -> a) -> AltM ctx rules tokens elem a
 - (<::>) :: Expr rules tokens elem us -> (HList us -> ActionTask ctx a) -> AltM ctx rules tokens elem a
 - epsM :: (HList '[] -> ActionTask ctx a) -> AltM ctx rules tokens elem a
 - var :: KnownSymbol v => proxy v -> Expr rules tokens elem '[RuleExprReturnType rules v]
 - varA :: forall v rules tokens elem. KnownSymbol v => Expr rules tokens elem '[RuleExprReturnType rules v]
 - tok :: Membership (TokensTag tokens) t -> Expr rules tokens elem '[elem]
 - class TokensMember tokens t where
- tokensMembership :: Proxy# '(tokens, t) -> Membership (TokensTag tokens) t
 
 - tokA :: forall t rules tokens elem. TokensMember tokens t => Expr rules tokens elem '[elem]
 
Documentation
class HasField (x :: k) r a | x r -> a where #
Constraint representing the fact that the field x belongs to
 the record type r and has field type a.  This will be solved
 automatically, but manual instances may be provided as well.
class (KnownSymbol v, HasField v rules (RuleExprType rules (RuleExprReturnType rules v))) => HasRuleExprField rules v where Source #
Minimal complete definition
Nothing
Associated Types
type RuleExprReturnType rules v :: Type Source #
Methods
nonTerminalName :: rules -> proxy v -> String Source #
class MemberInitials rules initials where Source #
Methods
memberInitials :: T (DictF (HasRuleExprField rules)) initials Source #
class Rules rules where Source #
Methods
generateRules :: T (DictF (HasRuleExprField rules)) (RulesTag rules) Source #
class GrammarToken tokens elem where Source #
data DictF (a :: k -> Constraint) (b :: k) where #
Constructors
| DictF :: forall k (a :: k -> Constraint) (b :: k). a b => DictF a b | 
newtype SemActM ctx us a Source #
Constructors
| SemActM | |
Fields 
  | |
newtype ActionTask ctx a Source #
Constructors
| ActionTask | |
Fields 
  | |
Instances
| Monad (ActionTask ctx) Source # | |
Defined in Language.Parser.Ptera.Syntax Methods (>>=) :: ActionTask ctx a -> (a -> ActionTask ctx b) -> ActionTask ctx b # (>>) :: ActionTask ctx a -> ActionTask ctx b -> ActionTask ctx b # return :: a -> ActionTask ctx a #  | |
| Functor (ActionTask ctx) Source # | |
Defined in Language.Parser.Ptera.Syntax Methods fmap :: (a -> b) -> ActionTask ctx a -> ActionTask ctx b # (<$) :: a -> ActionTask ctx b -> ActionTask ctx a #  | |
| Applicative (ActionTask ctx) Source # | |
Defined in Language.Parser.Ptera.Syntax Methods pure :: a -> ActionTask ctx a # (<*>) :: ActionTask ctx (a -> b) -> ActionTask ctx a -> ActionTask ctx b # liftA2 :: (a -> b -> c) -> ActionTask ctx a -> ActionTask ctx b -> ActionTask ctx c # (*>) :: ActionTask ctx a -> ActionTask ctx b -> ActionTask ctx b # (<*) :: ActionTask ctx a -> ActionTask ctx b -> ActionTask ctx a #  | |
data ActionTaskResult ctx a Source #
Constructors
| ActionTaskFail | |
| ActionTaskResult a | |
| ActionTaskModifyResult ctx a | 
Instances
| Functor (ActionTaskResult ctx) Source # | |
Defined in Language.Parser.Ptera.Syntax Methods fmap :: (a -> b) -> ActionTaskResult ctx a -> ActionTaskResult ctx b # (<$) :: a -> ActionTaskResult ctx b -> ActionTaskResult ctx a #  | |
| (Eq a, Eq ctx) => Eq (ActionTaskResult ctx a) Source # | |
Defined in Language.Parser.Ptera.Syntax Methods (==) :: ActionTaskResult ctx a -> ActionTaskResult ctx a -> Bool # (/=) :: ActionTaskResult ctx a -> ActionTaskResult ctx a -> Bool #  | |
| (Show a, Show ctx) => Show (ActionTaskResult ctx a) Source # | |
Defined in Language.Parser.Ptera.Syntax Methods showsPrec :: Int -> ActionTaskResult ctx a -> ShowS # show :: ActionTaskResult ctx a -> String # showList :: [ActionTaskResult ctx a] -> ShowS #  | |
getAction :: ActionTask ctx ctx Source #
modifyAction :: (ctx -> ctx) -> ActionTask ctx () Source #
failAction :: ActionTask ctx a Source #
fixGrammar :: forall initials action rules tokens elem. MemberInitials rules initials => Rules rules => RuleExprType rules ~ RuleExpr action rules tokens elem => rules -> Grammar action rules tokens elem initials Source #
(<^>) :: Expr rules tokens elem us1 -> Expr rules tokens elem us2 -> Expr rules tokens elem (Concat us1 us2) infixr 5 Source #
(<:>) :: Expr rules tokens elem us -> (HList us -> a) -> AltM ctx rules tokens elem a infixl 4 Source #
(<::>) :: Expr rules tokens elem us -> (HList us -> ActionTask ctx a) -> AltM ctx rules tokens elem a infixl 4 Source #
var :: KnownSymbol v => proxy v -> Expr rules tokens elem '[RuleExprReturnType rules v] Source #
varA :: forall v rules tokens elem. KnownSymbol v => Expr rules tokens elem '[RuleExprReturnType rules v] Source #
class TokensMember tokens t where Source #
Methods
tokensMembership :: Proxy# '(tokens, t) -> Membership (TokensTag tokens) t Source #
tokA :: forall t rules tokens elem. TokensMember tokens t => Expr rules tokens elem '[elem] Source #