| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Language.Oberon.AST
Description
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 Value λ l (f' :: Type -> Type) (f :: Type -> Type)
- data Module λ l (f' :: Type -> Type) (f :: Type -> Type) = Module Ident [Import l] (f (Block l l f' f'))
- data Type λ l (f' :: Type -> Type) (f :: Type -> Type)
- = 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 Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- = 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 Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- = 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')))
- type Ident = Text
- data Block λ l (f' :: Type -> Type) (f :: Type -> Type) = Block (ZipList (f (Declaration l l f' f'))) (Maybe (f (StatementSequence l l f' f')))
- data Designator λ l (f' :: Type -> Type) (f :: Type -> Type)
- = 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 Element λ l (f' :: Type -> Type) (f :: Type -> Type)
- = Element (f (Expression l l f' f'))
- | Range (f (Expression l l f' f')) (f (Expression l l f' f'))
- data AccessMode
- data Language = Language
- data Declaration λ l (f' :: Type -> Type) (f :: Type -> Type)
- = 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 FieldList λ l (f' :: Type -> Type) (f :: Type -> Type) = FieldList (IdentList l) (f (Type l l f' f'))
- data ProcedureHeading λ l (f' :: Type -> Type) (f :: Type -> Type)
- = 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' :: Type -> Type) (f :: Type -> Type) = FormalParameters (ZipList (f (FPSection l l f' f'))) (Maybe (ReturnType l))
- data FPSection λ l (f' :: Type -> Type) (f :: Type -> Type) = FPSection Bool [Ident] (f (Type l l f' f'))
- newtype StatementSequence λ l (f' :: Type -> Type) (f :: Type -> Type) = StatementSequence (ZipList (f (Statement l l f' f')))
- data Case λ l (f' :: Type -> Type) (f :: Type -> Type) = Case (f (CaseLabels l l f' f')) (ZipList (f (CaseLabels l l f' f'))) (f (StatementSequence l l f' f'))
- data CaseLabels λ l (f' :: Type -> Type) (f :: Type -> Type)
- = SingleLabel (f (ConstExpression l l f' f'))
- | LabelRange (f (ConstExpression l l f' f')) (f (ConstExpression l l f' f'))
- data ConditionalBranch λ l (f' :: Type -> Type) (f :: Type -> Type) = ConditionalBranch (f (Expression l l f' f')) (f (StatementSequence l l f' f'))
- type Import l = (Maybe Ident, Ident)
- data IdentDef l = IdentDef Ident AccessMode
- data QualIdent l
- data WithAlternative λ l (f' :: Type -> Type) (f :: Type -> Type) = WithAlternative (QualIdent l) (QualIdent l) (f (StatementSequence l l f' f'))
- isNamedVar :: forall l (f :: Type -> Type). Nameable l => Ident -> Maybe (Designator Language l f f) -> Bool
- data RelOp
- = Equal
- | Unequal
- | Less
- | LessOrEqual
- | Greater
- | GreaterOrEqual
- | In
Documentation
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 Methods (<*>) :: forall (p :: Type -> Type) (q :: Type -> Type). Value λ l f' (p ~> q) -> Value λ l f' p -> Value λ l f' q liftA2 :: (forall a. p a -> q a -> r a) -> Value λ l f' p -> Value λ l f' q -> Value λ l f' r liftA3 :: (forall a. 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 # | |
| 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 Methods 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) Source # | |
Defined in Language.Oberon.ConstantFolder | |
| type Atts (Synthesized ConstantFold) (Value l l) Source # | |
Defined in Language.Oberon.ConstantFolder | |
data Module λ l (f' :: Type -> Type) (f :: Type -> Type) Source #
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) | |
Defined in Language.Oberon.ConstantFolder Methods (<*>) :: forall (p :: Type -> Type) (q :: Type -> Type). Module l l f' (p ~> q) -> Module l l f' p -> Module l l f' q liftA2 :: (forall a. p a -> q a -> r a) -> Module l l f' p -> Module l l f' q -> Module l l f' r liftA3 :: (forall a. 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) | |
Defined in Language.Oberon.TypeChecker Methods (<*>) :: forall (p :: Type -> Type) (q :: Type -> Type). Module l l f' (p ~> q) -> Module l l f' p -> Module l l f' q liftA2 :: (forall a. p a -> q a -> r a) -> Module l l f' p -> Module l l f' q -> Module l l f' r liftA3 :: (forall a. 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 # | |
| 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) ~ SynCFMod' l (Block l l)) => Synthesizer (Auto ConstantFold) (Module l l) Source # | |
Defined in Language.Oberon.ConstantFolder Methods synthesis :: forall (sem :: Type -> Type). Auto ConstantFold -> Origin (Auto ConstantFold) (Module l l sem sem) -> Atts (Inherited (Auto ConstantFold)) (Module l l) -> Module l l sem (Synthesized (Auto ConstantFold)) -> Atts (Synthesized (Auto ConstantFold)) (Module l l) # | |
| (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 Methods 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) Source # | |
Defined in Language.Oberon.ConstantFolder | |
| type Atts (Synthesized ConstantFold) (Module l l) Source # | |
Defined in Language.Oberon.ConstantFolder | |
data Type λ l (f' :: Type -> Type) (f :: Type -> Type) Source #
Constructors
| 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 Methods (<*>) :: forall (p :: Type -> Type) (q :: Type -> Type). Type λ l f' (p ~> q) -> Type λ l f' p -> Type λ l f' q liftA2 :: (forall a. p a -> q a -> r a) -> Type λ l f' p -> Type λ l f' q -> Type λ l f' r liftA3 :: (forall a. 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 # | |
| 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 Methods 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) Source # | |
Defined in Language.Oberon.ConstantFolder | |
| type Atts (Synthesized ConstantFold) (Type l l) Source # | |
Defined in Language.Oberon.ConstantFolder | |
data Expression λ l (f' :: Type -> Type) (f :: Type -> Type) Source #
Constructors
| 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 Statement λ l (f' :: Type -> Type) (f :: Type -> Type) Source #
Constructors
| 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 Block λ l (f' :: Type -> Type) (f :: Type -> Type) Source #
Constructors
| 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) ~ SynCFMod' l (Declaration l l)) => SynthesizedField "moduleEnv" (Map k (Maybe v)) (Auto ConstantFold) (Block l l) Source # | |
Defined in Language.Oberon.ConstantFolder Methods synthesizedField :: forall (sem :: Type -> Type). Proxy "moduleEnv" -> Auto ConstantFold -> Origin (Auto ConstantFold) (Block l l sem sem) -> Atts (Inherited (Auto ConstantFold)) (Block l l) -> 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 Methods (<*>) :: forall (p :: Type -> Type) (q :: Type -> Type). Block λ l f' (p ~> q) -> Block λ l f' p -> Block λ l f' q liftA2 :: (forall a. p a -> q a -> r a) -> Block λ l f' p -> Block λ l f' q -> Block λ l f' r liftA3 :: (forall a. 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 # | |
| 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) ~ SynCFMod' l (Declaration l l), Atts (Inherited (Auto ConstantFold)) (StatementSequence l l) ~ InhCF l, Atts (Inherited (Auto ConstantFold)) (Declaration l l) ~ InhCF l) => Bequether (Auto ConstantFold) (Block l l) Source # | |
Defined in Language.Oberon.ConstantFolder Methods bequest :: forall (sem :: Type -> Type). Auto ConstantFold -> Origin (Auto ConstantFold) (Block l l sem sem) -> Atts (Inherited (Auto ConstantFold)) (Block l l) -> 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 Methods 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) Source # | |
Defined in Language.Oberon.ConstantFolder | |
| type Atts (Synthesized ConstantFold) (Block l l) Source # | |
Defined in Language.Oberon.ConstantFolder | |
data Designator λ l (f' :: Type -> Type) (f :: Type -> Type) Source #
Constructors
| 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) Source # | |
Defined in Language.Oberon.ConstantFolder Methods synthesizedField :: forall (sem :: Type -> Type). Proxy "designatorValue" -> Auto ConstantFold -> Origin (Auto ConstantFold) (Designator l l sem sem) -> Atts (Inherited (Auto ConstantFold)) (Designator l l) -> 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 # | |
| (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 Methods (<$>) :: 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 # | |
| (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 Methods (<$>) :: 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 Methods traverse :: forall m0 (f0 :: Type -> Type). Codomain t ~ Compose m0 f0 => t -> Designator λ l f' (Domain t) -> m0 (Designator λ l f' f0) # | |
| Apply (Designator λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods (<*>) :: forall (p :: Type -> Type) (q :: Type -> Type). Designator λ l f' (p ~> q) -> Designator λ l f' p -> Designator λ l f' q liftA2 :: (forall a. p a -> q a -> r a) -> Designator λ l f' p -> Designator λ l f' q -> Designator λ l f' r liftA3 :: (forall a. 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 Methods foldMap :: Monoid m => (forall a. p a -> m) -> Designator λ l f' p -> m | |
| Functor (Designator λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods (<$>) :: (forall a. p a -> q a) -> Designator λ l f' p -> Designator λ l f' q coerce :: forall (p :: Type -> Type) (q :: Type -> Type). (forall a. Coercible (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 Methods traverse :: Applicative m => (forall a. p a -> m (q a)) -> Designator λ l f' p -> m (Designator λ l f' q) sequence :: forall m (p :: Type -> 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 Methods 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 Methods 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 Methods (==) :: 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 Methods pretty :: Designator λ l Identity Identity -> Doc ann # prettyList :: [Designator λ l Identity Identity] -> Doc ann # | |
| type Atts (Inherited ConstantFold) (Designator λ l) Source # | |
Defined in Language.Oberon.ConstantFolder | |
| type Atts (Synthesized ConstantFold) (Designator l l) Source # | |
Defined in Language.Oberon.ConstantFolder | |
data Element λ l (f' :: Type -> Type) (f :: Type -> Type) Source #
Constructors
| 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 Methods (<*>) :: forall (p :: Type -> Type) (q :: Type -> Type). Element λ l f' (p ~> q) -> Element λ l f' p -> Element λ l f' q liftA2 :: (forall a. p a -> q a -> r a) -> Element λ l f' p -> Element λ l f' q -> Element λ l f' r liftA3 :: (forall a. 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 # | |
| 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 Methods 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) Source # | |
Defined in Language.Oberon.ConstantFolder | |
| type Atts (Synthesized ConstantFold) (Element l l) Source # | |
Defined in Language.Oberon.ConstantFolder | |
data AccessMode Source #
Constructors
| Exported | |
| ReadOnly | |
| PrivateOnly |
Instances
| Data AccessMode Source # | |
Defined in Language.Oberon.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> AccessMode -> c AccessMode # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c AccessMode # toConstr :: AccessMode -> Constr # dataTypeOf :: AccessMode -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c AccessMode) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AccessMode) # gmapT :: (forall b. Data b => b -> b) -> AccessMode -> AccessMode # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> AccessMode -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> AccessMode -> r # gmapQ :: (forall d. Data d => d -> u) -> AccessMode -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> AccessMode -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> AccessMode -> m AccessMode # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> AccessMode -> m AccessMode # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> AccessMode -> m AccessMode # | |
| Show AccessMode Source # | |
Defined in Language.Oberon.AST Methods showsPrec :: Int -> AccessMode -> ShowS # show :: AccessMode -> String # showList :: [AccessMode] -> ShowS # | |
| Eq AccessMode Source # | |
Defined in Language.Oberon.AST | |
| Ord AccessMode Source # | |
Defined in Language.Oberon.AST Methods compare :: AccessMode -> AccessMode -> Ordering # (<) :: AccessMode -> AccessMode -> Bool # (<=) :: AccessMode -> AccessMode -> Bool # (>) :: AccessMode -> AccessMode -> Bool # (>=) :: AccessMode -> AccessMode -> Bool # max :: AccessMode -> AccessMode -> AccessMode # min :: AccessMode -> AccessMode -> AccessMode # | |
Data type representing the Oberon language, both versions of it.
Constructors
| Language |
Instances
data Declaration λ l (f' :: Type -> Type) (f :: Type -> Type) Source #
Constructors
| 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
| (Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (ConstExpression l l), Foldable t (Type l l), Foldable t (Type l l), Foldable t (ProcedureHeading l l), Foldable t (Block l l), Foldable t (FormalParameters l l)) => Foldable t (Declaration λ l) Source # | |
| (Transformation t, Functor t (ConstExpression l l), Functor t (Type l l), Functor t (Type l l), Functor t (ProcedureHeading l l), Functor t (Block l l), Functor t (FormalParameters l l)) => Functor t (Declaration λ l) Source # | |
Defined in Language.Oberon.AST Methods (<$>) :: t -> Declaration λ l (Domain t) (Domain t) -> Declaration λ l (Codomain t) (Codomain t) # | |
| (Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (ConstExpression l l), Traversable t (Type l l), Traversable t (Type l l), Traversable t (ProcedureHeading l l), Traversable t (Block l l), Traversable t (FormalParameters l l)) => Traversable t (Declaration λ l) Source # | |
Defined in Language.Oberon.AST | |
| (Nameable l, k ~ QualIdent l, v ~ Value l l Placed Placed, Ord k, Atts (Synthesized (Auto ConstantFold)) (ConstExpression l l) ~ SynCFExp l l) => SynthesizedField "moduleEnv" (Map k (Maybe v)) (Auto ConstantFold) (Declaration l l) Source # | |
Defined in Language.Oberon.ConstantFolder Methods synthesizedField :: forall (sem :: Type -> Type). Proxy "moduleEnv" -> Auto ConstantFold -> Origin (Auto ConstantFold) (Declaration l l sem sem) -> Atts (Inherited (Auto ConstantFold)) (Declaration l l) -> Declaration l l sem (Synthesized (Auto ConstantFold)) -> Map k (Maybe v) # | |
| (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 (Type l l f' f'), At t (ProcedureHeading l l f' f'), At t (Block l l f' f'), At t (FormalParameters l l f' f')) => Foldable t (Declaration λ l f') Source # | |
| (Transformation t, At t (ConstExpression l l f' f'), At t (Type l l f' f'), At t (Type l l f' f'), At t (ProcedureHeading l l f' f'), At t (Block l l f' f'), At t (FormalParameters l l f' f')) => Functor t (Declaration λ l f') Source # | |
Defined in Language.Oberon.AST Methods (<$>) :: t -> Declaration λ l f' (Domain t) -> Declaration λ l f' (Codomain t) # | |
| (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 (Type l l f' f'), At t (ProcedureHeading l l f' f'), At t (Block l l f' f'), At t (FormalParameters l l f' f')) => Traversable t (Declaration λ l f') Source # | |
Defined in Language.Oberon.AST Methods traverse :: forall m0 (f0 :: Type -> Type). Codomain t ~ Compose m0 f0 => t -> Declaration λ l f' (Domain t) -> m0 (Declaration λ l f' f0) # | |
| Apply (Declaration λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods (<*>) :: forall (p :: Type -> Type) (q :: Type -> Type). Declaration λ l f' (p ~> q) -> Declaration λ l f' p -> Declaration λ l f' q liftA2 :: (forall a. p a -> q a -> r a) -> Declaration λ l f' p -> Declaration λ l f' q -> Declaration λ l f' r liftA3 :: (forall a. p a -> q a -> r a -> s a) -> Declaration λ l f' p -> Declaration λ l f' q -> Declaration λ l f' r -> Declaration λ l f' s | |
| Foldable (Declaration λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods foldMap :: Monoid m => (forall a. p a -> m) -> Declaration λ l f' p -> m | |
| Functor (Declaration λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods (<$>) :: (forall a. p a -> q a) -> Declaration λ l f' p -> Declaration λ l f' q coerce :: forall (p :: Type -> Type) (q :: Type -> Type). (forall a. Coercible (p a) (q a)) => Declaration λ l f' p -> Declaration λ l f' q | |
| Traversable (Declaration λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods traverse :: Applicative m => (forall a. p a -> m (q a)) -> Declaration λ l f' p -> m (Declaration λ l f' q) sequence :: forall m (p :: Type -> Type). Applicative m => Declaration λ l f' (Compose m p) -> m (Declaration λ l f' p) | |
| (Typeable λ, Typeable l, Typeable f, Typeable f', Data (f (Type l l f' f')), Data (f (ConstExpression l l f' f')), Data (f (FormalParameters l l f' f')), Data (f (ProcedureHeading l l f' f')), Data (f (Block l l f' f')), Data (IdentDef l)) => Data (Declaration λ l f' f) Source # | |
Defined in Language.Oberon.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Declaration λ l f' f -> c (Declaration λ l f' f) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Declaration λ l f' f) # toConstr :: Declaration λ l f' f -> Constr # dataTypeOf :: Declaration λ l f' f -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Declaration λ l f' f)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Declaration λ l f' f)) # gmapT :: (forall b. Data b => b -> b) -> Declaration λ l f' f -> Declaration λ l f' f # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Declaration λ l f' f -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Declaration λ l f' f -> r # gmapQ :: (forall d. Data d => d -> u) -> Declaration λ l f' f -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Declaration λ l f' f -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Declaration λ l f' f -> m (Declaration λ l f' f) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Declaration λ l f' f -> m (Declaration λ l f' f) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Declaration λ l f' f -> m (Declaration λ l f' f) # | |
| (Show (f (Type l l f' f')), Show (f (ConstExpression l l f' f')), Show (f (FormalParameters l l f' f')), Show (f (ProcedureHeading l l f' f')), Show (f (Block l l f' f')), Show (IdentDef l)) => Show (Declaration λ l f' f) Source # | |
Defined in Language.Oberon.AST Methods showsPrec :: Int -> Declaration λ l f' f -> ShowS # show :: Declaration λ l f' f -> String # showList :: [Declaration λ l f' f] -> ShowS # | |
| (Nameable l, Pretty (IdentDef l), Pretty (Type l l Identity Identity), Pretty (Declaration l l Identity Identity), Pretty (Expression l l Identity Identity), Pretty (FormalParameters l l Identity Identity), Pretty (ProcedureHeading l l Identity Identity), Pretty (Block l l Identity Identity)) => Pretty (Declaration λ l Identity Identity) Source # | |
Defined in Language.Oberon.Pretty Methods pretty :: Declaration λ l Identity Identity -> Doc ann # prettyList :: [Declaration λ l Identity Identity] -> Doc ann # | |
| type Atts (Inherited ConstantFold) (Declaration λ l) Source # | |
Defined in Language.Oberon.ConstantFolder | |
| type Atts (Synthesized ConstantFold) (Declaration l l) Source # | |
Defined in Language.Oberon.ConstantFolder | |
data FieldList λ l (f' :: Type -> Type) (f :: Type -> Type) 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 Methods (<*>) :: forall (p :: Type -> Type) (q :: Type -> Type). FieldList λ l f' (p ~> q) -> FieldList λ l f' p -> FieldList λ l f' q liftA2 :: (forall a. p a -> q a -> r a) -> FieldList λ l f' p -> FieldList λ l f' q -> FieldList λ l f' r liftA3 :: (forall a. 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 # | |
| 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 Methods 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) Source # | |
Defined in Language.Oberon.ConstantFolder | |
| type Atts (Synthesized ConstantFold) (FieldList l l) Source # | |
Defined in Language.Oberon.ConstantFolder | |
data ProcedureHeading λ l (f' :: Type -> Type) (f :: Type -> Type) Source #
Constructors
| 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
| (Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (FormalParameters l l), Foldable t (FormalParameters l l)) => Foldable t (ProcedureHeading λ l) Source # | |
| (Transformation t, Functor t (FormalParameters l l), Functor t (FormalParameters l l)) => Functor t (ProcedureHeading λ l) Source # | |
Defined in Language.Oberon.AST Methods (<$>) :: t -> ProcedureHeading λ l (Domain t) (Domain t) -> ProcedureHeading λ l (Codomain t) (Codomain t) # | |
| (Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (FormalParameters l l), Traversable t (FormalParameters l l)) => Traversable t (ProcedureHeading λ l) Source # | |
Defined in Language.Oberon.AST | |
| (Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (FormalParameters l l f' f'), At t (FormalParameters l l f' f')) => Foldable t (ProcedureHeading λ l f') Source # | |
| (Transformation t, At t (FormalParameters l l f' f'), At t (FormalParameters l l f' f')) => Functor t (ProcedureHeading λ l f') Source # | |
Defined in Language.Oberon.AST Methods (<$>) :: t -> ProcedureHeading λ l f' (Domain t) -> ProcedureHeading λ l f' (Codomain t) # | |
| (Transformation t, Codomain t ~ Compose m f, Applicative m, At t (FormalParameters l l f' f'), At t (FormalParameters l l f' f')) => Traversable t (ProcedureHeading λ l f') Source # | |
Defined in Language.Oberon.AST Methods traverse :: forall m0 (f0 :: Type -> Type). Codomain t ~ Compose m0 f0 => t -> ProcedureHeading λ l f' (Domain t) -> m0 (ProcedureHeading λ l f' f0) # | |
| Apply (ProcedureHeading λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods (<*>) :: forall (p :: Type -> Type) (q :: Type -> Type). ProcedureHeading λ l f' (p ~> q) -> ProcedureHeading λ l f' p -> ProcedureHeading λ l f' q liftA2 :: (forall a. p a -> q a -> r a) -> ProcedureHeading λ l f' p -> ProcedureHeading λ l f' q -> ProcedureHeading λ l f' r liftA3 :: (forall a. p a -> q a -> r a -> s a) -> ProcedureHeading λ l f' p -> ProcedureHeading λ l f' q -> ProcedureHeading λ l f' r -> ProcedureHeading λ l f' s | |
| Foldable (ProcedureHeading λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods foldMap :: Monoid m => (forall a. p a -> m) -> ProcedureHeading λ l f' p -> m | |
| Functor (ProcedureHeading λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods (<$>) :: (forall a. p a -> q a) -> ProcedureHeading λ l f' p -> ProcedureHeading λ l f' q coerce :: forall (p :: Type -> Type) (q :: Type -> Type). (forall a. Coercible (p a) (q a)) => ProcedureHeading λ l f' p -> ProcedureHeading λ l f' q | |
| Traversable (ProcedureHeading λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods traverse :: Applicative m => (forall a. p a -> m (q a)) -> ProcedureHeading λ l f' p -> m (ProcedureHeading λ l f' q) sequence :: forall m (p :: Type -> Type). Applicative m => ProcedureHeading λ l f' (Compose m p) -> m (ProcedureHeading λ l f' p) | |
| (Typeable λ, Typeable l, Typeable f, Typeable f', Data (IdentDef l), Data (f (FormalParameters l l f' f'))) => Data (ProcedureHeading λ l f' f) Source # | |
Defined in Language.Oberon.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ProcedureHeading λ l f' f -> c (ProcedureHeading λ l f' f) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (ProcedureHeading λ l f' f) # toConstr :: ProcedureHeading λ l f' f -> Constr # dataTypeOf :: ProcedureHeading λ l f' f -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (ProcedureHeading λ l f' f)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (ProcedureHeading λ l f' f)) # gmapT :: (forall b. Data b => b -> b) -> ProcedureHeading λ l f' f -> ProcedureHeading λ l f' f # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ProcedureHeading λ l f' f -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ProcedureHeading λ l f' f -> r # gmapQ :: (forall d. Data d => d -> u) -> ProcedureHeading λ l f' f -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> ProcedureHeading λ l f' f -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> ProcedureHeading λ l f' f -> m (ProcedureHeading λ l f' f) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ProcedureHeading λ l f' f -> m (ProcedureHeading λ l f' f) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ProcedureHeading λ l f' f -> m (ProcedureHeading λ l f' f) # | |
| (Show (IdentDef l), Show (f (FormalParameters l l f' f'))) => Show (ProcedureHeading λ l f' f) Source # | |
Defined in Language.Oberon.AST Methods showsPrec :: Int -> ProcedureHeading λ l f' f -> ShowS # show :: ProcedureHeading λ l f' f -> String # showList :: [ProcedureHeading λ l f' f] -> ShowS # | |
| (Pretty (IdentDef l), Pretty (FormalParameters l l Identity Identity), Pretty (Type l l Identity Identity)) => Pretty (ProcedureHeading λ l Identity Identity) Source # | |
Defined in Language.Oberon.Pretty Methods pretty :: ProcedureHeading λ l Identity Identity -> Doc ann # prettyList :: [ProcedureHeading λ l Identity Identity] -> Doc ann # | |
| type Atts (Inherited ConstantFold) (ProcedureHeading λ l) Source # | |
Defined in Language.Oberon.ConstantFolder | |
| type Atts (Synthesized ConstantFold) (ProcedureHeading l l) Source # | |
Defined in Language.Oberon.ConstantFolder | |
data FormalParameters λ l (f' :: Type -> Type) (f :: Type -> Type) Source #
Constructors
| FormalParameters (ZipList (f (FPSection l l f' f'))) (Maybe (ReturnType l)) |
Instances
| (Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (FPSection l l)) => Foldable t (FormalParameters λ l) Source # | |
| (Transformation t, Functor t (FPSection l l)) => Functor t (FormalParameters λ l) Source # | |
Defined in Language.Oberon.AST Methods (<$>) :: t -> FormalParameters λ l (Domain t) (Domain t) -> FormalParameters λ l (Codomain t) (Codomain t) # | |
| (Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (FPSection l l)) => Traversable t (FormalParameters λ l) Source # | |
Defined in Language.Oberon.AST | |
| (Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (FPSection l l f' f')) => Foldable t (FormalParameters λ l f') Source # | |
| (Transformation t, At t (FPSection l l f' f')) => Functor t (FormalParameters λ l f') Source # | |
Defined in Language.Oberon.AST Methods (<$>) :: t -> FormalParameters λ l f' (Domain t) -> FormalParameters λ l f' (Codomain t) # | |
| (Transformation t, Codomain t ~ Compose m f, Applicative m, At t (FPSection l l f' f')) => Traversable t (FormalParameters λ l f') Source # | |
Defined in Language.Oberon.AST Methods traverse :: forall m0 (f0 :: Type -> Type). Codomain t ~ Compose m0 f0 => t -> FormalParameters λ l f' (Domain t) -> m0 (FormalParameters λ l f' f0) # | |
| Apply (FormalParameters λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods (<*>) :: forall (p :: Type -> Type) (q :: Type -> Type). FormalParameters λ l f' (p ~> q) -> FormalParameters λ l f' p -> FormalParameters λ l f' q liftA2 :: (forall a. p a -> q a -> r a) -> FormalParameters λ l f' p -> FormalParameters λ l f' q -> FormalParameters λ l f' r liftA3 :: (forall a. p a -> q a -> r a -> s a) -> FormalParameters λ l f' p -> FormalParameters λ l f' q -> FormalParameters λ l f' r -> FormalParameters λ l f' s | |
| Foldable (FormalParameters λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods foldMap :: Monoid m => (forall a. p a -> m) -> FormalParameters λ l f' p -> m | |
| Functor (FormalParameters λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods (<$>) :: (forall a. p a -> q a) -> FormalParameters λ l f' p -> FormalParameters λ l f' q coerce :: forall (p :: Type -> Type) (q :: Type -> Type). (forall a. Coercible (p a) (q a)) => FormalParameters λ l f' p -> FormalParameters λ l f' q | |
| Traversable (FormalParameters λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods traverse :: Applicative m => (forall a. p a -> m (q a)) -> FormalParameters λ l f' p -> m (FormalParameters λ l f' q) sequence :: forall m (p :: Type -> Type). Applicative m => FormalParameters λ l f' (Compose m p) -> m (FormalParameters λ l f' p) | |
| (Typeable λ, Typeable l, Typeable f, Typeable f', Data (ReturnType l), Data (f (FPSection l l f' f')), Data (f (Expression l l f' f'))) => Data (FormalParameters λ l f' f) Source # | |
Defined in Language.Oberon.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> FormalParameters λ l f' f -> c (FormalParameters λ l f' f) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (FormalParameters λ l f' f) # toConstr :: FormalParameters λ l f' f -> Constr # dataTypeOf :: FormalParameters λ l f' f -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (FormalParameters λ l f' f)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (FormalParameters λ l f' f)) # gmapT :: (forall b. Data b => b -> b) -> FormalParameters λ l f' f -> FormalParameters λ l f' f # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> FormalParameters λ l f' f -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> FormalParameters λ l f' f -> r # gmapQ :: (forall d. Data d => d -> u) -> FormalParameters λ l f' f -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> FormalParameters λ l f' f -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> FormalParameters λ l f' f -> m (FormalParameters λ l f' f) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> FormalParameters λ l f' f -> m (FormalParameters λ l f' f) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> FormalParameters λ l f' f -> m (FormalParameters λ l f' f) # | |
| (Show (f (FPSection l l f' f')), Show (ReturnType l), Show (f (Expression l l f' f'))) => Show (FormalParameters λ l f' f) Source # | |
Defined in Language.Oberon.AST Methods showsPrec :: Int -> FormalParameters λ l f' f -> ShowS # show :: FormalParameters λ l f' f -> String # showList :: [FormalParameters λ l f' f] -> ShowS # | |
| (Pretty (FPSection l l Identity Identity), Pretty (ReturnType l)) => Pretty (FormalParameters λ l Identity Identity) Source # | |
Defined in Language.Oberon.Pretty Methods pretty :: FormalParameters λ l Identity Identity -> Doc ann # prettyList :: [FormalParameters λ l Identity Identity] -> Doc ann # | |
| type Atts (Inherited ConstantFold) (FormalParameters λ l) Source # | |
Defined in Language.Oberon.ConstantFolder | |
| type Atts (Synthesized ConstantFold) (FormalParameters l l) Source # | |
Defined in Language.Oberon.ConstantFolder | |
data FPSection λ l (f' :: Type -> Type) (f :: Type -> Type) 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 Methods (<*>) :: forall (p :: Type -> Type) (q :: Type -> Type). FPSection λ l f' (p ~> q) -> FPSection λ l f' p -> FPSection λ l f' q liftA2 :: (forall a. p a -> q a -> r a) -> FPSection λ l f' p -> FPSection λ l f' q -> FPSection λ l f' r liftA3 :: (forall a. 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 # | |
| 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 Methods 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) Source # | |
Defined in Language.Oberon.ConstantFolder | |
| type Atts (Synthesized ConstantFold) (FPSection l l) Source # | |
Defined in Language.Oberon.ConstantFolder | |
newtype StatementSequence λ l (f' :: Type -> Type) (f :: Type -> Type) Source #
Constructors
| StatementSequence (ZipList (f (Statement l l f' f'))) |
Instances
| (Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (Statement l l)) => Foldable t (StatementSequence λ l) Source # | |
| (Transformation t, Functor t (Statement l l)) => Functor t (StatementSequence λ l) Source # | |
Defined in Language.Oberon.AST Methods (<$>) :: t -> StatementSequence λ l (Domain t) (Domain t) -> StatementSequence λ l (Codomain t) (Codomain t) # | |
| (Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (Statement l l)) => Traversable t (StatementSequence λ l) Source # | |
Defined in Language.Oberon.AST | |
| (Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (Statement l l f' f')) => Foldable t (StatementSequence λ l f') Source # | |
| (Transformation t, At t (Statement l l f' f')) => Functor t (StatementSequence λ l f') Source # | |
Defined in Language.Oberon.AST Methods (<$>) :: t -> StatementSequence λ l f' (Domain t) -> StatementSequence λ l f' (Codomain t) # | |
| (Transformation t, Codomain t ~ Compose m f, Applicative m, At t (Statement l l f' f')) => Traversable t (StatementSequence λ l f') Source # | |
Defined in Language.Oberon.AST Methods traverse :: forall m0 (f0 :: Type -> Type). Codomain t ~ Compose m0 f0 => t -> StatementSequence λ l f' (Domain t) -> m0 (StatementSequence λ l f' f0) # | |
| Apply (StatementSequence λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods (<*>) :: forall (p :: Type -> Type) (q :: Type -> Type). StatementSequence λ l f' (p ~> q) -> StatementSequence λ l f' p -> StatementSequence λ l f' q liftA2 :: (forall a. p a -> q a -> r a) -> StatementSequence λ l f' p -> StatementSequence λ l f' q -> StatementSequence λ l f' r liftA3 :: (forall a. p a -> q a -> r a -> s a) -> StatementSequence λ l f' p -> StatementSequence λ l f' q -> StatementSequence λ l f' r -> StatementSequence λ l f' s | |
| Foldable (StatementSequence λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods foldMap :: Monoid m => (forall a. p a -> m) -> StatementSequence λ l f' p -> m | |
| Functor (StatementSequence λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods (<$>) :: (forall a. p a -> q a) -> StatementSequence λ l f' p -> StatementSequence λ l f' q coerce :: forall (p :: Type -> Type) (q :: Type -> Type). (forall a. Coercible (p a) (q a)) => StatementSequence λ l f' p -> StatementSequence λ l f' q | |
| Traversable (StatementSequence λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods traverse :: Applicative m => (forall a. p a -> m (q a)) -> StatementSequence λ l f' p -> m (StatementSequence λ l f' q) sequence :: forall m (p :: Type -> Type). Applicative m => StatementSequence λ l f' (Compose m p) -> m (StatementSequence λ l f' p) | |
| (Typeable λ, Typeable l, Typeable f, Typeable f', Data (f (Statement l l f' f'))) => Data (StatementSequence λ l f' f) Source # | |
Defined in Language.Oberon.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> StatementSequence λ l f' f -> c (StatementSequence λ l f' f) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (StatementSequence λ l f' f) # toConstr :: StatementSequence λ l f' f -> Constr # dataTypeOf :: StatementSequence λ l f' f -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (StatementSequence λ l f' f)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (StatementSequence λ l f' f)) # gmapT :: (forall b. Data b => b -> b) -> StatementSequence λ l f' f -> StatementSequence λ l f' f # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> StatementSequence λ l f' f -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> StatementSequence λ l f' f -> r # gmapQ :: (forall d. Data d => d -> u) -> StatementSequence λ l f' f -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> StatementSequence λ l f' f -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> StatementSequence λ l f' f -> m (StatementSequence λ l f' f) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> StatementSequence λ l f' f -> m (StatementSequence λ l f' f) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> StatementSequence λ l f' f -> m (StatementSequence λ l f' f) # | |
| Show (f (Statement l l f' f')) => Show (StatementSequence λ l f' f) Source # | |
Defined in Language.Oberon.AST Methods showsPrec :: Int -> StatementSequence λ l f' f -> ShowS # show :: StatementSequence λ l f' f -> String # showList :: [StatementSequence λ l f' f] -> ShowS # | |
| Pretty (Statement l l Identity Identity) => Pretty (StatementSequence λ l Identity Identity) Source # | |
Defined in Language.Oberon.Pretty Methods pretty :: StatementSequence λ l Identity Identity -> Doc ann # prettyList :: [StatementSequence λ l Identity Identity] -> Doc ann # | |
| type Atts (Inherited ConstantFold) (StatementSequence λ l) Source # | |
Defined in Language.Oberon.ConstantFolder | |
| type Atts (Synthesized ConstantFold) (StatementSequence l l) Source # | |
Defined in Language.Oberon.ConstantFolder | |
data Case λ l (f' :: Type -> Type) (f :: Type -> Type) Source #
Constructors
| 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 Methods (<*>) :: forall (p :: Type -> Type) (q :: Type -> Type). Case λ l f' (p ~> q) -> Case λ l f' p -> Case λ l f' q liftA2 :: (forall a. p a -> q a -> r a) -> Case λ l f' p -> Case λ l f' q -> Case λ l f' r liftA3 :: (forall a. 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 # | |
| 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 Methods 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) Source # | |
Defined in Language.Oberon.ConstantFolder | |
| type Atts (Synthesized ConstantFold) (Case l l) Source # | |
Defined in Language.Oberon.ConstantFolder | |
data CaseLabels λ l (f' :: Type -> Type) (f :: Type -> Type) Source #
Constructors
| 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 # | |
| (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 Methods (<$>) :: 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 # | |
| (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 Methods (<$>) :: 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 Methods traverse :: forall m0 (f0 :: Type -> Type). Codomain t ~ Compose m0 f0 => t -> CaseLabels λ l f' (Domain t) -> m0 (CaseLabels λ l f' f0) # | |
| Apply (CaseLabels λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods (<*>) :: forall (p :: Type -> Type) (q :: Type -> Type). CaseLabels λ l f' (p ~> q) -> CaseLabels λ l f' p -> CaseLabels λ l f' q liftA2 :: (forall a. p a -> q a -> r a) -> CaseLabels λ l f' p -> CaseLabels λ l f' q -> CaseLabels λ l f' r liftA3 :: (forall a. 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 Methods foldMap :: Monoid m => (forall a. p a -> m) -> CaseLabels λ l f' p -> m | |
| Functor (CaseLabels λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods (<$>) :: (forall a. p a -> q a) -> CaseLabels λ l f' p -> CaseLabels λ l f' q coerce :: forall (p :: Type -> Type) (q :: Type -> Type). (forall a. Coercible (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 Methods traverse :: Applicative m => (forall a. p a -> m (q a)) -> CaseLabels λ l f' p -> m (CaseLabels λ l f' q) sequence :: forall m (p :: Type -> 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 Methods 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 Methods 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 Methods pretty :: CaseLabels λ l Identity Identity -> Doc ann # prettyList :: [CaseLabels λ l Identity Identity] -> Doc ann # | |
| type Atts (Inherited ConstantFold) (CaseLabels λ l) Source # | |
Defined in Language.Oberon.ConstantFolder | |
| type Atts (Synthesized ConstantFold) (CaseLabels l l) Source # | |
Defined in Language.Oberon.ConstantFolder | |
data ConditionalBranch λ l (f' :: Type -> Type) (f :: Type -> Type) Source #
Constructors
| ConditionalBranch (f (Expression l l f' f')) (f (StatementSequence l l f' f')) |
Instances
| (Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (Expression l l), Foldable t (StatementSequence l l)) => Foldable t (ConditionalBranch λ l) Source # | |
| (Transformation t, Functor t (Expression l l), Functor t (StatementSequence l l)) => Functor t (ConditionalBranch λ l) Source # | |
Defined in Language.Oberon.AST Methods (<$>) :: t -> ConditionalBranch λ l (Domain t) (Domain t) -> ConditionalBranch λ l (Codomain t) (Codomain t) # | |
| (Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (Expression l l), Traversable t (StatementSequence l l)) => Traversable t (ConditionalBranch λ l) Source # | |
Defined in Language.Oberon.AST | |
| (Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (Expression l l f' f'), At t (StatementSequence l l f' f')) => Foldable t (ConditionalBranch λ l f') Source # | |
| (Transformation t, At t (Expression l l f' f'), At t (StatementSequence l l f' f')) => Functor t (ConditionalBranch λ l f') Source # | |
Defined in Language.Oberon.AST Methods (<$>) :: t -> ConditionalBranch λ l f' (Domain t) -> ConditionalBranch λ l f' (Codomain t) # | |
| (Transformation t, Codomain t ~ Compose m f, Applicative m, At t (Expression l l f' f'), At t (StatementSequence l l f' f')) => Traversable t (ConditionalBranch λ l f') Source # | |
Defined in Language.Oberon.AST Methods traverse :: forall m0 (f0 :: Type -> Type). Codomain t ~ Compose m0 f0 => t -> ConditionalBranch λ l f' (Domain t) -> m0 (ConditionalBranch λ l f' f0) # | |
| Apply (ConditionalBranch λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods (<*>) :: forall (p :: Type -> Type) (q :: Type -> Type). ConditionalBranch λ l f' (p ~> q) -> ConditionalBranch λ l f' p -> ConditionalBranch λ l f' q liftA2 :: (forall a. p a -> q a -> r a) -> ConditionalBranch λ l f' p -> ConditionalBranch λ l f' q -> ConditionalBranch λ l f' r liftA3 :: (forall a. p a -> q a -> r a -> s a) -> ConditionalBranch λ l f' p -> ConditionalBranch λ l f' q -> ConditionalBranch λ l f' r -> ConditionalBranch λ l f' s | |
| Foldable (ConditionalBranch λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods foldMap :: Monoid m => (forall a. p a -> m) -> ConditionalBranch λ l f' p -> m | |
| Functor (ConditionalBranch λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods (<$>) :: (forall a. p a -> q a) -> ConditionalBranch λ l f' p -> ConditionalBranch λ l f' q coerce :: forall (p :: Type -> Type) (q :: Type -> Type). (forall a. Coercible (p a) (q a)) => ConditionalBranch λ l f' p -> ConditionalBranch λ l f' q | |
| Traversable (ConditionalBranch λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods traverse :: Applicative m => (forall a. p a -> m (q a)) -> ConditionalBranch λ l f' p -> m (ConditionalBranch λ l f' q) sequence :: forall m (p :: Type -> Type). Applicative m => ConditionalBranch λ l f' (Compose m p) -> m (ConditionalBranch λ l f' p) | |
| (Typeable λ, Typeable l, Typeable f, Typeable f', Data (f (Expression l l f' f')), Data (f (StatementSequence l l f' f'))) => Data (ConditionalBranch λ l f' f) Source # | |
Defined in Language.Oberon.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ConditionalBranch λ l f' f -> c (ConditionalBranch λ l f' f) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (ConditionalBranch λ l f' f) # toConstr :: ConditionalBranch λ l f' f -> Constr # dataTypeOf :: ConditionalBranch λ l f' f -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (ConditionalBranch λ l f' f)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (ConditionalBranch λ l f' f)) # gmapT :: (forall b. Data b => b -> b) -> ConditionalBranch λ l f' f -> ConditionalBranch λ l f' f # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ConditionalBranch λ l f' f -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ConditionalBranch λ l f' f -> r # gmapQ :: (forall d. Data d => d -> u) -> ConditionalBranch λ l f' f -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> ConditionalBranch λ l f' f -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> ConditionalBranch λ l f' f -> m (ConditionalBranch λ l f' f) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ConditionalBranch λ l f' f -> m (ConditionalBranch λ l f' f) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ConditionalBranch λ l f' f -> m (ConditionalBranch λ l f' f) # | |
| (Show (f (Expression l l f' f')), Show (f (StatementSequence l l f' f'))) => Show (ConditionalBranch λ l f' f) Source # | |
Defined in Language.Oberon.AST Methods showsPrec :: Int -> ConditionalBranch λ l f' f -> ShowS # show :: ConditionalBranch λ l f' f -> String # showList :: [ConditionalBranch λ l f' f] -> ShowS # | |
| (Pretty (Expression l l Identity Identity), Pretty (StatementSequence l l Identity Identity)) => Pretty (ConditionalBranch λ l Identity Identity) Source # | |
Defined in Language.Oberon.Pretty Methods pretty :: ConditionalBranch λ l Identity Identity -> Doc ann # prettyList :: [ConditionalBranch λ l Identity Identity] -> Doc ann # | |
| type Atts (Inherited ConstantFold) (ConditionalBranch λ l) Source # | |
Defined in Language.Oberon.ConstantFolder | |
| type Atts (Synthesized ConstantFold) (ConditionalBranch l l) Source # | |
Defined in Language.Oberon.ConstantFolder | |
Constructors
| IdentDef Ident AccessMode |
Instances
| Data l => Data (IdentDef l) Source # | |
Defined in Language.Oberon.AST Methods 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 # | |
Defined in Language.Oberon.AST | |
| Pretty (IdentDef l) Source # | |
Defined in Language.Oberon.Pretty | |
Constructors
| QualIdent Ident Ident | |
| NonQualIdent Ident |
Instances
| Data l => Data (QualIdent l) Source # | |
Defined in Language.Oberon.AST Methods 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' :: Type -> Type) (f :: Type -> Type) Source #
Constructors
| WithAlternative (QualIdent l) (QualIdent l) (f (StatementSequence l l f' f')) |
Instances
| (Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (StatementSequence l l)) => Foldable t (WithAlternative λ l) Source # | |
| (Transformation t, Functor t (StatementSequence l l)) => Functor t (WithAlternative λ l) Source # | |
Defined in Language.Oberon.AST Methods (<$>) :: t -> WithAlternative λ l (Domain t) (Domain t) -> WithAlternative λ l (Codomain t) (Codomain t) # | |
| (Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (StatementSequence l l)) => Traversable t (WithAlternative λ l) Source # | |
Defined in Language.Oberon.AST | |
| (Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (StatementSequence l l f' f')) => Foldable t (WithAlternative λ l f') Source # | |
| (Transformation t, At t (StatementSequence l l f' f')) => Functor t (WithAlternative λ l f') Source # | |
Defined in Language.Oberon.AST Methods (<$>) :: t -> WithAlternative λ l f' (Domain t) -> WithAlternative λ l f' (Codomain t) # | |
| (Transformation t, Codomain t ~ Compose m f, Applicative m, At t (StatementSequence l l f' f')) => Traversable t (WithAlternative λ l f') Source # | |
Defined in Language.Oberon.AST Methods traverse :: forall m0 (f0 :: Type -> Type). Codomain t ~ Compose m0 f0 => t -> WithAlternative λ l f' (Domain t) -> m0 (WithAlternative λ l f' f0) # | |
| Apply (WithAlternative λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods (<*>) :: forall (p :: Type -> Type) (q :: Type -> Type). WithAlternative λ l f' (p ~> q) -> WithAlternative λ l f' p -> WithAlternative λ l f' q liftA2 :: (forall a. p a -> q a -> r a) -> WithAlternative λ l f' p -> WithAlternative λ l f' q -> WithAlternative λ l f' r liftA3 :: (forall a. p a -> q a -> r a -> s a) -> WithAlternative λ l f' p -> WithAlternative λ l f' q -> WithAlternative λ l f' r -> WithAlternative λ l f' s | |
| Foldable (WithAlternative λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods foldMap :: Monoid m => (forall a. p a -> m) -> WithAlternative λ l f' p -> m | |
| Functor (WithAlternative λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods (<$>) :: (forall a. p a -> q a) -> WithAlternative λ l f' p -> WithAlternative λ l f' q coerce :: forall (p :: Type -> Type) (q :: Type -> Type). (forall a. Coercible (p a) (q a)) => WithAlternative λ l f' p -> WithAlternative λ l f' q | |
| Traversable (WithAlternative λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods traverse :: Applicative m => (forall a. p a -> m (q a)) -> WithAlternative λ l f' p -> m (WithAlternative λ l f' q) sequence :: forall m (p :: Type -> Type). Applicative m => WithAlternative λ l f' (Compose m p) -> m (WithAlternative λ l f' p) | |
| (Typeable λ, Typeable l, Typeable f, Typeable f', Data (QualIdent l), Data (f (Designator l l f' f')), Data (f (StatementSequence l l f' f'))) => Data (WithAlternative λ l f' f) Source # | |
Defined in Language.Oberon.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> WithAlternative λ l f' f -> c (WithAlternative λ l f' f) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (WithAlternative λ l f' f) # toConstr :: WithAlternative λ l f' f -> Constr # dataTypeOf :: WithAlternative λ l f' f -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (WithAlternative λ l f' f)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (WithAlternative λ l f' f)) # gmapT :: (forall b. Data b => b -> b) -> WithAlternative λ l f' f -> WithAlternative λ l f' f # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> WithAlternative λ l f' f -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> WithAlternative λ l f' f -> r # gmapQ :: (forall d. Data d => d -> u) -> WithAlternative λ l f' f -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> WithAlternative λ l f' f -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> WithAlternative λ l f' f -> m (WithAlternative λ l f' f) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> WithAlternative λ l f' f -> m (WithAlternative λ l f' f) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> WithAlternative λ l f' f -> m (WithAlternative λ l f' f) # | |
| (Show (QualIdent l), Show (f (StatementSequence l l f' f'))) => Show (WithAlternative λ l f' f) Source # | |
Defined in Language.Oberon.AST Methods showsPrec :: Int -> WithAlternative λ l f' f -> ShowS # show :: WithAlternative λ l f' f -> String # showList :: [WithAlternative λ l f' f] -> ShowS # | |
| (Pretty (QualIdent l), Pretty (StatementSequence l l Identity Identity)) => Pretty (WithAlternative λ l Identity Identity) Source # | |
Defined in Language.Oberon.Pretty Methods pretty :: WithAlternative λ l Identity Identity -> Doc ann # prettyList :: [WithAlternative λ l Identity Identity] -> Doc ann # | |
| type Atts (Inherited ConstantFold) (WithAlternative λ l) Source # | |
Defined in Language.Oberon.ConstantFolder | |
| type Atts (Synthesized ConstantFold) (WithAlternative l l) Source # | |
Defined in Language.Oberon.ConstantFolder | |
isNamedVar :: forall l (f :: Type -> Type). Nameable l => Ident -> Maybe (Designator Language l f f) -> Bool Source #
Relational operators
Constructors
| Equal | |
| Unequal | |
| Less | |
| LessOrEqual | |
| Greater | |
| GreaterOrEqual | |
| In |
Instances
| Data RelOp Source # | |
Defined in Language.Oberon.Abstract Methods 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 | |