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 +1/−1
- src/Language/VHDL/Pretty.hs +160/−130
- src/Language/VHDL/Syntax.hs +269/−64
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) --------------------------------------------------------------------------------