[{"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-Z_a-z][$0-9A-Z_a-z]*)[\\t\\n\\r ]*(:)[\\t\\n\\r ]*(assert|assume|cover|restrict)\\b"},"attributes":{"begin":"(?<!@[\\t\\n\\r ]?)\\(\\*","beginCaptures":{"0":{"name":"punctuation.attribute.rounds.begin"}},"end":"\\*\\)","endCaptures":{"0":{"name":"punctuation.attribute.rounds.end"}},"name":"meta.attribute.systemverilog","patterns":[{"captures":{"1":{"name":"keyword.control.systemverilog"},"2":{"name":"keyword.operator.assignment.systemverilog"}},"match":"([A-Z_a-z][$0-9A-Z_a-z]*)(?:[\\t\\n\\r ]*(=)[\\t\\n\\r ]*)?"},{"include":"#constants"},{"include":"#strings"}]},"base-grammar":{"patterns":[{"include":"#all-types"},{"include":"#comments"},{"include":"#operators"},{"include":"#constants"},{"include":"#strings"},{"captures":{"1":{"name":"storage.type.interface.systemverilog"}},"match":"[\\t\\n\\r ]*\\b([A-Z_a-z][$0-9A-Z_a-z]*)[\\t\\n\\r ]+[A-Z_a-z][\\t\\n ,0-9=A-Z_a-z]*"},{"include":"#storage-scope"}]},"bind-directive":{"captures":{"1":{"name":"keyword.control.systemverilog"},"2":{"name":"entity.name.type.module.systemverilog"}},"match":"[\\t\\n\\r ]*\\b(bind)[\\t\\n\\r ]+([A-Z_a-z][$.0-9A-Z_a-z]*)\\b","name":"meta.definition.systemverilog"},"built-ins":{"patterns":[{"match":"[\\t\\n\\r ]*\\b(bit|logic|reg)\\b","name":"storage.type.vector.systemverilog"},{"match":"[\\t\\n\\r ]*\\b(byte|shortint|int|longint|integer|time|genvar)\\b","name":"storage.type.atom.systemverilog"},{"match":"[\\t\\n\\r ]*\\b(shortreal|real|realtime)\\b","name":"storage.type.notint.systemverilog"},{"match":"[\\t\\n\\r ]*\\b(supply[01]|tri|triand|trior|trireg|tri[01]|uwire|wire|wand|wor)\\b","name":"storage.type.net.systemverilog"},{"match":"[\\t\\n\\r ]*\\b(genvar|var|void|signed|unsigned|string|const|process)\\b","name":"storage.type.built-in.systemverilog"},{"match":"[\\t\\n\\r ]*\\b(uvm_(?:root|transaction|component|monitor|driver|test|env|object|agent|sequence_base|sequence_item|sequence_state|sequencer|sequencer_base|sequence|component_registry|analysis_imp|analysis_port|analysis_export|config_db|active_passive_enum|phase|verbosity|tlm_analysis_fifo|tlm_fifo|report_server|objection|recorder|domain|reg_field|reg_block|reg|bitstream_t|radix_enum|printer|packer|comparer|scope_stack))\\b","name":"storage.type.uvm.systemverilog"}]},"cast-operator":{"captures":{"1":{"patterns":[{"include":"#built-ins"},{"include":"#constants"},{"match":"[A-Z_a-z][$0-9A-Z_a-z]*","name":"storage.type.user-defined.systemverilog"}]},"2":{"name":"keyword.operator.cast.systemverilog"}},"match":"[\\t\\n\\r ]*([0-9]+|[A-Z_a-z][$0-9A-Z_a-z]*)(')(?=\\()","name":"meta.cast.systemverilog"},"class-declaration":{"begin":"[\\t\\n\\r ]*\\b(virtual[\\t\\n\\r ]+)?(class)(?:[\\t\\n\\r ]+((?:st|autom)atic))?[\\t\\n\\r ]+([A-Z_a-z][$0-:A-Z_a-z]*)(?:[\\t\\n\\r ]+(extends|implements)[\\t\\n\\r ]+([A-Z_a-z][$0-:A-Z_a-z]*))?","beginCaptures":{"1":{"name":"storage.modifier.systemverilog"},"2":{"name":"storage.type.class.systemverilog"},"3":{"name":"storage.modifier.systemverilog"},"4":{"name":"entity.name.type.class.systemverilog"},"5":{"name":"keyword.control.systemverilog"},"6":{"name":"entity.name.type.class.systemverilog"}},"end":";","endCaptures":{"0":{"name":"punctuation.definition.class.end.systemverilog"}},"name":"meta.class.systemverilog","patterns":[{"captures":{"1":{"name":"keyword.control.systemverilog"},"2":{"name":"entity.name.type.class.systemverilog"},"3":{"name":"entity.name.type.class.systemverilog"}},"match":"[\\t\\n\\r ]+\\b(extends|implements)[\\t\\n\\r ]+([A-Z_a-z][$0-:A-Z_a-z]*)(?:[\\t\\n\\r ]*,[\\t\\n\\r ]*([A-Z_a-z][$0-:A-Z_a-z]*))*"},{"captures":{"1":{"name":"storage.type.userdefined.systemverilog"},"2":{"name":"keyword.operator.param.systemverilog"}},"match":"[\\t\\n\\r ]+\\b([A-Z_a-z][$0-9A-Z_a-z]*)[\\t\\n\\r ]*(#)\\(","name":"meta.typedef.class.systemverilog"},{"include":"#port-net-parameter"},{"include":"#base-grammar"},{"include":"#module-binding"},{"include":"#identifiers"}]},"comments":{"patterns":[{"begin":"/\\*","beginCaptures":{"0":{"name":"punctuation.definition.comment.systemverilog"}},"end":"\\*/","endCaptures":{"0":{"name":"punctuation.definition.comment.systemverilog"}},"name":"comment.block.systemverilog","patterns":[{"include":"#fixme-todo"}]},{"begin":"//","beginCaptures":{"0":{"name":"punctuation.definition.comment.systemverilog"}},"end":"$\\n?","name":"comment.line.double-slash.systemverilog","patterns":[{"include":"#fixme-todo"}]}]},"compiler-directives":{"name":"meta.preprocessor.systemverilog","patterns":[{"captures":{"1":{"name":"punctuation.definition.directive.systemverilog"},"2":{"name":"string.regexp.systemverilog"}},"match":"(`)(else|endif|endcelldefine|celldefine|nounconnected_drive|resetall|undefineall|end_keywords|__FILE__|__LINE__)\\b"},{"captures":{"1":{"name":"punctuation.definition.directive.systemverilog"},"2":{"name":"string.regexp.systemverilog"},"3":{"name":"variable.other.constant.preprocessor.systemverilog"}},"match":"(`)(ifdef|ifndef|elsif|define|undef|pragma)[\\t\\n\\r ]+([A-Z_a-z][$0-9A-Z_a-z]*)\\b"},{"captures":{"1":{"name":"punctuation.definition.directive.systemverilog"},"2":{"name":"string.regexp.systemverilog"}},"match":"(`)(include|timescale|default_nettype|unconnected_drive|line|begin_keywords)\\b"},{"begin":"(`)(protected)\\b","beginCaptures":{"1":{"name":"punctuation.definition.directive.systemverilog"},"2":{"name":"string.regexp.systemverilog"}},"end":"(`)(endprotected)\\b","endCaptures":{"1":{"name":"punctuation.definition.directive.systemverilog"},"2":{"name":"string.regexp.systemverilog"}},"name":"meta.crypto.systemverilog"},{"captures":{"1":{"name":"punctuation.definition.directive.systemverilog"},"2":{"name":"variable.other.constant.preprocessor.systemverilog"}},"match":"(`)([A-Z_a-z][$0-9A-Z_a-z]*)\\b"}]},"constants":{"patterns":[{"match":"(\\b[1-9][0-9_]*)?'([Ss]?[Bb][\\t\\n\\r ]*[01?XZxz][01?XZ_xz]*|[Ss]?[Oo][\\t\\n\\r ]*[0-7?XZxz][0-7?XZ_xz]*|[Ss]?[Dd][\\t\\n\\r ]*[0-9?XZxz][0-9?XZ_xz]*|[Ss]?[Hh][\\t\\n\\r ]*[?XZxz\\h][?XZ_xz\\h]*)(([Ee])([-+])?[0-9]+)?(?!['\\w])","name":"constant.numeric.systemverilog"},{"match":"'[01XZxz]","name":"constant.numeric.bit.systemverilog"},{"match":"\\b\\d[._\\d]*(?<!\\.)[Ee][-+]?[0-9]+\\b","name":"constant.numeric.exp.systemverilog"},{"match":"\\b\\d[._\\d]*(?![.\\d]|[\\t\\n\\r ]*(?:[Ee]|fs|ps|ns|us|ms|s))\\b","name":"constant.numeric.decimal.systemverilog"},{"match":"\\b\\d[.\\d]*[\\t\\n\\r ]*(?:[fnpu]|m?)s\\b","name":"constant.numeric.time.systemverilog"},{"include":"#compiler-directives"},{"match":"\\b(?:this|super|null)\\b","name":"constant.language.systemverilog"},{"match":"\\b([A-Z][0-9A-Z_]*)\\b","name":"constant.other.net.systemverilog"},{"match":"\\b(?<!\\.)([0-9A-Z_]+)(?!\\.)\\b","name":"constant.numeric.parameter.uppercase.systemverilog"},{"match":"\\.\\*","name":"keyword.operator.quantifier.regexp"}]},"enum-struct-union":{"begin":"[\\t\\n\\r ]*\\b(enum|struct|union(?:[\\t\\n\\r ]+tagged)?|class|interface[\\t\\n\\r ]+class)(?:[\\t\\n\\r ]+(?!(?:pack|sign|unsign)ed)([A-Z_a-z][$0-9A-Z_a-z]*)?[\\t\\n\\r ]*(\\[[]\\t\\n\\r $%'-+\\--:A-\\[_-z]*])?)?(?:[\\t\\n\\r ]+(packed))?(?:[\\t\\n\\r ]+((?:|un)signed))?(?=[\\t\\n\\r ]*(?:\\{|$))","beginCaptures":{"1":{"name":"keyword.control.systemverilog"},"2":{"patterns":[{"include":"#built-ins"}]},"3":{"patterns":[{"include":"#selects"}]},"4":{"name":"storage.modifier.systemverilog"},"5":{"name":"storage.modifier.systemverilog"}},"end":"(?<=})[\\t\\n\\r ]*([A-Z_a-z][$0-9A-Z_a-z]*|(?<=^|[\\t\\n\\r ])\\\\[!-~]+(?=$|[\\t\\n\\r ]))[\\t\\n\\r ]*(\\[[]\\t\\n\\r $%'-+\\--:A-\\[_-z]*])?[\\t\\n\\r ]*[,;]","endCaptures":{"1":{"patterns":[{"include":"#identifiers"}]},"2":{"patterns":[{"include":"#selects"}]}},"name":"meta.enum-struct-union.systemverilog","patterns":[{"include":"#keywords"},{"include":"#base-grammar"},{"include":"#identifiers"}]},"fixme-todo":{"patterns":[{"match":"(?i:fixme)","name":"invalid.broken.fixme.systemverilog"},{"match":"(?i:todo)","name":"invalid.unimplemented.todo.systemverilog"}]},"function-task":{"begin":"[\\t\\n\\r ]*(?:\\b(virtual)[\\t\\n\\r ]+)?\\b(function|task)\\b(?:[\\t\\n\\r ]+\\b((?:st|autom)atic)\\b)?","beginCaptures":{"1":{"name":"storage.modifier.systemverilog"},"2":{"name":"storage.type.function.systemverilog"},"3":{"name":"storage.modifier.systemverilog"}},"end":";","endCaptures":{"0":{"name":"punctuation.definition.function.end.systemverilog"}},"name":"meta.function.systemverilog","patterns":[{"captures":{"1":{"name":"support.type.scope.systemverilog"},"2":{"name":"keyword.operator.scope.systemverilog"},"3":{"patterns":[{"include":"#built-ins"},{"match":"[A-Z_a-z][$0-9A-Z_a-z]*","name":"storage.type.user-defined.systemverilog"}]},"4":{"patterns":[{"include":"#modifiers"}]},"5":{"patterns":[{"include":"#selects"}]},"6":{"name":"entity.name.function.systemverilog"}},"match":"[\\t\\n\\r ]*(?:\\b([A-Z_a-z][$0-9A-Z_a-z]*)(::))?([A-Z_a-z][$0-9A-Z_a-z]*\\b[\\t\\n\\r ]+)?(?:\\b((?:|un)signed)\\b[\\t\\n\\r ]*)?(?:(\\[[]\\t\\n\\r $%'-+\\--:A-\\[_-z]*])[\\t\\n\\r ]*)?\\b([A-Z_a-z][$0-9A-Z_a-z]*)\\b[\\t\\n\\r ]*(?=[(;])"},{"include":"#keywords"},{"include":"#port-net-parameter"},{"include":"#base-grammar"},{"include":"#identifiers"}]},"functions":{"match":"[\\t\\n\\r ]*\\b(?!while|for|iff??|else|casex??|casez)([A-Z_a-z][$0-9A-Z_a-z]*)(?=[\\t\\n\\r ]*\\()","name":"entity.name.function.systemverilog"},"identifiers":{"patterns":[{"match":"\\b[A-Z_a-z][$0-9A-Z_a-z]*\\b","name":"variable.other.identifier.systemverilog"},{"match":"(?<=^|[\\t\\n\\r ])\\\\[!-~]+(?=$|[\\t\\n\\r ])","name":"string.regexp.identifier.systemverilog"}]},"imports":{"captures":{"1":{"name":"keyword.control.systemverilog"},"2":{"name":"support.type.scope.systemverilog"},"3":{"name":"keyword.operator.scope.systemverilog"},"4":{"patterns":[{"include":"#operators"},{"include":"#identifiers"}]}},"match":"[\\t\\n\\r ]*\\b((?:im|ex)port)[\\t\\n\\r ]+([A-Z_a-z][$0-9A-Z_a-z]*|\\*)[\\t\\n\\r ]*(::)[\\t\\n\\r ]*([A-Z_a-z][$0-9A-Z_a-z]*|\\*)[\\t\\n\\r ]*([,;])","name":"meta.import.systemverilog"},"keywords":{"patterns":[{"captures":{"1":{"name":"keyword.other.systemverilog"}},"match":"[\\t\\n\\r ]*\\b(edge|negedge|posedge|cell|config|defparam|design|disable|endgenerate|endspecify|event|generate|ifnone|incdir|instance|liblist|library|noshowcancelled|pulsestyle_onevent|pulsestyle_ondetect|scalared|showcancelled|specify|specparam|use|vectored)\\b"},{"include":"#sv-control"},{"include":"#sv-control-begin"},{"include":"#sv-control-end"},{"include":"#sv-definition"},{"include":"#sv-cover-cross"},{"include":"#sv-std"},{"include":"#sv-option"},{"include":"#sv-local"},{"include":"#sv-rand"}]},"modifiers":{"match":"[\\t\\n\\r ]*\\b(?:(?:un)?signed|packed|small|medium|large|supply[01]|strong[01]|pull[01]|weak[01]|highz[01])\\b","name":"storage.modifier.systemverilog"},"module-binding":{"begin":"\\.([A-Z_a-z][$0-9A-Z_a-z]*)[\\t\\n\\r ]*\\(","beginCaptures":{"1":{"name":"support.function.port.systemverilog"}},"end":"\\),?","name":"meta.port.binding.systemverilog","patterns":[{"include":"#constants"},{"include":"#comments"},{"include":"#operators"},{"include":"#strings"},{"include":"#constants"},{"include":"#storage-scope"},{"include":"#cast-operator"},{"include":"#system-tf"},{"match":"\\bvirtual\\b","name":"storage.modifier.systemverilog"},{"include":"#identifiers"}]},"module-declaration":{"begin":"[\\t\\n\\r ]*\\b((?:macro)?module|interface|program|package|modport)[\\t\\n\\r ]+(?:((?:st|autom)atic)[\\t\\n\\r ]+)?([A-Z_a-z][$0-9A-Z_a-z]*)\\b","beginCaptures":{"1":{"name":"keyword.control.systemverilog"},"2":{"name":"storage.modifier.systemverilog"},"3":{"name":"entity.name.type.module.systemverilog"}},"end":";","endCaptures":{"0":{"name":"punctuation.definition.module.end.systemverilog"}},"name":"meta.module.systemverilog","patterns":[{"include":"#parameters"},{"include":"#port-net-parameter"},{"include":"#imports"},{"include":"#base-grammar"},{"include":"#system-tf"},{"include":"#identifiers"}]},"module-no-parameters":{"begin":"[\\t\\n\\r ]*\\b(?:(bind|pullup|pulldown)[\\t\\n\\r ]+(?:([A-Z_a-z][$.0-9A-Z_a-z]*)[\\t\\n\\r ]+)?)?(\\b(?:and|nand|or|nor|xor|xnor|buf|not|bufif[01]|notif[01]|r?[cnp]mos|r?tran|r?tranif[01])\\b|[A-Z_a-z][$0-9A-Z_a-z]*)[\\t\\n\\r ]+(?!intersect|and|or|throughout|within)([A-Z_a-z][$0-9A-Z_a-z]*)[\\t\\n\\r ]*(\\[[]\\t\\n\\r $%'-+\\--:A-\\[_-z]*])?[\\t\\n\\r ]*(?=\\(|$)(?!;)","beginCaptures":{"1":{"name":"keyword.control.systemverilog"},"2":{"name":"entity.name.type.module.systemverilog"},"3":{"name":"entity.name.type.module.systemverilog"},"4":{"name":"variable.other.module.systemverilog"},"5":{"patterns":[{"include":"#selects"}]}},"end":"\\)(?:[\\t\\n\\r ]*(;))?","endCaptures":{"1":{"name":"punctuation.module.instantiation.end.systemverilog"}},"name":"meta.module.no_parameters.systemverilog","patterns":[{"include":"#module-binding"},{"include":"#comments"},{"include":"#operators"},{"include":"#constants"},{"include":"#strings"},{"include":"#port-net-parameter"},{"match":"\\b([A-Z_a-z][$0-9A-Z_a-z]*)\\b(?=[\\t\\n\\r ]*(\\(|$))","name":"variable.other.module.systemverilog"},{"include":"#identifiers"}]},"module-parameters":{"begin":"[\\t\\n\\r ]*\\b(?:(bind)[\\t\\n\\r ]+([A-Z_a-z][$.0-9A-Z_a-z]*)[\\t\\n\\r ]+)?([A-Z_a-z][$0-9A-Z_a-z]*)[\\t\\n\\r ]+(?!intersect|and|or|throughout|within)(?=#[^#])","beginCaptures":{"1":{"name":"keyword.control.systemverilog"},"2":{"name":"entity.name.type.module.systemverilog"},"3":{"name":"entity.name.type.module.systemverilog"}},"end":"\\)(?:[\\t\\n\\r ]*(;))?","endCaptures":{"1":{"name":"punctuation.module.instantiation.end.systemverilog"}},"name":"meta.module.parameters.systemverilog","patterns":[{"match":"\\b([A-Z_a-z][$0-9A-Z_a-z]*)\\b(?=[\\t\\n\\r ]*\\()","name":"variable.other.module.systemverilog"},{"include":"#module-binding"},{"include":"#parameters"},{"include":"#comments"},{"include":"#operators"},{"include":"#constants"},{"include":"#strings"},{"include":"#port-net-parameter"},{"match":"\\b([A-Z_a-z][$0-9A-Z_a-z]*)\\b(?=[\\t\\n\\r ]*$)","name":"variable.other.module.systemverilog"},{"include":"#identifiers"}]},"operators":{"patterns":[{"match":"\\b(?:dist|inside|with|intersect|and|or|throughout|within|first_match)\\b|:=|:/|\\|->|\\|=>|->>|\\*>|#-#|#=#|&&&","name":"keyword.operator.logical.systemverilog"},{"match":"@|##?|->|<->","name":"keyword.operator.channel.systemverilog"},{"match":"(?:[-%\\&*+/^|]|>>>?|<<<?|<?)=","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"}]},"parameters":{"begin":"[\\t\\n\\r ]*(#)[\\t\\n\\r ]*(\\()","beginCaptures":{"1":{"name":"keyword.operator.channel.systemverilog"},"2":{"name":"punctuation.section.parameters.begin"}},"end":"(\\))[\\t\\n\\r ]*(?=[(;A-Z\\\\_a-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-Z_a-z][$0-9A-Z_a-z]*","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\\n\\r ]*(?:\\b(output|input|inout|ref)\\b[\\t\\n\\r ]*)?(?:\\b(localparam|parameter|var|supply[01]|tri|triand|trior|trireg|tri[01]|uwire|wire|wand|wor)\\b[\\t\\n\\r ]*)?(?:\\b([A-Z_a-z][$0-9A-Z_a-z]*)(::))?(?:([A-Z_a-z][$0-9A-Z_a-z]*)\\b[\\t\\n\\r ]*)?(?:\\b((?:|un)signed)\\b[\\t\\n\\r ]*)?(?:(\\[[]\\t\\n\\r $%'-+\\--:A-\\[_-z]*])[\\t\\n\\r ]*)?(?<!(?<!#)[-!%\\&(*+/:<-?^|~][\\t\\n\\r ]*)\\b([A-Z_a-z][$0-9A-Z_a-z]*)\\b[\\t\\n\\r ]*(\\[[]\\t\\n\\r $%'-+\\--:A-\\[_-z]*])?[\\t\\n\\r ]*(?=[),/;=]|$)","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-Z_a-z][$0-9A-Z_a-z]*","name":"variable.other.identifier.systemverilog"}]},"sequence":{"captures":{"1":{"name":"keyword.control.systemverilog"},"2":{"name":"entity.name.function.systemverilog"}},"match":"[\\t\\n\\r ]*\\b(sequence)[\\t\\n\\r ]+([A-Z_a-z][$0-9A-Z_a-z]*)\\b","name":"meta.sequence.systemverilog"},"storage-scope":{"captures":{"1":{"name":"support.type.scope.systemverilog"},"2":{"name":"keyword.operator.scope.systemverilog"}},"match":"\\b([A-Z_a-z][$0-9A-Z_a-z]*)(::)","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":"\\\\(?:[\"\\\\afntv]|[0-7]{3}|x\\h{2})","name":"constant.character.escape.systemverilog"},{"match":"%(\\d+\\$)?[- #'+0]*[,:;_]?((-?\\d+)|\\*(-?\\d+\\$)?)?(\\.((-?\\d+)|\\*(-?\\d+\\$)?)?)?(hh?|ll|[Ljltz])?[%B-HLMOPS-VXZb-hlmops-vxz]","name":"constant.character.format.placeholder.systemverilog"},{"match":"%","name":"invalid.illegal.placeholder.systemverilog"},{"include":"#fixme-todo"}]},{"begin":"(?<=include)[\\t\\n\\r ]*(<)","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\\n\\r ]*\\b(initial|always|always_comb|always_ff|always_latch|final|assign|deassign|force|release|wait|forever|repeat|alias|while|for|iff??|else|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|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\\n\\r ]*\\b(begin|fork)\\b(?:[\\t\\n\\r ]*(:)[\\t\\n\\r ]*([A-Z_a-z][$0-9A-Z_a-z]*))?","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\\n\\r ]*\\b(end|endmodule|endinterface|endprogram|endchecker|endclass|endpackage|endconfig|endfunction|endtask|endproperty|endsequence|endgroup|endprimitive|endclocking|endgenerate|join|join_any|join_none)\\b(?:[\\t\\n\\r ]*(:)[\\t\\n\\r ]*([A-Z_a-z][$0-9A-Z_a-z]*))?","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-Z_a-z][$0-9A-Z_a-z]*)[\\t\\n\\r ]*(:))?[\\t\\n\\r ]*(c(?:overpoint|ross))[\\t\\n\\r ]+([A-Z_a-z][$0-9A-Z_a-z]*)","name":"meta.definition.systemverilog"},"sv-definition":{"captures":{"1":{"name":"keyword.control.systemverilog"},"2":{"name":"entity.name.type.class.systemverilog"}},"match":"[\\t\\n\\r ]*\\b(primitive|package|constraint|interface|covergroup|program)[\\t\\n\\r ]+\\b([A-Z_a-z][$0-9A-Z_a-z]*)\\b","name":"meta.definition.systemverilog"},"sv-local":{"captures":{"1":{"name":"keyword.other.systemverilog"}},"match":"[\\t\\n\\r ]*\\b(const|static|protected|virtual|localparam|parameter|local)\\b"},"sv-option":{"captures":{"1":{"name":"keyword.cover.systemverilog"}},"match":"[\\t\\n\\r ]*\\b(option)\\."},"sv-rand":{"match":"[\\t\\n\\r ]*\\brandc??\\b","name":"storage.type.rand.systemverilog"},"sv-std":{"match":"\\b(std)\\b::","name":"support.class.systemverilog"},"system-tf":{"match":"\\$[$0-9A-Z_a-z][$0-9A-Z_a-z]*\\b","name":"support.function.systemverilog"},"tables":{"begin":"[\\t\\n\\r ]*\\b(table)\\b","beginCaptures":{"1":{"name":"keyword.table.systemverilog.begin"}},"end":"[\\t\\n\\r ]*\\b(endtable)\\b","endCaptures":{"1":{"name":"keyword.table.systemverilog.end"}},"name":"meta.table.systemverilog","patterns":[{"include":"#comments"},{"match":"\\b[01BFNPRXbfnprx]\\b","name":"constant.language.systemverilog"},{"match":"[-*?]","name":"constant.language.systemverilog"},{"captures":{"1":{"name":"constant.language.systemverilog"}},"match":"\\(([01?Xx]{2})\\)"},{"match":":","name":"punctuation.definition.label.systemverilog"},{"include":"#operators"},{"include":"#constants"},{"include":"#strings"},{"include":"#identifiers"}]},"typedef":{"begin":"[\\t\\n\\r ]*\\b(typedef)[\\t\\n\\r ]+(?:([A-Z_a-z][$0-9A-Z_a-z]*)(?:[\\t\\n\\r ]+\\b((?:|un)signed)\\b)?[\\t\\n\\r ]*(\\[[]\\t\\n\\r $%'-+\\--:A-\\[_-z]*])?)?(?=[\\t\\n\\r ]*[A-Z\\\\_a-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\\n\\r ]*\\b(typedef)[\\t\\n\\r ]+(enum|struct|union(?:[\\t\\n\\r ]+tagged)?|class|interface[\\t\\n\\r ]+class)(?:[\\t\\n\\r ]+(?!(?:pack|sign|unsign)ed)([A-Z_a-z][$0-9A-Z_a-z]*)?[\\t\\n\\r ]*(\\[[]\\t\\n\\r $%'-+\\--:A-\\[_-z]*])?)?(?:[\\t\\n\\r ]+(packed))?(?:[\\t\\n\\r ]+((?:|un)signed))?(?=[\\t\\n\\r ]*(?:\\{|$))","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\\n\\r ]*([A-Z_a-z][$0-9A-Z_a-z]*|(?<=^|[\\t\\n\\r ])\\\\[!-~]+(?=$|[\\t\\n\\r ]))[\\t\\n\\r ]*(\\[[]\\t\\n\\r $%'-+\\--:A-\\[_-z]*])?[\\t\\n\\r ]*[,;]","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"}]