| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567 |
- /*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
- define('vs/basic-languages/systemverilog/systemverilog',["require", "exports"], function (require, exports) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.language = exports.conf = void 0;
- exports.conf = {
- comments: {
- lineComment: '//',
- blockComment: ['/*', '*/']
- },
- brackets: [
- ['{', '}'],
- ['[', ']'],
- ['(', ')'],
- ['begin', 'end'],
- ['case', 'endcase'],
- ['casex', 'endcase'],
- ['casez', 'endcase'],
- ['checker', 'endchecker'],
- ['class', 'endclass'],
- ['clocking', 'endclocking'],
- ['config', 'endconfig'],
- ['function', 'endfunction'],
- ['generate', 'endgenerate'],
- ['group', 'endgroup'],
- ['interface', 'endinterface'],
- ['module', 'endmodule'],
- ['package', 'endpackage'],
- ['primitive', 'endprimitive'],
- ['program', 'endprogram'],
- ['property', 'endproperty'],
- ['specify', 'endspecify'],
- ['sequence', 'endsequence'],
- ['table', 'endtable'],
- ['task', 'endtask']
- ],
- autoClosingPairs: [
- { open: '[', close: ']' },
- { open: '{', close: '}' },
- { open: '(', close: ')' },
- { open: "'", close: "'", notIn: ['string', 'comment'] },
- { open: '"', close: '"', notIn: ['string'] }
- ],
- surroundingPairs: [
- { open: '{', close: '}' },
- { open: '[', close: ']' },
- { open: '(', close: ')' },
- { open: '"', close: '"' },
- { open: "'", close: "'" }
- ],
- folding: {
- offSide: false,
- markers: {
- start: new RegExp('^(?:\\s*|.*(?!\\/[\\/\\*])[^\\w])(?:begin|case(x|z)?|class|clocking|config|covergroup|function|generate|interface|module|package|primitive|property|program|sequence|specify|table|task)\\b'),
- end: new RegExp('^(?:\\s*|.*(?!\\/[\\/\\*])[^\\w])(?:end|endcase|endclass|endclocking|endconfig|endgroup|endfunction|endgenerate|endinterface|endmodule|endpackage|endprimitive|endproperty|endprogram|endsequence|endspecify|endtable|endtask)\\b')
- }
- }
- };
- exports.language = {
- defaultToken: '',
- tokenPostfix: '.sv',
- brackets: [
- { token: 'delimiter.curly', open: '{', close: '}' },
- { token: 'delimiter.parenthesis', open: '(', close: ')' },
- { token: 'delimiter.square', open: '[', close: ']' },
- { token: 'delimiter.angle', open: '<', close: '>' }
- ],
- keywords: [
- 'accept_on',
- 'alias',
- 'always',
- 'always_comb',
- 'always_ff',
- 'always_latch',
- 'and',
- 'assert',
- 'assign',
- 'assume',
- 'automatic',
- 'before',
- 'begin',
- 'bind',
- 'bins',
- 'binsof',
- 'bit',
- 'break',
- 'buf',
- 'bufif0',
- 'bufif1',
- 'byte',
- 'case',
- 'casex',
- 'casez',
- 'cell',
- 'chandle',
- 'checker',
- 'class',
- 'clocking',
- 'cmos',
- 'config',
- 'const',
- 'constraint',
- 'context',
- 'continue',
- 'cover',
- 'covergroup',
- 'coverpoint',
- 'cross',
- 'deassign',
- 'default',
- 'defparam',
- 'design',
- 'disable',
- 'dist',
- 'do',
- 'edge',
- 'else',
- 'end',
- 'endcase',
- 'endchecker',
- 'endclass',
- 'endclocking',
- 'endconfig',
- 'endfunction',
- 'endgenerate',
- 'endgroup',
- 'endinterface',
- 'endmodule',
- 'endpackage',
- 'endprimitive',
- 'endprogram',
- 'endproperty',
- 'endspecify',
- 'endsequence',
- 'endtable',
- 'endtask',
- 'enum',
- 'event',
- 'eventually',
- 'expect',
- 'export',
- 'extends',
- 'extern',
- 'final',
- 'first_match',
- 'for',
- 'force',
- 'foreach',
- 'forever',
- 'fork',
- 'forkjoin',
- 'function',
- 'generate',
- 'genvar',
- 'global',
- 'highz0',
- 'highz1',
- 'if',
- 'iff',
- 'ifnone',
- 'ignore_bins',
- 'illegal_bins',
- 'implements',
- 'implies',
- 'import',
- 'incdir',
- 'include',
- 'initial',
- 'inout',
- 'input',
- 'inside',
- 'instance',
- 'int',
- 'integer',
- 'interconnect',
- 'interface',
- 'intersect',
- 'join',
- 'join_any',
- 'join_none',
- 'large',
- 'let',
- 'liblist',
- 'library',
- 'local',
- 'localparam',
- 'logic',
- 'longint',
- 'macromodule',
- 'matches',
- 'medium',
- 'modport',
- 'module',
- 'nand',
- 'negedge',
- 'nettype',
- 'new',
- 'nexttime',
- 'nmos',
- 'nor',
- 'noshowcancelled',
- 'not',
- 'notif0',
- 'notif1',
- 'null',
- 'or',
- 'output',
- 'package',
- 'packed',
- 'parameter',
- 'pmos',
- 'posedge',
- 'primitive',
- 'priority',
- 'program',
- 'property',
- 'protected',
- 'pull0',
- 'pull1',
- 'pulldown',
- 'pullup',
- 'pulsestyle_ondetect',
- 'pulsestyle_onevent',
- 'pure',
- 'rand',
- 'randc',
- 'randcase',
- 'randsequence',
- 'rcmos',
- 'real',
- 'realtime',
- 'ref',
- 'reg',
- 'reject_on',
- 'release',
- 'repeat',
- 'restrict',
- 'return',
- 'rnmos',
- 'rpmos',
- 'rtran',
- 'rtranif0',
- 'rtranif1',
- 's_always',
- 's_eventually',
- 's_nexttime',
- 's_until',
- 's_until_with',
- 'scalared',
- 'sequence',
- 'shortint',
- 'shortreal',
- 'showcancelled',
- 'signed',
- 'small',
- 'soft',
- 'solve',
- 'specify',
- 'specparam',
- 'static',
- 'string',
- 'strong',
- 'strong0',
- 'strong1',
- 'struct',
- 'super',
- 'supply0',
- 'supply1',
- 'sync_accept_on',
- 'sync_reject_on',
- 'table',
- 'tagged',
- 'task',
- 'this',
- 'throughout',
- 'time',
- 'timeprecision',
- 'timeunit',
- 'tran',
- 'tranif0',
- 'tranif1',
- 'tri',
- 'tri0',
- 'tri1',
- 'triand',
- 'trior',
- 'trireg',
- 'type',
- 'typedef',
- 'union',
- 'unique',
- 'unique0',
- 'unsigned',
- 'until',
- 'until_with',
- 'untyped',
- 'use',
- 'uwire',
- 'var',
- 'vectored',
- 'virtual',
- 'void',
- 'wait',
- 'wait_order',
- 'wand',
- 'weak',
- 'weak0',
- 'weak1',
- 'while',
- 'wildcard',
- 'wire',
- 'with',
- 'within',
- 'wor',
- 'xnor',
- 'xor'
- ],
- builtin_gates: [
- 'and',
- 'nand',
- 'nor',
- 'or',
- 'xor',
- 'xnor',
- 'buf',
- 'not',
- 'bufif0',
- 'bufif1',
- 'notif1',
- 'notif0',
- 'cmos',
- 'nmos',
- 'pmos',
- 'rcmos',
- 'rnmos',
- 'rpmos',
- 'tran',
- 'tranif1',
- 'tranif0',
- 'rtran',
- 'rtranif1',
- 'rtranif0'
- ],
- operators: [
- // assignment operators
- '=',
- '+=',
- '-=',
- '*=',
- '/=',
- '%=',
- '&=',
- '|=',
- '^=',
- '<<=',
- '>>+',
- '<<<=',
- '>>>=',
- // conditional expression
- '?',
- ':',
- // Unary operators
- '+',
- '-',
- '!',
- '~',
- '&',
- '~&',
- '|',
- '~|',
- '^',
- '~^',
- '^~',
- //binary operators
- '+',
- '-',
- '*',
- '/',
- '%',
- '==',
- '!=',
- '===',
- '!==',
- '==?',
- '!=?',
- '&&',
- '||',
- '**',
- '<',
- '<=',
- '>',
- '>=',
- '&',
- '|',
- '^',
- '>>',
- '<<',
- '>>>',
- '<<<',
- // increment or decrement operator
- '++',
- '--',
- //binary logical operator
- '->',
- '<->',
- // binary set membership operator
- 'inside',
- // binary distrubution operator
- 'dist',
- '::',
- '+:',
- '-:',
- '*>',
- '&&&',
- '|->',
- '|=>',
- '#=#'
- ],
- // we include these common regular expressions
- symbols: /[=><!~?:&|+\-*\/\^%#]+/,
- escapes: /%%|\\(?:[antvf\\"']|x[0-9A-Fa-f]{1,2}|[0-7]{1,3})/,
- identifier: /(?:[a-zA-Z_][a-zA-Z0-9_$\.]*|\\\S+ )/,
- systemcall: /[$][a-zA-Z0-9_]+/,
- timeunits: /s|ms|us|ns|ps|fs/,
- // The main tokenizer for our languages
- tokenizer: {
- root: [
- // module instances
- [
- /^(\s*)(@identifier)/,
- [
- '',
- {
- cases: {
- '@builtin_gates': {
- token: 'keyword.$2',
- next: '@module_instance'
- },
- '@keywords': { token: 'keyword.$2' },
- '@default': {
- token: 'identifier',
- next: '@module_instance'
- }
- }
- }
- ]
- ],
- // include statements
- [/^\s*`include/, { token: 'keyword.directive.include', next: '@include' }],
- // Preprocessor directives
- [/^\s*`\s*\w+/, 'keyword'],
- // identifiers and keywords
- { include: '@identifier_or_keyword' },
- // whitespace
- { include: '@whitespace' },
- // (* attributes *).
- [/\(\*.*\*\)/, 'annotation'],
- // Systemcall
- [/@systemcall/, 'variable.predefined'],
- // delimiters and operators
- [/[{}()\[\]]/, '@brackets'],
- [/[<>](?!@symbols)/, '@brackets'],
- [
- /@symbols/,
- {
- cases: {
- '@operators': 'delimiter',
- '@default': ''
- }
- }
- ],
- // numbers
- { include: '@numbers' },
- // delimiter: after number because of .\d floats
- [/[;,.]/, 'delimiter'],
- // strings
- { include: '@strings' }
- ],
- identifier_or_keyword: [
- [
- /@identifier/,
- {
- cases: {
- '@keywords': { token: 'keyword.$0' },
- '@default': 'identifier'
- }
- }
- ]
- ],
- numbers: [
- [/\d+?[\d_]*(?:\.[\d_]+)?[eE][\-+]?\d+/, 'number.float'],
- [/\d+?[\d_]*\.[\d_]+(?:\s*@timeunits)?/, 'number.float'],
- [/(?:\d+?[\d_]*\s*)?'[sS]?[dD]\s*[0-9xXzZ?]+?[0-9xXzZ?_]*/, 'number'],
- [/(?:\d+?[\d_]*\s*)?'[sS]?[bB]\s*[0-1xXzZ?]+?[0-1xXzZ?_]*/, 'number.binary'],
- [/(?:\d+?[\d_]*\s*)?'[sS]?[oO]\s*[0-7xXzZ?]+?[0-7xXzZ?_]*/, 'number.octal'],
- [/(?:\d+?[\d_]*\s*)?'[sS]?[hH]\s*[0-9a-fA-FxXzZ?]+?[0-9a-fA-FxXzZ?_]*/, 'number.hex'],
- [/1step/, 'number'],
- [/[\dxXzZ]+?[\dxXzZ_]*(?:\s*@timeunits)?/, 'number'],
- [/'[01xXzZ]+/, 'number']
- ],
- module_instance: [
- { include: '@whitespace' },
- [/(#?)(\()/, ['', { token: '@brackets', next: '@port_connection' }]],
- [/@identifier\s*[;={}\[\],]/, { token: '@rematch', next: '@pop' }],
- [/@symbols|[;={}\[\],]/, { token: '@rematch', next: '@pop' }],
- [/@identifier/, 'type'],
- [/;/, 'delimiter', '@pop']
- ],
- port_connection: [
- { include: '@identifier_or_keyword' },
- { include: '@whitespace' },
- [/@systemcall/, 'variable.predefined'],
- { include: '@numbers' },
- { include: '@strings' },
- [/[,]/, 'delimiter'],
- [/\(/, '@brackets', '@port_connection'],
- [/\)/, '@brackets', '@pop']
- ],
- whitespace: [
- [/[ \t\r\n]+/, ''],
- [/\/\*/, 'comment', '@comment'],
- [/\/\/.*$/, 'comment']
- ],
- comment: [
- [/[^\/*]+/, 'comment'],
- [/\*\//, 'comment', '@pop'],
- [/[\/*]/, 'comment']
- ],
- strings: [
- [/"([^"\\]|\\.)*$/, 'string.invalid'],
- [/"/, 'string', '@string']
- ],
- string: [
- [/[^\\"]+/, 'string'],
- [/@escapes/, 'string.escape'],
- [/\\./, 'string.escape.invalid'],
- [/"/, 'string', '@pop']
- ],
- include: [
- [
- /(\s*)(")([\w*\/*]*)(.\w*)(")/,
- [
- '',
- 'string.include.identifier',
- 'string.include.identifier',
- 'string.include.identifier',
- { token: 'string.include.identifier', next: '@pop' }
- ]
- ],
- [
- /(\s*)(<)([\w*\/*]*)(.\w*)(>)/,
- [
- '',
- 'string.include.identifier',
- 'string.include.identifier',
- 'string.include.identifier',
- { token: 'string.include.identifier', next: '@pop' }
- ]
- ]
- ]
- }
- };
- });
|