• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Community
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
      • Gl
      • Esim
      • Vl2014
        • Warnings
        • Primitives
        • Use-set
        • Syntax
        • Getting-started
        • Utilities
        • Loader
          • Preprocessor
          • Vl-loadconfig
          • Lexer
          • Vl-loadstate
          • Parser
            • Parse-expressions
              • Vl-parse-parameter-value-assignment-hack
              • Vl-erange-p
              • Vl-mixed-binop-list-p
              • Vl-parse-very-simple-type
              • Vl-mark-as-explicit-parens
              • Vl-parse-0+-scope-prefixes
              • Vl-parse-0+-attribute-instances
                • Vl-parse-0+-attribute-instances-aux
                • Vl-parse-attribute-instance
                • Vl-parse-attr-spec
                • Vl-parse-attribute-instance-aux
              • Vl-parse-op
              • Vl-parse-hierarchical-identifier
              • Vl-parse-pva-tail
              • Vl-parse-expression-top
              • Vl-parse-any-sort-of-concatenation
              • Vl-build-indexing-nest
              • Vl-erangetypelist-p
              • Vl-build-range-select-with
              • Vl-build-range-select
              • Vl-parse-simple-type
              • Vl-expr-has-any-atts-p
              • Vl-left-associate-mixed-binop-list
              • Vl-tack-scopes-onto-hid
              • Vl-parse-op-alist-p
              • Vl-make-guts-from-inttoken
              • Vl-parse-range-expression
              • Vl-parse-slice-size
              • Vl-parse-concatenation
              • Vl-parse-stream-expression
              • Vl-parse-1+-stream-expressions-separated-by-commas
              • Vl-parse-stream-concatenation
              • Vl-parse-primary
              • Vl-parse-0+-bracketed-expressions
              • Vl-parse-system-function-call
              • Vl-parse-shift-expression-aux
              • Vl-parse-power-expression-aux
              • Vl-parse-mult-expression-aux
              • Vl-parse-mintypmax-expression
              • Vl-parse-logor-expression-aux
              • Vl-parse-logand-expression-aux
              • Vl-parse-indexed-id-2012
              • Vl-parse-indexed-id-2005
              • Vl-parse-equality-expression-aux
              • Vl-parse-equality-expression
              • Vl-parse-compare-expression-aux
              • Vl-parse-bitxor-expression-aux
              • Vl-parse-bitor-expression-aux
              • Vl-parse-bitand-expression-aux
              • Vl-parse-1+-open-value-ranges
              • Vl-parse-1+-keyval-expression-pairs
              • Vl-parse-unary-expression
              • Vl-parse-shift-expression
              • Vl-parse-qmark-expression
              • Vl-parse-primary-main
              • Vl-parse-primary-cast
              • Vl-parse-power-expression
              • Vl-parse-open-value-range
              • Vl-parse-nonprimary-cast
              • Vl-parse-mult-expression
              • Vl-parse-logor-expression
              • Vl-parse-logand-expression
              • Vl-parse-indexed-id
              • Vl-parse-impl-expression
              • Vl-parse-function-call
              • Vl-parse-expression
              • Vl-parse-compare-expression
              • Vl-parse-bitxor-expression
              • Vl-parse-bitor-expression
              • Vl-parse-bitand-expression
              • Vl-parse-assignment-pattern
              • Vl-parse-add-expression-aux
              • Vl-parse-add-expression
              • Vl-parse-1+-expressions-separated-by-commas
            • Parse-udps
            • Vl-genelements
            • Parse-paramdecls
            • Parse-blockitems
            • Parse-utils
            • Parse-insts
            • Parse-datatype
            • Parse-functions
            • Parse-datatypes
            • Parse-strengths
            • Vl-parse-genvar-declaration
            • Vl-parse
            • Parse-ports
            • Seq
            • Parse-packages
          • Vl-load-merge-descriptions
          • Scope-of-defines
          • Vl-load-file
          • Vl-flush-out-descriptions
          • Vl-description
          • Vl-loadresult
          • Vl-read-file
          • Vl-find-basename/extension
          • Vl-find-file
          • Vl-read-files
          • Extended-characters
          • Vl-load
          • Vl-load-main
          • Vl-load-description
          • Vl-descriptions-left-to-load
          • Inject-warnings
          • Vl-load-descriptions
          • Vl-load-files
          • Vl-load-summary
          • Vl-collect-modules-from-descriptions
          • Vl-descriptionlist
        • Transforms
        • Lint
        • Mlib
        • Server
        • Kit
        • Printer
        • Esim-vl
        • Well-formedness
      • Sv
      • Fgl
      • Vwsim
      • Vl
      • X86isa
      • Svl
      • Rtl
    • Software-verification
    • Math
    • Testing-utilities
  • Parse-expressions

Vl-parse-0+-attribute-instances

Top level parser for { attribute_instance } with proper duplicity checking and warnings. Returns a vl-atts-p.

Signature
(vl-parse-0+-attribute-instances &key (tokstream 'tokstream) 
                                 (config 'config)) 
 
  → 
(mv errmsg? value new-tokstream)
Arguments
config — Guard (vl-loadconfig-p config).

This is a wrapper. Almost all of the work is done by the aux function, vl-parse-0+-attribute-instances-aux. The aux function gathers up an vl-atts-p that has all the attributes in the order they were seen in. For instance, it would produce:

(* foo = 1 *)  (* bar = 2, foo = 2 *)
   --->
(( "foo" . <1> )     ; Where <1> means, a proper vl-expr-p with
 ( "bar" . <2> )     ; the number 1.
 ( "foo" . <2> ))

This isn't quite right. We want any later attributes to shadow the previous attributes, and we want to warn about any attributes like "foo" that occur multiple times. So, in this wrapper, we check for duplicates and issue warnings, and we fix up the alists to get unique keys bound to the right values.

Subtopics

Vl-parse-0+-attribute-instances-aux
Match { attribute_instance }, collecting all attributes in the order they were seen, without proper duplicity checking.
Vl-parse-attribute-instance
Match (* ... *), return a vl-atts-p.
Vl-parse-attr-spec
Match a single attr_spec, return a singleton vl-atts-p.
Vl-parse-attribute-instance-aux
Match attr_spec { ',' attr_spec' } , return a vl-atts-p.