packages feed

language-vhdl 0.1.0.2 → 0.1.1.0

raw patch · 3 files changed

+430/−195 lines, 3 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Language.VHDL.Syntax: BDIAliasDecl :: AliasDeclaration -> BlockDeclarativeItem
- Language.VHDL.Syntax: BDICompDecl :: ComponentDeclaration -> BlockDeclarativeItem
- Language.VHDL.Syntax: BDIConstantDecl :: ConstantDeclaration -> BlockDeclarativeItem
- Language.VHDL.Syntax: BDIFileDecl :: FileDeclaration -> BlockDeclarativeItem
- Language.VHDL.Syntax: BDIGroupDecl :: GroupDeclaration -> BlockDeclarativeItem
- Language.VHDL.Syntax: BDISharedDecl :: VariableDeclaration -> BlockDeclarativeItem
- Language.VHDL.Syntax: BDISignalDecl :: SignalDeclaration -> BlockDeclarativeItem
- Language.VHDL.Syntax: BDISubtypeDecl :: SubtypeDeclaration -> BlockDeclarativeItem
- Language.VHDL.Syntax: BDITypeDecl :: TypeDeclaration -> BlockDeclarativeItem
- Language.VHDL.Syntax: CDIAttr :: AttributeSpecification -> ConfigurationDeclarativeItem
- Language.VHDL.Syntax: EDIAliasDecl :: AliasDeclaration -> EntityDeclarativeItem
- Language.VHDL.Syntax: EDIConstantDecl :: ConstantDeclaration -> EntityDeclarativeItem
- Language.VHDL.Syntax: EDIFileDecl :: FileDeclaration -> EntityDeclarativeItem
- Language.VHDL.Syntax: EDIGroupDecl :: GroupDeclaration -> EntityDeclarativeItem
- Language.VHDL.Syntax: EDISharedDecl :: VariableDeclaration -> EntityDeclarativeItem
- Language.VHDL.Syntax: EDISignalDecl :: SignalDeclaration -> EntityDeclarativeItem
- Language.VHDL.Syntax: EDISubtypeDecl :: SubtypeDeclaration -> EntityDeclarativeItem
- Language.VHDL.Syntax: EDITypeDecl :: TypeDeclaration -> EntityDeclarativeItem
- Language.VHDL.Syntax: PBDIAliasDecl :: AliasDeclaration -> PackageBodyDeclarativeItem
- Language.VHDL.Syntax: PBDIConstantDecl :: ConstantDeclaration -> PackageBodyDeclarativeItem
- Language.VHDL.Syntax: PBDIFileDecl :: FileDeclaration -> PackageBodyDeclarativeItem
- Language.VHDL.Syntax: PBDIGroupDecl :: GroupDeclaration -> PackageBodyDeclarativeItem
- Language.VHDL.Syntax: PBDISharedDecl :: VariableDeclaration -> PackageBodyDeclarativeItem
- Language.VHDL.Syntax: PBDISubtypeDecl :: SubtypeDeclaration -> PackageBodyDeclarativeItem
- Language.VHDL.Syntax: PBDITypeDecl :: TypeDeclaration -> PackageBodyDeclarativeItem
- Language.VHDL.Syntax: PDIAliasDecl :: AliasDeclaration -> PackageDeclarativeItem
- Language.VHDL.Syntax: PDICompDecl :: ComponentDeclaration -> PackageDeclarativeItem
- Language.VHDL.Syntax: PDIConstantDecl :: ConstantDeclaration -> PackageDeclarativeItem
- Language.VHDL.Syntax: PDIDiscSpec :: DisconnectionSpecification -> PackageDeclarativeItem
- Language.VHDL.Syntax: PDIFileDecl :: FileDeclaration -> PackageDeclarativeItem
- Language.VHDL.Syntax: PDIGroupDecl :: GroupDeclaration -> PackageDeclarativeItem
- Language.VHDL.Syntax: PDIGroupTemp :: GroupTemplateDeclaration -> PackageDeclarativeItem
- Language.VHDL.Syntax: PDISharedDecl :: VariableDeclaration -> PackageDeclarativeItem
- Language.VHDL.Syntax: PDISignalDecl :: SignalDeclaration -> PackageDeclarativeItem
- Language.VHDL.Syntax: PDISubtypeDecl :: SubtypeDeclaration -> PackageDeclarativeItem
- Language.VHDL.Syntax: PDITypeDecl :: TypeDeclaration -> PackageDeclarativeItem
- Language.VHDL.Syntax: ProcDIAlias :: AliasDeclaration -> ProcessDeclarativeItem
- Language.VHDL.Syntax: ProcDIAttrDecl :: AttributeDeclaration -> ProcessDeclarativeItem
- Language.VHDL.Syntax: ProcDIAttrSpec :: AttributeSpecification -> ProcessDeclarativeItem
- Language.VHDL.Syntax: ProcDIConstant :: ConstantDeclaration -> ProcessDeclarativeItem
- Language.VHDL.Syntax: ProcDIFile :: FileDeclaration -> ProcessDeclarativeItem
- Language.VHDL.Syntax: ProcDISubprogBody :: SubprogramBody -> ProcessDeclarativeItem
- Language.VHDL.Syntax: ProcDISubprogDecl :: SubprogramDeclaration -> ProcessDeclarativeItem
- Language.VHDL.Syntax: ProcDISubtype :: SubtypeDeclaration -> ProcessDeclarativeItem
- Language.VHDL.Syntax: ProcDIType :: TypeDeclaration -> ProcessDeclarativeItem
- Language.VHDL.Syntax: ProcDIUseClause :: UseClause -> ProcessDeclarativeItem
- Language.VHDL.Syntax: ProcDIVariable :: VariableDeclaration -> ProcessDeclarativeItem
- Language.VHDL.Syntax: ProcessStatementPart :: ProcessStatementPart
- Language.VHDL.Syntax: SDIAliasDecl :: AliasDeclaration -> SubprogramDeclarativeItem
- Language.VHDL.Syntax: SDIConstantDecl :: ConstantDeclaration -> SubprogramDeclarativeItem
- Language.VHDL.Syntax: SDIFileDecl :: FileDeclaration -> SubprogramDeclarativeItem
- Language.VHDL.Syntax: SDIGroupDecl :: GroupDeclaration -> SubprogramDeclarativeItem
- Language.VHDL.Syntax: SDISubtypeDecl :: SubtypeDeclaration -> SubprogramDeclarativeItem
- Language.VHDL.Syntax: SDITypeDecl :: TypeDeclaration -> SubprogramDeclarativeItem
- Language.VHDL.Syntax: SDIVariableDecl :: VariableDeclaration -> SubprogramDeclarativeItem
- Language.VHDL.Syntax: data ProcessStatementPart
+ Language.VHDL.Syntax: BDIAlias :: AliasDeclaration -> BlockDeclarativeItem
+ Language.VHDL.Syntax: BDIComp :: ComponentDeclaration -> BlockDeclarativeItem
+ Language.VHDL.Syntax: BDIConstant :: ConstantDeclaration -> BlockDeclarativeItem
+ Language.VHDL.Syntax: BDIFile :: FileDeclaration -> BlockDeclarativeItem
+ Language.VHDL.Syntax: BDIGroup :: GroupDeclaration -> BlockDeclarativeItem
+ Language.VHDL.Syntax: BDIShared :: VariableDeclaration -> BlockDeclarativeItem
+ Language.VHDL.Syntax: BDISignal :: SignalDeclaration -> BlockDeclarativeItem
+ Language.VHDL.Syntax: BDISubtype :: SubtypeDeclaration -> BlockDeclarativeItem
+ Language.VHDL.Syntax: BDIType :: TypeDeclaration -> BlockDeclarativeItem
+ Language.VHDL.Syntax: CDIAttrSpec :: AttributeSpecification -> ConfigurationDeclarativeItem
+ Language.VHDL.Syntax: EDIAlias :: AliasDeclaration -> EntityDeclarativeItem
+ Language.VHDL.Syntax: EDIConstant :: ConstantDeclaration -> EntityDeclarativeItem
+ Language.VHDL.Syntax: EDIFile :: FileDeclaration -> EntityDeclarativeItem
+ Language.VHDL.Syntax: EDIGroup :: GroupDeclaration -> EntityDeclarativeItem
+ Language.VHDL.Syntax: EDIShared :: VariableDeclaration -> EntityDeclarativeItem
+ Language.VHDL.Syntax: EDISignal :: SignalDeclaration -> EntityDeclarativeItem
+ Language.VHDL.Syntax: EDISubtype :: SubtypeDeclaration -> EntityDeclarativeItem
+ Language.VHDL.Syntax: EDIType :: TypeDeclaration -> EntityDeclarativeItem
+ Language.VHDL.Syntax: PBDIAlias :: AliasDeclaration -> PackageBodyDeclarativeItem
+ Language.VHDL.Syntax: PBDIConstant :: ConstantDeclaration -> PackageBodyDeclarativeItem
+ Language.VHDL.Syntax: PBDIFile :: FileDeclaration -> PackageBodyDeclarativeItem
+ Language.VHDL.Syntax: PBDIGroup :: GroupDeclaration -> PackageBodyDeclarativeItem
+ Language.VHDL.Syntax: PBDIShared :: VariableDeclaration -> PackageBodyDeclarativeItem
+ Language.VHDL.Syntax: PBDISubtype :: SubtypeDeclaration -> PackageBodyDeclarativeItem
+ Language.VHDL.Syntax: PBDIType :: TypeDeclaration -> PackageBodyDeclarativeItem
+ Language.VHDL.Syntax: PDIAlias :: AliasDeclaration -> ProcessDeclarativeItem
+ Language.VHDL.Syntax: PDIConstant :: ConstantDeclaration -> ProcessDeclarativeItem
+ Language.VHDL.Syntax: PDIFile :: FileDeclaration -> ProcessDeclarativeItem
+ Language.VHDL.Syntax: PDISubtype :: SubtypeDeclaration -> ProcessDeclarativeItem
+ Language.VHDL.Syntax: PDIType :: TypeDeclaration -> ProcessDeclarativeItem
+ Language.VHDL.Syntax: PDIVariable :: VariableDeclaration -> ProcessDeclarativeItem
+ Language.VHDL.Syntax: PHDIAlias :: AliasDeclaration -> PackageDeclarativeItem
+ Language.VHDL.Syntax: PHDIAttrDecl :: AttributeDeclaration -> PackageDeclarativeItem
+ Language.VHDL.Syntax: PHDIAttrSpec :: AttributeSpecification -> PackageDeclarativeItem
+ Language.VHDL.Syntax: PHDIComp :: ComponentDeclaration -> PackageDeclarativeItem
+ Language.VHDL.Syntax: PHDIConstant :: ConstantDeclaration -> PackageDeclarativeItem
+ Language.VHDL.Syntax: PHDIDiscSpec :: DisconnectionSpecification -> PackageDeclarativeItem
+ Language.VHDL.Syntax: PHDIFile :: FileDeclaration -> PackageDeclarativeItem
+ Language.VHDL.Syntax: PHDIGroup :: GroupDeclaration -> PackageDeclarativeItem
+ Language.VHDL.Syntax: PHDIGroupTemp :: GroupTemplateDeclaration -> PackageDeclarativeItem
+ Language.VHDL.Syntax: PHDIShared :: VariableDeclaration -> PackageDeclarativeItem
+ Language.VHDL.Syntax: PHDISignal :: SignalDeclaration -> PackageDeclarativeItem
+ Language.VHDL.Syntax: PHDISubprogBody :: SubprogramBody -> PackageDeclarativeItem
+ Language.VHDL.Syntax: PHDISubprogDecl :: SubprogramDeclaration -> PackageDeclarativeItem
+ Language.VHDL.Syntax: PHDISubtype :: SubtypeDeclaration -> PackageDeclarativeItem
+ Language.VHDL.Syntax: PHDIType :: TypeDeclaration -> PackageDeclarativeItem
+ Language.VHDL.Syntax: PHDIUseClause :: UseClause -> PackageDeclarativeItem
+ Language.VHDL.Syntax: SDIAlias :: AliasDeclaration -> SubprogramDeclarativeItem
+ Language.VHDL.Syntax: SDIConstant :: ConstantDeclaration -> SubprogramDeclarativeItem
+ Language.VHDL.Syntax: SDIFile :: FileDeclaration -> SubprogramDeclarativeItem
+ Language.VHDL.Syntax: SDIGroup :: GroupDeclaration -> SubprogramDeclarativeItem
+ Language.VHDL.Syntax: SDISubtype :: SubtypeDeclaration -> SubprogramDeclarativeItem
+ Language.VHDL.Syntax: SDIType :: TypeDeclaration -> SubprogramDeclarativeItem
+ Language.VHDL.Syntax: SDIVariable :: VariableDeclaration -> SubprogramDeclarativeItem
+ Language.VHDL.Syntax: instance Eq AbstractLiteral
+ Language.VHDL.Syntax: instance Eq AccessTypeDefinition
+ Language.VHDL.Syntax: instance Eq ActualDesignator
+ Language.VHDL.Syntax: instance Eq ActualPart
+ Language.VHDL.Syntax: instance Eq AddingOperator
+ Language.VHDL.Syntax: instance Eq Aggregate
+ Language.VHDL.Syntax: instance Eq AliasDeclaration
+ Language.VHDL.Syntax: instance Eq AliasDesignator
+ Language.VHDL.Syntax: instance Eq Allocator
+ Language.VHDL.Syntax: instance Eq ArchitectureBody
+ Language.VHDL.Syntax: instance Eq ArrayTypeDefinition
+ Language.VHDL.Syntax: instance Eq Assertion
+ Language.VHDL.Syntax: instance Eq AssertionStatement
+ Language.VHDL.Syntax: instance Eq AssociationElement
+ Language.VHDL.Syntax: instance Eq AssociationList
+ Language.VHDL.Syntax: instance Eq AttributeDeclaration
+ Language.VHDL.Syntax: instance Eq AttributeName
+ Language.VHDL.Syntax: instance Eq AttributeSpecification
+ Language.VHDL.Syntax: instance Eq Base
+ Language.VHDL.Syntax: instance Eq BaseSpecifier
+ Language.VHDL.Syntax: instance Eq BaseUnitDeclaration
+ Language.VHDL.Syntax: instance Eq BasedInteger
+ Language.VHDL.Syntax: instance Eq BasedLiteral
+ Language.VHDL.Syntax: instance Eq BasicCharacter
+ Language.VHDL.Syntax: instance Eq BasicGraphicCharacter
+ Language.VHDL.Syntax: instance Eq BasicIdentifier
+ Language.VHDL.Syntax: instance Eq BindingIndication
+ Language.VHDL.Syntax: instance Eq BitStringLiteral
+ Language.VHDL.Syntax: instance Eq BitValue
+ Language.VHDL.Syntax: instance Eq BlockConfiguration
+ Language.VHDL.Syntax: instance Eq BlockDeclarativeItem
+ Language.VHDL.Syntax: instance Eq BlockHeader
+ Language.VHDL.Syntax: instance Eq BlockSpecification
+ Language.VHDL.Syntax: instance Eq BlockStatement
+ Language.VHDL.Syntax: instance Eq CaseStatement
+ Language.VHDL.Syntax: instance Eq CaseStatementAlternative
+ Language.VHDL.Syntax: instance Eq CharacterLiteral
+ Language.VHDL.Syntax: instance Eq Choice
+ Language.VHDL.Syntax: instance Eq Choices
+ Language.VHDL.Syntax: instance Eq ComponentConfiguration
+ Language.VHDL.Syntax: instance Eq ComponentDeclaration
+ Language.VHDL.Syntax: instance Eq ComponentInstantiationStatement
+ Language.VHDL.Syntax: instance Eq ComponentSpecification
+ Language.VHDL.Syntax: instance Eq CompositeTypeDefinition
+ Language.VHDL.Syntax: instance Eq ConcurrentAssertionStatement
+ Language.VHDL.Syntax: instance Eq ConcurrentProcedureCallStatement
+ Language.VHDL.Syntax: instance Eq ConcurrentSignalAssignmentStatement
+ Language.VHDL.Syntax: instance Eq ConcurrentStatement
+ Language.VHDL.Syntax: instance Eq ConditionClause
+ Language.VHDL.Syntax: instance Eq ConditionalSignalAssignment
+ Language.VHDL.Syntax: instance Eq ConditionalWaveforms
+ Language.VHDL.Syntax: instance Eq ConfigurationDeclaration
+ Language.VHDL.Syntax: instance Eq ConfigurationDeclarativeItem
+ Language.VHDL.Syntax: instance Eq ConfigurationItem
+ Language.VHDL.Syntax: instance Eq ConfigurationSpecification
+ Language.VHDL.Syntax: instance Eq ConstantDeclaration
+ Language.VHDL.Syntax: instance Eq ConstrainedArrayDefinition
+ Language.VHDL.Syntax: instance Eq Constraint
+ Language.VHDL.Syntax: instance Eq ContextClause
+ Language.VHDL.Syntax: instance Eq ContextItem
+ Language.VHDL.Syntax: instance Eq DecimalLiteral
+ Language.VHDL.Syntax: instance Eq Declaration
+ Language.VHDL.Syntax: instance Eq DelayMechanism
+ Language.VHDL.Syntax: instance Eq DesignFile
+ Language.VHDL.Syntax: instance Eq DesignUnit
+ Language.VHDL.Syntax: instance Eq Designator
+ Language.VHDL.Syntax: instance Eq Direction
+ Language.VHDL.Syntax: instance Eq DisconnectionSpecification
+ Language.VHDL.Syntax: instance Eq DiscreteRange
+ Language.VHDL.Syntax: instance Eq ElementAssociation
+ Language.VHDL.Syntax: instance Eq ElementDeclaration
+ Language.VHDL.Syntax: instance Eq EntityAspect
+ Language.VHDL.Syntax: instance Eq EntityClass
+ Language.VHDL.Syntax: instance Eq EntityClassEntry
+ Language.VHDL.Syntax: instance Eq EntityDeclaration
+ Language.VHDL.Syntax: instance Eq EntityDeclarativeItem
+ Language.VHDL.Syntax: instance Eq EntityDesignator
+ Language.VHDL.Syntax: instance Eq EntityHeader
+ Language.VHDL.Syntax: instance Eq EntityNameList
+ Language.VHDL.Syntax: instance Eq EntitySpecification
+ Language.VHDL.Syntax: instance Eq EntityStatement
+ Language.VHDL.Syntax: instance Eq EntityTag
+ Language.VHDL.Syntax: instance Eq EnumerationLiteral
+ Language.VHDL.Syntax: instance Eq EnumerationTypeDefinition
+ Language.VHDL.Syntax: instance Eq ExitStatement
+ Language.VHDL.Syntax: instance Eq Exponent
+ Language.VHDL.Syntax: instance Eq Expression
+ Language.VHDL.Syntax: instance Eq ExtendedDigit
+ Language.VHDL.Syntax: instance Eq ExtendedIdentifier
+ Language.VHDL.Syntax: instance Eq Factor
+ Language.VHDL.Syntax: instance Eq FileDeclaration
+ Language.VHDL.Syntax: instance Eq FileOpenInformation
+ Language.VHDL.Syntax: instance Eq FileTypeDefinition
+ Language.VHDL.Syntax: instance Eq FormalDesignator
+ Language.VHDL.Syntax: instance Eq FormalPart
+ Language.VHDL.Syntax: instance Eq FullTypeDeclaration
+ Language.VHDL.Syntax: instance Eq FunctionCall
+ Language.VHDL.Syntax: instance Eq GenerateStatement
+ Language.VHDL.Syntax: instance Eq GenerationScheme
+ Language.VHDL.Syntax: instance Eq GenericClause
+ Language.VHDL.Syntax: instance Eq GenericMapAspect
+ Language.VHDL.Syntax: instance Eq GraphicCharacter
+ Language.VHDL.Syntax: instance Eq GroupConstituent
+ Language.VHDL.Syntax: instance Eq GroupDeclaration
+ Language.VHDL.Syntax: instance Eq GroupTemplateDeclaration
+ Language.VHDL.Syntax: instance Eq GuardedSignalSpecification
+ Language.VHDL.Syntax: instance Eq Identifier
+ Language.VHDL.Syntax: instance Eq IfStatement
+ Language.VHDL.Syntax: instance Eq IncompleteTypeDeclaration
+ Language.VHDL.Syntax: instance Eq IndexConstraint
+ Language.VHDL.Syntax: instance Eq IndexSpecification
+ Language.VHDL.Syntax: instance Eq IndexSubtypeDefinition
+ Language.VHDL.Syntax: instance Eq IndexedName
+ Language.VHDL.Syntax: instance Eq InstantiatedUnit
+ Language.VHDL.Syntax: instance Eq InstantiationList
+ Language.VHDL.Syntax: instance Eq InterfaceDeclaration
+ Language.VHDL.Syntax: instance Eq InterfaceList
+ Language.VHDL.Syntax: instance Eq IterationScheme
+ Language.VHDL.Syntax: instance Eq Letter
+ Language.VHDL.Syntax: instance Eq LetterOrDigit
+ Language.VHDL.Syntax: instance Eq LibraryClause
+ Language.VHDL.Syntax: instance Eq LibraryUnit
+ Language.VHDL.Syntax: instance Eq Literal
+ Language.VHDL.Syntax: instance Eq LogicalName
+ Language.VHDL.Syntax: instance Eq LogicalNameList
+ Language.VHDL.Syntax: instance Eq LogicalOperator
+ Language.VHDL.Syntax: instance Eq LoopStatement
+ Language.VHDL.Syntax: instance Eq MiscellaneousOperator
+ Language.VHDL.Syntax: instance Eq Mode
+ Language.VHDL.Syntax: instance Eq MultiplyingOperator
+ Language.VHDL.Syntax: instance Eq Name
+ Language.VHDL.Syntax: instance Eq NextStatement
+ Language.VHDL.Syntax: instance Eq NullStatement
+ Language.VHDL.Syntax: instance Eq NumericLiteral
+ Language.VHDL.Syntax: instance Eq ObjectDeclaration
+ Language.VHDL.Syntax: instance Eq Options
+ Language.VHDL.Syntax: instance Eq PackageBody
+ Language.VHDL.Syntax: instance Eq PackageBodyDeclarativeItem
+ Language.VHDL.Syntax: instance Eq PackageDeclaration
+ Language.VHDL.Syntax: instance Eq PackageDeclarativeItem
+ Language.VHDL.Syntax: instance Eq ParameterSpecification
+ Language.VHDL.Syntax: instance Eq PhysicalLiteral
+ Language.VHDL.Syntax: instance Eq PhysicalTypeDefinition
+ Language.VHDL.Syntax: instance Eq PortClause
+ Language.VHDL.Syntax: instance Eq PortMapAspect
+ Language.VHDL.Syntax: instance Eq Prefix
+ Language.VHDL.Syntax: instance Eq Primary
+ Language.VHDL.Syntax: instance Eq PrimaryUnit
+ Language.VHDL.Syntax: instance Eq ProcedureCall
+ Language.VHDL.Syntax: instance Eq ProcedureCallStatement
+ Language.VHDL.Syntax: instance Eq ProcessDeclarativeItem
+ Language.VHDL.Syntax: instance Eq ProcessStatement
+ Language.VHDL.Syntax: instance Eq QualifiedExpression
+ Language.VHDL.Syntax: instance Eq Range
+ Language.VHDL.Syntax: instance Eq RangeConstraint
+ Language.VHDL.Syntax: instance Eq RecordTypeDefinition
+ Language.VHDL.Syntax: instance Eq Relation
+ Language.VHDL.Syntax: instance Eq RelationalOperator
+ Language.VHDL.Syntax: instance Eq ReportStatement
+ Language.VHDL.Syntax: instance Eq ReturnStatement
+ Language.VHDL.Syntax: instance Eq ScalarTypeDefinition
+ Language.VHDL.Syntax: instance Eq SecondaryUnit
+ Language.VHDL.Syntax: instance Eq SecondaryUnitDeclaration
+ Language.VHDL.Syntax: instance Eq SelectedName
+ Language.VHDL.Syntax: instance Eq SelectedSignalAssignment
+ Language.VHDL.Syntax: instance Eq SelectedWaveforms
+ Language.VHDL.Syntax: instance Eq SensitivityClause
+ Language.VHDL.Syntax: instance Eq SensitivityList
+ Language.VHDL.Syntax: instance Eq SequentialStatement
+ Language.VHDL.Syntax: instance Eq ShiftExpression
+ Language.VHDL.Syntax: instance Eq ShiftOperator
+ Language.VHDL.Syntax: instance Eq Sign
+ Language.VHDL.Syntax: instance Eq SignalAssignmentStatement
+ Language.VHDL.Syntax: instance Eq SignalDeclaration
+ Language.VHDL.Syntax: instance Eq SignalKind
+ Language.VHDL.Syntax: instance Eq SignalList
+ Language.VHDL.Syntax: instance Eq Signature
+ Language.VHDL.Syntax: instance Eq SimpleExpression
+ Language.VHDL.Syntax: instance Eq SliceName
+ Language.VHDL.Syntax: instance Eq StringLiteral
+ Language.VHDL.Syntax: instance Eq SubprogramBody
+ Language.VHDL.Syntax: instance Eq SubprogramDeclarativeItem
+ Language.VHDL.Syntax: instance Eq SubprogramKind
+ Language.VHDL.Syntax: instance Eq SubprogramSpecification
+ Language.VHDL.Syntax: instance Eq SubtypeDeclaration
+ Language.VHDL.Syntax: instance Eq SubtypeIndication
+ Language.VHDL.Syntax: instance Eq Suffix
+ Language.VHDL.Syntax: instance Eq Target
+ Language.VHDL.Syntax: instance Eq Term
+ Language.VHDL.Syntax: instance Eq TimeoutClause
+ Language.VHDL.Syntax: instance Eq TypeConversion
+ Language.VHDL.Syntax: instance Eq TypeDeclaration
+ Language.VHDL.Syntax: instance Eq TypeDefinition
+ Language.VHDL.Syntax: instance Eq TypeMark
+ Language.VHDL.Syntax: instance Eq UnconstrainedArrayDefinition
+ Language.VHDL.Syntax: instance Eq UseClause
+ Language.VHDL.Syntax: instance Eq VariableAssignmentStatement
+ Language.VHDL.Syntax: instance Eq VariableDeclaration
+ Language.VHDL.Syntax: instance Eq WaitStatement
+ Language.VHDL.Syntax: instance Eq Waveform
+ Language.VHDL.Syntax: instance Eq WaveformElement
+ Language.VHDL.Syntax: instance Show AbstractLiteral
+ Language.VHDL.Syntax: instance Show AccessTypeDefinition
+ Language.VHDL.Syntax: instance Show ActualDesignator
+ Language.VHDL.Syntax: instance Show ActualPart
+ Language.VHDL.Syntax: instance Show AddingOperator
+ Language.VHDL.Syntax: instance Show Aggregate
+ Language.VHDL.Syntax: instance Show AliasDeclaration
+ Language.VHDL.Syntax: instance Show AliasDesignator
+ Language.VHDL.Syntax: instance Show Allocator
+ Language.VHDL.Syntax: instance Show ArchitectureBody
+ Language.VHDL.Syntax: instance Show ArrayTypeDefinition
+ Language.VHDL.Syntax: instance Show Assertion
+ Language.VHDL.Syntax: instance Show AssertionStatement
+ Language.VHDL.Syntax: instance Show AssociationElement
+ Language.VHDL.Syntax: instance Show AssociationList
+ Language.VHDL.Syntax: instance Show AttributeDeclaration
+ Language.VHDL.Syntax: instance Show AttributeName
+ Language.VHDL.Syntax: instance Show AttributeSpecification
+ Language.VHDL.Syntax: instance Show Base
+ Language.VHDL.Syntax: instance Show BaseSpecifier
+ Language.VHDL.Syntax: instance Show BaseUnitDeclaration
+ Language.VHDL.Syntax: instance Show BasedInteger
+ Language.VHDL.Syntax: instance Show BasedLiteral
+ Language.VHDL.Syntax: instance Show BasicCharacter
+ Language.VHDL.Syntax: instance Show BasicGraphicCharacter
+ Language.VHDL.Syntax: instance Show BasicIdentifier
+ Language.VHDL.Syntax: instance Show BindingIndication
+ Language.VHDL.Syntax: instance Show BitStringLiteral
+ Language.VHDL.Syntax: instance Show BitValue
+ Language.VHDL.Syntax: instance Show BlockConfiguration
+ Language.VHDL.Syntax: instance Show BlockDeclarativeItem
+ Language.VHDL.Syntax: instance Show BlockHeader
+ Language.VHDL.Syntax: instance Show BlockSpecification
+ Language.VHDL.Syntax: instance Show BlockStatement
+ Language.VHDL.Syntax: instance Show CaseStatement
+ Language.VHDL.Syntax: instance Show CaseStatementAlternative
+ Language.VHDL.Syntax: instance Show CharacterLiteral
+ Language.VHDL.Syntax: instance Show Choice
+ Language.VHDL.Syntax: instance Show Choices
+ Language.VHDL.Syntax: instance Show ComponentConfiguration
+ Language.VHDL.Syntax: instance Show ComponentDeclaration
+ Language.VHDL.Syntax: instance Show ComponentInstantiationStatement
+ Language.VHDL.Syntax: instance Show ComponentSpecification
+ Language.VHDL.Syntax: instance Show CompositeTypeDefinition
+ Language.VHDL.Syntax: instance Show ConcurrentAssertionStatement
+ Language.VHDL.Syntax: instance Show ConcurrentProcedureCallStatement
+ Language.VHDL.Syntax: instance Show ConcurrentSignalAssignmentStatement
+ Language.VHDL.Syntax: instance Show ConcurrentStatement
+ Language.VHDL.Syntax: instance Show ConditionClause
+ Language.VHDL.Syntax: instance Show ConditionalSignalAssignment
+ Language.VHDL.Syntax: instance Show ConditionalWaveforms
+ Language.VHDL.Syntax: instance Show ConfigurationDeclaration
+ Language.VHDL.Syntax: instance Show ConfigurationDeclarativeItem
+ Language.VHDL.Syntax: instance Show ConfigurationItem
+ Language.VHDL.Syntax: instance Show ConfigurationSpecification
+ Language.VHDL.Syntax: instance Show ConstantDeclaration
+ Language.VHDL.Syntax: instance Show ConstrainedArrayDefinition
+ Language.VHDL.Syntax: instance Show Constraint
+ Language.VHDL.Syntax: instance Show ContextClause
+ Language.VHDL.Syntax: instance Show ContextItem
+ Language.VHDL.Syntax: instance Show DecimalLiteral
+ Language.VHDL.Syntax: instance Show Declaration
+ Language.VHDL.Syntax: instance Show DelayMechanism
+ Language.VHDL.Syntax: instance Show DesignFile
+ Language.VHDL.Syntax: instance Show DesignUnit
+ Language.VHDL.Syntax: instance Show Designator
+ Language.VHDL.Syntax: instance Show Direction
+ Language.VHDL.Syntax: instance Show DisconnectionSpecification
+ Language.VHDL.Syntax: instance Show DiscreteRange
+ Language.VHDL.Syntax: instance Show ElementAssociation
+ Language.VHDL.Syntax: instance Show ElementDeclaration
+ Language.VHDL.Syntax: instance Show EntityAspect
+ Language.VHDL.Syntax: instance Show EntityClass
+ Language.VHDL.Syntax: instance Show EntityClassEntry
+ Language.VHDL.Syntax: instance Show EntityDeclaration
+ Language.VHDL.Syntax: instance Show EntityDeclarativeItem
+ Language.VHDL.Syntax: instance Show EntityDesignator
+ Language.VHDL.Syntax: instance Show EntityHeader
+ Language.VHDL.Syntax: instance Show EntityNameList
+ Language.VHDL.Syntax: instance Show EntitySpecification
+ Language.VHDL.Syntax: instance Show EntityStatement
+ Language.VHDL.Syntax: instance Show EntityTag
+ Language.VHDL.Syntax: instance Show EnumerationLiteral
+ Language.VHDL.Syntax: instance Show EnumerationTypeDefinition
+ Language.VHDL.Syntax: instance Show ExitStatement
+ Language.VHDL.Syntax: instance Show Exponent
+ Language.VHDL.Syntax: instance Show Expression
+ Language.VHDL.Syntax: instance Show ExtendedDigit
+ Language.VHDL.Syntax: instance Show ExtendedIdentifier
+ Language.VHDL.Syntax: instance Show Factor
+ Language.VHDL.Syntax: instance Show FileDeclaration
+ Language.VHDL.Syntax: instance Show FileOpenInformation
+ Language.VHDL.Syntax: instance Show FileTypeDefinition
+ Language.VHDL.Syntax: instance Show FormalDesignator
+ Language.VHDL.Syntax: instance Show FormalPart
+ Language.VHDL.Syntax: instance Show FullTypeDeclaration
+ Language.VHDL.Syntax: instance Show FunctionCall
+ Language.VHDL.Syntax: instance Show GenerateStatement
+ Language.VHDL.Syntax: instance Show GenerationScheme
+ Language.VHDL.Syntax: instance Show GenericClause
+ Language.VHDL.Syntax: instance Show GenericMapAspect
+ Language.VHDL.Syntax: instance Show GraphicCharacter
+ Language.VHDL.Syntax: instance Show GroupConstituent
+ Language.VHDL.Syntax: instance Show GroupDeclaration
+ Language.VHDL.Syntax: instance Show GroupTemplateDeclaration
+ Language.VHDL.Syntax: instance Show GuardedSignalSpecification
+ Language.VHDL.Syntax: instance Show Identifier
+ Language.VHDL.Syntax: instance Show IfStatement
+ Language.VHDL.Syntax: instance Show IncompleteTypeDeclaration
+ Language.VHDL.Syntax: instance Show IndexConstraint
+ Language.VHDL.Syntax: instance Show IndexSpecification
+ Language.VHDL.Syntax: instance Show IndexSubtypeDefinition
+ Language.VHDL.Syntax: instance Show IndexedName
+ Language.VHDL.Syntax: instance Show InstantiatedUnit
+ Language.VHDL.Syntax: instance Show InstantiationList
+ Language.VHDL.Syntax: instance Show InterfaceDeclaration
+ Language.VHDL.Syntax: instance Show InterfaceList
+ Language.VHDL.Syntax: instance Show IterationScheme
+ Language.VHDL.Syntax: instance Show Letter
+ Language.VHDL.Syntax: instance Show LetterOrDigit
+ Language.VHDL.Syntax: instance Show LibraryClause
+ Language.VHDL.Syntax: instance Show LibraryUnit
+ Language.VHDL.Syntax: instance Show Literal
+ Language.VHDL.Syntax: instance Show LogicalName
+ Language.VHDL.Syntax: instance Show LogicalNameList
+ Language.VHDL.Syntax: instance Show LogicalOperator
+ Language.VHDL.Syntax: instance Show LoopStatement
+ Language.VHDL.Syntax: instance Show MiscellaneousOperator
+ Language.VHDL.Syntax: instance Show Mode
+ Language.VHDL.Syntax: instance Show MultiplyingOperator
+ Language.VHDL.Syntax: instance Show Name
+ Language.VHDL.Syntax: instance Show NextStatement
+ Language.VHDL.Syntax: instance Show NullStatement
+ Language.VHDL.Syntax: instance Show NumericLiteral
+ Language.VHDL.Syntax: instance Show ObjectDeclaration
+ Language.VHDL.Syntax: instance Show Options
+ Language.VHDL.Syntax: instance Show PackageBody
+ Language.VHDL.Syntax: instance Show PackageBodyDeclarativeItem
+ Language.VHDL.Syntax: instance Show PackageDeclaration
+ Language.VHDL.Syntax: instance Show PackageDeclarativeItem
+ Language.VHDL.Syntax: instance Show ParameterSpecification
+ Language.VHDL.Syntax: instance Show PhysicalLiteral
+ Language.VHDL.Syntax: instance Show PhysicalTypeDefinition
+ Language.VHDL.Syntax: instance Show PortClause
+ Language.VHDL.Syntax: instance Show PortMapAspect
+ Language.VHDL.Syntax: instance Show Prefix
+ Language.VHDL.Syntax: instance Show Primary
+ Language.VHDL.Syntax: instance Show PrimaryUnit
+ Language.VHDL.Syntax: instance Show ProcedureCall
+ Language.VHDL.Syntax: instance Show ProcedureCallStatement
+ Language.VHDL.Syntax: instance Show ProcessDeclarativeItem
+ Language.VHDL.Syntax: instance Show ProcessStatement
+ Language.VHDL.Syntax: instance Show QualifiedExpression
+ Language.VHDL.Syntax: instance Show Range
+ Language.VHDL.Syntax: instance Show RangeConstraint
+ Language.VHDL.Syntax: instance Show RecordTypeDefinition
+ Language.VHDL.Syntax: instance Show Relation
+ Language.VHDL.Syntax: instance Show RelationalOperator
+ Language.VHDL.Syntax: instance Show ReportStatement
+ Language.VHDL.Syntax: instance Show ReturnStatement
+ Language.VHDL.Syntax: instance Show ScalarTypeDefinition
+ Language.VHDL.Syntax: instance Show SecondaryUnit
+ Language.VHDL.Syntax: instance Show SecondaryUnitDeclaration
+ Language.VHDL.Syntax: instance Show SelectedName
+ Language.VHDL.Syntax: instance Show SelectedSignalAssignment
+ Language.VHDL.Syntax: instance Show SelectedWaveforms
+ Language.VHDL.Syntax: instance Show SensitivityClause
+ Language.VHDL.Syntax: instance Show SensitivityList
+ Language.VHDL.Syntax: instance Show SequentialStatement
+ Language.VHDL.Syntax: instance Show ShiftExpression
+ Language.VHDL.Syntax: instance Show ShiftOperator
+ Language.VHDL.Syntax: instance Show Sign
+ Language.VHDL.Syntax: instance Show SignalAssignmentStatement
+ Language.VHDL.Syntax: instance Show SignalDeclaration
+ Language.VHDL.Syntax: instance Show SignalKind
+ Language.VHDL.Syntax: instance Show SignalList
+ Language.VHDL.Syntax: instance Show Signature
+ Language.VHDL.Syntax: instance Show SimpleExpression
+ Language.VHDL.Syntax: instance Show SliceName
+ Language.VHDL.Syntax: instance Show StringLiteral
+ Language.VHDL.Syntax: instance Show SubprogramBody
+ Language.VHDL.Syntax: instance Show SubprogramDeclarativeItem
+ Language.VHDL.Syntax: instance Show SubprogramKind
+ Language.VHDL.Syntax: instance Show SubprogramSpecification
+ Language.VHDL.Syntax: instance Show SubtypeDeclaration
+ Language.VHDL.Syntax: instance Show SubtypeIndication
+ Language.VHDL.Syntax: instance Show Suffix
+ Language.VHDL.Syntax: instance Show Target
+ Language.VHDL.Syntax: instance Show Term
+ Language.VHDL.Syntax: instance Show TimeoutClause
+ Language.VHDL.Syntax: instance Show TypeConversion
+ Language.VHDL.Syntax: instance Show TypeDeclaration
+ Language.VHDL.Syntax: instance Show TypeDefinition
+ Language.VHDL.Syntax: instance Show TypeMark
+ Language.VHDL.Syntax: instance Show UnconstrainedArrayDefinition
+ Language.VHDL.Syntax: instance Show UseClause
+ Language.VHDL.Syntax: instance Show VariableAssignmentStatement
+ Language.VHDL.Syntax: instance Show VariableDeclaration
+ Language.VHDL.Syntax: instance Show WaitStatement
+ Language.VHDL.Syntax: instance Show Waveform
+ Language.VHDL.Syntax: instance Show WaveformElement
+ Language.VHDL.Syntax: type ProcessStatementPart = [SequentialStatement]
- Language.VHDL.Syntax: PDIAttrDecl :: AttributeDeclaration -> PackageDeclarativeItem
+ Language.VHDL.Syntax: PDIAttrDecl :: AttributeDeclaration -> ProcessDeclarativeItem
- Language.VHDL.Syntax: PDIAttrSpec :: AttributeSpecification -> PackageDeclarativeItem
+ Language.VHDL.Syntax: PDIAttrSpec :: AttributeSpecification -> ProcessDeclarativeItem
- Language.VHDL.Syntax: PDISubprogBody :: SubprogramBody -> PackageDeclarativeItem
+ Language.VHDL.Syntax: PDISubprogBody :: SubprogramBody -> ProcessDeclarativeItem
- Language.VHDL.Syntax: PDISubprogDecl :: SubprogramDeclaration -> PackageDeclarativeItem
+ Language.VHDL.Syntax: PDISubprogDecl :: SubprogramDeclaration -> ProcessDeclarativeItem
- Language.VHDL.Syntax: PDIUseClause :: UseClause -> PackageDeclarativeItem
+ Language.VHDL.Syntax: PDIUseClause :: UseClause -> ProcessDeclarativeItem
- Language.VHDL.Syntax: ProcessStatement :: Maybe Label -> Bool -> Maybe SensitivityList -> ProcessDeclarativePart -> ProcessStatement -> ProcessStatement
+ Language.VHDL.Syntax: ProcessStatement :: Maybe Label -> Bool -> Maybe SensitivityList -> ProcessDeclarativePart -> ProcessStatementPart -> ProcessStatement
- Language.VHDL.Syntax: procs_statement_part :: ProcessStatement -> ProcessStatement
+ Language.VHDL.Syntax: procs_statement_part :: ProcessStatement -> ProcessStatementPart

