Table binding valid operators to their vl-opinfo structures.
The constant
Here is how we represent the various Verilog operators:
Note that upon parsing, there are no
For SystemVerilog streaming concatenations we add new variable-arity operators:
{<< [size] { arg1 arg2 ... }} --> (:vl-stream-left [size] arg1 arg2 ...) {>> [size] { arg1 arg2 ... }} --> (:vl-stream-right [size] arg1 arg2 ...)
For the special
Note: see vl-hidpiece-p for some additional discussion about hierarchical identifiers.
The SystemVerilog-2012 casting operator, e.g.,
The SystemVerilog
foo inside { bar, [a:b], baz }
This will get represented as a top-level
Definition:
(defconst *vl-ops-table* (list$ (cons :vl-unary-plus (make-vl-opinfo :arity 1 :text "+")) (cons :vl-unary-minus (make-vl-opinfo :arity 1 :text "-")) (cons :vl-unary-lognot (make-vl-opinfo :arity 1 :text "!")) (cons :vl-unary-bitnot (make-vl-opinfo :arity 1 :text "~")) (cons :vl-unary-bitand (make-vl-opinfo :arity 1 :text "&")) (cons :vl-unary-nand (make-vl-opinfo :arity 1 :text "~&")) (cons :vl-unary-bitor (make-vl-opinfo :arity 1 :text "|")) (cons :vl-unary-nor (make-vl-opinfo :arity 1 :text "~|")) (cons :vl-unary-xor (make-vl-opinfo :arity 1 :text "^")) (cons :vl-unary-xnor (make-vl-opinfo :arity 1 :text "~^")) (cons :vl-unary-preinc (make-vl-opinfo :arity 1 :text "++")) (cons :vl-unary-predec (make-vl-opinfo :arity 1 :text "--")) (cons :vl-unary-postinc (make-vl-opinfo :arity 1 :text "++")) (cons :vl-unary-postdec (make-vl-opinfo :arity 1 :text "--")) (cons :vl-binary-plus (make-vl-opinfo :arity 2 :text "+")) (cons :vl-binary-minus (make-vl-opinfo :arity 2 :text "-")) (cons :vl-binary-times (make-vl-opinfo :arity 2 :text "*")) (cons :vl-binary-div (make-vl-opinfo :arity 2 :text "/")) (cons :vl-binary-rem (make-vl-opinfo :arity 2 :text "%")) (cons :vl-binary-eq (make-vl-opinfo :arity 2 :text "==")) (cons :vl-binary-neq (make-vl-opinfo :arity 2 :text "!=")) (cons :vl-binary-ceq (make-vl-opinfo :arity 2 :text "===")) (cons :vl-binary-cne (make-vl-opinfo :arity 2 :text "!==")) (cons :vl-binary-wildeq (make-vl-opinfo :arity 2 :text "==?")) (cons :vl-binary-wildneq (make-vl-opinfo :arity 2 :text "!=?")) (cons :vl-binary-logand (make-vl-opinfo :arity 2 :text "&&")) (cons :vl-binary-logor (make-vl-opinfo :arity 2 :text "||")) (cons :vl-binary-power (make-vl-opinfo :arity 2 :text "**")) (cons :vl-binary-lt (make-vl-opinfo :arity 2 :text "<")) (cons :vl-binary-lte (make-vl-opinfo :arity 2 :text "<=")) (cons :vl-binary-gt (make-vl-opinfo :arity 2 :text ">")) (cons :vl-binary-gte (make-vl-opinfo :arity 2 :text ">=")) (cons :vl-binary-bitand (make-vl-opinfo :arity 2 :text "&")) (cons :vl-binary-bitor (make-vl-opinfo :arity 2 :text "|")) (cons :vl-binary-xor (make-vl-opinfo :arity 2 :text "^")) (cons :vl-binary-xnor (make-vl-opinfo :arity 2 :text "~^")) (cons :vl-binary-shr (make-vl-opinfo :arity 2 :text ">>")) (cons :vl-binary-shl (make-vl-opinfo :arity 2 :text "<<")) (cons :vl-binary-ashr (make-vl-opinfo :arity 2 :text ">>>")) (cons :vl-binary-ashl (make-vl-opinfo :arity 2 :text "<<<")) (cons :vl-binary-assign (make-vl-opinfo :arity 2 :text "=")) (cons :vl-binary-plusassign (make-vl-opinfo :arity 2 :text "+=")) (cons :vl-binary-minusassign (make-vl-opinfo :arity 2 :text "-=")) (cons :vl-binary-timesassign (make-vl-opinfo :arity 2 :text "*=")) (cons :vl-binary-divassign (make-vl-opinfo :arity 2 :text "/=")) (cons :vl-binary-remassign (make-vl-opinfo :arity 2 :text "%=")) (cons :vl-binary-andassign (make-vl-opinfo :arity 2 :text "&=")) (cons :vl-binary-orassign (make-vl-opinfo :arity 2 :text "|=")) (cons :vl-binary-xorassign (make-vl-opinfo :arity 2 :text "^=")) (cons :vl-binary-shlassign (make-vl-opinfo :arity 2 :text "<<=")) (cons :vl-binary-shrassign (make-vl-opinfo :arity 2 :text ">>=")) (cons :vl-binary-ashlassign (make-vl-opinfo :arity 2 :text "<<<=")) (cons :vl-binary-ashrassign (make-vl-opinfo :arity 2 :text ">>>=")) (cons :vl-implies (make-vl-opinfo :arity 2 :text "->")) (cons :vl-equiv (make-vl-opinfo :arity 2 :text "<->")) (cons :vl-qmark (make-vl-opinfo :arity 3 :text nil)) (cons :vl-mintypmax (make-vl-opinfo :arity 3 :text nil)) (cons :vl-index (make-vl-opinfo :arity 2 :text nil)) (cons :vl-bitselect (make-vl-opinfo :arity 2 :text nil)) (cons :vl-select-colon (make-vl-opinfo :arity 3 :text nil)) (cons :vl-select-pluscolon (make-vl-opinfo :arity 3 :text nil)) (cons :vl-select-minuscolon (make-vl-opinfo :arity 3 :text nil)) (cons :vl-partselect-colon (make-vl-opinfo :arity 3 :text nil)) (cons :vl-partselect-pluscolon (make-vl-opinfo :arity 3 :text nil)) (cons :vl-partselect-minuscolon (make-vl-opinfo :arity 3 :text nil)) (cons :vl-concat (make-vl-opinfo :arity nil :text nil)) (cons :vl-multiconcat (make-vl-opinfo :arity 2 :text nil)) (cons :vl-stream-left (make-vl-opinfo :arity nil :text nil)) (cons :vl-stream-right (make-vl-opinfo :arity nil :text nil)) (cons :vl-stream-left-sized (make-vl-opinfo :arity nil :text nil)) (cons :vl-stream-right-sized (make-vl-opinfo :arity nil :text nil)) (cons :vl-with-index (make-vl-opinfo :arity 2 :text nil)) (cons :vl-with-colon (make-vl-opinfo :arity 3 :text nil)) (cons :vl-with-pluscolon (make-vl-opinfo :arity 3 :text nil)) (cons :vl-with-minuscolon (make-vl-opinfo :arity 3 :text nil)) (cons :vl-funcall (make-vl-opinfo :arity nil :text nil)) (cons :vl-syscall (make-vl-opinfo :arity nil :text nil)) (cons :vl-hid-dot (make-vl-opinfo :arity 2 :text ".")) (cons :vl-scope (make-vl-opinfo :arity 2 :text "::")) (cons :vl-tagged (make-vl-opinfo :arity nil :text "tagged")) (cons :vl-binary-cast (make-vl-opinfo :arity 2 :text "'")) (cons :vl-pattern-positional (make-vl-opinfo :arity nil :text nil)) (cons :vl-pattern-multi (make-vl-opinfo :arity 2 :text nil)) (cons :vl-pattern-keyvalue (make-vl-opinfo :arity nil :text nil)) (cons :vl-keyvalue (make-vl-opinfo :arity 2 :text nil)) (cons :vl-pattern-type (make-vl-opinfo :arity 2 :text nil)) (cons :vl-inside (make-vl-opinfo :arity 2 :text "inside")) (cons :vl-valuerangelist (make-vl-opinfo :arity nil :text nil)) (cons :vl-valuerange (make-vl-opinfo :arity 2 :text nil))))