| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 | module.exports = function(hljs) {  // 2.3. Identifiers and keywords  var KEYWORDS =    'assembly module package import alias class interface object given value ' +    'assign void function new of extends satisfies abstracts in out return ' +    'break continue throw assert dynamic if else switch case for while try ' +    'catch finally then let this outer super is exists nonempty';  // 7.4.1 Declaration Modifiers  var DECLARATION_MODIFIERS =    'shared abstract formal default actual variable late native deprecated' +    'final sealed annotation suppressWarnings small';  // 7.4.2 Documentation  var DOCUMENTATION =    'doc by license see throws tagged';  var SUBST = {    className: 'subst', excludeBegin: true, excludeEnd: true,    begin: /``/, end: /``/,    keywords: KEYWORDS,    relevance: 10  };  var EXPRESSIONS = [    {      // verbatim string      className: 'string',      begin: '"""',      end: '"""',      relevance: 10    },    {      // string literal or template      className: 'string',      begin: '"', end: '"',      contains: [SUBST]    },    {      // character literal      className: 'string',      begin: "'",      end: "'"    },    {      // numeric literal      className: 'number',      begin: '#[0-9a-fA-F_]+|\\$[01_]+|[0-9_]+(?:\\.[0-9_](?:[eE][+-]?\\d+)?)?[kMGTPmunpf]?',      relevance: 0    }  ];  SUBST.contains = EXPRESSIONS;  return {    keywords: {      keyword: KEYWORDS + ' ' + DECLARATION_MODIFIERS,      meta: DOCUMENTATION    },    illegal: '\\$[^01]|#[^0-9a-fA-F]',    contains: [      hljs.C_LINE_COMMENT_MODE,      hljs.COMMENT('/\\*', '\\*/', {contains: ['self']}),      {        // compiler annotation        className: 'meta',        begin: '@[a-z]\\w*(?:\\:\"[^\"]*\")?'      }    ].concat(EXPRESSIONS)  };};
 |