Files

language-vhdl.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/  name:                language-vhdl-version:             0.1.0.2+version:             0.1.1.0 synopsis:            VHDL AST and pretty printer in Haskell -- description:          license:             BSD3
src/Language/VHDL/Pretty.hs view
@@ -66,12 +66,17 @@  instance Pretty ArchitectureBody where   pp (ArchitectureBody i n d s) =-      vcat [header, indent (pp d), text "BEGIN", indent (pp s), footer]+      vcat [ header+           , indent (vpp d)+           , text "BEGIN"+           , indent (vpp s)+           , footer+           ]     where       header = text "ARCHITECTURE" <+> pp i            <+> text "OF" <+> pp n            <+> text "IS"-      footer = text "END ARCITECTURE" <+> pp n <+> semi+      footer = text "END ARCHITECTURE" <+> pp i <+> semi  --instance Pretty ArchitectureDeclarativePart where pp = undefined @@ -142,23 +147,23 @@          , text "END FOR" <+> semi]  instance Pretty BlockDeclarativeItem where-  pp (BDISubprogDecl d)  = pp d-  pp (BDISubprogBody b)  = pp b-  pp (BDITypeDecl t)     = pp t-  pp (BDISubtypeDecl s)  = pp s-  pp (BDIConstantDecl c) = pp c-  pp (BDISignalDecl s)   = pp s-  pp (BDISharedDecl v)   = pp v-  pp (BDIFileDecl f)     = pp f-  pp (BDIAliasDecl a)    = pp a-  pp (BDICompDecl c)     = pp c-  pp (BDIAttrDecl a)     = pp a-  pp (BDIAttrSepc a)     = pp a-  pp (BDIConfigSepc c)   = pp c-  pp (BDIDisconSpec d)   = pp d-  pp (BDIUseClause u)    = pp u-  pp (BDIGroupTemp g)    = pp g-  pp (BDIGroupDecl g)    = pp g+  pp (BDISubprogDecl d) = pp d+  pp (BDISubprogBody b) = pp b+  pp (BDIType t)        = pp t+  pp (BDISubtype s)     = pp s+  pp (BDIConstant c)    = pp c+  pp (BDISignal s)      = pp s+  pp (BDIShared v)      = pp v+  pp (BDIFile f)        = pp f+  pp (BDIAlias a)       = pp a+  pp (BDIComp c)        = pp c+  pp (BDIAttrDecl a)    = pp a+  pp (BDIAttrSepc a)    = pp a+  pp (BDIConfigSepc c)  = pp c+  pp (BDIDisconSpec d)  = pp d+  pp (BDIUseClause u)   = pp u+  pp (BDIGroupTemp g)   = pp g+  pp (BDIGroup g)       = pp g  --instance Pretty BlockDeclarativePart where pp = undefined @@ -187,7 +192,7 @@  instance Pretty CaseStatement where   pp (CaseStatement l e cs) =-      cond id l <+> colon `hangs` vcat [header, body, footer]+      labels l $ vcat [header, body, footer]     where       header = text "CASE" <+> pp e <+> text "IS"       body   = indent $ vcat $ map pp cs@@ -284,9 +289,9 @@          ]  instance Pretty ConfigurationDeclarativeItem where-  pp (CDIUse u)   = pp u-  pp (CDIAttr a)  = pp a-  pp (CDIGroup g) = pp g+  pp (CDIUse u)      = pp u+  pp (CDIAttrSpec a) = pp a+  pp (CDIGroup g)    = pp g  --instance Pretty ConfigurationDeclarativePart where pp = undefined @@ -299,7 +304,7 @@  instance Pretty ConstantDeclaration where   pp (ConstantDeclaration is s e) =-    text "CONSTANT" <+> pp is <+> colon <+> pp s <+> condL (text ":=") e+    text "CONSTANT" <+> commaSep (fmap pp is) <+> colon <+> pp s <+> condL (text ":=") e  instance Pretty ConstrainedArrayDefinition where   pp (ConstrainedArrayDefinition i s) = text "ARRAY" <+> pp i <+> text "OF" <+> pp s@@ -396,26 +401,27 @@            [ pp h            , pp d            ]-         , cond (flip hangs (text "BEGIN")) s+         , flip cond s $ \ss ->+             text "BEGIN" `hangs` ss                       , text "END ENTITY" <+> pp i <+> semi          ]  instance Pretty EntityDeclarativeItem where   pp (EDISubprogDecl s)  = pp s   pp (EDISubprogBody b)  = pp b-  pp (EDITypeDecl t)     = pp t-  pp (EDISubtypeDecl s)  = pp s-  pp (EDIConstantDecl c) = pp c-  pp (EDISignalDecl s)   = pp s-  pp (EDISharedDecl s)   = pp s-  pp (EDIFileDecl f)     = pp f-  pp (EDIAliasDecl a)    = pp a+  pp (EDIType t)         = pp t+  pp (EDISubtype s)      = pp s+  pp (EDIConstant c)     = pp c+  pp (EDISignal s)       = pp s+  pp (EDIShared s)       = pp s+  pp (EDIFile f)         = pp f+  pp (EDIAlias a)        = pp a   pp (EDIAttrDecl a)     = pp a   pp (EDIAttrSpec a)     = pp a   pp (EDIDiscSpec d)     = pp d   pp (EDIUseClause u)    = pp u   pp (EDIGroupTemp g)    = pp g-  pp (EDIGroupDecl g)    = pp g+  pp (EDIGroup g)        = pp g  --instance Pretty EntityDeclarativePart where pp = undefined @@ -452,9 +458,7 @@  instance Pretty ExitStatement where   pp (ExitStatement l b c) =-        condR colon l-    <+> text "NEXT" <+> cond id b-    <+> cond ((<+>) (text "WHEN")) c <+> semi+    label l <+> text "NEXT" <+> cond id b <+> condL (text "WHEN") c <+> semi  instance Pretty Exponent where pp = error "missing: Exponent" -- todo @@ -476,7 +480,9 @@   pp (FacNot p)     = text "NOT" <+> pp p  instance Pretty FileDeclaration where-  pp (FileDeclaration is s o) = text "FILE" <+> pp is <+> colon <+> pp s <+> cond id o <+> semi+  pp (FileDeclaration is s o) =+        text "FILE" <+> commaSep (fmap pp is)+    <+> colon <+> pp s <+> cond id o <+> semi  --instance Pretty FileLogicalName where pp = undefined @@ -521,12 +527,12 @@   pp (GSIf c)  = pp c  instance Pretty GenericClause where-  pp (GenericClause ls) = text "GENERIC" <+> parens (pp ls)+  pp (GenericClause ls) = text "GENERIC" <+> parens (pp ls) <+> semi  --instance Pretty GenericList where pp = undefined  instance Pretty GenericMapAspect where-  pp (GenericMapAspect as) = text "GENERIC MAP" <+> parens (pp as)+  pp (GenericMapAspect as) = text "GENERIC MAP" <+> parens (pp as) <+> semi  instance Pretty GraphicCharacter where pp = error "missing: GraphicCharacter" -- todo @@ -552,13 +558,20 @@  instance Pretty IfStatement where   pp (IfStatement l (tc, ts) a e) =-    condR colon l `hangs` vcat-      [ text "IF" <+> pp tc <+> text "THEN"-      , vcat $ fmap (\(c, s) -> text "ELSEIF" <+> pp c <+> text "THEN" `hangs` pp s) a-      , cond (hangs (text "ELSE")) e+    labels l $ vcat+      [ (text "IF" <+> pp tc <+> text "THEN") `hangs` vpp ts+      , elseIf' a+      , else'   e       , text "END IF" <+> cond id l <+> semi       ]+    where+      elseIf' :: [(Condition, SequenceOfStatements)] -> Doc+      elseIf' = vcat . fmap (\(c, ss) -> (text "ELSEIF" <+> pp c <+> text "THEN") `hangs` (vpp ss)) +      else'   :: Maybe SequenceOfStatements -> Doc+      else' (Nothing) = empty+      else' (Just ss) = text "ELSE" `hangs` (vpp ss)+ instance Pretty IncompleteTypeDeclaration where   pp (IncompleteTypeDeclaration i) = text "TYPE" <+> pp i <+> semi @@ -593,7 +606,7 @@   pp (InterfaceConstantDeclaration is s e) =     text "CONSTANT" <+> pp is <+> colon <+> text "IN" <+> pp s <+> condL (text ":=") e   pp (InterfaceSignalDeclaration is m s b e) =-    text "SIGNAL" <+> pp is <+> colon <+> cond id m <+> pp s <+> when b (text "BUS") <+> condL (text ":=") e+    {-text "SIGNAL" <+> -}pp is <+> colon <+> cond id m <+> pp s <+> when b (text "BUS") <+> condL (text ":=") e   pp (InterfaceVariableDeclaration is m s e) =     text "VARIABLE" <+> pp is <+> colon <+> cond id m <+> pp s <+> condL (text ":=") e   pp (InterfaceFileDeclaration is s) =@@ -602,7 +615,7 @@ --instance Pretty InterfaceElement where pp = undefined  instance Pretty InterfaceList where-  pp (InterfaceList es) = semiSep $ map pp es+  pp (InterfaceList es) = foldr ($+$) empty $ punctuate semi $ map pp es  instance Pretty IterationScheme where   pp (IterWhile c) = text "WHILE" <+> pp c@@ -639,7 +652,7 @@  instance Pretty LoopStatement where   pp (LoopStatement l i ss) =-    condR colon l `hangs` vcat+    labels l $ vcat       [ cond id i <+> text "LOOP"       , indent $ pp ss       , text "END LOOP" <+> cond id l <+> semi@@ -672,10 +685,10 @@   pp (NAttr a)   = pp a  instance Pretty NextStatement where-  pp (NextStatement l b c) = condR colon l <+> text "NEXT" <+> cond id b <+> condL (text "WHEN") c <+> semi+  pp (NextStatement l b c) = label l <+> text "NEXT" <+> cond id b <+> condL (text "WHEN") c <+> semi  instance Pretty NullStatement where-  pp (NullStatement l) = condR colon l <+> text "NULL"+  pp (NullStatement l) = label l <+> text "NULL"  instance Pretty NumericLiteral where   pp (NLitAbstract a) = pp a@@ -700,17 +713,17 @@          ]  instance Pretty PackageBodyDeclarativeItem where-  pp (PBDISubprogDecl s)  = pp s-  pp (PBDISubprogBody b)  = pp b-  pp (PBDITypeDecl t)     = pp t-  pp (PBDISubtypeDecl s)  = pp s-  pp (PBDIConstantDecl c) = pp c-  pp (PBDISharedDecl s)   = pp s-  pp (PBDIFileDecl f)     = pp f-  pp (PBDIAliasDecl a)    = pp a-  pp (PBDIUseClause u)    = pp u-  pp (PBDIGroupTemp g)    = pp g-  pp (PBDIGroupDecl g)    = pp g+  pp (PBDISubprogDecl s) = pp s+  pp (PBDISubprogBody b) = pp b+  pp (PBDIType t)        = pp t+  pp (PBDISubtype s)     = pp s+  pp (PBDIConstant c)    = pp c+  pp (PBDIShared s)      = pp s+  pp (PBDIFile f)        = pp f+  pp (PBDIAlias a)       = pp a+  pp (PBDIUseClause u)   = pp u+  pp (PBDIGroupTemp g)   = pp g+  pp (PBDIGroup g)       = pp g  --Instance Pretty PackageBodyDeclarativePart where pp = undefined @@ -722,22 +735,22 @@          ]  instance Pretty PackageDeclarativeItem where-  pp (PDISubprogDecl s)  = pp s-  pp (PDISubprogBody b)  = pp b-  pp (PDITypeDecl t)     = pp t-  pp (PDISubtypeDecl s)  = pp s-  pp (PDIConstantDecl c) = pp c-  pp (PDISignalDecl s)   = pp s-  pp (PDISharedDecl v)   = pp v-  pp (PDIFileDecl f)     = pp f-  pp (PDIAliasDecl a)    = pp a-  pp (PDICompDecl c)     = pp c-  pp (PDIAttrDecl a)     = pp a-  pp (PDIAttrSpec a)     = pp a-  pp (PDIDiscSpec d)     = pp d-  pp (PDIUseClause u)    = pp u-  pp (PDIGroupTemp g)    = pp g-  pp (PDIGroupDecl g)    = pp g+  pp (PHDISubprogDecl s) = pp s+  pp (PHDISubprogBody b) = pp b+  pp (PHDIType t)        = pp t+  pp (PHDISubtype s)     = pp s+  pp (PHDIConstant c)    = pp c+  pp (PHDISignal s)      = pp s+  pp (PHDIShared v)      = pp v+  pp (PHDIFile f)        = pp f+  pp (PHDIAlias a)       = pp a+  pp (PHDIComp c)        = pp c+  pp (PHDIAttrDecl a)    = pp a+  pp (PHDIAttrSpec a)    = pp a+  pp (PHDIDiscSpec d)    = pp d+  pp (PHDIUseClause u)   = pp u+  pp (PHDIGroupTemp g)   = pp g+  pp (PHDIGroup g)       = pp g    --instance Pretty PackageDeclarativePart where pp = undefined @@ -759,12 +772,12 @@       ]  instance Pretty PortClause where-  pp (PortClause ls) = text "PORT" <+> parens (pp ls)+  pp (PortClause ls) = text "PORT" <+> parens (pp ls) <+> semi  --instance Pretty PortList where pp = undefined  instance Pretty PortMapAspect where-  pp (PortMapAspect as) = text "PORT MAP" <+> parens (pp as)+  pp (PortMapAspect as) = text "PORT MAP" <+> parens (pp as) <+> semi  instance Pretty Prefix where   pp (PName n) = pp n@@ -786,30 +799,30 @@   pp (ProcedureCall n ap) = pp n <+> cond parens ap  instance Pretty ProcedureCallStatement where-  pp (ProcedureCallStatement l p) = condR colon l <+> pp p <+> semi+  pp (ProcedureCallStatement l p) = label l <+> pp p <+> semi  instance Pretty ProcessDeclarativeItem where-  pp (ProcDISubprogDecl s) = pp s-  pp (ProcDISubprogBody b) = pp b-  pp (ProcDIType t)        = pp t-  pp (ProcDISubtype s)     = pp s-  pp (ProcDIConstant c)    = pp c-  pp (ProcDIVariable v)    = pp v-  pp (ProcDIFile f)        = pp f-  pp (ProcDIAlias a)       = pp a-  pp (ProcDIAttrDecl a)    = pp a-  pp (ProcDIAttrSpec a)    = pp a-  pp (ProcDIUseClause u)   = pp u+  pp (PDISubprogDecl s) = pp s+  pp (PDISubprogBody b) = pp b+  pp (PDIType t)        = pp t+  pp (PDISubtype s)     = pp s+  pp (PDIConstant c)    = pp c+  pp (PDIVariable v)    = pp v+  pp (PDIFile f)        = pp f+  pp (PDIAlias a)       = pp a+  pp (PDIAttrDecl a)    = pp a+  pp (PDIAttrSpec a)    = pp a+  pp (PDIUseClause u)   = pp u  --instance Pretty ProcessDeclarativePart where pp = undefined  instance Pretty ProcessStatement where   pp (ProcessStatement l p ss d s) =-    condR colon l `hangs` vcat-      [ post <+> cond parens ss <+> text "IS"-        `hangs` pp d+    labels l $ vcat+      [ (post <+> cond parens ss <+> text "IS")+        `hangs` vpp d       , text "BEGIN"-        `hangs` pp s+        `hangs` vpp s       , text "END" <+> post <+> cond id l <+> semi       ]     where@@ -849,10 +862,10 @@  instance Pretty ReportStatement where   pp (ReportStatement l e s) =-    condR colon l `hangs` (text "REPORT" <+> pp e `hangs` condL (text "SEVERITY") s)+    labels l $ (text "REPORT" <+> pp e `hangs` condL (text "SEVERITY") s)  instance Pretty ReturnStatement where-  pp (ReturnStatement l e) = condR colon l <+> text "RETURN" <+> condR semi e+  pp (ReturnStatement l e) = label l <+> text "RETURN" <+> condR semi e  instance Pretty ScalarTypeDefinition where   pp (ScalarEnum e)  = pp e@@ -922,13 +935,15 @@  instance Pretty SignalAssignmentStatement where   pp (SignalAssignmentStatement l t d w) =-        condR colon l <+> pp t <+> text "<="+        label l <+> pp t <+> text "<="     <+> cond  id    d <+> pp w <+> semi  instance Pretty SignalDeclaration where   pp (SignalDeclaration is s k e) =-        text "SIGNAL" <+> pp is <+> colon <+> pp s-    <+> cond id k <+> condL (text ":=") e <+> semi+        text "SIGNAL"+    <+> commaSep (fmap pp is)+    <+> colon <+> pp s <+> cond id k+    <+> condL (text ":=") e <+> semi  instance Pretty SignalKind where   pp Register = text "REGISTER"@@ -956,7 +971,7 @@   pp (SliceName p r) = pp p <+> parens (pp r)  instance Pretty StringLiteral where-  pp (SLit s) = text s+  pp (SLit s) = char '\"' <> text s <> char '\"'  instance Pretty SubprogramBody where   pp (SubprogramBody s d st k de) =@@ -970,19 +985,19 @@ --instance Pretty SubprogramDeclaration where pp = undefined  instance Pretty SubprogramDeclarativeItem where-  pp (SDISubprogDecl d)  = pp d-  pp (SDISubprogBody b)  = pp b-  pp (SDITypeDecl t)     = pp t-  pp (SDISubtypeDecl s)  = pp s-  pp (SDIConstantDecl c) = pp c-  pp (SDIVariableDecl v) = pp v-  pp (SDIFileDecl f)     = pp f-  pp (SDIAliasDecl a)    = pp a-  pp (SDIAttrDecl a)     = pp a-  pp (SDIAttrSepc a)     = pp a-  pp (SDIUseClause u)    = pp u-  pp (SDIGroupTemp g)    = pp g-  pp (SDIGroupDecl g)    = pp g+  pp (SDISubprogDecl d) = pp d+  pp (SDISubprogBody b) = pp b+  pp (SDIType t)        = pp t+  pp (SDISubtype s)     = pp s+  pp (SDIConstant c)    = pp c+  pp (SDIVariable v)    = pp v+  pp (SDIFile f)        = pp f+  pp (SDIAlias a)       = pp a+  pp (SDIAttrDecl a)    = pp a+  pp (SDIAttrSepc a)    = pp a+  pp (SDIUseClause u)   = pp u+  pp (SDIGroupTemp g)   = pp g+  pp (SDIGroup g)       = pp g  --instance Pretty SubprogramDeclarativePart where pp = undefined @@ -1054,15 +1069,17 @@   pp (UseClause ns) = text "USE" <+> commaSep (map pp ns) <+> semi  instance Pretty VariableAssignmentStatement where-  pp (VariableAssignmentStatement l t e) = condR colon l <+> pp t <+> text ":=" <+> pp e <+> semi+  pp (VariableAssignmentStatement l t e) = label l <+> pp t <+> text ":=" <+> pp e <+> semi  instance Pretty VariableDeclaration where   pp (VariableDeclaration s is sub e) =-    when s (text "SHARED") <+> text "VARIABLE" <+> pp is <+> colon <+> pp sub <+> condL (text ":=") e <+> semi+    when s (text "SHARED") <+> text "VARIABLE"+    <+> commaSep (fmap pp is)+    <+> colon <+> pp sub <+> condL (text ":=") e <+> semi  instance Pretty WaitStatement where   pp (WaitStatement l sc cc tc) =-    condR colon l <+> text "WAIT" <+> pp' sc <+> pp' cc <+> pp' tc <+> semi+    label l <+> text "WAIT" <+> pp' sc <+> pp' cc <+> pp' tc <+> semi  instance Pretty Waveform where   pp (WaveElem es)    = commaSep $ map pp es@@ -1075,6 +1092,9 @@ -- * Some helpers -------------------------------------------------------------------------------- +--------------------------------------------------------------------------------+-- text sep.+   commaSep  :: [Doc] -> Doc commaSep  = hsep . punctuate comma @@ -1088,29 +1108,32 @@ textSep s = hsep . punctuate (space <> text s)  --------------------------------------------------------------------------------+-- indentation -when :: Bool -> Doc -> Doc-when b a = if b then a else empty+indent :: Doc -> Doc+indent = nest 4 +hangs  :: Doc -> Doc -> Doc+hangs d1 d2 = d1 $+$ indent d2++labels  :: Pretty a => Maybe a -> Doc -> Doc+labels (Nothing) doc = doc+labels (Just a)  doc = (pp a <+> colon) `hangs` doc++--------------------------------------------------------------------------------+-- conditional print+ cond :: Pretty a => (Doc -> Doc) -> Maybe a -> Doc cond f = maybe empty (f . pp)  condR :: Pretty a => Doc -> Maybe a -> Doc-condR s m = cond (flip (<+>) s) m+condR s = cond (<+> s)  condL :: Pretty a => Doc -> Maybe a -> Doc-condL s m = cond ((<+>) s) m+condL s = cond (s <+>)  label :: Pretty a => Maybe a -> Doc-label = cond (flip (<+>) colon)--indent :: Doc -> Doc-indent = nest 4--hangs  :: Doc -> Doc -> Doc-hangs  = flip hang 4----------------------------------------------------------------------------------+label = cond (<+> colon)  pp' :: Pretty a => Maybe a -> Doc pp' = cond id@@ -1118,9 +1141,16 @@ parens' :: Pretty a => Maybe a -> Doc parens' = cond parens +when :: Bool -> Doc -> Doc+when b a = if b then a else empty+ --------------------------------------------------------------------------------+-- some common things -postponed :: Pretty a =>  Maybe Label -> Bool -> a -> Doc-postponed l b a = condR colon l <+> when b (text "POSTPONED") <+> pp a+vpp :: Pretty a => [a] -> Doc+vpp = foldr ($+$) empty . map pp++postponed :: Pretty a => Maybe Label -> Bool -> a -> Doc+postponed l b a = label l <+> when b (text "POSTPONED") <+> pp a  --------------------------------------------------------------------------------
src/Language/VHDL/Syntax.hs view
@@ -27,6 +27,7 @@   , entity_declarative_part   :: EntityDeclarativePart   , entity_statement_part     :: Maybe EntityStatementPart   }+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- ** 1.1.1 Entity haeder@@ -43,9 +44,13 @@     formal_generic_clause     :: Maybe GenericClause   , formal_port_clause        :: Maybe PortClause   }+  deriving (Eq, Show)  data GenericClause = GenericClause GenericList+  deriving (Eq, Show)+ data PortClause    = PortClause    PortList+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- *** 1.1.1.1 Generics@@ -92,19 +97,20 @@ data EntityDeclarativeItem =     EDISubprogDecl  SubprogramDeclaration   | EDISubprogBody  SubprogramBody-  | EDITypeDecl     TypeDeclaration-  | EDISubtypeDecl  SubtypeDeclaration-  | EDIConstantDecl ConstantDeclaration-  | EDISignalDecl   SignalDeclaration-  | EDISharedDecl   VariableDeclaration-  | EDIFileDecl     FileDeclaration-  | EDIAliasDecl    AliasDeclaration+  | EDIType         TypeDeclaration+  | EDISubtype      SubtypeDeclaration+  | EDIConstant     ConstantDeclaration+  | EDISignal       SignalDeclaration+  | EDIShared       VariableDeclaration+  | EDIFile         FileDeclaration+  | EDIAlias        AliasDeclaration   | EDIAttrDecl     AttributeDeclaration   | EDIAttrSpec     AttributeSpecification   | EDIDiscSpec     DisconnectionSpecification   | EDIUseClause    UseClause   | EDIGroupTemp    GroupTemplateDeclaration-  | EDIGroupDecl    GroupDeclaration+  | EDIGroup        GroupDeclaration+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- ** 1.1.3 Entity statement part@@ -124,6 +130,7 @@     ESConcAssert   ConcurrentAssertionStatement   | ESPassiveConc  ConcurrentProcedureCallStatement   | ESPassiveProc  ProcessStatement+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 1.2 Arcitecture bodies@@ -143,6 +150,7 @@   , archi_declarative_part :: ArchitectureDeclarativePart   , archi_statement_part   :: ArchitectureStatementPart   }+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- ** 1.2.1 Architecture declarative part@@ -175,21 +183,22 @@ data BlockDeclarativeItem =     BDISubprogDecl  SubprogramDeclaration   | BDISubprogBody  SubprogramBody-  | BDITypeDecl     TypeDeclaration-  | BDISubtypeDecl  SubtypeDeclaration-  | BDIConstantDecl ConstantDeclaration-  | BDISignalDecl   SignalDeclaration-  | BDISharedDecl   VariableDeclaration-  | BDIFileDecl     FileDeclaration-  | BDIAliasDecl    AliasDeclaration-  | BDICompDecl     ComponentDeclaration+  | BDIType         TypeDeclaration+  | BDISubtype      SubtypeDeclaration+  | BDIConstant     ConstantDeclaration+  | BDISignal       SignalDeclaration+  | BDIShared       VariableDeclaration+  | BDIFile         FileDeclaration+  | BDIAlias        AliasDeclaration+  | BDIComp         ComponentDeclaration   | BDIAttrDecl     AttributeDeclaration   | BDIAttrSepc     AttributeSpecification   | BDIConfigSepc   ConfigurationSpecification   | BDIDisconSpec   DisconnectionSpecification   | BDIUseClause    UseClause   | BDIGroupTemp    GroupTemplateDeclaration-  | BDIGroupDecl    GroupDeclaration+  | BDIGroup        GroupDeclaration+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- ** 1.2.2 Architecture statement part@@ -225,13 +234,15 @@   , config_declarative_part    :: ConfigurationDeclarativePart   , config_block_configuration :: BlockConfiguration   }+  deriving (Eq, Show)  type ConfigurationDeclarativePart = [ConfigurationDeclarativeItem]  data ConfigurationDeclarativeItem =-    CDIUse   UseClause-  | CDIAttr  AttributeSpecification-  | CDIGroup GroupDeclaration+    CDIUse       UseClause+  | CDIAttrSpec  AttributeSpecification+  | CDIGroup     GroupDeclaration+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- ** 1.3.1 Block configuration@@ -261,19 +272,23 @@   , block_use_clause         :: [UseClause]   , block_configuration_item :: [ConfigurationItem]   }+  deriving (Eq, Show)  data BlockSpecification =     BSArch  Name   | BSBlock Label   | BSGen   Label+  deriving (Eq, Show)  data IndexSpecification =     ISRange DiscreteRange   | ISExp   Expression+  deriving (Eq, Show)  data ConfigurationItem  =     CIBlock BlockConfiguration   | CIComp  ComponentConfiguration+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- ** 1.3.2 Component configuration@@ -291,6 +306,7 @@   , comp_binding_indication  :: Maybe BindingIndication   , comp_block_configuration :: Maybe BlockConfiguration   }+  deriving (Eq, Show)  -------------------------------------------------------------------------------- --@@ -330,10 +346,12 @@     , subfun_formal_parameter_list  :: Maybe FormalParameterList     , subfun_type_mark              :: TypeMark     }+  deriving (Eq, Show)  data Designator =     DId Identifier   | DOp OperatorSymbol+  deriving (Eq, Show)  type OperatorSymbol = StringLiteral @@ -403,27 +421,30 @@   , subprog_kind             :: Maybe SubprogramKind   , subprog_designator       :: Maybe Designator   }+  deriving (Eq, Show)  type SubprogramDeclarativePart = [SubprogramDeclarativeItem]  data SubprogramDeclarativeItem =     SDISubprogDecl  SubprogramDeclaration   | SDISubprogBody  SubprogramBody-  | SDITypeDecl     TypeDeclaration-  | SDISubtypeDecl  SubtypeDeclaration-  | SDIConstantDecl ConstantDeclaration-  | SDIVariableDecl VariableDeclaration-  | SDIFileDecl     FileDeclaration-  | SDIAliasDecl    AliasDeclaration+  | SDIType         TypeDeclaration+  | SDISubtype      SubtypeDeclaration+  | SDIConstant     ConstantDeclaration+  | SDIVariable     VariableDeclaration+  | SDIFile         FileDeclaration+  | SDIAlias        AliasDeclaration   | SDIAttrDecl     AttributeDeclaration   | SDIAttrSepc     AttributeSpecification   | SDIUseClause    UseClause   | SDIGroupTemp    GroupTemplateDeclaration-  | SDIGroupDecl    GroupDeclaration+  | SDIGroup        GroupDeclaration+  deriving (Eq, Show)      type SubprogramStatementPart   = [SequentialStatement]  data SubprogramKind            = Procedure | Function+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 2.3 Subprogram overloading@@ -442,6 +463,7 @@ -}  data Signature = Signature (Maybe (Maybe [TypeMark], Maybe TypeMark))+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 2.4 Resolution functions@@ -481,26 +503,28 @@     packd_identifier       :: Identifier   , packd_declarative_part :: PackageDeclarativePart   }+  deriving (Eq, Show)  type PackageDeclarativePart = [PackageDeclarativeItem]  data PackageDeclarativeItem =-    PDISubprogDecl  SubprogramDeclaration-  | PDISubprogBody  SubprogramBody-  | PDITypeDecl     TypeDeclaration-  | PDISubtypeDecl  SubtypeDeclaration-  | PDIConstantDecl ConstantDeclaration-  | PDISignalDecl   SignalDeclaration-  | PDISharedDecl   VariableDeclaration-  | PDIFileDecl     FileDeclaration-  | PDIAliasDecl    AliasDeclaration-  | PDICompDecl     ComponentDeclaration-  | PDIAttrDecl     AttributeDeclaration-  | PDIAttrSpec     AttributeSpecification-  | PDIDiscSpec     DisconnectionSpecification-  | PDIUseClause    UseClause-  | PDIGroupTemp    GroupTemplateDeclaration-  | PDIGroupDecl    GroupDeclaration+    PHDISubprogDecl  SubprogramDeclaration+  | PHDISubprogBody  SubprogramBody+  | PHDIType         TypeDeclaration+  | PHDISubtype      SubtypeDeclaration+  | PHDIConstant     ConstantDeclaration+  | PHDISignal       SignalDeclaration+  | PHDIShared       VariableDeclaration+  | PHDIFile         FileDeclaration+  | PHDIAlias        AliasDeclaration+  | PHDIComp         ComponentDeclaration+  | PHDIAttrDecl     AttributeDeclaration+  | PHDIAttrSpec     AttributeSpecification+  | PHDIDiscSpec     DisconnectionSpecification+  | PHDIUseClause    UseClause+  | PHDIGroupTemp    GroupTemplateDeclaration+  | PHDIGroup        GroupDeclaration+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 2.6 Package bodies@@ -531,21 +555,23 @@     packb_simple_name           :: SimpleName   , packb_body_declarative_part :: PackageBodyDeclarativePart   }+  deriving (Eq, Show)  type PackageBodyDeclarativePart = [PackageBodyDeclarativeItem]  data PackageBodyDeclarativeItem =      PBDISubprogDecl  SubprogramDeclaration   | PBDISubprogBody  SubprogramBody-  | PBDITypeDecl     TypeDeclaration-  | PBDISubtypeDecl  SubtypeDeclaration-  | PBDIConstantDecl ConstantDeclaration-  | PBDISharedDecl   VariableDeclaration-  | PBDIFileDecl     FileDeclaration-  | PBDIAliasDecl    AliasDeclaration+  | PBDIType         TypeDeclaration+  | PBDISubtype      SubtypeDeclaration+  | PBDIConstant     ConstantDeclaration+  | PBDIShared       VariableDeclaration+  | PBDIFile         FileDeclaration+  | PBDIAlias        AliasDeclaration   | PBDIUseClause    UseClause   | PBDIGroupTemp    GroupTemplateDeclaration-  | PBDIGroupDecl    GroupDeclaration+  | PBDIGroup        GroupDeclaration+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 2.7 Conformance rules@@ -584,8 +610,10 @@   | ScalarInt   IntegerTypeDefinition   | ScalarFloat FloatingTypeDefinition   | ScalarPhys  PhysicalTypeDefinition+  deriving (Eq, Show)  data RangeConstraint = RangeConstraint Range+  deriving (Eq, Show)  data Range =     RAttr   AttributeName@@ -594,8 +622,10 @@     , range_dir   :: Direction     , range_upper :: SimpleExpression     }+  deriving (Eq, Show)  data Direction = To | DownTo+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- ** 3.1.1 Enumeration types@@ -607,10 +637,12 @@ -}  data EnumerationTypeDefinition = EnumerationTypeDefinition [EnumerationLiteral]+  deriving (Eq, Show)  data EnumerationLiteral =     EId   Identifier   | EChar CharacterLiteral+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- *** 3.1.1.1 Predefined enumeration types@@ -653,15 +685,18 @@   , physd_secondary_unit_declaration :: [SecondaryUnitDeclaration]   , physd_simple_name                :: Maybe SimpleName   }+  deriving (Eq, Show)  type PrimaryUnitDeclaration   = Identifier  data SecondaryUnitDeclaration = SecondaryUnitDeclaration Identifier PhysicalLiteral+  deriving (Eq, Show)  data PhysicalLiteral = PhysicalLiteral {     physl_abstract_literal :: Maybe Literal   , physl_unit_name        :: Name   }+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- *** 3.1.3.1 Predefined physical types@@ -692,6 +727,7 @@ data CompositeTypeDefinition =     CTDArray  ArrayTypeDefinition   | CTDRecord RecordTypeDefinition+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- ** 3.2.1 Array types@@ -717,24 +753,30 @@ data ArrayTypeDefinition =     ArrU UnconstrainedArrayDefinition   | ArrC ConstrainedArrayDefinition+  deriving (Eq, Show)  data UnconstrainedArrayDefinition = UnconstrainedArrayDefinition {     arru_index_subtype_definition   :: [IndexSubtypeDefinition]   , arru_element_subtype_indication :: (SubtypeIndication)   }+  deriving (Eq, Show)  data ConstrainedArrayDefinition = ConstrainedArrayDefinition {     arrc_index_constraint   :: IndexConstraint   , arrc_subtype_indication :: SubtypeIndication   }+  deriving (Eq, Show)  data IndexSubtypeDefinition = IndexSubtypeDefinition TypeMark+  deriving (Eq, Show)  data IndexConstraint = IndexConstraint [DiscreteRange]+  deriving (Eq, Show)  data DiscreteRange =     DRSub   SubtypeIndication   | DRRange Range+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- *** 3.2.1.1 Index constraints and discrete ranges@@ -767,11 +809,13 @@     rectd_element_declaration :: [ElementDeclaration]   , rectd_type_simple_name    :: Maybe SimpleName   }+  deriving (Eq, Show)  data ElementDeclaration = ElementDeclaration {     elemd_identifier_list    :: IdentifierList   , elemd_subtype_definition :: ElementSubtypeDefinition   }+  deriving (Eq, Show)  type IdentifierList           = [Identifier] @@ -784,6 +828,7 @@ -}  data AccessTypeDefinition = AccessTypeDefinition SubtypeIndication+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- ** 3.3.1 Incomplete type declarations@@ -792,6 +837,7 @@ -}  data IncompleteTypeDeclaration = IncompleteTypeDeclaration Identifier+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- *** 3.3.2 Allocation and deallocation of objects@@ -805,6 +851,7 @@ -}  data FileTypeDefinition = FileTypeDefinition TypeMark+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- ** 3.4.1 File operations@@ -853,6 +900,7 @@   | DConfiguration ConfigurationDeclaration   | DSubprogram    SubprogramDeclaration   | DPackage       PackageDeclaration+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 4.1 Type declarations@@ -873,11 +921,13 @@ -}  data TypeDeclaration = TDFull FullTypeDeclaration | TDPartial IncompleteTypeDeclaration+  deriving (Eq, Show)  data FullTypeDeclaration = FullTypeDeclaration {     ftd_identifier      :: Identifier   , ftd_type_definition :: TypeDefinition   }+  deriving (Eq, Show)  data TypeDefinition =     TDScalar       ScalarTypeDefinition@@ -885,6 +935,7 @@   | TDAccess       AccessTypeDefinition   | TDFile           FileTypeDefinition --  | TDProt      ProtectedTypeDefinition+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 4.2 Subtype declarations@@ -908,16 +959,20 @@     sd_identifier               :: Identifier   , sd_indication               :: SubtypeIndication   }+  deriving (Eq, Show)  data SubtypeIndication = SubtypeIndication {     si_resolution_function_name :: Maybe Name   , si_type_mark                :: TypeMark   , si_constraint               :: Maybe Constraint   }+  deriving (Eq, Show)  data TypeMark   = TMType Name | TMSubtype Name+  deriving (Eq, Show)  data Constraint = CRange RangeConstraint | CIndex IndexConstraint+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 4.3 Objects@@ -937,6 +992,7 @@   | ObjSig     SignalDeclaration   | ObjVar   VariableDeclaration   | ObjFile      FileDeclaration+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- *** 4.3.1.1 Constant declarations@@ -950,6 +1006,7 @@   , const_subtype_indication :: SubtypeIndication   , const_expression         :: Maybe Expression   }+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- *** 4.3.1.2 Signal declarations@@ -966,8 +1023,10 @@   , signal_kind               :: Maybe SignalKind   , signal_expression         :: Maybe Expression   }+  deriving (Eq, Show)  data SignalKind = Register | Bus+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- *** 4.3.1.3 Variable declarations@@ -982,6 +1041,7 @@   , var_subtype_indication :: SubtypeIndication   , var_expression         :: Maybe Expression   }+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- *** 4.3.1.4 File declarations@@ -1000,11 +1060,13 @@   , fd_subtype_indication   :: SubtypeIndication   , fd_open_information     :: Maybe FileOpenInformation   }+  deriving (Eq, Show)  data FileOpenInformation = FileOpenInformation {     foi_open_kind_expression :: Maybe Expression   , foi_logical_name         :: FileLogicalName   }+  deriving (Eq, Show)  type FileLogicalName = Expression @@ -1055,8 +1117,10 @@         idecl_identifier_list     :: IdentifierList       , ifile_subtype_indication  :: SubtypeIndication     }+  deriving (Eq, Show)  data Mode = In | Out | InOut | Buffer | Linkage+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- *** 4.3.2.1 Interface lists@@ -1067,6 +1131,7 @@ -}  data InterfaceList    = InterfaceList [InterfaceElement]+  deriving (Eq, Show)  type InterfaceElement = InterfaceDeclaration @@ -1106,18 +1171,22 @@     assoc_formal_part :: Maybe FormalPart   , assoc_actual_part :: ActualPart   }+  deriving (Eq, Show)  data AssociationList = AssociationList [AssociationElement]+  deriving (Eq, Show)  data FormalDesignator =     FDGeneric   Name   | FDPort      Name   | FDParameter Name+  deriving (Eq, Show)  data FormalPart =     FPDesignator          FormalDesignator   | FPFunction   Name     FormalDesignator   | FPType       TypeMark FormalDesignator+  deriving (Eq, Show)  data ActualDesignator =     ADExpression  Expression@@ -1125,11 +1194,13 @@   | ADVariable    Name   | ADFile        Name   | ADOpen+  deriving (Eq, Show)  data ActualPart =     APDesignator          ActualDesignator   | APFunction   Name     ActualDesignator   | APType       TypeMark ActualDesignator+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- ** 4.3.3 Alias declarations@@ -1146,11 +1217,13 @@   , alias_name               :: Name   , alias_signature          :: Maybe Signature   }+  deriving (Eq, Show)  data AliasDesignator =     ADIdentifier Identifier   | ADCharacter  CharacterLiteral   | ADOperator   OperatorSymbol+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- *** 4.3.3.1 Object aliases@@ -1169,6 +1242,7 @@     attr_identifier :: Identifier   , attr_type_marke :: TypeMark   }+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 4.5 Component declarations@@ -1186,6 +1260,7 @@   , comp_local_port_clause    :: Maybe PortClause   , comp_simple_name          :: Maybe SimpleName   }+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 4.6 Group template declarations@@ -1203,6 +1278,7 @@     gtd_identifier              :: Identifier   , gtd_entity_class_entry_list :: EntityClassEntryList   }+  deriving (Eq, Show)  type EntityClassEntryList = [EntityClassEntry] @@ -1210,6 +1286,7 @@     entc_entity_class :: EntityClass   , entc_multiple     :: Bool   }+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 4.7 Group declarations@@ -1227,12 +1304,14 @@   , group_template_name    :: Name   , group_constituent_list :: GroupConstituentList   }+  deriving (Eq, Show)  type GroupConstituentList = [GroupConstituent]  data GroupConstituent =     GCName Name   | GCChar CharacterLiteral+  deriving (Eq, Show)  -------------------------------------------------------------------------------- --@@ -1274,11 +1353,13 @@   , as_entity_specification :: EntitySpecification   , as_expression           :: Expression   }+  deriving (Eq, Show)  data EntitySpecification = EntitySpecification {     es_entity_name_list     :: EntityNameList   , es_entity_class         :: EntityClass   }+  deriving (Eq, Show)  data EntityClass =     ENTITY     | ARCHITECTURE  | CONFIGURATION@@ -1287,21 +1368,25 @@   | SIGNAL     | VARIABLE      | COMPONENT   | LABEL      | LITERAL       | UNITS   | GROUP      | FILE+  deriving (Eq, Show)  data EntityNameList =     ENLDesignators [EntityDesignator]   | ENLOthers   | ENLAll+  deriving (Eq, Show)  data EntityDesignator = EntityDesignator {     ed_entity_tag :: EntityTag   , ed_signature  :: Maybe Signature   }+  deriving (Eq, Show)  data EntityTag =     ETName SimpleName   | ETChar CharacterLiteral   | ETOp   OperatorSymbol+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 5.2 Configuration specification@@ -1323,16 +1408,19 @@     cs_component_specification :: ComponentSpecification   , cs_binding_indication      :: BindingIndication   }+  deriving (Eq, Show)  data ComponentSpecification = ComponentSpecification {     cs_instantiation_list      :: InstantiationList   , cs_component_name          :: Name   }+  deriving (Eq, Show)  data InstantiationList =     ILLabels [Label]   | ILOthers   | ILAll+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- ** 5.2.1 Binding indication@@ -1348,6 +1436,7 @@   , bi_generic_map_aspect :: Maybe GenericMapAspect   , bi_port_map_aspect    :: Maybe PortMapAspect   }+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- *** 5.2.1.1 Entity aspect@@ -1362,6 +1451,7 @@     EAEntity Name (Maybe Identifier)   | EAConfig Name   | EAOpen+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- *** 5.2.1.2 Generic map and port map aspects@@ -1374,8 +1464,10 @@ -}  data GenericMapAspect = GenericMapAspect AssociationList+  deriving (Eq, Show)  data PortMapAspect    = PortMapAspect    AssociationList+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- ** 5.2.2 Default binding indication@@ -1401,16 +1493,19 @@     ds_guarded_signal_specification :: GuardedSignalSpecification   , ds_time_expression              :: Expression   }+  deriving (Eq, Show)  data GuardedSignalSpecification = GuardedSignalSpecification {     gs_guarded_signal_list          :: SignalList   , gs_type_mark                    :: TypeMark   }+  deriving (Eq, Show)  data SignalList =     SLName   [Name]   | SLOthers   | SLAll+  deriving (Eq, Show)  -------------------------------------------------------------------------------- --@@ -1443,10 +1538,12 @@   | NIndex  IndexedName   | NSlice  SliceName   | NAttr   AttributeName+  deriving (Eq, Show)  data Prefix =     PName Name   | PFun  FunctionCall+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 6.2 Simple names@@ -1472,12 +1569,14 @@     sname_prefix :: Prefix   , sname_suffix :: Suffix   }+  deriving (Eq, Show)  data Suffix =     SSimple SimpleName   | SChar   CharacterLiteral   | SOp     OperatorSymbol   | SAll+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 6.4 Indexed names@@ -1489,6 +1588,7 @@     iname_prefix     :: Prefix   , iname_expression :: [Expression]   }+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 6.5 Slice names@@ -1500,6 +1600,7 @@     slice_prefix         :: Prefix   , slice_discrete_range :: DiscreteRange   }+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 6.6 Attribute names@@ -1516,6 +1617,7 @@   , aname_attribute_designator :: AttributeDesignator   , aname_expression           :: Maybe Expression   }+  deriving (Eq, Show)  type AttributeDesignator = SimpleName @@ -1573,32 +1675,38 @@   | ENand (Relation) (Maybe Relation)   | ENor  (Relation) (Maybe Relation)   | EXnor [Relation]+  deriving (Eq, Show)  data Relation         = Relation {     relation_shift_expression :: ShiftExpression   , relation_operator         :: Maybe (RelationalOperator, ShiftExpression)   }+  deriving (Eq, Show)  data ShiftExpression  = ShiftExpression {     shifte_simple_expression  :: SimpleExpression   , shifte_shift_operator     :: Maybe (ShiftOperator, SimpleExpression)   }+  deriving (Eq, Show)  data SimpleExpression = SimpleExpression {     sexp_sign                 :: Maybe Sign   , sexp_term                 :: Term   , sexp_adding               :: [(AddingOperator, Term)]   }+  deriving (Eq, Show)  data Term = Term {     term_factor               :: Factor   , term_multiplying          :: [(MultiplyingOperator, Factor)]   }+  deriving (Eq, Show)  data Factor =     FacPrim Primary (Maybe Primary)   | FacAbs  Primary   | FacNot  Primary+  deriving (Eq, Show)  data Primary =     PrimName  Name@@ -1609,6 +1717,7 @@   | PrimTCon  TypeConversion   | PrimAlloc Allocator   | PrimExp   Expression+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 7.2 Operators@@ -1629,18 +1738,25 @@ -}  data LogicalOperator  = And | Or | Nand | Nor | Xor | Xnor+  deriving (Eq, Show)  data RelationalOperator = Eq | Neq | Lt | Lte | Gt | Gte+  deriving (Eq, Show)  data ShiftOperator    = Sll | Srl | Sla | Sra | Rol | Ror+  deriving (Eq, Show)  data AddingOperator   = Plus | Minus | Concat+  deriving (Eq, Show)  data Sign             = Identity | Negation+  deriving (Eq, Show)  data MultiplyingOperator = Times | Div | Mod | Rem+  deriving (Eq, Show)  data MiscellaneousOperator = Exp | Abs | Not+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- ** 7.2.1 Logical operators@@ -1701,10 +1817,12 @@   | LitString    StringLiteral   | LitBitString BitStringLiteral   | LitNull +  deriving (Eq, Show)  data NumericLiteral =     NLitAbstract AbstractLiteral   | NLitPhysical PhysicalLiteral+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- ** 7.3.2 Aggregates@@ -1728,19 +1846,23 @@ data Aggregate = Aggregate {     agg_element_association :: [ElementAssociation]   }+  deriving (Eq, Show)  data ElementAssociation = ElementAssociation {     eassoc_choices'   :: Maybe Choices   , eassoc_expression :: Expression   }+  deriving (Eq, Show)  data Choices = Choices [Choice]+  deriving (Eq, Show)  data Choice =     ChoiceSimple SimpleExpression   | ChoiceRange  DiscreteRange   | ChoiceName   SimpleName   | ChoiceOthers+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- *** 7.3.2.1 Record aggregates@@ -1765,6 +1887,7 @@     fc_function_name         :: Name   , fc_actual_parameter_part :: Maybe ActualParameterPart   }+  deriving (Eq, Show)  type ActualParameterPart = AssociationList @@ -1779,6 +1902,7 @@ data QualifiedExpression =     QualExp TypeMark Expression   | QualAgg TypeMark Aggregate+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- ** 7.3.5 Type conversions@@ -1790,6 +1914,7 @@     type_mark  :: TypeMark   , expression :: Expression   }+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- ** 7.3.6 Allocators@@ -1802,6 +1927,7 @@ data Allocator =     AllocSub  SubtypeIndication   | AllocQual QualifiedExpression+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 7.4 Static expressions@@ -1864,6 +1990,7 @@   | SExit      ExitStatement   | SReturn    ReturnStatement   | SNull      NullStatement+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 8.1 Wait statement@@ -1884,16 +2011,21 @@  data WaitStatement = WaitStatement     (Maybe Label) (Maybe SensitivityClause) (Maybe ConditionClause) (Maybe TimeoutClause)+  deriving (Eq, Show)  data SensitivityClause = SensitivityClause SensitivityList+  deriving (Eq, Show)  data SensitivityList = SensitivityList [Name]+  deriving (Eq, Show)  data ConditionClause = ConditionClause Condition+  deriving (Eq, Show)  type Condition = Expression  data TimeoutClause = TimeoutClause Expression+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 8.2 Assertion statement@@ -1908,9 +2040,11 @@  data AssertionStatement = AssertionStatement       (Maybe Label) Assertion+  deriving (Eq, Show)  data Assertion = Assertion       Condition (Maybe Expression) (Maybe Expression)+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 8.3 Report statement@@ -1923,6 +2057,7 @@  data ReportStatement = ReportStatement       (Maybe Label) Expression (Maybe Expression)+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 8.4 Signal assignment statement@@ -1945,18 +2080,22 @@  data SignalAssignmentStatement = SignalAssignmentStatement       (Maybe Label) Target (Maybe DelayMechanism) Waveform+  deriving (Eq, Show)  data DelayMechanism =     DMechTransport   | DMechInertial  (Maybe Expression)+  deriving (Eq, Show)  data Target =      TargetName Name   | TargetAgg  Aggregate+  deriving (Eq, Show)  data Waveform =     WaveElem [WaveformElement]   | WaveUnaffected+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- ** 8.4.1 Updating a projected output waveform@@ -1969,6 +2108,7 @@ data WaveformElement =     WaveEExp  Expression (Maybe Expression)   | WaveENull            (Maybe Expression)+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 8.5 Variable assignment statement@@ -1979,6 +2119,7 @@  data VariableAssignmentStatement = VariableAssignmentStatement       (Maybe Label) Target Expression+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- ** 8.5.1 Array variable assignments@@ -1995,9 +2136,11 @@  data ProcedureCallStatement = ProcedureCallStatement       (Maybe Label) ProcedureCall+  deriving (Eq, Show)  data ProcedureCall = ProcedureCall       Name (Maybe ActualParameterPart)+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 8.7 If statement@@ -2019,6 +2162,7 @@   , if_also      :: [(Condition, SequenceOfStatements)]   , if_else      :: Maybe SequenceOfStatements   }+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 8.8 Case statement@@ -2040,8 +2184,10 @@   , case_expression   :: Expression   , case_alternatives :: [CaseStatementAlternative]   }+  deriving (Eq, Show)  data CaseStatementAlternative = CaseStatementAlternative Choices SequenceOfStatements+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 8.9 Loop statement@@ -2065,15 +2211,18 @@   , loop_iteration_scheme :: Maybe IterationScheme   , loop_statements       :: SequenceOfStatements   }+  deriving (Eq, Show)  data IterationScheme =     IterWhile Condition   | IterFor   ParameterSpecification+  deriving (Eq, Show)  data ParameterSpecification = ParameterSpecification {     paramspec_identifier     :: Identifier   , paramspec_discrete_range :: DiscreteRange   }+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 8.10 Next statement@@ -2087,6 +2236,7 @@   , next_loop  :: Maybe Label   , next_when  :: Maybe Condition   }+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 8.11 Exit statement@@ -2100,6 +2250,7 @@   , exit_loop  :: Maybe Label   , exit_when  :: Maybe Condition   }+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 8.12 Return statement@@ -2112,6 +2263,7 @@     return_label      :: Maybe Label   , return_expression :: Maybe Expression   }+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 8.13 Null statement@@ -2123,6 +2275,7 @@ data NullStatement = NullStatement {     null_label :: Maybe Label   }+  deriving (Eq, Show)  -------------------------------------------------------------------------------- --@@ -2151,6 +2304,7 @@   | ConSignalAss ConcurrentSignalAssignmentStatement   | ConComponent ComponentInstantiationStatement   | ConGenerate  GenerateStatement+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 9.1 Block statement@@ -2184,11 +2338,13 @@   , blocks_declarative_part :: BlockDeclarativePart   , blocks_statment_part    :: BlockStatementPart   }+  deriving (Eq, Show)  data BlockHeader = BlockHeader {     blockh_generic_clause   :: Maybe (GenericClause, Maybe GenericMapAspect)   , blockh_port_clause      :: Maybe (PortClause,    Maybe PortMapAspect)   }+  deriving (Eq, Show)  type BlockDeclarativePart = [BlockDeclarativeItem] @@ -2221,6 +2377,9 @@       | attribute_specification       | use_clause       | group_type_declaration++    process_statement_part ::=+      { sequential_statement } -}  data ProcessStatement = ProcessStatement {@@ -2228,25 +2387,29 @@   , procs_postponed        :: Bool   , procs_sensitivity_list :: Maybe SensitivityList   , procs_declarative_part :: ProcessDeclarativePart-  , procs_statement_part   :: ProcessStatement+  , procs_statement_part   :: ProcessStatementPart   }+  deriving (Eq, Show)  type ProcessDeclarativePart = [ProcessDeclarativeItem]  data ProcessDeclarativeItem =-    ProcDISubprogDecl SubprogramDeclaration-  | ProcDISubprogBody SubprogramBody-  | ProcDIType        TypeDeclaration-  | ProcDISubtype     SubtypeDeclaration-  | ProcDIConstant    ConstantDeclaration-  | ProcDIVariable    VariableDeclaration-  | ProcDIFile        FileDeclaration-  | ProcDIAlias       AliasDeclaration-  | ProcDIAttrDecl    AttributeDeclaration-  | ProcDIAttrSpec    AttributeSpecification-  | ProcDIUseClause   UseClause+    PDISubprogDecl SubprogramDeclaration+  | PDISubprogBody SubprogramBody+  | PDIType        TypeDeclaration+  | PDISubtype     SubtypeDeclaration+  | PDIConstant    ConstantDeclaration+  | PDIVariable    VariableDeclaration+  | PDIFile        FileDeclaration+  | PDIAlias       AliasDeclaration+  | PDIAttrDecl    AttributeDeclaration+  | PDIAttrSpec    AttributeSpecification+  | PDIUseClause   UseClause --  | ProcDIGroupType   ()+  deriving (Eq, Show) +type ProcessStatementPart = [SequentialStatement]+ -------------------------------------------------------------------------------- -- * 9.3 Concurrent procedure call statements {-@@ -2259,6 +2422,7 @@   , cpcs_postponed      :: Bool   , cpcs_procedure_call :: ProcedureCall   }+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 9.4 Concurrent assertion statements@@ -2272,6 +2436,7 @@   , cas_postponed      :: Bool   , cas_assertion      :: Assertion   }+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 9.5 Concurrent signal assignment statements@@ -2294,11 +2459,13 @@     , csas_select_postponed         :: Bool     , csas_select_signal_assignment :: SelectedSignalAssignment     }+  deriving (Eq, Show)  data Options = Options {     options_guarded         :: Bool   , options_delay_mechanism :: Maybe DelayMechanism   }+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- ** 9.5.1 Conditional signal assignments@@ -2316,11 +2483,13 @@   , csa_options               :: Options   , csa_conditional_waveforms :: ConditionalWaveforms   }+  deriving (Eq, Show)  data ConditionalWaveforms = ConditionalWaveforms {     cw_optional              :: [(Waveform, Condition)]   , cw_wave                  :: (Waveform, Maybe Condition)   }+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- ** 9.5.2 Selected signal assignments@@ -2340,11 +2509,13 @@   , ssa_options            :: Options   , ssa_selected_waveforms :: SelectedWaveforms   }+  deriving (Eq, Show)  data SelectedWaveforms = SelectedWaveforms {     sw_optional :: Maybe [(Waveform, Choices)]   , sw_last     :: (Waveform, Choices)   }+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- * 9.6 Component instantiation statements@@ -2367,11 +2538,13 @@   , cis_generic_map_aspect  :: Maybe GenericMapAspect   , cis_port_map_aspect     :: Maybe PortMapAspect   }+  deriving (Eq, Show)  data InstantiatedUnit =     IUComponent Name   | IUEntity    Name (Maybe Identifier)   | IUConfig    Name+  deriving (Eq, Show)  -------------------------------------------------------------------------------- -- ** 9.6.1 Instantiation of a component@@ -2403,10 +2576,12 @@   , gens_block_declarative_item :: Maybe (BlockDeclarativeItem)   , gens_concurrent_statement   :: [ConcurrentStatement]   }+  deriving (Eq, Show)  data GenerationScheme =     GSFor ParameterSpecification   | GSIf Condition+  deriving (Eq, Show)  type Label = Identifier @@ -2414,12 +2589,16 @@ -- ?  data UseClause        = UseClause [SelectedName]+  deriving (Eq, Show)  data Identifier       = Ident String+  deriving (Eq, Show)  data CharacterLiteral = CLit Char+  deriving (Eq, Show)  data StringLiteral    = SLit String+  deriving (Eq, Show)  -------------------------------------------------------------------------------- --@@ -2428,61 +2607,87 @@ --------------------------------------------------------------------------------  data AbstractLiteral  = AbstractLiteral+  deriving (Eq, Show)  data Base = Base+  deriving (Eq, Show)  data BaseSpecifier = BaseSpecifier+  deriving (Eq, Show)  data BaseUnitDeclaration = BaseUnitDeclaration+  deriving (Eq, Show)  data BasedInteger = BasedInteger+  deriving (Eq, Show)  data BasedLiteral = BasedLiteral+  deriving (Eq, Show)  data BasicCharacter = BasicCharacter+  deriving (Eq, Show)  data BasicGraphicCharacter = BasicGraphicCharacter+  deriving (Eq, Show)  data BasicIdentifier = BasicIdentifier+  deriving (Eq, Show)  data BitStringLiteral = BitStringLiteral+  deriving (Eq, Show)  data BitValue = BitValue+  deriving (Eq, Show)  data ContextClause = ContextClause+  deriving (Eq, Show)  data ContextItem = ContextItem+  deriving (Eq, Show)  data DecimalLiteral = DecimalLiteral+  deriving (Eq, Show)  data DesignFile = DesignFile+  deriving (Eq, Show)  data DesignUnit = DesignUnit+  deriving (Eq, Show)  data Exponent = Exponent+  deriving (Eq, Show)  data ExtendedDigit = ExtendedDigit+  deriving (Eq, Show)  data ExtendedIdentifier = ExtendedIdentifier+  deriving (Eq, Show)  data GraphicCharacter = GraphicCharacter+  deriving (Eq, Show)  data Letter = Letter+  deriving (Eq, Show)  data LetterOrDigit = LetterOrDigit+  deriving (Eq, Show)  data LibraryClause = LibraryClause+  deriving (Eq, Show)  data LibraryUnit = LibraryUnit+  deriving (Eq, Show)  data LogicalName = LogicalName+  deriving (Eq, Show)  data LogicalNameList = LogicalNameList+  deriving (Eq, Show)  data PrimaryUnit = PrimaryUnit--data ProcessStatementPart = ProcessStatementPart+  deriving (Eq, Show)  data SecondaryUnit = SecondaryUnit+  deriving (Eq, Show)  --------------------------------------------------------------------------------