Safe Haskell | None |
---|---|
Language | Haskell2010 |
Cubix.Language.Parametric.Syntax
Synopsis
- data BoolF (e :: * -> *) l where
- data BoolL
- data IntF (e :: * -> *) l where
- data IntL
- data IntegerF (e :: * -> *) l where
- data IntegerL
- data CharF (e :: * -> *) l where
- data CharL
- data UnitF (e :: * -> *) l where
- pattern BoolF' :: (BoolF :-<: fs, All HFunctor fs) => Bool -> CxtS h fs a BoolL
- iBoolF :: forall h fs a j. ((:-<:) BoolF fs, InjF fs BoolL j) => Bool -> CxtS h fs a j
- pattern IntF' :: (IntF :-<: fs, All HFunctor fs) => Int -> CxtS h fs a IntL
- iIntF :: forall h fs a j. ((:-<:) IntF fs, InjF fs IntL j) => Int -> CxtS h fs a j
- pattern IntegerF' :: (IntegerF :-<: fs, All HFunctor fs) => Integer -> CxtS h fs a IntegerL
- iIntegerF :: forall h fs a j. ((:-<:) IntegerF fs, InjF fs IntegerL j) => Integer -> CxtS h fs a j
- pattern CharF' :: (CharF :-<: fs, All HFunctor fs) => Char -> CxtS h fs a CharL
- iCharF :: forall h fs a j. ((:-<:) CharF fs, InjF fs CharL j) => Char -> CxtS h fs a j
- pattern UnitF' :: (UnitF :-<: fs, All HFunctor fs) => CxtS h fs a ()
- iUnitF :: forall h fs a j. ((:-<:) UnitF fs, InjF fs () j) => CxtS h fs a j
- data FunctionCallAttrsL
- data FunctionExpL
- data FunctionArgumentsL
- data FunctionCallL
- data FunctionCall e l where
- FunctionCall :: e FunctionCallAttrsL -> e FunctionExpL -> e FunctionArgumentsL -> FunctionCall e FunctionCallL
- data EmptyFunctionCallAttrs (e :: * -> *) l where
- data FunctionIdent e l where
- FunctionIdent :: e IdentL -> FunctionIdent e FunctionExpL
- data FunctionArgumentL
- data FunctionArgumentList e l where
- data ReceiverL
- data ReceiverArg e l where
- ReceiverArg :: e ReceiverL -> ReceiverArg e FunctionArgumentL
- data PositionalArgExpL
- data PositionalArgument e l where
- pattern FunctionCall' :: (FunctionCall :-<: fs, All HFunctor fs) => CxtS h fs a FunctionCallAttrsL -> CxtS h fs a FunctionExpL -> CxtS h fs a FunctionArgumentsL -> CxtS h fs a FunctionCallL
- iFunctionCall :: forall h fs a j. ((:-<:) FunctionCall fs, InjF fs FunctionCallL j) => CxtS h fs a FunctionCallAttrsL -> CxtS h fs a FunctionExpL -> CxtS h fs a FunctionArgumentsL -> CxtS h fs a j
- pattern EmptyFunctionCallAttrs' :: (EmptyFunctionCallAttrs :-<: fs, All HFunctor fs) => CxtS h fs a FunctionCallAttrsL
- iEmptyFunctionCallAttrs :: forall h fs a j. ((:-<:) EmptyFunctionCallAttrs fs, InjF fs FunctionCallAttrsL j) => CxtS h fs a j
- pattern FunctionIdent' :: (FunctionIdent :-<: fs, All HFunctor fs) => CxtS h fs a IdentL -> CxtS h fs a FunctionExpL
- iFunctionIdent :: forall h fs a j. ((:-<:) FunctionIdent fs, InjF fs FunctionExpL j) => CxtS h fs a IdentL -> CxtS h fs a j
- pattern FunctionArgumentList' :: (FunctionArgumentList :-<: fs, All HFunctor fs) => CxtS h fs a [FunctionArgumentL] -> CxtS h fs a FunctionArgumentsL
- iFunctionArgumentList :: forall h fs a j. ((:-<:) FunctionArgumentList fs, InjF fs FunctionArgumentsL j) => CxtS h fs a [FunctionArgumentL] -> CxtS h fs a j
- pattern ReceiverArg' :: (ReceiverArg :-<: fs, All HFunctor fs) => CxtS h fs a ReceiverL -> CxtS h fs a FunctionArgumentL
- iReceiverArg :: forall h fs a j. ((:-<:) ReceiverArg fs, InjF fs FunctionArgumentL j) => CxtS h fs a ReceiverL -> CxtS h fs a j
- pattern PositionalArgument' :: (PositionalArgument :-<: fs, All HFunctor fs) => CxtS h fs a PositionalArgExpL -> CxtS h fs a FunctionArgumentL
- iPositionalArgument :: forall h fs a j. ((:-<:) PositionalArgument fs, InjF fs FunctionArgumentL j) => CxtS h fs a PositionalArgExpL -> CxtS h fs a j
- data FunctionDeclAttrsL
- data FunctionParameterDeclL
- data FunctionParameterDeclAttrsL
- data FunctionDeclL
- data FunctionDecl e l where
- FunctionDecl :: e FunctionDeclAttrsL -> e IdentL -> e [FunctionParameterDeclL] -> FunctionDecl e FunctionDeclL
- data EmptyFunctionDeclAttrs (e :: * -> *) l where
- data SelfParameterDecl (e :: * -> *) l where
- data PositionalParameterDeclOptionalIdent e l where
- data PositionalParameterDeclWithIdent e l where
- pattern FunctionDecl' :: (FunctionDecl :-<: fs, All HFunctor fs) => CxtS h fs a FunctionDeclAttrsL -> CxtS h fs a IdentL -> CxtS h fs a [FunctionParameterDeclL] -> CxtS h fs a FunctionDeclL
- iFunctionDecl :: forall h fs a j. ((:-<:) FunctionDecl fs, InjF fs FunctionDeclL j) => CxtS h fs a FunctionDeclAttrsL -> CxtS h fs a IdentL -> CxtS h fs a [FunctionParameterDeclL] -> CxtS h fs a j
- pattern EmptyFunctionDeclAttrs' :: (EmptyFunctionDeclAttrs :-<: fs, All HFunctor fs) => CxtS h fs a FunctionDeclAttrsL
- iEmptyFunctionDeclAttrs :: forall h fs a j. ((:-<:) EmptyFunctionDeclAttrs fs, InjF fs FunctionDeclAttrsL j) => CxtS h fs a j
- pattern SelfParameterDecl' :: (SelfParameterDecl :-<: fs, All HFunctor fs) => CxtS h fs a FunctionParameterDeclL
- iSelfParameterDecl :: forall h fs a j. ((:-<:) SelfParameterDecl fs, InjF fs FunctionParameterDeclL j) => CxtS h fs a j
- pattern PositionalParameterDeclOptionalIdent' :: (PositionalParameterDeclOptionalIdent :-<: fs, All HFunctor fs) => CxtS h fs a FunctionParameterDeclAttrsL -> CxtS h fs a (Maybe IdentL) -> CxtS h fs a FunctionParameterDeclL
- iPositionalParameterDeclOptionalIdent :: forall h fs a j. ((:-<:) PositionalParameterDeclOptionalIdent fs, InjF fs FunctionParameterDeclL j) => CxtS h fs a FunctionParameterDeclAttrsL -> CxtS h fs a (Maybe IdentL) -> CxtS h fs a j
- pattern PositionalParameterDeclWithIdent' :: (PositionalParameterDeclWithIdent :-<: fs, All HFunctor fs) => CxtS h fs a FunctionParameterDeclAttrsL -> CxtS h fs a IdentL -> CxtS h fs a FunctionParameterDeclL
- iPositionalParameterDeclWithIdent :: forall h fs a j. ((:-<:) PositionalParameterDeclWithIdent fs, InjF fs FunctionParameterDeclL j) => CxtS h fs a FunctionParameterDeclAttrsL -> CxtS h fs a IdentL -> CxtS h fs a j
- data FunctionDefAttrsL
- data FunctionParameterL
- data FunctionBodyL
- data FunctionDefL
- data FunctionDef e l where
- FunctionDef :: e FunctionDefAttrsL -> e IdentL -> e [FunctionParameterL] -> e FunctionBodyL -> FunctionDef e FunctionDefL
- data EmptyFunctionDefAttrs (e :: * -> *) l where
- data SelfParameter (e :: * -> *) l where
- data ParameterAttrsL
- data PositionalParameter e l where
- data EmptyParameterAttrs (e :: * -> *) l where
- pattern FunctionDef' :: (FunctionDef :-<: fs, All HFunctor fs) => CxtS h fs a FunctionDefAttrsL -> CxtS h fs a IdentL -> CxtS h fs a [FunctionParameterL] -> CxtS h fs a FunctionBodyL -> CxtS h fs a FunctionDefL
- iFunctionDef :: forall h fs a j. ((:-<:) FunctionDef fs, InjF fs FunctionDefL j) => CxtS h fs a FunctionDefAttrsL -> CxtS h fs a IdentL -> CxtS h fs a [FunctionParameterL] -> CxtS h fs a FunctionBodyL -> CxtS h fs a j
- pattern EmptyFunctionDefAttrs' :: (EmptyFunctionDefAttrs :-<: fs, All HFunctor fs) => CxtS h fs a FunctionDefAttrsL
- iEmptyFunctionDefAttrs :: forall h fs a j. ((:-<:) EmptyFunctionDefAttrs fs, InjF fs FunctionDefAttrsL j) => CxtS h fs a j
- pattern EmptyParameterAttrs :: EmptyParameterAttrs e ParameterAttrsL
- iEmptyParameterAttrs :: forall h fs a j. ((:-<:) EmptyParameterAttrs fs, InjF fs ParameterAttrsL j) => CxtS h fs a j
- pattern SelfParameter' :: (SelfParameter :-<: fs, All HFunctor fs) => CxtS h fs a FunctionParameterL
- iSelfParameter :: forall h fs a j. ((:-<:) SelfParameter fs, InjF fs FunctionParameterL j) => CxtS h fs a j
- pattern PositionalParameter' :: (PositionalParameter :-<: fs, All HFunctor fs) => CxtS h fs a ParameterAttrsL -> CxtS h fs a IdentL -> CxtS h fs a FunctionParameterL
- iPositionalParameter :: forall h fs a j. ((:-<:) PositionalParameter fs, InjF fs FunctionParameterL j) => CxtS h fs a ParameterAttrsL -> CxtS h fs a IdentL -> CxtS h fs a j
- pattern EmptyParameterAttrs' :: (EmptyParameterAttrs :-<: fs, All HFunctor fs) => CxtS h fs a ParameterAttrsL
- iEmptyParameterAttrs :: forall h fs a j. ((:-<:) EmptyParameterAttrs fs, InjF fs ParameterAttrsL j) => CxtS h fs a j
- data MaybeF e l where
- data ListF e l where
- data PairF e l where
- data TripleF e l where
- data EitherF e l where
- pattern Just' :: (MaybeF :<: f, Typeable l, HFunctor f) => Cxt h f a l -> Cxt h f a (Maybe l)
- pattern Nothing' :: (MaybeF :<: f, Typeable l, HFunctor f) => Cxt h f a (Maybe l)
- pattern JustA' :: (MaybeF :<: f, Typeable l, HFunctor f) => Cxt h (f :&: p) a l -> Cxt h (f :&: p) a (Maybe l)
- pattern ConsF' :: (ListF :<: f, Typeable l, HFunctor f) => Cxt h f a l -> Cxt h f a [l] -> Cxt h f a [l]
- pattern NilF' :: (ListF :<: f, Typeable l, HFunctor f) => Cxt h f a [l]
- pattern SingletonF' :: (ListF :<: f, Typeable l, HFunctor f) => Cxt h f a l -> Cxt h f a [l]
- pattern ConsFA' :: (ListF :<: f, Typeable l, HFunctor f) => Cxt h (f :&: p) a l -> Cxt h (f :&: p) a [l] -> Cxt h (f :&: p) a [l]
- pattern NilFA' :: (ListF :<: f, Typeable l, HFunctor f) => Cxt h (f :&: p) a [l]
- pattern SingletonFA' :: (ListF :<: f, Typeable l, HFunctor f) => Cxt h (f :&: p) a l -> Cxt h (f :&: p) a [l]
- pattern PairF' :: (PairF :<: f, Typeable l, Typeable l', HFunctor f) => Cxt h f a l -> Cxt h f a l' -> Cxt h f a (l, l')
- pattern TripleF' :: (TripleF :<: f, Typeable i, Typeable j, Typeable k, HFunctor f) => Cxt h f a i -> Cxt h f a j -> Cxt h f a k -> Cxt h f a (i, j, k)
- pattern Left' :: (EitherF :<: f, Typeable l, Typeable l', HFunctor f) => Cxt h f a l -> Cxt h f a (Either l l')
- pattern Right' :: (EitherF :<: f, Typeable l, Typeable l', HFunctor f) => Cxt h f a l' -> Cxt h f a (Either l l')
- riNothingF :: forall h f a l. (MaybeF :<: f, Typeable l) => Cxt h f a (Maybe l)
- iJustF :: (MaybeF :-<: fs, InjF fs (Maybe l) l', Typeable l) => CxtS h fs a l -> CxtS h fs a l'
- riNilF :: forall h f a l. (ListF :<: f, Typeable l) => Cxt h f a [l]
- iConsF :: (ListF :-<: fs, InjF fs [l] l', Typeable l) => CxtS h fs a l -> CxtS h fs a [l] -> CxtS h fs a l'
- riPairF :: (PairF :<: f, Typeable i, Typeable j) => Cxt h f a i -> Cxt h f a j -> Cxt h f a (i, j)
- riTripleF :: (TripleF :<: f, Typeable i, Typeable j, Typeable k) => Cxt h f a i -> Cxt h f a j -> Cxt h f a k -> Cxt h f a (i, j, k)
- riLeftF :: (EitherF :<: f, Typeable i, Typeable j) => Cxt h f a i -> Cxt h f a (Either i j)
- riRightF :: (EitherF :<: f, Typeable i, Typeable j) => Cxt h f a j -> Cxt h f a (Either i j)
- class ExtractF f e where
- extractF :: e (f l) -> f (e l)
- class KExtractF f g where
- class KExtractF' f g where
- kextractF' :: g e (f l) -> f (e l)
- class ExtractF2 f e where
- extractF2 :: e (f l l') -> f (e l) (e l')
- class KExtractF2 f g where
- kextractF2 :: ExtractF2 f e => g e (f l l') -> f (e l) (e l')
- class KExtractF2' f g where
- kextractF2' :: g e (f l l') -> f (e l) (e l')
- class ExtractF3 f e where
- extractF3 :: e (f l l' l'') -> f (e l) (e l') (e l'')
- class KExtractF3 f g where
- kextractF3 :: ExtractF3 f e => g e (f l l' l'') -> f (e l) (e l') (e l'')
- class KExtractF3' f g where
- kextractF3' :: g e (f l l' l'') -> f (e l) (e l') (e l'')
- class Functor f => InsertF f e where
- insertFHole :: (InsertF e (Context f (HFix g)), Typeable l) => e (HFix g l) -> Context f (HFix g) (e l)
- liftF :: (InsertF f h, ExtractF f g, Functor f, Typeable b) => (f (g a) -> f (h b)) -> g (f a) -> h (f b)
- mapF :: (InsertF f h, ExtractF f g, Functor f, Typeable b) => (g a -> h b) -> g (f a) -> h (f b)
- data IdentL
- data Ident (e :: * -> *) l where
- data MultiLocalVarDeclCommonAttrsL
- data LocalVarInitL
- data IsOptional
- data OptLocalVarInitL
- data OptLocalVarInit e l where
- data LocalVarDeclAttrsL
- data TupleBinder e l where
- TupleBinder :: e [IdentL] -> TupleBinder e VarDeclBinderL
- data IdentIsVarDeclBinder (e :: Type -> Type) i = i ~ VarDeclBinderL => IdentIsVarDeclBinder (e IdentL)
- data EmptyLocalVarDeclAttrs (e :: * -> *) l where
- data VarDeclBinderL
- data SingleLocalVarDeclL
- data SingleLocalVarDecl e l where
- data EmptyMultiLocalVarDeclCommonAttrs (e :: * -> *) l
- data MultiLocalVarDeclL
- data MultiLocalVarDecl e l where
- data AssignOpL
- data AssignOpEquals (e :: * -> *) l where
- data LhsL
- data RhsL
- data AssignL
- data Assign e l where
- data BlockItemL
- data BlockEndL
- data EmptyBlockEnd (e :: * -> *) l where
- data BlockL
- data Block e l where
- Block :: e [BlockItemL] -> e BlockEndL -> Block e BlockL
- data EmptyBlockItem (e :: * -> *) l where
- pattern Ident' :: (Ident :-<: fs, All HFunctor fs) => String -> CxtS h fs a IdentL
- iIdent :: forall h fs a j. ((:-<:) Ident fs, InjF fs IdentL j) => String -> CxtS h fs a j
- pattern JustLocalVarInit' :: (OptLocalVarInit :-<: fs, All HFunctor fs) => CxtS h fs a LocalVarInitL -> CxtS h fs a OptLocalVarInitL
- iJustLocalVarInit :: forall h fs a j. ((:-<:) OptLocalVarInit fs, InjF fs OptLocalVarInitL j) => CxtS h fs a LocalVarInitL -> CxtS h fs a j
- pattern NoLocalVarInit' :: (OptLocalVarInit :-<: fs, All HFunctor fs) => CxtS h fs a OptLocalVarInitL
- iNoLocalVarInit :: forall h fs a j. ((:-<:) OptLocalVarInit fs, InjF fs OptLocalVarInitL j) => CxtS h fs a j
- pattern EmptyLocalVarDeclAttrs' :: (EmptyLocalVarDeclAttrs :-<: fs, All HFunctor fs) => CxtS h fs a LocalVarDeclAttrsL
- iEmptyLocalVarDeclAttrs :: forall h fs a j. ((:-<:) EmptyLocalVarDeclAttrs fs, InjF fs LocalVarDeclAttrsL j) => CxtS h fs a j
- pattern TupleBinder' :: (TupleBinder :-<: fs, All HFunctor fs) => CxtS h fs a [IdentL] -> CxtS h fs a VarDeclBinderL
- iTupleBinder :: forall h fs a j. ((:-<:) TupleBinder fs, InjF fs VarDeclBinderL j) => CxtS h fs a [IdentL] -> CxtS h fs a j
- pattern IdentIsVarDeclBinder' :: (IdentIsVarDeclBinder :-<: fs, All HFunctor fs) => CxtS h fs a IdentL -> CxtS h fs a VarDeclBinderL
- iIdentIsVarDeclBinder :: forall h fs a j. ((:-<:) IdentIsVarDeclBinder fs, InjF fs VarDeclBinderL j) => CxtS h fs a IdentL -> CxtS h fs a j
- pattern SingleLocalVarDecl' :: (SingleLocalVarDecl :-<: fs, All HFunctor fs) => CxtS h fs a LocalVarDeclAttrsL -> CxtS h fs a VarDeclBinderL -> CxtS h fs a OptLocalVarInitL -> CxtS h fs a SingleLocalVarDeclL
- iSingleLocalVarDecl :: forall h fs a j. ((:-<:) SingleLocalVarDecl fs, InjF fs SingleLocalVarDeclL j) => CxtS h fs a LocalVarDeclAttrsL -> CxtS h fs a VarDeclBinderL -> CxtS h fs a OptLocalVarInitL -> CxtS h fs a j
- pattern EmptyMultiLocalVarDeclCommonAttrs' :: (EmptyMultiLocalVarDeclCommonAttrs :-<: fs, All HFunctor fs) => CxtS h fs a MultiLocalVarDeclCommonAttrsL
- iEmptyMultiLocalVarDeclCommonAttrs :: forall h fs a j. ((:-<:) EmptyMultiLocalVarDeclCommonAttrs fs, InjF fs MultiLocalVarDeclCommonAttrsL j) => CxtS h fs a j
- pattern MultiLocalVarDecl' :: (MultiLocalVarDecl :-<: fs, All HFunctor fs) => CxtS h fs a MultiLocalVarDeclCommonAttrsL -> CxtS h fs a [SingleLocalVarDeclL] -> CxtS h fs a MultiLocalVarDeclL
- iMultiLocalVarDecl :: forall h fs a j. ((:-<:) MultiLocalVarDecl fs, InjF fs MultiLocalVarDeclL j) => CxtS h fs a MultiLocalVarDeclCommonAttrsL -> CxtS h fs a [SingleLocalVarDeclL] -> CxtS h fs a j
- pattern AssignOpEquals' :: (AssignOpEquals :-<: fs, All HFunctor fs) => CxtS h fs a AssignOpL
- iAssignOpEquals :: forall h fs a j. ((:-<:) AssignOpEquals fs, InjF fs AssignOpL j) => CxtS h fs a j
- pattern Assign' :: (Assign :-<: fs, All HFunctor fs) => CxtS h fs a LhsL -> CxtS h fs a AssignOpL -> CxtS h fs a RhsL -> CxtS h fs a AssignL
- iAssign :: forall h fs a j. ((:-<:) Assign fs, InjF fs AssignL j) => CxtS h fs a LhsL -> CxtS h fs a AssignOpL -> CxtS h fs a RhsL -> CxtS h fs a j
- pattern EmptyBlockEnd' :: (EmptyBlockEnd :-<: fs, All HFunctor fs) => CxtS h fs a BlockEndL
- iEmptyBlockEnd :: forall h fs a j. ((:-<:) EmptyBlockEnd fs, InjF fs BlockEndL j) => CxtS h fs a j
- pattern Block' :: (Block :-<: fs, All HFunctor fs) => CxtS h fs a [BlockItemL] -> CxtS h fs a BlockEndL -> CxtS h fs a BlockL
- iBlock :: forall h fs a j. ((:-<:) Block fs, InjF fs BlockL j) => CxtS h fs a [BlockItemL] -> CxtS h fs a BlockEndL -> CxtS h fs a j
- pattern EmptyBlockItem' :: (EmptyBlockItem :-<: fs, All HFunctor fs) => CxtS h fs a BlockItemL
- iEmptyBlockItem :: forall h fs a j. ((:-<:) EmptyBlockItem fs, InjF fs BlockItemL j) => CxtS h fs a j
Documentation
data BoolF (e :: * -> *) l where Source #
Instances
data IntF (e :: * -> *) l where Source #
Instances
data IntegerF (e :: * -> *) l where Source #
Instances
data CharF (e :: * -> *) l where Source #
Instances
data UnitF (e :: * -> *) l where Source #
Instances
pattern IntegerF' :: (IntegerF :-<: fs, All HFunctor fs) => Integer -> CxtS h fs a IntegerL Source #
iIntegerF :: forall h fs a j. ((:-<:) IntegerF fs, InjF fs IntegerL j) => Integer -> CxtS h fs a j Source #
data FunctionCallAttrsL Source #
Instances
KDynCase EmptyFunctionCallAttrs FunctionCallAttrsL Source # | |
Defined in Cubix.Language.Parametric.Syntax.Function Methods kdyncase :: forall (e :: Type -> Type) b. EmptyFunctionCallAttrs e b -> Maybe (b :~: FunctionCallAttrsL) # | |
KDynCase JavaTypeArgs FunctionCallAttrsL Source # | |
Defined in Cubix.Language.Java.Parametric.Common.Types Methods kdyncase :: forall (e :: Type -> Type) b. JavaTypeArgs e b -> Maybe (b :~: FunctionCallAttrsL) # |
data FunctionExpL Source #
Instances
data FunctionArgumentsL Source #
Instances
KDynCase FunctionArgumentList FunctionArgumentsL Source # | |
Defined in Cubix.Language.Parametric.Syntax.Function Methods kdyncase :: forall (e :: Type -> Type) b. FunctionArgumentList e b -> Maybe (b :~: FunctionArgumentsL) # | |
KDynCase LuaSpecialFunArg FunctionArgumentsL Source # | |
Defined in Cubix.Language.Lua.Parametric.Common.Types Methods kdyncase :: forall (e :: Type -> Type) b. LuaSpecialFunArg e b -> Maybe (b :~: FunctionArgumentsL) # |
data FunctionCallL Source #
Upon evaluating a FunctionCall node, the following occurs: 1) The FunctionExp is evaluated. 2) The function call attrs are evaluated. 3) The arguments are evaluated, in unspecified order. (Remember, we model C, which has unspecified order) 4) A function is looked up based on the function exp and the arguments, and is then invoked with the given arguments.
1 and 2 happpen in unspecified order. 1 and 2 happen before 3, which happens before 4.
All positional arguments in the invocation and the function definition are matched up sequentially If argument types do not line up (e.g.: pass a positional arg at a receiver position), this is undefined; said positional argument is ignored in the above computation
Instances
data FunctionCall e l where Source #
Constructors
FunctionCall :: e FunctionCallAttrsL -> e FunctionExpL -> e FunctionArgumentsL -> FunctionCall e FunctionCallL |