Safe Haskell | None |
---|---|
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 ConditionalBranch λ l f' f = ConditionalBranch (f (Expression 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 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 WithAlternative λ l f' f = WithAlternative (QualIdent l) (QualIdent l) (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')))
- newtype StatementSequence λ l f' f = StatementSequence (ZipList (f (Statement l l f' f')))
- data Block λ l f' f = Block (ZipList (f (Declaration l l f' f'))) (Maybe (f (StatementSequence l l f' f')))
- data FPSection λ l f' f = FPSection Bool [Ident] (f (Type l l f' f'))
- data FormalParameters λ l f' f = FormalParameters (ZipList (f (FPSection l l f' f'))) (Maybe (ReturnType l))
- 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 FieldList λ l f' f = FieldList (IdentList l) (f (Type 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')))
- 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' :: * -> *) (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'))
- 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 AccessMode
- data IdentDef l = IdentDef Ident AccessMode
- data QualIdent l
- 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')))
- type Import l = (Maybe Ident, Ident)
- type Ident = Text
- data Module λ l f' f = Module Ident [Import l] (f (Block l l f' f'))
- data Language = Language
- isNamedVar :: Nameable l => Ident -> Maybe (Designator Language l f f) -> Bool
- data RelOp
- = Equal
- | Unequal
- | Less
- | LessOrEqual
- | Greater
- | GreaterOrEqual
- | In
Documentation
data ConditionalBranch λ l f' f Source #
ConditionalBranch (f (Expression l l f' f')) (f (StatementSequence l l f' f')) |
Instances
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
Case (f (CaseLabels l l f' f')) (ZipList (f (CaseLabels l l f' f'))) (f (StatementSequence l l f' f')) |
Instances
data WithAlternative λ l f' f Source #
WithAlternative (QualIdent l) (QualIdent l) (f (StatementSequence l l f' f')) |
Instances
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
newtype StatementSequence λ l f' f Source #
StatementSequence (ZipList (f (Statement l l f' f'))) |
Instances
Block (ZipList (f (Declaration l l f' f'))) (Maybe (f (StatementSequence l l f' f'))) |
Instances
data FPSection λ l f' f Source #
Instances
data FormalParameters λ l f' f Source #
FormalParameters (ZipList (f (FPSection l l f' f'))) (Maybe (ReturnType l)) |
Instances
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 FieldList λ l f' f Source #
Instances
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, 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 ~ (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, 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, 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 ~ (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, 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 # | |
(Functor (Auto ConstantFold) (Type l l), At (Auto ConstantFold) (Type l l (Codomain (Auto ConstantFold)) (Codomain (Auto ConstantFold)))) => Functor (Auto ConstantFold) (Type l l) Source # | |
Defined in Language.Oberon.ConstantFolder (<$>) :: Auto ConstantFold -> Domain (Auto ConstantFold) (Type l l (Domain (Auto ConstantFold)) (Domain (Auto ConstantFold))) -> Codomain (Auto ConstantFold) (Type l l (Codomain (Auto ConstantFold)) (Codomain (Auto ConstantFold))) # | |
Functor (Type λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Foldable (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 | |
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 # | |
Attribution (Auto ConstantFold) (Type l l) Sem Placed => At (Auto ConstantFold) (Type l l (Semantics (Auto ConstantFold)) (Semantics (Auto ConstantFold))) Source # | |
Defined in Language.Oberon.ConstantFolder ($) :: Auto ConstantFold -> Domain (Auto ConstantFold) (Type l l (Semantics (Auto ConstantFold)) (Semantics (Auto ConstantFold))) -> Codomain (Auto ConstantFold) (Type l l (Semantics (Auto ConstantFold)) (Semantics (Auto ConstantFold))) # | |
(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 (Auto ConstantFold)) (Type l l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized (Auto ConstantFold)) (Type l l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder |
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
data Value λ l (f' :: * -> *) (f :: * -> *) Source #
Instances
Transformation t => Functor t (Value λ l) Source # | |
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m) => Foldable t (Value λ l) Source # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m) => Traversable t (Value λ l) Source # | |
Transformation t => Functor t (Value λ l f') Source # | |
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m) => Foldable t (Value λ l f') Source # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m) => Traversable t (Value λ l f') Source # | |
Functor (Auto ConstantFold) (Value l l) Source # | |
Defined in Language.Oberon.ConstantFolder (<$>) :: Auto ConstantFold -> Domain (Auto ConstantFold) (Value l l (Domain (Auto ConstantFold)) (Domain (Auto ConstantFold))) -> Codomain (Auto ConstantFold) (Value l l (Codomain (Auto ConstantFold)) (Codomain (Auto ConstantFold))) # | |
Functor (Value λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Foldable (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 | |
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 # | |
Eq (Value λ l f' f) Source # | |
(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 # | |
Pretty (Value Language l Identity Identity) Source # | |
type Atts (Inherited (Auto ConstantFold)) (Value l l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized (Auto ConstantFold)) (Value l l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder |
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
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 AccessMode Source #
Instances
Instances
Eq (IdentDef l) Source # | |
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) # | |
Ord (IdentDef l) Source # | |
Show (IdentDef l) Source # | |
Pretty (IdentDef l) Source # | |
Defined in Language.Oberon.Pretty |
Instances
Eq (QualIdent l) Source # | |
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) # | |
Ord (QualIdent l) Source # | |
Defined in Language.Oberon.AST | |
Show (QualIdent l) Source # | |
Pretty (QualIdent l) Source # | |
Defined in Language.Oberon.Pretty |
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
Instances
(Transformation t, Functor t (Block l l)) => Functor t (Module λ l) Source # | |
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (Block l l)) => Foldable 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, At t (Block l l f' f')) => Functor t (Module λ l f') 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, Codomain t ~ Compose m f, Applicative m, At t (Block l l f' f')) => Traversable t (Module λ l f') Source # | |
(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) # | |
Functor (Module λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Foldable (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 | |
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 # | |
Attribution (Auto ConstantFold) (Module l l) Sem Placed => At (Auto ConstantFold) (Module l l (Semantics (Auto ConstantFold)) (Semantics (Auto ConstantFold))) Source # | |
Defined in Language.Oberon.ConstantFolder ($) :: Auto ConstantFold -> Domain (Auto ConstantFold) (Module l l (Semantics (Auto ConstantFold)) (Semantics (Auto ConstantFold))) -> Codomain (Auto ConstantFold) (Module l l (Semantics (Auto ConstantFold)) (Semantics (Auto ConstantFold))) # | |
(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 (Auto ConstantFold)) (Module l l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized (Auto ConstantFold)) (Module l l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder |
Data type representing the Oberon language, both versions of it.
Instances
isNamedVar :: Nameable l => Ident -> Maybe (Designator Language l f f) -> Bool Source #
Relational operators
Instances
Eq RelOp Source # | |
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 # | |
Pretty RelOp Source # | |
Defined in Language.Oberon.Pretty |