UMinho Haskell Libraries (1.0)ContentsIndex
Language.VDM_SL.Syntax
Portability portable
Stability experimental
Maintainer joost.visser@di.uminho.pt
Contents
Primitive Datatypes
Document Datatype
Definition Blocks
Datatype Definition
Values Definition
Function Definition
Operation Definition
Expressions
Statements
Patterns
Description

This module defines the Abstract Syntax Tree (AST) for the VDM-SL language, accondingly with the ISO standard. Since the ISO standard differs in some points from the IFAD implementation of VDM, some of the features supported by the VDM-Tools might not have been implemented.

This AST was manually derived from the concrete BNF grammar. The concrete grammar is based on the work of Richard Atterer (atterer@in.tum.de, http://www.in.tum.de/~atterer/) in a dissertation submitted at The Queen's University of Belfast: Automatic Test Data Generation From VDM-SL Specifications. This can be found in the author's web site.

Synopsis
type Type_variable_identifier = String
type Lit_char = String
type Lit_string = String
type Lit_quote = String
type Lit_num = Double
type Numeral = Int
data Document
= DEF_BLOCK_S Definition_block
| DEF_BLOCK_L Document Definition_block
data Definition_block
= TYPES Type_definition_list
| STATES State_definition
| VALUES Value_definition_list
| FUNCTIONS Function_definition_list
| OPERATIONS Operation_definition_list
data Type_definition_list = TYPE_DEF [Type_definition]
data Type_definition
= TYPE_TYPE Name Type
| TYPE_TYPE_INV Name Type Invariant
| TYPE_FIELD_L Name Field_list
| TYPE_FIELD_L_INV Name Field_list Invariant
data Type_list
= TYPE_S Type
| TYPE_L Type_list Type
data Type
= BRACK_TYPE Type
| BOOL
| NAT
| NAT1
| INT
| RAT
| REAL
| CHAR
| TOKEN
| QUOTE_TYPE Lit_quote
| COMPOSE Name Field_list
| UNION_TYPE Type Type
| PROD_TYPE Type Type
| OPT_TYPE Type
| SET_OF Type
| SEQ0_OF Type
| SEQ1_OF Type
| MAP_TYPE Type Type
| INMAP_TYPE Type Type
| FUNC_TYPE Function_type
| TYPE_VAR Type_variable_identifier
| NAME_TYPE Name
| NIL_TYPE
data Function_type
= TOT_FUNC Type Type
| TOT_FUNC0 Type
| PART_FUNC Type Type
| PART_FUNC0 Type
data Discretionary_type
= SOME Type
| NOTH
data Field_list = FIELD_LIST [Field]
data Field
= FIELD_NAME Name Type
| FIELD_NAME_IGNORE Name Type
| FIELD_TYPE Type
data State_definition
= STATE Name Field_list
| STATE_INV Name Field_list Invariant
| STATE_INI Name Field_list Initialization
| STATE_INV_INI Name Field_list Invariant Initialization
data Invariant = INVARIANT Pattern Expression
data Initialization = INITIALIZATION Pattern Expression
data Value_definition_list
= VAL_DEF_S Value_definition
| VAL_DEF_L Value_definition_list Value_definition
data Value_definition
= PATTERN Pattern Expression
| PATTERN_TYPE Pattern Type Expression
data Function_definition_list
= FUNC_DEF_S Function_definition
| FUNC_DEF_L Function_definition_list Function_definition
data Function_definition
= EXPL_FUNC_DEF Explicit_function_definition
| IMPL_FUNC_DEF Implicit_function_definition
data Explicit_function_definition
= EXPL_FUNC Name Function_type Name Parameters_list Expression Maybe_precondition
| EXPL_FUNC_TYPE_VAR Name Type_variable_list Function_type Name Parameters_list Expression Maybe_precondition
data Implicit_function_definition
= IMPL_FUNC Name Parameter_type_list Name Type Maybe_precondition Expression
| IMPL_FUNC_TYPE Name Type_variable_list Parameter_type_list Name Type Maybe_precondition Expression
data Type_variable_list
= TYPE_VAR_S Type_variable_identifier
| TYPE_VAR_L Type_variable_list Type_variable_identifier
data Parameter_type_list
= PARAM_TYPE_E
| PARAM_TYPE_L Pattern_type_pair_list
data Pattern_type_pair_list
= PAT_TYPE_S Pattern_list Type
| PAT_TYPE_L Pattern_type_pair_list Pattern_list Type
data Parameters_list
= PARAM_S Brack_maybe_pattern_list
| PARAM_L Parameters_list Brack_maybe_pattern_list
data Brack_maybe_pattern_list
= BRACK_MAY_NOTH
| BRACK_MAY_JUST Pattern_list
data Maybe_precondition
= MAY_PRECOND_NOTH
| MAY_PRECOND_JUST Expression
data Operation_definition_list
= OPER_DEF_S Operation_definition
| OPER_DEF_L Operation_definition_list Operation_definition
data Operation_definition
= EXPL_OPER_DEF Explicit_operation_definition
| IMPL_OPER_DEF Implicit_operation_definition
data Explicit_operation_definition = EXPL_OPER Name Discretionary_type Discretionary_type Name Brack_maybe_pattern_list Statement Maybe_precondition
data Implicit_operation_definition
= IMPL_OPER Name Parameter_type_list Maybe_externals Maybe_precondition Expression
| IMPL_OPER_EXCEP Name Parameter_type_list Maybe_externals Maybe_precondition Expression Exception_list
| IMPL_OPER_TYPE Name Parameter_type_list Name Type Maybe_externals Maybe_precondition Expression
| IMPL_OPER_TYPE_EXCEP Name Parameter_type_list Name Type Maybe_externals Maybe_precondition Expression Exception_list
data Maybe_externals
= MAY_EXTERN_NOTH
| MAY_EXTERN_JUST External_list
data External_list
= EXTERNAL_S Var_information
| EXTERNAL_L External_list Var_information
data Var_information
= RD Name_list
| WR Name_list
| RD_TYPE Name_list Type
| WR_TYPE Name_list Type
data Exception_list
= EXCEPT_S Name Expression Expression
| EXCEPT_L Exception_list Name Expression Expression
data Expression_list
= EXPR_S Expression
| EXPR_L Expression_list Expression
data Expression
= BRACK_EXPR Expression
| LET Local_definition_list Expression
| LET_INSET Pattern Expression Expression
| LET_VAR Name Type Expression
| LET_PAT Pattern2 Type Expression
| LETBE_INSET Pattern Expression Expression Expression
| LETBE_VAR Name Type Expression Expression
| LETBE_PAT Pattern2 Type Expression Expression
| DEF Patternbind_expr_list Expression
| IF_EXPR If_expression
| CASE Expression Cases_alternative_list
| CASE_OTHER Expression Cases_alternative_list Expression
| PLUS Expression
| MINUS Expression
| ABS Expression
| FLOOR Expression
| NOT Expression
| CARD Expression
| POWER Expression
| DUNION Expression
| DINTER Expression
| HD Expression
| TL Expression
| LEN Expression
| ELEMS Expression
| INDS Expression
| CONC Expression
| DOM Expression
| RANGE Expression
| MERGE1 Expression
| INVERSE Expression
| ADD Expression Expression
| SUBTR Expression Expression
| MULT Expression Expression
| DIVIDE Expression Expression
| DIV Expression Expression
| REM Expression Expression
| MOD Expression Expression
| LESS Expression Expression
| LESS_EQ Expression Expression
| GREAT Expression Expression
| GREAT_EQ Expression Expression
| EQUAL Expression Expression
| NEQ Expression Expression
| OR Expression Expression
| AND Expression Expression
| IMPLY Expression Expression
| EQUIV Expression Expression
| IN_SET Expression Expression
| NOT_IN_SET Expression Expression
| SUBSET Expression Expression
| PSUBSET Expression Expression
| UNION Expression Expression
| MERGE2 Expression Expression
| SET_DIFF Expression Expression
| INTER Expression Expression
| CONCAT Expression Expression
| MODIFY Expression Expression
| MUNION Expression Expression
| DOM_RESTR_TO Expression Expression
| DOM_RESTR_BY Expression Expression
| RNG_RESTR_TO Expression Expression
| RNG_RESTR_BY Expression Expression
| COMP Expression Expression
| ITERATE Expression Expression
| FORALL Bind_list Expression
| EXISTS Bind_list Expression
| EXISTS1 Bind Expression
| IOTA Bind Expression
| EMPTY_SET
| SET Expression
| SET2 Expression Expression
| SET_ENUM Expression Expression Expression_list
| COMPR_SET Expression Bind_list
| COMPR_SET_COND Expression Bind_list Expression
| RANGE_SET Expression Expression
| EMPTY_SEQ
| SEQ Expression_list
| COMPR_SEQ Expression Bind_list
| COMPR_SEQ_COND Expression Bind_list Expression
| SUBSEQ Expression Expression Expression
| EMPTY_MAP
| MAP Map_enumeration_list
| COMPR_MAP Expression Expression Bind_list
| COMPR_MAP_COND Expression Expression Bind_list Expression
| TUPLE Expression_list
| RECORD_E String
| RECORD_S String Expression_list
| MU Expression Record_modification_list
| APPLY0 Expression
| APPLY1 Expression Expression
| APPLYN Expression Expression Expression_list
| FIELD_SEL Expression Name
| TUPLE_SEL Expression Numeral
| FUNCT_TYPE_INST Name Type_list
| LAMBDA Type_bind_list Expression
| IS_IDENT String Expression
| IDENT String
| OLD_NAME Name
| SYMB_LIT Symbolic_literal
data Symbolic_literal
= LIT_NUM Lit_num
| NUMERAL Numeral
| TRUE
| FALSE
| NIL
| LIT_CHAR Lit_char
| LIT_STR Lit_string
| LIT_QUOTE Lit_quote
data Patternbind_expr_list
= PATT_BIND_EXPR_S Pattern_bind Expression
| PATT_BIND_EXPR_L Patternbind_expr_list Pattern_bind Expression
data Local_definition_list
= LOCAL_DEF_S Local_definition
| LOCAL_DEF_L Local_definition_list Local_definition
data If_expression
= IF_THEN_ELSE Expression Expression Expression
| IF_THEN_ELSEIF Expression Expression Elseif_expression Expression
data Elseif_expression
= ELSEIF Expression Expression
| EXP_ELSEIF Elseif_expression Expression Expression
data Cases_alternative_list
= CASE_ALT_S Pattern_list Expression
| CASE_ALT_L Cases_alternative_list Pattern_list Expression
data Name_list
= NAME_S Name
| NAME_L Name_list Name
data Name
= IDENTIFIER String
| MK_ID String
| IS_ID String
data Map_enumeration_list
= MAP_ENUM_S Expression Expression
| MAP_ENUM_L Map_enumeration_list Expression Expression
data Record_modification_list
= RECORD_MOD_S Name Expression
| RECORD_MOD_L Record_modification_list Name Expression
data State_designator
= STATE_S Name
| STATE_L State_designator Name
| STATE_EXPR_L State_designator Expression
data Statement_list
= STATEMENT_S Statement
| STATEMENT_L Statement_list Statement
data Statement
= LET_STAT Local_definition_list Statement
| LET_INSET_STAT Pattern Expression Statement
| LET_VAR_STAT Name Type Statement
| LET_PAT_STAT Pattern2 Type Statement
| LETBE_INSET_STAT Pattern Expression Expression Statement
| LETBE_VAR_STAT Name Type Expression Statement
| LETBE_PAT_STAT Pattern2 Type Expression Statement
| DEF_STAT Equals_definition_list Statement
| MAYBE_DCL_STAT Maybe_dcl_statement_list Statement_list
| CALL_STAT Call_statement
| SKIP
data Call_statement
= CALL_ID_STAT Name
| CALL_EXPR_STAT Name Expression_list
| CALL_STATE_STAT Name State_designator
| CALL_EXPR_STATE_STAT Name Expression_list State_designator
data Equals_definition_list
= EQUALS_DEF_S Pattern_bind Expression
| EQUALS_DEF_L Equals_definition_list Pattern_bind Expression
data Maybe_dcl_statement_list
= MAYBE_DCL_STAT_E
| MAYBE_DCL_STAT_S Maybe_dcl_statement_list Name Type
| MAYBE_DCL_STAT_L Maybe_dcl_statement_list Name Type Expression
data Pattern_list
= PATTERN_S Pattern
| PATTERN_L Pattern_list Pattern
data Pattern
= PAT_NAME Name
| PAT_PAT Pattern2
data Pattern2
= IDENT_PAT
| BRACK_PAT Expression
| SYMB_LIT_PAT Symbolic_literal
| SET_ENUM_PAT Pattern_list
| SET_UNION_PAT Pattern Pattern
| SEQ_ENUM_PAT Pattern_list
| SEQ_CONC_PAT Pattern Pattern
| TUPLE_PAT Pattern_list
| LIST_PAT Name Brack_maybe_pattern_list
data Pattern_bind
= PAT_BIND_PAT Pattern
| PAT_BIND_BIND Bind
data Bind
= BIND_EXPR Pattern Expression
| BIND_TYPE Pattern Type
data Bind_list
= BIND_S1 Multiple_set_bind
| BIND_S2 Multiple_type_bind
| BIND_L1 Bind_list Multiple_set_bind
| BIND_L2 Bind_list Multiple_type_bind
data Multiple_set_bind = MULT_SET_BIND Pattern_list Expression
data Multiple_type_bind = MULT_TYPE_BIND Pattern_list Type
data Type_bind_list
= TYPE_BIND_S Pattern Type
| TYPE_BIND_L Type_bind_list Pattern Type
data Local_definition
= L_PAT Pattern Expression
| L_NAME Name Type Expression
| L_PAT_TYPE Pattern2 Type Expression
| L_EXPL_FUNC Name Function_type Name Parameters_list Expression Maybe_precondition
| L_EXPL_FUNC_TYPE Name Type_variable_list Function_type Name Parameters_list Expression Maybe_precondition
| L_IMPL_FUNC Name Parameter_type_list Name Type Maybe_precondition Expression
| L_IMPL_FUNC_TYPE Name Type_variable_list Parameter_type_list Name Type Maybe_precondition Expression
Primitive Datatypes
type Type_variable_identifier = String
type Lit_char = String
type Lit_string = String
type Lit_quote = String
type Lit_num = Double
type Numeral = Int
Document Datatype
data Document
A VDM-SL Document is a list of Definitions Blocks.
Constructors
DEF_BLOCK_S Definition_block
DEF_BLOCK_L Document Definition_block
Instances
Pretty Document
Eq Document
Show Document
Term Document
Typeable Document
Definition Blocks
data Definition_block
These are the main blocks in a VDM-SL document:
Constructors
TYPES Type_definition_listA list of datatype definitions
STATES State_definitionA state definition
VALUES Value_definition_listA list of value definitions
FUNCTIONS Function_definition_listA list of function definitions
OPERATIONS Operation_definition_listA list of operation definition
Instances
Pretty Definition_block
Eq Definition_block
Show Definition_block
Term Definition_block
Typeable Definition_block
Datatype Definition
data Type_definition_list
In VDM-SL the types are declared in type sections. Thus, there can be a list of type defintions.
Constructors
TYPE_DEF [Type_definition]
Instances
Pretty Type_definition_list
Eq Type_definition_list
Show Type_definition_list
Term Type_definition_list
Typeable Type_definition_list
data Type_definition
There are four ways of defining a type:
Constructors
TYPE_TYPE Name TypeUsing a name and a type description
TYPE_TYPE_INV Name Type InvariantUsing a name, a type description and an invariant
TYPE_FIELD_L Name Field_listUsing the record way, i.e. a name and a named field list
TYPE_FIELD_L_INV Name Field_list InvariantUsing the record way with an invariant
Instances
Pretty Type_definition
Eq Type_definition
Show Type_definition
Term Type_definition
Typeable Type_definition
data Type_list
Constructors
TYPE_S Type
TYPE_L Type_list Type
Instances
Pretty Type_list
Eq Type_list
Show Type_list
Term Type_list
Typeable Type_list
data Type
The types that VDM-SL allows are:
Constructors
BRACK_TYPE TypeThe enclosed (...) datatype.
BOOLBooleans
NATNatural numbers with 0
NAT1Natural numbers without 0
INTInteger numbers
RATRational numbers
REALReal numbers
CHARCharacters
TOKENTokens
QUOTE_TYPE Lit_quoteQuote type (corresponds to enumerated types)
COMPOSE Name Field_listCompostie types (records)
UNION_TYPE Type TypeUnions of types
PROD_TYPE Type TypeProducts of types (tuples)
OPT_TYPE TypeOptional type ([A] means 1 + A)
SET_OF TypeSets of elements of a type
SEQ0_OF TypeSequences of elements of a type
SEQ1_OF TypeNon-empty sequences of elements of a type
MAP_TYPE Type TypeMaps (finite functions) from a type to another
INMAP_TYPE Type TypeInjective maps from a type to another
FUNC_TYPE Function_typeFunctions
TYPE_VAR Type_variable_identifierA type variable
NAME_TYPE NameAn user defined type
NIL_TYPE
Instances
Pretty Type
Eq Type
Show Type
Term Type
Typeable Type
data Function_type
Constructors
TOT_FUNC Type Type
TOT_FUNC0 Type
PART_FUNC Type Type
PART_FUNC0 Type
Instances
Pretty Function_type
Eq Function_type
Show Function_type
Term Function_type
Typeable Function_type
data Discretionary_type
Constructors
SOME Type
NOTH
Instances
Pretty Discretionary_type
Eq Discretionary_type
Show Discretionary_type
Term Discretionary_type
Typeable Discretionary_type
data Field_list
Constructors
FIELD_LIST [Field]
Instances
Pretty Field_list
Eq Field_list
Show Field_list
Term Field_list
Typeable Field_list
data Field
Constructors
FIELD_NAME Name Type
FIELD_NAME_IGNORE Name Type
FIELD_TYPE Type
Instances
Pretty Field
Eq Field
Show Field
Term Field
Typeable Field
data State_definition
Constructors
STATE Name Field_list
STATE_INV Name Field_list Invariant
STATE_INI Name Field_list Initialization
STATE_INV_INI Name Field_list Invariant Initialization
Instances
Pretty State_definition
Eq State_definition
Show State_definition
Term State_definition
Typeable State_definition
data Invariant
Constructors
INVARIANT Pattern Expression
Instances
Pretty Invariant
Eq Invariant
Show Invariant
Term Invariant
Typeable Invariant
data Initialization
Constructors
INITIALIZATION Pattern Expression
Instances
Pretty Initialization
Eq Initialization
Show Initialization
Term Initialization
Typeable Initialization
Values Definition
data Value_definition_list
Constructors
VAL_DEF_S Value_definition
VAL_DEF_L Value_definition_list Value_definition
Instances
Pretty Value_definition_list
Eq Value_definition_list
Show Value_definition_list
Term Value_definition_list
Typeable Value_definition_list
data Value_definition
Constructors
PATTERN Pattern Expression
PATTERN_TYPE Pattern Type Expression
Instances
Pretty Value_definition
Eq Value_definition
Show Value_definition
Term Value_definition
Typeable Value_definition
Function Definition
data Function_definition_list
Constructors
FUNC_DEF_S Function_definition
FUNC_DEF_L Function_definition_list Function_definition
Instances
Pretty Function_definition_list
Eq Function_definition_list
Show Function_definition_list
Term Function_definition_list
Typeable Function_definition_list
data Function_definition
Constructors
EXPL_FUNC_DEF Explicit_function_definition
IMPL_FUNC_DEF Implicit_function_definition
Instances
Pretty Function_definition
Eq Function_definition
Show Function_definition
Term Function_definition
Typeable Function_definition
data Explicit_function_definition
Constructors
EXPL_FUNC Name Function_type Name Parameters_list Expression Maybe_precondition
EXPL_FUNC_TYPE_VAR Name Type_variable_list Function_type Name Parameters_list Expression Maybe_precondition
Instances
Pretty Explicit_function_definition
Eq Explicit_function_definition
Show Explicit_function_definition
Term Explicit_function_definition
Typeable Explicit_function_definition
data Implicit_function_definition
Constructors
IMPL_FUNC Name Parameter_type_list Name Type Maybe_precondition Expression
IMPL_FUNC_TYPE Name Type_variable_list Parameter_type_list Name Type Maybe_precondition Expression
Instances
Pretty Implicit_function_definition
Eq Implicit_function_definition
Show Implicit_function_definition
Term Implicit_function_definition
Typeable Implicit_function_definition
data Type_variable_list
Constructors
TYPE_VAR_S Type_variable_identifier
TYPE_VAR_L Type_variable_list Type_variable_identifier
Instances
Pretty Type_variable_list
Eq Type_variable_list
Show Type_variable_list
Term Type_variable_list
Typeable Type_variable_list
data Parameter_type_list
Constructors
PARAM_TYPE_E
PARAM_TYPE_L Pattern_type_pair_list
Instances
Pretty Parameter_type_list
Eq Parameter_type_list
Show Parameter_type_list
Term Parameter_type_list
Typeable Parameter_type_list
data Pattern_type_pair_list
Constructors
PAT_TYPE_S Pattern_list Type
PAT_TYPE_L Pattern_type_pair_list Pattern_list Type
Instances
Pretty Pattern_type_pair_list
Eq Pattern_type_pair_list
Show Pattern_type_pair_list
Term Pattern_type_pair_list
Typeable Pattern_type_pair_list
data Parameters_list
Constructors
PARAM_S Brack_maybe_pattern_list
PARAM_L Parameters_list Brack_maybe_pattern_list
Instances
Pretty Parameters_list
Eq Parameters_list
Show Parameters_list
Term Parameters_list
Typeable Parameters_list
data Brack_maybe_pattern_list
Constructors
BRACK_MAY_NOTH
BRACK_MAY_JUST Pattern_list
Instances
Pretty Brack_maybe_pattern_list
Eq Brack_maybe_pattern_list
Show Brack_maybe_pattern_list
Term Brack_maybe_pattern_list
Typeable Brack_maybe_pattern_list
data Maybe_precondition
Constructors
MAY_PRECOND_NOTH
MAY_PRECOND_JUST Expression
Instances
Pretty Maybe_precondition
Eq Maybe_precondition
Show Maybe_precondition
Term Maybe_precondition
Typeable Maybe_precondition
Operation Definition
data Operation_definition_list
Constructors
OPER_DEF_S Operation_definition
OPER_DEF_L Operation_definition_list Operation_definition
Instances
Pretty Operation_definition_list
Eq Operation_definition_list
Show Operation_definition_list
Term Operation_definition_list
Typeable Operation_definition_list
data Operation_definition
Constructors
EXPL_OPER_DEF Explicit_operation_definition
IMPL_OPER_DEF Implicit_operation_definition
Instances
Pretty Operation_definition
Eq Operation_definition
Show Operation_definition
Term Operation_definition
Typeable Operation_definition
data Explicit_operation_definition
Constructors
EXPL_OPER Name Discretionary_type Discretionary_type Name Brack_maybe_pattern_list Statement Maybe_precondition
Instances
Pretty Explicit_operation_definition
Eq Explicit_operation_definition
Show Explicit_operation_definition
Term Explicit_operation_definition
Typeable Explicit_operation_definition
data Implicit_operation_definition
Constructors
IMPL_OPER Name Parameter_type_list Maybe_externals Maybe_precondition Expression
IMPL_OPER_EXCEP Name Parameter_type_list Maybe_externals Maybe_precondition Expression Exception_list
IMPL_OPER_TYPE Name Parameter_type_list Name Type Maybe_externals Maybe_precondition Expression
IMPL_OPER_TYPE_EXCEP Name Parameter_type_list Name Type Maybe_externals Maybe_precondition Expression Exception_list
Instances
Pretty Implicit_operation_definition
Eq Implicit_operation_definition
Show Implicit_operation_definition
Term Implicit_operation_definition
Typeable Implicit_operation_definition
data Maybe_externals
Constructors
MAY_EXTERN_NOTH
MAY_EXTERN_JUST External_list
Instances
Pretty Maybe_externals
Eq Maybe_externals
Show Maybe_externals
Term Maybe_externals
Typeable Maybe_externals
data External_list
Constructors
EXTERNAL_S Var_information
EXTERNAL_L External_list Var_information
Instances
Pretty External_list
Eq External_list
Show External_list
Term External_list
Typeable External_list
data Var_information
Constructors
RD Name_list
WR Name_list
RD_TYPE Name_list Type
WR_TYPE Name_list Type
Instances
Pretty Var_information
Eq Var_information
Show Var_information
Term Var_information
Typeable Var_information
data Exception_list
Constructors
EXCEPT_S Name Expression Expression
EXCEPT_L Exception_list Name Expression Expression
Instances
Pretty Exception_list
Eq Exception_list
Show Exception_list
Term Exception_list
Typeable Exception_list
Expressions
data Expression_list
Constructors
EXPR_S Expression
EXPR_L Expression_list Expression
Instances
Pretty Expression_list
Eq Expression_list
Show Expression_list
Term Expression_list
Typeable Expression_list
data Expression
Constructors
BRACK_EXPR Expression
LET Local_definition_list Expression
LET_INSET Pattern Expression Expression
LET_VAR Name Type Expression
LET_PAT Pattern2 Type Expression
LETBE_INSET Pattern Expression Expression Expression
LETBE_VAR Name Type Expression Expression
LETBE_PAT Pattern2 Type Expression Expression
DEF Patternbind_expr_list Expression
IF_EXPR If_expression
CASE Expression Cases_alternative_list
CASE_OTHER Expression Cases_alternative_list Expression
PLUS Expression
MINUS Expression
ABS Expression
FLOOR Expression
NOT Expression
CARD Expression
POWER Expression
DUNION Expression
DINTER Expression
HD Expression
TL Expression
LEN Expression
ELEMS Expression
INDS Expression
CONC Expression
DOM Expression
RANGE Expression
MERGE1 Expression
INVERSE Expression
ADD Expression Expression
SUBTR Expression Expression
MULT Expression Expression
DIVIDE Expression Expression
DIV Expression Expression
REM Expression Expression
MOD Expression Expression
LESS Expression Expression
LESS_EQ Expression Expression
GREAT Expression Expression
GREAT_EQ Expression Expression
EQUAL Expression Expression
NEQ Expression Expression
OR Expression Expression
AND Expression Expression
IMPLY Expression Expression
EQUIV Expression Expression
IN_SET Expression Expression
NOT_IN_SET Expression Expression
SUBSET Expression Expression
PSUBSET Expression Expression
UNION Expression Expression
MERGE2 Expression Expression
SET_DIFF Expression Expression
INTER Expression Expression
CONCAT Expression Expression
MODIFY Expression Expression
MUNION Expression Expression
DOM_RESTR_TO Expression Expression
DOM_RESTR_BY Expression Expression
RNG_RESTR_TO Expression Expression
RNG_RESTR_BY Expression Expression
COMP Expression Expression
ITERATE Expression Expression
FORALL Bind_list Expression
EXISTS Bind_list Expression
EXISTS1 Bind Expression
IOTA Bind Expression
EMPTY_SET
SET Expression
SET2 Expression Expression
SET_ENUM Expression Expression Expression_list
COMPR_SET Expression Bind_list
COMPR_SET_COND Expression Bind_list Expression
RANGE_SET Expression Expression
EMPTY_SEQ
SEQ Expression_list
COMPR_SEQ Expression Bind_list
COMPR_SEQ_COND Expression Bind_list Expression
SUBSEQ Expression Expression Expression
EMPTY_MAP
MAP Map_enumeration_list
COMPR_MAP Expression Expression Bind_list
COMPR_MAP_COND Expression Expression Bind_list Expression
TUPLE Expression_list
RECORD_E String
RECORD_S String Expression_list
MU Expression Record_modification_list
APPLY0 Expression
APPLY1 Expression Expression
APPLYN Expression Expression Expression_list
FIELD_SEL Expression Name
TUPLE_SEL Expression Numeral
FUNCT_TYPE_INST Name Type_list
LAMBDA Type_bind_list Expression
IS_IDENT String Expression
IDENT String
OLD_NAME Name
SYMB_LIT Symbolic_literal
Instances
Pretty Expression
Eq Expression
Show Expression
Term Expression
Typeable Expression
data Symbolic_literal
Constructors
LIT_NUM Lit_num
NUMERAL Numeral
TRUE
FALSE
NIL
LIT_CHAR Lit_char
LIT_STR Lit_string
LIT_QUOTE Lit_quote
Instances
Pretty Symbolic_literal
Eq Symbolic_literal
Show Symbolic_literal
Term Symbolic_literal
Typeable Symbolic_literal
data Patternbind_expr_list
Constructors
PATT_BIND_EXPR_S Pattern_bind Expression
PATT_BIND_EXPR_L Patternbind_expr_list Pattern_bind Expression
Instances
Pretty Patternbind_expr_list
Eq Patternbind_expr_list
Show Patternbind_expr_list
Term Patternbind_expr_list
Typeable Patternbind_expr_list
data Local_definition_list
Constructors
LOCAL_DEF_S Local_definition
LOCAL_DEF_L Local_definition_list Local_definition
Instances
Pretty Local_definition_list
Eq Local_definition_list
Show Local_definition_list
Term Local_definition_list
Typeable Local_definition_list
data If_expression
Constructors
IF_THEN_ELSE Expression Expression Expression
IF_THEN_ELSEIF Expression Expression Elseif_expression Expression
Instances
Pretty If_expression
Eq If_expression
Show If_expression
Term If_expression
Typeable If_expression
data Elseif_expression
Constructors
ELSEIF Expression Expression
EXP_ELSEIF Elseif_expression Expression Expression
Instances
Pretty Elseif_expression
Eq Elseif_expression
Show Elseif_expression
Term Elseif_expression
Typeable Elseif_expression
data Cases_alternative_list
Constructors
CASE_ALT_S Pattern_list Expression
CASE_ALT_L Cases_alternative_list Pattern_list Expression
Instances
Pretty Cases_alternative_list
Eq Cases_alternative_list
Show Cases_alternative_list
Term Cases_alternative_list
Typeable Cases_alternative_list
data Name_list
Constructors
NAME_S Name
NAME_L Name_list Name
Instances
Pretty Name_list
Eq Name_list
Show Name_list
Term Name_list
Typeable Name_list
data Name
Constructors
IDENTIFIER String
MK_ID String
IS_ID String
Instances
Pretty Name
Eq Name
Show Name
Term Name
Typeable Name
data Map_enumeration_list
Constructors
MAP_ENUM_S Expression Expression
MAP_ENUM_L Map_enumeration_list Expression Expression
Instances
Pretty Map_enumeration_list
Eq Map_enumeration_list
Show Map_enumeration_list
Term Map_enumeration_list
Typeable Map_enumeration_list
data Record_modification_list
Constructors
RECORD_MOD_S Name Expression
RECORD_MOD_L Record_modification_list Name Expression
Instances
Pretty Record_modification_list
Eq Record_modification_list
Show Record_modification_list
Term Record_modification_list
Typeable Record_modification_list
data State_designator
Constructors
STATE_S Name
STATE_L State_designator Name
STATE_EXPR_L State_designator Expression
Instances
Pretty State_designator
Eq State_designator
Show State_designator
Term State_designator
Typeable State_designator
Statements
data Statement_list
Constructors
STATEMENT_S Statement
STATEMENT_L Statement_list Statement
Instances
Pretty Statement_list
Eq Statement_list
Show Statement_list
Term Statement_list
Typeable Statement_list
data Statement
Constructors
LET_STAT Local_definition_list Statement
LET_INSET_STAT Pattern Expression Statement
LET_VAR_STAT Name Type Statement
LET_PAT_STAT Pattern2 Type Statement
LETBE_INSET_STAT Pattern Expression Expression Statement
LETBE_VAR_STAT Name Type Expression Statement
LETBE_PAT_STAT Pattern2 Type Expression Statement
DEF_STAT Equals_definition_list Statement
MAYBE_DCL_STAT Maybe_dcl_statement_list Statement_list
CALL_STAT Call_statement
SKIP
Instances
Pretty Statement
Eq Statement
Show Statement
Term Statement
Typeable Statement
data Call_statement
Constructors
CALL_ID_STAT Name
CALL_EXPR_STAT Name Expression_list
CALL_STATE_STAT Name State_designator
CALL_EXPR_STATE_STAT Name Expression_list State_designator
Instances
Pretty Call_statement
Eq Call_statement
Show Call_statement
Term Call_statement
Typeable Call_statement
data Equals_definition_list
Constructors
EQUALS_DEF_S Pattern_bind Expression
EQUALS_DEF_L Equals_definition_list Pattern_bind Expression
Instances
Pretty Equals_definition_list
Eq Equals_definition_list
Show Equals_definition_list
Term Equals_definition_list
Typeable Equals_definition_list
data Maybe_dcl_statement_list
Constructors
MAYBE_DCL_STAT_E
MAYBE_DCL_STAT_S Maybe_dcl_statement_list Name Type
MAYBE_DCL_STAT_L Maybe_dcl_statement_list Name Type Expression
Instances
Pretty Maybe_dcl_statement_list
Eq Maybe_dcl_statement_list
Show Maybe_dcl_statement_list
Term Maybe_dcl_statement_list
Typeable Maybe_dcl_statement_list
Patterns
data Pattern_list
Constructors
PATTERN_S Pattern
PATTERN_L Pattern_list Pattern
Instances
Pretty Pattern_list
Eq Pattern_list
Show Pattern_list
Term Pattern_list
Typeable Pattern_list
data Pattern
Constructors
PAT_NAME Name
PAT_PAT Pattern2
Instances
Pretty Pattern
Eq Pattern
Show Pattern
Term Pattern
Typeable Pattern
data Pattern2
Constructors
IDENT_PAT
BRACK_PAT Expression
SYMB_LIT_PAT Symbolic_literal
SET_ENUM_PAT Pattern_list
SET_UNION_PAT Pattern Pattern
SEQ_ENUM_PAT Pattern_list
SEQ_CONC_PAT Pattern Pattern
TUPLE_PAT Pattern_list
LIST_PAT Name Brack_maybe_pattern_list
Instances
Pretty Pattern2
Eq Pattern2
Show Pattern2
Term Pattern2
Typeable Pattern2
data Pattern_bind
Constructors
PAT_BIND_PAT Pattern
PAT_BIND_BIND Bind
Instances
Pretty Pattern_bind
Eq Pattern_bind
Show Pattern_bind
Term Pattern_bind
Typeable Pattern_bind
data Bind
Constructors
BIND_EXPR Pattern Expression
BIND_TYPE Pattern Type
Instances
Pretty Bind
Eq Bind
Show Bind
Term Bind
Typeable Bind
data Bind_list
Constructors
BIND_S1 Multiple_set_bind
BIND_S2 Multiple_type_bind
BIND_L1 Bind_list Multiple_set_bind
BIND_L2 Bind_list Multiple_type_bind
Instances
Pretty Bind_list
Eq Bind_list
Show Bind_list
Term Bind_list
Typeable Bind_list
data Multiple_set_bind
Constructors
MULT_SET_BIND Pattern_list Expression
Instances
Pretty Multiple_set_bind
Eq Multiple_set_bind
Show Multiple_set_bind
Term Multiple_set_bind
Typeable Multiple_set_bind
data Multiple_type_bind
Constructors
MULT_TYPE_BIND Pattern_list Type
Instances
Pretty Multiple_type_bind
Eq Multiple_type_bind
Show Multiple_type_bind
Term Multiple_type_bind
Typeable Multiple_type_bind
data Type_bind_list
Constructors
TYPE_BIND_S Pattern Type
TYPE_BIND_L Type_bind_list Pattern Type
Instances
Pretty Type_bind_list
Eq Type_bind_list
Show Type_bind_list
Term Type_bind_list
Typeable Type_bind_list
data Local_definition
Constructors
L_PAT Pattern Expression
L_NAME Name Type Expression
L_PAT_TYPE Pattern2 Type Expression
L_EXPL_FUNC Name Function_type Name Parameters_list Expression Maybe_precondition
L_EXPL_FUNC_TYPE Name Type_variable_list Function_type Name Parameters_list Expression Maybe_precondition
L_IMPL_FUNC Name Parameter_type_list Name Type Maybe_precondition Expression
L_IMPL_FUNC_TYPE Name Type_variable_list Parameter_type_list Name Type Maybe_precondition Expression
Instances
Pretty Local_definition
Eq Local_definition
Show Local_definition
Term Local_definition
Typeable Local_definition
Produced by Haddock version 0.6