Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Concrete data types for Oberon constructs that make up its Abstract Syntax Tree. Every data type from this module is an instance of a type family declared in Language.Oberon.Abstract. This way it can be replaced by another data type for another language while leaving other types to be reused.
Synopsis
- data Module λ l f' f = Module Ident [Import l] (f (Block l l f' f'))
- data Type λ l f' f
- = TypeReference (QualIdent l)
- | ArrayType (ZipList (f (ConstExpression l l f' f'))) (f (Type l l f' f'))
- | RecordType (Maybe (BaseType l)) (ZipList (f (FieldList l l f' f')))
- | PointerType (f (Type l l f' f'))
- | ProcedureType (Maybe (f (FormalParameters l l f' f')))
- type Ident = Text
- data Block λ l f' f = Block (ZipList (f (Declaration l l f' f'))) (Maybe (f (StatementSequence l l f' f')))
- data Statement λ l f' f
- = EmptyStatement
- | Assignment (f (Designator l l f' f')) (f (Expression l l f' f'))
- | ProcedureCall (f (Designator l l f' f')) (Maybe (ZipList (f (Expression l l f' f'))))
- | If (f (ConditionalBranch l l f' f')) (ZipList (f (ConditionalBranch l l f' f'))) (Maybe (f (StatementSequence l l f' f')))
- | CaseStatement (f (Expression l l f' f')) (ZipList (f (Case l l f' f'))) (Maybe (f (StatementSequence l l f' f')))
- | While (f (Expression l l f' f')) (f (StatementSequence l l f' f'))
- | Repeat (f (StatementSequence l l f' f')) (f (Expression l l f' f'))
- | For Ident (f (Expression l l f' f')) (f (Expression l l f' f')) (Maybe (f (Expression l l f' f'))) (f (StatementSequence l l f' f'))
- | Loop (f (StatementSequence l l f' f'))
- | With (f (WithAlternative l l f' f')) (ZipList (f (WithAlternative l l f' f'))) (Maybe (f (StatementSequence l l f' f')))
- | Exit
- | Return (Maybe (f (Expression l l f' f')))
- data Language = Language
- data Declaration λ l f' f
- = ConstantDeclaration (IdentDef l) (f (ConstExpression l l f' f'))
- | TypeDeclaration (IdentDef l) (f (Type l l f' f'))
- | VariableDeclaration (IdentList l) (f (Type l l f' f'))
- | ProcedureDeclaration (f (ProcedureHeading l l f' f')) (f (Block l l f' f'))
- | ForwardDeclaration (IdentDef l) (Maybe (f (FormalParameters l l f' f')))
- data Expression λ l f' f
- = Relation RelOp (f (Expression l l f' f')) (f (Expression l l f' f'))
- | IsA (f (Expression l l f' f')) (QualIdent l)
- | Positive (f (Expression l l f' f'))
- | Negative (f (Expression l l f' f'))
- | Add (f (Expression l l f' f')) (f (Expression l l f' f'))
- | Subtract (f (Expression l l f' f')) (f (Expression l l f' f'))
- | Or (f (Expression l l f' f')) (f (Expression l l f' f'))
- | Multiply (f (Expression l l f' f')) (f (Expression l l f' f'))
- | Divide (f (Expression l l f' f')) (f (Expression l l f' f'))
- | IntegerDivide (f (Expression l l f' f')) (f (Expression l l f' f'))
- | Modulo (f (Expression l l f' f')) (f (Expression l l f' f'))
- | And (f (Expression l l f' f')) (f (Expression l l f' f'))
- | Set (ZipList (f (Element l l f' f')))
- | Read (f (Designator l l f' f'))
- | FunctionCall (f (Designator l l f' f')) (ZipList (f (Expression l l f' f')))
- | Not (f (Expression l l f' f'))
- | Literal (f (Value l l f' f'))
- data Designator λ l f' f
- = Variable (QualIdent l)
- | Field (f (Designator l l f' f')) Ident
- | Index (f (Designator l l f' f')) (f (Expression l l f' f')) (ZipList (f (Expression l l f' f')))
- | TypeGuard (f (Designator l l f' f')) (QualIdent l)
- | Dereference (f (Designator l l f' f'))
- data Value λ l (f' :: Type -> Type) (f :: Type -> Type)
- data FieldList λ l f' f = FieldList (IdentList l) (f (Type l l f' f'))
- data ProcedureHeading λ l f' f
- = ProcedureHeading Bool (IdentDef l) (Maybe (f (FormalParameters l l f' f')))
- | TypeBoundHeading Bool Ident Ident Bool (IdentDef l) (Maybe (f (FormalParameters l l f' f')))
- data FormalParameters λ l f' f = FormalParameters (ZipList (f (FPSection l l f' f'))) (Maybe (ReturnType l))
- data FPSection λ l f' f = FPSection Bool [Ident] (f (Type l l f' f'))
- newtype StatementSequence λ l f' f = StatementSequence (ZipList (f (Statement l l f' f')))
- data Case λ l f' f = Case (f (CaseLabels l l f' f')) (ZipList (f (CaseLabels l l f' f'))) (f (StatementSequence l l f' f'))
- data CaseLabels λ l f' f
- = SingleLabel (f (ConstExpression l l f' f'))
- | LabelRange (f (ConstExpression l l f' f')) (f (ConstExpression l l f' f'))
- data ConditionalBranch λ l f' f = ConditionalBranch (f (Expression l l f' f')) (f (StatementSequence l l f' f'))
- data Element λ l f' f
- = Element (f (Expression l l f' f'))
- | Range (f (Expression l l f' f')) (f (Expression l l f' f'))
- type Import l = (Maybe Ident, Ident)
- data IdentDef l = IdentDef Ident AccessMode
- data QualIdent l
- data WithAlternative λ l f' f = WithAlternative (QualIdent l) (QualIdent l) (f (StatementSequence l l f' f'))
- data AccessMode
- isNamedVar :: Nameable l => Ident -> Maybe (Designator Language l f f) -> Bool
- data RelOp
- = Equal
- | Unequal
- | Less
- | LessOrEqual
- | Greater
- | GreaterOrEqual
- | In
Documentation
Instances
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (Block l l)) => Foldable t (Module λ l) Source # | |
(Transformation t, Functor t (Block l l)) => Functor t (Module λ l) Source # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (Block l l)) => Traversable t (Module λ l) Source # | |
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (Block l l f' f')) => Foldable t (Module λ l f') Source # | |
(Transformation t, At t (Block l l f' f')) => Functor t (Module λ l f') Source # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, At t (Block l l f' f')) => Traversable t (Module λ l f') Source # | |
Apply (Module l l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.ConstantFolder (<*>) :: forall (p :: k -> Type) (q :: k -> Type). Module l l f' (p ~> q) -> Module l l f' p -> Module l l f' q # liftA2 :: (forall (a :: k). p a -> q a -> r a) -> Module l l f' p -> Module l l f' q -> Module l l f' r # liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> Module l l f' p -> Module l l f' q -> Module l l f' r -> Module l l f' s # | |
Apply (Module l l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.TypeChecker (<*>) :: forall (p :: k -> Type) (q :: k -> Type). Module l l f' (p ~> q) -> Module l l f' p -> Module l l f' q # liftA2 :: (forall (a :: k). p a -> q a -> r a) -> Module l l f' p -> Module l l f' q -> Module l l f' r # liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> Module l l f' p -> Module l l f' q -> Module l l f' r -> Module l l f' s # | |
Foldable (Module λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Functor (Module λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Traversable (Module λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
(Oberon l, Nameable l, Ord (QualIdent l), Show (QualIdent l), Atts (Synthesized (Auto ConstantFold)) (Block l l Sem Sem) ~ SynCFMod' l (Block l l)) => Synthesizer (Auto ConstantFold) (Module l l) Sem Placed Source # | |
Defined in Language.Oberon.ConstantFolder synthesis :: forall (sem :: Type -> Type). sem ~ Semantics (Auto ConstantFold) => Auto ConstantFold -> Placed (Module l l Sem Sem) -> Atts (Inherited (Auto ConstantFold)) (Module l l sem sem) -> Module l l sem (Synthesized (Auto ConstantFold)) -> Atts (Synthesized (Auto ConstantFold)) (Module l l sem sem) # | |
(Typeable λ, Typeable l, Typeable f, Typeable f', Data (Import l), Data (f (Block l l f' f'))) => Data (Module λ l f' f) Source # | |
Defined in Language.Oberon.AST gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Module λ l f' f -> c (Module λ l f' f) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Module λ l f' f) # toConstr :: Module λ l f' f -> Constr # dataTypeOf :: Module λ l f' f -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Module λ l f' f)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Module λ l f' f)) # gmapT :: (forall b. Data b => b -> b) -> Module λ l f' f -> Module λ l f' f # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Module λ l f' f -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Module λ l f' f -> r # gmapQ :: (forall d. Data d => d -> u) -> Module λ l f' f -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Module λ l f' f -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Module λ l f' f -> m (Module λ l f' f) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Module λ l f' f -> m (Module λ l f' f) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Module λ l f' f -> m (Module λ l f' f) # | |
(Show (Import l), Show (f (Block l l f' f'))) => Show (Module λ l f' f) Source # | |
(Pretty (Import l), Pretty (Block l l Identity Identity)) => Pretty (Module λ l Identity Identity) Source # | |
type Atts (Inherited ConstantFold) (Module λ l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized ConstantFold) (Module l l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder |
TypeReference (QualIdent l) | |
ArrayType (ZipList (f (ConstExpression l l f' f'))) (f (Type l l f' f')) | |
RecordType (Maybe (BaseType l)) (ZipList (f (FieldList l l f' f'))) | |
PointerType (f (Type l l f' f')) | |
ProcedureType (Maybe (f (FormalParameters l l f' f'))) |
Instances
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (ConstExpression l l), Foldable t (Type l l), Foldable t (FieldList l l), Foldable t (Type l l), Foldable t (FormalParameters l l)) => Foldable t (Type λ l) Source # | |
(Transformation t, Functor t (ConstExpression l l), Functor t (Type l l), Functor t (FieldList l l), Functor t (Type l l), Functor t (FormalParameters l l)) => Functor t (Type λ l) Source # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (ConstExpression l l), Traversable t (Type l l), Traversable t (FieldList l l), Traversable t (Type l l), Traversable t (FormalParameters l l)) => Traversable t (Type λ l) Source # | |
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (ConstExpression l l f' f'), At t (Type l l f' f'), At t (FieldList l l f' f'), At t (Type l l f' f'), At t (FormalParameters l l f' f')) => Foldable t (Type λ l f') Source # | |
(Transformation t, At t (ConstExpression l l f' f'), At t (Type l l f' f'), At t (FieldList l l f' f'), At t (Type l l f' f'), At t (FormalParameters l l f' f')) => Functor t (Type λ l f') Source # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, At t (ConstExpression l l f' f'), At t (Type l l f' f'), At t (FieldList l l f' f'), At t (Type l l f' f'), At t (FormalParameters l l f' f')) => Traversable t (Type λ l f') Source # | |
Apply (Type λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST (<*>) :: forall (p :: k -> Type0) (q :: k -> Type0). Type λ l f' (p ~> q) -> Type λ l f' p -> Type λ l f' q # liftA2 :: (forall (a :: k). p a -> q a -> r a) -> Type λ l f' p -> Type λ l f' q -> Type λ l f' r # liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> Type λ l f' p -> Type λ l f' q -> Type λ l f' r -> Type λ l f' s # | |
Foldable (Type λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Functor (Type λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Traversable (Type λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
(Typeable λ, Typeable l, Typeable f, Typeable f', Data (QualIdent l), Data (f (Type l l f' f')), Data (f (ConstExpression l l f' f')), Data (f (FormalParameters l l f' f')), Data (f (FieldList l l f' f'))) => Data (Type λ l f' f) Source # | |
Defined in Language.Oberon.AST gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Type λ l f' f -> c (Type λ l f' f) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Type λ l f' f) # toConstr :: Type λ l f' f -> Constr # dataTypeOf :: Type λ l f' f -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Type λ l f' f)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Type λ l f' f)) # gmapT :: (forall b. Data b => b -> b) -> Type λ l f' f -> Type λ l f' f # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Type λ l f' f -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Type λ l f' f -> r # gmapQ :: (forall d. Data d => d -> u) -> Type λ l f' f -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Type λ l f' f -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Type λ l f' f -> m (Type λ l f' f) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Type λ l f' f -> m (Type λ l f' f) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Type λ l f' f -> m (Type λ l f' f) # | |
(Show (QualIdent l), Show (f (Type l l f' f')), Show (f (ConstExpression l l f' f')), Show (f (FormalParameters l l f' f')), Show (f (FieldList l l f' f'))) => Show (Type λ l f' f) Source # | |
(Pretty (FormalParameters l l Identity Identity), Pretty (FieldList l l Identity Identity), Pretty (ConstExpression l l Identity Identity), Pretty (Type l l Identity Identity), Pretty (BaseType l)) => Pretty (Type λ l Identity Identity) Source # | |
type Atts (Inherited ConstantFold) (Type λ l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized ConstantFold) (Type l l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder |
Block (ZipList (f (Declaration l l f' f'))) (Maybe (f (StatementSequence l l f' f'))) |
Instances
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (Declaration l l), Foldable t (StatementSequence l l)) => Foldable t (Block λ l) Source # | |
(Transformation t, Functor t (Declaration l l), Functor t (StatementSequence l l)) => Functor t (Block λ l) Source # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (Declaration l l), Traversable t (StatementSequence l l)) => Traversable t (Block λ l) Source # | |
(Nameable l, k ~ QualIdent l, v ~ Value l l Placed Placed, Ord k, Atts (Synthesized (Auto ConstantFold)) (Declaration l l Sem Sem) ~ SynCFMod' l (Declaration l l)) => SynthesizedField "moduleEnv" (Map k (Maybe v)) (Auto ConstantFold) (Block l l) Sem Placed Source # | |
Defined in Language.Oberon.ConstantFolder synthesizedField :: forall (sem :: Type -> Type). sem ~ Semantics (Auto ConstantFold) => Proxy "moduleEnv" -> Auto ConstantFold -> Placed (Block l l Sem Sem) -> Atts (Inherited (Auto ConstantFold)) (Block l l sem sem) -> Block l l sem (Synthesized (Auto ConstantFold)) -> Map k (Maybe v) # | |
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (Declaration l l f' f'), At t (StatementSequence l l f' f')) => Foldable t (Block λ l f') Source # | |
(Transformation t, At t (Declaration l l f' f'), At t (StatementSequence l l f' f')) => Functor t (Block λ l f') Source # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, At t (Declaration l l f' f'), At t (StatementSequence l l f' f')) => Traversable t (Block λ l f') Source # | |
Apply (Block λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST (<*>) :: forall (p :: k -> Type) (q :: k -> Type). Block λ l f' (p ~> q) -> Block λ l f' p -> Block λ l f' q # liftA2 :: (forall (a :: k). p a -> q a -> r a) -> Block λ l f' p -> Block λ l f' q -> Block λ l f' r # liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> Block λ l f' p -> Block λ l f' q -> Block λ l f' r -> Block λ l f' s # | |
Foldable (Block λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Functor (Block λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Traversable (Block λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
(Nameable l, Ord (QualIdent l), Atts (Synthesized (Auto ConstantFold)) (Declaration l l Sem Sem) ~ SynCFMod' l (Declaration l l), Atts (Inherited (Auto ConstantFold)) (StatementSequence l l Sem Sem) ~ InhCF l, Atts (Inherited (Auto ConstantFold)) (Declaration l l Sem Sem) ~ InhCF l) => Bequether (Auto ConstantFold) (Block l l) Sem Placed Source # | |
Defined in Language.Oberon.ConstantFolder bequest :: forall (sem :: Type -> Type). sem ~ Semantics (Auto ConstantFold) => Auto ConstantFold -> Placed (Block l l Sem Sem) -> Atts (Inherited (Auto ConstantFold)) (Block l l sem sem) -> Block l l sem (Synthesized (Auto ConstantFold)) -> Block l l sem (Inherited (Auto ConstantFold)) # | |
(Typeable λ, Typeable l, Typeable f, Typeable f', Data (f (Declaration l l f' f')), Data (f (Designator l l f' f')), Data (f (Expression l l f' f')), Data (f (StatementSequence l l f' f'))) => Data (Block λ l f' f) Source # | |
Defined in Language.Oberon.AST gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Block λ l f' f -> c (Block λ l f' f) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Block λ l f' f) # toConstr :: Block λ l f' f -> Constr # dataTypeOf :: Block λ l f' f -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Block λ l f' f)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Block λ l f' f)) # gmapT :: (forall b. Data b => b -> b) -> Block λ l f' f -> Block λ l f' f # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Block λ l f' f -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Block λ l f' f -> r # gmapQ :: (forall d. Data d => d -> u) -> Block λ l f' f -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Block λ l f' f -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Block λ l f' f -> m (Block λ l f' f) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Block λ l f' f -> m (Block λ l f' f) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Block λ l f' f -> m (Block λ l f' f) # | |
(Show (f (Declaration l l f' f')), Show (f (Designator l l f' f')), Show (f (Expression l l f' f')), Show (f (StatementSequence l l f' f'))) => Show (Block λ l f' f) Source # | |
(Pretty (Declaration l l Identity Identity), Pretty (StatementSequence l l Identity Identity)) => Pretty (Block λ l Identity Identity) Source # | |
type Atts (Inherited ConstantFold) (Block λ l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized ConstantFold) (Block l l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder |
data Statement λ l f' f Source #
EmptyStatement | |
Assignment (f (Designator l l f' f')) (f (Expression l l f' f')) | |
ProcedureCall (f (Designator l l f' f')) (Maybe (ZipList (f (Expression l l f' f')))) | |
If (f (ConditionalBranch l l f' f')) (ZipList (f (ConditionalBranch l l f' f'))) (Maybe (f (StatementSequence l l f' f'))) | |
CaseStatement (f (Expression l l f' f')) (ZipList (f (Case l l f' f'))) (Maybe (f (StatementSequence l l f' f'))) | |
While (f (Expression l l f' f')) (f (StatementSequence l l f' f')) | |
Repeat (f (StatementSequence l l f' f')) (f (Expression l l f' f')) | |
For Ident (f (Expression l l f' f')) (f (Expression l l f' f')) (Maybe (f (Expression l l f' f'))) (f (StatementSequence l l f' f')) | |
Loop (f (StatementSequence l l f' f')) | |
With (f (WithAlternative l l f' f')) (ZipList (f (WithAlternative l l f' f'))) (Maybe (f (StatementSequence l l f' f'))) | |
Exit | |
Return (Maybe (f (Expression l l f' f'))) |
Instances
Data type representing the Oberon language, both versions of it.
Instances
data Declaration λ l f' f Source #
ConstantDeclaration (IdentDef l) (f (ConstExpression l l f' f')) | |
TypeDeclaration (IdentDef l) (f (Type l l f' f')) | |
VariableDeclaration (IdentList l) (f (Type l l f' f')) | |
ProcedureDeclaration (f (ProcedureHeading l l f' f')) (f (Block l l f' f')) | |
ForwardDeclaration (IdentDef l) (Maybe (f (FormalParameters l l f' f'))) |
Instances
data Expression λ l f' f Source #
Relation RelOp (f (Expression l l f' f')) (f (Expression l l f' f')) | |
IsA (f (Expression l l f' f')) (QualIdent l) | |
Positive (f (Expression l l f' f')) | |
Negative (f (Expression l l f' f')) | |
Add (f (Expression l l f' f')) (f (Expression l l f' f')) | |
Subtract (f (Expression l l f' f')) (f (Expression l l f' f')) | |
Or (f (Expression l l f' f')) (f (Expression l l f' f')) | |
Multiply (f (Expression l l f' f')) (f (Expression l l f' f')) | |
Divide (f (Expression l l f' f')) (f (Expression l l f' f')) | |
IntegerDivide (f (Expression l l f' f')) (f (Expression l l f' f')) | |
Modulo (f (Expression l l f' f')) (f (Expression l l f' f')) | |
And (f (Expression l l f' f')) (f (Expression l l f' f')) | |
Set (ZipList (f (Element l l f' f'))) | |
Read (f (Designator l l f' f')) | |
FunctionCall (f (Designator l l f' f')) (ZipList (f (Expression l l f' f'))) | |
Not (f (Expression l l f' f')) | |
Literal (f (Value l l f' f')) |
Instances
data Designator λ l f' f Source #
Variable (QualIdent l) | |
Field (f (Designator l l f' f')) Ident | |
Index (f (Designator l l f' f')) (f (Expression l l f' f')) (ZipList (f (Expression l l f' f'))) | |
TypeGuard (f (Designator l l f' f')) (QualIdent l) | |
Dereference (f (Designator l l f' f')) |
Instances
(Ord (QualIdent l), v ~ Value l l Placed Placed) => SynthesizedField "designatorValue" (Maybe (Placed v)) (Auto ConstantFold) (Designator l l) Sem Placed Source # | |
Defined in Language.Oberon.ConstantFolder synthesizedField :: forall (sem :: Type -> Type). sem ~ Semantics (Auto ConstantFold) => Proxy "designatorValue" -> Auto ConstantFold -> Placed (Designator l l Sem Sem) -> Atts (Inherited (Auto ConstantFold)) (Designator l l sem sem) -> Designator l l sem (Synthesized (Auto ConstantFold)) -> Maybe (Placed v) # | |
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (Designator l l), Foldable t (Designator l l), Foldable t (Expression l l), Foldable t (Expression l l), Foldable t (Designator l l), Foldable t (Designator l l)) => Foldable t (Designator λ l) Source # | |
Defined in Language.Oberon.AST | |
(Transformation t, Functor t (Designator l l), Functor t (Designator l l), Functor t (Expression l l), Functor t (Expression l l), Functor t (Designator l l), Functor t (Designator l l)) => Functor t (Designator λ l) Source # | |
Defined in Language.Oberon.AST (<$>) :: t -> Designator λ l (Domain t) (Domain t) -> Designator λ l (Codomain t) (Codomain t) # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (Designator l l), Traversable t (Designator l l), Traversable t (Expression l l), Traversable t (Expression l l), Traversable t (Designator l l), Traversable t (Designator l l)) => Traversable t (Designator λ l) Source # | |
Defined in Language.Oberon.AST | |
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (Designator l l f' f'), At t (Designator l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Designator l l f' f'), At t (Designator l l f' f')) => Foldable t (Designator λ l f') Source # | |
Defined in Language.Oberon.AST | |
(Transformation t, At t (Designator l l f' f'), At t (Designator l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Designator l l f' f'), At t (Designator l l f' f')) => Functor t (Designator λ l f') Source # | |
Defined in Language.Oberon.AST (<$>) :: t -> Designator λ l f' (Domain t) -> Designator λ l f' (Codomain t) # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, At t (Designator l l f' f'), At t (Designator l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Designator l l f' f'), At t (Designator l l f' f')) => Traversable t (Designator λ l f') Source # | |
Defined in Language.Oberon.AST traverse :: forall m (f :: Type -> Type). Codomain t ~ Compose m f => t -> Designator λ l f' (Domain t) -> m (Designator λ l f' f) # | |
Apply (Designator λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST (<*>) :: forall (p :: k -> Type) (q :: k -> Type). Designator λ l f' (p ~> q) -> Designator λ l f' p -> Designator λ l f' q # liftA2 :: (forall (a :: k). p a -> q a -> r a) -> Designator λ l f' p -> Designator λ l f' q -> Designator λ l f' r # liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> Designator λ l f' p -> Designator λ l f' q -> Designator λ l f' r -> Designator λ l f' s # | |
Foldable (Designator λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST foldMap :: Monoid m => (forall (a :: k). p a -> m) -> Designator λ l f' p -> m # | |
Functor (Designator λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST (<$>) :: (forall (a :: k). p a -> q a) -> Designator λ l f' p -> Designator λ l f' q # | |
Traversable (Designator λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST traverse :: Applicative m => (forall (a :: k). p a -> m (q a)) -> Designator λ l f' p -> m (Designator λ l f' q) # sequence :: forall m (p :: k -> Type). Applicative m => Designator λ l f' (Compose m p) -> m (Designator λ l f' p) # | |
(Typeable λ, Typeable l, Typeable f, Typeable f', Data (QualIdent l), Data (f (Designator l l f' f')), Data (f (Expression l l f' f'))) => Data (Designator λ l f' f) Source # | |
Defined in Language.Oberon.AST gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Designator λ l f' f -> c (Designator λ l f' f) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Designator λ l f' f) # toConstr :: Designator λ l f' f -> Constr # dataTypeOf :: Designator λ l f' f -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Designator λ l f' f)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Designator λ l f' f)) # gmapT :: (forall b. Data b => b -> b) -> Designator λ l f' f -> Designator λ l f' f # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Designator λ l f' f -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Designator λ l f' f -> r # gmapQ :: (forall d. Data d => d -> u) -> Designator λ l f' f -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Designator λ l f' f -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Designator λ l f' f -> m (Designator λ l f' f) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Designator λ l f' f -> m (Designator λ l f' f) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Designator λ l f' f -> m (Designator λ l f' f) # | |
(Show (QualIdent l), Show (f (Designator l l f' f')), Show (f (Expression l l f' f'))) => Show (Designator λ l f' f) Source # | |
Defined in Language.Oberon.AST showsPrec :: Int -> Designator λ l f' f -> ShowS # show :: Designator λ l f' f -> String # showList :: [Designator λ l f' f] -> ShowS # | |
(Eq (QualIdent l), Eq (f (Designator l l f' f')), Eq (f (Expression l l f' f'))) => Eq (Designator λ l f' f) Source # | |
Defined in Language.Oberon.AST (==) :: Designator λ l f' f -> Designator λ l f' f -> Bool # (/=) :: Designator λ l f' f -> Designator λ l f' f -> Bool # | |
(Pretty (QualIdent l), Pretty (Designator l l Identity Identity), Pretty (Expression l l Identity Identity)) => Pretty (Designator λ l Identity Identity) Source # | |
Defined in Language.Oberon.Pretty pretty :: Designator λ l Identity Identity -> Doc ann # prettyList :: [Designator λ l Identity Identity] -> Doc ann # | |
type Atts (Inherited ConstantFold) (Designator λ l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized ConstantFold) (Designator l l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder |
data Value λ l (f' :: Type -> Type) (f :: Type -> Type) Source #
Instances
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m) => Foldable t (Value λ l) Source # | |
Transformation t => Functor t (Value λ l) Source # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m) => Traversable t (Value λ l) Source # | |
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m) => Foldable t (Value λ l f') Source # | |
Transformation t => Functor t (Value λ l f') Source # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m) => Traversable t (Value λ l f') Source # | |
Apply (Value λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST (<*>) :: forall (p :: k -> Type) (q :: k -> Type). Value λ l f' (p ~> q) -> Value λ l f' p -> Value λ l f' q # liftA2 :: (forall (a :: k). p a -> q a -> r a) -> Value λ l f' p -> Value λ l f' q -> Value λ l f' r # liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> Value λ l f' p -> Value λ l f' q -> Value λ l f' r -> Value λ l f' s # | |
Foldable (Value λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Functor (Value λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Traversable (Value λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
(Typeable λ, Typeable l, Typeable f, Typeable f') => Data (Value λ l f' f) Source # | |
Defined in Language.Oberon.AST gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Value λ l f' f -> c (Value λ l f' f) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Value λ l f' f) # toConstr :: Value λ l f' f -> Constr # dataTypeOf :: Value λ l f' f -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Value λ l f' f)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Value λ l f' f)) # gmapT :: (forall b. Data b => b -> b) -> Value λ l f' f -> Value λ l f' f # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Value λ l f' f -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Value λ l f' f -> r # gmapQ :: (forall d. Data d => d -> u) -> Value λ l f' f -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Value λ l f' f -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Value λ l f' f -> m (Value λ l f' f) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Value λ l f' f -> m (Value λ l f' f) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Value λ l f' f -> m (Value λ l f' f) # | |
Show (Value λ l f' f) Source # | |
Eq (Value λ l f' f) Source # | |
Pretty (Value Language l Identity Identity) Source # | |
type Atts (Inherited ConstantFold) (Value l l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized ConstantFold) (Value l l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder |
data FieldList λ l f' f Source #
Instances
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (Type l l)) => Foldable t (FieldList λ l) Source # | |
(Transformation t, Functor t (Type l l)) => Functor t (FieldList λ l) Source # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (Type l l)) => Traversable t (FieldList λ l) Source # | |
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (Type l l f' f')) => Foldable t (FieldList λ l f') Source # | |
(Transformation t, At t (Type l l f' f')) => Functor t (FieldList λ l f') Source # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, At t (Type l l f' f')) => Traversable t (FieldList λ l f') Source # | |
Apply (FieldList λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST (<*>) :: forall (p :: k -> Type) (q :: k -> Type). FieldList λ l f' (p ~> q) -> FieldList λ l f' p -> FieldList λ l f' q # liftA2 :: (forall (a :: k). p a -> q a -> r a) -> FieldList λ l f' p -> FieldList λ l f' q -> FieldList λ l f' r # liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> FieldList λ l f' p -> FieldList λ l f' q -> FieldList λ l f' r -> FieldList λ l f' s # | |
Foldable (FieldList λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Functor (FieldList λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Traversable (FieldList λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
(Typeable λ, Typeable l, Typeable f, Typeable f', Data (IdentDef l), Data (f (Type l l f' f')), Data (f (Expression l l f' f'))) => Data (FieldList λ l f' f) Source # | |
Defined in Language.Oberon.AST gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> FieldList λ l f' f -> c (FieldList λ l f' f) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (FieldList λ l f' f) # toConstr :: FieldList λ l f' f -> Constr # dataTypeOf :: FieldList λ l f' f -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (FieldList λ l f' f)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (FieldList λ l f' f)) # gmapT :: (forall b. Data b => b -> b) -> FieldList λ l f' f -> FieldList λ l f' f # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> FieldList λ l f' f -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> FieldList λ l f' f -> r # gmapQ :: (forall d. Data d => d -> u) -> FieldList λ l f' f -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> FieldList λ l f' f -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> FieldList λ l f' f -> m (FieldList λ l f' f) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> FieldList λ l f' f -> m (FieldList λ l f' f) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> FieldList λ l f' f -> m (FieldList λ l f' f) # | |
(Show (IdentDef l), Show (f (Type l l f' f')), Show (f (Expression l l f' f'))) => Show (FieldList λ l f' f) Source # | |
(Pretty (IdentDef l), Pretty (Type l l Identity Identity)) => Pretty (FieldList λ l Identity Identity) Source # | |
type Atts (Inherited ConstantFold) (FieldList λ l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized ConstantFold) (FieldList l l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder |
data ProcedureHeading λ l f' f Source #
ProcedureHeading Bool (IdentDef l) (Maybe (f (FormalParameters l l f' f'))) | |
TypeBoundHeading Bool Ident Ident Bool (IdentDef l) (Maybe (f (FormalParameters l l f' f'))) |
Instances
data FormalParameters λ l f' f Source #
FormalParameters (ZipList (f (FPSection l l f' f'))) (Maybe (ReturnType l)) |
Instances
data FPSection λ l f' f Source #
Instances
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (Type l l)) => Foldable t (FPSection λ l) Source # | |
(Transformation t, Functor t (Type l l)) => Functor t (FPSection λ l) Source # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (Type l l)) => Traversable t (FPSection λ l) Source # | |
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (Type l l f' f')) => Foldable t (FPSection λ l f') Source # | |
(Transformation t, At t (Type l l f' f')) => Functor t (FPSection λ l f') Source # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, At t (Type l l f' f')) => Traversable t (FPSection λ l f') Source # | |
Apply (FPSection λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST (<*>) :: forall (p :: k -> Type) (q :: k -> Type). FPSection λ l f' (p ~> q) -> FPSection λ l f' p -> FPSection λ l f' q # liftA2 :: (forall (a :: k). p a -> q a -> r a) -> FPSection λ l f' p -> FPSection λ l f' q -> FPSection λ l f' r # liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> FPSection λ l f' p -> FPSection λ l f' q -> FPSection λ l f' r -> FPSection λ l f' s # | |
Foldable (FPSection λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Functor (FPSection λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Traversable (FPSection λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
(Typeable λ, Typeable l, Typeable f, Typeable f', Data (f (Type l l f' f')), Data (f (Expression l l f' f'))) => Data (FPSection λ l f' f) Source # | |
Defined in Language.Oberon.AST gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> FPSection λ l f' f -> c (FPSection λ l f' f) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (FPSection λ l f' f) # toConstr :: FPSection λ l f' f -> Constr # dataTypeOf :: FPSection λ l f' f -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (FPSection λ l f' f)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (FPSection λ l f' f)) # gmapT :: (forall b. Data b => b -> b) -> FPSection λ l f' f -> FPSection λ l f' f # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> FPSection λ l f' f -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> FPSection λ l f' f -> r # gmapQ :: (forall d. Data d => d -> u) -> FPSection λ l f' f -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> FPSection λ l f' f -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> FPSection λ l f' f -> m (FPSection λ l f' f) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> FPSection λ l f' f -> m (FPSection λ l f' f) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> FPSection λ l f' f -> m (FPSection λ l f' f) # | |
(Show (f (Type l l f' f')), Show (f (Expression l l f' f'))) => Show (FPSection λ l f' f) Source # | |
Pretty (Type l l Identity Identity) => Pretty (FPSection λ l Identity Identity) Source # | |
type Atts (Inherited ConstantFold) (FPSection λ l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized ConstantFold) (FPSection l l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder |
newtype StatementSequence λ l f' f Source #
StatementSequence (ZipList (f (Statement l l f' f'))) |
Instances
Case (f (CaseLabels l l f' f')) (ZipList (f (CaseLabels l l f' f'))) (f (StatementSequence l l f' f')) |
Instances
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (CaseLabels l l), Foldable t (CaseLabels l l), Foldable t (StatementSequence l l)) => Foldable t (Case λ l) Source # | |
(Transformation t, Functor t (CaseLabels l l), Functor t (CaseLabels l l), Functor t (StatementSequence l l)) => Functor t (Case λ l) Source # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (CaseLabels l l), Traversable t (CaseLabels l l), Traversable t (StatementSequence l l)) => Traversable t (Case λ l) Source # | |
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (CaseLabels l l f' f'), At t (CaseLabels l l f' f'), At t (StatementSequence l l f' f')) => Foldable t (Case λ l f') Source # | |
(Transformation t, At t (CaseLabels l l f' f'), At t (CaseLabels l l f' f'), At t (StatementSequence l l f' f')) => Functor t (Case λ l f') Source # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, At t (CaseLabels l l f' f'), At t (CaseLabels l l f' f'), At t (StatementSequence l l f' f')) => Traversable t (Case λ l f') Source # | |
Apply (Case λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST (<*>) :: forall (p :: k -> Type) (q :: k -> Type). Case λ l f' (p ~> q) -> Case λ l f' p -> Case λ l f' q # liftA2 :: (forall (a :: k). p a -> q a -> r a) -> Case λ l f' p -> Case λ l f' q -> Case λ l f' r # liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> Case λ l f' p -> Case λ l f' q -> Case λ l f' r -> Case λ l f' s # | |
Foldable (Case λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Functor (Case λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Traversable (Case λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
(Typeable λ, Typeable l, Typeable f, Typeable f', Data (f (CaseLabels l l f' f')), Data (f (StatementSequence l l f' f'))) => Data (Case λ l f' f) Source # | |
Defined in Language.Oberon.AST gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Case λ l f' f -> c (Case λ l f' f) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Case λ l f' f) # toConstr :: Case λ l f' f -> Constr # dataTypeOf :: Case λ l f' f -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Case λ l f' f)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Case λ l f' f)) # gmapT :: (forall b. Data b => b -> b) -> Case λ l f' f -> Case λ l f' f # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Case λ l f' f -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Case λ l f' f -> r # gmapQ :: (forall d. Data d => d -> u) -> Case λ l f' f -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Case λ l f' f -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Case λ l f' f -> m (Case λ l f' f) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Case λ l f' f -> m (Case λ l f' f) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Case λ l f' f -> m (Case λ l f' f) # | |
(Show (f (CaseLabels l l f' f')), Show (f (StatementSequence l l f' f'))) => Show (Case λ l f' f) Source # | |
(Pretty (CaseLabels l l Identity Identity), Pretty (ConstExpression l l Identity Identity), Pretty (StatementSequence l l Identity Identity)) => Pretty (Case λ l Identity Identity) Source # | |
type Atts (Inherited ConstantFold) (Case λ l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized ConstantFold) (Case l l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder |
data CaseLabels λ l f' f Source #
SingleLabel (f (ConstExpression l l f' f')) | |
LabelRange (f (ConstExpression l l f' f')) (f (ConstExpression l l f' f')) |
Instances
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (ConstExpression l l), Foldable t (ConstExpression l l), Foldable t (ConstExpression l l)) => Foldable t (CaseLabels λ l) Source # | |
Defined in Language.Oberon.AST | |
(Transformation t, Functor t (ConstExpression l l), Functor t (ConstExpression l l), Functor t (ConstExpression l l)) => Functor t (CaseLabels λ l) Source # | |
Defined in Language.Oberon.AST (<$>) :: t -> CaseLabels λ l (Domain t) (Domain t) -> CaseLabels λ l (Codomain t) (Codomain t) # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (ConstExpression l l), Traversable t (ConstExpression l l), Traversable t (ConstExpression l l)) => Traversable t (CaseLabels λ l) Source # | |
Defined in Language.Oberon.AST | |
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (ConstExpression l l f' f'), At t (ConstExpression l l f' f'), At t (ConstExpression l l f' f')) => Foldable t (CaseLabels λ l f') Source # | |
Defined in Language.Oberon.AST | |
(Transformation t, At t (ConstExpression l l f' f'), At t (ConstExpression l l f' f'), At t (ConstExpression l l f' f')) => Functor t (CaseLabels λ l f') Source # | |
Defined in Language.Oberon.AST (<$>) :: t -> CaseLabels λ l f' (Domain t) -> CaseLabels λ l f' (Codomain t) # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, At t (ConstExpression l l f' f'), At t (ConstExpression l l f' f'), At t (ConstExpression l l f' f')) => Traversable t (CaseLabels λ l f') Source # | |
Defined in Language.Oberon.AST traverse :: forall m (f :: Type -> Type). Codomain t ~ Compose m f => t -> CaseLabels λ l f' (Domain t) -> m (CaseLabels λ l f' f) # | |
Apply (CaseLabels λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST (<*>) :: forall (p :: k -> Type) (q :: k -> Type). CaseLabels λ l f' (p ~> q) -> CaseLabels λ l f' p -> CaseLabels λ l f' q # liftA2 :: (forall (a :: k). p a -> q a -> r a) -> CaseLabels λ l f' p -> CaseLabels λ l f' q -> CaseLabels λ l f' r # liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> CaseLabels λ l f' p -> CaseLabels λ l f' q -> CaseLabels λ l f' r -> CaseLabels λ l f' s # | |
Foldable (CaseLabels λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST foldMap :: Monoid m => (forall (a :: k). p a -> m) -> CaseLabels λ l f' p -> m # | |
Functor (CaseLabels λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST (<$>) :: (forall (a :: k). p a -> q a) -> CaseLabels λ l f' p -> CaseLabels λ l f' q # | |
Traversable (CaseLabels λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST traverse :: Applicative m => (forall (a :: k). p a -> m (q a)) -> CaseLabels λ l f' p -> m (CaseLabels λ l f' q) # sequence :: forall m (p :: k -> Type). Applicative m => CaseLabels λ l f' (Compose m p) -> m (CaseLabels λ l f' p) # | |
(Typeable λ, Typeable l, Typeable f, Typeable f', Data (f (ConstExpression l l f' f'))) => Data (CaseLabels λ l f' f) Source # | |
Defined in Language.Oberon.AST gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> CaseLabels λ l f' f -> c (CaseLabels λ l f' f) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (CaseLabels λ l f' f) # toConstr :: CaseLabels λ l f' f -> Constr # dataTypeOf :: CaseLabels λ l f' f -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (CaseLabels λ l f' f)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (CaseLabels λ l f' f)) # gmapT :: (forall b. Data b => b -> b) -> CaseLabels λ l f' f -> CaseLabels λ l f' f # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CaseLabels λ l f' f -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CaseLabels λ l f' f -> r # gmapQ :: (forall d. Data d => d -> u) -> CaseLabels λ l f' f -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> CaseLabels λ l f' f -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> CaseLabels λ l f' f -> m (CaseLabels λ l f' f) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> CaseLabels λ l f' f -> m (CaseLabels λ l f' f) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> CaseLabels λ l f' f -> m (CaseLabels λ l f' f) # | |
Show (f (ConstExpression l l f' f')) => Show (CaseLabels λ l f' f) Source # | |
Defined in Language.Oberon.AST showsPrec :: Int -> CaseLabels λ l f' f -> ShowS # show :: CaseLabels λ l f' f -> String # showList :: [CaseLabels λ l f' f] -> ShowS # | |
Pretty (ConstExpression l l Identity Identity) => Pretty (CaseLabels λ l Identity Identity) Source # | |
Defined in Language.Oberon.Pretty pretty :: CaseLabels λ l Identity Identity -> Doc ann # prettyList :: [CaseLabels λ l Identity Identity] -> Doc ann # | |
type Atts (Inherited ConstantFold) (CaseLabels λ l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized ConstantFold) (CaseLabels l l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder |
data ConditionalBranch λ l f' f Source #
ConditionalBranch (f (Expression l l f' f')) (f (StatementSequence l l f' f')) |
Instances
data Element λ l f' f Source #
Element (f (Expression l l f' f')) | |
Range (f (Expression l l f' f')) (f (Expression l l f' f')) |
Instances
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (Expression l l), Foldable t (Expression l l), Foldable t (Expression l l)) => Foldable t (Element λ l) Source # | |
(Transformation t, Functor t (Expression l l), Functor t (Expression l l), Functor t (Expression l l)) => Functor t (Element λ l) Source # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (Expression l l), Traversable t (Expression l l), Traversable t (Expression l l)) => Traversable t (Element λ l) Source # | |
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f')) => Foldable t (Element λ l f') Source # | |
(Transformation t, At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f')) => Functor t (Element λ l f') Source # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f')) => Traversable t (Element λ l f') Source # | |
Apply (Element λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST (<*>) :: forall (p :: k -> Type) (q :: k -> Type). Element λ l f' (p ~> q) -> Element λ l f' p -> Element λ l f' q # liftA2 :: (forall (a :: k). p a -> q a -> r a) -> Element λ l f' p -> Element λ l f' q -> Element λ l f' r # liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> Element λ l f' p -> Element λ l f' q -> Element λ l f' r -> Element λ l f' s # | |
Foldable (Element λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Functor (Element λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Traversable (Element λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
(Typeable λ, Typeable l, Typeable f, Typeable f', Data (f (Expression l l f' f'))) => Data (Element λ l f' f) Source # | |
Defined in Language.Oberon.AST gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Element λ l f' f -> c (Element λ l f' f) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Element λ l f' f) # toConstr :: Element λ l f' f -> Constr # dataTypeOf :: Element λ l f' f -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Element λ l f' f)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Element λ l f' f)) # gmapT :: (forall b. Data b => b -> b) -> Element λ l f' f -> Element λ l f' f # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Element λ l f' f -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Element λ l f' f -> r # gmapQ :: (forall d. Data d => d -> u) -> Element λ l f' f -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Element λ l f' f -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Element λ l f' f -> m (Element λ l f' f) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Element λ l f' f -> m (Element λ l f' f) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Element λ l f' f -> m (Element λ l f' f) # | |
Show (f (Expression l l f' f')) => Show (Element λ l f' f) Source # | |
Eq (f (Expression l l f' f')) => Eq (Element λ l f' f) Source # | |
Pretty (Expression l l Identity Identity) => Pretty (Element λ l Identity Identity) Source # | |
type Atts (Inherited ConstantFold) (Element λ l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized ConstantFold) (Element l l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder |
Instances
Data l => Data (IdentDef l) Source # | |
Defined in Language.Oberon.AST gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> IdentDef l -> c (IdentDef l) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (IdentDef l) # toConstr :: IdentDef l -> Constr # dataTypeOf :: IdentDef l -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (IdentDef l)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (IdentDef l)) # gmapT :: (forall b. Data b => b -> b) -> IdentDef l -> IdentDef l # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> IdentDef l -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> IdentDef l -> r # gmapQ :: (forall d. Data d => d -> u) -> IdentDef l -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> IdentDef l -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> IdentDef l -> m (IdentDef l) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> IdentDef l -> m (IdentDef l) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> IdentDef l -> m (IdentDef l) # | |
Show (IdentDef l) Source # | |
Eq (IdentDef l) Source # | |
Ord (IdentDef l) Source # | |
Pretty (IdentDef l) Source # | |
Defined in Language.Oberon.Pretty |
Instances
Data l => Data (QualIdent l) Source # | |
Defined in Language.Oberon.AST gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> QualIdent l -> c (QualIdent l) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (QualIdent l) # toConstr :: QualIdent l -> Constr # dataTypeOf :: QualIdent l -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (QualIdent l)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (QualIdent l)) # gmapT :: (forall b. Data b => b -> b) -> QualIdent l -> QualIdent l # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> QualIdent l -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> QualIdent l -> r # gmapQ :: (forall d. Data d => d -> u) -> QualIdent l -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> QualIdent l -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> QualIdent l -> m (QualIdent l) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> QualIdent l -> m (QualIdent l) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> QualIdent l -> m (QualIdent l) # | |
Show (QualIdent l) Source # | |
Eq (QualIdent l) Source # | |
Ord (QualIdent l) Source # | |
Defined in Language.Oberon.AST | |
Pretty (QualIdent l) Source # | |
Defined in Language.Oberon.Pretty |
data WithAlternative λ l f' f Source #
WithAlternative (QualIdent l) (QualIdent l) (f (StatementSequence l l f' f')) |
Instances
data AccessMode Source #
Instances
isNamedVar :: Nameable l => Ident -> Maybe (Designator Language l f f) -> Bool Source #
Relational operators
Instances
Data RelOp Source # | |
Defined in Language.Oberon.Abstract gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> RelOp -> c RelOp # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c RelOp # dataTypeOf :: RelOp -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c RelOp) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c RelOp) # gmapT :: (forall b. Data b => b -> b) -> RelOp -> RelOp # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> RelOp -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> RelOp -> r # gmapQ :: (forall d. Data d => d -> u) -> RelOp -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> RelOp -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> RelOp -> m RelOp # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> RelOp -> m RelOp # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> RelOp -> m RelOp # | |
Show RelOp Source # | |
Eq RelOp Source # | |
Pretty RelOp Source # | |
Defined in Language.Oberon.Pretty |