language-vhdl 0.1.3 → 0.1.4
raw patch · 3 files changed
+54/−30 lines, 3 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Language.VHDL.Pretty: instance Language.VHDL.Pretty.Pretty Language.VHDL.Syntax.ExtendedDigit
- Language.VHDL.Pretty: instance Language.VHDL.Pretty.Pretty a => Language.VHDL.Pretty.Pretty (GHC.Base.Maybe a)
- Language.VHDL.Syntax: BDIAttrSepc :: AttributeSpecification -> BlockDeclarativeItem
- Language.VHDL.Syntax: BDIConfigSepc :: ConfigurationSpecification -> BlockDeclarativeItem
- Language.VHDL.Syntax: BaseSpecifier :: BaseSpecifier
- Language.VHDL.Syntax: ExtendedDigit :: ExtendedDigit
- Language.VHDL.Syntax: data ExtendedDigit
- Language.VHDL.Syntax: instance GHC.Classes.Eq Language.VHDL.Syntax.ExtendedDigit
- Language.VHDL.Syntax: instance GHC.Show.Show Language.VHDL.Syntax.ExtendedDigit
- Language.VHDL.Syntax: type SubprogramDeclaration = SubprogramSpecification
+ Language.VHDL.Pretty: instance Language.VHDL.Pretty.Pretty Language.VHDL.Syntax.SubprogramDeclaration
+ Language.VHDL.Pretty: instance Language.VHDL.Pretty.Pretty a => Language.VHDL.Pretty.Pretty (GHC.Maybe.Maybe a)
+ Language.VHDL.Syntax: BDIAttrSpec :: AttributeSpecification -> BlockDeclarativeItem
+ Language.VHDL.Syntax: BDIConfigSpec :: ConfigurationSpecification -> BlockDeclarativeItem
+ Language.VHDL.Syntax: BSBinary :: BaseSpecifier
+ Language.VHDL.Syntax: BSHexadecimal :: BaseSpecifier
+ Language.VHDL.Syntax: BSOctal :: BaseSpecifier
+ Language.VHDL.Syntax: SubprogramDeclaration :: SubprogramSpecification -> SubprogramDeclaration
+ Language.VHDL.Syntax: [bsl_base_specifier] :: BitStringLiteral -> BaseSpecifier
+ Language.VHDL.Syntax: [bsl_bit_value] :: BitStringLiteral -> BitValue
+ Language.VHDL.Syntax: instance GHC.Classes.Eq Language.VHDL.Syntax.SubprogramDeclaration
+ Language.VHDL.Syntax: instance GHC.Show.Show Language.VHDL.Syntax.SubprogramDeclaration
+ Language.VHDL.Syntax: newtype SubprogramDeclaration
+ Language.VHDL.Syntax: type ExtendedDigit = Char
- Language.VHDL.Syntax: Assertion :: Condition -> (Maybe Expression) -> (Maybe Expression) -> Assertion
+ Language.VHDL.Syntax: Assertion :: Condition -> Maybe Expression -> Maybe Expression -> Assertion
- Language.VHDL.Syntax: AssertionStatement :: (Maybe Label) -> Assertion -> AssertionStatement
+ Language.VHDL.Syntax: AssertionStatement :: Maybe Label -> Assertion -> AssertionStatement
- Language.VHDL.Syntax: BitStringLiteral :: BitStringLiteral
+ Language.VHDL.Syntax: BitStringLiteral :: BaseSpecifier -> BitValue -> BitStringLiteral
- Language.VHDL.Syntax: BitValue :: BitValue
+ Language.VHDL.Syntax: BitValue :: [ExtendedDigit] -> BitValue
- Language.VHDL.Syntax: DMechInertial :: (Maybe Expression) -> DelayMechanism
+ Language.VHDL.Syntax: DMechInertial :: Maybe Expression -> DelayMechanism
- Language.VHDL.Syntax: EAEntity :: Name -> (Maybe Identifier) -> EntityAspect
+ Language.VHDL.Syntax: EAEntity :: Name -> Maybe Identifier -> EntityAspect
- Language.VHDL.Syntax: ENand :: (Relation) -> (Maybe Relation) -> Expression
+ Language.VHDL.Syntax: ENand :: Relation -> Maybe Relation -> Expression
- Language.VHDL.Syntax: ENor :: (Relation) -> (Maybe Relation) -> Expression
+ Language.VHDL.Syntax: ENor :: Relation -> Maybe Relation -> Expression
- Language.VHDL.Syntax: FacPrim :: Primary -> (Maybe Primary) -> Factor
+ Language.VHDL.Syntax: FacPrim :: Primary -> Maybe Primary -> Factor
- Language.VHDL.Syntax: GenerateStatement :: Label -> GenerationScheme -> Maybe (BlockDeclarativeItem) -> [ConcurrentStatement] -> GenerateStatement
+ Language.VHDL.Syntax: GenerateStatement :: Label -> GenerationScheme -> Maybe [BlockDeclarativeItem] -> [ConcurrentStatement] -> GenerateStatement
- Language.VHDL.Syntax: IUEntity :: Name -> (Maybe Identifier) -> InstantiatedUnit
+ Language.VHDL.Syntax: IUEntity :: Name -> Maybe Identifier -> InstantiatedUnit
- Language.VHDL.Syntax: ProcedureCall :: Name -> (Maybe ActualParameterPart) -> ProcedureCall
+ Language.VHDL.Syntax: ProcedureCall :: Name -> Maybe ActualParameterPart -> ProcedureCall
- Language.VHDL.Syntax: ProcedureCallStatement :: (Maybe Label) -> ProcedureCall -> ProcedureCallStatement
+ Language.VHDL.Syntax: ProcedureCallStatement :: Maybe Label -> ProcedureCall -> ProcedureCallStatement
- Language.VHDL.Syntax: ReportStatement :: (Maybe Label) -> Expression -> (Maybe Expression) -> ReportStatement
+ Language.VHDL.Syntax: ReportStatement :: Maybe Label -> Expression -> Maybe Expression -> ReportStatement
- Language.VHDL.Syntax: SignalAssignmentStatement :: (Maybe Label) -> Target -> (Maybe DelayMechanism) -> Waveform -> SignalAssignmentStatement
+ Language.VHDL.Syntax: SignalAssignmentStatement :: Maybe Label -> Target -> Maybe DelayMechanism -> Waveform -> SignalAssignmentStatement
- Language.VHDL.Syntax: Signature :: (Maybe (Maybe [TypeMark], Maybe TypeMark)) -> Signature
+ Language.VHDL.Syntax: Signature :: Maybe (Maybe [TypeMark], Maybe TypeMark) -> Signature
- Language.VHDL.Syntax: VariableAssignmentStatement :: (Maybe Label) -> Target -> Expression -> VariableAssignmentStatement
+ Language.VHDL.Syntax: VariableAssignmentStatement :: Maybe Label -> Target -> Expression -> VariableAssignmentStatement
- Language.VHDL.Syntax: WaitStatement :: (Maybe Label) -> (Maybe SensitivityClause) -> (Maybe ConditionClause) -> (Maybe TimeoutClause) -> WaitStatement
+ Language.VHDL.Syntax: WaitStatement :: Maybe Label -> Maybe SensitivityClause -> Maybe ConditionClause -> Maybe TimeoutClause -> WaitStatement
- Language.VHDL.Syntax: WaveEExp :: Expression -> (Maybe Expression) -> WaveformElement
+ Language.VHDL.Syntax: WaveEExp :: Expression -> Maybe Expression -> WaveformElement
- Language.VHDL.Syntax: WaveENull :: (Maybe Expression) -> WaveformElement
+ Language.VHDL.Syntax: WaveENull :: Maybe Expression -> WaveformElement
- Language.VHDL.Syntax: [gens_block_declarative_item] :: GenerateStatement -> Maybe (BlockDeclarativeItem)
+ Language.VHDL.Syntax: [gens_block_declarative_item] :: GenerateStatement -> Maybe [BlockDeclarativeItem]
Files
- language-vhdl.cabal +1/−1
- src/Language/VHDL/Pretty.hs +19/−12
- src/Language/VHDL/Syntax.hs +34/−17
language-vhdl.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/ name: language-vhdl-version: 0.1.3+version: 0.1.4 synopsis: VHDL AST and pretty printer in Haskell. -- description: license: BSD3
src/Language/VHDL/Pretty.hs view
@@ -4,7 +4,8 @@ module Language.VHDL.Pretty (Pretty (..)) where import Language.VHDL.Syntax-import Text.PrettyPrint hiding (Mode)+import Text.PrettyPrint hiding (Mode)+import Prelude hiding ((<>)) -------------------------------------------------------------------------------- -- * Pretty printing class@@ -121,7 +122,10 @@ <+> text "OF" <+> pp s <+> text "IS" <+> pp e <+> semi -instance Pretty BaseSpecifier where pp = error "missing: BaseSpecifier" -- todo+instance Pretty BaseSpecifier where+ pp BSOctal = char 'o'+ pp BSBinary = char 'b'+ pp BSHexadecimal = char 'x' instance Pretty BaseUnitDeclaration where pp = error "missing: BaseUnitDeclaration" -- todo @@ -138,9 +142,11 @@ pp (BindingIndication e g p) = vcat [condR (text "USE") e, cond id g, cond id p] -instance Pretty BitStringLiteral where pp = error "missing: BitStringLiteral" -- todo+instance Pretty BitStringLiteral where+ pp (BitStringLiteral bs bv) = pp bs <> doubleQuotes (pp bv) -instance Pretty BitValue where pp = error "missing: BitValue" -- todo+instance Pretty BitValue where+ pp (BitValue eds) = text eds instance Pretty BlockConfiguration where pp (BlockConfiguration s u c) =@@ -161,8 +167,8 @@ 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 (BDIAttrSpec a) = pp a+ pp (BDIConfigSpec c) = pp c pp (BDIDisconSpec d) = pp d pp (BDIUseClause u) = pp u pp (BDIGroupTemp g) = pp g@@ -464,7 +470,7 @@ pp (EChar c) = pp c instance Pretty EnumerationTypeDefinition where- pp (EnumerationTypeDefinition es) = commaSep $ fmap pp es+ pp (EnumerationTypeDefinition es) = parens . commaSep . fmap pp $ es instance Pretty ExitStatement where pp (ExitStatement l b c) =@@ -482,8 +488,6 @@ pp (ENor r rs) = pp r <+> condL (text "NOR") rs pp (EXnor rs) = textSep "XNOR" $ map pp rs -instance Pretty ExtendedDigit where pp = error "missing: ExtendedDigit" -- todo- instance Pretty ExtendedIdentifier where pp = error "missing: ExtendedIdentifier" -- todo instance Pretty Factor where@@ -537,15 +541,15 @@ pp (GenerateStatement l g d s) = pp l <+> colon `hangs` vcat [ pp g <+> text "GENERATE"- , cond indent d+ , maybe empty (indent . vcat . fmap pp) d , cond (const $ text "BEGIN") d , indent $ vcat $ fmap pp s , text "END GENERATE" <+> pp l <+> semi ] instance Pretty GenerationScheme where- pp (GSFor p) = pp p- pp (GSIf c) = pp c+ pp (GSFor p) = text "FOR" <+> pp p+ pp (GSIf c) = text "IF" <+> pp c instance Pretty GenericClause where pp (GenericClause ls) = text "GENERIC" <+> parens (pp ls) <+> semi@@ -1055,6 +1059,9 @@ Nothing -> empty Just True -> text "PURE" Just False -> text "IMPURE"++instance Pretty SubprogramDeclaration where+ pp (SubprogramDeclaration s) = pp s <+> semi --instance Pretty SubprogramStatementPart where pp = undefined
src/Language/VHDL/Syntax.hs view
@@ -192,8 +192,8 @@ | BDIAlias AliasDeclaration | BDIComp ComponentDeclaration | BDIAttrDecl AttributeDeclaration- | BDIAttrSepc AttributeSpecification- | BDIConfigSepc ConfigurationSpecification+ | BDIAttrSpec AttributeSpecification+ | BDIConfigSpec ConfigurationSpecification | BDIDisconSpec DisconnectionSpecification | BDIUseClause UseClause | BDIGroupTemp GroupTemplateDeclaration@@ -333,7 +333,8 @@ operator_symbol ::= string_literal -} -type SubprogramDeclaration = SubprogramSpecification+newtype SubprogramDeclaration = SubprogramDeclaration SubprogramSpecification+ deriving (Eq, Show) data SubprogramSpecification = SubprogramProcedure {@@ -530,7 +531,7 @@ -- * 2.6 Package bodies {- package_body ::=- PACKAGE package_simple_name IS+ PACKAGE BODY package_simple_name IS package_body_declarative_part END [ PACKAGE BODY ] [ package_simple_name ] ; @@ -2573,7 +2574,7 @@ data GenerateStatement = GenerateStatement { gens_label :: Label , gens_generation_scheme :: GenerationScheme- , gens_block_declarative_item :: Maybe (BlockDeclarativeItem)+ , gens_block_declarative_item :: Maybe [BlockDeclarativeItem] , gens_concurrent_statement :: [ConcurrentStatement] } deriving (Eq, Show)@@ -2791,7 +2792,35 @@ type BasedInteger = Integer +type ExtendedDigit = Char+ --------------------------------------------------------------------------------+-- *** 13.7 Bit string literals++{-+ bit_string_literal ::= base_specifier "[ bit_value ]"++ bit_value ::= extended_digit { [ underline ] extended_digit }++ base_specifier ::= B | O | X+-}++data BitStringLiteral = BitStringLiteral {+ bsl_base_specifier :: BaseSpecifier+ , bsl_bit_value :: BitValue+ }+ deriving (Eq, Show)++data BitValue = BitValue [ExtendedDigit]+ deriving (Eq, Show)++data BaseSpecifier =+ BSOctal+ | BSBinary+ | BSHexadecimal+ deriving (Eq, Show)++-------------------------------------------------------------------------------- -- -- - ToDo - --@@ -2808,9 +2837,6 @@ -------------------------------------------------------------------------------- -data BaseSpecifier = BaseSpecifier- deriving (Eq, Show)- data BaseUnitDeclaration = BaseUnitDeclaration deriving (Eq, Show) @@ -2821,15 +2847,6 @@ deriving (Eq, Show) data BasicIdentifier = BasicIdentifier- deriving (Eq, Show)--data BitStringLiteral = BitStringLiteral- deriving (Eq, Show)--data BitValue = BitValue- deriving (Eq, Show)--data ExtendedDigit = ExtendedDigit deriving (Eq, Show) data ExtendedIdentifier = ExtendedIdentifier