Safe Haskell | None |
---|---|
Language | Haskell2010 |
ISO Modula-2 Abstract Syntax Tree definitions
Synopsis
- data Language = Language
- data Declaration (full :: Bool) λ l (f' :: * -> *) (f :: * -> *) where
- ConstantDeclaration :: IdentDef l -> f (ConstExpression l l f' f') -> Declaration x λ l f' f
- TypeDeclaration :: IdentDef l -> f (Type l l f' f') -> Declaration x λ l f' f
- OpaqueTypeDeclaration :: IdentDef l -> Declaration False λ l f' f
- VariableDeclaration :: IdentList l -> f (Type l l f' f') -> Declaration x λ l f' f
- AddressedVariableDeclaration :: f (AddressedIdent l l f' f') -> ZipList (f (AddressedIdent l l f' f')) -> f (Type l l f' f') -> Declaration True λ l f' f
- ProcedureDeclaration :: f (ProcedureHeading l l f' f') -> f (Block l l f' f') -> Declaration True λ l f' f
- ProcedureDefinition :: f (ProcedureHeading l l f' f') -> Declaration False λ l f' f
- ForwardProcedureDeclaration :: f (ProcedureHeading l l f' f') -> Declaration True λ l f' f
- ModuleDeclaration :: Ident -> Maybe (f (Priority l l f' f')) -> [Import l] -> Maybe (Export l) -> f (Block l l f' f') -> Declaration True λ l f' f
- data AddressedIdent λ l f' f
- = AddressedIdent Ident (f (ConstExpression l l f' f'))
- | UnaddressedIdent Ident
- data Type λ l f' f
- = TypeReference (QualIdent l)
- | ArrayType (ZipList (f (Type l l f' f'))) (f (Type l l f' f'))
- | EnumerationType (IdentList l)
- | SubrangeType (Maybe (QualIdent l)) (f (ConstExpression l l f' f')) (f (ConstExpression l l f' f'))
- | SetType (f (Type l l f' f'))
- | PackedSetType (f (Type l l f' f'))
- | RecordType (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' f
- = Relation RelOp (f (Expression l l f' f')) (f (Expression l l f' f'))
- | 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'))
- | Remainder (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'))
- | Array (Maybe (QualIdent l)) [f (Item l l f' f')]
- | Record (Maybe (QualIdent l)) [f (Expression l l f' f')]
- | Set (Maybe (QualIdent l)) (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 Item λ l f' f
- = Single (f (Expression l l f' f'))
- | Repeated (f (Expression l l f' f')) (f (ConstExpression l l f' f'))
- data Variant λ l f' f
- = Variant (f (CaseLabels l l f' f')) (ZipList (f (CaseLabels l l f' f'))) (ZipList (f (FieldList l l f' f')))
- | EmptyVariant
- data Block λ l f' f
- = Block (ZipList (f (Declaration l l f' f'))) (Maybe (f (StatementSequence l l f' f')))
- | ExceptionHandlingBlock (ZipList (f (Declaration l l f' f'))) (Maybe (f (StatementSequence l l f' f'))) (Maybe (f (StatementSequence l l f' f'))) (Maybe (f (StatementSequence l l f' f')))
- data Statement λ l f' f
- = EmptyStatement
- | Assignment (f (Designator l l f' f')) (f (Expression l l f' f'))
- | ProcedureCall (f (Designator l l f' f')) (Maybe (ZipList (f (Expression l l f' f'))))
- | If (f (ConditionalBranch l l f' f')) (ZipList (f (ConditionalBranch l l f' f'))) (Maybe (f (StatementSequence l l f' f')))
- | CaseStatement (f (Expression l l f' f')) (ZipList (f (Case l l f' f'))) (Maybe (f (StatementSequence l l f' f')))
- | While (f (Expression l l f' f')) (f (StatementSequence l l f' f'))
- | Repeat (f (StatementSequence l l f' f')) (f (Expression l l f' f'))
- | For Ident (f (Expression l l f' f')) (f (Expression l l f' f')) (Maybe (f (Expression l l f' f'))) (f (StatementSequence l l f' f'))
- | Loop (f (StatementSequence l l f' f'))
- | With (f (Designator l l f' f')) (f (StatementSequence l l f' f'))
- | Exit
- | Return (Maybe (f (Expression l l f' f')))
- | RetryStatement
Documentation
Data type representing the Modula-2 language, as specified by the ISO standard.
Instances
data Declaration (full :: Bool) λ l (f' :: * -> *) (f :: * -> *) where Source #
ConstantDeclaration :: IdentDef l -> f (ConstExpression l l f' f') -> Declaration x λ l f' f | |
TypeDeclaration :: IdentDef l -> f (Type l l f' f') -> Declaration x λ l f' f | |
OpaqueTypeDeclaration :: IdentDef l -> Declaration False λ l f' f | |
VariableDeclaration :: IdentList l -> f (Type l l f' f') -> Declaration x λ l f' f | |
AddressedVariableDeclaration :: f (AddressedIdent l l f' f') -> ZipList (f (AddressedIdent l l f' f')) -> f (Type l l f' f') -> Declaration True λ l f' f | |
ProcedureDeclaration :: f (ProcedureHeading l l f' f') -> f (Block l l f' f') -> Declaration True λ l f' f | |
ProcedureDefinition :: f (ProcedureHeading l l f' f') -> Declaration False λ l f' f | |
ForwardProcedureDeclaration :: f (ProcedureHeading l l f' f') -> Declaration True λ l f' f | |
ModuleDeclaration :: Ident -> Maybe (f (Priority l l f' f')) -> [Import l] -> Maybe (Export l) -> f (Block l l f' f') -> Declaration True λ l f' f |
Instances
data AddressedIdent λ l f' f Source #
AddressedIdent Ident (f (ConstExpression l l f' f')) | |
UnaddressedIdent Ident |
Instances
TypeReference (QualIdent l) | |
ArrayType (ZipList (f (Type l l f' f'))) (f (Type l l f' f')) | |
EnumerationType (IdentList l) | |
SubrangeType (Maybe (QualIdent l)) (f (ConstExpression l l f' f')) (f (ConstExpression l l f' f')) | |
SetType (f (Type l l f' f')) | |
PackedSetType (f (Type l l f' f')) | |
RecordType (ZipList (f (FieldList l l f' f'))) | |
PointerType (f (Type l l f' f')) | |
ProcedureType (Maybe (f (FormalParameters l l f' f'))) |
Instances
data Expression λ l f' f Source #
Relation RelOp (f (Expression l l f' f')) (f (Expression l l f' f')) | |
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')) | |
Remainder (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')) | |
Array (Maybe (QualIdent l)) [f (Item l l f' f')] | |
Record (Maybe (QualIdent l)) [f (Expression l l f' f')] | |
Set (Maybe (QualIdent l)) (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
Single (f (Expression l l f' f')) | |
Repeated (f (Expression l l f' f')) (f (ConstExpression l l f' f')) |
Instances
data Variant λ l f' f Source #
Variant (f (CaseLabels l l f' f')) (ZipList (f (CaseLabels l l f' f'))) (ZipList (f (FieldList l l f' f'))) | |
EmptyVariant |
Instances
Block (ZipList (f (Declaration l l f' f'))) (Maybe (f (StatementSequence l l f' f'))) | |
ExceptionHandlingBlock (ZipList (f (Declaration l l f' f'))) (Maybe (f (StatementSequence l l f' f'))) (Maybe (f (StatementSequence l l f' f'))) (Maybe (f (StatementSequence l l f' f'))) |
Instances
data Statement λ l f' f Source #
EmptyStatement | |
Assignment (f (Designator l l f' f')) (f (Expression l l f' f')) | |
ProcedureCall (f (Designator l l f' f')) (Maybe (ZipList (f (Expression l l f' f')))) | |
If (f (ConditionalBranch l l f' f')) (ZipList (f (ConditionalBranch l l f' f'))) (Maybe (f (StatementSequence l l f' f'))) | |
CaseStatement (f (Expression l l f' f')) (ZipList (f (Case l l f' f'))) (Maybe (f (StatementSequence l l f' f'))) | |
While (f (Expression l l f' f')) (f (StatementSequence l l f' f')) | |
Repeat (f (StatementSequence l l f' f')) (f (Expression l l f' f')) | |
For Ident (f (Expression l l f' f')) (f (Expression l l f' f')) (Maybe (f (Expression l l f' f'))) (f (StatementSequence l l f' f')) | |
Loop (f (StatementSequence l l f' f')) | |
With (f (Designator l l f' f')) (f (StatementSequence l l f' f')) | |
Exit | |
Return (Maybe (f (Expression l l f' f'))) | |
RetryStatement |