Safe Haskell | Safe-Inferred |
---|---|
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 ConditionalBranch λ l f' f = ConditionalBranch (f (Expression l l f' f')) (f (StatementSequence l l f' f'))
- data CaseLabels λ l f' f
- = SingleLabel (f (ConstExpression l l f' f'))
- | LabelRange (f (ConstExpression l l f' f')) (f (ConstExpression l l f' f'))
- data Case λ l f' f = Case (f (CaseLabels l l f' f')) (ZipList (f (CaseLabels l l f' f'))) (f (StatementSequence l l f' f'))
- data WithAlternative λ l f' f = WithAlternative (QualIdent l) (QualIdent l) (f (StatementSequence l l f' f'))
- data Statement λ l f' f
- = EmptyStatement
- | Assignment (f (Designator l l f' f')) (f (Expression l l f' f'))
- | ProcedureCall (f (Designator l l f' f')) (Maybe (ZipList (f (Expression l l f' f'))))
- | If (f (ConditionalBranch l l f' f')) (ZipList (f (ConditionalBranch l l f' f'))) (Maybe (f (StatementSequence l l f' f')))
- | CaseStatement (f (Expression l l f' f')) (ZipList (f (Case l l f' f'))) (Maybe (f (StatementSequence l l f' f')))
- | While (f (Expression l l f' f')) (f (StatementSequence l l f' f'))
- | Repeat (f (StatementSequence l l f' f')) (f (Expression l l f' f'))
- | For Ident (f (Expression l l f' f')) (f (Expression l l f' f')) (Maybe (f (Expression l l f' f'))) (f (StatementSequence l l f' f'))
- | Loop (f (StatementSequence l l f' f'))
- | With (f (WithAlternative l l f' f')) (ZipList (f (WithAlternative l l f' f'))) (Maybe (f (StatementSequence l l f' f')))
- | Exit
- | Return (Maybe (f (Expression l l f' f')))
- newtype StatementSequence λ l f' f = StatementSequence (ZipList (f (Statement l l f' f')))
- data Block λ l f' f = Block (ZipList (f (Declaration l l f' f'))) (Maybe (f (StatementSequence l l f' f')))
- data FPSection λ l f' f = FPSection Bool [Ident] (f (Type l l f' f'))
- data FormalParameters λ l f' f = FormalParameters (ZipList (f (FPSection l l f' f'))) (Maybe (ReturnType l))
- data ProcedureHeading λ l f' f
- = ProcedureHeading Bool (IdentDef l) (Maybe (f (FormalParameters l l f' f')))
- | TypeBoundHeading Bool Ident Ident Bool (IdentDef l) (Maybe (f (FormalParameters l l f' f')))
- data FieldList λ l f' f = FieldList (IdentList l) (f (Type l l f' f'))
- data Type λ l f' f
- = TypeReference (QualIdent l)
- | ArrayType (ZipList (f (ConstExpression l l f' f'))) (f (Type l l f' f'))
- | RecordType (Maybe (BaseType l)) (ZipList (f (FieldList l l f' f')))
- | PointerType (f (Type l l f' f'))
- | ProcedureType (Maybe (f (FormalParameters l l f' f')))
- data Designator λ l f' f
- = Variable (QualIdent l)
- | Field (f (Designator l l f' f')) Ident
- | Index (f (Designator l l f' f')) (f (Expression l l f' f')) (ZipList (f (Expression l l f' f')))
- | TypeGuard (f (Designator l l f' f')) (QualIdent l)
- | Dereference (f (Designator l l f' f'))
- data Value λ l (f' :: * -> *) (f :: * -> *)
- data Element λ l f' f
- = Element (f (Expression l l f' f'))
- | Range (f (Expression l l f' f')) (f (Expression l l f' f'))
- data Expression λ l f' f
- = Relation RelOp (f (Expression l l f' f')) (f (Expression l l f' f'))
- | IsA (f (Expression l l f' f')) (QualIdent l)
- | Positive (f (Expression l l f' f'))
- | Negative (f (Expression l l f' f'))
- | Add (f (Expression l l f' f')) (f (Expression l l f' f'))
- | Subtract (f (Expression l l f' f')) (f (Expression l l f' f'))
- | Or (f (Expression l l f' f')) (f (Expression l l f' f'))
- | Multiply (f (Expression l l f' f')) (f (Expression l l f' f'))
- | Divide (f (Expression l l f' f')) (f (Expression l l f' f'))
- | IntegerDivide (f (Expression l l f' f')) (f (Expression l l f' f'))
- | Modulo (f (Expression l l f' f')) (f (Expression l l f' f'))
- | And (f (Expression l l f' f')) (f (Expression l l f' f'))
- | Set (ZipList (f (Element l l f' f')))
- | Read (f (Designator l l f' f'))
- | FunctionCall (f (Designator l l f' f')) (ZipList (f (Expression l l f' f')))
- | Not (f (Expression l l f' f'))
- | Literal (f (Value l l f' f'))
- data AccessMode
- data IdentDef l = IdentDef Ident AccessMode
- data QualIdent l
- data Declaration λ l f' f
- = ConstantDeclaration (IdentDef l) (f (ConstExpression l l f' f'))
- | TypeDeclaration (IdentDef l) (f (Type l l f' f'))
- | VariableDeclaration (IdentList l) (f (Type l l f' f'))
- | ProcedureDeclaration (f (ProcedureHeading l l f' f')) (f (Block l l f' f'))
- | ForwardDeclaration (IdentDef l) (Maybe (f (FormalParameters l l f' f')))
- type Import l = (Maybe Ident, Ident)
- type Ident = Text
- data Module λ l f' f = Module Ident [Import l] (f (Block l l f' f'))
- data Language = Language
- isNamedVar :: Nameable l => Ident -> Maybe (Designator Language l f f) -> Bool
- data RelOp
- = Equal
- | Unequal
- | Less
- | LessOrEqual
- | Greater
- | GreaterOrEqual
- | In
Documentation
data ConditionalBranch λ l f' f Source #
Constructors
ConditionalBranch (f (Expression l l f' f')) (f (StatementSequence l l f' f')) |
Instances
data CaseLabels λ l f' f 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 # | |
Defined in Language.Oberon.AST | |
(Transformation t, Functor t (ConstExpression l l), Functor t (ConstExpression l l), Functor t (ConstExpression l l)) => Functor t (CaseLabels λ l) Source # | |
Defined in Language.Oberon.AST 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 Methods traverse :: forall m (f :: Type -> Type). Codomain t ~ Compose m f => t -> CaseLabels λ l (Domain t) (Domain t) -> m (CaseLabels λ l f f) # | |
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (ConstExpression l l f' f'), At t (ConstExpression l l f' f'), At t (ConstExpression l l f' f')) => Foldable t (CaseLabels λ l f') Source # | |
Defined in Language.Oberon.AST | |
(Transformation t, At t (ConstExpression l l f' f'), At t (ConstExpression l l f' f'), At t (ConstExpression l l f' f')) => Functor t (CaseLabels λ l f') Source # | |
Defined in Language.Oberon.AST 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 m (f :: Type -> Type). Codomain t ~ Compose m f => t -> CaseLabels λ l f' (Domain t) -> m (CaseLabels λ l f' f) # | |
Apply (CaseLabels λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods (<*>) :: forall (p :: k -> Type) (q :: k -> Type). CaseLabels λ l f' (p ~> q) -> CaseLabels λ l f' p -> CaseLabels λ l f' q # liftA2 :: (forall (a :: k). p a -> q a -> r a) -> CaseLabels λ l f' p -> CaseLabels λ l f' q -> CaseLabels λ l f' r # liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> CaseLabels λ l f' p -> CaseLabels λ l f' q -> CaseLabels λ l f' r -> CaseLabels λ l f' s # | |
Foldable (CaseLabels λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods foldMap :: Monoid m => (forall (a :: k). p a -> m) -> CaseLabels λ l f' p -> m # | |
Functor (CaseLabels λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods (<$>) :: (forall (a :: k). p a -> q a) -> CaseLabels λ l f' p -> CaseLabels λ l f' q # | |
Traversable (CaseLabels λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods traverse :: Applicative m => (forall (a :: k). p a -> m (q a)) -> CaseLabels λ l f' p -> m (CaseLabels λ l f' q) # sequence :: forall m (p :: k -> Type). Applicative m => CaseLabels λ l f' (Compose m p) -> m (CaseLabels λ l f' p) # | |
(Typeable λ, Typeable l, Typeable f, Typeable f', Data (f (ConstExpression l l f' f'))) => Data (CaseLabels λ l f' f) Source # | |
Defined in Language.Oberon.AST 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 _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized ConstantFold) (CaseLabels l l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder |
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 LiftedRep) -> Type) Source # | |
Defined in Language.Oberon.AST Methods (<*>) :: forall (p :: k -> Type) (q :: k -> Type). Case λ l f' (p ~> q) -> Case λ l f' p -> Case λ l f' q # liftA2 :: (forall (a :: k). p a -> q a -> r a) -> Case λ l f' p -> Case λ l f' q -> Case λ l f' r # liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> Case λ l f' p -> Case λ l f' q -> Case λ l f' r -> Case λ l f' s # | |
Foldable (Case λ l f' :: (Type -> TYPE LiftedRep) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Functor (Case λ l f' :: (Type -> TYPE LiftedRep) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Traversable (Case λ l f' :: (Type -> TYPE LiftedRep) -> 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 _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized ConstantFold) (Case l l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder |
data WithAlternative λ l f' f Source #
Constructors
WithAlternative (QualIdent l) (QualIdent l) (f (StatementSequence l l f' f')) |
Instances
data Statement λ l f' f 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
newtype StatementSequence λ l f' f Source #
Constructors
StatementSequence (ZipList (f (Statement l l f' f'))) |
Instances
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 Sem Sem) ~ SynCFMod' l (Declaration l l)) => SynthesizedField "moduleEnv" (Map k (Maybe v)) (Auto ConstantFold) (Block l l) Sem Placed Source # | |
Defined in Language.Oberon.ConstantFolder Methods synthesizedField :: forall (sem :: Type -> TYPE LiftedRep). sem ~ Semantics (Auto ConstantFold) => Proxy "moduleEnv" -> Auto ConstantFold -> Placed (Block l l Sem Sem) -> Atts (Inherited (Auto ConstantFold)) (Block l l sem sem) -> Block l l sem (Synthesized (Auto ConstantFold)) -> Map k (Maybe v) # | |
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (Declaration l l f' f'), At t (StatementSequence l l f' f')) => Foldable t (Block λ l f') Source # | |
(Transformation t, At t (Declaration l l f' f'), At t (StatementSequence l l f' f')) => Functor t (Block λ l f') Source # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, At t (Declaration l l f' f'), At t (StatementSequence l l f' f')) => Traversable t (Block λ l f') Source # | |
Apply (Block λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods (<*>) :: forall (p :: k -> Type) (q :: k -> Type). Block λ l f' (p ~> q) -> Block λ l f' p -> Block λ l f' q # liftA2 :: (forall (a :: k). p a -> q a -> r a) -> Block λ l f' p -> Block λ l f' q -> Block λ l f' r # liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> Block λ l f' p -> Block λ l f' q -> Block λ l f' r -> Block λ l f' s # | |
Foldable (Block λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Functor (Block λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Traversable (Block λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
(Nameable l, Ord (QualIdent l), Atts (Synthesized (Auto ConstantFold)) (Declaration l l Sem Sem) ~ SynCFMod' l (Declaration l l), Atts (Inherited (Auto ConstantFold)) (StatementSequence l l Sem Sem) ~ InhCF l, Atts (Inherited (Auto ConstantFold)) (Declaration l l Sem Sem) ~ InhCF l) => Bequether (Auto ConstantFold) (Block l l) Sem Placed Source # | |
Defined in Language.Oberon.ConstantFolder Methods bequest :: forall (sem :: Type -> TYPE LiftedRep). sem ~ Semantics (Auto ConstantFold) => Auto ConstantFold -> Placed (Block l l Sem Sem) -> Atts (Inherited (Auto ConstantFold)) (Block l l sem sem) -> Block l l sem (Synthesized (Auto ConstantFold)) -> Block l l sem (Inherited (Auto ConstantFold)) # | |
(Typeable λ, Typeable l, Typeable f, Typeable f', Data (f (Declaration l l f' f')), Data (f (Designator l l f' f')), Data (f (Expression l l f' f')), Data (f (StatementSequence l l f' f'))) => Data (Block λ l f' f) Source # | |
Defined in Language.Oberon.AST 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 _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized ConstantFold) (Block l l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder |
data FPSection λ l f' f Source #
Instances
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (Type l l)) => Foldable t (FPSection λ l) Source # | |
(Transformation t, Functor t (Type l l)) => Functor t (FPSection λ l) Source # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (Type l l)) => Traversable t (FPSection λ l) Source # | |
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (Type l l f' f')) => Foldable t (FPSection λ l f') Source # | |
(Transformation t, At t (Type l l f' f')) => Functor t (FPSection λ l f') Source # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, At t (Type l l f' f')) => Traversable t (FPSection λ l f') Source # | |
Apply (FPSection λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods (<*>) :: forall (p :: k -> Type) (q :: k -> Type). FPSection λ l f' (p ~> q) -> FPSection λ l f' p -> FPSection λ l f' q # liftA2 :: (forall (a :: k). p a -> q a -> r a) -> FPSection λ l f' p -> FPSection λ l f' q -> FPSection λ l f' r # liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> FPSection λ l f' p -> FPSection λ l f' q -> FPSection λ l f' r -> FPSection λ l f' s # | |
Foldable (FPSection λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Functor (FPSection λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Traversable (FPSection λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
(Typeable λ, Typeable l, Typeable f, Typeable f', Data (f (Type l l f' f')), Data (f (Expression l l f' f'))) => Data (FPSection λ l f' f) Source # | |
Defined in Language.Oberon.AST 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 _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized ConstantFold) (FPSection l l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder |
data FormalParameters λ l f' f Source #
Constructors
FormalParameters (ZipList (f (FPSection l l f' f'))) (Maybe (ReturnType l)) |
Instances
data ProcedureHeading λ l f' f 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
data FieldList λ l f' f Source #
Instances
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (Type l l)) => Foldable t (FieldList λ l) Source # | |
(Transformation t, Functor t (Type l l)) => Functor t (FieldList λ l) Source # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (Type l l)) => Traversable t (FieldList λ l) Source # | |
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (Type l l f' f')) => Foldable t (FieldList λ l f') Source # | |
(Transformation t, At t (Type l l f' f')) => Functor t (FieldList λ l f') Source # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, At t (Type l l f' f')) => Traversable t (FieldList λ l f') Source # | |
Apply (FieldList λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST Methods (<*>) :: forall (p :: k -> Type) (q :: k -> Type). FieldList λ l f' (p ~> q) -> FieldList λ l f' p -> FieldList λ l f' q # liftA2 :: (forall (a :: k). p a -> q a -> r a) -> FieldList λ l f' p -> FieldList λ l f' q -> FieldList λ l f' r # liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> FieldList λ l f' p -> FieldList λ l f' q -> FieldList λ l f' r -> FieldList λ l f' s # | |
Foldable (FieldList λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Functor (FieldList λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Traversable (FieldList λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
(Typeable λ, Typeable l, Typeable f, Typeable f', Data (IdentDef l), Data (f (Type l l f' f')), Data (f (Expression l l f' f'))) => Data (FieldList λ l f' f) Source # | |
Defined in Language.Oberon.AST 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 _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized ConstantFold) (FieldList l l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder |
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 :: k -> Type0) (q :: k -> Type0). Type λ l f' (p ~> q) -> Type λ l f' p -> Type λ l f' q # liftA2 :: (forall (a :: k). p a -> q a -> r a) -> Type λ l f' p -> Type λ l f' q -> Type λ l f' r # liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> Type λ l f' p -> Type λ l f' q -> Type λ l f' r -> Type λ l f' s # | |
Foldable (Type λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Functor (Type λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Traversable (Type λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
(Typeable λ, Typeable l, Typeable f, Typeable f', Data (QualIdent l), Data (f (Type l l f' f')), Data (f (ConstExpression l l f' f')), Data (f (FormalParameters l l f' f')), Data (f (FieldList l l f' f'))) => Data (Type λ l f' f) Source # | |
Defined in Language.Oberon.AST 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 _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized ConstantFold) (Type l l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder |
data Designator λ l f' f 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) Sem Placed Source # | |
Defined in Language.Oberon.ConstantFolder Methods synthesizedField :: forall (sem :: Type -> TYPE LiftedRep). sem ~ Semantics (Auto ConstantFold) => Proxy "designatorValue" -> Auto ConstantFold -> Placed (Designator l l Sem Sem) -> Atts (Inherited (Auto ConstantFold)) (Designator l l sem sem) -> Designator l l sem (Synthesized (Auto ConstantFold)) -> Maybe (Placed v) # | |
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (Designator l l), Foldable t (Designator l l), Foldable t (Expression l l), Foldable t (Expression l l), Foldable t (Designator l l), Foldable t (Designator l l)) => Foldable t (Designator λ l) Source # | |
Defined in Language.Oberon.AST | |
(Transformation t, Functor t (Designator l l), Functor t (Designator l l), Functor t (Expression l l), Functor t (Expression l l), Functor t (Designator l l), Functor t (Designator l l)) => Functor t (Designator λ l) Source # | |
Defined in Language.Oberon.AST 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 Methods traverse :: forall m (f :: Type -> Type). Codomain t ~ Compose m f => t -> Designator λ l (Domain t) (Domain t) -> m (Designator λ l f f) # | |
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (Designator l l f' f'), At t (Designator l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Designator l l f' f'), At t (Designator l l f' f')) => Foldable t (Designator λ l f') Source # | |
Defined in Language.Oberon.AST | |
(Transformation t, At t (Designator l l f' f'), At t (Designator l l f' f'), At t (Expression l l f' f'), At t (Expression l l f' f'), At t (Designator l l f' f'), At t (Designator l l f' f')) => Functor t (Designator λ l f') Source # | |
Defined in Language.Oberon.AST 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 m (f :: Type -> Type). Codomain t ~ Compose m f => t -> Designator λ l f' (Domain t) -> m (Designator λ l f' f) # | |
Apply (Designator λ l f' :: (Type -> TYPE LiftedRep) -> Type) Source # | |
Defined in Language.Oberon.AST Methods (<*>) :: forall (p :: k -> Type) (q :: k -> Type). Designator λ l f' (p ~> q) -> Designator λ l f' p -> Designator λ l f' q # liftA2 :: (forall (a :: k). p a -> q a -> r a) -> Designator λ l f' p -> Designator λ l f' q -> Designator λ l f' r # liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> Designator λ l f' p -> Designator λ l f' q -> Designator λ l f' r -> Designator λ l f' s # | |
Foldable (Designator λ l f' :: (Type -> TYPE LiftedRep) -> Type) Source # | |
Defined in Language.Oberon.AST Methods foldMap :: Monoid m => (forall (a :: k). p a -> m) -> Designator λ l f' p -> m # | |
Functor (Designator λ l f' :: (Type -> TYPE LiftedRep) -> Type) Source # | |
Defined in Language.Oberon.AST Methods (<$>) :: (forall (a :: k). p a -> q a) -> Designator λ l f' p -> Designator λ l f' q # | |
Traversable (Designator λ l f' :: (Type -> TYPE LiftedRep) -> Type) Source # | |
Defined in Language.Oberon.AST Methods traverse :: Applicative m => (forall (a :: k). p a -> m (q a)) -> Designator λ l f' p -> m (Designator λ l f' q) # sequence :: forall m (p :: k -> Type). Applicative m => Designator λ l f' (Compose m p) -> m (Designator λ l f' p) # | |
(Typeable λ, Typeable l, Typeable f, Typeable f', Data (QualIdent l), Data (f (Designator l l f' f')), Data (f (Expression l l f' f'))) => Data (Designator λ l f' f) Source # | |
Defined in Language.Oberon.AST 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 _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized ConstantFold) (Designator l l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder |
data Value λ l (f' :: * -> *) (f :: * -> *) 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 :: k -> Type) (q :: k -> Type). Value λ l f' (p ~> q) -> Value λ l f' p -> Value λ l f' q # liftA2 :: (forall (a :: k). p a -> q a -> r a) -> Value λ l f' p -> Value λ l f' q -> Value λ l f' r # liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> Value λ l f' p -> Value λ l f' q -> Value λ l f' r -> Value λ l f' s # | |
Foldable (Value λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Functor (Value λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Traversable (Value λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
(Typeable λ, Typeable l, Typeable f, Typeable f') => Data (Value λ l f' f) Source # | |
Defined in Language.Oberon.AST 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 _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized ConstantFold) (Value l l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder |
data Element λ l f' f 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 :: k -> Type) (q :: k -> Type). Element λ l f' (p ~> q) -> Element λ l f' p -> Element λ l f' q # liftA2 :: (forall (a :: k). p a -> q a -> r a) -> Element λ l f' p -> Element λ l f' q -> Element λ l f' r # liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> Element λ l f' p -> Element λ l f' q -> Element λ l f' r -> Element λ l f' s # | |
Foldable (Element λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Functor (Element λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Traversable (Element λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
(Typeable λ, Typeable l, Typeable f, Typeable f', Data (f (Expression l l f' f'))) => Data (Element λ l f' f) Source # | |
Defined in Language.Oberon.AST 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 _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized ConstantFold) (Element l l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder |
data Expression λ l f' f 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 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 # |
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 Declaration λ l f' f 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
Instances
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, Foldable t (Block l l)) => Foldable t (Module λ l) Source # | |
(Transformation t, Functor t (Block l l)) => Functor t (Module λ l) Source # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, Traversable t (Block l l)) => Traversable t (Module λ l) Source # | |
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t (Block l l f' f')) => Foldable t (Module λ l f') Source # | |
(Transformation t, At t (Block l l f' f')) => Functor t (Module λ l f') Source # | |
(Transformation t, Codomain t ~ Compose m f, Applicative m, At t (Block l l f' f')) => Traversable t (Module λ l f') Source # | |
Apply (Module l l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.ConstantFolder Methods (<*>) :: forall (p :: k -> Type) (q :: k -> Type). Module l l f' (p ~> q) -> Module l l f' p -> Module l l f' q # liftA2 :: (forall (a :: k). p a -> q a -> r a) -> Module l l f' p -> Module l l f' q -> Module l l f' r # liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> Module l l f' p -> Module l l f' q -> Module l l f' r -> Module l l f' s # | |
Apply (Module l l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.TypeChecker Methods (<*>) :: forall (p :: k -> Type) (q :: k -> Type). Module l l f' (p ~> q) -> Module l l f' p -> Module l l f' q # liftA2 :: (forall (a :: k). p a -> q a -> r a) -> Module l l f' p -> Module l l f' q -> Module l l f' r # liftA3 :: (forall (a :: k). p a -> q a -> r a -> s a) -> Module l l f' p -> Module l l f' q -> Module l l f' r -> Module l l f' s # | |
Foldable (Module λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Functor (Module λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
Traversable (Module λ l f' :: (Type -> Type) -> Type) Source # | |
Defined in Language.Oberon.AST | |
(Oberon l, Nameable l, Ord (QualIdent l), Show (QualIdent l), Atts (Synthesized (Auto ConstantFold)) (Block l l Sem Sem) ~ SynCFMod' l (Block l l)) => Synthesizer (Auto ConstantFold) (Module l l) Sem Placed Source # | |
Defined in Language.Oberon.ConstantFolder Methods synthesis :: forall (sem :: Type -> TYPE LiftedRep). sem ~ Semantics (Auto ConstantFold) => Auto ConstantFold -> Placed (Module l l Sem Sem) -> Atts (Inherited (Auto ConstantFold)) (Module l l sem sem) -> Module l l sem (Synthesized (Auto ConstantFold)) -> Atts (Synthesized (Auto ConstantFold)) (Module l l sem sem) # | |
(Typeable λ, Typeable l, Typeable f, Typeable f', Data (Import l), Data (f (Block l l f' f'))) => Data (Module λ l f' f) Source # | |
Defined in Language.Oberon.AST 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 _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder | |
type Atts (Synthesized ConstantFold) (Module l l _1 _2) Source # | |
Defined in Language.Oberon.ConstantFolder |
Data type representing the Oberon language, both versions of it.
Constructors
Language |
Instances
Data Language Source # | |
Defined in Language.Oberon.AST Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Language -> c Language # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Language # toConstr :: Language -> Constr # dataTypeOf :: Language -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Language) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Language) # gmapT :: (forall b. Data b => b -> b) -> Language -> Language # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Language -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Language -> r # gmapQ :: (forall d. Data d => d -> u) -> Language -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Language -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Language -> m Language # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Language -> m Language # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Language -> m Language # | |
CoWirthy Language Source # | |
Defined in Language.Oberon.AST Associated Types type TargetClass Language :: Type -> Constraint Source # Methods coDeclaration :: forall l' l'' (f' :: Type -> Type) (f :: Type -> Type). TargetClass Language l' => Declaration Language l'' f' f -> Declaration l' l'' f' f Source # coType :: forall l' l'' (f' :: Type -> Type) (f :: Type -> Type). TargetClass Language l' => Type Language l'' f' f -> Type l' l'' f' f Source # coStatement :: forall l' l'' (f' :: Type -> Type) (f :: Type -> Type). TargetClass Language l' => Statement Language l'' f' f -> Statement l' l'' f' f Source # coExpression :: forall l' l'' (f' :: Type -> Type) (f :: Type -> Type). TargetClass Language l' => Expression Language l'' f' f -> Expression l' l'' f' f Source # coDesignator :: forall l' l'' (f' :: Type -> Type) (f :: Type -> Type). TargetClass Language l' => Designator Language l'' f' f -> Designator l' l'' f' f Source # coValue :: forall l' l'' (f' :: Type -> Type) (f :: Type -> Type). TargetClass Language l' => Value Language l'' f' f -> Value l' l'' f' f Source # | |
Nameable Language Source # | |
Defined in Language.Oberon.AST | |
Oberon Language Source # | |
Defined in Language.Oberon.AST Associated Types type WithAlternative Language = (x :: Type -> (Type -> Type) -> (Type -> Type) -> Type) Source # Methods moduleUnit :: forall f l' (f' :: Type -> Type). Ident -> [Import Language] -> f (Block l' l' f' f') -> Module Language l' f' f Source # moduleImport :: Maybe Ident -> Ident -> Import Language Source # qualIdent :: Ident -> Ident -> QualIdent Language Source # getQualIdentNames :: QualIdent Language -> Maybe (Ident, Ident) Source # exported :: Ident -> IdentDef Language Source # forwardDeclaration :: forall l' f (f' :: Type -> Type). IdentDef l' -> Maybe (f (FormalParameters l' l' f' f')) -> Declaration Language l' f' f Source # procedureHeading :: forall l' f (f' :: Type -> Type). Bool -> IdentDef l' -> Maybe (f (FormalParameters l' l' f' f')) -> ProcedureHeading Language l' f' f Source # arrayType :: forall f l' (f' :: Type -> Type). [f (ConstExpression l' l' f' f')] -> f (Type l' l' f' f') -> Type Language l' f' f Source # recordType :: forall l' f (f' :: Type -> Type). Maybe (BaseType l') -> [f (FieldList l' l' f' f')] -> Type Language l' f' f Source # withStatement :: forall f l' (f' :: Type -> Type). f (WithAlternative l' l' f' f') -> Statement Language l' f' f Source # withAlternative :: forall l' f (f' :: Type -> Type). QualIdent l' -> QualIdent l' -> f (StatementSequence l' l' f' f') -> WithAlternative Language l' f' f Source # is :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> QualIdent l' -> Expression Language l' f' f Source # set :: forall f l' (f' :: Type -> Type). [f (Element l' l' f' f')] -> Expression Language l' f' f Source # typeGuard :: forall f l' (f' :: Type -> Type). f (Designator l' l' f' f') -> QualIdent l' -> Designator Language l' f' f Source # | |
Oberon2 Language Source # | |
Defined in Language.Oberon.AST Methods readOnly :: Ident -> IdentDef Language Source # typeBoundHeading :: forall l' f (f' :: Type -> Type). Bool -> Ident -> Ident -> Bool -> IdentDef l' -> Maybe (f (FormalParameters l' l' f' f')) -> ProcedureHeading Language l' f' f Source # forStatement :: forall f l' (f' :: Type -> Type). 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') -> Statement Language l' f' f Source # variantWithStatement :: forall f l' (f' :: Type -> Type). NonEmpty (f (WithAlternative l' l' f' f')) -> Maybe (f (StatementSequence l' l' f' f')) -> Statement Language l' f' f Source # | |
Wirthy Language Source # | |
Defined in Language.Oberon.AST Associated Types type Module Language = (m :: Type -> (Type -> Type) -> (Type -> Type) -> Type) Source # type Declaration Language = (d :: Type -> (Type -> Type) -> (Type -> Type) -> Type) Source # type Type Language = (t :: Type -> (Type -> Type) -> (Type -> Type) -> Type) Source # type Statement Language = (s :: Type -> (Type -> Type) -> (Type -> Type) -> Type) Source # type Expression Language = (e :: Type -> (Type -> Type) -> (Type -> Type) -> Type) Source # type Designator Language = (d :: Type -> (Type -> Type) -> (Type -> Type) -> Type) Source # type Value Language = (v :: Type -> (Type -> Type) -> (Type -> Type) -> Type) Source # type FieldList Language = (x :: Type -> (Type -> Type) -> (Type -> Type) -> Type) Source # type ProcedureHeading Language = (x :: Type -> (Type -> Type) -> (Type -> Type) -> Type) Source # type FormalParameters Language = (x :: Type -> (Type -> Type) -> (Type -> Type) -> Type) Source # type FPSection Language = (x :: Type -> (Type -> Type) -> (Type -> Type) -> Type) Source # type Block Language = (x :: Type -> (Type -> Type) -> (Type -> Type) -> Type) Source # type StatementSequence Language = (x :: Type -> (Type -> Type) -> (Type -> Type) -> Type) Source # type Case Language = (x :: Type -> (Type -> Type) -> (Type -> Type) -> Type) Source # type CaseLabels Language = (x :: Type -> (Type -> Type) -> (Type -> Type) -> Type) Source # type ConditionalBranch Language = (x :: Type -> (Type -> Type) -> (Type -> Type) -> Type) Source # type Element Language = (x :: Type -> (Type -> Type) -> (Type -> Type) -> Type) Source # type Import Language = (x :: Type) Source # Methods constantDeclaration :: forall l' f (f' :: Type -> Type). IdentDef l' -> f (ConstExpression l' l' f' f') -> Declaration Language l' f' f Source # typeDeclaration :: forall l' f (f' :: Type -> Type). IdentDef l' -> f (Type l' l' f' f') -> Declaration Language l' f' f Source # variableDeclaration :: forall l' f (f' :: Type -> Type). IdentList l' -> f (Type l' l' f' f') -> Declaration Language l' f' f Source # procedureDeclaration :: forall f l' (f' :: Type -> Type). f (ProcedureHeading l' l' f' f') -> f (Block l' l' f' f') -> Declaration Language l' f' f Source # formalParameters :: forall f l' (f' :: Type -> Type). [f (FPSection l' l' f' f')] -> Maybe (ReturnType l') -> FormalParameters Language l' f' f Source # fpSection :: forall f l' (f' :: Type -> Type). Bool -> [Ident] -> f (Type l' l' f' f') -> FPSection Language l' f' f Source # block :: forall f l' (f' :: Type -> Type). [f (Declaration l' l' f' f')] -> Maybe (f (StatementSequence l' l' f' f')) -> Block Language l' f' f Source # fieldList :: forall l' f (f' :: Type -> Type). NonEmpty (IdentDef l') -> f (Type l' l' f' f') -> FieldList Language l' f' f Source # pointerType :: forall f l' (f' :: Type -> Type). f (Type l' l' f' f') -> Type Language l' f' f Source # procedureType :: forall f l' (f' :: Type -> Type). Maybe (f (FormalParameters l' l' f' f')) -> Type Language l' f' f Source # typeReference :: forall l' (f' :: Type -> Type) (f :: Type -> Type). QualIdent l' -> Type Language l' f' f Source # assignment :: forall f l' (f' :: Type -> Type). f (Designator l' l' f' f') -> f (Expression l' l' f' f') -> Statement Language l' f' f Source # caseStatement :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> [f (Case l' l' f' f')] -> Maybe (f (StatementSequence l' l' f' f')) -> Statement Language l' f' f Source # emptyStatement :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Statement Language l' f' f Source # exitStatement :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Statement Language l' f' f Source # ifStatement :: forall f l' (f' :: Type -> Type). NonEmpty (f (ConditionalBranch l' l' f' f')) -> Maybe (f (StatementSequence l' l' f' f')) -> Statement Language l' f' f Source # loopStatement :: forall f l' (f' :: Type -> Type). f (StatementSequence l' l' f' f') -> Statement Language l' f' f Source # procedureCall :: forall f l' (f' :: Type -> Type). f (Designator l' l' f' f') -> Maybe [f (Expression l' l' f' f')] -> Statement Language l' f' f Source # repeatStatement :: forall f l' (f' :: Type -> Type). f (StatementSequence l' l' f' f') -> f (Expression l' l' f' f') -> Statement Language l' f' f Source # returnStatement :: forall f l' (f' :: Type -> Type). Maybe (f (Expression l' l' f' f')) -> Statement Language l' f' f Source # whileStatement :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> f (StatementSequence l' l' f' f') -> Statement Language l' f' f Source # conditionalBranch :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> f (StatementSequence l' l' f' f') -> ConditionalBranch Language l' f' f Source # caseAlternative :: forall f l' (f' :: Type -> Type). NonEmpty (f (CaseLabels l' l' f' f')) -> f (StatementSequence l' l' f' f') -> Case Language l' f' f Source # singleLabel :: forall f l' (f' :: Type -> Type). f (ConstExpression l' l' f' f') -> CaseLabels Language l' f' f Source # labelRange :: forall f l' (f' :: Type -> Type). f (ConstExpression l' l' f' f') -> f (ConstExpression l' l' f' f') -> CaseLabels Language l' f' f Source # statementSequence :: forall f l' (f' :: Type -> Type). [f (Statement l' l' f' f')] -> StatementSequence Language l' f' f Source # add :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression Language l' f' f Source # subtract :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression Language l' f' f Source # and :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression Language l' f' f Source # or :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression Language l' f' f Source # divide :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression Language l' f' f Source # integerDivide :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression Language l' f' f Source # modulo :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression Language l' f' f Source # multiply :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression Language l' f' f Source # functionCall :: forall f l' (f' :: Type -> Type). f (Designator l' l' f' f') -> [f (Expression l' l' f' f')] -> Expression Language l' f' f Source # literal :: forall f l' (f' :: Type -> Type). f (Value l' l' f' f') -> Expression Language l' f' f Source # negative :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> Expression Language l' f' f Source # positive :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> Expression Language l' f' f Source # not :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> Expression Language l' f' f Source # read :: forall f l' (f' :: Type -> Type). f (Designator l' l' f' f') -> Expression Language l' f' f Source # relation :: forall f l' (f' :: Type -> Type). RelOp -> f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression Language l' f' f Source # element :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> Element Language l' f' f Source # range :: forall f l' (f' :: Type -> Type). f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Element Language l' f' f Source # integer :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Integer -> Value Language l' f' f Source # nil :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Value Language l' f' f Source # false :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Value Language l' f' f Source # true :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Value Language l' f' f Source # real :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Double -> Value Language l' f' f Source # string :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Text -> Value Language l' f' f Source # charCode :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Int -> Value Language l' f' f Source # builtin :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Text -> Value Language l' f' f Source # variable :: forall l' (f' :: Type -> Type) (f :: Type -> Type). QualIdent l' -> Designator Language l' f' f Source # field :: forall f l' (f' :: Type -> Type). f (Designator l' l' f' f') -> Ident -> Designator Language l' f' f Source # index :: forall f l' (f' :: Type -> Type). f (Designator l' l' f' f') -> NonEmpty (f (Expression l' l' f' f')) -> Designator Language l' f' f Source # dereference :: forall f l' (f' :: Type -> Type). f (Designator l' l' f' f') -> Designator Language l' f' f Source # | |
Pretty (Value Language l Identity Identity) Source # | |
type Block Language Source # | |
Defined in Language.Oberon.AST | |
type Case Language Source # | |
Defined in Language.Oberon.AST | |
type CaseLabels Language Source # | |
Defined in Language.Oberon.AST | |
type ConditionalBranch Language Source # | |
Defined in Language.Oberon.AST | |
type Declaration Language Source # | |
Defined in Language.Oberon.AST | |
type Designator Language Source # | |
Defined in Language.Oberon.AST | |
type Element Language Source # | |
Defined in Language.Oberon.AST | |
type Expression Language Source # | |
Defined in Language.Oberon.AST | |
type FPSection Language Source # | |
Defined in Language.Oberon.AST | |
type FieldList Language Source # | |
Defined in Language.Oberon.AST | |
type FormalParameters Language Source # | |
Defined in Language.Oberon.AST | |
type IdentDef Language Source # | |
Defined in Language.Oberon.AST | |
type Import Language Source # | |
Defined in Language.Oberon.AST | |
type Module Language Source # | |
Defined in Language.Oberon.AST | |
type ProcedureHeading Language Source # | |
Defined in Language.Oberon.AST | |
type QualIdent Language Source # | |
Defined in Language.Oberon.AST | |
type Statement Language Source # | |
Defined in Language.Oberon.AST | |
type StatementSequence Language Source # | |
Defined in Language.Oberon.AST | |
type TargetClass Language Source # | |
Defined in Language.Oberon.AST | |
type Type Language Source # | |
Defined in Language.Oberon.AST | |
type Value Language Source # | |
Defined in Language.Oberon.AST | |
type WithAlternative Language Source # | |
Defined in Language.Oberon.AST |
isNamedVar :: 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 |