SableCC2Hs-0.0.0.2: haskell/SableAst.hs
-- generated Module ! DO NOT EDIT
{-# Language DeriveDataTypeable #-}
module SableAst where
import SableTokens
import Data.Data
--
data ParseUnit
= AbstractMachineParseUnit !Machine !MachineHeader [ MachineClause ]
| RefinementMachineParseUnit !MachineHeader !IdentifierLiteral [ MachineClause ]
| ImplementationMachineParseUnit !MachineHeader !IdentifierLiteral [ MachineClause ]
| DefinitionFileParseUnit !MachineClause
| PredicateParseUnit !Predicate
| ExpressionParseUnit !Expression
| SubstitutionParseUnit !Substitution
| MachineClauseParseUnit !MachineClause
| EventBContextParseUnit !IdentifierLiteral [ ContextClause ]
| EventBModelParseUnit !IdentifierLiteral [ ModelClause ]
| OppatternParseUnit [ IdentifierLiteral ] [ Argpattern ]
deriving (Typeable,Data,Show)
--
data Argpattern
= UndefArgpattern
| DefArgpattern !Expression
deriving (Typeable,Data,Show)
--
data Csppattern
= Csppattern !Argtype !Argpattern
deriving (Typeable,Data,Show)
--
data Argtype
= JoinArgtype
| InArgtype
| OutArgtype
deriving (Typeable,Data,Show)
--
data MachineHeader
= MachineHeader [ IdentifierLiteral ] [ Expression ]
deriving (Typeable,Data,Show)
--
data ContextClause
= ExtendsContextClause [ IdentifierLiteral ]
| SetsContextClause [ Set ]
| ConstantsContextClause [ Expression ]
| AxiomsContextClause [ Predicate ]
| TheoremsContextClause [ Predicate ]
deriving (Typeable,Data,Show)
--
data ModelClause
= RefinesModelClause !IdentifierLiteral
| SeesModelClause [ IdentifierLiteral ]
| VariablesModelClause [ Expression ]
| InvariantModelClause [ Predicate ]
| TheoremsModelClause [ Predicate ]
| VariantModelClause !Expression
| EventsModelClause [ Event ]
deriving (Typeable,Data,Show)
--
data MachineClause
= DefinitionsMachineClause [ Definition ]
| SeesMachineClause [ Expression ]
| PromotesMachineClause [ Expression ]
| UsesMachineClause [ Expression ]
| IncludesMachineClause [ MachineReference ]
| ExtendsMachineClause [ MachineReference ]
| ImportsMachineClause [ MachineReference ]
| SetsMachineClause [ Set ]
| VariablesMachineClause [ Expression ]
| ConcreteVariablesMachineClause [ Expression ]
| AbstractConstantsMachineClause [ Expression ]
| ConstantsMachineClause [ Expression ]
| PropertiesMachineClause !Predicate
| ConstraintsMachineClause !Predicate
| InitialisationMachineClause !Substitution
| InvariantMachineClause !Predicate
| AssertionsMachineClause [ Predicate ]
| ValuesMachineClause [ ValuesEntry ]
| LocalOperationsMachineClause [ Operation ]
| OperationsMachineClause [ Operation ]
deriving (Typeable,Data,Show)
--
data MachineReference
= MachineReference [ IdentifierLiteral ] [ Expression ]
deriving (Typeable,Data,Show)
--
data Definition
= PredicateDefinition !DefLiteralPredicate [ Expression ] !Predicate
| SubstitutionDefinition !DefLiteralSubstitution [ Expression ] !Substitution
| ExpressionDefinition !IdentifierLiteral [ Expression ] !Expression
| FileDefinition !StringBody
deriving (Typeable,Data,Show)
--
data Set
= DeferredSet [ IdentifierLiteral ]
| EnumeratedSet [ IdentifierLiteral ] [ Expression ]
deriving (Typeable,Data,Show)
--
data ValuesEntry
= ValuesEntry [ IdentifierLiteral ] !Expression
deriving (Typeable,Data,Show)
--
data Operation
= Operation [ Expression ] [ IdentifierLiteral ] [ Expression ] !Substitution
deriving (Typeable,Data,Show)
--
data Event
= Event !IdentifierLiteral !Eventstatus [ IdentifierLiteral ] [ Expression ] [ Predicate ] [ Predicate ] [ Substitution ] [ Witness ]
deriving (Typeable,Data,Show)
--
data Witness
= Witness !IdentifierLiteral !Predicate
deriving (Typeable,Data,Show)
--
data Eventstatus
= OrdinaryEventstatus
| AnticipatedEventstatus
| ConvergentEventstatus
deriving (Typeable,Data,Show)
--
data Predicate
= ConjunctPredicate !Predicate !Predicate
| NegationPredicate !Predicate
| DisjunctPredicate !Predicate !Predicate
| ImplicationPredicate !Predicate !Predicate
| EquivalencePredicate !Predicate !Predicate
| UniversalQuantificationPredicate [ Expression ] !Predicate
| ExistentialQuantificationPredicate [ Expression ] !Predicate
| EqualPredicate !Expression !Expression
| UnequalPredicate !Expression !Expression
| BelongPredicate !Expression !Expression
| NotBelongPredicate !Expression !Expression
| IncludePredicate !Expression !Expression
| IncludeStrictlyPredicate !Expression !Expression
| NotIncludePredicate !Expression !Expression
| NotIncludeStrictlyPredicate !Expression !Expression
| LessEqualPredicate !Expression !Expression
| LessPredicate !Expression !Expression
| GreaterEqualPredicate !Expression !Expression
| GreaterPredicate !Expression !Expression
| TruePredicate
| FalsePredicate
| FinitePredicate !Expression
| PartitionPredicate !Expression [ Expression ]
| DefinitionPredicate !DefLiteralPredicate [ Expression ]
deriving (Typeable,Data,Show)
--
data Expression
= IdentifierExpression [ IdentifierLiteral ]
| PrimedIdentifierExpression [ IdentifierLiteral ] !IntegerLiteral
| StringExpression (Maybe StringBody)
| TrueExpression
| FalseExpression
| IntegerExpression !IntegerLiteral
| MaxIntExpression
| MinIntExpression
| EmptySetExpression
| IntegerSetExpression
| NaturalSetExpression
| Natural1SetExpression
| NatSetExpression
| Nat1SetExpression
| IntSetExpression
| BoolSetExpression
| StringSetExpression
| ConvertBoolExpression !Predicate
| AddExpression !Expression !Expression
| MinusExpression !Expression !Expression
| MinusOrSetSubtractExpression !Expression !Expression
| UnaryExpression !Expression
| MultiplicationExpression !Expression !Expression
| CartesianProductExpression !Expression !Expression
| MultOrCartExpression !Expression !Expression
| DivExpression !Expression !Expression
| ModuloExpression !Expression !Expression
| PowerOfExpression !Expression !Expression
| SuccessorExpression
| PredecessorExpression
| MaxExpression !Expression
| MinExpression !Expression
| CardExpression !Expression
| GeneralSumExpression [ Expression ] !Predicate !Expression
| GeneralProductExpression [ Expression ] !Predicate !Expression
| CoupleExpression [ Expression ]
| ComprehensionSetExpression [ Expression ] !Predicate
| ProverComprehensionSetExpression [ Expression ] !Predicate
| EventBComprehensionSetExpression [ Expression ] !Expression !Predicate
| PowSubsetExpression !Expression
| Pow1SubsetExpression !Expression
| FinSubsetExpression !Expression
| Fin1SubsetExpression !Expression
| SetExtensionExpression [ Expression ]
| IntervalExpression !Expression !Expression
| UnionExpression !Expression !Expression
| IntersectionExpression !Expression !Expression
| SetSubtractionExpression !Expression !Expression
| GeneralUnionExpression !Expression
| GeneralIntersectionExpression !Expression
| QuantifiedUnionExpression [ Expression ] !Predicate !Expression
| QuantifiedIntersectionExpression [ Expression ] !Predicate !Expression
| RelationsExpression !Expression !Expression
| IdentityExpression !Expression
| EventBIdentityExpression
| ReverseExpression !Expression
| FirstProjectionExpression !Expression !Expression
| EventBFirstProjectionExpression !Expression
| EventBFirstProjectionV2Expression
| SecondProjectionExpression !Expression !Expression
| EventBSecondProjectionExpression !Expression
| EventBSecondProjectionV2Expression
| CompositionExpression !Expression !Expression
| RingExpression !Expression !Expression
| DirectProductExpression !Expression !Expression
| ParallelProductExpression !Expression !Expression
| IterationExpression !Expression !Expression
| ReflexiveClosureExpression !Expression
| ClosureExpression !Expression
| DomainExpression !Expression
| RangeExpression !Expression
| ImageExpression !Expression !Expression
| DomainRestrictionExpression !Expression !Expression
| DomainSubtractionExpression !Expression !Expression
| RangeRestrictionExpression !Expression !Expression
| RangeSubtractionExpression !Expression !Expression
| OverwriteExpression !Expression !Expression
| PartialFunctionExpression !Expression !Expression
| TotalFunctionExpression !Expression !Expression
| PartialInjectionExpression !Expression !Expression
| TotalInjectionExpression !Expression !Expression
| PartialSurjectionExpression !Expression !Expression
| TotalSurjectionExpression !Expression !Expression
| PartialBijectionExpression !Expression !Expression
| TotalBijectionExpression !Expression !Expression
| TotalRelationExpression !Expression !Expression
| SurjectionRelationExpression !Expression !Expression
| TotalSurjectionRelationExpression !Expression !Expression
| LambdaExpression [ Expression ] !Predicate !Expression
| TransFunctionExpression !Expression
| TransRelationExpression !Expression
| SeqExpression !Expression
| Seq1Expression !Expression
| IseqExpression !Expression
| Iseq1Expression !Expression
| PermExpression !Expression
| EmptySequenceExpression
| SequenceExtensionExpression [ Expression ]
| SizeExpression !Expression
| FirstExpression !Expression
| LastExpression !Expression
| FrontExpression !Expression
| TailExpression !Expression
| RevExpression !Expression
| ConcatExpression !Expression !Expression
| InsertFrontExpression !Expression !Expression
| InsertTailExpression !Expression !Expression
| RestrictFrontExpression !Expression !Expression
| RestrictTailExpression !Expression !Expression
| GeneralConcatExpression !Expression
| DefinitionExpression !IdentifierLiteral [ Expression ]
| FunctionExpression !Expression [ Expression ]
| TreeExpression !Expression
| BtreeExpression !Expression
| ConstExpression !Expression !Expression
| TopExpression !Expression
| SonsExpression !Expression
| PrefixExpression !Expression
| PostfixExpression !Expression
| SizetExpression !Expression
| MirrorExpression !Expression
| RankExpression !Expression !Expression
| FatherExpression !Expression !Expression
| SonExpression !Expression !Expression !Expression
| SubtreeExpression !Expression !Expression
| ArityExpression !Expression !Expression
| BinExpression !Expression (Maybe Expression) (Maybe Expression)
| LeftExpression !Expression
| RightExpression !Expression
| InfixExpression !Expression
| StructExpression [ RecEntry ]
| RecExpression [ RecEntry ]
| RecordFieldExpression !Expression !Expression
deriving (Typeable,Data,Show)
--
data RecEntry
= RecEntry !Expression !Expression
deriving (Typeable,Data,Show)
--
data Substitution
= BlockSubstitution !Substitution
| SkipSubstitution
| AssignSubstitution [ Expression ] [ Expression ]
| PreconditionSubstitution !Predicate !Substitution
| AssertionSubstitution !Predicate !Substitution
| ChoiceSubstitution [ Substitution ]
| ChoiceOrSubstitution !Substitution
| IfSubstitution !Predicate !Substitution [ Substitution ] (Maybe Substitution)
| IfElsifSubstitution !Predicate !Substitution
| SelectSubstitution !Predicate !Substitution [ Substitution ] (Maybe Substitution)
| SelectWhenSubstitution !Predicate !Substitution
| CaseSubstitution !Expression [ Expression ] !Substitution [ Substitution ] (Maybe Substitution)
| CaseOrSubstitution [ Expression ] !Substitution
| AnySubstitution [ Expression ] !Predicate !Substitution
| LetSubstitution [ Expression ] !Predicate !Substitution
| BecomesElementOfSubstitution [ Expression ] !Expression
| BecomesSuchSubstitution [ Expression ] !Predicate
| VarSubstitution [ Expression ] !Substitution
| SequenceSubstitution [ Substitution ]
| FuncOpSubstitution !Expression
| OpSubstitution !Expression [ Expression ]
| OpWithReturnSubstitution [ Expression ] [ IdentifierLiteral ] [ Expression ]
| WhileSubstitution !Predicate !Substitution !Predicate !Expression
| ParallelSubstitution [ Substitution ]
| DefinitionSubstitution !DefLiteralSubstitution [ Expression ]
deriving (Typeable,Data,Show)