const lang = Object.freeze({ "displayName": "SystemVerilog", "fileTypes": ["v", "vh", "sv", "svh"], "name": "system-verilog", "patterns": [{ "include": "#comments" }, { "include": "#strings" }, { "include": "#typedef-enum-struct-union" }, { "include": "#typedef" }, { "include": "#functions" }, { "include": "#keywords" }, { "include": "#tables" }, { "include": "#function-task" }, { "include": "#module-declaration" }, { "include": "#class-declaration" }, { "include": "#enum-struct-union" }, { "include": "#sequence" }, { "include": "#all-types" }, { "include": "#module-parameters" }, { "include": "#module-no-parameters" }, { "include": "#port-net-parameter" }, { "include": "#system-tf" }, { "include": "#assertion" }, { "include": "#bind-directive" }, { "include": "#cast-operator" }, { "include": "#storage-scope" }, { "include": "#attributes" }, { "include": "#imports" }, { "include": "#operators" }, { "include": "#constants" }, { "include": "#identifiers" }, { "include": "#selects" }], "repository": { "all-types": { "patterns": [{ "include": "#built-ins" }, { "include": "#modifiers" }] }, "assertion": { "captures": { "1": { "name": "entity.name.goto-label.php" }, "2": { "name": "keyword.operator.systemverilog" }, "3": { "name": "keyword.sva.systemverilog" } }, "match": "\\b([a-zA-Z_][a-zA-Z0-9_$]*)[ \\t\\r\\n]*(:)[ \\t\\r\\n]*(assert|assume|cover|restrict)\\b" }, "attributes": { "begin": "(?>>=|>>=|<<<=|<<=|<=|=", "name": "keyword.operator.assignment.systemverilog" }, { "match": "\\+\\+", "name": "keyword.operator.increment.systemverilog" }, { "match": "--", "name": "keyword.operator.decrement.systemverilog" }, { "match": "\\+|-|\\*\\*|\\*|/|%", "name": "keyword.operator.arithmetic.systemverilog" }, { "match": "!|&&|\\|\\|", "name": "keyword.operator.logical.systemverilog" }, { "match": "<<<|<<|>>>|>>", "name": "keyword.operator.bitwise.shift.systemverilog" }, { "match": "~&|~\\||~|\\^~|~\\^|&|\\||\\^|{|'{|}|:|\\?", "name": "keyword.operator.bitwise.systemverilog" }, { "match": "<=|<|>=|>|==\\?|!=\\?|===|!==|==|!=", "name": "keyword.operator.comparison.systemverilog" }, { "match": "@|##|#|->|<->", "name": "keyword.operator.channel.systemverilog" }, { "match": "\\b(?:dist|inside|with|intersect|and|or|throughout|within|first_match)\\b|:=|:/|\\|->|\\|=>|->>|\\*>|#-#|#=#|&&&", "name": "keyword.operator.logical.systemverilog" }] }, "parameters": { "begin": "[ \\t\\r\\n]*(#)[ \\t\\r\\n]*(\\()", "beginCaptures": { "1": { "name": "keyword.operator.channel.systemverilog" }, "2": { "name": "punctuation.section.parameters.begin" } }, "end": "(\\))[ \\t\\r\\n]*(?=;|\\(|[a-zA-Z_]|\\\\|$)", "endCaptures": { "1": { "name": "punctuation.section.parameters.end" } }, "name": "meta.parameters.systemverilog", "patterns": [{ "include": "#port-net-parameter" }, { "include": "#comments" }, { "include": "#constants" }, { "include": "#operators" }, { "include": "#strings" }, { "include": "#system-tf" }, { "include": "#functions" }, { "match": "\\bvirtual\\b", "name": "storage.modifier.systemverilog" }, { "include": "#module-binding" }] }, "port-net-parameter": { "patterns": [{ "captures": { "1": { "name": "support.type.direction.systemverilog" }, "2": { "name": "storage.type.net.systemverilog" }, "3": { "name": "support.type.scope.systemverilog" }, "4": { "name": "keyword.operator.scope.systemverilog" }, "5": { "patterns": [{ "include": "#built-ins" }, { "match": "[a-zA-Z_][a-zA-Z0-9_$]*", "name": "storage.type.user-defined.systemverilog" }] }, "6": { "patterns": [{ "include": "#modifiers" }] }, "7": { "patterns": [{ "include": "#selects" }] }, "8": { "patterns": [{ "include": "#constants" }, { "include": "#identifiers" }] }, "9": { "patterns": [{ "include": "#selects" }] } }, "match": ",?[ \\t\\r\\n]*(?:\\b(output|input|inout|ref)\\b[ \\t\\r\\n]*)?(?:\\b(localparam|parameter|var|supply[01]|tri|triand|trior|trireg|tri[01]|uwire|wire|wand|wor)\\b[ \\t\\r\\n]*)?(?:\\b([a-zA-Z_][a-zA-Z0-9_$]*)(::))?(?:([a-zA-Z_][a-zA-Z0-9_$]*)\\b[ \\t\\r\\n]*)?(?:\\b(signed|unsigned)\\b[ \\t\\r\\n]*)?(?:(\\[[a-zA-Z0-9_:$\\.\\-\\+\\*/%`' \\t\\r\\n\\[\\]\\(\\)]*\\])[ \\t\\r\\n]*)?(?<^!~\\(][ \\t\\r\\n]*)\\b([a-zA-Z_][a-zA-Z0-9_$]*)\\b[ \\t\\r\\n]*(\\[[a-zA-Z0-9_:$\\.\\-\\+\\*/%`' \\t\\r\\n\\[\\]\\(\\)]*\\])?[ \\t\\r\\n]*(?=,|;|=|\\)|/|$)", "name": "meta.port-net-parameter.declaration.systemverilog" }] }, "selects": { "begin": "\\[", "beginCaptures": { "0": { "name": "punctuation.slice.brackets.begin" } }, "end": "\\]", "endCaptures": { "0": { "name": "punctuation.slice.brackets.end" } }, "name": "meta.brackets.select.systemverilog", "patterns": [{ "match": "\\$(?![a-z])", "name": "constant.language.systemverilog" }, { "include": "#system-tf" }, { "include": "#constants" }, { "include": "#operators" }, { "include": "#cast-operator" }, { "include": "#storage-scope" }, { "match": "[a-zA-Z_][a-zA-Z0-9_$]*", "name": "variable.other.identifier.systemverilog" }] }, "sequence": { "captures": { "1": { "name": "keyword.control.systemverilog" }, "2": { "name": "entity.name.function.systemverilog" } }, "match": "[ \\t\\r\\n]*\\b(sequence)[ \\t\\r\\n]+([a-zA-Z_][a-zA-Z0-9_$]*)\\b", "name": "meta.sequence.systemverilog" }, "storage-scope": { "captures": { "1": { "name": "support.type.scope.systemverilog" }, "2": { "name": "keyword.operator.scope.systemverilog" } }, "match": "\\b([a-zA-Z_][a-zA-Z0-9_$]*)(::)", "name": "meta.scope.systemverilog" }, "strings": { "patterns": [{ "begin": '`?"', "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.systemverilog" } }, "end": '"`?', "endCaptures": { "0": { "name": "punctuation.definition.string.end.systemverilog" } }, "name": "string.quoted.double.systemverilog", "patterns": [{ "match": '\\\\(?:[nt\\\\"vfa]|[0-7]{3}|x[0-9a-fA-F]{2})', "name": "constant.character.escape.systemverilog" }, { "match": "(?x)%\n(\\d+\\$)?\n['\\-+0\n[,;:_]?\n((-?\\d+)|\\*(-?\\d+\\$)?)?\n(\\.((-?\\d+)|\\*(-?\\d+\\$)?)?)?\n(hh|h|ll|l|j|z|t|L)?\n[xXhHdDoObBcClLvVmMpPsStTuUzZeEfFgG%]", "name": "constant.character.format.placeholder.systemverilog" }, { "match": "%", "name": "invalid.illegal.placeholder.systemverilog" }, { "include": "#fixme-todo" }] }, { "begin": "(?<=include)[ \\t\\r\\n]*(<)", "beginCaptures": { "1": { "name": "punctuation.definition.string.begin.systemverilog" } }, "end": ">", "endCaptures": { "0": { "name": "punctuation.definition.string.end.systemverilog" } }, "name": "string.quoted.other.lt-gt.include.systemverilog" }] }, "sv-control": { "captures": { "1": { "name": "keyword.control.systemverilog" } }, "match": "[ \\t\\r\\n]*\\b(initial|always|always_comb|always_ff|always_latch|final|assign|deassign|force|release|wait|forever|repeat|alias|while|for|if|iff|else|case|casex|casez|default|endcase|return|break|continue|do|foreach|clocking|coverpoint|property|bins|binsof|illegal_bins|ignore_bins|randcase|matches|solve|before|expect|cross|ref|srandom|struct|chandle|tagged|extern|throughout|timeprecision|timeunit|priority|type|union|wait_order|triggered|randsequence|context|pure|wildcard|new|forkjoin|unique|unique0|priority)\\b" }, "sv-control-begin": { "captures": { "1": { "name": "keyword.control.systemverilog" }, "2": { "name": "punctuation.definition.label.systemverilog" }, "3": { "name": "entity.name.section.systemverilog" } }, "match": "[ \\t\\r\\n]*\\b(begin|fork)\\b(?:[ \\t\\r\\n]*(:)[ \\t\\r\\n]*([a-zA-Z_][a-zA-Z0-9_$]*))?", "name": "meta.item.begin.systemverilog" }, "sv-control-end": { "captures": { "1": { "name": "keyword.control.systemverilog" }, "2": { "name": "punctuation.definition.label.systemverilog" }, "3": { "name": "entity.name.section.systemverilog" } }, "match": "[ \\t\\r\\n]*\\b(end|endmodule|endinterface|endprogram|endchecker|endclass|endpackage|endconfig|endfunction|endtask|endproperty|endsequence|endgroup|endprimitive|endclocking|endgenerate|join|join_any|join_none)\\b(?:[ \\t\\r\\n]*(:)[ \\t\\r\\n]*([a-zA-Z_][a-zA-Z0-9_$]*))?", "name": "meta.item.end.systemverilog" }, "sv-cover-cross": { "captures": { "2": { "name": "entity.name.type.class.systemverilog" }, "3": { "name": "keyword.operator.other.systemverilog" }, "4": { "name": "keyword.control.systemverilog" } }, "match": "(([a-zA-Z_][a-zA-Z0-9_$]*)[ \\t\\r\\n]*(:))?[ \\t\\r\\n]*(coverpoint|cross)[ \\t\\r\\n]+([a-zA-Z_][a-zA-Z0-9_$]*)", "name": "meta.definition.systemverilog" }, "sv-definition": { "captures": { "1": { "name": "keyword.control.systemverilog" }, "2": { "name": "entity.name.type.class.systemverilog" } }, "match": "[ \\t\\r\\n]*\\b(primitive|package|constraint|interface|covergroup|program)[ \\t\\r\\n]+\\b([a-zA-Z_][a-zA-Z0-9_$]*)\\b", "name": "meta.definition.systemverilog" }, "sv-local": { "captures": { "1": { "name": "keyword.other.systemverilog" } }, "match": "[ \\t\\r\\n]*\\b(const|static|protected|virtual|localparam|parameter|local)\\b" }, "sv-option": { "captures": { "1": { "name": "keyword.cover.systemverilog" } }, "match": "[ \\t\\r\\n]*\\b(option)\\." }, "sv-rand": { "match": "[ \\t\\r\\n]*\\b(?:rand|randc)\\b", "name": "storage.type.rand.systemverilog" }, "sv-std": { "match": "\\b(std)\\b::", "name": "support.class.systemverilog" }, "system-tf": { "match": "\\$[a-zA-Z0-9_$][a-zA-Z0-9_$]*\\b", "name": "support.function.systemverilog" }, "tables": { "begin": "[ \\t\\r\\n]*\\b(table)\\b", "beginCaptures": { "1": { "name": "keyword.table.systemverilog.begin" } }, "end": "[ \\t\\r\\n]*\\b(endtable)\\b", "endCaptures": { "1": { "name": "keyword.table.systemverilog.end" } }, "name": "meta.table.systemverilog", "patterns": [{ "include": "#comments" }, { "match": "\\b[01xXbBrRfFpPnN]\\b", "name": "constant.language.systemverilog" }, { "match": "[-*?]", "name": "constant.language.systemverilog" }, { "captures": { "1": { "name": "constant.language.systemverilog" } }, "match": "\\(([01xX?]{2})\\)" }, { "match": ":", "name": "punctuation.definition.label.systemverilog" }, { "include": "#operators" }, { "include": "#constants" }, { "include": "#strings" }, { "include": "#identifiers" }] }, "typedef": { "begin": "[ \\t\\r\\n]*\\b(?:(typedef)[ \\t\\r\\n]+)(?:([a-zA-Z_][a-zA-Z0-9_$]*)(?:[ \\t\\r\\n]+\\b(signed|unsigned)\\b)?(?:[ \\t\\r\\n]*(\\[[a-zA-Z0-9_:$\\.\\-\\+\\*/%`' \\t\\r\\n\\[\\]\\(\\)]*\\])?))?(?=[ \\t\\r\\n]*[a-zA-Z_\\\\])", "beginCaptures": { "1": { "name": "keyword.control.systemverilog" }, "2": { "patterns": [{ "include": "#built-ins" }, { "match": "\\bvirtual\\b", "name": "storage.modifier.systemverilog" }] }, "3": { "patterns": [{ "include": "#modifiers" }] }, "4": { "patterns": [{ "include": "#selects" }] } }, "end": ";", "endCaptures": { "0": { "name": "punctuation.definition.typedef.end.systemverilog" } }, "name": "meta.typedef.systemverilog", "patterns": [{ "include": "#identifiers" }, { "include": "#selects" }] }, "typedef-enum-struct-union": { "begin": "[ \\t\\r\\n]*\\b(typedef)[ \\t\\r\\n]+(enum|struct|union(?:[ \\t\\r\\n]+tagged)?|class|interface[ \\t\\r\\n]+class)(?:[ \\t\\r\\n]+(?!packed|signed|unsigned)([a-zA-Z_][a-zA-Z0-9_$]*)?(?:[ \\t\\r\\n]*(\\[[a-zA-Z0-9_:$\\.\\-\\+\\*/%`' \\t\\r\\n\\[\\]\\(\\)]*\\])?))?(?:[ \\t\\r\\n]+(packed))?(?:[ \\t\\r\\n]+(signed|unsigned))?(?=[ \\t\\r\\n]*(?:{|$))", "beginCaptures": { "1": { "name": "keyword.control.systemverilog" }, "2": { "name": "keyword.control.systemverilog" }, "3": { "patterns": [{ "include": "#built-ins" }] }, "4": { "patterns": [{ "include": "#selects" }] }, "5": { "name": "storage.modifier.systemverilog" }, "6": { "name": "storage.modifier.systemverilog" } }, "end": "(?<=})[ \\t\\r\\n]*([a-zA-Z_][a-zA-Z0-9_$]*|(?<=^|[ \\t\\r\\n])\\\\[!-~]+(?=$|[ \\t\\r\\n]))(?:[ \\t\\r\\n]*(\\[[a-zA-Z0-9_:$\\.\\-\\+\\*/%`' \\t\\r\\n\\[\\]\\(\\)]*\\])?)[ \\t\\r\\n]*[,;]", "endCaptures": { "1": { "name": "storage.type.systemverilog" }, "2": { "patterns": [{ "include": "#selects" }] } }, "name": "meta.typedef-enum-struct-union.systemverilog", "patterns": [{ "include": "#port-net-parameter" }, { "include": "#keywords" }, { "include": "#base-grammar" }, { "include": "#identifiers" }] } }, "scopeName": "source.systemverilog" }); var systemVerilog = [ lang ]; export { systemVerilog as default };