run monaco from assets

pull/1813/head
bunsenstraat 3 years ago
parent 4eaf894c40
commit 3804214db7
  1. 7117
      apps/remix-ide/src/assets/monaco-editor/dev/bundleInfo.json
  2. 3443
      apps/remix-ide/src/assets/monaco-editor/dev/nls.metadata.json
  3. BIN
      apps/remix-ide/src/assets/monaco-editor/dev/vs/base/browser/ui/codicons/codicon/codicon.ttf
  4. 11898
      apps/remix-ide/src/assets/monaco-editor/dev/vs/base/worker/workerMain.js
  5. 1
      apps/remix-ide/src/assets/monaco-editor/dev/vs/base/worker/workerMain.js.map
  6. 1359
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/abap/abap.js
  7. 339
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/apex/apex.js
  8. 75
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/azcli/azcli.js
  9. 107
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/bat/bat.js
  10. 114
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/bicep/bicep.js
  11. 180
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/cameligo/cameligo.js
  12. 767
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/clojure/clojure.js
  13. 239
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/coffee/coffee.js
  14. 405
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/cpp/cpp.js
  15. 331
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/csharp/csharp.js
  16. 60
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/csp/csp.js
  17. 185
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/css/css.js
  18. 285
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/dart/dart.js
  19. 135
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/dockerfile/dockerfile.js
  20. 462
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/ecl/ecl.js
  21. 562
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/elixir/elixir.js
  22. 149
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/flow9/flow9.js
  23. 223
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/fsharp/fsharp.js
  24. 224
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/go/go.js
  25. 157
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/graphql/graphql.js
  26. 399
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/handlebars/handlebars.js
  27. 187
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/hcl/hcl.js
  28. 310
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/html/html.js
  29. 76
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/ini/ini.js
  30. 238
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/java/java.js
  31. 412
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/javascript/javascript.js
  32. 517
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/julia/julia.js
  33. 259
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/kotlin/kotlin.js
  34. 168
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/less/less.js
  35. 164
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/lexon/lexon.js
  36. 232
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/liquid/liquid.js
  37. 167
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/lua/lua.js
  38. 217
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/m3/m3.js
  39. 229
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/markdown/markdown.js
  40. 205
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/mips/mips.js
  41. 382
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/msdax/msdax.js
  42. 824
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/mysql/mysql.js
  43. 190
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/objective-c/objective-c.js
  44. 257
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/pascal/pascal.js
  45. 170
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/pascaligo/pascaligo.js
  46. 628
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/perl/perl.js
  47. 854
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/pgsql/pgsql.js
  48. 579
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/php/php.js
  49. 144
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/pla/pla.js
  50. 716
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/postiats/postiats.js
  51. 897
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/powerquery/powerquery.js
  52. 246
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/powershell/powershell.js
  53. 418
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/protobuf/protobuf.js
  54. 409
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/pug/pug.js
  55. 256
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/python/python.js
  56. 291
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/qsharp/qsharp.js
  57. 250
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/r/r.js
  58. 527
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/razor/razor.js
  59. 309
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/redis/redis.js
  60. 815
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/redshift/redshift.js
  61. 181
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/restructuredtext/restructuredtext.js
  62. 544
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/ruby/ruby.js
  63. 350
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/rust/rust.js
  64. 121
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/sb/sb.js
  65. 376
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/scala/scala.js
  66. 115
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/scheme/scheme.js
  67. 247
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/scss/scss.js
  68. 225
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/shell/shell.js
  69. 1373
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/solidity/solidity.js
  70. 205
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/sophia/sophia.js
  71. 206
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/sparql/sparql.js
  72. 860
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/sql/sql.js
  73. 419
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/st/st.js
  74. 260
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/swift/swift.js
  75. 578
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/systemverilog/systemverilog.js
  76. 239
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/tcl/tcl.js
  77. 385
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/twig/twig.js
  78. 337
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/typescript/typescript.js
  79. 379
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/vb/vb.js
  80. 94
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/xml/xml.js
  81. 193
      apps/remix-ide/src/assets/monaco-editor/dev/vs/basic-languages/yaml/yaml.js
  82. 4192
      apps/remix-ide/src/assets/monaco-editor/dev/vs/editor/editor.main.css
  83. 143065
      apps/remix-ide/src/assets/monaco-editor/dev/vs/editor/editor.main.js
  84. 1
      apps/remix-ide/src/assets/monaco-editor/dev/vs/editor/editor.main.js.map
  85. 1452
      apps/remix-ide/src/assets/monaco-editor/dev/vs/editor/editor.main.nls.de.js
  86. 1452
      apps/remix-ide/src/assets/monaco-editor/dev/vs/editor/editor.main.nls.es.js
  87. 1452
      apps/remix-ide/src/assets/monaco-editor/dev/vs/editor/editor.main.nls.fr.js
  88. 1452
      apps/remix-ide/src/assets/monaco-editor/dev/vs/editor/editor.main.nls.it.js
  89. 1452
      apps/remix-ide/src/assets/monaco-editor/dev/vs/editor/editor.main.nls.ja.js
  90. 1455
      apps/remix-ide/src/assets/monaco-editor/dev/vs/editor/editor.main.nls.js
  91. 1452
      apps/remix-ide/src/assets/monaco-editor/dev/vs/editor/editor.main.nls.ko.js
  92. 1452
      apps/remix-ide/src/assets/monaco-editor/dev/vs/editor/editor.main.nls.ru.js
  93. 1452
      apps/remix-ide/src/assets/monaco-editor/dev/vs/editor/editor.main.nls.zh-cn.js
  94. 1452
      apps/remix-ide/src/assets/monaco-editor/dev/vs/editor/editor.main.nls.zh-tw.js
  95. 2689
      apps/remix-ide/src/assets/monaco-editor/dev/vs/language/css/cssMode.js
  96. 37006
      apps/remix-ide/src/assets/monaco-editor/dev/vs/language/css/cssWorker.js
  97. 2622
      apps/remix-ide/src/assets/monaco-editor/dev/vs/language/html/htmlMode.js
  98. 18842
      apps/remix-ide/src/assets/monaco-editor/dev/vs/language/html/htmlWorker.js
  99. 4472
      apps/remix-ide/src/assets/monaco-editor/dev/vs/language/json/jsonMode.js
  100. 8858
      apps/remix-ide/src/assets/monaco-editor/dev/vs/language/json/jsonWorker.js
  101. Some files were not shown because too many files have changed in this diff Show More

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,339 @@
/*---------------------------------------------------------------------------------------------
* 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/apex/apex',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
// the default separators except `@$`
wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,
comments: {
lineComment: '//',
blockComment: ['/*', '*/']
},
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" },
{ open: '<', close: '>' }
],
folding: {
markers: {
start: new RegExp('^\\s*//\\s*(?:(?:#?region\\b)|(?:<editor-fold\\b))'),
end: new RegExp('^\\s*//\\s*(?:(?:#?endregion\\b)|(?:</editor-fold>))')
}
}
};
var keywords = [
'abstract',
'activate',
'and',
'any',
'array',
'as',
'asc',
'assert',
'autonomous',
'begin',
'bigdecimal',
'blob',
'boolean',
'break',
'bulk',
'by',
'case',
'cast',
'catch',
'char',
'class',
'collect',
'commit',
'const',
'continue',
'convertcurrency',
'decimal',
'default',
'delete',
'desc',
'do',
'double',
'else',
'end',
'enum',
'exception',
'exit',
'export',
'extends',
'false',
'final',
'finally',
'float',
'for',
'from',
'future',
'get',
'global',
'goto',
'group',
'having',
'hint',
'if',
'implements',
'import',
'in',
'inner',
'insert',
'instanceof',
'int',
'interface',
'into',
'join',
'last_90_days',
'last_month',
'last_n_days',
'last_week',
'like',
'limit',
'list',
'long',
'loop',
'map',
'merge',
'native',
'new',
'next_90_days',
'next_month',
'next_n_days',
'next_week',
'not',
'null',
'nulls',
'number',
'object',
'of',
'on',
'or',
'outer',
'override',
'package',
'parallel',
'pragma',
'private',
'protected',
'public',
'retrieve',
'return',
'returning',
'rollback',
'savepoint',
'search',
'select',
'set',
'short',
'sort',
'stat',
'static',
'strictfp',
'super',
'switch',
'synchronized',
'system',
'testmethod',
'then',
'this',
'this_month',
'this_week',
'throw',
'throws',
'today',
'tolabel',
'tomorrow',
'transaction',
'transient',
'trigger',
'true',
'try',
'type',
'undelete',
'update',
'upsert',
'using',
'virtual',
'void',
'volatile',
'webservice',
'when',
'where',
'while',
'yesterday'
];
// create case variations of the keywords - apex is case insensitive, but we can't make the highlighter case insensitive
// because we use a heuristic to assume that identifiers starting with an upper case letter are types.
var uppercaseFirstLetter = function (lowercase) {
return lowercase.charAt(0).toUpperCase() + lowercase.substr(1);
};
var keywordsWithCaseVariations = [];
keywords.forEach(function (lowercase) {
keywordsWithCaseVariations.push(lowercase);
keywordsWithCaseVariations.push(lowercase.toUpperCase());
keywordsWithCaseVariations.push(uppercaseFirstLetter(lowercase));
});
exports.language = {
defaultToken: '',
tokenPostfix: '.apex',
keywords: keywordsWithCaseVariations,
operators: [
'=',
'>',
'<',
'!',
'~',
'?',
':',
'==',
'<=',
'>=',
'!=',
'&&',
'||',
'++',
'--',
'+',
'-',
'*',
'/',
'&',
'|',
'^',
'%',
'<<',
'>>',
'>>>',
'+=',
'-=',
'*=',
'/=',
'&=',
'|=',
'^=',
'%=',
'<<=',
'>>=',
'>>>='
],
// we include these common regular expressions
symbols: /[=><!~?:&|+\-*\/\^%]+/,
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
digits: /\d+(_+\d+)*/,
octaldigits: /[0-7]+(_+[0-7]+)*/,
binarydigits: /[0-1]+(_+[0-1]+)*/,
hexdigits: /[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,
// The main tokenizer for our languages
tokenizer: {
root: [
// identifiers and keywords
[
/[a-z_$][\w$]*/,
{
cases: {
'@keywords': { token: 'keyword.$0' },
'@default': 'identifier'
}
}
],
// assume that identifiers starting with an uppercase letter are types
[
/[A-Z][\w\$]*/,
{
cases: {
'@keywords': { token: 'keyword.$0' },
'@default': 'type.identifier'
}
}
],
// whitespace
{ include: '@whitespace' },
// delimiters and operators
[/[{}()\[\]]/, '@brackets'],
[/[<>](?!@symbols)/, '@brackets'],
[
/@symbols/,
{
cases: {
'@operators': 'delimiter',
'@default': ''
}
}
],
// @ annotations.
[/@\s*[a-zA-Z_\$][\w\$]*/, 'annotation'],
// numbers
[/(@digits)[eE]([\-+]?(@digits))?[fFdD]?/, 'number.float'],
[/(@digits)\.(@digits)([eE][\-+]?(@digits))?[fFdD]?/, 'number.float'],
[/(@digits)[fFdD]/, 'number.float'],
[/(@digits)[lL]?/, 'number'],
// delimiter: after number because of .\d floats
[/[;,.]/, 'delimiter'],
// strings
[/"([^"\\]|\\.)*$/, 'string.invalid'],
[/'([^'\\]|\\.)*$/, 'string.invalid'],
[/"/, 'string', '@string."'],
[/'/, 'string', "@string.'"],
// characters
[/'[^\\']'/, 'string'],
[/(')(@escapes)(')/, ['string', 'string.escape', 'string']],
[/'/, 'string.invalid']
],
whitespace: [
[/[ \t\r\n]+/, ''],
[/\/\*\*(?!\/)/, 'comment.doc', '@apexdoc'],
[/\/\*/, 'comment', '@comment'],
[/\/\/.*$/, 'comment']
],
comment: [
[/[^\/*]+/, 'comment'],
// [/\/\*/, 'comment', '@push' ], // nested comment not allowed :-(
// [/\/\*/, 'comment.invalid' ], // this breaks block comments in the shape of /* //*/
[/\*\//, 'comment', '@pop'],
[/[\/*]/, 'comment']
],
//Identical copy of comment above, except for the addition of .doc
apexdoc: [
[/[^\/*]+/, 'comment.doc'],
[/\*\//, 'comment.doc', '@pop'],
[/[\/*]/, 'comment.doc']
],
string: [
[/[^\\"']+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[
/["']/,
{
cases: {
'$#==$S2': { token: 'string', next: '@pop' },
'@default': 'string'
}
}
]
]
}
};
});

@ -0,0 +1,75 @@
/*---------------------------------------------------------------------------------------------
* 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/azcli/azcli',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
comments: {
lineComment: '#'
}
};
exports.language = {
defaultToken: 'keyword',
ignoreCase: true,
tokenPostfix: '.azcli',
str: /[^#\s]/,
tokenizer: {
root: [
{ include: '@comment' },
[
/\s-+@str*\s*/,
{
cases: {
'@eos': { token: 'key.identifier', next: '@popall' },
'@default': { token: 'key.identifier', next: '@type' }
}
}
],
[
/^-+@str*\s*/,
{
cases: {
'@eos': { token: 'key.identifier', next: '@popall' },
'@default': { token: 'key.identifier', next: '@type' }
}
}
]
],
type: [
{ include: '@comment' },
[
/-+@str*\s*/,
{
cases: {
'@eos': { token: 'key.identifier', next: '@popall' },
'@default': 'key.identifier'
}
}
],
[
/@str+\s*/,
{
cases: {
'@eos': { token: 'string', next: '@popall' },
'@default': 'string'
}
}
]
],
comment: [
[
/#.*$/,
{
cases: {
'@eos': { token: 'comment', next: '@popall' }
}
}
]
]
}
};
});

@ -0,0 +1,107 @@
/*---------------------------------------------------------------------------------------------
* 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/bat/bat',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
comments: {
lineComment: 'REM'
},
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' }
],
surroundingPairs: [
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' }
],
folding: {
markers: {
start: new RegExp('^\\s*(::\\s*|REM\\s+)#region'),
end: new RegExp('^\\s*(::\\s*|REM\\s+)#endregion')
}
}
};
exports.language = {
defaultToken: '',
ignoreCase: true,
tokenPostfix: '.bat',
brackets: [
{ token: 'delimiter.bracket', open: '{', close: '}' },
{ token: 'delimiter.parenthesis', open: '(', close: ')' },
{ token: 'delimiter.square', open: '[', close: ']' }
],
keywords: /call|defined|echo|errorlevel|exist|for|goto|if|pause|set|shift|start|title|not|pushd|popd/,
// we include these common regular expressions
symbols: /[=><!~?&|+\-*\/\^;\.,]+/,
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
// The main tokenizer for our languages
tokenizer: {
root: [
[/^(\s*)(rem(?:\s.*|))$/, ['', 'comment']],
[/(\@?)(@keywords)(?!\w)/, [{ token: 'keyword' }, { token: 'keyword.$2' }]],
// whitespace
[/[ \t\r\n]+/, ''],
// blocks
[/setlocal(?!\w)/, 'keyword.tag-setlocal'],
[/endlocal(?!\w)/, 'keyword.tag-setlocal'],
// words
[/[a-zA-Z_]\w*/, ''],
// labels
[/:\w*/, 'metatag'],
// variables
[/%[^%]+%/, 'variable'],
[/%%[\w]+(?!\w)/, 'variable'],
// punctuations
[/[{}()\[\]]/, '@brackets'],
[/@symbols/, 'delimiter'],
// numbers
[/\d*\.\d+([eE][\-+]?\d+)?/, 'number.float'],
[/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/, 'number.hex'],
[/\d+/, 'number'],
// punctuation: after number because of .\d floats
[/[;,.]/, 'delimiter'],
// strings:
[/"/, 'string', '@string."'],
[/'/, 'string', "@string.'"]
],
string: [
[
/[^\\"'%]+/,
{
cases: {
'@eos': { token: 'string', next: '@popall' },
'@default': 'string'
}
}
],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/%[\w ]+%/, 'variable'],
[/%%[\w]+(?!\w)/, 'variable'],
[
/["']/,
{
cases: {
'$#==$S2': { token: 'string', next: '@pop' },
'@default': 'string'
}
}
],
[/$/, 'string', '@popall']
]
}
};
});

@ -0,0 +1,114 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
define('vs/basic-languages/bicep/bicep',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
var bounded = function (text) { return "\\b" + text + "\\b"; };
var identifierStart = '[_a-zA-Z]';
var identifierContinue = '[_a-zA-Z0-9]';
var identifier = bounded("" + identifierStart + identifierContinue + "*");
var keywords = [
'targetScope',
'resource',
'module',
'param',
'var',
'output',
'for',
'in',
'if',
'existing'
];
var namedLiterals = ['true', 'false', 'null'];
var nonCommentWs = "[ \\t\\r\\n]";
var numericLiteral = "[0-9]+";
exports.conf = {
comments: {
lineComment: '//',
blockComment: ['/*', '*/']
},
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: "'", close: "'" },
{ open: "'''", close: "'''" }
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: "'", close: "'", notIn: ['string', 'comment'] },
{ open: "'''", close: "'''", notIn: ['string', 'comment'] }
],
autoCloseBefore: ":.,=}])' \n\t",
indentationRules: {
increaseIndentPattern: new RegExp('^((?!\\/\\/).)*(\\{[^}"\'`]*|\\([^)"\'`]*|\\[[^\\]"\'`]*)$'),
decreaseIndentPattern: new RegExp('^((?!.*?\\/\\*).*\\*/)?\\s*[\\}\\]].*$')
}
};
exports.language = {
defaultToken: '',
tokenPostfix: '.bicep',
brackets: [
{ open: '{', close: '}', token: 'delimiter.curly' },
{ open: '[', close: ']', token: 'delimiter.square' },
{ open: '(', close: ')', token: 'delimiter.parenthesis' }
],
symbols: /[=><!~?:&|+\-*/^%]+/,
keywords: keywords,
namedLiterals: namedLiterals,
escapes: "\\\\(u{[0-9A-Fa-f]+}|n|r|t|\\\\|'|\\${)",
tokenizer: {
root: [{ include: '@expression' }, { include: '@whitespace' }],
stringVerbatim: [
{ regex: "(|'|'')[^']", action: { token: 'string' } },
{ regex: "'''", action: { token: 'string.quote', next: '@pop' } }
],
stringLiteral: [
{ regex: "\\${", action: { token: 'delimiter.bracket', next: '@bracketCounting' } },
{ regex: "[^\\\\'$]+", action: { token: 'string' } },
{ regex: '@escapes', action: { token: 'string.escape' } },
{ regex: "\\\\.", action: { token: 'string.escape.invalid' } },
{ regex: "'", action: { token: 'string', next: '@pop' } }
],
bracketCounting: [
{ regex: "{", action: { token: 'delimiter.bracket', next: '@bracketCounting' } },
{ regex: "}", action: { token: 'delimiter.bracket', next: '@pop' } },
{ include: 'expression' }
],
comment: [
{ regex: "[^\\*]+", action: { token: 'comment' } },
{ regex: "\\*\\/", action: { token: 'comment', next: '@pop' } },
{ regex: "[\\/*]", action: { token: 'comment' } }
],
whitespace: [
{ regex: nonCommentWs },
{ regex: "\\/\\*", action: { token: 'comment', next: '@comment' } },
{ regex: "\\/\\/.*$", action: { token: 'comment' } }
],
expression: [
{ regex: "'''", action: { token: 'string.quote', next: '@stringVerbatim' } },
{ regex: "'", action: { token: 'string.quote', next: '@stringLiteral' } },
{ regex: numericLiteral, action: { token: 'number' } },
{
regex: identifier,
action: {
cases: {
'@keywords': { token: 'keyword' },
'@namedLiterals': { token: 'keyword' },
'@default': { token: 'identifier' }
}
}
}
]
}
};
});

@ -0,0 +1,180 @@
/*---------------------------------------------------------------------------------------------
* 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/cameligo/cameligo',["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: [
['{', '}'],
['[', ']'],
['(', ')'],
['<', '>']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '<', close: '>' },
{ open: "'", close: "'" },
{ open: '"', close: '"' },
{ open: '(*', close: '*)' }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '<', close: '>' },
{ open: "'", close: "'" },
{ open: '"', close: '"' },
{ open: '(*', close: '*)' }
]
};
exports.language = {
defaultToken: '',
tokenPostfix: '.cameligo',
ignoreCase: true,
brackets: [
{ open: '{', close: '}', token: 'delimiter.curly' },
{ open: '[', close: ']', token: 'delimiter.square' },
{ open: '(', close: ')', token: 'delimiter.parenthesis' },
{ open: '<', close: '>', token: 'delimiter.angle' }
],
keywords: [
'abs',
'assert',
'block',
'Bytes',
'case',
'Crypto',
'Current',
'else',
'failwith',
'false',
'for',
'fun',
'if',
'in',
'let',
'let%entry',
'let%init',
'List',
'list',
'Map',
'map',
'match',
'match%nat',
'mod',
'not',
'operation',
'Operation',
'of',
'record',
'Set',
'set',
'sender',
'skip',
'source',
'String',
'then',
'to',
'true',
'type',
'with'
],
typeKeywords: ['int', 'unit', 'string', 'tz', 'nat', 'bool'],
operators: [
'=',
'>',
'<',
'<=',
'>=',
'<>',
':',
':=',
'and',
'mod',
'or',
'+',
'-',
'*',
'/',
'@',
'&',
'^',
'%',
'->',
'<-',
'&&',
'||'
],
// we include these common regular expressions
symbols: /[=><:@\^&|+\-*\/\^%]+/,
// The main tokenizer for our languages
tokenizer: {
root: [
// identifiers and keywords
[
/[a-zA-Z_][\w]*/,
{
cases: {
'@keywords': { token: 'keyword.$0' },
'@default': 'identifier'
}
}
],
// whitespace
{ include: '@whitespace' },
// delimiters and operators
[/[{}()\[\]]/, '@brackets'],
[/[<>](?!@symbols)/, '@brackets'],
[
/@symbols/,
{
cases: {
'@operators': 'delimiter',
'@default': ''
}
}
],
// numbers
[/\d*\.\d+([eE][\-+]?\d+)?/, 'number.float'],
[/\$[0-9a-fA-F]{1,16}/, 'number.hex'],
[/\d+/, 'number'],
// delimiter: after number because of .\d floats
[/[;,.]/, 'delimiter'],
// strings
[/'([^'\\]|\\.)*$/, 'string.invalid'],
[/'/, 'string', '@string'],
// characters
[/'[^\\']'/, 'string'],
[/'/, 'string.invalid'],
[/\#\d+/, 'string']
],
/* */
comment: [
[/[^\(\*]+/, 'comment'],
//[/\(\*/, 'comment', '@push' ], // nested comment not allowed :-(
[/\*\)/, 'comment', '@pop'],
[/\(\*/, 'comment']
],
string: [
[/[^\\']+/, 'string'],
[/\\./, 'string.escape.invalid'],
[/'/, { token: 'string.quote', bracket: '@close', next: '@pop' }]
],
whitespace: [
[/[ \t\r\n]+/, 'white'],
[/\(\*/, 'comment', '@comment'],
[/\/\/.*$/, 'comment']
]
}
};
});

@ -0,0 +1,767 @@
/*---------------------------------------------------------------------------------------------
* 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/clojure/clojure',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
comments: {
lineComment: ';;'
},
brackets: [
['[', ']'],
['(', ')'],
['{', '}']
],
autoClosingPairs: [
{ open: '[', close: ']' },
{ open: '"', close: '"' },
{ open: '(', close: ')' },
{ open: '{', close: '}' }
],
surroundingPairs: [
{ open: '[', close: ']' },
{ open: '"', close: '"' },
{ open: '(', close: ')' },
{ open: '{', close: '}' }
]
};
exports.language = {
defaultToken: '',
ignoreCase: true,
tokenPostfix: '.clj',
brackets: [
{ open: '[', close: ']', token: 'delimiter.square' },
{ open: '(', close: ')', token: 'delimiter.parenthesis' },
{ open: '{', close: '}', token: 'delimiter.curly' }
],
constants: ['true', 'false', 'nil'],
// delimiters: /[\\\[\]\s"#'(),;@^`{}~]|$/,
numbers: /^(?:[+\-]?\d+(?:(?:N|(?:[eE][+\-]?\d+))|(?:\.?\d*(?:M|(?:[eE][+\-]?\d+))?)|\/\d+|[xX][0-9a-fA-F]+|r[0-9a-zA-Z]+)?(?=[\\\[\]\s"#'(),;@^`{}~]|$))/,
characters: /^(?:\\(?:backspace|formfeed|newline|return|space|tab|o[0-7]{3}|u[0-9A-Fa-f]{4}|x[0-9A-Fa-f]{4}|.)?(?=[\\\[\]\s"(),;@^`{}~]|$))/,
escapes: /^\\(?:["'\\bfnrt]|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
// simple-namespace := /^[^\\\/\[\]\d\s"#'(),;@^`{}~][^\\\[\]\s"(),;@^`{}~]*/
// simple-symbol := /^(?:\/|[^\\\/\[\]\d\s"#'(),;@^`{}~][^\\\[\]\s"(),;@^`{}~]*)/
// qualified-symbol := (<simple-namespace>(<.><simple-namespace>)*</>)?<simple-symbol>
qualifiedSymbols: /^(?:(?:[^\\\/\[\]\d\s"#'(),;@^`{}~][^\\\[\]\s"(),;@^`{}~]*(?:\.[^\\\/\[\]\d\s"#'(),;@^`{}~][^\\\[\]\s"(),;@^`{}~]*)*\/)?(?:\/|[^\\\/\[\]\d\s"#'(),;@^`{}~][^\\\[\]\s"(),;@^`{}~]*)*(?=[\\\[\]\s"(),;@^`{}~]|$))/,
specialForms: [
'.',
'catch',
'def',
'do',
'if',
'monitor-enter',
'monitor-exit',
'new',
'quote',
'recur',
'set!',
'throw',
'try',
'var'
],
coreSymbols: [
'*',
"*'",
'*1',
'*2',
'*3',
'*agent*',
'*allow-unresolved-vars*',
'*assert*',
'*clojure-version*',
'*command-line-args*',
'*compile-files*',
'*compile-path*',
'*compiler-options*',
'*data-readers*',
'*default-data-reader-fn*',
'*e',
'*err*',
'*file*',
'*flush-on-newline*',
'*fn-loader*',
'*in*',
'*math-context*',
'*ns*',
'*out*',
'*print-dup*',
'*print-length*',
'*print-level*',
'*print-meta*',
'*print-namespace-maps*',
'*print-readably*',
'*read-eval*',
'*reader-resolver*',
'*source-path*',
'*suppress-read*',
'*unchecked-math*',
'*use-context-classloader*',
'*verbose-defrecords*',
'*warn-on-reflection*',
'+',
"+'",
'-',
"-'",
'->',
'->>',
'->ArrayChunk',
'->Eduction',
'->Vec',
'->VecNode',
'->VecSeq',
'-cache-protocol-fn',
'-reset-methods',
'..',
'/',
'<',
'<=',
'=',
'==',
'>',
'>=',
'EMPTY-NODE',
'Inst',
'StackTraceElement->vec',
'Throwable->map',
'accessor',
'aclone',
'add-classpath',
'add-watch',
'agent',
'agent-error',
'agent-errors',
'aget',
'alength',
'alias',
'all-ns',
'alter',
'alter-meta!',
'alter-var-root',
'amap',
'ancestors',
'and',
'any?',
'apply',
'areduce',
'array-map',
'as->',
'aset',
'aset-boolean',
'aset-byte',
'aset-char',
'aset-double',
'aset-float',
'aset-int',
'aset-long',
'aset-short',
'assert',
'assoc',
'assoc!',
'assoc-in',
'associative?',
'atom',
'await',
'await-for',
'await1',
'bases',
'bean',
'bigdec',
'bigint',
'biginteger',
'binding',
'bit-and',
'bit-and-not',
'bit-clear',
'bit-flip',
'bit-not',
'bit-or',
'bit-set',
'bit-shift-left',
'bit-shift-right',
'bit-test',
'bit-xor',
'boolean',
'boolean-array',
'boolean?',
'booleans',
'bound-fn',
'bound-fn*',
'bound?',
'bounded-count',
'butlast',
'byte',
'byte-array',
'bytes',
'bytes?',
'case',
'cast',
'cat',
'char',
'char-array',
'char-escape-string',
'char-name-string',
'char?',
'chars',
'chunk',
'chunk-append',
'chunk-buffer',
'chunk-cons',
'chunk-first',
'chunk-next',
'chunk-rest',
'chunked-seq?',
'class',
'class?',
'clear-agent-errors',
'clojure-version',
'coll?',
'comment',
'commute',
'comp',
'comparator',
'compare',
'compare-and-set!',
'compile',
'complement',
'completing',
'concat',
'cond',
'cond->',
'cond->>',
'condp',
'conj',
'conj!',
'cons',
'constantly',
'construct-proxy',
'contains?',
'count',
'counted?',
'create-ns',
'create-struct',
'cycle',
'dec',
"dec'",
'decimal?',
'declare',
'dedupe',
'default-data-readers',
'definline',
'definterface',
'defmacro',
'defmethod',
'defmulti',
'defn',
'defn-',
'defonce',
'defprotocol',
'defrecord',
'defstruct',
'deftype',
'delay',
'delay?',
'deliver',
'denominator',
'deref',
'derive',
'descendants',
'destructure',
'disj',
'disj!',
'dissoc',
'dissoc!',
'distinct',
'distinct?',
'doall',
'dorun',
'doseq',
'dosync',
'dotimes',
'doto',
'double',
'double-array',
'double?',
'doubles',
'drop',
'drop-last',
'drop-while',
'eduction',
'empty',
'empty?',
'ensure',
'ensure-reduced',
'enumeration-seq',
'error-handler',
'error-mode',
'eval',
'even?',
'every-pred',
'every?',
'ex-data',
'ex-info',
'extend',
'extend-protocol',
'extend-type',
'extenders',
'extends?',
'false?',
'ffirst',
'file-seq',
'filter',
'filterv',
'find',
'find-keyword',
'find-ns',
'find-protocol-impl',
'find-protocol-method',
'find-var',
'first',
'flatten',
'float',
'float-array',
'float?',
'floats',
'flush',
'fn',
'fn?',
'fnext',
'fnil',
'for',
'force',
'format',
'frequencies',
'future',
'future-call',
'future-cancel',
'future-cancelled?',
'future-done?',
'future?',
'gen-class',
'gen-interface',
'gensym',
'get',
'get-in',
'get-method',
'get-proxy-class',
'get-thread-bindings',
'get-validator',
'group-by',
'halt-when',
'hash',
'hash-combine',
'hash-map',
'hash-ordered-coll',
'hash-set',
'hash-unordered-coll',
'ident?',
'identical?',
'identity',
'if-let',
'if-not',
'if-some',
'ifn?',
'import',
'in-ns',
'inc',
"inc'",
'indexed?',
'init-proxy',
'inst-ms',
'inst-ms*',
'inst?',
'instance?',
'int',
'int-array',
'int?',
'integer?',
'interleave',
'intern',
'interpose',
'into',
'into-array',
'ints',
'io!',
'isa?',
'iterate',
'iterator-seq',
'juxt',
'keep',
'keep-indexed',
'key',
'keys',
'keyword',
'keyword?',
'last',
'lazy-cat',
'lazy-seq',
'let',
'letfn',
'line-seq',
'list',
'list*',
'list?',
'load',
'load-file',
'load-reader',
'load-string',
'loaded-libs',
'locking',
'long',
'long-array',
'longs',
'loop',
'macroexpand',
'macroexpand-1',
'make-array',
'make-hierarchy',
'map',
'map-entry?',
'map-indexed',
'map?',
'mapcat',
'mapv',
'max',
'max-key',
'memfn',
'memoize',
'merge',
'merge-with',
'meta',
'method-sig',
'methods',
'min',
'min-key',
'mix-collection-hash',
'mod',
'munge',
'name',
'namespace',
'namespace-munge',
'nat-int?',
'neg-int?',
'neg?',
'newline',
'next',
'nfirst',
'nil?',
'nnext',
'not',
'not-any?',
'not-empty',
'not-every?',
'not=',
'ns',
'ns-aliases',
'ns-imports',
'ns-interns',
'ns-map',
'ns-name',
'ns-publics',
'ns-refers',
'ns-resolve',
'ns-unalias',
'ns-unmap',
'nth',
'nthnext',
'nthrest',
'num',
'number?',
'numerator',
'object-array',
'odd?',
'or',
'parents',
'partial',
'partition',
'partition-all',
'partition-by',
'pcalls',
'peek',
'persistent!',
'pmap',
'pop',
'pop!',
'pop-thread-bindings',
'pos-int?',
'pos?',
'pr',
'pr-str',
'prefer-method',
'prefers',
'primitives-classnames',
'print',
'print-ctor',
'print-dup',
'print-method',
'print-simple',
'print-str',
'printf',
'println',
'println-str',
'prn',
'prn-str',
'promise',
'proxy',
'proxy-call-with-super',
'proxy-mappings',
'proxy-name',
'proxy-super',
'push-thread-bindings',
'pvalues',
'qualified-ident?',
'qualified-keyword?',
'qualified-symbol?',
'quot',
'rand',
'rand-int',
'rand-nth',
'random-sample',
'range',
'ratio?',
'rational?',
'rationalize',
're-find',
're-groups',
're-matcher',
're-matches',
're-pattern',
're-seq',
'read',
'read-line',
'read-string',
'reader-conditional',
'reader-conditional?',
'realized?',
'record?',
'reduce',
'reduce-kv',
'reduced',
'reduced?',
'reductions',
'ref',
'ref-history-count',
'ref-max-history',
'ref-min-history',
'ref-set',
'refer',
'refer-clojure',
'reify',
'release-pending-sends',
'rem',
'remove',
'remove-all-methods',
'remove-method',
'remove-ns',
'remove-watch',
'repeat',
'repeatedly',
'replace',
'replicate',
'require',
'reset!',
'reset-meta!',
'reset-vals!',
'resolve',
'rest',
'restart-agent',
'resultset-seq',
'reverse',
'reversible?',
'rseq',
'rsubseq',
'run!',
'satisfies?',
'second',
'select-keys',
'send',
'send-off',
'send-via',
'seq',
'seq?',
'seqable?',
'seque',
'sequence',
'sequential?',
'set',
'set-agent-send-executor!',
'set-agent-send-off-executor!',
'set-error-handler!',
'set-error-mode!',
'set-validator!',
'set?',
'short',
'short-array',
'shorts',
'shuffle',
'shutdown-agents',
'simple-ident?',
'simple-keyword?',
'simple-symbol?',
'slurp',
'some',
'some->',
'some->>',
'some-fn',
'some?',
'sort',
'sort-by',
'sorted-map',
'sorted-map-by',
'sorted-set',
'sorted-set-by',
'sorted?',
'special-symbol?',
'spit',
'split-at',
'split-with',
'str',
'string?',
'struct',
'struct-map',
'subs',
'subseq',
'subvec',
'supers',
'swap!',
'swap-vals!',
'symbol',
'symbol?',
'sync',
'tagged-literal',
'tagged-literal?',
'take',
'take-last',
'take-nth',
'take-while',
'test',
'the-ns',
'thread-bound?',
'time',
'to-array',
'to-array-2d',
'trampoline',
'transduce',
'transient',
'tree-seq',
'true?',
'type',
'unchecked-add',
'unchecked-add-int',
'unchecked-byte',
'unchecked-char',
'unchecked-dec',
'unchecked-dec-int',
'unchecked-divide-int',
'unchecked-double',
'unchecked-float',
'unchecked-inc',
'unchecked-inc-int',
'unchecked-int',
'unchecked-long',
'unchecked-multiply',
'unchecked-multiply-int',
'unchecked-negate',
'unchecked-negate-int',
'unchecked-remainder-int',
'unchecked-short',
'unchecked-subtract',
'unchecked-subtract-int',
'underive',
'unquote',
'unquote-splicing',
'unreduced',
'unsigned-bit-shift-right',
'update',
'update-in',
'update-proxy',
'uri?',
'use',
'uuid?',
'val',
'vals',
'var-get',
'var-set',
'var?',
'vary-meta',
'vec',
'vector',
'vector-of',
'vector?',
'volatile!',
'volatile?',
'vreset!',
'vswap!',
'when',
'when-first',
'when-let',
'when-not',
'when-some',
'while',
'with-bindings',
'with-bindings*',
'with-in-str',
'with-loading-context',
'with-local-vars',
'with-meta',
'with-open',
'with-out-str',
'with-precision',
'with-redefs',
'with-redefs-fn',
'xml-seq',
'zero?',
'zipmap'
],
tokenizer: {
root: [
// whitespaces and comments
{ include: '@whitespace' },
// numbers
[/@numbers/, 'number'],
// characters
[/@characters/, 'string'],
// strings
{ include: '@string' },
// brackets
[/[()\[\]{}]/, '@brackets'],
// regular expressions
[/\/#"(?:\.|(?:")|[^"\n])*"\/g/, 'regexp'],
// reader macro characters
[/[#'@^`~]/, 'meta'],
// symbols
[
/@qualifiedSymbols/,
{
cases: {
'^:.+$': 'constant',
'@specialForms': 'keyword',
'@coreSymbols': 'keyword',
'@constants': 'constant',
'@default': 'identifier'
}
}
]
],
whitespace: [
[/[\s,]+/, 'white'],
[/;.*$/, 'comment'],
[/\(comment\b/, 'comment', '@comment']
],
comment: [
[/\(/, 'comment', '@push'],
[/\)/, 'comment', '@pop'],
[/[^()]/, 'comment']
],
string: [[/"/, 'string', '@multiLineString']],
multiLineString: [
[/"/, 'string', '@popall'],
[/@escapes/, 'string.escape'],
[/./, 'string']
]
}
};
});

@ -0,0 +1,239 @@
/*---------------------------------------------------------------------------------------------
* 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/coffee/coffee',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\#%\^\&\*\(\)\=\$\-\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,
comments: {
blockComment: ['###', '###'],
lineComment: '#'
},
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
folding: {
markers: {
start: new RegExp('^\\s*#region\\b'),
end: new RegExp('^\\s*#endregion\\b')
}
}
};
exports.language = {
defaultToken: '',
ignoreCase: true,
tokenPostfix: '.coffee',
brackets: [
{ open: '{', close: '}', token: 'delimiter.curly' },
{ open: '[', close: ']', token: 'delimiter.square' },
{ open: '(', close: ')', token: 'delimiter.parenthesis' }
],
regEx: /\/(?!\/\/)(?:[^\/\\]|\\.)*\/[igm]*/,
keywords: [
'and',
'or',
'is',
'isnt',
'not',
'on',
'yes',
'@',
'no',
'off',
'true',
'false',
'null',
'this',
'new',
'delete',
'typeof',
'in',
'instanceof',
'return',
'throw',
'break',
'continue',
'debugger',
'if',
'else',
'switch',
'for',
'while',
'do',
'try',
'catch',
'finally',
'class',
'extends',
'super',
'undefined',
'then',
'unless',
'until',
'loop',
'of',
'by',
'when'
],
// we include these common regular expressions
symbols: /[=><!~?&%|+\-*\/\^\.,\:]+/,
escapes: /\\(?:[abfnrtv\\"'$]|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
// The main tokenizer for our languages
tokenizer: {
root: [
// identifiers and keywords
[/\@[a-zA-Z_]\w*/, 'variable.predefined'],
[
/[a-zA-Z_]\w*/,
{
cases: {
this: 'variable.predefined',
'@keywords': { token: 'keyword.$0' },
'@default': ''
}
}
],
// whitespace
[/[ \t\r\n]+/, ''],
// Comments
[/###/, 'comment', '@comment'],
[/#.*$/, 'comment'],
// regular expressions
['///', { token: 'regexp', next: '@hereregexp' }],
[/^(\s*)(@regEx)/, ['', 'regexp']],
[/(\()(\s*)(@regEx)/, ['@brackets', '', 'regexp']],
[/(\,)(\s*)(@regEx)/, ['delimiter', '', 'regexp']],
[/(\=)(\s*)(@regEx)/, ['delimiter', '', 'regexp']],
[/(\:)(\s*)(@regEx)/, ['delimiter', '', 'regexp']],
[/(\[)(\s*)(@regEx)/, ['@brackets', '', 'regexp']],
[/(\!)(\s*)(@regEx)/, ['delimiter', '', 'regexp']],
[/(\&)(\s*)(@regEx)/, ['delimiter', '', 'regexp']],
[/(\|)(\s*)(@regEx)/, ['delimiter', '', 'regexp']],
[/(\?)(\s*)(@regEx)/, ['delimiter', '', 'regexp']],
[/(\{)(\s*)(@regEx)/, ['@brackets', '', 'regexp']],
[/(\;)(\s*)(@regEx)/, ['', '', 'regexp']],
// delimiters
[
/}/,
{
cases: {
'$S2==interpolatedstring': {
token: 'string',
next: '@pop'
},
'@default': '@brackets'
}
}
],
[/[{}()\[\]]/, '@brackets'],
[/@symbols/, 'delimiter'],
// numbers
[/\d+[eE]([\-+]?\d+)?/, 'number.float'],
[/\d+\.\d+([eE][\-+]?\d+)?/, 'number.float'],
[/0[xX][0-9a-fA-F]+/, 'number.hex'],
[/0[0-7]+(?!\d)/, 'number.octal'],
[/\d+/, 'number'],
// delimiter: after number because of .\d floats
[/[,.]/, 'delimiter'],
// strings:
[/"""/, 'string', '@herestring."""'],
[/'''/, 'string', "@herestring.'''"],
[
/"/,
{
cases: {
'@eos': 'string',
'@default': { token: 'string', next: '@string."' }
}
}
],
[
/'/,
{
cases: {
'@eos': 'string',
'@default': { token: 'string', next: "@string.'" }
}
}
]
],
string: [
[/[^"'\#\\]+/, 'string'],
[/@escapes/, 'string.escape'],
[/\./, 'string.escape.invalid'],
[/\./, 'string.escape.invalid'],
[
/#{/,
{
cases: {
'$S2=="': {
token: 'string',
next: 'root.interpolatedstring'
},
'@default': 'string'
}
}
],
[
/["']/,
{
cases: {
'$#==$S2': { token: 'string', next: '@pop' },
'@default': 'string'
}
}
],
[/#/, 'string']
],
herestring: [
[
/("""|''')/,
{
cases: {
'$1==$S2': { token: 'string', next: '@pop' },
'@default': 'string'
}
}
],
[/[^#\\'"]+/, 'string'],
[/['"]+/, 'string'],
[/@escapes/, 'string.escape'],
[/\./, 'string.escape.invalid'],
[/#{/, { token: 'string.quote', next: 'root.interpolatedstring' }],
[/#/, 'string']
],
comment: [
[/[^#]+/, 'comment'],
[/###/, 'comment', '@pop'],
[/#/, 'comment']
],
hereregexp: [
[/[^\\\/#]+/, 'regexp'],
[/\\./, 'regexp'],
[/#.*$/, 'comment'],
['///[igm]*', { token: 'regexp', next: '@pop' }],
[/\//, 'regexp']
]
}
};
});

@ -0,0 +1,405 @@
/*---------------------------------------------------------------------------------------------
* 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/cpp/cpp',["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: [
['{', '}'],
['[', ']'],
['(', ')']
],
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: {
markers: {
start: new RegExp('^\\s*#pragma\\s+region\\b'),
end: new RegExp('^\\s*#pragma\\s+endregion\\b')
}
}
};
exports.language = {
defaultToken: '',
tokenPostfix: '.cpp',
brackets: [
{ token: 'delimiter.curly', open: '{', close: '}' },
{ token: 'delimiter.parenthesis', open: '(', close: ')' },
{ token: 'delimiter.square', open: '[', close: ']' },
{ token: 'delimiter.angle', open: '<', close: '>' }
],
keywords: [
'abstract',
'amp',
'array',
'auto',
'bool',
'break',
'case',
'catch',
'char',
'class',
'const',
'constexpr',
'const_cast',
'continue',
'cpu',
'decltype',
'default',
'delegate',
'delete',
'do',
'double',
'dynamic_cast',
'each',
'else',
'enum',
'event',
'explicit',
'export',
'extern',
'false',
'final',
'finally',
'float',
'for',
'friend',
'gcnew',
'generic',
'goto',
'if',
'in',
'initonly',
'inline',
'int',
'interface',
'interior_ptr',
'internal',
'literal',
'long',
'mutable',
'namespace',
'new',
'noexcept',
'nullptr',
'__nullptr',
'operator',
'override',
'partial',
'pascal',
'pin_ptr',
'private',
'property',
'protected',
'public',
'ref',
'register',
'reinterpret_cast',
'restrict',
'return',
'safe_cast',
'sealed',
'short',
'signed',
'sizeof',
'static',
'static_assert',
'static_cast',
'struct',
'switch',
'template',
'this',
'thread_local',
'throw',
'tile_static',
'true',
'try',
'typedef',
'typeid',
'typename',
'union',
'unsigned',
'using',
'virtual',
'void',
'volatile',
'wchar_t',
'where',
'while',
'_asm',
'_based',
'_cdecl',
'_declspec',
'_fastcall',
'_if_exists',
'_if_not_exists',
'_inline',
'_multiple_inheritance',
'_pascal',
'_single_inheritance',
'_stdcall',
'_virtual_inheritance',
'_w64',
'__abstract',
'__alignof',
'__asm',
'__assume',
'__based',
'__box',
'__builtin_alignof',
'__cdecl',
'__clrcall',
'__declspec',
'__delegate',
'__event',
'__except',
'__fastcall',
'__finally',
'__forceinline',
'__gc',
'__hook',
'__identifier',
'__if_exists',
'__if_not_exists',
'__inline',
'__int128',
'__int16',
'__int32',
'__int64',
'__int8',
'__interface',
'__leave',
'__m128',
'__m128d',
'__m128i',
'__m256',
'__m256d',
'__m256i',
'__m64',
'__multiple_inheritance',
'__newslot',
'__nogc',
'__noop',
'__nounwind',
'__novtordisp',
'__pascal',
'__pin',
'__pragma',
'__property',
'__ptr32',
'__ptr64',
'__raise',
'__restrict',
'__resume',
'__sealed',
'__single_inheritance',
'__stdcall',
'__super',
'__thiscall',
'__try',
'__try_cast',
'__typeof',
'__unaligned',
'__unhook',
'__uuidof',
'__value',
'__virtual_inheritance',
'__w64',
'__wchar_t'
],
operators: [
'=',
'>',
'<',
'!',
'~',
'?',
':',
'==',
'<=',
'>=',
'!=',
'&&',
'||',
'++',
'--',
'+',
'-',
'*',
'/',
'&',
'|',
'^',
'%',
'<<',
'>>',
'>>>',
'+=',
'-=',
'*=',
'/=',
'&=',
'|=',
'^=',
'%=',
'<<=',
'>>=',
'>>>='
],
// we include these common regular expressions
symbols: /[=><!~?:&|+\-*\/\^%]+/,
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
integersuffix: /([uU](ll|LL|l|L)|(ll|LL|l|L)?[uU]?)/,
floatsuffix: /[fFlL]?/,
encoding: /u|u8|U|L/,
// The main tokenizer for our languages
tokenizer: {
root: [
// C++ 11 Raw String
[/@encoding?R\"(?:([^ ()\\\t]*))\(/, { token: 'string.raw.begin', next: '@raw.$1' }],
// identifiers and keywords
[
/[a-zA-Z_]\w*/,
{
cases: {
'@keywords': { token: 'keyword.$0' },
'@default': 'identifier'
}
}
],
// The preprocessor checks must be before whitespace as they check /^\s*#/ which
// otherwise fails to match later after other whitespace has been removed.
// Inclusion
[/^\s*#\s*include/, { token: 'keyword.directive.include', next: '@include' }],
// Preprocessor directive
[/^\s*#\s*\w+/, 'keyword.directive'],
// whitespace
{ include: '@whitespace' },
// [[ attributes ]].
[/\[\s*\[/, { token: 'annotation', next: '@annotation' }],
// delimiters and operators
[/[{}()\[\]]/, '@brackets'],
[/[<>](?!@symbols)/, '@brackets'],
[
/@symbols/,
{
cases: {
'@operators': 'delimiter',
'@default': ''
}
}
],
// numbers
[/\d*\d+[eE]([\-+]?\d+)?(@floatsuffix)/, 'number.float'],
[/\d*\.\d+([eE][\-+]?\d+)?(@floatsuffix)/, 'number.float'],
[/0[xX][0-9a-fA-F']*[0-9a-fA-F](@integersuffix)/, 'number.hex'],
[/0[0-7']*[0-7](@integersuffix)/, 'number.octal'],
[/0[bB][0-1']*[0-1](@integersuffix)/, 'number.binary'],
[/\d[\d']*\d(@integersuffix)/, 'number'],
[/\d(@integersuffix)/, 'number'],
// delimiter: after number because of .\d floats
[/[;,.]/, 'delimiter'],
// strings
[/"([^"\\]|\\.)*$/, 'string.invalid'],
[/"/, 'string', '@string'],
// characters
[/'[^\\']'/, 'string'],
[/(')(@escapes)(')/, ['string', 'string.escape', 'string']],
[/'/, 'string.invalid']
],
whitespace: [
[/[ \t\r\n]+/, ''],
[/\/\*\*(?!\/)/, 'comment.doc', '@doccomment'],
[/\/\*/, 'comment', '@comment'],
[/\/\/.*\\$/, 'comment', '@linecomment'],
[/\/\/.*$/, 'comment']
],
comment: [
[/[^\/*]+/, 'comment'],
[/\*\//, 'comment', '@pop'],
[/[\/*]/, 'comment']
],
//For use with continuous line comments
linecomment: [
[/.*[^\\]$/, 'comment', '@pop'],
[/[^]+/, 'comment']
],
//Identical copy of comment above, except for the addition of .doc
doccomment: [
[/[^\/*]+/, 'comment.doc'],
[/\*\//, 'comment.doc', '@pop'],
[/[\/*]/, 'comment.doc']
],
string: [
[/[^\\"]+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/"/, 'string', '@pop']
],
raw: [
[
/(.*)(\))(?:([^ ()\\\t"]*))(\")/,
{
cases: {
'$3==$S2': [
'string.raw',
'string.raw.end',
'string.raw.end',
{ token: 'string.raw.end', next: '@pop' }
],
'@default': ['string.raw', 'string.raw', 'string.raw', 'string.raw']
}
}
],
[/.*/, 'string.raw']
],
annotation: [
{ include: '@whitespace' },
[/using|alignas/, 'keyword'],
[/[a-zA-Z0-9_]+/, 'annotation'],
[/[,:]/, 'delimiter'],
[/[()]/, '@brackets'],
[/\]\s*\]/, { token: 'annotation', next: '@pop' }]
],
include: [
[
/(\s*)(<)([^<>]*)(>)/,
[
'',
'keyword.directive.include.begin',
'string.include.identifier',
{ token: 'keyword.directive.include.end', next: '@pop' }
]
],
[
/(\s*)(")([^"]*)(")/,
[
'',
'keyword.directive.include.begin',
'string.include.identifier',
{ token: 'keyword.directive.include.end', next: '@pop' }
]
]
]
}
};
});

@ -0,0 +1,331 @@
/*---------------------------------------------------------------------------------------------
* 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/csharp/csharp',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\#\$\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,
comments: {
lineComment: '//',
blockComment: ['/*', '*/']
},
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: "'", close: "'", notIn: ['string', 'comment'] },
{ open: '"', close: '"', notIn: ['string', 'comment'] }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '<', close: '>' },
{ open: "'", close: "'" },
{ open: '"', close: '"' }
],
folding: {
markers: {
start: new RegExp('^\\s*#region\\b'),
end: new RegExp('^\\s*#endregion\\b')
}
}
};
exports.language = {
defaultToken: '',
tokenPostfix: '.cs',
brackets: [
{ open: '{', close: '}', token: 'delimiter.curly' },
{ open: '[', close: ']', token: 'delimiter.square' },
{ open: '(', close: ')', token: 'delimiter.parenthesis' },
{ open: '<', close: '>', token: 'delimiter.angle' }
],
keywords: [
'extern',
'alias',
'using',
'bool',
'decimal',
'sbyte',
'byte',
'short',
'ushort',
'int',
'uint',
'long',
'ulong',
'char',
'float',
'double',
'object',
'dynamic',
'string',
'assembly',
'is',
'as',
'ref',
'out',
'this',
'base',
'new',
'typeof',
'void',
'checked',
'unchecked',
'default',
'delegate',
'var',
'const',
'if',
'else',
'switch',
'case',
'while',
'do',
'for',
'foreach',
'in',
'break',
'continue',
'goto',
'return',
'throw',
'try',
'catch',
'finally',
'lock',
'yield',
'from',
'let',
'where',
'join',
'on',
'equals',
'into',
'orderby',
'ascending',
'descending',
'select',
'group',
'by',
'namespace',
'partial',
'class',
'field',
'event',
'method',
'param',
'public',
'protected',
'internal',
'private',
'abstract',
'sealed',
'static',
'struct',
'readonly',
'volatile',
'virtual',
'override',
'params',
'get',
'set',
'add',
'remove',
'operator',
'true',
'false',
'implicit',
'explicit',
'interface',
'enum',
'null',
'async',
'await',
'fixed',
'sizeof',
'stackalloc',
'unsafe',
'nameof',
'when'
],
namespaceFollows: ['namespace', 'using'],
parenFollows: ['if', 'for', 'while', 'switch', 'foreach', 'using', 'catch', 'when'],
operators: [
'=',
'??',
'||',
'&&',
'|',
'^',
'&',
'==',
'!=',
'<=',
'>=',
'<<',
'+',
'-',
'*',
'/',
'%',
'!',
'~',
'++',
'--',
'+=',
'-=',
'*=',
'/=',
'%=',
'&=',
'|=',
'^=',
'<<=',
'>>=',
'>>',
'=>'
],
symbols: /[=><!~?:&|+\-*\/\^%]+/,
// escape sequences
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
// The main tokenizer for our languages
tokenizer: {
root: [
// identifiers and keywords
[
/\@?[a-zA-Z_]\w*/,
{
cases: {
'@namespaceFollows': {
token: 'keyword.$0',
next: '@namespace'
},
'@keywords': {
token: 'keyword.$0',
next: '@qualified'
},
'@default': { token: 'identifier', next: '@qualified' }
}
}
],
// whitespace
{ include: '@whitespace' },
// delimiters and operators
[
/}/,
{
cases: {
'$S2==interpolatedstring': {
token: 'string.quote',
next: '@pop'
},
'$S2==litinterpstring': {
token: 'string.quote',
next: '@pop'
},
'@default': '@brackets'
}
}
],
[/[{}()\[\]]/, '@brackets'],
[/[<>](?!@symbols)/, '@brackets'],
[
/@symbols/,
{
cases: {
'@operators': 'delimiter',
'@default': ''
}
}
],
// numbers
[/[0-9_]*\.[0-9_]+([eE][\-+]?\d+)?[fFdD]?/, 'number.float'],
[/0[xX][0-9a-fA-F_]+/, 'number.hex'],
[/0[bB][01_]+/, 'number.hex'],
[/[0-9_]+/, 'number'],
// delimiter: after number because of .\d floats
[/[;,.]/, 'delimiter'],
// strings
[/"([^"\\]|\\.)*$/, 'string.invalid'],
[/"/, { token: 'string.quote', next: '@string' }],
[/\$\@"/, { token: 'string.quote', next: '@litinterpstring' }],
[/\@"/, { token: 'string.quote', next: '@litstring' }],
[/\$"/, { token: 'string.quote', next: '@interpolatedstring' }],
// characters
[/'[^\\']'/, 'string'],
[/(')(@escapes)(')/, ['string', 'string.escape', 'string']],
[/'/, 'string.invalid']
],
qualified: [
[
/[a-zA-Z_][\w]*/,
{
cases: {
'@keywords': { token: 'keyword.$0' },
'@default': 'identifier'
}
}
],
[/\./, 'delimiter'],
['', '', '@pop']
],
namespace: [
{ include: '@whitespace' },
[/[A-Z]\w*/, 'namespace'],
[/[\.=]/, 'delimiter'],
['', '', '@pop']
],
comment: [
[/[^\/*]+/, 'comment'],
// [/\/\*/, 'comment', '@push' ], // no nested comments :-(
['\\*/', 'comment', '@pop'],
[/[\/*]/, 'comment']
],
string: [
[/[^\\"]+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/"/, { token: 'string.quote', next: '@pop' }]
],
litstring: [
[/[^"]+/, 'string'],
[/""/, 'string.escape'],
[/"/, { token: 'string.quote', next: '@pop' }]
],
litinterpstring: [
[/[^"{]+/, 'string'],
[/""/, 'string.escape'],
[/{{/, 'string.escape'],
[/}}/, 'string.escape'],
[/{/, { token: 'string.quote', next: 'root.litinterpstring' }],
[/"/, { token: 'string.quote', next: '@pop' }]
],
interpolatedstring: [
[/[^\\"{]+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/{{/, 'string.escape'],
[/}}/, 'string.escape'],
[/{/, { token: 'string.quote', next: 'root.interpolatedstring' }],
[/"/, { token: 'string.quote', next: '@pop' }]
],
whitespace: [
[/^[ \t\v\f]*#((r)|(load))(?=\s)/, 'directive.csx'],
[/^[ \t\v\f]*#\w.*$/, 'namespace.cpp'],
[/[ \t\v\f\r\n]+/, ''],
[/\/\*/, 'comment', '@comment'],
[/\/\/.*$/, 'comment']
]
}
};
});

@ -0,0 +1,60 @@
/*---------------------------------------------------------------------------------------------
* 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/csp/csp',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
brackets: [],
autoClosingPairs: [],
surroundingPairs: []
};
exports.language = {
// Set defaultToken to invalid to see what you do not tokenize yet
// defaultToken: 'invalid',
keywords: [],
typeKeywords: [],
tokenPostfix: '.csp',
operators: [],
symbols: /[=><!~?:&|+\-*\/\^%]+/,
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
tokenizer: {
root: [
[/child-src/, 'string.quote'],
[/connect-src/, 'string.quote'],
[/default-src/, 'string.quote'],
[/font-src/, 'string.quote'],
[/frame-src/, 'string.quote'],
[/img-src/, 'string.quote'],
[/manifest-src/, 'string.quote'],
[/media-src/, 'string.quote'],
[/object-src/, 'string.quote'],
[/script-src/, 'string.quote'],
[/style-src/, 'string.quote'],
[/worker-src/, 'string.quote'],
[/base-uri/, 'string.quote'],
[/plugin-types/, 'string.quote'],
[/sandbox/, 'string.quote'],
[/disown-opener/, 'string.quote'],
[/form-action/, 'string.quote'],
[/frame-ancestors/, 'string.quote'],
[/report-uri/, 'string.quote'],
[/report-to/, 'string.quote'],
[/upgrade-insecure-requests/, 'string.quote'],
[/block-all-mixed-content/, 'string.quote'],
[/require-sri-for/, 'string.quote'],
[/reflected-xss/, 'string.quote'],
[/referrer/, 'string.quote'],
[/policy-uri/, 'string.quote'],
[/'self'/, 'string.quote'],
[/'unsafe-inline'/, 'string.quote'],
[/'unsafe-eval'/, 'string.quote'],
[/'strict-dynamic'/, 'string.quote'],
[/'unsafe-hashed-attributes'/, 'string.quote']
]
}
};
});

@ -0,0 +1,185 @@
/*---------------------------------------------------------------------------------------------
* 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/css/css',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
wordPattern: /(#?-?\d*\.\d\w*%?)|((::|[@#.!:])?[\w-?]+%?)|::|[@#.!:]/g,
comments: {
blockComment: ['/*', '*/']
},
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}', notIn: ['string', 'comment'] },
{ open: '[', close: ']', notIn: ['string', 'comment'] },
{ open: '(', close: ')', notIn: ['string', 'comment'] },
{ open: '"', close: '"', notIn: ['string', 'comment'] },
{ open: "'", close: "'", notIn: ['string', 'comment'] }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
folding: {
markers: {
start: new RegExp('^\\s*\\/\\*\\s*#region\\b\\s*(.*?)\\s*\\*\\/'),
end: new RegExp('^\\s*\\/\\*\\s*#endregion\\b.*\\*\\/')
}
}
};
exports.language = {
defaultToken: '',
tokenPostfix: '.css',
ws: '[ \t\n\r\f]*',
identifier: '-?-?([a-zA-Z]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))([\\w\\-]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))*',
brackets: [
{ open: '{', close: '}', token: 'delimiter.bracket' },
{ open: '[', close: ']', token: 'delimiter.bracket' },
{ open: '(', close: ')', token: 'delimiter.parenthesis' },
{ open: '<', close: '>', token: 'delimiter.angle' }
],
tokenizer: {
root: [{ include: '@selector' }],
selector: [
{ include: '@comments' },
{ include: '@import' },
{ include: '@strings' },
[
'[@](keyframes|-webkit-keyframes|-moz-keyframes|-o-keyframes)',
{ token: 'keyword', next: '@keyframedeclaration' }
],
['[@](page|content|font-face|-moz-document)', { token: 'keyword' }],
['[@](charset|namespace)', { token: 'keyword', next: '@declarationbody' }],
[
'(url-prefix)(\\()',
['attribute.value', { token: 'delimiter.parenthesis', next: '@urldeclaration' }]
],
[
'(url)(\\()',
['attribute.value', { token: 'delimiter.parenthesis', next: '@urldeclaration' }]
],
{ include: '@selectorname' },
['[\\*]', 'tag'],
['[>\\+,]', 'delimiter'],
['\\[', { token: 'delimiter.bracket', next: '@selectorattribute' }],
['{', { token: 'delimiter.bracket', next: '@selectorbody' }]
],
selectorbody: [
{ include: '@comments' },
['[*_]?@identifier@ws:(?=(\\s|\\d|[^{;}]*[;}]))', 'attribute.name', '@rulevalue'],
['}', { token: 'delimiter.bracket', next: '@pop' }]
],
selectorname: [
['(\\.|#(?=[^{])|%|(@identifier)|:)+', 'tag'] // selector (.foo, div, ...)
],
selectorattribute: [{ include: '@term' }, [']', { token: 'delimiter.bracket', next: '@pop' }]],
term: [
{ include: '@comments' },
[
'(url-prefix)(\\()',
['attribute.value', { token: 'delimiter.parenthesis', next: '@urldeclaration' }]
],
[
'(url)(\\()',
['attribute.value', { token: 'delimiter.parenthesis', next: '@urldeclaration' }]
],
{ include: '@functioninvocation' },
{ include: '@numbers' },
{ include: '@name' },
{ include: '@strings' },
['([<>=\\+\\-\\*\\/\\^\\|\\~,])', 'delimiter'],
[',', 'delimiter']
],
rulevalue: [
{ include: '@comments' },
{ include: '@strings' },
{ include: '@term' },
['!important', 'keyword'],
[';', 'delimiter', '@pop'],
['(?=})', { token: '', next: '@pop' }] // missing semicolon
],
warndebug: [['[@](warn|debug)', { token: 'keyword', next: '@declarationbody' }]],
import: [['[@](import)', { token: 'keyword', next: '@declarationbody' }]],
urldeclaration: [
{ include: '@strings' },
['[^)\r\n]+', 'string'],
['\\)', { token: 'delimiter.parenthesis', next: '@pop' }]
],
parenthizedterm: [
{ include: '@term' },
['\\)', { token: 'delimiter.parenthesis', next: '@pop' }]
],
declarationbody: [
{ include: '@term' },
[';', 'delimiter', '@pop'],
['(?=})', { token: '', next: '@pop' }] // missing semicolon
],
comments: [
['\\/\\*', 'comment', '@comment'],
['\\/\\/+.*', 'comment']
],
comment: [
['\\*\\/', 'comment', '@pop'],
[/[^*/]+/, 'comment'],
[/./, 'comment']
],
name: [['@identifier', 'attribute.value']],
numbers: [
['-?(\\d*\\.)?\\d+([eE][\\-+]?\\d+)?', { token: 'attribute.value.number', next: '@units' }],
['#[0-9a-fA-F_]+(?!\\w)', 'attribute.value.hex']
],
units: [
[
'(em|ex|ch|rem|vmin|vmax|vw|vh|vm|cm|mm|in|px|pt|pc|deg|grad|rad|turn|s|ms|Hz|kHz|%)?',
'attribute.value.unit',
'@pop'
]
],
keyframedeclaration: [
['@identifier', 'attribute.value'],
['{', { token: 'delimiter.bracket', switchTo: '@keyframebody' }]
],
keyframebody: [
{ include: '@term' },
['{', { token: 'delimiter.bracket', next: '@selectorbody' }],
['}', { token: 'delimiter.bracket', next: '@pop' }]
],
functioninvocation: [
['@identifier\\(', { token: 'attribute.value', next: '@functionarguments' }]
],
functionarguments: [
['\\$@identifier@ws:', 'attribute.name'],
['[,]', 'delimiter'],
{ include: '@term' },
['\\)', { token: 'attribute.value', next: '@pop' }]
],
strings: [
['~?"', { token: 'string', next: '@stringenddoublequote' }],
["~?'", { token: 'string', next: '@stringendquote' }]
],
stringenddoublequote: [
['\\\\.', 'string'],
['"', { token: 'string', next: '@pop' }],
[/[^\\"]+/, 'string'],
['.', 'string']
],
stringendquote: [
['\\\\.', 'string'],
["'", { token: 'string', next: '@pop' }],
[/[^\\']+/, 'string'],
['.', 'string']
]
}
};
});

@ -0,0 +1,285 @@
/*---------------------------------------------------------------------------------------------
* 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/dart/dart',["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: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: "'", close: "'", notIn: ['string', 'comment'] },
{ open: '"', close: '"', notIn: ['string'] },
{ open: '`', close: '`', notIn: ['string', 'comment'] },
{ open: '/**', close: ' */', notIn: ['string'] }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '<', close: '>' },
{ open: "'", close: "'" },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: '`', close: '`' }
],
folding: {
markers: {
start: /^\s*\s*#?region\b/,
end: /^\s*\s*#?endregion\b/
}
}
};
exports.language = {
defaultToken: 'invalid',
tokenPostfix: '.dart',
keywords: [
'abstract',
'dynamic',
'implements',
'show',
'as',
'else',
'import',
'static',
'assert',
'enum',
'in',
'super',
'async',
'export',
'interface',
'switch',
'await',
'extends',
'is',
'sync',
'break',
'external',
'library',
'this',
'case',
'factory',
'mixin',
'throw',
'catch',
'false',
'new',
'true',
'class',
'final',
'null',
'try',
'const',
'finally',
'on',
'typedef',
'continue',
'for',
'operator',
'var',
'covariant',
'Function',
'part',
'void',
'default',
'get',
'rethrow',
'while',
'deferred',
'hide',
'return',
'with',
'do',
'if',
'set',
'yield'
],
typeKeywords: ['int', 'double', 'String', 'bool'],
operators: [
'+',
'-',
'*',
'/',
'~/',
'%',
'++',
'--',
'==',
'!=',
'>',
'<',
'>=',
'<=',
'=',
'-=',
'/=',
'%=',
'>>=',
'^=',
'+=',
'*=',
'~/=',
'<<=',
'&=',
'!=',
'||',
'&&',
'&',
'|',
'^',
'~',
'<<',
'>>',
'!',
'>>>',
'??',
'?',
':',
'|='
],
// we include these common regular expressions
symbols: /[=><!~?:&|+\-*\/\^%]+/,
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
digits: /\d+(_+\d+)*/,
octaldigits: /[0-7]+(_+[0-7]+)*/,
binarydigits: /[0-1]+(_+[0-1]+)*/,
hexdigits: /[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,
regexpctl: /[(){}\[\]\$\^|\-*+?\.]/,
regexpesc: /\\(?:[bBdDfnrstvwWn0\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})/,
// The main tokenizer for our languages
tokenizer: {
root: [[/[{}]/, 'delimiter.bracket'], { include: 'common' }],
common: [
// identifiers and keywords
[
/[a-z_$][\w$]*/,
{
cases: {
'@typeKeywords': 'type.identifier',
'@keywords': 'keyword',
'@default': 'identifier'
}
}
],
[/[A-Z_$][\w\$]*/, 'type.identifier'],
// [/[A-Z][\w\$]*/, 'identifier'],
// whitespace
{ include: '@whitespace' },
// regular expression: ensure it is terminated before beginning (otherwise it is an opeator)
[
/\/(?=([^\\\/]|\\.)+\/([gimsuy]*)(\s*)(\.|;|,|\)|\]|\}|$))/,
{ token: 'regexp', bracket: '@open', next: '@regexp' }
],
// @ annotations.
[/@[a-zA-Z]+/, 'annotation'],
// variable
// delimiters and operators
[/[()\[\]]/, '@brackets'],
[/[<>](?!@symbols)/, '@brackets'],
[/!(?=([^=]|$))/, 'delimiter'],
[
/@symbols/,
{
cases: {
'@operators': 'delimiter',
'@default': ''
}
}
],
// numbers
[/(@digits)[eE]([\-+]?(@digits))?/, 'number.float'],
[/(@digits)\.(@digits)([eE][\-+]?(@digits))?/, 'number.float'],
[/0[xX](@hexdigits)n?/, 'number.hex'],
[/0[oO]?(@octaldigits)n?/, 'number.octal'],
[/0[bB](@binarydigits)n?/, 'number.binary'],
[/(@digits)n?/, 'number'],
// delimiter: after number because of .\d floats
[/[;,.]/, 'delimiter'],
// strings
[/"([^"\\]|\\.)*$/, 'string.invalid'],
[/'([^'\\]|\\.)*$/, 'string.invalid'],
[/"/, 'string', '@string_double'],
[/'/, 'string', '@string_single']
// [/[a-zA-Z]+/, "variable"]
],
whitespace: [
[/[ \t\r\n]+/, ''],
[/\/\*\*(?!\/)/, 'comment.doc', '@jsdoc'],
[/\/\*/, 'comment', '@comment'],
[/\/\/\/.*$/, 'comment.doc'],
[/\/\/.*$/, 'comment']
],
comment: [
[/[^\/*]+/, 'comment'],
[/\*\//, 'comment', '@pop'],
[/[\/*]/, 'comment']
],
jsdoc: [
[/[^\/*]+/, 'comment.doc'],
[/\*\//, 'comment.doc', '@pop'],
[/[\/*]/, 'comment.doc']
],
// We match regular expression quite precisely
regexp: [
[
/(\{)(\d+(?:,\d*)?)(\})/,
['regexp.escape.control', 'regexp.escape.control', 'regexp.escape.control']
],
[
/(\[)(\^?)(?=(?:[^\]\\\/]|\\.)+)/,
['regexp.escape.control', { token: 'regexp.escape.control', next: '@regexrange' }]
],
[/(\()(\?:|\?=|\?!)/, ['regexp.escape.control', 'regexp.escape.control']],
[/[()]/, 'regexp.escape.control'],
[/@regexpctl/, 'regexp.escape.control'],
[/[^\\\/]/, 'regexp'],
[/@regexpesc/, 'regexp.escape'],
[/\\\./, 'regexp.invalid'],
[/(\/)([gimsuy]*)/, [{ token: 'regexp', bracket: '@close', next: '@pop' }, 'keyword.other']]
],
regexrange: [
[/-/, 'regexp.escape.control'],
[/\^/, 'regexp.invalid'],
[/@regexpesc/, 'regexp.escape'],
[/[^\]]/, 'regexp'],
[
/\]/,
{
token: 'regexp.escape.control',
next: '@pop',
bracket: '@close'
}
]
],
string_double: [
[/[^\\"\$]+/, 'string'],
[/[^\\"]+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/"/, 'string', '@pop'],
[/\$\w+/, 'identifier']
],
string_single: [
[/[^\\'\$]+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/'/, 'string', '@pop'],
[/\$\w+/, 'identifier']
]
}
};
});

@ -0,0 +1,135 @@
/*---------------------------------------------------------------------------------------------
* 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/dockerfile/dockerfile',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
]
};
exports.language = {
defaultToken: '',
tokenPostfix: '.dockerfile',
variable: /\${?[\w]+}?/,
tokenizer: {
root: [
{ include: '@whitespace' },
{ include: '@comment' },
[/(ONBUILD)(\s+)/, ['keyword', '']],
[/(ENV)(\s+)([\w]+)/, ['keyword', '', { token: 'variable', next: '@arguments' }]],
[
/(FROM|MAINTAINER|RUN|EXPOSE|ENV|ADD|ARG|VOLUME|LABEL|USER|WORKDIR|COPY|CMD|STOPSIGNAL|SHELL|HEALTHCHECK|ENTRYPOINT)/,
{ token: 'keyword', next: '@arguments' }
]
],
arguments: [
{ include: '@whitespace' },
{ include: '@strings' },
[
/(@variable)/,
{
cases: {
'@eos': { token: 'variable', next: '@popall' },
'@default': 'variable'
}
}
],
[
/\\/,
{
cases: {
'@eos': '',
'@default': ''
}
}
],
[
/./,
{
cases: {
'@eos': { token: '', next: '@popall' },
'@default': ''
}
}
]
],
// Deal with white space, including comments
whitespace: [
[
/\s+/,
{
cases: {
'@eos': { token: '', next: '@popall' },
'@default': ''
}
}
]
],
comment: [[/(^#.*$)/, 'comment', '@popall']],
// Recognize strings, including those broken across lines with \ (but not without)
strings: [
[/\\'$/, '', '@popall'],
[/\\'/, ''],
[/'$/, 'string', '@popall'],
[/'/, 'string', '@stringBody'],
[/"$/, 'string', '@popall'],
[/"/, 'string', '@dblStringBody']
],
stringBody: [
[
/[^\\\$']/,
{
cases: {
'@eos': { token: 'string', next: '@popall' },
'@default': 'string'
}
}
],
[/\\./, 'string.escape'],
[/'$/, 'string', '@popall'],
[/'/, 'string', '@pop'],
[/(@variable)/, 'variable'],
[/\\$/, 'string'],
[/$/, 'string', '@popall']
],
dblStringBody: [
[
/[^\\\$"]/,
{
cases: {
'@eos': { token: 'string', next: '@popall' },
'@default': 'string'
}
}
],
[/\\./, 'string.escape'],
[/"$/, 'string', '@popall'],
[/"/, 'string', '@pop'],
[/(@variable)/, 'variable'],
[/\\$/, 'string'],
[/$/, 'string', '@popall']
]
}
};
});

@ -0,0 +1,462 @@
/*---------------------------------------------------------------------------------------------
* 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/ecl/ecl',["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: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: "'", close: "'", notIn: ['string', 'comment'] },
{ open: '"', close: '"', notIn: ['string', 'comment'] }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '<', close: '>' },
{ open: "'", close: "'" },
{ open: '"', close: '"' }
]
};
exports.language = {
defaultToken: '',
tokenPostfix: '.ecl',
ignoreCase: true,
brackets: [
{ open: '{', close: '}', token: 'delimiter.curly' },
{ open: '[', close: ']', token: 'delimiter.square' },
{ open: '(', close: ')', token: 'delimiter.parenthesis' },
{ open: '<', close: '>', token: 'delimiter.angle' }
],
pounds: [
'append',
'break',
'declare',
'demangle',
'end',
'for',
'getdatatype',
'if',
'inmodule',
'loop',
'mangle',
'onwarning',
'option',
'set',
'stored',
'uniquename'
].join('|'),
keywords: [
'__compressed__',
'after',
'all',
'and',
'any',
'as',
'atmost',
'before',
'beginc',
'best',
'between',
'case',
'cluster',
'compressed',
'compression',
'const',
'counter',
'csv',
'default',
'descend',
'embed',
'encoding',
'encrypt',
'end',
'endc',
'endembed',
'endmacro',
'enum',
'escape',
'except',
'exclusive',
'expire',
'export',
'extend',
'fail',
'few',
'fileposition',
'first',
'flat',
'forward',
'from',
'full',
'function',
'functionmacro',
'group',
'grouped',
'heading',
'hole',
'ifblock',
'import',
'in',
'inner',
'interface',
'internal',
'joined',
'keep',
'keyed',
'last',
'left',
'limit',
'linkcounted',
'literal',
'little_endian',
'load',
'local',
'locale',
'lookup',
'lzw',
'macro',
'many',
'maxcount',
'maxlength',
'min skew',
'module',
'mofn',
'multiple',
'named',
'namespace',
'nocase',
'noroot',
'noscan',
'nosort',
'not',
'noxpath',
'of',
'onfail',
'only',
'opt',
'or',
'outer',
'overwrite',
'packed',
'partition',
'penalty',
'physicallength',
'pipe',
'prefetch',
'quote',
'record',
'repeat',
'retry',
'return',
'right',
'right1',
'right2',
'rows',
'rowset',
'scan',
'scope',
'self',
'separator',
'service',
'shared',
'skew',
'skip',
'smart',
'soapaction',
'sql',
'stable',
'store',
'terminator',
'thor',
'threshold',
'timelimit',
'timeout',
'token',
'transform',
'trim',
'type',
'unicodeorder',
'unordered',
'unsorted',
'unstable',
'update',
'use',
'validate',
'virtual',
'whole',
'width',
'wild',
'within',
'wnotrim',
'xml',
'xpath'
],
functions: [
'abs',
'acos',
'aggregate',
'allnodes',
'apply',
'ascii',
'asin',
'assert',
'asstring',
'atan',
'atan2',
'ave',
'build',
'buildindex',
'case',
'catch',
'choose',
'choosen',
'choosesets',
'clustersize',
'combine',
'correlation',
'cos',
'cosh',
'count',
'covariance',
'cron',
'dataset',
'dedup',
'define',
'denormalize',
'dictionary',
'distribute',
'distributed',
'distribution',
'ebcdic',
'enth',
'error',
'evaluate',
'event',
'eventextra',
'eventname',
'exists',
'exp',
'fail',
'failcode',
'failmessage',
'fetch',
'fromunicode',
'fromxml',
'getenv',
'getisvalid',
'global',
'graph',
'group',
'hash',
'hash32',
'hash64',
'hashcrc',
'hashmd5',
'having',
'httpcall',
'httpheader',
'if',
'iff',
'index',
'intformat',
'isvalid',
'iterate',
'join',
'keydiff',
'keypatch',
'keyunicode',
'length',
'library',
'limit',
'ln',
'loadxml',
'local',
'log',
'loop',
'map',
'matched',
'matchlength',
'matchposition',
'matchtext',
'matchunicode',
'max',
'merge',
'mergejoin',
'min',
'nofold',
'nolocal',
'nonempty',
'normalize',
'nothor',
'notify',
'output',
'parallel',
'parse',
'pipe',
'power',
'preload',
'process',
'project',
'pull',
'random',
'range',
'rank',
'ranked',
'realformat',
'recordof',
'regexfind',
'regexreplace',
'regroup',
'rejected',
'rollup',
'round',
'roundup',
'row',
'rowdiff',
'sample',
'sequential',
'set',
'sin',
'sinh',
'sizeof',
'soapcall',
'sort',
'sorted',
'sqrt',
'stepped',
'stored',
'sum',
'table',
'tan',
'tanh',
'thisnode',
'topn',
'tounicode',
'toxml',
'transfer',
'transform',
'trim',
'truncate',
'typeof',
'ungroup',
'unicodeorder',
'variance',
'wait',
'which',
'workunit',
'xmldecode',
'xmlencode',
'xmltext',
'xmlunicode'
],
typesint: ['integer', 'unsigned'].join('|'),
typesnum: ['data', 'qstring', 'string', 'unicode', 'utf8', 'varstring', 'varunicode'],
typesone: [
'ascii',
'big_endian',
'boolean',
'data',
'decimal',
'ebcdic',
'grouped',
'integer',
'linkcounted',
'pattern',
'qstring',
'real',
'record',
'rule',
'set of',
'streamed',
'string',
'token',
'udecimal',
'unicode',
'unsigned',
'utf8',
'varstring',
'varunicode'
].join('|'),
operators: ['+', '-', '/', ':=', '<', '<>', '=', '>', '\\', 'and', 'in', 'not', 'or'],
symbols: /[=><!~?:&|+\-*\/\^%]+/,
// escape sequences
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
// The main tokenizer for our languages
tokenizer: {
root: [
[/@typesint[4|8]/, 'type'],
[/#(@pounds)/, 'type'],
[/@typesone/, 'type'],
[
/[a-zA-Z_$][\w-$]*/,
{
cases: {
'@functions': 'keyword.function',
'@keywords': 'keyword',
'@operators': 'operator'
}
}
],
// whitespace
{ include: '@whitespace' },
[/[{}()\[\]]/, '@brackets'],
[/[<>](?!@symbols)/, '@brackets'],
[
/@symbols/,
{
cases: {
'@operators': 'delimiter',
'@default': ''
}
}
],
// numbers
[/[0-9_]*\.[0-9_]+([eE][\-+]?\d+)?/, 'number.float'],
[/0[xX][0-9a-fA-F_]+/, 'number.hex'],
[/0[bB][01]+/, 'number.hex'],
[/[0-9_]+/, 'number'],
// delimiter: after number because of .\d floats
[/[;,.]/, 'delimiter'],
// strings
[/"([^"\\]|\\.)*$/, 'string.invalid'],
[/"/, 'string', '@string'],
// characters
[/'[^\\']'/, 'string'],
[/(')(@escapes)(')/, ['string', 'string.escape', 'string']],
[/'/, 'string.invalid']
],
whitespace: [
[/[ \t\v\f\r\n]+/, ''],
[/\/\*/, 'comment', '@comment'],
[/\/\/.*$/, 'comment']
],
comment: [
[/[^\/*]+/, 'comment'],
[/\*\//, 'comment', '@pop'],
[/[\/*]/, 'comment']
],
string: [
[/[^\\']+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/'/, 'string', '@pop']
]
}
};
});

@ -0,0 +1,562 @@
/*---------------------------------------------------------------------------------------------
* 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/elixir/elixir',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
comments: {
lineComment: '#'
},
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: "'", close: "'" },
{ open: '"', close: '"' }
],
autoClosingPairs: [
{ open: "'", close: "'", notIn: ['string', 'comment'] },
{ open: '"', close: '"', notIn: ['comment'] },
{ open: '"""', close: '"""' },
{ open: '`', close: '`', notIn: ['string', 'comment'] },
{ open: '(', close: ')' },
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '<<', close: '>>' }
],
indentationRules: {
increaseIndentPattern: /^\s*(after|else|catch|rescue|fn|[^#]*(do|<\-|\->|\{|\[|\=))\s*$/,
decreaseIndentPattern: /^\s*((\}|\])\s*$|(after|else|catch|rescue|end)\b)/
}
};
/**
* A Monarch lexer for the Elixir language.
*
* References:
*
* * Monarch documentation - https://microsoft.github.io/monaco-editor/monarch.html
* * Elixir lexer - https://github.com/elixir-makeup/makeup_elixir/blob/master/lib/makeup/lexers/elixir_lexer.ex
* * TextMate lexer (elixir-tmbundle) - https://github.com/elixir-editors/elixir-tmbundle/blob/master/Syntaxes/Elixir.tmLanguage
* * TextMate lexer (vscode-elixir-ls) - https://github.com/elixir-lsp/vscode-elixir-ls/blob/master/syntaxes/elixir.json
*/
exports.language = {
defaultToken: 'source',
tokenPostfix: '.elixir',
brackets: [
{ open: '[', close: ']', token: 'delimiter.square' },
{ open: '(', close: ')', token: 'delimiter.parenthesis' },
{ open: '{', close: '}', token: 'delimiter.curly' },
{ open: '<<', close: '>>', token: 'delimiter.angle.special' }
],
// Below are lists/regexps to which we reference later.
declarationKeywords: [
'def',
'defp',
'defn',
'defnp',
'defguard',
'defguardp',
'defmacro',
'defmacrop',
'defdelegate',
'defcallback',
'defmacrocallback',
'defmodule',
'defprotocol',
'defexception',
'defimpl',
'defstruct'
],
operatorKeywords: ['and', 'in', 'not', 'or', 'when'],
namespaceKeywords: ['alias', 'import', 'require', 'use'],
otherKeywords: [
'after',
'case',
'catch',
'cond',
'do',
'else',
'end',
'fn',
'for',
'if',
'quote',
'raise',
'receive',
'rescue',
'super',
'throw',
'try',
'unless',
'unquote_splicing',
'unquote',
'with'
],
constants: ['true', 'false', 'nil'],
nameBuiltin: ['__MODULE__', '__DIR__', '__ENV__', '__CALLER__', '__STACKTRACE__'],
// Matches any of the operator names:
// <<< >>> ||| &&& ^^^ ~~~ === !== ~>> <~> |~> <|> == != <= >= && || \\ <> ++ -- |> =~ -> <- ~> <~ :: .. = < > + - * / | . ^ & !
operator: /-[->]?|!={0,2}|\*|\/|\\\\|&{1,3}|\.\.?|\^(?:\^\^)?|\+\+?|<(?:-|<<|=|>|\|>|~>?)?|=~|={1,3}|>(?:=|>>)?|\|~>|\|>|\|{1,3}|~>>?|~~~|::/,
// See https://hexdocs.pm/elixir/syntax-reference.html#variables
variableName: /[a-z_][a-zA-Z0-9_]*[?!]?/,
// See https://hexdocs.pm/elixir/syntax-reference.html#atoms
atomName: /[a-zA-Z_][a-zA-Z0-9_@]*[?!]?|@specialAtomName|@operator/,
specialAtomName: /\.\.\.|<<>>|%\{\}|%|\{\}/,
aliasPart: /[A-Z][a-zA-Z0-9_]*/,
moduleName: /@aliasPart(?:\.@aliasPart)*/,
// Sigil pairs are: """ """, ''' ''', " ", ' ', / /, | |, < >, { }, [ ], ( )
sigilSymmetricDelimiter: /"""|'''|"|'|\/|\|/,
sigilStartDelimiter: /@sigilSymmetricDelimiter|<|\{|\[|\(/,
sigilEndDelimiter: /@sigilSymmetricDelimiter|>|\}|\]|\)/,
decimal: /\d(?:_?\d)*/,
hex: /[0-9a-fA-F](_?[0-9a-fA-F])*/,
octal: /[0-7](_?[0-7])*/,
binary: /[01](_?[01])*/,
// See https://hexdocs.pm/elixir/master/String.html#module-escape-characters
escape: /\\u[0-9a-fA-F]{4}|\\x[0-9a-fA-F]{2}|\\./,
// The keys below correspond to tokenizer states.
// We start from the root state and match against its rules
// until we explicitly transition into another state.
// The `include` simply brings in all operations from the given state
// and is useful for improving readability.
tokenizer: {
root: [
{ include: '@whitespace' },
{ include: '@comments' },
// Keywords start as either an identifier or a string,
// but end with a : so it's important to match this first.
{ include: '@keywordsShorthand' },
{ include: '@numbers' },
{ include: '@identifiers' },
{ include: '@strings' },
{ include: '@atoms' },
{ include: '@sigils' },
{ include: '@attributes' },
{ include: '@symbols' }
],
// Whitespace
whitespace: [[/\s+/, 'white']],
// Comments
comments: [[/(#)(.*)/, ['comment.punctuation', 'comment']]],
// Keyword list shorthand
keywordsShorthand: [
[/(@atomName)(:)/, ['constant', 'constant.punctuation']],
// Use positive look-ahead to ensure the string is followed by :
// and should be considered a keyword.
[
/"(?=([^"]|#\{.*?\}|\\")*":)/,
{ token: 'constant.delimiter', next: '@doubleQuotedStringKeyword' }
],
[
/'(?=([^']|#\{.*?\}|\\')*':)/,
{ token: 'constant.delimiter', next: '@singleQuotedStringKeyword' }
]
],
doubleQuotedStringKeyword: [
[/":/, { token: 'constant.delimiter', next: '@pop' }],
{ include: '@stringConstantContentInterpol' }
],
singleQuotedStringKeyword: [
[/':/, { token: 'constant.delimiter', next: '@pop' }],
{ include: '@stringConstantContentInterpol' }
],
// Numbers
numbers: [
[/0b@binary/, 'number.binary'],
[/0o@octal/, 'number.octal'],
[/0x@hex/, 'number.hex'],
[/@decimal\.@decimal([eE]-?@decimal)?/, 'number.float'],
[/@decimal/, 'number']
],
// Identifiers
identifiers: [
// Tokenize identifier name in function-like definitions.
// Note: given `def a + b, do: nil`, `a` is not a function name,
// so we use negative look-ahead to ensure there's no operator.
[
/\b(defp?|defnp?|defmacrop?|defguardp?|defdelegate)(\s+)(@variableName)(?!\s+@operator)/,
[
'keyword.declaration',
'white',
{
cases: {
unquote: 'keyword',
'@default': 'function'
}
}
]
],
// Tokenize function calls
[
// In-scope call - an identifier followed by ( or .(
/(@variableName)(?=\s*\.?\s*\()/,
{
cases: {
// Tokenize as keyword in cases like `if(..., do: ..., else: ...)`
'@declarationKeywords': 'keyword.declaration',
'@namespaceKeywords': 'keyword',
'@otherKeywords': 'keyword',
'@default': 'function.call'
}
}
],
[
// Referencing function in a module
/(@moduleName)(\s*)(\.)(\s*)(@variableName)/,
['type.identifier', 'white', 'operator', 'white', 'function.call']
],
[
// Referencing function in an Erlang module
/(:)(@atomName)(\s*)(\.)(\s*)(@variableName)/,
['constant.punctuation', 'constant', 'white', 'operator', 'white', 'function.call']
],
[
// Piping into a function (tokenized separately as it may not have parentheses)
/(\|>)(\s*)(@variableName)/,
[
'operator',
'white',
{
cases: {
'@otherKeywords': 'keyword',
'@default': 'function.call'
}
}
]
],
[
// Function reference passed to another function
/(&)(\s*)(@variableName)/,
['operator', 'white', 'function.call']
],
// Language keywords, builtins, constants and variables
[
/@variableName/,
{
cases: {
'@declarationKeywords': 'keyword.declaration',
'@operatorKeywords': 'keyword.operator',
'@namespaceKeywords': 'keyword',
'@otherKeywords': 'keyword',
'@constants': 'constant.language',
'@nameBuiltin': 'variable.language',
'_.*': 'comment.unused',
'@default': 'identifier'
}
}
],
// Module names
[/@moduleName/, 'type.identifier']
],
// Strings
strings: [
[/"""/, { token: 'string.delimiter', next: '@doubleQuotedHeredoc' }],
[/'''/, { token: 'string.delimiter', next: '@singleQuotedHeredoc' }],
[/"/, { token: 'string.delimiter', next: '@doubleQuotedString' }],
[/'/, { token: 'string.delimiter', next: '@singleQuotedString' }]
],
doubleQuotedHeredoc: [
[/"""/, { token: 'string.delimiter', next: '@pop' }],
{ include: '@stringContentInterpol' }
],
singleQuotedHeredoc: [
[/'''/, { token: 'string.delimiter', next: '@pop' }],
{ include: '@stringContentInterpol' }
],
doubleQuotedString: [
[/"/, { token: 'string.delimiter', next: '@pop' }],
{ include: '@stringContentInterpol' }
],
singleQuotedString: [
[/'/, { token: 'string.delimiter', next: '@pop' }],
{ include: '@stringContentInterpol' }
],
// Atoms
atoms: [
[/(:)(@atomName)/, ['constant.punctuation', 'constant']],
[/:"/, { token: 'constant.delimiter', next: '@doubleQuotedStringAtom' }],
[/:'/, { token: 'constant.delimiter', next: '@singleQuotedStringAtom' }]
],
doubleQuotedStringAtom: [
[/"/, { token: 'constant.delimiter', next: '@pop' }],
{ include: '@stringConstantContentInterpol' }
],
singleQuotedStringAtom: [
[/'/, { token: 'constant.delimiter', next: '@pop' }],
{ include: '@stringConstantContentInterpol' }
],
// Sigils
// See https://elixir-lang.org/getting-started/sigils.html
// Sigils allow for typing values using their textual representation.
// All sigils start with ~ followed by a letter indicating sigil type
// and then a delimiter pair enclosing the textual representation.
// Optional modifiers are allowed after the closing delimiter.
// For instance a regular expressions can be written as:
// ~r/foo|bar/ ~r{foo|bar} ~r/foo|bar/g
//
// In general lowercase sigils allow for interpolation
// and escaped characters, whereas uppercase sigils don't
//
// During tokenization we want to distinguish some
// specific sigil types, namely string and regexp,
// so that they cen be themed separately.
//
// To reasonably handle all those combinations we leverage
// dot-separated states, so if we transition to @sigilStart.interpol.s.{.}
// then "sigilStart.interpol.s" state will match and also all
// the individual dot-separated parameters can be accessed.
sigils: [
[/~[a-z]@sigilStartDelimiter/, { token: '@rematch', next: '@sigil.interpol' }],
[/~[A-Z]@sigilStartDelimiter/, { token: '@rematch', next: '@sigil.noInterpol' }]
],
sigil: [
[/~([a-zA-Z])\{/, { token: '@rematch', switchTo: '@sigilStart.$S2.$1.{.}' }],
[/~([a-zA-Z])\[/, { token: '@rematch', switchTo: '@sigilStart.$S2.$1.[.]' }],
[/~([a-zA-Z])\(/, { token: '@rematch', switchTo: '@sigilStart.$S2.$1.(.)' }],
[/~([a-zA-Z])\</, { token: '@rematch', switchTo: '@sigilStart.$S2.$1.<.>' }],
[
/~([a-zA-Z])(@sigilSymmetricDelimiter)/,
{ token: '@rematch', switchTo: '@sigilStart.$S2.$1.$2.$2' }
]
],
// The definitions below expect states to be of the form:
//
// sigilStart.<interpol-or-noInterpol>.<sigil-letter>.<start-delimiter>.<end-delimiter>
// sigilContinue.<interpol-or-noInterpol>.<sigil-letter>.<start-delimiter>.<end-delimiter>
//
// The sigilStart state is used only to properly classify the token (as string/regex/sigil)
// and immediately switches to the sigilContinue sate, which handles the actual content
// and waits for the corresponding end delimiter.
'sigilStart.interpol.s': [
[
/~s@sigilStartDelimiter/,
{
token: 'string.delimiter',
switchTo: '@sigilContinue.$S2.$S3.$S4.$S5'
}
]
],
'sigilContinue.interpol.s': [
[
/(@sigilEndDelimiter)[a-zA-Z]*/,
{
cases: {
'$1==$S5': { token: 'string.delimiter', next: '@pop' },
'@default': 'string'
}
}
],
{ include: '@stringContentInterpol' }
],
'sigilStart.noInterpol.S': [
[
/~S@sigilStartDelimiter/,
{
token: 'string.delimiter',
switchTo: '@sigilContinue.$S2.$S3.$S4.$S5'
}
]
],
'sigilContinue.noInterpol.S': [
// Ignore escaped sigil end
[/(^|[^\\])\\@sigilEndDelimiter/, 'string'],
[
/(@sigilEndDelimiter)[a-zA-Z]*/,
{
cases: {
'$1==$S5': { token: 'string.delimiter', next: '@pop' },
'@default': 'string'
}
}
],
{ include: '@stringContent' }
],
'sigilStart.interpol.r': [
[
/~r@sigilStartDelimiter/,
{
token: 'regexp.delimiter',
switchTo: '@sigilContinue.$S2.$S3.$S4.$S5'
}
]
],
'sigilContinue.interpol.r': [
[
/(@sigilEndDelimiter)[a-zA-Z]*/,
{
cases: {
'$1==$S5': { token: 'regexp.delimiter', next: '@pop' },
'@default': 'regexp'
}
}
],
{ include: '@regexpContentInterpol' }
],
'sigilStart.noInterpol.R': [
[
/~R@sigilStartDelimiter/,
{
token: 'regexp.delimiter',
switchTo: '@sigilContinue.$S2.$S3.$S4.$S5'
}
]
],
'sigilContinue.noInterpol.R': [
// Ignore escaped sigil end
[/(^|[^\\])\\@sigilEndDelimiter/, 'regexp'],
[
/(@sigilEndDelimiter)[a-zA-Z]*/,
{
cases: {
'$1==$S5': { token: 'regexp.delimiter', next: '@pop' },
'@default': 'regexp'
}
}
],
{ include: '@regexpContent' }
],
// Fallback to the generic sigil by default
'sigilStart.interpol': [
[
/~([a-zA-Z])@sigilStartDelimiter/,
{
token: 'sigil.delimiter',
switchTo: '@sigilContinue.$S2.$S3.$S4.$S5'
}
]
],
'sigilContinue.interpol': [
[
/(@sigilEndDelimiter)[a-zA-Z]*/,
{
cases: {
'$1==$S5': { token: 'sigil.delimiter', next: '@pop' },
'@default': 'sigil'
}
}
],
{ include: '@sigilContentInterpol' }
],
'sigilStart.noInterpol': [
[
/~([a-zA-Z])@sigilStartDelimiter/,
{
token: 'sigil.delimiter',
switchTo: '@sigilContinue.$S2.$S3.$S4.$S5'
}
]
],
'sigilContinue.noInterpol': [
// Ignore escaped sigil end
[/(^|[^\\])\\@sigilEndDelimiter/, 'sigil'],
[
/(@sigilEndDelimiter)[a-zA-Z]*/,
{
cases: {
'$1==$S5': { token: 'sigil.delimiter', next: '@pop' },
'@default': 'sigil'
}
}
],
{ include: '@sigilContent' }
],
// Attributes
attributes: [
// Module @doc* attributes - tokenized as comments
[
/\@(module|type)?doc (~[sS])?"""/,
{
token: 'comment.block.documentation',
next: '@doubleQuotedHeredocDocstring'
}
],
[
/\@(module|type)?doc (~[sS])?"/,
{
token: 'comment.block.documentation',
next: '@doubleQuotedStringDocstring'
}
],
[/\@(module|type)?doc false/, 'comment.block.documentation'],
// Module attributes
[/\@(@variableName)/, 'variable']
],
doubleQuotedHeredocDocstring: [
[/"""/, { token: 'comment.block.documentation', next: '@pop' }],
{ include: '@docstringContent' }
],
doubleQuotedStringDocstring: [
[/"/, { token: 'comment.block.documentation', next: '@pop' }],
{ include: '@docstringContent' }
],
// Operators, punctuation, brackets
symbols: [
// Code point operator (either with regular character ?a or an escaped one ?\n)
[/\?(\\.|[^\\\s])/, 'number.constant'],
// Anonymous function arguments
[/&\d+/, 'operator'],
// Bitshift operators (must go before delimiters, so that << >> don't match first)
[/<<<|>>>/, 'operator'],
// Delimiter pairs
[/[()\[\]\{\}]|<<|>>/, '@brackets'],
// Triple dot is a valid name (must go before operators, so that .. doesn't match instead)
[/\.\.\./, 'identifier'],
// Punctuation => (must go before operators, so it's not tokenized as = then >)
[/=>/, 'punctuation'],
// Operators
[/@operator/, 'operator'],
// Punctuation
[/[:;,.%]/, 'punctuation']
],
// Generic helpers
stringContentInterpol: [
{ include: '@interpolation' },
{ include: '@escapeChar' },
{ include: '@stringContent' }
],
stringContent: [[/./, 'string']],
stringConstantContentInterpol: [
{ include: '@interpolation' },
{ include: '@escapeChar' },
{ include: '@stringConstantContent' }
],
stringConstantContent: [[/./, 'constant']],
regexpContentInterpol: [
{ include: '@interpolation' },
{ include: '@escapeChar' },
{ include: '@regexpContent' }
],
regexpContent: [
// # may be a regular regexp char, so we use a heuristic
// assuming a # surrounded by whitespace is actually a comment.
[/(\s)(#)(\s.*)$/, ['white', 'comment.punctuation', 'comment']],
[/./, 'regexp']
],
sigilContentInterpol: [
{ include: '@interpolation' },
{ include: '@escapeChar' },
{ include: '@sigilContent' }
],
sigilContent: [[/./, 'sigil']],
docstringContent: [[/./, 'comment.block.documentation']],
escapeChar: [[/@escape/, 'constant.character.escape']],
interpolation: [[/#{/, { token: 'delimiter.bracket.embed', next: '@interpolationContinue' }]],
interpolationContinue: [
[/}/, { token: 'delimiter.bracket.embed', next: '@pop' }],
// Interpolation brackets may contain arbitrary code,
// so we simply match against all the root rules,
// until we reach interpolation end (the above matches).
{ include: '@root' }
]
}
};
});

@ -0,0 +1,149 @@
/*---------------------------------------------------------------------------------------------
* 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/flow9/flow9',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
comments: {
blockComment: ['/*', '*/'],
lineComment: '//'
},
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}', notIn: ['string'] },
{ open: '[', close: ']', notIn: ['string'] },
{ open: '(', close: ')', notIn: ['string'] },
{ open: '"', close: '"', notIn: ['string'] },
{ open: "'", close: "'", notIn: ['string'] }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" },
{ open: '<', close: '>' }
]
};
exports.language = {
defaultToken: '',
tokenPostfix: '.flow',
keywords: [
'import',
'require',
'export',
'forbid',
'native',
'if',
'else',
'cast',
'unsafe',
'switch',
'default'
],
types: [
'io',
'mutable',
'bool',
'int',
'double',
'string',
'flow',
'void',
'ref',
'true',
'false',
'with'
],
operators: [
'=',
'>',
'<',
'<=',
'>=',
'==',
'!',
'!=',
':=',
'::=',
'&&',
'||',
'+',
'-',
'*',
'/',
'@',
'&',
'%',
':',
'->',
'\\',
'$',
'??',
'^'
],
symbols: /[@$=><!~?:&|+\-*\\\/\^%]+/,
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
// The main tokenizer for our languages
tokenizer: {
root: [
// identifiers and keywords
[
/[a-zA-Z_]\w*/,
{
cases: {
'@keywords': 'keyword',
'@types': 'type',
'@default': 'identifier'
}
}
],
// whitespace
{ include: '@whitespace' },
// delimiters and operators
[/[{}()\[\]]/, 'delimiter'],
[/[<>](?!@symbols)/, 'delimiter'],
[
/@symbols/,
{
cases: {
'@operators': 'delimiter',
'@default': ''
}
}
],
// numbers
[/((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)/, 'number'],
// delimiter: after number because of .\d floats
[/[;,.]/, 'delimiter'],
// strings
[/"([^"\\]|\\.)*$/, 'string.invalid'],
[/"/, 'string', '@string']
],
whitespace: [
[/[ \t\r\n]+/, ''],
[/\/\*/, 'comment', '@comment'],
[/\/\/.*$/, 'comment']
],
comment: [
[/[^\/*]+/, 'comment'],
[/\*\//, 'comment', '@pop'],
[/[\/*]/, 'comment']
],
string: [
[/[^\\"]+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/"/, 'string', '@pop']
]
}
};
});

@ -0,0 +1,223 @@
/*---------------------------------------------------------------------------------------------
* 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/fsharp/fsharp',["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: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
folding: {
markers: {
start: new RegExp('^\\s*//\\s*#region\\b|^\\s*\\(\\*\\s*#region(.*)\\*\\)'),
end: new RegExp('^\\s*//\\s*#endregion\\b|^\\s*\\(\\*\\s*#endregion\\s*\\*\\)')
}
}
};
exports.language = {
defaultToken: '',
tokenPostfix: '.fs',
keywords: [
'abstract',
'and',
'atomic',
'as',
'assert',
'asr',
'base',
'begin',
'break',
'checked',
'component',
'const',
'constraint',
'constructor',
'continue',
'class',
'default',
'delegate',
'do',
'done',
'downcast',
'downto',
'elif',
'else',
'end',
'exception',
'eager',
'event',
'external',
'extern',
'false',
'finally',
'for',
'fun',
'function',
'fixed',
'functor',
'global',
'if',
'in',
'include',
'inherit',
'inline',
'interface',
'internal',
'land',
'lor',
'lsl',
'lsr',
'lxor',
'lazy',
'let',
'match',
'member',
'mod',
'module',
'mutable',
'namespace',
'method',
'mixin',
'new',
'not',
'null',
'of',
'open',
'or',
'object',
'override',
'private',
'parallel',
'process',
'protected',
'pure',
'public',
'rec',
'return',
'static',
'sealed',
'struct',
'sig',
'then',
'to',
'true',
'tailcall',
'trait',
'try',
'type',
'upcast',
'use',
'val',
'void',
'virtual',
'volatile',
'when',
'while',
'with',
'yield'
],
// we include these common regular expressions
symbols: /[=><!~?:&|+\-*\^%;\.,\/]+/,
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
integersuffix: /[uU]?[yslnLI]?/,
floatsuffix: /[fFmM]?/,
// The main tokenizer for our languages
tokenizer: {
root: [
// identifiers and keywords
[
/[a-zA-Z_]\w*/,
{
cases: {
'@keywords': { token: 'keyword.$0' },
'@default': 'identifier'
}
}
],
// whitespace
{ include: '@whitespace' },
// [< attributes >].
[/\[<.*>\]/, 'annotation'],
// Preprocessor directive
[/^#(if|else|endif)/, 'keyword'],
// delimiters and operators
[/[{}()\[\]]/, '@brackets'],
[/[<>](?!@symbols)/, '@brackets'],
[/@symbols/, 'delimiter'],
// numbers
[/\d*\d+[eE]([\-+]?\d+)?(@floatsuffix)/, 'number.float'],
[/\d*\.\d+([eE][\-+]?\d+)?(@floatsuffix)/, 'number.float'],
[/0x[0-9a-fA-F]+LF/, 'number.float'],
[/0x[0-9a-fA-F]+(@integersuffix)/, 'number.hex'],
[/0b[0-1]+(@integersuffix)/, 'number.bin'],
[/\d+(@integersuffix)/, 'number'],
// delimiter: after number because of .\d floats
[/[;,.]/, 'delimiter'],
// strings
[/"([^"\\]|\\.)*$/, 'string.invalid'],
[/"""/, 'string', '@string."""'],
[/"/, 'string', '@string."'],
// literal string
[/\@"/, { token: 'string.quote', next: '@litstring' }],
// characters
[/'[^\\']'B?/, 'string'],
[/(')(@escapes)(')/, ['string', 'string.escape', 'string']],
[/'/, 'string.invalid']
],
whitespace: [
[/[ \t\r\n]+/, ''],
[/\(\*(?!\))/, 'comment', '@comment'],
[/\/\/.*$/, 'comment']
],
comment: [
[/[^*(]+/, 'comment'],
[/\*\)/, 'comment', '@pop'],
[/\*/, 'comment'],
[/\(\*\)/, 'comment'],
[/\(/, 'comment']
],
string: [
[/[^\\"]+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[
/("""|"B?)/,
{
cases: {
'$#==$S2': { token: 'string', next: '@pop' },
'@default': 'string'
}
}
]
],
litstring: [
[/[^"]+/, 'string'],
[/""/, 'string.escape'],
[/"/, { token: 'string.quote', next: '@pop' }]
]
}
};
});

@ -0,0 +1,224 @@
/*---------------------------------------------------------------------------------------------
* 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/go/go',["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: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '`', close: '`', notIn: ['string'] },
{ open: '"', close: '"', notIn: ['string'] },
{ open: "'", close: "'", notIn: ['string', 'comment'] }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '`', close: '`' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
]
};
exports.language = {
defaultToken: '',
tokenPostfix: '.go',
keywords: [
'break',
'case',
'chan',
'const',
'continue',
'default',
'defer',
'else',
'fallthrough',
'for',
'func',
'go',
'goto',
'if',
'import',
'interface',
'map',
'package',
'range',
'return',
'select',
'struct',
'switch',
'type',
'var',
'bool',
'true',
'false',
'uint8',
'uint16',
'uint32',
'uint64',
'int8',
'int16',
'int32',
'int64',
'float32',
'float64',
'complex64',
'complex128',
'byte',
'rune',
'uint',
'int',
'uintptr',
'string',
'nil'
],
operators: [
'+',
'-',
'*',
'/',
'%',
'&',
'|',
'^',
'<<',
'>>',
'&^',
'+=',
'-=',
'*=',
'/=',
'%=',
'&=',
'|=',
'^=',
'<<=',
'>>=',
'&^=',
'&&',
'||',
'<-',
'++',
'--',
'==',
'<',
'>',
'=',
'!',
'!=',
'<=',
'>=',
':=',
'...',
'(',
')',
'',
']',
'{',
'}',
',',
';',
'.',
':'
],
// we include these common regular expressions
symbols: /[=><!~?:&|+\-*\/\^%]+/,
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
// The main tokenizer for our languages
tokenizer: {
root: [
// identifiers and keywords
[
/[a-zA-Z_]\w*/,
{
cases: {
'@keywords': { token: 'keyword.$0' },
'@default': 'identifier'
}
}
],
// whitespace
{ include: '@whitespace' },
// [[ attributes ]].
[/\[\[.*\]\]/, 'annotation'],
// Preprocessor directive
[/^\s*#\w+/, 'keyword'],
// delimiters and operators
[/[{}()\[\]]/, '@brackets'],
[/[<>](?!@symbols)/, '@brackets'],
[
/@symbols/,
{
cases: {
'@operators': 'delimiter',
'@default': ''
}
}
],
// numbers
[/\d*\d+[eE]([\-+]?\d+)?/, 'number.float'],
[/\d*\.\d+([eE][\-+]?\d+)?/, 'number.float'],
[/0[xX][0-9a-fA-F']*[0-9a-fA-F]/, 'number.hex'],
[/0[0-7']*[0-7]/, 'number.octal'],
[/0[bB][0-1']*[0-1]/, 'number.binary'],
[/\d[\d']*/, 'number'],
[/\d/, 'number'],
// delimiter: after number because of .\d floats
[/[;,.]/, 'delimiter'],
// strings
[/"([^"\\]|\\.)*$/, 'string.invalid'],
[/"/, 'string', '@string'],
[/`/, 'string', '@rawstring'],
// characters
[/'[^\\']'/, 'string'],
[/(')(@escapes)(')/, ['string', 'string.escape', 'string']],
[/'/, 'string.invalid']
],
whitespace: [
[/[ \t\r\n]+/, ''],
[/\/\*\*(?!\/)/, 'comment.doc', '@doccomment'],
[/\/\*/, 'comment', '@comment'],
[/\/\/.*$/, 'comment']
],
comment: [
[/[^\/*]+/, 'comment'],
// [/\/\*/, 'comment', '@push' ], // nested comment not allowed :-(
// [/\/\*/, 'comment.invalid' ], // this breaks block comments in the shape of /* //*/
[/\*\//, 'comment', '@pop'],
[/[\/*]/, 'comment']
],
//Identical copy of comment above, except for the addition of .doc
doccomment: [
[/[^\/*]+/, 'comment.doc'],
// [/\/\*/, 'comment.doc', '@push' ], // nested comment not allowed :-(
[/\/\*/, 'comment.doc.invalid'],
[/\*\//, 'comment.doc', '@pop'],
[/[\/*]/, 'comment.doc']
],
string: [
[/[^\\"]+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/"/, 'string', '@pop']
],
rawstring: [
[/[^\`]/, 'string'],
[/`/, 'string', '@pop']
]
}
};
});

@ -0,0 +1,157 @@
/*---------------------------------------------------------------------------------------------
* 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/graphql/graphql',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
comments: {
lineComment: '#'
},
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"""', close: '"""', notIn: ['string', 'comment'] },
{ open: '"', close: '"', notIn: ['string', 'comment'] }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"""', close: '"""' },
{ open: '"', close: '"' }
],
folding: {
offSide: true
}
};
exports.language = {
// Set defaultToken to invalid to see what you do not tokenize yet
defaultToken: 'invalid',
tokenPostfix: '.gql',
keywords: [
'null',
'true',
'false',
'query',
'mutation',
'subscription',
'extend',
'schema',
'directive',
'scalar',
'type',
'interface',
'union',
'enum',
'input',
'implements',
'fragment',
'on'
],
typeKeywords: ['Int', 'Float', 'String', 'Boolean', 'ID'],
directiveLocations: [
'SCHEMA',
'SCALAR',
'OBJECT',
'FIELD_DEFINITION',
'ARGUMENT_DEFINITION',
'INTERFACE',
'UNION',
'ENUM',
'ENUM_VALUE',
'INPUT_OBJECT',
'INPUT_FIELD_DEFINITION',
'QUERY',
'MUTATION',
'SUBSCRIPTION',
'FIELD',
'FRAGMENT_DEFINITION',
'FRAGMENT_SPREAD',
'INLINE_FRAGMENT',
'VARIABLE_DEFINITION'
],
operators: ['=', '!', '?', ':', '&', '|'],
// we include these common regular expressions
symbols: /[=!?:&|]+/,
// https://facebook.github.io/graphql/draft/#sec-String-Value
escapes: /\\(?:["\\\/bfnrt]|u[0-9A-Fa-f]{4})/,
// The main tokenizer for our languages
tokenizer: {
root: [
// fields and argument names
[
/[a-z_][\w$]*/,
{
cases: {
'@keywords': 'keyword',
'@default': 'key.identifier'
}
}
],
// identify typed input variables
[
/[$][\w$]*/,
{
cases: {
'@keywords': 'keyword',
'@default': 'argument.identifier'
}
}
],
// to show class names nicely
[
/[A-Z][\w\$]*/,
{
cases: {
'@typeKeywords': 'keyword',
'@default': 'type.identifier'
}
}
],
// whitespace
{ include: '@whitespace' },
// delimiters and operators
[/[{}()\[\]]/, '@brackets'],
[/@symbols/, { cases: { '@operators': 'operator', '@default': '' } }],
// @ annotations.
// As an example, we emit a debugging log message on these tokens.
// Note: message are supressed during the first load -- change some lines to see them.
[/@\s*[a-zA-Z_\$][\w\$]*/, { token: 'annotation', log: 'annotation token: $0' }],
// numbers
[/\d*\.\d+([eE][\-+]?\d+)?/, 'number.float'],
[/0[xX][0-9a-fA-F]+/, 'number.hex'],
[/\d+/, 'number'],
// delimiter: after number because of .\d floats
[/[;,.]/, 'delimiter'],
[/"""/, { token: 'string', next: '@mlstring', nextEmbedded: 'markdown' }],
// strings
[/"([^"\\]|\\.)*$/, 'string.invalid'],
[/"/, { token: 'string.quote', bracket: '@open', next: '@string' }]
],
mlstring: [
[/[^"]+/, 'string'],
['"""', { token: 'string', next: '@pop', nextEmbedded: '@pop' }]
],
string: [
[/[^\\"]+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/"/, { token: 'string.quote', bracket: '@close', next: '@pop' }]
],
whitespace: [
[/[ \t\r\n]+/, ''],
[/#.*$/, 'comment']
]
}
};
});

@ -0,0 +1,399 @@
/*---------------------------------------------------------------------------------------------
* 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/handlebars/handlebars',["require", "exports", "../fillers/monaco-editor-core"], function (require, exports, monaco_editor_core_1) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
var EMPTY_ELEMENTS = [
'area',
'base',
'br',
'col',
'embed',
'hr',
'img',
'input',
'keygen',
'link',
'menuitem',
'meta',
'param',
'source',
'track',
'wbr'
];
exports.conf = {
wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,
comments: {
blockComment: ['{{!--', '--}}']
},
brackets: [
['<!--', '-->'],
['<', '>'],
['{{', '}}'],
['{', '}'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
surroundingPairs: [
{ open: '<', close: '>' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
onEnterRules: [
{
beforeText: new RegExp("<(?!(?:" + EMPTY_ELEMENTS.join('|') + "))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$", 'i'),
afterText: /^<\/(\w[\w\d]*)\s*>$/i,
action: {
indentAction: monaco_editor_core_1.languages.IndentAction.IndentOutdent
}
},
{
beforeText: new RegExp("<(?!(?:" + EMPTY_ELEMENTS.join('|') + "))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$", 'i'),
action: { indentAction: monaco_editor_core_1.languages.IndentAction.Indent }
}
]
};
exports.language = {
defaultToken: '',
tokenPostfix: '',
// ignoreCase: true,
// The main tokenizer for our languages
tokenizer: {
root: [
[/\{\{!--/, 'comment.block.start.handlebars', '@commentBlock'],
[/\{\{!/, 'comment.start.handlebars', '@comment'],
[/\{\{/, { token: '@rematch', switchTo: '@handlebarsInSimpleState.root' }],
[/<!DOCTYPE/, 'metatag.html', '@doctype'],
[/<!--/, 'comment.html', '@commentHtml'],
[/(<)(\w+)(\/>)/, ['delimiter.html', 'tag.html', 'delimiter.html']],
[/(<)(script)/, ['delimiter.html', { token: 'tag.html', next: '@script' }]],
[/(<)(style)/, ['delimiter.html', { token: 'tag.html', next: '@style' }]],
[/(<)([:\w]+)/, ['delimiter.html', { token: 'tag.html', next: '@otherTag' }]],
[/(<\/)(\w+)/, ['delimiter.html', { token: 'tag.html', next: '@otherTag' }]],
[/</, 'delimiter.html'],
[/\{/, 'delimiter.html'],
[/[^<{]+/] // text
],
doctype: [
[
/\{\{/,
{
token: '@rematch',
switchTo: '@handlebarsInSimpleState.comment'
}
],
[/[^>]+/, 'metatag.content.html'],
[/>/, 'metatag.html', '@pop']
],
comment: [
[/\}\}/, 'comment.end.handlebars', '@pop'],
[/./, 'comment.content.handlebars']
],
commentBlock: [
[/--\}\}/, 'comment.block.end.handlebars', '@pop'],
[/./, 'comment.content.handlebars']
],
commentHtml: [
[
/\{\{/,
{
token: '@rematch',
switchTo: '@handlebarsInSimpleState.comment'
}
],
[/-->/, 'comment.html', '@pop'],
[/[^-]+/, 'comment.content.html'],
[/./, 'comment.content.html']
],
otherTag: [
[
/\{\{/,
{
token: '@rematch',
switchTo: '@handlebarsInSimpleState.otherTag'
}
],
[/\/?>/, 'delimiter.html', '@pop'],
[/"([^"]*)"/, 'attribute.value'],
[/'([^']*)'/, 'attribute.value'],
[/[\w\-]+/, 'attribute.name'],
[/=/, 'delimiter'],
[/[ \t\r\n]+/] // whitespace
],
// -- BEGIN <script> tags handling
// After <script
script: [
[
/\{\{/,
{
token: '@rematch',
switchTo: '@handlebarsInSimpleState.script'
}
],
[/type/, 'attribute.name', '@scriptAfterType'],
[/"([^"]*)"/, 'attribute.value'],
[/'([^']*)'/, 'attribute.value'],
[/[\w\-]+/, 'attribute.name'],
[/=/, 'delimiter'],
[
/>/,
{
token: 'delimiter.html',
next: '@scriptEmbedded.text/javascript',
nextEmbedded: 'text/javascript'
}
],
[/[ \t\r\n]+/],
[
/(<\/)(script\s*)(>)/,
['delimiter.html', 'tag.html', { token: 'delimiter.html', next: '@pop' }]
]
],
// After <script ... type
scriptAfterType: [
[
/\{\{/,
{
token: '@rematch',
switchTo: '@handlebarsInSimpleState.scriptAfterType'
}
],
[/=/, 'delimiter', '@scriptAfterTypeEquals'],
[
/>/,
{
token: 'delimiter.html',
next: '@scriptEmbedded.text/javascript',
nextEmbedded: 'text/javascript'
}
],
[/[ \t\r\n]+/],
[/<\/script\s*>/, { token: '@rematch', next: '@pop' }]
],
// After <script ... type =
scriptAfterTypeEquals: [
[
/\{\{/,
{
token: '@rematch',
switchTo: '@handlebarsInSimpleState.scriptAfterTypeEquals'
}
],
[
/"([^"]*)"/,
{
token: 'attribute.value',
switchTo: '@scriptWithCustomType.$1'
}
],
[
/'([^']*)'/,
{
token: 'attribute.value',
switchTo: '@scriptWithCustomType.$1'
}
],
[
/>/,
{
token: 'delimiter.html',
next: '@scriptEmbedded.text/javascript',
nextEmbedded: 'text/javascript'
}
],
[/[ \t\r\n]+/],
[/<\/script\s*>/, { token: '@rematch', next: '@pop' }]
],
// After <script ... type = $S2
scriptWithCustomType: [
[
/\{\{/,
{
token: '@rematch',
switchTo: '@handlebarsInSimpleState.scriptWithCustomType.$S2'
}
],
[
/>/,
{
token: 'delimiter.html',
next: '@scriptEmbedded.$S2',
nextEmbedded: '$S2'
}
],
[/"([^"]*)"/, 'attribute.value'],
[/'([^']*)'/, 'attribute.value'],
[/[\w\-]+/, 'attribute.name'],
[/=/, 'delimiter'],
[/[ \t\r\n]+/],
[/<\/script\s*>/, { token: '@rematch', next: '@pop' }]
],
scriptEmbedded: [
[
/\{\{/,
{
token: '@rematch',
switchTo: '@handlebarsInEmbeddedState.scriptEmbedded.$S2',
nextEmbedded: '@pop'
}
],
[/<\/script/, { token: '@rematch', next: '@pop', nextEmbedded: '@pop' }]
],
// -- END <script> tags handling
// -- BEGIN <style> tags handling
// After <style
style: [
[
/\{\{/,
{
token: '@rematch',
switchTo: '@handlebarsInSimpleState.style'
}
],
[/type/, 'attribute.name', '@styleAfterType'],
[/"([^"]*)"/, 'attribute.value'],
[/'([^']*)'/, 'attribute.value'],
[/[\w\-]+/, 'attribute.name'],
[/=/, 'delimiter'],
[
/>/,
{
token: 'delimiter.html',
next: '@styleEmbedded.text/css',
nextEmbedded: 'text/css'
}
],
[/[ \t\r\n]+/],
[
/(<\/)(style\s*)(>)/,
['delimiter.html', 'tag.html', { token: 'delimiter.html', next: '@pop' }]
]
],
// After <style ... type
styleAfterType: [
[
/\{\{/,
{
token: '@rematch',
switchTo: '@handlebarsInSimpleState.styleAfterType'
}
],
[/=/, 'delimiter', '@styleAfterTypeEquals'],
[
/>/,
{
token: 'delimiter.html',
next: '@styleEmbedded.text/css',
nextEmbedded: 'text/css'
}
],
[/[ \t\r\n]+/],
[/<\/style\s*>/, { token: '@rematch', next: '@pop' }]
],
// After <style ... type =
styleAfterTypeEquals: [
[
/\{\{/,
{
token: '@rematch',
switchTo: '@handlebarsInSimpleState.styleAfterTypeEquals'
}
],
[
/"([^"]*)"/,
{
token: 'attribute.value',
switchTo: '@styleWithCustomType.$1'
}
],
[
/'([^']*)'/,
{
token: 'attribute.value',
switchTo: '@styleWithCustomType.$1'
}
],
[
/>/,
{
token: 'delimiter.html',
next: '@styleEmbedded.text/css',
nextEmbedded: 'text/css'
}
],
[/[ \t\r\n]+/],
[/<\/style\s*>/, { token: '@rematch', next: '@pop' }]
],
// After <style ... type = $S2
styleWithCustomType: [
[
/\{\{/,
{
token: '@rematch',
switchTo: '@handlebarsInSimpleState.styleWithCustomType.$S2'
}
],
[
/>/,
{
token: 'delimiter.html',
next: '@styleEmbedded.$S2',
nextEmbedded: '$S2'
}
],
[/"([^"]*)"/, 'attribute.value'],
[/'([^']*)'/, 'attribute.value'],
[/[\w\-]+/, 'attribute.name'],
[/=/, 'delimiter'],
[/[ \t\r\n]+/],
[/<\/style\s*>/, { token: '@rematch', next: '@pop' }]
],
styleEmbedded: [
[
/\{\{/,
{
token: '@rematch',
switchTo: '@handlebarsInEmbeddedState.styleEmbedded.$S2',
nextEmbedded: '@pop'
}
],
[/<\/style/, { token: '@rematch', next: '@pop', nextEmbedded: '@pop' }]
],
// -- END <style> tags handling
handlebarsInSimpleState: [
[/\{\{\{?/, 'delimiter.handlebars'],
[/\}\}\}?/, { token: 'delimiter.handlebars', switchTo: '@$S2.$S3' }],
{ include: 'handlebarsRoot' }
],
handlebarsInEmbeddedState: [
[/\{\{\{?/, 'delimiter.handlebars'],
[
/\}\}\}?/,
{
token: 'delimiter.handlebars',
switchTo: '@$S2.$S3',
nextEmbedded: '$S3'
}
],
{ include: 'handlebarsRoot' }
],
handlebarsRoot: [
[/"[^"]*"/, 'string.handlebars'],
[/[#/][^\s}]+/, 'keyword.helper.handlebars'],
[/else\b/, 'keyword.helper.handlebars'],
[/[\s]+/],
[/[^}]/, 'variable.parameter.handlebars']
]
}
};
});

@ -0,0 +1,187 @@
/*---------------------------------------------------------------------------------------------
* 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/hcl/hcl',["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: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"', notIn: ['string'] }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' }
]
};
exports.language = {
defaultToken: '',
tokenPostfix: '.hcl',
keywords: [
'var',
'local',
'path',
'for_each',
'any',
'string',
'number',
'bool',
'true',
'false',
'null',
'if ',
'else ',
'endif ',
'for ',
'in',
'endfor'
],
operators: [
'=',
'>=',
'<=',
'==',
'!=',
'+',
'-',
'*',
'/',
'%',
'&&',
'||',
'!',
'<',
'>',
'?',
'...',
':'
],
symbols: /[=><!~?:&|+\-*\/\^%]+/,
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
terraformFunctions: /(abs|ceil|floor|log|max|min|pow|signum|chomp|format|formatlist|indent|join|lower|regex|regexall|replace|split|strrev|substr|title|trimspace|upper|chunklist|coalesce|coalescelist|compact|concat|contains|distinct|element|flatten|index|keys|length|list|lookup|map|matchkeys|merge|range|reverse|setintersection|setproduct|setunion|slice|sort|transpose|values|zipmap|base64decode|base64encode|base64gzip|csvdecode|jsondecode|jsonencode|urlencode|yamldecode|yamlencode|abspath|dirname|pathexpand|basename|file|fileexists|fileset|filebase64|templatefile|formatdate|timeadd|timestamp|base64sha256|base64sha512|bcrypt|filebase64sha256|filebase64sha512|filemd5|filemd1|filesha256|filesha512|md5|rsadecrypt|sha1|sha256|sha512|uuid|uuidv5|cidrhost|cidrnetmask|cidrsubnet|tobool|tolist|tomap|tonumber|toset|tostring)/,
terraformMainBlocks: /(module|data|terraform|resource|provider|variable|output|locals)/,
tokenizer: {
root: [
// highlight main blocks
[
/^@terraformMainBlocks([ \t]*)([\w-]+|"[\w-]+"|)([ \t]*)([\w-]+|"[\w-]+"|)([ \t]*)(\{)/,
['type', '', 'string', '', 'string', '', '@brackets']
],
// highlight all the remaining blocks
[
/(\w+[ \t]+)([ \t]*)([\w-]+|"[\w-]+"|)([ \t]*)([\w-]+|"[\w-]+"|)([ \t]*)(\{)/,
['identifier', '', 'string', '', 'string', '', '@brackets']
],
// highlight block
[
/(\w+[ \t]+)([ \t]*)([\w-]+|"[\w-]+"|)([ \t]*)([\w-]+|"[\w-]+"|)(=)(\{)/,
['identifier', '', 'string', '', 'operator', '', '@brackets']
],
// terraform general highlight - shared with expressions
{ include: '@terraform' }
],
terraform: [
// highlight terraform functions
[/@terraformFunctions(\()/, ['type', '@brackets']],
// all other words are variables or keywords
[
/[a-zA-Z_]\w*-*/,
{
cases: {
'@keywords': { token: 'keyword.$0' },
'@default': 'variable'
}
}
],
{ include: '@whitespace' },
{ include: '@heredoc' },
// delimiters and operators
[/[{}()\[\]]/, '@brackets'],
[/[<>](?!@symbols)/, '@brackets'],
[
/@symbols/,
{
cases: {
'@operators': 'operator',
'@default': ''
}
}
],
// numbers
[/\d*\d+[eE]([\-+]?\d+)?/, 'number.float'],
[/\d*\.\d+([eE][\-+]?\d+)?/, 'number.float'],
[/\d[\d']*/, 'number'],
[/\d/, 'number'],
[/[;,.]/, 'delimiter'],
// strings
[/"/, 'string', '@string'],
[/'/, 'invalid']
],
heredoc: [
[/<<[-]*\s*["]?([\w\-]+)["]?/, { token: 'string.heredoc.delimiter', next: '@heredocBody.$1' }]
],
heredocBody: [
[
/([\w\-]+)$/,
{
cases: {
'$1==$S2': [
{
token: 'string.heredoc.delimiter',
next: '@popall'
}
],
'@default': 'string.heredoc'
}
}
],
[/./, 'string.heredoc']
],
whitespace: [
[/[ \t\r\n]+/, ''],
[/\/\*/, 'comment', '@comment'],
[/\/\/.*$/, 'comment'],
[/#.*$/, 'comment']
],
comment: [
[/[^\/*]+/, 'comment'],
[/\*\//, 'comment', '@pop'],
[/[\/*]/, 'comment']
],
string: [
[/\$\{/, { token: 'delimiter', next: '@stringExpression' }],
[/[^\\"\$]+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/"/, 'string', '@popall']
],
stringInsideExpression: [
[/[^\\"]+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/"/, 'string', '@pop']
],
stringExpression: [
[/\}/, { token: 'delimiter', next: '@pop' }],
[/"/, 'string', '@stringInsideExpression'],
{ include: '@terraform' }
]
}
};
});

@ -0,0 +1,310 @@
/*---------------------------------------------------------------------------------------------
* 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/html/html',["require", "exports", "../fillers/monaco-editor-core"], function (require, exports, monaco_editor_core_1) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
var EMPTY_ELEMENTS = [
'area',
'base',
'br',
'col',
'embed',
'hr',
'img',
'input',
'keygen',
'link',
'menuitem',
'meta',
'param',
'source',
'track',
'wbr'
];
exports.conf = {
wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,
comments: {
blockComment: ['<!--', '-->']
},
brackets: [
['<!--', '-->'],
['<', '>'],
['{', '}'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
surroundingPairs: [
{ open: '"', close: '"' },
{ open: "'", close: "'" },
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '<', close: '>' }
],
onEnterRules: [
{
beforeText: new RegExp("<(?!(?:" + EMPTY_ELEMENTS.join('|') + "))([_:\\w][_:\\w-.\\d]*)([^/>]*(?!/)>)[^<]*$", 'i'),
afterText: /^<\/([_:\w][_:\w-.\d]*)\s*>$/i,
action: {
indentAction: monaco_editor_core_1.languages.IndentAction.IndentOutdent
}
},
{
beforeText: new RegExp("<(?!(?:" + EMPTY_ELEMENTS.join('|') + "))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$", 'i'),
action: { indentAction: monaco_editor_core_1.languages.IndentAction.Indent }
}
],
folding: {
markers: {
start: new RegExp('^\\s*<!--\\s*#region\\b.*-->'),
end: new RegExp('^\\s*<!--\\s*#endregion\\b.*-->')
}
}
};
exports.language = {
defaultToken: '',
tokenPostfix: '.html',
ignoreCase: true,
// The main tokenizer for our languages
tokenizer: {
root: [
[/<!DOCTYPE/, 'metatag', '@doctype'],
[/<!--/, 'comment', '@comment'],
[/(<)((?:[\w\-]+:)?[\w\-]+)(\s*)(\/>)/, ['delimiter', 'tag', '', 'delimiter']],
[/(<)(script)/, ['delimiter', { token: 'tag', next: '@script' }]],
[/(<)(style)/, ['delimiter', { token: 'tag', next: '@style' }]],
[/(<)((?:[\w\-]+:)?[\w\-]+)/, ['delimiter', { token: 'tag', next: '@otherTag' }]],
[/(<\/)((?:[\w\-]+:)?[\w\-]+)/, ['delimiter', { token: 'tag', next: '@otherTag' }]],
[/</, 'delimiter'],
[/[^<]+/] // text
],
doctype: [
[/[^>]+/, 'metatag.content'],
[/>/, 'metatag', '@pop']
],
comment: [
[/-->/, 'comment', '@pop'],
[/[^-]+/, 'comment.content'],
[/./, 'comment.content']
],
otherTag: [
[/\/?>/, 'delimiter', '@pop'],
[/"([^"]*)"/, 'attribute.value'],
[/'([^']*)'/, 'attribute.value'],
[/[\w\-]+/, 'attribute.name'],
[/=/, 'delimiter'],
[/[ \t\r\n]+/] // whitespace
],
// -- BEGIN <script> tags handling
// After <script
script: [
[/type/, 'attribute.name', '@scriptAfterType'],
[/"([^"]*)"/, 'attribute.value'],
[/'([^']*)'/, 'attribute.value'],
[/[\w\-]+/, 'attribute.name'],
[/=/, 'delimiter'],
[
/>/,
{
token: 'delimiter',
next: '@scriptEmbedded',
nextEmbedded: 'text/javascript'
}
],
[/[ \t\r\n]+/],
[/(<\/)(script\s*)(>)/, ['delimiter', 'tag', { token: 'delimiter', next: '@pop' }]]
],
// After <script ... type
scriptAfterType: [
[/=/, 'delimiter', '@scriptAfterTypeEquals'],
[
/>/,
{
token: 'delimiter',
next: '@scriptEmbedded',
nextEmbedded: 'text/javascript'
}
],
[/[ \t\r\n]+/],
[/<\/script\s*>/, { token: '@rematch', next: '@pop' }]
],
// After <script ... type =
scriptAfterTypeEquals: [
[
/"([^"]*)"/,
{
token: 'attribute.value',
switchTo: '@scriptWithCustomType.$1'
}
],
[
/'([^']*)'/,
{
token: 'attribute.value',
switchTo: '@scriptWithCustomType.$1'
}
],
[
/>/,
{
token: 'delimiter',
next: '@scriptEmbedded',
nextEmbedded: 'text/javascript'
}
],
[/[ \t\r\n]+/],
[/<\/script\s*>/, { token: '@rematch', next: '@pop' }]
],
// After <script ... type = $S2
scriptWithCustomType: [
[
/>/,
{
token: 'delimiter',
next: '@scriptEmbedded.$S2',
nextEmbedded: '$S2'
}
],
[/"([^"]*)"/, 'attribute.value'],
[/'([^']*)'/, 'attribute.value'],
[/[\w\-]+/, 'attribute.name'],
[/=/, 'delimiter'],
[/[ \t\r\n]+/],
[/<\/script\s*>/, { token: '@rematch', next: '@pop' }]
],
scriptEmbedded: [
[/<\/script/, { token: '@rematch', next: '@pop', nextEmbedded: '@pop' }],
[/[^<]+/, '']
],
// -- END <script> tags handling
// -- BEGIN <style> tags handling
// After <style
style: [
[/type/, 'attribute.name', '@styleAfterType'],
[/"([^"]*)"/, 'attribute.value'],
[/'([^']*)'/, 'attribute.value'],
[/[\w\-]+/, 'attribute.name'],
[/=/, 'delimiter'],
[
/>/,
{
token: 'delimiter',
next: '@styleEmbedded',
nextEmbedded: 'text/css'
}
],
[/[ \t\r\n]+/],
[/(<\/)(style\s*)(>)/, ['delimiter', 'tag', { token: 'delimiter', next: '@pop' }]]
],
// After <style ... type
styleAfterType: [
[/=/, 'delimiter', '@styleAfterTypeEquals'],
[
/>/,
{
token: 'delimiter',
next: '@styleEmbedded',
nextEmbedded: 'text/css'
}
],
[/[ \t\r\n]+/],
[/<\/style\s*>/, { token: '@rematch', next: '@pop' }]
],
// After <style ... type =
styleAfterTypeEquals: [
[
/"([^"]*)"/,
{
token: 'attribute.value',
switchTo: '@styleWithCustomType.$1'
}
],
[
/'([^']*)'/,
{
token: 'attribute.value',
switchTo: '@styleWithCustomType.$1'
}
],
[
/>/,
{
token: 'delimiter',
next: '@styleEmbedded',
nextEmbedded: 'text/css'
}
],
[/[ \t\r\n]+/],
[/<\/style\s*>/, { token: '@rematch', next: '@pop' }]
],
// After <style ... type = $S2
styleWithCustomType: [
[
/>/,
{
token: 'delimiter',
next: '@styleEmbedded.$S2',
nextEmbedded: '$S2'
}
],
[/"([^"]*)"/, 'attribute.value'],
[/'([^']*)'/, 'attribute.value'],
[/[\w\-]+/, 'attribute.name'],
[/=/, 'delimiter'],
[/[ \t\r\n]+/],
[/<\/style\s*>/, { token: '@rematch', next: '@pop' }]
],
styleEmbedded: [
[/<\/style/, { token: '@rematch', next: '@pop', nextEmbedded: '@pop' }],
[/[^<]+/, '']
]
// -- END <style> tags handling
}
};
});
// TESTED WITH:
// <!DOCTYPE html>
// <html>
// <head>
// <title>Monarch Workbench</title>
// <meta http-equiv="X-UA-Compatible" content="IE=edge" />
// <!----
// -- -- -- a comment -- -- --
// ---->
// <style bah="bah">
// body { font-family: Consolas; } /* nice */
// </style>
// </head
// >
// a = "asd"
// <body>
// <br/>
// <div
// class
// =
// "test"
// >
// <script>
// function() {
// alert("hi </ script>"); // javascript
// };
// </script>
// <script
// bah="asdfg"
// type="text/css"
// >
// .bar { text-decoration: underline; }
// </script>
// </div>
// </body>
// </html>
;

@ -0,0 +1,76 @@
/*---------------------------------------------------------------------------------------------
* 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/ini/ini',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
comments: {
lineComment: '#'
},
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
]
};
exports.language = {
defaultToken: '',
tokenPostfix: '.ini',
// we include these common regular expressions
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
// The main tokenizer for our languages
tokenizer: {
root: [
// sections
[/^\[[^\]]*\]/, 'metatag'],
// keys
[/(^\w+)(\s*)(\=)/, ['key', '', 'delimiter']],
// whitespace
{ include: '@whitespace' },
// numbers
[/\d+/, 'number'],
// strings: recover on non-terminated strings
[/"([^"\\]|\\.)*$/, 'string.invalid'],
[/'([^'\\]|\\.)*$/, 'string.invalid'],
[/"/, 'string', '@string."'],
[/'/, 'string', "@string.'"]
],
whitespace: [
[/[ \t\r\n]+/, ''],
[/^\s*[#;].*$/, 'comment']
],
string: [
[/[^\\"']+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[
/["']/,
{
cases: {
'$#==$S2': { token: 'string', next: '@pop' },
'@default': 'string'
}
}
]
]
}
};
});

@ -0,0 +1,238 @@
/*---------------------------------------------------------------------------------------------
* 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/java/java',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
// the default separators except `@$`
wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,
comments: {
lineComment: '//',
blockComment: ['/*', '*/']
},
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" },
{ open: '<', close: '>' }
],
folding: {
markers: {
start: new RegExp('^\\s*//\\s*(?:(?:#?region\\b)|(?:<editor-fold\\b))'),
end: new RegExp('^\\s*//\\s*(?:(?:#?endregion\\b)|(?:</editor-fold>))')
}
}
};
exports.language = {
defaultToken: '',
tokenPostfix: '.java',
keywords: [
'abstract',
'continue',
'for',
'new',
'switch',
'assert',
'default',
'goto',
'package',
'synchronized',
'boolean',
'do',
'if',
'private',
'this',
'break',
'double',
'implements',
'protected',
'throw',
'byte',
'else',
'import',
'public',
'throws',
'case',
'enum',
'instanceof',
'return',
'transient',
'catch',
'extends',
'int',
'short',
'try',
'char',
'final',
'interface',
'static',
'void',
'class',
'finally',
'long',
'strictfp',
'volatile',
'const',
'float',
'native',
'super',
'while',
'true',
'false',
'yield',
'record',
'sealed',
'non-sealed',
'permits'
],
operators: [
'=',
'>',
'<',
'!',
'~',
'?',
':',
'==',
'<=',
'>=',
'!=',
'&&',
'||',
'++',
'--',
'+',
'-',
'*',
'/',
'&',
'|',
'^',
'%',
'<<',
'>>',
'>>>',
'+=',
'-=',
'*=',
'/=',
'&=',
'|=',
'^=',
'%=',
'<<=',
'>>=',
'>>>='
],
// we include these common regular expressions
symbols: /[=><!~?:&|+\-*\/\^%]+/,
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
digits: /\d+(_+\d+)*/,
octaldigits: /[0-7]+(_+[0-7]+)*/,
binarydigits: /[0-1]+(_+[0-1]+)*/,
hexdigits: /[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,
// The main tokenizer for our languages
tokenizer: {
root: [
// Special keyword with a dash
['non-sealed', 'keyword.non-sealed'],
// identifiers and keywords
[
/[a-zA-Z_$][\w$]*/,
{
cases: {
'@keywords': { token: 'keyword.$0' },
'@default': 'identifier'
}
}
],
// whitespace
{ include: '@whitespace' },
// delimiters and operators
[/[{}()\[\]]/, '@brackets'],
[/[<>](?!@symbols)/, '@brackets'],
[
/@symbols/,
{
cases: {
'@operators': 'delimiter',
'@default': ''
}
}
],
// @ annotations.
[/@\s*[a-zA-Z_\$][\w\$]*/, 'annotation'],
// numbers
[/(@digits)[eE]([\-+]?(@digits))?[fFdD]?/, 'number.float'],
[/(@digits)\.(@digits)([eE][\-+]?(@digits))?[fFdD]?/, 'number.float'],
[/0[xX](@hexdigits)[Ll]?/, 'number.hex'],
[/0(@octaldigits)[Ll]?/, 'number.octal'],
[/0[bB](@binarydigits)[Ll]?/, 'number.binary'],
[/(@digits)[fFdD]/, 'number.float'],
[/(@digits)[lL]?/, 'number'],
// delimiter: after number because of .\d floats
[/[;,.]/, 'delimiter'],
// strings
[/"([^"\\]|\\.)*$/, 'string.invalid'],
[/"""/, 'string', '@multistring'],
[/"/, 'string', '@string'],
// characters
[/'[^\\']'/, 'string'],
[/(')(@escapes)(')/, ['string', 'string.escape', 'string']],
[/'/, 'string.invalid']
],
whitespace: [
[/[ \t\r\n]+/, ''],
[/\/\*\*(?!\/)/, 'comment.doc', '@javadoc'],
[/\/\*/, 'comment', '@comment'],
[/\/\/.*$/, 'comment']
],
comment: [
[/[^\/*]+/, 'comment'],
// [/\/\*/, 'comment', '@push' ], // nested comment not allowed :-(
// [/\/\*/, 'comment.invalid' ], // this breaks block comments in the shape of /* //*/
[/\*\//, 'comment', '@pop'],
[/[\/*]/, 'comment']
],
//Identical copy of comment above, except for the addition of .doc
javadoc: [
[/[^\/*]+/, 'comment.doc'],
// [/\/\*/, 'comment.doc', '@push' ], // nested comment not allowed :-(
[/\/\*/, 'comment.doc.invalid'],
[/\*\//, 'comment.doc', '@pop'],
[/[\/*]/, 'comment.doc']
],
string: [
[/[^\\"]+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/"/, 'string', '@pop']
],
multistring: [
[/[^\\"]+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/"""/, 'string', '@pop'],
[/./, 'string']
]
}
};
});

@ -0,0 +1,412 @@
/*---------------------------------------------------------------------------------------------
* 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/typescript/typescript',["require", "exports", "../fillers/monaco-editor-core"], function (require, exports, monaco_editor_core_1) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,
comments: {
lineComment: '//',
blockComment: ['/*', '*/']
},
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
onEnterRules: [
{
// e.g. /** | */
beforeText: /^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/,
afterText: /^\s*\*\/$/,
action: {
indentAction: monaco_editor_core_1.languages.IndentAction.IndentOutdent,
appendText: ' * '
}
},
{
// e.g. /** ...|
beforeText: /^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/,
action: {
indentAction: monaco_editor_core_1.languages.IndentAction.None,
appendText: ' * '
}
},
{
// e.g. * ...|
beforeText: /^(\t|(\ \ ))*\ \*(\ ([^\*]|\*(?!\/))*)?$/,
action: {
indentAction: monaco_editor_core_1.languages.IndentAction.None,
appendText: '* '
}
},
{
// e.g. */|
beforeText: /^(\t|(\ \ ))*\ \*\/\s*$/,
action: {
indentAction: monaco_editor_core_1.languages.IndentAction.None,
removeText: 1
}
}
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"', notIn: ['string'] },
{ open: "'", close: "'", notIn: ['string', 'comment'] },
{ open: '`', close: '`', notIn: ['string', 'comment'] },
{ open: '/**', close: ' */', notIn: ['string'] }
],
folding: {
markers: {
start: new RegExp('^\\s*//\\s*#?region\\b'),
end: new RegExp('^\\s*//\\s*#?endregion\\b')
}
}
};
exports.language = {
// Set defaultToken to invalid to see what you do not tokenize yet
defaultToken: 'invalid',
tokenPostfix: '.ts',
keywords: [
// Should match the keys of textToKeywordObj in
// https://github.com/microsoft/TypeScript/blob/master/src/compiler/scanner.ts
'abstract',
'any',
'as',
'asserts',
'bigint',
'boolean',
'break',
'case',
'catch',
'class',
'continue',
'const',
'constructor',
'debugger',
'declare',
'default',
'delete',
'do',
'else',
'enum',
'export',
'extends',
'false',
'finally',
'for',
'from',
'function',
'get',
'if',
'implements',
'import',
'in',
'infer',
'instanceof',
'interface',
'is',
'keyof',
'let',
'module',
'namespace',
'never',
'new',
'null',
'number',
'object',
'package',
'private',
'protected',
'public',
'override',
'readonly',
'require',
'global',
'return',
'set',
'static',
'string',
'super',
'switch',
'symbol',
'this',
'throw',
'true',
'try',
'type',
'typeof',
'undefined',
'unique',
'unknown',
'var',
'void',
'while',
'with',
'yield',
'async',
'await',
'of'
],
operators: [
'<=',
'>=',
'==',
'!=',
'===',
'!==',
'=>',
'+',
'-',
'**',
'*',
'/',
'%',
'++',
'--',
'<<',
'</',
'>>',
'>>>',
'&',
'|',
'^',
'!',
'~',
'&&',
'||',
'??',
'?',
':',
'=',
'+=',
'-=',
'*=',
'**=',
'/=',
'%=',
'<<=',
'>>=',
'>>>=',
'&=',
'|=',
'^=',
'@'
],
// we include these common regular expressions
symbols: /[=><!~?:&|+\-*\/\^%]+/,
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
digits: /\d+(_+\d+)*/,
octaldigits: /[0-7]+(_+[0-7]+)*/,
binarydigits: /[0-1]+(_+[0-1]+)*/,
hexdigits: /[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,
regexpctl: /[(){}\[\]\$\^|\-*+?\.]/,
regexpesc: /\\(?:[bBdDfnrstvwWn0\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})/,
// The main tokenizer for our languages
tokenizer: {
root: [[/[{}]/, 'delimiter.bracket'], { include: 'common' }],
common: [
// identifiers and keywords
[
/[a-z_$][\w$]*/,
{
cases: {
'@keywords': 'keyword',
'@default': 'identifier'
}
}
],
[/[A-Z][\w\$]*/, 'type.identifier'],
// [/[A-Z][\w\$]*/, 'identifier'],
// whitespace
{ include: '@whitespace' },
// regular expression: ensure it is terminated before beginning (otherwise it is an opeator)
[
/\/(?=([^\\\/]|\\.)+\/([dgimsuy]*)(\s*)(\.|;|,|\)|\]|\}|$))/,
{ token: 'regexp', bracket: '@open', next: '@regexp' }
],
// delimiters and operators
[/[()\[\]]/, '@brackets'],
[/[<>](?!@symbols)/, '@brackets'],
[/!(?=([^=]|$))/, 'delimiter'],
[
/@symbols/,
{
cases: {
'@operators': 'delimiter',
'@default': ''
}
}
],
// numbers
[/(@digits)[eE]([\-+]?(@digits))?/, 'number.float'],
[/(@digits)\.(@digits)([eE][\-+]?(@digits))?/, 'number.float'],
[/0[xX](@hexdigits)n?/, 'number.hex'],
[/0[oO]?(@octaldigits)n?/, 'number.octal'],
[/0[bB](@binarydigits)n?/, 'number.binary'],
[/(@digits)n?/, 'number'],
// delimiter: after number because of .\d floats
[/[;,.]/, 'delimiter'],
// strings
[/"([^"\\]|\\.)*$/, 'string.invalid'],
[/'([^'\\]|\\.)*$/, 'string.invalid'],
[/"/, 'string', '@string_double'],
[/'/, 'string', '@string_single'],
[/`/, 'string', '@string_backtick']
],
whitespace: [
[/[ \t\r\n]+/, ''],
[/\/\*\*(?!\/)/, 'comment.doc', '@jsdoc'],
[/\/\*/, 'comment', '@comment'],
[/\/\/.*$/, 'comment']
],
comment: [
[/[^\/*]+/, 'comment'],
[/\*\//, 'comment', '@pop'],
[/[\/*]/, 'comment']
],
jsdoc: [
[/[^\/*]+/, 'comment.doc'],
[/\*\//, 'comment.doc', '@pop'],
[/[\/*]/, 'comment.doc']
],
// We match regular expression quite precisely
regexp: [
[
/(\{)(\d+(?:,\d*)?)(\})/,
['regexp.escape.control', 'regexp.escape.control', 'regexp.escape.control']
],
[
/(\[)(\^?)(?=(?:[^\]\\\/]|\\.)+)/,
['regexp.escape.control', { token: 'regexp.escape.control', next: '@regexrange' }]
],
[/(\()(\?:|\?=|\?!)/, ['regexp.escape.control', 'regexp.escape.control']],
[/[()]/, 'regexp.escape.control'],
[/@regexpctl/, 'regexp.escape.control'],
[/[^\\\/]/, 'regexp'],
[/@regexpesc/, 'regexp.escape'],
[/\\\./, 'regexp.invalid'],
[/(\/)([dgimsuy]*)/, [{ token: 'regexp', bracket: '@close', next: '@pop' }, 'keyword.other']]
],
regexrange: [
[/-/, 'regexp.escape.control'],
[/\^/, 'regexp.invalid'],
[/@regexpesc/, 'regexp.escape'],
[/[^\]]/, 'regexp'],
[
/\]/,
{
token: 'regexp.escape.control',
next: '@pop',
bracket: '@close'
}
]
],
string_double: [
[/[^\\"]+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/"/, 'string', '@pop']
],
string_single: [
[/[^\\']+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/'/, 'string', '@pop']
],
string_backtick: [
[/\$\{/, { token: 'delimiter.bracket', next: '@bracketCounting' }],
[/[^\\`$]+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/`/, 'string', '@pop']
],
bracketCounting: [
[/\{/, 'delimiter.bracket', '@bracketCounting'],
[/\}/, 'delimiter.bracket', '@pop'],
{ include: 'common' }
]
}
};
});
/*---------------------------------------------------------------------------------------------
* 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/javascript/javascript',["require", "exports", "../typescript/typescript"], function (require, exports, typescript_1) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = typescript_1.conf;
exports.language = {
// Set defaultToken to invalid to see what you do not tokenize yet
defaultToken: 'invalid',
tokenPostfix: '.js',
keywords: [
'break',
'case',
'catch',
'class',
'continue',
'const',
'constructor',
'debugger',
'default',
'delete',
'do',
'else',
'export',
'extends',
'false',
'finally',
'for',
'from',
'function',
'get',
'if',
'import',
'in',
'instanceof',
'let',
'new',
'null',
'return',
'set',
'super',
'switch',
'symbol',
'this',
'throw',
'true',
'try',
'typeof',
'undefined',
'var',
'void',
'while',
'with',
'yield',
'async',
'await',
'of'
],
typeKeywords: [],
operators: typescript_1.language.operators,
symbols: typescript_1.language.symbols,
escapes: typescript_1.language.escapes,
digits: typescript_1.language.digits,
octaldigits: typescript_1.language.octaldigits,
binarydigits: typescript_1.language.binarydigits,
hexdigits: typescript_1.language.hexdigits,
regexpctl: typescript_1.language.regexpctl,
regexpesc: typescript_1.language.regexpesc,
tokenizer: typescript_1.language.tokenizer
};
});

@ -0,0 +1,517 @@
/*---------------------------------------------------------------------------------------------
* 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/julia/julia',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
]
};
exports.language = {
tokenPostfix: '.julia',
keywords: [
'begin',
'while',
'if',
'for',
'try',
'return',
'break',
'continue',
'function',
'macro',
'quote',
'let',
'local',
'global',
'const',
'do',
'struct',
'module',
'baremodule',
'using',
'import',
'export',
'end',
'else',
'elseif',
'catch',
'finally',
'mutable',
'primitive',
'abstract',
'type',
'in',
'isa',
'where',
'new'
],
types: [
'LinRange',
'LineNumberNode',
'LinearIndices',
'LoadError',
'MIME',
'Matrix',
'Method',
'MethodError',
'Missing',
'MissingException',
'Module',
'NTuple',
'NamedTuple',
'Nothing',
'Number',
'OrdinalRange',
'OutOfMemoryError',
'OverflowError',
'Pair',
'PartialQuickSort',
'PermutedDimsArray',
'Pipe',
'Ptr',
'QuoteNode',
'Rational',
'RawFD',
'ReadOnlyMemoryError',
'Real',
'ReentrantLock',
'Ref',
'Regex',
'RegexMatch',
'RoundingMode',
'SegmentationFault',
'Set',
'Signed',
'Some',
'StackOverflowError',
'StepRange',
'StepRangeLen',
'StridedArray',
'StridedMatrix',
'StridedVecOrMat',
'StridedVector',
'String',
'StringIndexError',
'SubArray',
'SubString',
'SubstitutionString',
'Symbol',
'SystemError',
'Task',
'Text',
'TextDisplay',
'Timer',
'Tuple',
'Type',
'TypeError',
'TypeVar',
'UInt',
'UInt128',
'UInt16',
'UInt32',
'UInt64',
'UInt8',
'UndefInitializer',
'AbstractArray',
'UndefKeywordError',
'AbstractChannel',
'UndefRefError',
'AbstractChar',
'UndefVarError',
'AbstractDict',
'Union',
'AbstractDisplay',
'UnionAll',
'AbstractFloat',
'UnitRange',
'AbstractIrrational',
'Unsigned',
'AbstractMatrix',
'AbstractRange',
'Val',
'AbstractSet',
'Vararg',
'AbstractString',
'VecElement',
'AbstractUnitRange',
'VecOrMat',
'AbstractVecOrMat',
'Vector',
'AbstractVector',
'VersionNumber',
'Any',
'WeakKeyDict',
'ArgumentError',
'WeakRef',
'Array',
'AssertionError',
'BigFloat',
'BigInt',
'BitArray',
'BitMatrix',
'BitSet',
'BitVector',
'Bool',
'BoundsError',
'CapturedException',
'CartesianIndex',
'CartesianIndices',
'Cchar',
'Cdouble',
'Cfloat',
'Channel',
'Char',
'Cint',
'Cintmax_t',
'Clong',
'Clonglong',
'Cmd',
'Colon',
'Complex',
'ComplexF16',
'ComplexF32',
'ComplexF64',
'CompositeException',
'Condition',
'Cptrdiff_t',
'Cshort',
'Csize_t',
'Cssize_t',
'Cstring',
'Cuchar',
'Cuint',
'Cuintmax_t',
'Culong',
'Culonglong',
'Cushort',
'Cvoid',
'Cwchar_t',
'Cwstring',
'DataType',
'DenseArray',
'DenseMatrix',
'DenseVecOrMat',
'DenseVector',
'Dict',
'DimensionMismatch',
'Dims',
'DivideError',
'DomainError',
'EOFError',
'Enum',
'ErrorException',
'Exception',
'ExponentialBackOff',
'Expr',
'Float16',
'Float32',
'Float64',
'Function',
'GlobalRef',
'HTML',
'IO',
'IOBuffer',
'IOContext',
'IOStream',
'IdDict',
'IndexCartesian',
'IndexLinear',
'IndexStyle',
'InexactError',
'InitError',
'Int',
'Int128',
'Int16',
'Int32',
'Int64',
'Int8',
'Integer',
'InterruptException',
'InvalidStateException',
'Irrational',
'KeyError'
],
keywordops: ['<:', '>:', ':', '=>', '...', '.', '->', '?'],
allops: /[^\w\d\s()\[\]{}"'#]+/,
constants: [
'true',
'false',
'nothing',
'missing',
'undef',
'Inf',
'pi',
'NaN',
'π',
'ℯ',
'ans',
'PROGRAM_FILE',
'ARGS',
'C_NULL',
'VERSION',
'DEPOT_PATH',
'LOAD_PATH'
],
operators: [
'!',
'!=',
'!==',
'%',
'&',
'*',
'+',
'-',
'/',
'//',
'<',
'<<',
'<=',
'==',
'===',
'=>',
'>',
'>=',
'>>',
'>>>',
'\\',
'^',
'|',
'|>',
'~',
'÷',
'∈',
'∉',
'∋',
'∌',
'∘',
'√',
'∛',
'∩',
'∪',
'≈',
'≉',
'≠',
'≡',
'≢',
'≤',
'≥',
'⊆',
'⊇',
'⊈',
'⊉',
'⊊',
'⊋',
'⊻'
],
brackets: [
{ open: '(', close: ')', token: 'delimiter.parenthesis' },
{ open: '{', close: '}', token: 'delimiter.curly' },
{ open: '[', close: ']', token: 'delimiter.square' }
],
ident: /π|ℯ|\b(?!\d)\w+\b/,
// escape sequences
escape: /(?:[abefnrstv\\"'\n\r]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{4})/,
escapes: /\\(?:C\-(@escape|.)|c(@escape|.)|@escape)/,
// The main tokenizer for our languages
tokenizer: {
root: [
[/(::)\s*|\b(isa)\s+/, 'keyword', '@typeanno'],
[/\b(isa)(\s*\(@ident\s*,\s*)/, ['keyword', { token: '', next: '@typeanno' }]],
[/\b(type|struct)[ \t]+/, 'keyword', '@typeanno'],
// symbols
[/^\s*:@ident[!?]?/, 'metatag'],
[/(return)(\s*:@ident[!?]?)/, ['keyword', 'metatag']],
[/(\(|\[|\{|@allops)(\s*:@ident[!?]?)/, ['', 'metatag']],
[/:\(/, 'metatag', '@quote'],
// regular expressions
[/r"""/, 'regexp.delim', '@tregexp'],
[/r"/, 'regexp.delim', '@sregexp'],
// strings
[/raw"""/, 'string.delim', '@rtstring'],
[/[bv]?"""/, 'string.delim', '@dtstring'],
[/raw"/, 'string.delim', '@rsstring'],
[/[bv]?"/, 'string.delim', '@dsstring'],
[
/(@ident)\{/,
{
cases: {
'$1@types': { token: 'type', next: '@gen' },
'@default': { token: 'type', next: '@gen' }
}
}
],
[
/@ident[!?'']?(?=\.?\()/,
{
cases: {
'@types': 'type',
'@keywords': 'keyword',
'@constants': 'variable',
'@default': 'keyword.flow'
}
}
],
[
/@ident[!?']?/,
{
cases: {
'@types': 'type',
'@keywords': 'keyword',
'@constants': 'variable',
'@default': 'identifier'
}
}
],
[/\$\w+/, 'key'],
[/\$\(/, 'key', '@paste'],
[/@@@ident/, 'annotation'],
// whitespace
{ include: '@whitespace' },
// characters
[/'(?:@escapes|.)'/, 'string.character'],
// delimiters and operators
[/[()\[\]{}]/, '@brackets'],
[
/@allops/,
{
cases: {
'@keywordops': 'keyword',
'@operators': 'operator'
}
}
],
[/[;,]/, 'delimiter'],
// numbers
[/0[xX][0-9a-fA-F](_?[0-9a-fA-F])*/, 'number.hex'],
[/0[_oO][0-7](_?[0-7])*/, 'number.octal'],
[/0[bB][01](_?[01])*/, 'number.binary'],
[/[+\-]?\d+(\.\d+)?(im?|[eE][+\-]?\d+(\.\d+)?)?/, 'number']
],
// type
typeanno: [
[/[a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*\{/, 'type', '@gen'],
[/([a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*)(\s*<:\s*)/, ['type', 'keyword']],
[/[a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*/, 'type', '@pop'],
['', '', '@pop']
],
// generic type
gen: [
[/[a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*\{/, 'type', '@push'],
[/[a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*/, 'type'],
[/<:/, 'keyword'],
[/(\})(\s*<:\s*)/, ['type', { token: 'keyword', next: '@pop' }]],
[/\}/, 'type', '@pop'],
{ include: '@root' }
],
// $(...)
quote: [
[/\$\(/, 'key', '@paste'],
[/\(/, '@brackets', '@paren'],
[/\)/, 'metatag', '@pop'],
{ include: '@root' }
],
// :(...)
paste: [
[/:\(/, 'metatag', '@quote'],
[/\(/, '@brackets', '@paren'],
[/\)/, 'key', '@pop'],
{ include: '@root' }
],
// (...)
paren: [
[/\$\(/, 'key', '@paste'],
[/:\(/, 'metatag', '@quote'],
[/\(/, '@brackets', '@push'],
[/\)/, '@brackets', '@pop'],
{ include: '@root' }
],
// r"egex string"
sregexp: [
[/^.*/, 'invalid'],
[/[^\\"()\[\]{}]/, 'regexp'],
[/[()\[\]{}]/, '@brackets'],
[/\\./, 'operator.scss'],
[/"[imsx]*/, 'regexp.delim', '@pop']
],
tregexp: [
[/[^\\"()\[\]{}]/, 'regexp'],
[/[()\[\]{}]/, '@brackets'],
[/\\./, 'operator.scss'],
[/"(?!"")/, 'string'],
[/"""[imsx]*/, 'regexp.delim', '@pop']
],
// raw"string"
rsstring: [
[/^.*/, 'invalid'],
[/[^\\"]/, 'string'],
[/\\./, 'string.escape'],
[/"/, 'string.delim', '@pop']
],
rtstring: [
[/[^\\"]/, 'string'],
[/\\./, 'string.escape'],
[/"(?!"")/, 'string'],
[/"""/, 'string.delim', '@pop']
],
// "string".
dsstring: [
[/^.*/, 'invalid'],
[/[^\\"\$]/, 'string'],
[/\$/, '', '@interpolated'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/"/, 'string.delim', '@pop']
],
dtstring: [
[/[^\\"\$]/, 'string'],
[/\$/, '', '@interpolated'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/"(?!"")/, 'string'],
[/"""/, 'string.delim', '@pop']
],
// interpolated sequence
interpolated: [
[/\(/, { token: '', switchTo: '@interpolated_compound' }],
[/[a-zA-Z_]\w*/, 'identifier'],
['', '', '@pop'] // just a $ is interpreted as a $
],
// any code
interpolated_compound: [[/\)/, '', '@pop'], { include: '@root' }],
// whitespace & comments
whitespace: [
[/[ \t\r\n]+/, ''],
[/#=/, 'comment', '@multi_comment'],
[/#.*$/, 'comment']
],
multi_comment: [
[/#=/, 'comment', '@push'],
[/=#/, 'comment', '@pop'],
[/=(?!#)|#(?!=)/, 'comment'],
[/[^#=]+/, 'comment']
]
}
};
});

@ -0,0 +1,259 @@
/*---------------------------------------------------------------------------------------------
* 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/kotlin/kotlin',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
// the default separators except `@$`
wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,
comments: {
lineComment: '//',
blockComment: ['/*', '*/']
},
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" },
{ open: '<', close: '>' }
],
folding: {
markers: {
start: new RegExp('^\\s*//\\s*(?:(?:#?region\\b)|(?:<editor-fold\\b))'),
end: new RegExp('^\\s*//\\s*(?:(?:#?endregion\\b)|(?:</editor-fold>))')
}
}
};
exports.language = {
defaultToken: '',
tokenPostfix: '.kt',
keywords: [
'as',
'as?',
'break',
'class',
'continue',
'do',
'else',
'false',
'for',
'fun',
'if',
'in',
'!in',
'interface',
'is',
'!is',
'null',
'object',
'package',
'return',
'super',
'this',
'throw',
'true',
'try',
'typealias',
'val',
'var',
'when',
'while',
'by',
'catch',
'constructor',
'delegate',
'dynamic',
'field',
'file',
'finally',
'get',
'import',
'init',
'param',
'property',
'receiver',
'set',
'setparam',
'where',
'actual',
'abstract',
'annotation',
'companion',
'const',
'crossinline',
'data',
'enum',
'expect',
'external',
'final',
'infix',
'inline',
'inner',
'internal',
'lateinit',
'noinline',
'open',
'operator',
'out',
'override',
'private',
'protected',
'public',
'reified',
'sealed',
'suspend',
'tailrec',
'vararg',
'field',
'it'
],
operators: [
'+',
'-',
'*',
'/',
'%',
'=',
'+=',
'-=',
'*=',
'/=',
'%=',
'++',
'--',
'&&',
'||',
'!',
'==',
'!=',
'===',
'!==',
'>',
'<',
'<=',
'>=',
'[',
']',
'!!',
'?.',
'?:',
'::',
'..',
':',
'?',
'->',
'@',
';',
'$',
'_'
],
// we include these common regular expressions
symbols: /[=><!~?:&|+\-*\/\^%]+/,
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
digits: /\d+(_+\d+)*/,
octaldigits: /[0-7]+(_+[0-7]+)*/,
binarydigits: /[0-1]+(_+[0-1]+)*/,
hexdigits: /[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,
// The main tokenizer for our languages
tokenizer: {
root: [
// class name highlighting
[/[A-Z][\w\$]*/, 'type.identifier'],
// identifiers and keywords
[
/[a-zA-Z_$][\w$]*/,
{
cases: {
'@keywords': { token: 'keyword.$0' },
'@default': 'identifier'
}
}
],
// whitespace
{ include: '@whitespace' },
// delimiters and operators
[/[{}()\[\]]/, '@brackets'],
[/[<>](?!@symbols)/, '@brackets'],
[
/@symbols/,
{
cases: {
'@operators': 'delimiter',
'@default': ''
}
}
],
// @ annotations.
[/@\s*[a-zA-Z_\$][\w\$]*/, 'annotation'],
// numbers
[/(@digits)[eE]([\-+]?(@digits))?[fFdD]?/, 'number.float'],
[/(@digits)\.(@digits)([eE][\-+]?(@digits))?[fFdD]?/, 'number.float'],
[/0[xX](@hexdigits)[Ll]?/, 'number.hex'],
[/0(@octaldigits)[Ll]?/, 'number.octal'],
[/0[bB](@binarydigits)[Ll]?/, 'number.binary'],
[/(@digits)[fFdD]/, 'number.float'],
[/(@digits)[lL]?/, 'number'],
// delimiter: after number because of .\d floats
[/[;,.]/, 'delimiter'],
// strings
[/"([^"\\]|\\.)*$/, 'string.invalid'],
[/"""/, 'string', '@multistring'],
[/"/, 'string', '@string'],
// characters
[/'[^\\']'/, 'string'],
[/(')(@escapes)(')/, ['string', 'string.escape', 'string']],
[/'/, 'string.invalid']
],
whitespace: [
[/[ \t\r\n]+/, ''],
[/\/\*\*(?!\/)/, 'comment.doc', '@javadoc'],
[/\/\*/, 'comment', '@comment'],
[/\/\/.*$/, 'comment']
],
comment: [
[/[^\/*]+/, 'comment'],
[/\/\*/, 'comment', '@comment'],
[/\*\//, 'comment', '@pop'],
[/[\/*]/, 'comment']
],
//Identical copy of comment above, except for the addition of .doc
javadoc: [
[/[^\/*]+/, 'comment.doc'],
[/\/\*/, 'comment.doc', '@push'],
[/\/\*/, 'comment.doc.invalid'],
[/\*\//, 'comment.doc', '@pop'],
[/[\/*]/, 'comment.doc']
],
string: [
[/[^\\"]+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/"/, 'string', '@pop']
],
multistring: [
[/[^\\"]+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/"""/, 'string', '@pop'],
[/./, 'string']
]
}
};
});

@ -0,0 +1,168 @@
/*---------------------------------------------------------------------------------------------
* 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/less/less',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
wordPattern: /(#?-?\d*\.\d\w*%?)|([@#!.:]?[\w-?]+%?)|[@#!.]/g,
comments: {
blockComment: ['/*', '*/'],
lineComment: '//'
},
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}', notIn: ['string', 'comment'] },
{ open: '[', close: ']', notIn: ['string', 'comment'] },
{ open: '(', close: ')', notIn: ['string', 'comment'] },
{ open: '"', close: '"', notIn: ['string', 'comment'] },
{ open: "'", close: "'", notIn: ['string', 'comment'] }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
folding: {
markers: {
start: new RegExp('^\\s*\\/\\*\\s*#region\\b\\s*(.*?)\\s*\\*\\/'),
end: new RegExp('^\\s*\\/\\*\\s*#endregion\\b.*\\*\\/')
}
}
};
exports.language = {
defaultToken: '',
tokenPostfix: '.less',
identifier: '-?-?([a-zA-Z]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))([\\w\\-]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))*',
identifierPlus: '-?-?([a-zA-Z:.]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))([\\w\\-:.]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))*',
brackets: [
{ open: '{', close: '}', token: 'delimiter.curly' },
{ open: '[', close: ']', token: 'delimiter.bracket' },
{ open: '(', close: ')', token: 'delimiter.parenthesis' },
{ open: '<', close: '>', token: 'delimiter.angle' }
],
tokenizer: {
root: [
{ include: '@nestedJSBegin' },
['[ \\t\\r\\n]+', ''],
{ include: '@comments' },
{ include: '@keyword' },
{ include: '@strings' },
{ include: '@numbers' },
['[*_]?[a-zA-Z\\-\\s]+(?=:.*(;|(\\\\$)))', 'attribute.name', '@attribute'],
['url(\\-prefix)?\\(', { token: 'tag', next: '@urldeclaration' }],
['[{}()\\[\\]]', '@brackets'],
['[,:;]', 'delimiter'],
['#@identifierPlus', 'tag.id'],
['&', 'tag'],
['\\.@identifierPlus(?=\\()', 'tag.class', '@attribute'],
['\\.@identifierPlus', 'tag.class'],
['@identifierPlus', 'tag'],
{ include: '@operators' },
['@(@identifier(?=[:,\\)]))', 'variable', '@attribute'],
['@(@identifier)', 'variable'],
['@', 'key', '@atRules']
],
nestedJSBegin: [
['``', 'delimiter.backtick'],
[
'`',
{
token: 'delimiter.backtick',
next: '@nestedJSEnd',
nextEmbedded: 'text/javascript'
}
]
],
nestedJSEnd: [
[
'`',
{
token: 'delimiter.backtick',
next: '@pop',
nextEmbedded: '@pop'
}
]
],
operators: [['[<>=\\+\\-\\*\\/\\^\\|\\~]', 'operator']],
keyword: [
[
'(@[\\s]*import|![\\s]*important|true|false|when|iscolor|isnumber|isstring|iskeyword|isurl|ispixel|ispercentage|isem|hue|saturation|lightness|alpha|lighten|darken|saturate|desaturate|fadein|fadeout|fade|spin|mix|round|ceil|floor|percentage)\\b',
'keyword'
]
],
urldeclaration: [
{ include: '@strings' },
['[^)\r\n]+', 'string'],
['\\)', { token: 'tag', next: '@pop' }]
],
attribute: [
{ include: '@nestedJSBegin' },
{ include: '@comments' },
{ include: '@strings' },
{ include: '@numbers' },
{ include: '@keyword' },
['[a-zA-Z\\-]+(?=\\()', 'attribute.value', '@attribute'],
['>', 'operator', '@pop'],
['@identifier', 'attribute.value'],
{ include: '@operators' },
['@(@identifier)', 'variable'],
['[)\\}]', '@brackets', '@pop'],
['[{}()\\[\\]>]', '@brackets'],
['[;]', 'delimiter', '@pop'],
['[,=:]', 'delimiter'],
['\\s', ''],
['.', 'attribute.value']
],
comments: [
['\\/\\*', 'comment', '@comment'],
['\\/\\/+.*', 'comment']
],
comment: [
['\\*\\/', 'comment', '@pop'],
['.', 'comment']
],
numbers: [
['(\\d*\\.)?\\d+([eE][\\-+]?\\d+)?', { token: 'attribute.value.number', next: '@units' }],
['#[0-9a-fA-F_]+(?!\\w)', 'attribute.value.hex']
],
units: [
[
'(em|ex|ch|rem|vmin|vmax|vw|vh|vm|cm|mm|in|px|pt|pc|deg|grad|rad|turn|s|ms|Hz|kHz|%)?',
'attribute.value.unit',
'@pop'
]
],
strings: [
['~?"', { token: 'string.delimiter', next: '@stringsEndDoubleQuote' }],
["~?'", { token: 'string.delimiter', next: '@stringsEndQuote' }]
],
stringsEndDoubleQuote: [
['\\\\"', 'string'],
['"', { token: 'string.delimiter', next: '@popall' }],
['.', 'string']
],
stringsEndQuote: [
["\\\\'", 'string'],
["'", { token: 'string.delimiter', next: '@popall' }],
['.', 'string']
],
atRules: [
{ include: '@comments' },
{ include: '@strings' },
['[()]', 'delimiter'],
['[\\{;]', 'delimiter', '@pop'],
['.', 'key']
]
}
};
});

@ -0,0 +1,164 @@
/*---------------------------------------------------------------------------------------------
* 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/lexon/lexon',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
comments: {
lineComment: 'COMMENT'
// blockComment: ['COMMENT', '.'],
},
brackets: [['(', ')']],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: ':', close: '.' }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '`', close: '`' },
{ open: '"', close: '"' },
{ open: "'", close: "'" },
{ open: ':', close: '.' }
],
folding: {
markers: {
start: new RegExp('^\\s*(::\\s*|COMMENT\\s+)#region'),
end: new RegExp('^\\s*(::\\s*|COMMENT\\s+)#endregion')
}
}
};
exports.language = {
// Set defaultToken to invalid to see what you do not tokenize yet
// defaultToken: 'invalid',
tokenPostfix: '.lexon',
ignoreCase: true,
keywords: [
'lexon',
'lex',
'clause',
'terms',
'contracts',
'may',
'pay',
'pays',
'appoints',
'into',
'to'
],
typeKeywords: ['amount', 'person', 'key', 'time', 'date', 'asset', 'text'],
operators: [
'less',
'greater',
'equal',
'le',
'gt',
'or',
'and',
'add',
'added',
'subtract',
'subtracted',
'multiply',
'multiplied',
'times',
'divide',
'divided',
'is',
'be',
'certified'
],
// we include these common regular expressions
symbols: /[=><!~?:&|+\-*\/\^%]+/,
// The main tokenizer for our languages
tokenizer: {
root: [
// comment
[/^(\s*)(comment:?(?:\s.*|))$/, ['', 'comment']],
// special identifier cases
[
/"/,
{
token: 'identifier.quote',
bracket: '@open',
next: '@quoted_identifier'
}
],
[
'LEX$',
{
token: 'keyword',
bracket: '@open',
next: '@identifier_until_period'
}
],
['LEXON', { token: 'keyword', bracket: '@open', next: '@semver' }],
[
':',
{
token: 'delimiter',
bracket: '@open',
next: '@identifier_until_period'
}
],
// identifiers and keywords
[
/[a-z_$][\w$]*/,
{
cases: {
'@operators': 'operator',
'@typeKeywords': 'keyword.type',
'@keywords': 'keyword',
'@default': 'identifier'
}
}
],
// whitespace
{ include: '@whitespace' },
// delimiters and operators
[/[{}()\[\]]/, '@brackets'],
[/[<>](?!@symbols)/, '@brackets'],
[/@symbols/, 'delimiter'],
// numbers
[/\d*\.\d*\.\d*/, 'number.semver'],
[/\d*\.\d+([eE][\-+]?\d+)?/, 'number.float'],
[/0[xX][0-9a-fA-F]+/, 'number.hex'],
[/\d+/, 'number'],
// delimiter: after number because of .\d floats
[/[;,.]/, 'delimiter']
],
quoted_identifier: [
[/[^\\"]+/, 'identifier'],
[/"/, { token: 'identifier.quote', bracket: '@close', next: '@pop' }]
],
space_identifier_until_period: [
[':', 'delimiter'],
[' ', { token: 'white', next: '@identifier_rest' }]
],
identifier_until_period: [
{ include: '@whitespace' },
[':', { token: 'delimiter', next: '@identifier_rest' }],
[/[^\\.]+/, 'identifier'],
[/\./, { token: 'delimiter', bracket: '@close', next: '@pop' }]
],
identifier_rest: [
[/[^\\.]+/, 'identifier'],
[/\./, { token: 'delimiter', bracket: '@close', next: '@pop' }]
],
semver: [
{ include: '@whitespace' },
[':', 'delimiter'],
[/\d*\.\d*\.\d*/, { token: 'number.semver', bracket: '@close', next: '@pop' }]
],
whitespace: [[/[ \t\r\n]+/, 'white']]
}
};
});

@ -0,0 +1,232 @@
/*---------------------------------------------------------------------------------------------
* 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/liquid/liquid',["require", "exports", "../fillers/monaco-editor-core"], function (require, exports, monaco_editor_core_1) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
var EMPTY_ELEMENTS = [
'area',
'base',
'br',
'col',
'embed',
'hr',
'img',
'input',
'keygen',
'link',
'menuitem',
'meta',
'param',
'source',
'track',
'wbr'
];
exports.conf = {
wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,
brackets: [
['<!--', '-->'],
['<', '>'],
['{{', '}}'],
['{%', '%}'],
['{', '}'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '%', close: '%' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
surroundingPairs: [
{ open: '<', close: '>' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
onEnterRules: [
{
beforeText: new RegExp("<(?!(?:" + EMPTY_ELEMENTS.join('|') + "))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$", 'i'),
afterText: /^<\/(\w[\w\d]*)\s*>$/i,
action: {
indentAction: monaco_editor_core_1.languages.IndentAction.IndentOutdent
}
},
{
beforeText: new RegExp("<(?!(?:" + EMPTY_ELEMENTS.join('|') + "))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$", 'i'),
action: { indentAction: monaco_editor_core_1.languages.IndentAction.Indent }
}
]
};
exports.language = {
defaultToken: '',
tokenPostfix: '',
builtinTags: [
'if',
'else',
'elseif',
'endif',
'render',
'assign',
'capture',
'endcapture',
'case',
'endcase',
'comment',
'endcomment',
'cycle',
'decrement',
'for',
'endfor',
'include',
'increment',
'layout',
'raw',
'endraw',
'render',
'tablerow',
'endtablerow',
'unless',
'endunless'
],
builtinFilters: [
'abs',
'append',
'at_least',
'at_most',
'capitalize',
'ceil',
'compact',
'date',
'default',
'divided_by',
'downcase',
'escape',
'escape_once',
'first',
'floor',
'join',
'json',
'last',
'lstrip',
'map',
'minus',
'modulo',
'newline_to_br',
'plus',
'prepend',
'remove',
'remove_first',
'replace',
'replace_first',
'reverse',
'round',
'rstrip',
'size',
'slice',
'sort',
'sort_natural',
'split',
'strip',
'strip_html',
'strip_newlines',
'times',
'truncate',
'truncatewords',
'uniq',
'upcase',
'url_decode',
'url_encode',
'where'
],
constants: ['true', 'false'],
operators: ['==', '!=', '>', '<', '>=', '<='],
symbol: /[=><!]+/,
identifier: /[a-zA-Z_][\w]*/,
tokenizer: {
root: [
[/\{\%\s*comment\s*\%\}/, 'comment.start.liquid', '@comment'],
[/\{\{/, { token: '@rematch', switchTo: '@liquidState.root' }],
[/\{\%/, { token: '@rematch', switchTo: '@liquidState.root' }],
[/(<)([\w\-]+)(\/>)/, ['delimiter.html', 'tag.html', 'delimiter.html']],
[/(<)([:\w]+)/, ['delimiter.html', { token: 'tag.html', next: '@otherTag' }]],
[/(<\/)([\w\-]+)/, ['delimiter.html', { token: 'tag.html', next: '@otherTag' }]],
[/</, 'delimiter.html'],
[/\{/, 'delimiter.html'],
[/[^<{]+/] // text
],
comment: [
[/\{\%\s*endcomment\s*\%\}/, 'comment.end.liquid', '@pop'],
[/./, 'comment.content.liquid']
],
otherTag: [
[
/\{\{/,
{
token: '@rematch',
switchTo: '@liquidState.otherTag'
}
],
[
/\{\%/,
{
token: '@rematch',
switchTo: '@liquidState.otherTag'
}
],
[/\/?>/, 'delimiter.html', '@pop'],
[/"([^"]*)"/, 'attribute.value'],
[/'([^']*)'/, 'attribute.value'],
[/[\w\-]+/, 'attribute.name'],
[/=/, 'delimiter'],
[/[ \t\r\n]+/] // whitespace
],
liquidState: [
[/\{\{/, 'delimiter.output.liquid'],
[/\}\}/, { token: 'delimiter.output.liquid', switchTo: '@$S2.$S3' }],
[/\{\%/, 'delimiter.tag.liquid'],
[/raw\s*\%\}/, 'delimiter.tag.liquid', '@liquidRaw'],
[/\%\}/, { token: 'delimiter.tag.liquid', switchTo: '@$S2.$S3' }],
{ include: 'liquidRoot' }
],
liquidRaw: [
[/^(?!\{\%\s*endraw\s*\%\}).+/],
[/\{\%/, 'delimiter.tag.liquid'],
[/@identifier/],
[/\%\}/, { token: 'delimiter.tag.liquid', next: '@root' }]
],
liquidRoot: [
[/\d+(\.\d+)?/, 'number.liquid'],
[/"[^"]*"/, 'string.liquid'],
[/'[^']*'/, 'string.liquid'],
[/\s+/],
[
/@symbol/,
{
cases: {
'@operators': 'operator.liquid',
'@default': ''
}
}
],
[/\./],
[
/@identifier/,
{
cases: {
'@constants': 'keyword.liquid',
'@builtinFilters': 'predefined.liquid',
'@builtinTags': 'predefined.liquid',
'@default': 'variable.liquid'
}
}
],
[/[^}|%]/, 'variable.liquid']
]
}
};
});

@ -0,0 +1,167 @@
/*---------------------------------------------------------------------------------------------
* 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/lua/lua',["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: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
]
};
exports.language = {
defaultToken: '',
tokenPostfix: '.lua',
keywords: [
'and',
'break',
'do',
'else',
'elseif',
'end',
'false',
'for',
'function',
'goto',
'if',
'in',
'local',
'nil',
'not',
'or',
'repeat',
'return',
'then',
'true',
'until',
'while'
],
brackets: [
{ token: 'delimiter.bracket', open: '{', close: '}' },
{ token: 'delimiter.array', open: '[', close: ']' },
{ token: 'delimiter.parenthesis', open: '(', close: ')' }
],
operators: [
'+',
'-',
'*',
'/',
'%',
'^',
'#',
'==',
'~=',
'<=',
'>=',
'<',
'>',
'=',
';',
':',
',',
'.',
'..',
'...'
],
// we include these common regular expressions
symbols: /[=><!~?:&|+\-*\/\^%]+/,
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
// The main tokenizer for our languages
tokenizer: {
root: [
// identifiers and keywords
[
/[a-zA-Z_]\w*/,
{
cases: {
'@keywords': { token: 'keyword.$0' },
'@default': 'identifier'
}
}
],
// whitespace
{ include: '@whitespace' },
// keys
[/(,)(\s*)([a-zA-Z_]\w*)(\s*)(:)(?!:)/, ['delimiter', '', 'key', '', 'delimiter']],
[/({)(\s*)([a-zA-Z_]\w*)(\s*)(:)(?!:)/, ['@brackets', '', 'key', '', 'delimiter']],
// delimiters and operators
[/[{}()\[\]]/, '@brackets'],
[
/@symbols/,
{
cases: {
'@operators': 'delimiter',
'@default': ''
}
}
],
// numbers
[/\d*\.\d+([eE][\-+]?\d+)?/, 'number.float'],
[/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/, 'number.hex'],
[/\d+?/, 'number'],
// delimiter: after number because of .\d floats
[/[;,.]/, 'delimiter'],
// strings: recover on non-terminated strings
[/"([^"\\]|\\.)*$/, 'string.invalid'],
[/'([^'\\]|\\.)*$/, 'string.invalid'],
[/"/, 'string', '@string."'],
[/'/, 'string', "@string.'"]
],
whitespace: [
[/[ \t\r\n]+/, ''],
[/--\[([=]*)\[/, 'comment', '@comment.$1'],
[/--.*$/, 'comment']
],
comment: [
[/[^\]]+/, 'comment'],
[
/\]([=]*)\]/,
{
cases: {
'$1==$S2': { token: 'comment', next: '@pop' },
'@default': 'comment'
}
}
],
[/./, 'comment']
],
string: [
[/[^\\"']+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[
/["']/,
{
cases: {
'$#==$S2': { token: 'string', next: '@pop' },
'@default': 'string'
}
}
]
]
}
};
});

@ -0,0 +1,217 @@
/*---------------------------------------------------------------------------------------------
* 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/m3/m3',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
comments: {
blockComment: ['(*', '*)']
},
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '[', close: ']' },
{ open: '{', close: '}' },
{ open: '(', close: ')' },
{ open: '(*', close: '*)' },
{ open: '<*', close: '*>' },
{ open: "'", close: "'", notIn: ['string', 'comment'] },
{ open: '"', close: '"', notIn: ['string', 'comment'] }
]
};
exports.language = {
defaultToken: '',
tokenPostfix: '.m3',
brackets: [
{ token: 'delimiter.curly', open: '{', close: '}' },
{ token: 'delimiter.parenthesis', open: '(', close: ')' },
{ token: 'delimiter.square', open: '[', close: ']' }
],
keywords: [
'AND',
'ANY',
'ARRAY',
'AS',
'BEGIN',
'BITS',
'BRANDED',
'BY',
'CASE',
'CONST',
'DIV',
'DO',
'ELSE',
'ELSIF',
'END',
'EVAL',
'EXCEPT',
'EXCEPTION',
'EXIT',
'EXPORTS',
'FINALLY',
'FOR',
'FROM',
'GENERIC',
'IF',
'IMPORT',
'IN',
'INTERFACE',
'LOCK',
'LOOP',
'METHODS',
'MOD',
'MODULE',
'NOT',
'OBJECT',
'OF',
'OR',
'OVERRIDES',
'PROCEDURE',
'RAISE',
'RAISES',
'READONLY',
'RECORD',
'REF',
'REPEAT',
'RETURN',
'REVEAL',
'SET',
'THEN',
'TO',
'TRY',
'TYPE',
'TYPECASE',
'UNSAFE',
'UNTIL',
'UNTRACED',
'VALUE',
'VAR',
'WHILE',
'WITH'
],
reservedConstNames: [
'ABS',
'ADR',
'ADRSIZE',
'BITSIZE',
'BYTESIZE',
'CEILING',
'DEC',
'DISPOSE',
'FALSE',
'FIRST',
'FLOAT',
'FLOOR',
'INC',
'ISTYPE',
'LAST',
'LOOPHOLE',
'MAX',
'MIN',
'NARROW',
'NEW',
'NIL',
'NUMBER',
'ORD',
'ROUND',
'SUBARRAY',
'TRUE',
'TRUNC',
'TYPECODE',
'VAL'
],
reservedTypeNames: [
'ADDRESS',
'ANY',
'BOOLEAN',
'CARDINAL',
'CHAR',
'EXTENDED',
'INTEGER',
'LONGCARD',
'LONGINT',
'LONGREAL',
'MUTEX',
'NULL',
'REAL',
'REFANY',
'ROOT',
'TEXT'
],
operators: ['+', '-', '*', '/', '&', '^', '.'],
relations: ['=', '#', '<', '<=', '>', '>=', '<:', ':'],
delimiters: ['|', '..', '=>', ',', ';', ':='],
symbols: /[>=<#.,:;+\-*/&^]+/,
escapes: /\\(?:[\\fnrt"']|[0-7]{3})/,
tokenizer: {
root: [
// Identifiers and keywords
[/_\w*/, 'invalid'],
[
/[a-zA-Z][a-zA-Z0-9_]*/,
{
cases: {
'@keywords': { token: 'keyword.$0' },
'@reservedConstNames': { token: 'constant.reserved.$0' },
'@reservedTypeNames': { token: 'type.reserved.$0' },
'@default': 'identifier'
}
}
],
// Whitespace
{ include: '@whitespace' },
[/[{}()\[\]]/, '@brackets'],
// Integer- and real literals
[/[0-9]+\.[0-9]+(?:[DdEeXx][\+\-]?[0-9]+)?/, 'number.float'],
[/[0-9]+(?:\_[0-9a-fA-F]+)?L?/, 'number'],
// Operators, relations, and delimiters
[
/@symbols/,
{
cases: {
'@operators': 'operators',
'@relations': 'operators',
'@delimiters': 'delimiter',
'@default': 'invalid'
}
}
],
// Character literals
[/'[^\\']'/, 'string.char'],
[/(')(@escapes)(')/, ['string.char', 'string.escape', 'string.char']],
[/'/, 'invalid'],
// Text literals
[/"([^"\\]|\\.)*$/, 'invalid'],
[/"/, 'string.text', '@text']
],
text: [
[/[^\\"]+/, 'string.text'],
[/@escapes/, 'string.escape'],
[/\\./, 'invalid'],
[/"/, 'string.text', '@pop']
],
comment: [
[/\(\*/, 'comment', '@push'],
[/\*\)/, 'comment', '@pop'],
[/./, 'comment']
],
pragma: [
[/<\*/, 'keyword.pragma', '@push'],
[/\*>/, 'keyword.pragma', '@pop'],
[/./, 'keyword.pragma']
],
whitespace: [
[/[ \t\r\n]+/, 'white'],
[/\(\*/, 'comment', '@comment'],
[/<\*/, 'keyword.pragma', '@pragma']
]
}
};
});

@ -0,0 +1,229 @@
/*---------------------------------------------------------------------------------------------
* 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/markdown/markdown',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
comments: {
blockComment: ['<!--', '-->']
},
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '<', close: '>', notIn: ['string'] }
],
surroundingPairs: [
{ open: '(', close: ')' },
{ open: '[', close: ']' },
{ open: '`', close: '`' }
],
folding: {
markers: {
start: new RegExp('^\\s*<!--\\s*#?region\\b.*-->'),
end: new RegExp('^\\s*<!--\\s*#?endregion\\b.*-->')
}
}
};
exports.language = {
defaultToken: '',
tokenPostfix: '.md',
// escape codes
control: /[\\`*_\[\]{}()#+\-\.!]/,
noncontrol: /[^\\`*_\[\]{}()#+\-\.!]/,
escapes: /\\(?:@control)/,
// escape codes for javascript/CSS strings
jsescapes: /\\(?:[btnfr\\"']|[0-7][0-7]?|[0-3][0-7]{2})/,
// non matched elements
empty: [
'area',
'base',
'basefont',
'br',
'col',
'frame',
'hr',
'img',
'input',
'isindex',
'link',
'meta',
'param'
],
tokenizer: {
root: [
// markdown tables
[/^\s*\|/, '@rematch', '@table_header'],
// headers (with #)
[/^(\s{0,3})(#+)((?:[^\\#]|@escapes)+)((?:#+)?)/, ['white', 'keyword', 'keyword', 'keyword']],
// headers (with =)
[/^\s*(=+|\-+)\s*$/, 'keyword'],
// headers (with ***)
[/^\s*((\*[ ]?)+)\s*$/, 'meta.separator'],
// quote
[/^\s*>+/, 'comment'],
// list (starting with * or number)
[/^\s*([\*\-+:]|\d+\.)\s/, 'keyword'],
// code block (4 spaces indent)
[/^(\t|[ ]{4})[^ ].*$/, 'string'],
// code block (3 tilde)
[/^\s*~~~\s*((?:\w|[\/\-#])+)?\s*$/, { token: 'string', next: '@codeblock' }],
// github style code blocks (with backticks and language)
[
/^\s*```\s*((?:\w|[\/\-#])+).*$/,
{ token: 'string', next: '@codeblockgh', nextEmbedded: '$1' }
],
// github style code blocks (with backticks but no language)
[/^\s*```\s*$/, { token: 'string', next: '@codeblock' }],
// markup within lines
{ include: '@linecontent' }
],
table_header: [
{ include: '@table_common' },
[/[^\|]+/, 'keyword.table.header'] // table header
],
table_body: [{ include: '@table_common' }, { include: '@linecontent' }],
table_common: [
[/\s*[\-:]+\s*/, { token: 'keyword', switchTo: 'table_body' }],
[/^\s*\|/, 'keyword.table.left'],
[/^\s*[^\|]/, '@rematch', '@pop'],
[/^\s*$/, '@rematch', '@pop'],
[
/\|/,
{
cases: {
'@eos': 'keyword.table.right',
'@default': 'keyword.table.middle' // inner |
}
}
]
],
codeblock: [
[/^\s*~~~\s*$/, { token: 'string', next: '@pop' }],
[/^\s*```\s*$/, { token: 'string', next: '@pop' }],
[/.*$/, 'variable.source']
],
// github style code blocks
codeblockgh: [
[/```\s*$/, { token: 'string', next: '@pop', nextEmbedded: '@pop' }],
[/[^`]+/, 'variable.source']
],
linecontent: [
// escapes
[/&\w+;/, 'string.escape'],
[/@escapes/, 'escape'],
// various markup
[/\b__([^\\_]|@escapes|_(?!_))+__\b/, 'strong'],
[/\*\*([^\\*]|@escapes|\*(?!\*))+\*\*/, 'strong'],
[/\b_[^_]+_\b/, 'emphasis'],
[/\*([^\\*]|@escapes)+\*/, 'emphasis'],
[/`([^\\`]|@escapes)+`/, 'variable'],
// links
[/\{+[^}]+\}+/, 'string.target'],
[/(!?\[)((?:[^\]\\]|@escapes)*)(\]\([^\)]+\))/, ['string.link', '', 'string.link']],
[/(!?\[)((?:[^\]\\]|@escapes)*)(\])/, 'string.link'],
// or html
{ include: 'html' }
],
// Note: it is tempting to rather switch to the real HTML mode instead of building our own here
// but currently there is a limitation in Monarch that prevents us from doing it: The opening
// '<' would start the HTML mode, however there is no way to jump 1 character back to let the
// HTML mode also tokenize the opening angle bracket. Thus, even though we could jump to HTML,
// we cannot correctly tokenize it in that mode yet.
html: [
// html tags
[/<(\w+)\/>/, 'tag'],
[
/<(\w+)/,
{
cases: {
'@empty': { token: 'tag', next: '@tag.$1' },
'@default': { token: 'tag', next: '@tag.$1' }
}
}
],
[/<\/(\w+)\s*>/, { token: 'tag' }],
[/<!--/, 'comment', '@comment']
],
comment: [
[/[^<\-]+/, 'comment.content'],
[/-->/, 'comment', '@pop'],
[/<!--/, 'comment.content.invalid'],
[/[<\-]/, 'comment.content']
],
// Almost full HTML tag matching, complete with embedded scripts & styles
tag: [
[/[ \t\r\n]+/, 'white'],
[
/(type)(\s*=\s*)(")([^"]+)(")/,
[
'attribute.name.html',
'delimiter.html',
'string.html',
{ token: 'string.html', switchTo: '@tag.$S2.$4' },
'string.html'
]
],
[
/(type)(\s*=\s*)(')([^']+)(')/,
[
'attribute.name.html',
'delimiter.html',
'string.html',
{ token: 'string.html', switchTo: '@tag.$S2.$4' },
'string.html'
]
],
[/(\w+)(\s*=\s*)("[^"]*"|'[^']*')/, ['attribute.name.html', 'delimiter.html', 'string.html']],
[/\w+/, 'attribute.name.html'],
[/\/>/, 'tag', '@pop'],
[
/>/,
{
cases: {
'$S2==style': {
token: 'tag',
switchTo: 'embeddedStyle',
nextEmbedded: 'text/css'
},
'$S2==script': {
cases: {
$S3: {
token: 'tag',
switchTo: 'embeddedScript',
nextEmbedded: '$S3'
},
'@default': {
token: 'tag',
switchTo: 'embeddedScript',
nextEmbedded: 'text/javascript'
}
}
},
'@default': { token: 'tag', next: '@pop' }
}
}
]
],
embeddedStyle: [
[/[^<]+/, ''],
[/<\/style\s*>/, { token: '@rematch', next: '@pop', nextEmbedded: '@pop' }],
[/</, '']
],
embeddedScript: [
[/[^<]+/, ''],
[/<\/script\s*>/, { token: '@rematch', next: '@pop', nextEmbedded: '@pop' }],
[/</, '']
]
}
};
});

@ -0,0 +1,205 @@
/*---------------------------------------------------------------------------------------------
* 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/mips/mips',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\#%\^\&\*\(\)\=\$\-\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,
comments: {
blockComment: ['###', '###'],
lineComment: '#'
},
folding: {
markers: {
start: new RegExp('^\\s*#region\\b'),
end: new RegExp('^\\s*#endregion\\b')
}
}
};
exports.language = {
defaultToken: '',
ignoreCase: false,
tokenPostfix: '.mips',
regEx: /\/(?!\/\/)(?:[^\/\\]|\\.)*\/[igm]*/,
keywords: [
'.data',
'.text',
'syscall',
'trap',
'add',
'addu',
'addi',
'addiu',
'and',
'andi',
'div',
'divu',
'mult',
'multu',
'nor',
'or',
'ori',
'sll',
'slv',
'sra',
'srav',
'srl',
'srlv',
'sub',
'subu',
'xor',
'xori',
'lhi',
'lho',
'lhi',
'llo',
'slt',
'slti',
'sltu',
'sltiu',
'beq',
'bgtz',
'blez',
'bne',
'j',
'jal',
'jalr',
'jr',
'lb',
'lbu',
'lh',
'lhu',
'lw',
'li',
'la',
'sb',
'sh',
'sw',
'mfhi',
'mflo',
'mthi',
'mtlo',
'move'
],
// we include these common regular expressions
symbols: /[\.,\:]+/,
escapes: /\\(?:[abfnrtv\\"'$]|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
// The main tokenizer for our languages
tokenizer: {
root: [
// identifiers and keywords
[/\$[a-zA-Z_]\w*/, 'variable.predefined'],
[
/[.a-zA-Z_]\w*/,
{
cases: {
this: 'variable.predefined',
'@keywords': { token: 'keyword.$0' },
'@default': ''
}
}
],
// whitespace
[/[ \t\r\n]+/, ''],
// Comments
[/#.*$/, 'comment'],
// regular expressions
['///', { token: 'regexp', next: '@hereregexp' }],
[/^(\s*)(@regEx)/, ['', 'regexp']],
[/(\,)(\s*)(@regEx)/, ['delimiter', '', 'regexp']],
[/(\:)(\s*)(@regEx)/, ['delimiter', '', 'regexp']],
// delimiters
[/@symbols/, 'delimiter'],
// numbers
[/\d+[eE]([\-+]?\d+)?/, 'number.float'],
[/\d+\.\d+([eE][\-+]?\d+)?/, 'number.float'],
[/0[xX][0-9a-fA-F]+/, 'number.hex'],
[/0[0-7]+(?!\d)/, 'number.octal'],
[/\d+/, 'number'],
// delimiter: after number because of .\d floats
[/[,.]/, 'delimiter'],
// strings:
[/"""/, 'string', '@herestring."""'],
[/'''/, 'string', "@herestring.'''"],
[
/"/,
{
cases: {
'@eos': 'string',
'@default': { token: 'string', next: '@string."' }
}
}
],
[
/'/,
{
cases: {
'@eos': 'string',
'@default': { token: 'string', next: "@string.'" }
}
}
]
],
string: [
[/[^"'\#\\]+/, 'string'],
[/@escapes/, 'string.escape'],
[/\./, 'string.escape.invalid'],
[/\./, 'string.escape.invalid'],
[
/#{/,
{
cases: {
'$S2=="': {
token: 'string',
next: 'root.interpolatedstring'
},
'@default': 'string'
}
}
],
[
/["']/,
{
cases: {
'$#==$S2': { token: 'string', next: '@pop' },
'@default': 'string'
}
}
],
[/#/, 'string']
],
herestring: [
[
/("""|''')/,
{
cases: {
'$1==$S2': { token: 'string', next: '@pop' },
'@default': 'string'
}
}
],
[/[^#\\'"]+/, 'string'],
[/['"]+/, 'string'],
[/@escapes/, 'string.escape'],
[/\./, 'string.escape.invalid'],
[/#{/, { token: 'string.quote', next: 'root.interpolatedstring' }],
[/#/, 'string']
],
comment: [
[/[^#]+/, 'comment'],
[/#/, 'comment']
],
hereregexp: [
[/[^\\\/#]+/, 'regexp'],
[/\\./, 'regexp'],
[/#.*$/, 'comment'],
['///[igm]*', { token: 'regexp', next: '@pop' }],
[/\//, 'regexp']
]
}
};
});

@ -0,0 +1,382 @@
/*---------------------------------------------------------------------------------------------
* 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/msdax/msdax',["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: [
['[', ']'],
['(', ')'],
['{', '}']
],
autoClosingPairs: [
{ open: '"', close: '"', notIn: ['string', 'comment'] },
{ open: "'", close: "'", notIn: ['string', 'comment'] },
{ open: '[', close: ']', notIn: ['string', 'comment'] },
{ open: '(', close: ')', notIn: ['string', 'comment'] },
{ open: '{', close: '}', notIn: ['string', 'comment'] }
]
};
exports.language = {
defaultToken: '',
tokenPostfix: '.msdax',
ignoreCase: true,
brackets: [
{ open: '[', close: ']', token: 'delimiter.square' },
{ open: '{', close: '}', token: 'delimiter.brackets' },
{ open: '(', close: ')', token: 'delimiter.parenthesis' }
],
keywords: [
// Query keywords
'VAR',
'RETURN',
'NOT',
'EVALUATE',
'DATATABLE',
'ORDER',
'BY',
'START',
'AT',
'DEFINE',
'MEASURE',
'ASC',
'DESC',
'IN',
// Datatable types
'BOOLEAN',
'DOUBLE',
'INTEGER',
'DATETIME',
'CURRENCY',
'STRING'
],
functions: [
// Relational
'CLOSINGBALANCEMONTH',
'CLOSINGBALANCEQUARTER',
'CLOSINGBALANCEYEAR',
'DATEADD',
'DATESBETWEEN',
'DATESINPERIOD',
'DATESMTD',
'DATESQTD',
'DATESYTD',
'ENDOFMONTH',
'ENDOFQUARTER',
'ENDOFYEAR',
'FIRSTDATE',
'FIRSTNONBLANK',
'LASTDATE',
'LASTNONBLANK',
'NEXTDAY',
'NEXTMONTH',
'NEXTQUARTER',
'NEXTYEAR',
'OPENINGBALANCEMONTH',
'OPENINGBALANCEQUARTER',
'OPENINGBALANCEYEAR',
'PARALLELPERIOD',
'PREVIOUSDAY',
'PREVIOUSMONTH',
'PREVIOUSQUARTER',
'PREVIOUSYEAR',
'SAMEPERIODLASTYEAR',
'STARTOFMONTH',
'STARTOFQUARTER',
'STARTOFYEAR',
'TOTALMTD',
'TOTALQTD',
'TOTALYTD',
'ADDCOLUMNS',
'ADDMISSINGITEMS',
'ALL',
'ALLEXCEPT',
'ALLNOBLANKROW',
'ALLSELECTED',
'CALCULATE',
'CALCULATETABLE',
'CALENDAR',
'CALENDARAUTO',
'CROSSFILTER',
'CROSSJOIN',
'CURRENTGROUP',
'DATATABLE',
'DETAILROWS',
'DISTINCT',
'EARLIER',
'EARLIEST',
'EXCEPT',
'FILTER',
'FILTERS',
'GENERATE',
'GENERATEALL',
'GROUPBY',
'IGNORE',
'INTERSECT',
'ISONORAFTER',
'KEEPFILTERS',
'LOOKUPVALUE',
'NATURALINNERJOIN',
'NATURALLEFTOUTERJOIN',
'RELATED',
'RELATEDTABLE',
'ROLLUP',
'ROLLUPADDISSUBTOTAL',
'ROLLUPGROUP',
'ROLLUPISSUBTOTAL',
'ROW',
'SAMPLE',
'SELECTCOLUMNS',
'SUBSTITUTEWITHINDEX',
'SUMMARIZE',
'SUMMARIZECOLUMNS',
'TOPN',
'TREATAS',
'UNION',
'USERELATIONSHIP',
'VALUES',
'SUM',
'SUMX',
'PATH',
'PATHCONTAINS',
'PATHITEM',
'PATHITEMREVERSE',
'PATHLENGTH',
'AVERAGE',
'AVERAGEA',
'AVERAGEX',
'COUNT',
'COUNTA',
'COUNTAX',
'COUNTBLANK',
'COUNTROWS',
'COUNTX',
'DISTINCTCOUNT',
'DIVIDE',
'GEOMEAN',
'GEOMEANX',
'MAX',
'MAXA',
'MAXX',
'MEDIAN',
'MEDIANX',
'MIN',
'MINA',
'MINX',
'PERCENTILE.EXC',
'PERCENTILE.INC',
'PERCENTILEX.EXC',
'PERCENTILEX.INC',
'PRODUCT',
'PRODUCTX',
'RANK.EQ',
'RANKX',
'STDEV.P',
'STDEV.S',
'STDEVX.P',
'STDEVX.S',
'VAR.P',
'VAR.S',
'VARX.P',
'VARX.S',
'XIRR',
'XNPV',
// Scalar
'DATE',
'DATEDIFF',
'DATEVALUE',
'DAY',
'EDATE',
'EOMONTH',
'HOUR',
'MINUTE',
'MONTH',
'NOW',
'SECOND',
'TIME',
'TIMEVALUE',
'TODAY',
'WEEKDAY',
'WEEKNUM',
'YEAR',
'YEARFRAC',
'CONTAINS',
'CONTAINSROW',
'CUSTOMDATA',
'ERROR',
'HASONEFILTER',
'HASONEVALUE',
'ISBLANK',
'ISCROSSFILTERED',
'ISEMPTY',
'ISERROR',
'ISEVEN',
'ISFILTERED',
'ISLOGICAL',
'ISNONTEXT',
'ISNUMBER',
'ISODD',
'ISSUBTOTAL',
'ISTEXT',
'USERNAME',
'USERPRINCIPALNAME',
'AND',
'FALSE',
'IF',
'IFERROR',
'NOT',
'OR',
'SWITCH',
'TRUE',
'ABS',
'ACOS',
'ACOSH',
'ACOT',
'ACOTH',
'ASIN',
'ASINH',
'ATAN',
'ATANH',
'BETA.DIST',
'BETA.INV',
'CEILING',
'CHISQ.DIST',
'CHISQ.DIST.RT',
'CHISQ.INV',
'CHISQ.INV.RT',
'COMBIN',
'COMBINA',
'CONFIDENCE.NORM',
'CONFIDENCE.T',
'COS',
'COSH',
'COT',
'COTH',
'CURRENCY',
'DEGREES',
'EVEN',
'EXP',
'EXPON.DIST',
'FACT',
'FLOOR',
'GCD',
'INT',
'ISO.CEILING',
'LCM',
'LN',
'LOG',
'LOG10',
'MOD',
'MROUND',
'ODD',
'PERMUT',
'PI',
'POISSON.DIST',
'POWER',
'QUOTIENT',
'RADIANS',
'RAND',
'RANDBETWEEN',
'ROUND',
'ROUNDDOWN',
'ROUNDUP',
'SIGN',
'SIN',
'SINH',
'SQRT',
'SQRTPI',
'TAN',
'TANH',
'TRUNC',
'BLANK',
'CONCATENATE',
'CONCATENATEX',
'EXACT',
'FIND',
'FIXED',
'FORMAT',
'LEFT',
'LEN',
'LOWER',
'MID',
'REPLACE',
'REPT',
'RIGHT',
'SEARCH',
'SUBSTITUTE',
'TRIM',
'UNICHAR',
'UNICODE',
'UPPER',
'VALUE'
],
tokenizer: {
root: [
{ include: '@comments' },
{ include: '@whitespace' },
{ include: '@numbers' },
{ include: '@strings' },
{ include: '@complexIdentifiers' },
[/[;,.]/, 'delimiter'],
[/[({})]/, '@brackets'],
[
/[a-z_][a-zA-Z0-9_]*/,
{
cases: {
'@keywords': 'keyword',
'@functions': 'keyword',
'@default': 'identifier'
}
}
],
[/[<>=!%&+\-*/|~^]/, 'operator']
],
whitespace: [[/\s+/, 'white']],
comments: [
[/\/\/+.*/, 'comment'],
[/\/\*/, { token: 'comment.quote', next: '@comment' }]
],
comment: [
[/[^*/]+/, 'comment'],
[/\*\//, { token: 'comment.quote', next: '@pop' }],
[/./, 'comment']
],
numbers: [
[/0[xX][0-9a-fA-F]*/, 'number'],
[/[$][+-]*\d*(\.\d*)?/, 'number'],
[/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/, 'number']
],
strings: [
[/N"/, { token: 'string', next: '@string' }],
[/"/, { token: 'string', next: '@string' }]
],
string: [
[/[^"]+/, 'string'],
[/""/, 'string'],
[/"/, { token: 'string', next: '@pop' }]
],
complexIdentifiers: [
[/\[/, { token: 'identifier.quote', next: '@bracketedIdentifier' }],
[/'/, { token: 'identifier.quote', next: '@quotedIdentifier' }]
],
bracketedIdentifier: [
[/[^\]]+/, 'identifier'],
[/]]/, 'identifier'],
[/]/, { token: 'identifier.quote', next: '@pop' }]
],
quotedIdentifier: [
[/[^']+/, 'identifier'],
[/''/, 'identifier'],
[/'/, { token: 'identifier.quote', next: '@pop' }]
]
}
};
});

@ -0,0 +1,824 @@
/*---------------------------------------------------------------------------------------------
* 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/mysql/mysql',["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: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
]
};
exports.language = {
defaultToken: '',
tokenPostfix: '.sql',
ignoreCase: true,
brackets: [
{ open: '[', close: ']', token: 'delimiter.square' },
{ open: '(', close: ')', token: 'delimiter.parenthesis' }
],
keywords: [
// This list is generated using `keywords.js`
'ACCESSIBLE',
'ADD',
'ALL',
'ALTER',
'ANALYZE',
'AND',
'AS',
'ASC',
'ASENSITIVE',
'BEFORE',
'BETWEEN',
'BIGINT',
'BINARY',
'BLOB',
'BOTH',
'BY',
'CALL',
'CASCADE',
'CASE',
'CHANGE',
'CHAR',
'CHARACTER',
'CHECK',
'COLLATE',
'COLUMN',
'CONDITION',
'CONSTRAINT',
'CONTINUE',
'CONVERT',
'CREATE',
'CROSS',
'CUBE',
'CUME_DIST',
'CURRENT_DATE',
'CURRENT_TIME',
'CURRENT_TIMESTAMP',
'CURRENT_USER',
'CURSOR',
'DATABASE',
'DATABASES',
'DAY_HOUR',
'DAY_MICROSECOND',
'DAY_MINUTE',
'DAY_SECOND',
'DEC',
'DECIMAL',
'DECLARE',
'DEFAULT',
'DELAYED',
'DELETE',
'DENSE_RANK',
'DESC',
'DESCRIBE',
'DETERMINISTIC',
'DISTINCT',
'DISTINCTROW',
'DIV',
'DOUBLE',
'DROP',
'DUAL',
'EACH',
'ELSE',
'ELSEIF',
'EMPTY',
'ENCLOSED',
'ESCAPED',
'EXCEPT',
'EXISTS',
'EXIT',
'EXPLAIN',
'FALSE',
'FETCH',
'FIRST_VALUE',
'FLOAT',
'FLOAT4',
'FLOAT8',
'FOR',
'FORCE',
'FOREIGN',
'FROM',
'FULLTEXT',
'FUNCTION',
'GENERATED',
'GET',
'GRANT',
'GROUP',
'GROUPING',
'GROUPS',
'HAVING',
'HIGH_PRIORITY',
'HOUR_MICROSECOND',
'HOUR_MINUTE',
'HOUR_SECOND',
'IF',
'IGNORE',
'IN',
'INDEX',
'INFILE',
'INNER',
'INOUT',
'INSENSITIVE',
'INSERT',
'INT',
'INT1',
'INT2',
'INT3',
'INT4',
'INT8',
'INTEGER',
'INTERVAL',
'INTO',
'IO_AFTER_GTIDS',
'IO_BEFORE_GTIDS',
'IS',
'ITERATE',
'JOIN',
'JSON_TABLE',
'KEY',
'KEYS',
'KILL',
'LAG',
'LAST_VALUE',
'LATERAL',
'LEAD',
'LEADING',
'LEAVE',
'LEFT',
'LIKE',
'LIMIT',
'LINEAR',
'LINES',
'LOAD',
'LOCALTIME',
'LOCALTIMESTAMP',
'LOCK',
'LONG',
'LONGBLOB',
'LONGTEXT',
'LOOP',
'LOW_PRIORITY',
'MASTER_BIND',
'MASTER_SSL_VERIFY_SERVER_CERT',
'MATCH',
'MAXVALUE',
'MEDIUMBLOB',
'MEDIUMINT',
'MEDIUMTEXT',
'MIDDLEINT',
'MINUTE_MICROSECOND',
'MINUTE_SECOND',
'MOD',
'MODIFIES',
'NATURAL',
'NOT',
'NO_WRITE_TO_BINLOG',
'NTH_VALUE',
'NTILE',
'NULL',
'NUMERIC',
'OF',
'ON',
'OPTIMIZE',
'OPTIMIZER_COSTS',
'OPTION',
'OPTIONALLY',
'OR',
'ORDER',
'OUT',
'OUTER',
'OUTFILE',
'OVER',
'PARTITION',
'PERCENT_RANK',
'PRECISION',
'PRIMARY',
'PROCEDURE',
'PURGE',
'RANGE',
'RANK',
'READ',
'READS',
'READ_WRITE',
'REAL',
'RECURSIVE',
'REFERENCES',
'REGEXP',
'RELEASE',
'RENAME',
'REPEAT',
'REPLACE',
'REQUIRE',
'RESIGNAL',
'RESTRICT',
'RETURN',
'REVOKE',
'RIGHT',
'RLIKE',
'ROW',
'ROWS',
'ROW_NUMBER',
'SCHEMA',
'SCHEMAS',
'SECOND_MICROSECOND',
'SELECT',
'SENSITIVE',
'SEPARATOR',
'SET',
'SHOW',
'SIGNAL',
'SMALLINT',
'SPATIAL',
'SPECIFIC',
'SQL',
'SQLEXCEPTION',
'SQLSTATE',
'SQLWARNING',
'SQL_BIG_RESULT',
'SQL_CALC_FOUND_ROWS',
'SQL_SMALL_RESULT',
'SSL',
'STARTING',
'STORED',
'STRAIGHT_JOIN',
'SYSTEM',
'TABLE',
'TERMINATED',
'THEN',
'TINYBLOB',
'TINYINT',
'TINYTEXT',
'TO',
'TRAILING',
'TRIGGER',
'TRUE',
'UNDO',
'UNION',
'UNIQUE',
'UNLOCK',
'UNSIGNED',
'UPDATE',
'USAGE',
'USE',
'USING',
'UTC_DATE',
'UTC_TIME',
'UTC_TIMESTAMP',
'VALUES',
'VARBINARY',
'VARCHAR',
'VARCHARACTER',
'VARYING',
'VIRTUAL',
'WHEN',
'WHERE',
'WHILE',
'WINDOW',
'WITH',
'WRITE',
'XOR',
'YEAR_MONTH',
'ZEROFILL'
],
operators: [
'AND',
'BETWEEN',
'IN',
'LIKE',
'NOT',
'OR',
'IS',
'NULL',
'INTERSECT',
'UNION',
'INNER',
'JOIN',
'LEFT',
'OUTER',
'RIGHT'
],
builtinFunctions: [
'ABS',
'ACOS',
'ADDDATE',
'ADDTIME',
'AES_DECRYPT',
'AES_ENCRYPT',
'ANY_VALUE',
'Area',
'AsBinary',
'AsWKB',
'ASCII',
'ASIN',
'AsText',
'AsWKT',
'ASYMMETRIC_DECRYPT',
'ASYMMETRIC_DERIVE',
'ASYMMETRIC_ENCRYPT',
'ASYMMETRIC_SIGN',
'ASYMMETRIC_VERIFY',
'ATAN',
'ATAN2',
'ATAN',
'AVG',
'BENCHMARK',
'BIN',
'BIT_AND',
'BIT_COUNT',
'BIT_LENGTH',
'BIT_OR',
'BIT_XOR',
'Buffer',
'CAST',
'CEIL',
'CEILING',
'Centroid',
'CHAR',
'CHAR_LENGTH',
'CHARACTER_LENGTH',
'CHARSET',
'COALESCE',
'COERCIBILITY',
'COLLATION',
'COMPRESS',
'CONCAT',
'CONCAT_WS',
'CONNECTION_ID',
'Contains',
'CONV',
'CONVERT',
'CONVERT_TZ',
'ConvexHull',
'COS',
'COT',
'COUNT',
'CRC32',
'CREATE_ASYMMETRIC_PRIV_KEY',
'CREATE_ASYMMETRIC_PUB_KEY',
'CREATE_DH_PARAMETERS',
'CREATE_DIGEST',
'Crosses',
'CURDATE',
'CURRENT_DATE',
'CURRENT_TIME',
'CURRENT_TIMESTAMP',
'CURRENT_USER',
'CURTIME',
'DATABASE',
'DATE',
'DATE_ADD',
'DATE_FORMAT',
'DATE_SUB',
'DATEDIFF',
'DAY',
'DAYNAME',
'DAYOFMONTH',
'DAYOFWEEK',
'DAYOFYEAR',
'DECODE',
'DEFAULT',
'DEGREES',
'DES_DECRYPT',
'DES_ENCRYPT',
'Dimension',
'Disjoint',
'Distance',
'ELT',
'ENCODE',
'ENCRYPT',
'EndPoint',
'Envelope',
'Equals',
'EXP',
'EXPORT_SET',
'ExteriorRing',
'EXTRACT',
'ExtractValue',
'FIELD',
'FIND_IN_SET',
'FLOOR',
'FORMAT',
'FOUND_ROWS',
'FROM_BASE64',
'FROM_DAYS',
'FROM_UNIXTIME',
'GeomCollFromText',
'GeometryCollectionFromText',
'GeomCollFromWKB',
'GeometryCollectionFromWKB',
'GeometryCollection',
'GeometryN',
'GeometryType',
'GeomFromText',
'GeometryFromText',
'GeomFromWKB',
'GeometryFromWKB',
'GET_FORMAT',
'GET_LOCK',
'GLength',
'GREATEST',
'GROUP_CONCAT',
'GTID_SUBSET',
'GTID_SUBTRACT',
'HEX',
'HOUR',
'IF',
'IFNULL',
'INET_ATON',
'INET_NTOA',
'INET6_ATON',
'INET6_NTOA',
'INSERT',
'INSTR',
'InteriorRingN',
'Intersects',
'INTERVAL',
'IS_FREE_LOCK',
'IS_IPV4',
'IS_IPV4_COMPAT',
'IS_IPV4_MAPPED',
'IS_IPV6',
'IS_USED_LOCK',
'IsClosed',
'IsEmpty',
'ISNULL',
'IsSimple',
'JSON_APPEND',
'JSON_ARRAY',
'JSON_ARRAY_APPEND',
'JSON_ARRAY_INSERT',
'JSON_CONTAINS',
'JSON_CONTAINS_PATH',
'JSON_DEPTH',
'JSON_EXTRACT',
'JSON_INSERT',
'JSON_KEYS',
'JSON_LENGTH',
'JSON_MERGE',
'JSON_MERGE_PRESERVE',
'JSON_OBJECT',
'JSON_QUOTE',
'JSON_REMOVE',
'JSON_REPLACE',
'JSON_SEARCH',
'JSON_SET',
'JSON_TYPE',
'JSON_UNQUOTE',
'JSON_VALID',
'LAST_INSERT_ID',
'LCASE',
'LEAST',
'LEFT',
'LENGTH',
'LineFromText',
'LineStringFromText',
'LineFromWKB',
'LineStringFromWKB',
'LineString',
'LN',
'LOAD_FILE',
'LOCALTIME',
'LOCALTIMESTAMP',
'LOCATE',
'LOG',
'LOG10',
'LOG2',
'LOWER',
'LPAD',
'LTRIM',
'MAKE_SET',
'MAKEDATE',
'MAKETIME',
'MASTER_POS_WAIT',
'MAX',
'MBRContains',
'MBRCoveredBy',
'MBRCovers',
'MBRDisjoint',
'MBREqual',
'MBREquals',
'MBRIntersects',
'MBROverlaps',
'MBRTouches',
'MBRWithin',
'MD5',
'MICROSECOND',
'MID',
'MIN',
'MINUTE',
'MLineFromText',
'MultiLineStringFromText',
'MLineFromWKB',
'MultiLineStringFromWKB',
'MOD',
'MONTH',
'MONTHNAME',
'MPointFromText',
'MultiPointFromText',
'MPointFromWKB',
'MultiPointFromWKB',
'MPolyFromText',
'MultiPolygonFromText',
'MPolyFromWKB',
'MultiPolygonFromWKB',
'MultiLineString',
'MultiPoint',
'MultiPolygon',
'NAME_CONST',
'NOT IN',
'NOW',
'NULLIF',
'NumGeometries',
'NumInteriorRings',
'NumPoints',
'OCT',
'OCTET_LENGTH',
'OLD_PASSWORD',
'ORD',
'Overlaps',
'PASSWORD',
'PERIOD_ADD',
'PERIOD_DIFF',
'PI',
'Point',
'PointFromText',
'PointFromWKB',
'PointN',
'PolyFromText',
'PolygonFromText',
'PolyFromWKB',
'PolygonFromWKB',
'Polygon',
'POSITION',
'POW',
'POWER',
'PROCEDURE ANALYSE',
'QUARTER',
'QUOTE',
'RADIANS',
'RAND',
'RANDOM_BYTES',
'RELEASE_ALL_LOCKS',
'RELEASE_LOCK',
'REPEAT',
'REPLACE',
'REVERSE',
'RIGHT',
'ROUND',
'ROW_COUNT',
'RPAD',
'RTRIM',
'SCHEMA',
'SEC_TO_TIME',
'SECOND',
'SESSION_USER',
'SHA1',
'SHA',
'SHA2',
'SIGN',
'SIN',
'SLEEP',
'SOUNDEX',
'SPACE',
'SQRT',
'SRID',
'ST_Area',
'ST_AsBinary',
'ST_AsWKB',
'ST_AsGeoJSON',
'ST_AsText',
'ST_AsWKT',
'ST_Buffer',
'ST_Buffer_Strategy',
'ST_Centroid',
'ST_Contains',
'ST_ConvexHull',
'ST_Crosses',
'ST_Difference',
'ST_Dimension',
'ST_Disjoint',
'ST_Distance',
'ST_Distance_Sphere',
'ST_EndPoint',
'ST_Envelope',
'ST_Equals',
'ST_ExteriorRing',
'ST_GeoHash',
'ST_GeomCollFromText',
'ST_GeometryCollectionFromText',
'ST_GeomCollFromTxt',
'ST_GeomCollFromWKB',
'ST_GeometryCollectionFromWKB',
'ST_GeometryN',
'ST_GeometryType',
'ST_GeomFromGeoJSON',
'ST_GeomFromText',
'ST_GeometryFromText',
'ST_GeomFromWKB',
'ST_GeometryFromWKB',
'ST_InteriorRingN',
'ST_Intersection',
'ST_Intersects',
'ST_IsClosed',
'ST_IsEmpty',
'ST_IsSimple',
'ST_IsValid',
'ST_LatFromGeoHash',
'ST_Length',
'ST_LineFromText',
'ST_LineStringFromText',
'ST_LineFromWKB',
'ST_LineStringFromWKB',
'ST_LongFromGeoHash',
'ST_MakeEnvelope',
'ST_MLineFromText',
'ST_MultiLineStringFromText',
'ST_MLineFromWKB',
'ST_MultiLineStringFromWKB',
'ST_MPointFromText',
'ST_MultiPointFromText',
'ST_MPointFromWKB',
'ST_MultiPointFromWKB',
'ST_MPolyFromText',
'ST_MultiPolygonFromText',
'ST_MPolyFromWKB',
'ST_MultiPolygonFromWKB',
'ST_NumGeometries',
'ST_NumInteriorRing',
'ST_NumInteriorRings',
'ST_NumPoints',
'ST_Overlaps',
'ST_PointFromGeoHash',
'ST_PointFromText',
'ST_PointFromWKB',
'ST_PointN',
'ST_PolyFromText',
'ST_PolygonFromText',
'ST_PolyFromWKB',
'ST_PolygonFromWKB',
'ST_Simplify',
'ST_SRID',
'ST_StartPoint',
'ST_SymDifference',
'ST_Touches',
'ST_Union',
'ST_Validate',
'ST_Within',
'ST_X',
'ST_Y',
'StartPoint',
'STD',
'STDDEV',
'STDDEV_POP',
'STDDEV_SAMP',
'STR_TO_DATE',
'STRCMP',
'SUBDATE',
'SUBSTR',
'SUBSTRING',
'SUBSTRING_INDEX',
'SUBTIME',
'SUM',
'SYSDATE',
'SYSTEM_USER',
'TAN',
'TIME',
'TIME_FORMAT',
'TIME_TO_SEC',
'TIMEDIFF',
'TIMESTAMP',
'TIMESTAMPADD',
'TIMESTAMPDIFF',
'TO_BASE64',
'TO_DAYS',
'TO_SECONDS',
'Touches',
'TRIM',
'TRUNCATE',
'UCASE',
'UNCOMPRESS',
'UNCOMPRESSED_LENGTH',
'UNHEX',
'UNIX_TIMESTAMP',
'UpdateXML',
'UPPER',
'USER',
'UTC_DATE',
'UTC_TIME',
'UTC_TIMESTAMP',
'UUID',
'UUID_SHORT',
'VALIDATE_PASSWORD_STRENGTH',
'VALUES',
'VAR_POP',
'VAR_SAMP',
'VARIANCE',
'VERSION',
'WAIT_FOR_EXECUTED_GTID_SET',
'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS',
'WEEK',
'WEEKDAY',
'WEEKOFYEAR',
'WEIGHT_STRING',
'Within',
'X',
'Y',
'YEAR',
'YEARWEEK'
],
builtinVariables: [
// NOT SUPPORTED
],
tokenizer: {
root: [
{ include: '@comments' },
{ include: '@whitespace' },
{ include: '@numbers' },
{ include: '@strings' },
{ include: '@complexIdentifiers' },
{ include: '@scopes' },
[/[;,.]/, 'delimiter'],
[/[()]/, '@brackets'],
[
/[\w@]+/,
{
cases: {
'@operators': 'operator',
'@builtinVariables': 'predefined',
'@builtinFunctions': 'predefined',
'@keywords': 'keyword',
'@default': 'identifier'
}
}
],
[/[<>=!%&+\-*/|~^]/, 'operator']
],
whitespace: [[/\s+/, 'white']],
comments: [
[/--+.*/, 'comment'],
[/#+.*/, 'comment'],
[/\/\*/, { token: 'comment.quote', next: '@comment' }]
],
comment: [
[/[^*/]+/, 'comment'],
// Not supporting nested comments, as nested comments seem to not be standard?
// i.e. http://stackoverflow.com/questions/728172/are-there-multiline-comment-delimiters-in-sql-that-are-vendor-agnostic
// [/\/\*/, { token: 'comment.quote', next: '@push' }], // nested comment not allowed :-(
[/\*\//, { token: 'comment.quote', next: '@pop' }],
[/./, 'comment']
],
numbers: [
[/0[xX][0-9a-fA-F]*/, 'number'],
[/[$][+-]*\d*(\.\d*)?/, 'number'],
[/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/, 'number']
],
strings: [
[/'/, { token: 'string', next: '@string' }],
[/"/, { token: 'string.double', next: '@stringDouble' }]
],
string: [
[/[^']+/, 'string'],
[/''/, 'string'],
[/'/, { token: 'string', next: '@pop' }]
],
stringDouble: [
[/[^"]+/, 'string.double'],
[/""/, 'string.double'],
[/"/, { token: 'string.double', next: '@pop' }]
],
complexIdentifiers: [[/`/, { token: 'identifier.quote', next: '@quotedIdentifier' }]],
quotedIdentifier: [
[/[^`]+/, 'identifier'],
[/``/, 'identifier'],
[/`/, { token: 'identifier.quote', next: '@pop' }]
],
scopes: [
// NOT SUPPORTED
]
}
};
});

@ -0,0 +1,190 @@
/*---------------------------------------------------------------------------------------------
* 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/objective-c/objective-c',["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: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
]
};
exports.language = {
defaultToken: '',
tokenPostfix: '.objective-c',
keywords: [
'#import',
'#include',
'#define',
'#else',
'#endif',
'#if',
'#ifdef',
'#ifndef',
'#ident',
'#undef',
'@class',
'@defs',
'@dynamic',
'@encode',
'@end',
'@implementation',
'@interface',
'@package',
'@private',
'@protected',
'@property',
'@protocol',
'@public',
'@selector',
'@synthesize',
'__declspec',
'assign',
'auto',
'BOOL',
'break',
'bycopy',
'byref',
'case',
'char',
'Class',
'const',
'copy',
'continue',
'default',
'do',
'double',
'else',
'enum',
'extern',
'FALSE',
'false',
'float',
'for',
'goto',
'if',
'in',
'int',
'id',
'inout',
'IMP',
'long',
'nil',
'nonatomic',
'NULL',
'oneway',
'out',
'private',
'public',
'protected',
'readwrite',
'readonly',
'register',
'return',
'SEL',
'self',
'short',
'signed',
'sizeof',
'static',
'struct',
'super',
'switch',
'typedef',
'TRUE',
'true',
'union',
'unsigned',
'volatile',
'void',
'while'
],
decpart: /\d(_?\d)*/,
decimal: /0|@decpart/,
tokenizer: {
root: [
{ include: '@comments' },
{ include: '@whitespace' },
{ include: '@numbers' },
{ include: '@strings' },
[/[,:;]/, 'delimiter'],
[/[{}\[\]()<>]/, '@brackets'],
[
/[a-zA-Z@#]\w*/,
{
cases: {
'@keywords': 'keyword',
'@default': 'identifier'
}
}
],
[/[<>=\\+\\-\\*\\/\\^\\|\\~,]|and\\b|or\\b|not\\b]/, 'operator']
],
whitespace: [[/\s+/, 'white']],
comments: [
['\\/\\*', 'comment', '@comment'],
['\\/\\/+.*', 'comment']
],
comment: [
['\\*\\/', 'comment', '@pop'],
['.', 'comment']
],
numbers: [
[/0[xX][0-9a-fA-F]*(_?[0-9a-fA-F])*/, 'number.hex'],
[
/@decimal((\.@decpart)?([eE][\-+]?@decpart)?)[fF]*/,
{
cases: {
'(\\d)*': 'number',
$0: 'number.float'
}
}
]
],
// Recognize strings, including those broken across lines with \ (but not without)
strings: [
[/'$/, 'string.escape', '@popall'],
[/'/, 'string.escape', '@stringBody'],
[/"$/, 'string.escape', '@popall'],
[/"/, 'string.escape', '@dblStringBody']
],
stringBody: [
[/[^\\']+$/, 'string', '@popall'],
[/[^\\']+/, 'string'],
[/\\./, 'string'],
[/'/, 'string.escape', '@popall'],
[/\\$/, 'string']
],
dblStringBody: [
[/[^\\"]+$/, 'string', '@popall'],
[/[^\\"]+/, 'string'],
[/\\./, 'string'],
[/"/, 'string.escape', '@popall'],
[/\\$/, 'string']
]
}
};
});

@ -0,0 +1,257 @@
/*---------------------------------------------------------------------------------------------
* 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/pascal/pascal',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
// the default separators except `@$`
wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,
comments: {
lineComment: '//',
blockComment: ['{', '}']
},
brackets: [
['{', '}'],
['[', ']'],
['(', ')'],
['<', '>']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '<', close: '>' },
{ open: "'", close: "'" }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '<', close: '>' },
{ open: "'", close: "'" }
],
folding: {
markers: {
start: new RegExp("^\\s*\\{\\$REGION(\\s\\'.*\\')?\\}"),
end: new RegExp('^\\s*\\{\\$ENDREGION\\}')
}
}
};
exports.language = {
defaultToken: '',
tokenPostfix: '.pascal',
ignoreCase: true,
brackets: [
{ open: '{', close: '}', token: 'delimiter.curly' },
{ open: '[', close: ']', token: 'delimiter.square' },
{ open: '(', close: ')', token: 'delimiter.parenthesis' },
{ open: '<', close: '>', token: 'delimiter.angle' }
],
keywords: [
'absolute',
'abstract',
'all',
'and_then',
'array',
'as',
'asm',
'attribute',
'begin',
'bindable',
'case',
'class',
'const',
'contains',
'default',
'div',
'else',
'end',
'except',
'exports',
'external',
'far',
'file',
'finalization',
'finally',
'forward',
'generic',
'goto',
'if',
'implements',
'import',
'in',
'index',
'inherited',
'initialization',
'interrupt',
'is',
'label',
'library',
'mod',
'module',
'name',
'near',
'not',
'object',
'of',
'on',
'only',
'operator',
'or_else',
'otherwise',
'override',
'package',
'packed',
'pow',
'private',
'program',
'protected',
'public',
'published',
'interface',
'implementation',
'qualified',
'read',
'record',
'resident',
'requires',
'resourcestring',
'restricted',
'segment',
'set',
'shl',
'shr',
'specialize',
'stored',
'strict',
'then',
'threadvar',
'to',
'try',
'type',
'unit',
'uses',
'var',
'view',
'virtual',
'dynamic',
'overload',
'reintroduce',
'with',
'write',
'xor',
'true',
'false',
'procedure',
'function',
'constructor',
'destructor',
'property',
'break',
'continue',
'exit',
'abort',
'while',
'do',
'for',
'raise',
'repeat',
'until'
],
typeKeywords: [
'boolean',
'double',
'byte',
'integer',
'shortint',
'char',
'longint',
'float',
'string'
],
operators: [
'=',
'>',
'<',
'<=',
'>=',
'<>',
':',
':=',
'and',
'or',
'+',
'-',
'*',
'/',
'@',
'&',
'^',
'%'
],
// we include these common regular expressions
symbols: /[=><:@\^&|+\-*\/\^%]+/,
// The main tokenizer for our languages
tokenizer: {
root: [
// identifiers and keywords
[
/[a-zA-Z_][\w]*/,
{
cases: {
'@keywords': { token: 'keyword.$0' },
'@default': 'identifier'
}
}
],
// whitespace
{ include: '@whitespace' },
// delimiters and operators
[/[{}()\[\]]/, '@brackets'],
[/[<>](?!@symbols)/, '@brackets'],
[
/@symbols/,
{
cases: {
'@operators': 'delimiter',
'@default': ''
}
}
],
// numbers
[/\d*\.\d+([eE][\-+]?\d+)?/, 'number.float'],
[/\$[0-9a-fA-F]{1,16}/, 'number.hex'],
[/\d+/, 'number'],
// delimiter: after number because of .\d floats
[/[;,.]/, 'delimiter'],
// strings
[/'([^'\\]|\\.)*$/, 'string.invalid'],
[/'/, 'string', '@string'],
// characters
[/'[^\\']'/, 'string'],
[/'/, 'string.invalid'],
[/\#\d+/, 'string']
],
comment: [
[/[^\*\}]+/, 'comment'],
//[/\(\*/, 'comment', '@push' ], // nested comment not allowed :-(
[/\}/, 'comment', '@pop'],
[/[\{]/, 'comment']
],
string: [
[/[^\\']+/, 'string'],
[/\\./, 'string.escape.invalid'],
[/'/, { token: 'string.quote', bracket: '@close', next: '@pop' }]
],
whitespace: [
[/[ \t\r\n]+/, 'white'],
[/\{/, 'comment', '@comment'],
[/\/\/.*$/, 'comment']
]
}
};
});

@ -0,0 +1,170 @@
/*---------------------------------------------------------------------------------------------
* 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/pascaligo/pascaligo',["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: [
['{', '}'],
['[', ']'],
['(', ')'],
['<', '>']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '<', close: '>' },
{ open: "'", close: "'" }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '<', close: '>' },
{ open: "'", close: "'" }
]
};
exports.language = {
defaultToken: '',
tokenPostfix: '.pascaligo',
ignoreCase: true,
brackets: [
{ open: '{', close: '}', token: 'delimiter.curly' },
{ open: '[', close: ']', token: 'delimiter.square' },
{ open: '(', close: ')', token: 'delimiter.parenthesis' },
{ open: '<', close: '>', token: 'delimiter.angle' }
],
keywords: [
'begin',
'block',
'case',
'const',
'else',
'end',
'fail',
'for',
'from',
'function',
'if',
'is',
'nil',
'of',
'remove',
'return',
'skip',
'then',
'type',
'var',
'while',
'with',
'option',
'None',
'transaction'
],
typeKeywords: [
'bool',
'int',
'list',
'map',
'nat',
'record',
'string',
'unit',
'address',
'map',
'mtz',
'xtz'
],
operators: [
'=',
'>',
'<',
'<=',
'>=',
'<>',
':',
':=',
'and',
'mod',
'or',
'+',
'-',
'*',
'/',
'@',
'&',
'^',
'%'
],
// we include these common regular expressions
symbols: /[=><:@\^&|+\-*\/\^%]+/,
// The main tokenizer for our languages
tokenizer: {
root: [
// identifiers and keywords
[
/[a-zA-Z_][\w]*/,
{
cases: {
'@keywords': { token: 'keyword.$0' },
'@default': 'identifier'
}
}
],
// whitespace
{ include: '@whitespace' },
// delimiters and operators
[/[{}()\[\]]/, '@brackets'],
[/[<>](?!@symbols)/, '@brackets'],
[
/@symbols/,
{
cases: {
'@operators': 'delimiter',
'@default': ''
}
}
],
// numbers
[/\d*\.\d+([eE][\-+]?\d+)?/, 'number.float'],
[/\$[0-9a-fA-F]{1,16}/, 'number.hex'],
[/\d+/, 'number'],
// delimiter: after number because of .\d floats
[/[;,.]/, 'delimiter'],
// strings
[/'([^'\\]|\\.)*$/, 'string.invalid'],
[/'/, 'string', '@string'],
// characters
[/'[^\\']'/, 'string'],
[/'/, 'string.invalid'],
[/\#\d+/, 'string']
],
/* */
comment: [
[/[^\(\*]+/, 'comment'],
//[/\(\*/, 'comment', '@push' ], // nested comment not allowed :-(
[/\*\)/, 'comment', '@pop'],
[/\(\*/, 'comment']
],
string: [
[/[^\\']+/, 'string'],
[/\\./, 'string.escape.invalid'],
[/'/, { token: 'string.quote', bracket: '@close', next: '@pop' }]
],
whitespace: [
[/[ \t\r\n]+/, 'white'],
[/\(\*/, 'comment', '@comment'],
[/\/\/.*$/, 'comment']
]
}
};
});

@ -0,0 +1,628 @@
/*---------------------------------------------------------------------------------------------
* 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/perl/perl',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
comments: {
lineComment: '#'
},
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" },
{ open: '`', close: '`' }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" },
{ open: '`', close: '`' }
]
};
exports.language = {
defaultToken: '',
tokenPostfix: '.perl',
brackets: [
{ token: 'delimiter.bracket', open: '{', close: '}' },
{ token: 'delimiter.parenthesis', open: '(', close: ')' },
{ token: 'delimiter.square', open: '[', close: ']' }
],
// https://learn.perl.org/docs/keywords.html
// Perl syntax
keywords: [
'__DATA__',
'else',
'lock',
'__END__',
'elsif',
'lt',
'__FILE__',
'eq',
'__LINE__',
'exp',
'ne',
'sub',
'__PACKAGE__',
'for',
'no',
'and',
'foreach',
'or',
'unless',
'cmp',
'ge',
'package',
'until',
'continue',
'gt',
'while',
'CORE',
'if',
'xor',
'do',
'le',
'__DIE__',
'__WARN__'
],
// Perl functions
builtinFunctions: [
'-A',
'END',
'length',
'setpgrp',
'-B',
'endgrent',
'link',
'setpriority',
'-b',
'endhostent',
'listen',
'setprotoent',
'-C',
'endnetent',
'local',
'setpwent',
'-c',
'endprotoent',
'localtime',
'setservent',
'-d',
'endpwent',
'log',
'setsockopt',
'-e',
'endservent',
'lstat',
'shift',
'-f',
'eof',
'map',
'shmctl',
'-g',
'eval',
'mkdir',
'shmget',
'-k',
'exec',
'msgctl',
'shmread',
'-l',
'exists',
'msgget',
'shmwrite',
'-M',
'exit',
'msgrcv',
'shutdown',
'-O',
'fcntl',
'msgsnd',
'sin',
'-o',
'fileno',
'my',
'sleep',
'-p',
'flock',
'next',
'socket',
'-r',
'fork',
'not',
'socketpair',
'-R',
'format',
'oct',
'sort',
'-S',
'formline',
'open',
'splice',
'-s',
'getc',
'opendir',
'split',
'-T',
'getgrent',
'ord',
'sprintf',
'-t',
'getgrgid',
'our',
'sqrt',
'-u',
'getgrnam',
'pack',
'srand',
'-w',
'gethostbyaddr',
'pipe',
'stat',
'-W',
'gethostbyname',
'pop',
'state',
'-X',
'gethostent',
'pos',
'study',
'-x',
'getlogin',
'print',
'substr',
'-z',
'getnetbyaddr',
'printf',
'symlink',
'abs',
'getnetbyname',
'prototype',
'syscall',
'accept',
'getnetent',
'push',
'sysopen',
'alarm',
'getpeername',
'quotemeta',
'sysread',
'atan2',
'getpgrp',
'rand',
'sysseek',
'AUTOLOAD',
'getppid',
'read',
'system',
'BEGIN',
'getpriority',
'readdir',
'syswrite',
'bind',
'getprotobyname',
'readline',
'tell',
'binmode',
'getprotobynumber',
'readlink',
'telldir',
'bless',
'getprotoent',
'readpipe',
'tie',
'break',
'getpwent',
'recv',
'tied',
'caller',
'getpwnam',
'redo',
'time',
'chdir',
'getpwuid',
'ref',
'times',
'CHECK',
'getservbyname',
'rename',
'truncate',
'chmod',
'getservbyport',
'require',
'uc',
'chomp',
'getservent',
'reset',
'ucfirst',
'chop',
'getsockname',
'return',
'umask',
'chown',
'getsockopt',
'reverse',
'undef',
'chr',
'glob',
'rewinddir',
'UNITCHECK',
'chroot',
'gmtime',
'rindex',
'unlink',
'close',
'goto',
'rmdir',
'unpack',
'closedir',
'grep',
'say',
'unshift',
'connect',
'hex',
'scalar',
'untie',
'cos',
'index',
'seek',
'use',
'crypt',
'INIT',
'seekdir',
'utime',
'dbmclose',
'int',
'select',
'values',
'dbmopen',
'ioctl',
'semctl',
'vec',
'defined',
'join',
'semget',
'wait',
'delete',
'keys',
'semop',
'waitpid',
'DESTROY',
'kill',
'send',
'wantarray',
'die',
'last',
'setgrent',
'warn',
'dump',
'lc',
'sethostent',
'write',
'each',
'lcfirst',
'setnetent'
],
// File handlers
builtinFileHandlers: ['ARGV', 'STDERR', 'STDOUT', 'ARGVOUT', 'STDIN', 'ENV'],
// Perl variables
builtinVariables: [
'$!',
'$^RE_TRIE_MAXBUF',
'$LAST_REGEXP_CODE_RESULT',
'$"',
'$^S',
'$LIST_SEPARATOR',
'$#',
'$^T',
'$MATCH',
'$$',
'$^TAINT',
'$MULTILINE_MATCHING',
'$%',
'$^UNICODE',
'$NR',
'$&',
'$^UTF8LOCALE',
'$OFMT',
"$'",
'$^V',
'$OFS',
'$(',
'$^W',
'$ORS',
'$)',
'$^WARNING_BITS',
'$OS_ERROR',
'$*',
'$^WIDE_SYSTEM_CALLS',
'$OSNAME',
'$+',
'$^X',
'$OUTPUT_AUTO_FLUSH',
'$,',
'$_',
'$OUTPUT_FIELD_SEPARATOR',
'$-',
'$`',
'$OUTPUT_RECORD_SEPARATOR',
'$.',
'$a',
'$PERL_VERSION',
'$/',
'$ACCUMULATOR',
'$PERLDB',
'$0',
'$ARG',
'$PID',
'$:',
'$ARGV',
'$POSTMATCH',
'$;',
'$b',
'$PREMATCH',
'$<',
'$BASETIME',
'$PROCESS_ID',
'$=',
'$CHILD_ERROR',
'$PROGRAM_NAME',
'$>',
'$COMPILING',
'$REAL_GROUP_ID',
'$?',
'$DEBUGGING',
'$REAL_USER_ID',
'$@',
'$EFFECTIVE_GROUP_ID',
'$RS',
'$[',
'$EFFECTIVE_USER_ID',
'$SUBSCRIPT_SEPARATOR',
'$\\',
'$EGID',
'$SUBSEP',
'$]',
'$ERRNO',
'$SYSTEM_FD_MAX',
'$^',
'$EUID',
'$UID',
'$^A',
'$EVAL_ERROR',
'$WARNING',
'$^C',
'$EXCEPTIONS_BEING_CAUGHT',
'$|',
'$^CHILD_ERROR_NATIVE',
'$EXECUTABLE_NAME',
'$~',
'$^D',
'$EXTENDED_OS_ERROR',
'%!',
'$^E',
'$FORMAT_FORMFEED',
'%^H',
'$^ENCODING',
'$FORMAT_LINE_BREAK_CHARACTERS',
'%ENV',
'$^F',
'$FORMAT_LINES_LEFT',
'%INC',
'$^H',
'$FORMAT_LINES_PER_PAGE',
'%OVERLOAD',
'$^I',
'$FORMAT_NAME',
'%SIG',
'$^L',
'$FORMAT_PAGE_NUMBER',
'@+',
'$^M',
'$FORMAT_TOP_NAME',
'@-',
'$^N',
'$GID',
'@_',
'$^O',
'$INPLACE_EDIT',
'@ARGV',
'$^OPEN',
'$INPUT_LINE_NUMBER',
'@INC',
'$^P',
'$INPUT_RECORD_SEPARATOR',
'@LAST_MATCH_START',
'$^R',
'$LAST_MATCH_END',
'$^RE_DEBUG_FLAGS',
'$LAST_PAREN_MATCH'
],
// operators
symbols: /[:+\-\^*$&%@=<>!?|\/~\.]/,
quoteLikeOps: ['qr', 'm', 's', 'q', 'qq', 'qx', 'qw', 'tr', 'y'],
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
// The main tokenizer for our languages
tokenizer: {
root: [
{ include: '@whitespace' },
[
/[a-zA-Z\-_][\w\-_]*/,
{
cases: {
'@keywords': 'keyword',
'@builtinFunctions': 'type.identifier',
'@builtinFileHandlers': 'variable.predefined',
'@quoteLikeOps': {
token: '@rematch',
next: 'quotedConstructs'
},
'@default': ''
}
}
],
// Perl variables
[
/[\$@%][*@#?\+\-\$!\w\\\^><~:;\.]+/,
{
cases: {
'@builtinVariables': 'variable.predefined',
'@default': 'variable'
}
}
],
{ include: '@strings' },
{ include: '@dblStrings' },
// Perl Doc
{ include: '@perldoc' },
// Here Doc
{ include: '@heredoc' },
[/[{}\[\]()]/, '@brackets'],
// RegExp
[/[\/](?:(?:\[(?:\\]|[^\]])+\])|(?:\\\/|[^\]\/]))*[\/]\w*\s*(?=[).,;]|$)/, 'regexp'],
[/@symbols/, 'operators'],
{ include: '@numbers' },
[/[,;]/, 'delimiter']
],
whitespace: [
[/\s+/, 'white'],
[/(^#!.*$)/, 'metatag'],
[/(^#.*$)/, 'comment']
],
numbers: [
[/\d*\.\d+([eE][\-+]?\d+)?/, 'number.float'],
[/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/, 'number.hex'],
[/\d+/, 'number']
],
// Single quote string
strings: [[/'/, 'string', '@stringBody']],
stringBody: [
[/'/, 'string', '@popall'],
[/\\'/, 'string.escape'],
[/./, 'string']
],
// Double quote string
dblStrings: [[/"/, 'string', '@dblStringBody']],
dblStringBody: [
[/"/, 'string', '@popall'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
{ include: '@variables' },
[/./, 'string']
],
// Quoted constructs
// Percent strings in Ruby are similar to quote-like operators in Perl.
// This is adapted from pstrings in ../ruby/ruby.ts.
quotedConstructs: [
[/(q|qw|tr|y)\s*\(/, { token: 'string.delim', switchTo: '@qstring.(.)' }],
[/(q|qw|tr|y)\s*\[/, { token: 'string.delim', switchTo: '@qstring.[.]' }],
[/(q|qw|tr|y)\s*\{/, { token: 'string.delim', switchTo: '@qstring.{.}' }],
[/(q|qw|tr|y)\s*</, { token: 'string.delim', switchTo: '@qstring.<.>' }],
[/(q|qw|tr|y)#/, { token: 'string.delim', switchTo: '@qstring.#.#' }],
[/(q|qw|tr|y)\s*([^A-Za-z0-9#\s])/, { token: 'string.delim', switchTo: '@qstring.$2.$2' }],
[/(q|qw|tr|y)\s+(\w)/, { token: 'string.delim', switchTo: '@qstring.$2.$2' }],
[/(qr|m|s)\s*\(/, { token: 'regexp.delim', switchTo: '@qregexp.(.)' }],
[/(qr|m|s)\s*\[/, { token: 'regexp.delim', switchTo: '@qregexp.[.]' }],
[/(qr|m|s)\s*\{/, { token: 'regexp.delim', switchTo: '@qregexp.{.}' }],
[/(qr|m|s)\s*</, { token: 'regexp.delim', switchTo: '@qregexp.<.>' }],
[/(qr|m|s)#/, { token: 'regexp.delim', switchTo: '@qregexp.#.#' }],
[/(qr|m|s)\s*([^A-Za-z0-9_#\s])/, { token: 'regexp.delim', switchTo: '@qregexp.$2.$2' }],
[/(qr|m|s)\s+(\w)/, { token: 'regexp.delim', switchTo: '@qregexp.$2.$2' }],
[/(qq|qx)\s*\(/, { token: 'string.delim', switchTo: '@qqstring.(.)' }],
[/(qq|qx)\s*\[/, { token: 'string.delim', switchTo: '@qqstring.[.]' }],
[/(qq|qx)\s*\{/, { token: 'string.delim', switchTo: '@qqstring.{.}' }],
[/(qq|qx)\s*</, { token: 'string.delim', switchTo: '@qqstring.<.>' }],
[/(qq|qx)#/, { token: 'string.delim', switchTo: '@qqstring.#.#' }],
[/(qq|qx)\s*([^A-Za-z0-9#\s])/, { token: 'string.delim', switchTo: '@qqstring.$2.$2' }],
[/(qq|qx)\s+(\w)/, { token: 'string.delim', switchTo: '@qqstring.$2.$2' }]
],
// Non-expanded quoted string
// qstring<open>.<close>
// open = open delimiter
// close = close delimiter
qstring: [
[/\\./, 'string.escape'],
[
/./,
{
cases: {
'$#==$S3': { token: 'string.delim', next: '@pop' },
'$#==$S2': { token: 'string.delim', next: '@push' },
'@default': 'string'
}
}
]
],
// Quoted regexp
// qregexp.<open>.<close>
// open = open delimiter
// close = close delimiter
qregexp: [
{ include: '@variables' },
[/\\./, 'regexp.escape'],
[
/./,
{
cases: {
'$#==$S3': {
token: 'regexp.delim',
next: '@regexpModifiers'
},
'$#==$S2': { token: 'regexp.delim', next: '@push' },
'@default': 'regexp'
}
}
]
],
regexpModifiers: [[/[msixpodualngcer]+/, { token: 'regexp.modifier', next: '@popall' }]],
// Expanded quoted string
// qqstring.<open>.<close>
// open = open delimiter
// close = close delimiter
qqstring: [{ include: '@variables' }, { include: '@qstring' }],
heredoc: [
[/<<\s*['"`]?([\w\-]+)['"`]?/, { token: 'string.heredoc.delimiter', next: '@heredocBody.$1' }]
],
heredocBody: [
[
/^([\w\-]+)$/,
{
cases: {
'$1==$S2': [
{
token: 'string.heredoc.delimiter',
next: '@popall'
}
],
'@default': 'string.heredoc'
}
}
],
[/./, 'string.heredoc']
],
perldoc: [[/^=\w/, 'comment.doc', '@perldocBody']],
perldocBody: [
[/^=cut\b/, 'type.identifier', '@popall'],
[/./, 'comment.doc']
],
variables: [
[/\$\w+/, 'variable'],
[/@\w+/, 'variable'],
[/%\w+/, 'variable'] // key/value
]
}
};
});

@ -0,0 +1,854 @@
/*---------------------------------------------------------------------------------------------
* 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/pgsql/pgsql',["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: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
]
};
exports.language = {
defaultToken: '',
tokenPostfix: '.sql',
ignoreCase: true,
brackets: [
{ open: '[', close: ']', token: 'delimiter.square' },
{ open: '(', close: ')', token: 'delimiter.parenthesis' }
],
keywords: [
// This list is generated using `keywords.js`
'ALL',
'ANALYSE',
'ANALYZE',
'AND',
'ANY',
'ARRAY',
'AS',
'ASC',
'ASYMMETRIC',
'AUTHORIZATION',
'BINARY',
'BOTH',
'CASE',
'CAST',
'CHECK',
'COLLATE',
'COLLATION',
'COLUMN',
'CONCURRENTLY',
'CONSTRAINT',
'CREATE',
'CROSS',
'CURRENT_CATALOG',
'CURRENT_DATE',
'CURRENT_ROLE',
'CURRENT_SCHEMA',
'CURRENT_TIME',
'CURRENT_TIMESTAMP',
'CURRENT_USER',
'DEFAULT',
'DEFERRABLE',
'DESC',
'DISTINCT',
'DO',
'ELSE',
'END',
'EXCEPT',
'FALSE',
'FETCH',
'FOR',
'FOREIGN',
'FREEZE',
'FROM',
'FULL',
'GRANT',
'GROUP',
'HAVING',
'ILIKE',
'IN',
'INITIALLY',
'INNER',
'INTERSECT',
'INTO',
'IS',
'ISNULL',
'JOIN',
'LATERAL',
'LEADING',
'LEFT',
'LIKE',
'LIMIT',
'LOCALTIME',
'LOCALTIMESTAMP',
'NATURAL',
'NOT',
'NOTNULL',
'NULL',
'OFFSET',
'ON',
'ONLY',
'OR',
'ORDER',
'OUTER',
'OVERLAPS',
'PLACING',
'PRIMARY',
'REFERENCES',
'RETURNING',
'RIGHT',
'SELECT',
'SESSION_USER',
'SIMILAR',
'SOME',
'SYMMETRIC',
'TABLE',
'TABLESAMPLE',
'THEN',
'TO',
'TRAILING',
'TRUE',
'UNION',
'UNIQUE',
'USER',
'USING',
'VARIADIC',
'VERBOSE',
'WHEN',
'WHERE',
'WINDOW',
'WITH'
],
operators: [
'AND',
'BETWEEN',
'IN',
'LIKE',
'NOT',
'OR',
'IS',
'NULL',
'INTERSECT',
'UNION',
'INNER',
'JOIN',
'LEFT',
'OUTER',
'RIGHT'
],
builtinFunctions: [
'abbrev',
'abs',
'acldefault',
'aclexplode',
'acos',
'acosd',
'acosh',
'age',
'any',
'area',
'array_agg',
'array_append',
'array_cat',
'array_dims',
'array_fill',
'array_length',
'array_lower',
'array_ndims',
'array_position',
'array_positions',
'array_prepend',
'array_remove',
'array_replace',
'array_to_json',
'array_to_string',
'array_to_tsvector',
'array_upper',
'ascii',
'asin',
'asind',
'asinh',
'atan',
'atan2',
'atan2d',
'atand',
'atanh',
'avg',
'bit',
'bit_and',
'bit_count',
'bit_length',
'bit_or',
'bit_xor',
'bool_and',
'bool_or',
'bound_box',
'box',
'brin_desummarize_range',
'brin_summarize_new_values',
'brin_summarize_range',
'broadcast',
'btrim',
'cardinality',
'cbrt',
'ceil',
'ceiling',
'center',
'char_length',
'character_length',
'chr',
'circle',
'clock_timestamp',
'coalesce',
'col_description',
'concat',
'concat_ws',
'convert',
'convert_from',
'convert_to',
'corr',
'cos',
'cosd',
'cosh',
'cot',
'cotd',
'count',
'covar_pop',
'covar_samp',
'cume_dist',
'current_catalog',
'current_database',
'current_date',
'current_query',
'current_role',
'current_schema',
'current_schemas',
'current_setting',
'current_time',
'current_timestamp',
'current_user',
'currval',
'cursor_to_xml',
'cursor_to_xmlschema',
'date_bin',
'date_part',
'date_trunc',
'database_to_xml',
'database_to_xml_and_xmlschema',
'database_to_xmlschema',
'decode',
'degrees',
'dense_rank',
'diagonal',
'diameter',
'div',
'encode',
'enum_first',
'enum_last',
'enum_range',
'every',
'exp',
'extract',
'factorial',
'family',
'first_value',
'floor',
'format',
'format_type',
'gcd',
'gen_random_uuid',
'generate_series',
'generate_subscripts',
'get_bit',
'get_byte',
'get_current_ts_config',
'gin_clean_pending_list',
'greatest',
'grouping',
'has_any_column_privilege',
'has_column_privilege',
'has_database_privilege',
'has_foreign_data_wrapper_privilege',
'has_function_privilege',
'has_language_privilege',
'has_schema_privilege',
'has_sequence_privilege',
'has_server_privilege',
'has_table_privilege',
'has_tablespace_privilege',
'has_type_privilege',
'height',
'host',
'hostmask',
'inet_client_addr',
'inet_client_port',
'inet_merge',
'inet_same_family',
'inet_server_addr',
'inet_server_port',
'initcap',
'isclosed',
'isempty',
'isfinite',
'isopen',
'json_agg',
'json_array_elements',
'json_array_elements_text',
'json_array_length',
'json_build_array',
'json_build_object',
'json_each',
'json_each_text',
'json_extract_path',
'json_extract_path_text',
'json_object',
'json_object_agg',
'json_object_keys',
'json_populate_record',
'json_populate_recordset',
'json_strip_nulls',
'json_to_record',
'json_to_recordset',
'json_to_tsvector',
'json_typeof',
'jsonb_agg',
'jsonb_array_elements',
'jsonb_array_elements_text',
'jsonb_array_length',
'jsonb_build_array',
'jsonb_build_object',
'jsonb_each',
'jsonb_each_text',
'jsonb_extract_path',
'jsonb_extract_path_text',
'jsonb_insert',
'jsonb_object',
'jsonb_object_agg',
'jsonb_object_keys',
'jsonb_path_exists',
'jsonb_path_match',
'jsonb_path_query',
'jsonb_path_query_array',
'jsonb_path_exists_tz',
'jsonb_path_query_first',
'jsonb_path_query_array_tz',
'jsonb_path_query_first_tz',
'jsonb_path_query_tz',
'jsonb_path_match_tz',
'jsonb_populate_record',
'jsonb_populate_recordset',
'jsonb_pretty',
'jsonb_set',
'jsonb_set_lax',
'jsonb_strip_nulls',
'jsonb_to_record',
'jsonb_to_recordset',
'jsonb_to_tsvector',
'jsonb_typeof',
'justify_days',
'justify_hours',
'justify_interval',
'lag',
'last_value',
'lastval',
'lcm',
'lead',
'least',
'left',
'length',
'line',
'ln',
'localtime',
'localtimestamp',
'log',
'log10',
'lower',
'lower_inc',
'lower_inf',
'lpad',
'lseg',
'ltrim',
'macaddr8_set7bit',
'make_date',
'make_interval',
'make_time',
'make_timestamp',
'make_timestamptz',
'makeaclitem',
'masklen',
'max',
'md5',
'min',
'min_scale',
'mod',
'mode',
'multirange',
'netmask',
'network',
'nextval',
'normalize',
'now',
'npoints',
'nth_value',
'ntile',
'nullif',
'num_nonnulls',
'num_nulls',
'numnode',
'obj_description',
'octet_length',
'overlay',
'parse_ident',
'path',
'pclose',
'percent_rank',
'percentile_cont',
'percentile_disc',
'pg_advisory_lock',
'pg_advisory_lock_shared',
'pg_advisory_unlock',
'pg_advisory_unlock_all',
'pg_advisory_unlock_shared',
'pg_advisory_xact_lock',
'pg_advisory_xact_lock_shared',
'pg_backend_pid',
'pg_backup_start_time',
'pg_blocking_pids',
'pg_cancel_backend',
'pg_client_encoding',
'pg_collation_actual_version',
'pg_collation_is_visible',
'pg_column_compression',
'pg_column_size',
'pg_conf_load_time',
'pg_control_checkpoint',
'pg_control_init',
'pg_control_recovery',
'pg_control_system',
'pg_conversion_is_visible',
'pg_copy_logical_replication_slot',
'pg_copy_physical_replication_slot',
'pg_create_logical_replication_slot',
'pg_create_physical_replication_slot',
'pg_create_restore_point',
'pg_current_logfile',
'pg_current_snapshot',
'pg_current_wal_flush_lsn',
'pg_current_wal_insert_lsn',
'pg_current_wal_lsn',
'pg_current_xact_id',
'pg_current_xact_id_if_assigned',
'pg_current_xlog_flush_location',
'pg_current_xlog_insert_location',
'pg_current_xlog_location',
'pg_database_size',
'pg_describe_object',
'pg_drop_replication_slot',
'pg_event_trigger_ddl_commands',
'pg_event_trigger_dropped_objects',
'pg_event_trigger_table_rewrite_oid',
'pg_event_trigger_table_rewrite_reason',
'pg_export_snapshot',
'pg_filenode_relation',
'pg_function_is_visible',
'pg_get_catalog_foreign_keys',
'pg_get_constraintdef',
'pg_get_expr',
'pg_get_function_arguments',
'pg_get_function_identity_arguments',
'pg_get_function_result',
'pg_get_functiondef',
'pg_get_indexdef',
'pg_get_keywords',
'pg_get_object_address',
'pg_get_owned_sequence',
'pg_get_ruledef',
'pg_get_serial_sequence',
'pg_get_statisticsobjdef',
'pg_get_triggerdef',
'pg_get_userbyid',
'pg_get_viewdef',
'pg_get_wal_replay_pause_state',
'pg_has_role',
'pg_identify_object',
'pg_identify_object_as_address',
'pg_import_system_collations',
'pg_index_column_has_property',
'pg_index_has_property',
'pg_indexam_has_property',
'pg_indexes_size',
'pg_is_in_backup',
'pg_is_in_recovery',
'pg_is_other_temp_schema',
'pg_is_wal_replay_paused',
'pg_is_xlog_replay_paused',
'pg_jit_available',
'pg_last_committed_xact',
'pg_last_wal_receive_lsn',
'pg_last_wal_replay_lsn',
'pg_last_xact_replay_timestamp',
'pg_last_xlog_receive_location',
'pg_last_xlog_replay_location',
'pg_listening_channels',
'pg_log_backend_memory_contexts',
'pg_logical_emit_message',
'pg_logical_slot_get_binary_changes',
'pg_logical_slot_get_changes',
'pg_logical_slot_peek_binary_changes',
'pg_logical_slot_peek_changes',
'pg_ls_archive_statusdir',
'pg_ls_dir',
'pg_ls_logdir',
'pg_ls_tmpdir',
'pg_ls_waldir',
'pg_mcv_list_items',
'pg_my_temp_schema',
'pg_notification_queue_usage',
'pg_opclass_is_visible',
'pg_operator_is_visible',
'pg_opfamily_is_visible',
'pg_options_to_table',
'pg_partition_ancestors',
'pg_partition_root',
'pg_partition_tree',
'pg_postmaster_start_time',
'pg_promote',
'pg_read_binary_file',
'pg_read_file',
'pg_relation_filenode',
'pg_relation_filepath',
'pg_relation_size',
'pg_reload_conf',
'pg_replication_origin_advance',
'pg_replication_origin_create',
'pg_replication_origin_drop',
'pg_replication_origin_oid',
'pg_replication_origin_progress',
'pg_replication_origin_session_is_setup',
'pg_replication_origin_session_progress',
'pg_replication_origin_session_reset',
'pg_replication_origin_session_setup',
'pg_replication_origin_xact_reset',
'pg_replication_origin_xact_setup',
'pg_replication_slot_advance',
'pg_rotate_logfile',
'pg_safe_snapshot_blocking_pids',
'pg_size_bytes',
'pg_size_pretty',
'pg_sleep',
'pg_sleep_for',
'pg_sleep_until',
'pg_snapshot_xip',
'pg_snapshot_xmax',
'pg_snapshot_xmin',
'pg_start_backup',
'pg_stat_file',
'pg_statistics_obj_is_visible',
'pg_stop_backup',
'pg_switch_wal',
'pg_switch_xlog',
'pg_table_is_visible',
'pg_table_size',
'pg_tablespace_databases',
'pg_tablespace_location',
'pg_tablespace_size',
'pg_terminate_backend',
'pg_total_relation_size',
'pg_trigger_depth',
'pg_try_advisory_lock',
'pg_try_advisory_lock_shared',
'pg_try_advisory_xact_lock',
'pg_try_advisory_xact_lock_shared',
'pg_ts_config_is_visible',
'pg_ts_dict_is_visible',
'pg_ts_parser_is_visible',
'pg_ts_template_is_visible',
'pg_type_is_visible',
'pg_typeof',
'pg_visible_in_snapshot',
'pg_wal_lsn_diff',
'pg_wal_replay_pause',
'pg_wal_replay_resume',
'pg_walfile_name',
'pg_walfile_name_offset',
'pg_xact_commit_timestamp',
'pg_xact_commit_timestamp_origin',
'pg_xact_status',
'pg_xlog_location_diff',
'pg_xlog_replay_pause',
'pg_xlog_replay_resume',
'pg_xlogfile_name',
'pg_xlogfile_name_offset',
'phraseto_tsquery',
'pi',
'plainto_tsquery',
'point',
'polygon',
'popen',
'position',
'power',
'pqserverversion',
'query_to_xml',
'query_to_xml_and_xmlschema',
'query_to_xmlschema',
'querytree',
'quote_ident',
'quote_literal',
'quote_nullable',
'radians',
'radius',
'random',
'range_agg',
'range_intersect_agg',
'range_merge',
'rank',
'regexp_match',
'regexp_matches',
'regexp_replace',
'regexp_split_to_array',
'regexp_split_to_table',
'regr_avgx',
'regr_avgy',
'regr_count',
'regr_intercept',
'regr_r2',
'regr_slope',
'regr_sxx',
'regr_sxy',
'regr_syy',
'repeat',
'replace',
'reverse',
'right',
'round',
'row_number',
'row_security_active',
'row_to_json',
'rpad',
'rtrim',
'scale',
'schema_to_xml',
'schema_to_xml_and_xmlschema',
'schema_to_xmlschema',
'session_user',
'set_bit',
'set_byte',
'set_config',
'set_masklen',
'setseed',
'setval',
'setweight',
'sha224',
'sha256',
'sha384',
'sha512',
'shobj_description',
'sign',
'sin',
'sind',
'sinh',
'slope',
'split_part',
'sprintf',
'sqrt',
'starts_with',
'statement_timestamp',
'stddev',
'stddev_pop',
'stddev_samp',
'string_agg',
'string_to_array',
'string_to_table',
'strip',
'strpos',
'substr',
'substring',
'sum',
'suppress_redundant_updates_trigger',
'table_to_xml',
'table_to_xml_and_xmlschema',
'table_to_xmlschema',
'tan',
'tand',
'tanh',
'text',
'timeofday',
'timezone',
'to_ascii',
'to_char',
'to_date',
'to_hex',
'to_json',
'to_number',
'to_regclass',
'to_regcollation',
'to_regnamespace',
'to_regoper',
'to_regoperator',
'to_regproc',
'to_regprocedure',
'to_regrole',
'to_regtype',
'to_timestamp',
'to_tsquery',
'to_tsvector',
'transaction_timestamp',
'translate',
'trim',
'trim_array',
'trim_scale',
'trunc',
'ts_debug',
'ts_delete',
'ts_filter',
'ts_headline',
'ts_lexize',
'ts_parse',
'ts_rank',
'ts_rank_cd',
'ts_rewrite',
'ts_stat',
'ts_token_type',
'tsquery_phrase',
'tsvector_to_array',
'tsvector_update_trigger',
'tsvector_update_trigger_column',
'txid_current',
'txid_current_if_assigned',
'txid_current_snapshot',
'txid_snapshot_xip',
'txid_snapshot_xmax',
'txid_snapshot_xmin',
'txid_status',
'txid_visible_in_snapshot',
'unistr',
'unnest',
'upper',
'upper_inc',
'upper_inf',
'user',
'var_pop',
'var_samp',
'variance',
'version',
'websearch_to_tsquery',
'width',
'width_bucket',
'xml_is_well_formed',
'xml_is_well_formed_content',
'xml_is_well_formed_document',
'xmlagg',
'xmlcomment',
'xmlconcat',
'xmlelement',
'xmlexists',
'xmlforest',
'xmlparse',
'xmlpi',
'xmlroot',
'xmlserialize',
'xpath',
'xpath_exists'
],
builtinVariables: [
// NOT SUPPORTED
],
pseudoColumns: [
// NOT SUPPORTED
],
tokenizer: {
root: [
{ include: '@comments' },
{ include: '@whitespace' },
{ include: '@pseudoColumns' },
{ include: '@numbers' },
{ include: '@strings' },
{ include: '@complexIdentifiers' },
{ include: '@scopes' },
[/[;,.]/, 'delimiter'],
[/[()]/, '@brackets'],
[
/[\w@#$]+/,
{
cases: {
'@operators': 'operator',
'@builtinVariables': 'predefined',
'@builtinFunctions': 'predefined',
'@keywords': 'keyword',
'@default': 'identifier'
}
}
],
[/[<>=!%&+\-*/|~^]/, 'operator']
],
whitespace: [[/\s+/, 'white']],
comments: [
[/--+.*/, 'comment'],
[/\/\*/, { token: 'comment.quote', next: '@comment' }]
],
comment: [
[/[^*/]+/, 'comment'],
// Not supporting nested comments, as nested comments seem to not be standard?
// i.e. http://stackoverflow.com/questions/728172/are-there-multiline-comment-delimiters-in-sql-that-are-vendor-agnostic
// [/\/\*/, { token: 'comment.quote', next: '@push' }], // nested comment not allowed :-(
[/\*\//, { token: 'comment.quote', next: '@pop' }],
[/./, 'comment']
],
pseudoColumns: [
[
/[$][A-Za-z_][\w@#$]*/,
{
cases: {
'@pseudoColumns': 'predefined',
'@default': 'identifier'
}
}
]
],
numbers: [
[/0[xX][0-9a-fA-F]*/, 'number'],
[/[$][+-]*\d*(\.\d*)?/, 'number'],
[/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/, 'number']
],
strings: [[/'/, { token: 'string', next: '@string' }]],
string: [
[/[^']+/, 'string'],
[/''/, 'string'],
[/'/, { token: 'string', next: '@pop' }]
],
complexIdentifiers: [[/"/, { token: 'identifier.quote', next: '@quotedIdentifier' }]],
quotedIdentifier: [
[/[^"]+/, 'identifier'],
[/""/, 'identifier'],
[/"/, { token: 'identifier.quote', next: '@pop' }]
],
scopes: [
// NOT SUPPORTED
]
}
};
});

@ -0,0 +1,579 @@
/*---------------------------------------------------------------------------------------------
* 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/php/php',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,
comments: {
lineComment: '//',
blockComment: ['/*', '*/']
},
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}', notIn: ['string'] },
{ open: '[', close: ']', notIn: ['string'] },
{ open: '(', close: ')', notIn: ['string'] },
{ open: '"', close: '"', notIn: ['string'] },
{ open: "'", close: "'", notIn: ['string', 'comment'] }
],
folding: {
markers: {
start: new RegExp('^\\s*(#|//)region\\b'),
end: new RegExp('^\\s*(#|//)endregion\\b')
}
}
};
exports.language = {
defaultToken: '',
tokenPostfix: '',
// ignoreCase: true,
// The main tokenizer for our languages
tokenizer: {
root: [
[/<\?((php)|=)?/, { token: '@rematch', switchTo: '@phpInSimpleState.root' }],
[/<!DOCTYPE/, 'metatag.html', '@doctype'],
[/<!--/, 'comment.html', '@comment'],
[/(<)(\w+)(\/>)/, ['delimiter.html', 'tag.html', 'delimiter.html']],
[/(<)(script)/, ['delimiter.html', { token: 'tag.html', next: '@script' }]],
[/(<)(style)/, ['delimiter.html', { token: 'tag.html', next: '@style' }]],
[/(<)([:\w]+)/, ['delimiter.html', { token: 'tag.html', next: '@otherTag' }]],
[/(<\/)(\w+)/, ['delimiter.html', { token: 'tag.html', next: '@otherTag' }]],
[/</, 'delimiter.html'],
[/[^<]+/] // text
],
doctype: [
[/<\?((php)|=)?/, { token: '@rematch', switchTo: '@phpInSimpleState.comment' }],
[/[^>]+/, 'metatag.content.html'],
[/>/, 'metatag.html', '@pop']
],
comment: [
[/<\?((php)|=)?/, { token: '@rematch', switchTo: '@phpInSimpleState.comment' }],
[/-->/, 'comment.html', '@pop'],
[/[^-]+/, 'comment.content.html'],
[/./, 'comment.content.html']
],
otherTag: [
[/<\?((php)|=)?/, { token: '@rematch', switchTo: '@phpInSimpleState.otherTag' }],
[/\/?>/, 'delimiter.html', '@pop'],
[/"([^"]*)"/, 'attribute.value'],
[/'([^']*)'/, 'attribute.value'],
[/[\w\-]+/, 'attribute.name'],
[/=/, 'delimiter'],
[/[ \t\r\n]+/] // whitespace
],
// -- BEGIN <script> tags handling
// After <script
script: [
[/<\?((php)|=)?/, { token: '@rematch', switchTo: '@phpInSimpleState.script' }],
[/type/, 'attribute.name', '@scriptAfterType'],
[/"([^"]*)"/, 'attribute.value'],
[/'([^']*)'/, 'attribute.value'],
[/[\w\-]+/, 'attribute.name'],
[/=/, 'delimiter'],
[
/>/,
{
token: 'delimiter.html',
next: '@scriptEmbedded.text/javascript',
nextEmbedded: 'text/javascript'
}
],
[/[ \t\r\n]+/],
[
/(<\/)(script\s*)(>)/,
['delimiter.html', 'tag.html', { token: 'delimiter.html', next: '@pop' }]
]
],
// After <script ... type
scriptAfterType: [
[
/<\?((php)|=)?/,
{
token: '@rematch',
switchTo: '@phpInSimpleState.scriptAfterType'
}
],
[/=/, 'delimiter', '@scriptAfterTypeEquals'],
[
/>/,
{
token: 'delimiter.html',
next: '@scriptEmbedded.text/javascript',
nextEmbedded: 'text/javascript'
}
],
[/[ \t\r\n]+/],
[/<\/script\s*>/, { token: '@rematch', next: '@pop' }]
],
// After <script ... type =
scriptAfterTypeEquals: [
[
/<\?((php)|=)?/,
{
token: '@rematch',
switchTo: '@phpInSimpleState.scriptAfterTypeEquals'
}
],
[
/"([^"]*)"/,
{
token: 'attribute.value',
switchTo: '@scriptWithCustomType.$1'
}
],
[
/'([^']*)'/,
{
token: 'attribute.value',
switchTo: '@scriptWithCustomType.$1'
}
],
[
/>/,
{
token: 'delimiter.html',
next: '@scriptEmbedded.text/javascript',
nextEmbedded: 'text/javascript'
}
],
[/[ \t\r\n]+/],
[/<\/script\s*>/, { token: '@rematch', next: '@pop' }]
],
// After <script ... type = $S2
scriptWithCustomType: [
[
/<\?((php)|=)?/,
{
token: '@rematch',
switchTo: '@phpInSimpleState.scriptWithCustomType.$S2'
}
],
[
/>/,
{
token: 'delimiter.html',
next: '@scriptEmbedded.$S2',
nextEmbedded: '$S2'
}
],
[/"([^"]*)"/, 'attribute.value'],
[/'([^']*)'/, 'attribute.value'],
[/[\w\-]+/, 'attribute.name'],
[/=/, 'delimiter'],
[/[ \t\r\n]+/],
[/<\/script\s*>/, { token: '@rematch', next: '@pop' }]
],
scriptEmbedded: [
[
/<\?((php)|=)?/,
{
token: '@rematch',
switchTo: '@phpInEmbeddedState.scriptEmbedded.$S2',
nextEmbedded: '@pop'
}
],
[/<\/script/, { token: '@rematch', next: '@pop', nextEmbedded: '@pop' }]
],
// -- END <script> tags handling
// -- BEGIN <style> tags handling
// After <style
style: [
[/<\?((php)|=)?/, { token: '@rematch', switchTo: '@phpInSimpleState.style' }],
[/type/, 'attribute.name', '@styleAfterType'],
[/"([^"]*)"/, 'attribute.value'],
[/'([^']*)'/, 'attribute.value'],
[/[\w\-]+/, 'attribute.name'],
[/=/, 'delimiter'],
[
/>/,
{
token: 'delimiter.html',
next: '@styleEmbedded.text/css',
nextEmbedded: 'text/css'
}
],
[/[ \t\r\n]+/],
[
/(<\/)(style\s*)(>)/,
['delimiter.html', 'tag.html', { token: 'delimiter.html', next: '@pop' }]
]
],
// After <style ... type
styleAfterType: [
[
/<\?((php)|=)?/,
{
token: '@rematch',
switchTo: '@phpInSimpleState.styleAfterType'
}
],
[/=/, 'delimiter', '@styleAfterTypeEquals'],
[
/>/,
{
token: 'delimiter.html',
next: '@styleEmbedded.text/css',
nextEmbedded: 'text/css'
}
],
[/[ \t\r\n]+/],
[/<\/style\s*>/, { token: '@rematch', next: '@pop' }]
],
// After <style ... type =
styleAfterTypeEquals: [
[
/<\?((php)|=)?/,
{
token: '@rematch',
switchTo: '@phpInSimpleState.styleAfterTypeEquals'
}
],
[
/"([^"]*)"/,
{
token: 'attribute.value',
switchTo: '@styleWithCustomType.$1'
}
],
[
/'([^']*)'/,
{
token: 'attribute.value',
switchTo: '@styleWithCustomType.$1'
}
],
[
/>/,
{
token: 'delimiter.html',
next: '@styleEmbedded.text/css',
nextEmbedded: 'text/css'
}
],
[/[ \t\r\n]+/],
[/<\/style\s*>/, { token: '@rematch', next: '@pop' }]
],
// After <style ... type = $S2
styleWithCustomType: [
[
/<\?((php)|=)?/,
{
token: '@rematch',
switchTo: '@phpInSimpleState.styleWithCustomType.$S2'
}
],
[
/>/,
{
token: 'delimiter.html',
next: '@styleEmbedded.$S2',
nextEmbedded: '$S2'
}
],
[/"([^"]*)"/, 'attribute.value'],
[/'([^']*)'/, 'attribute.value'],
[/[\w\-]+/, 'attribute.name'],
[/=/, 'delimiter'],
[/[ \t\r\n]+/],
[/<\/style\s*>/, { token: '@rematch', next: '@pop' }]
],
styleEmbedded: [
[
/<\?((php)|=)?/,
{
token: '@rematch',
switchTo: '@phpInEmbeddedState.styleEmbedded.$S2',
nextEmbedded: '@pop'
}
],
[/<\/style/, { token: '@rematch', next: '@pop', nextEmbedded: '@pop' }]
],
// -- END <style> tags handling
phpInSimpleState: [
[/<\?((php)|=)?/, 'metatag.php'],
[/\?>/, { token: 'metatag.php', switchTo: '@$S2.$S3' }],
{ include: 'phpRoot' }
],
phpInEmbeddedState: [
[/<\?((php)|=)?/, 'metatag.php'],
[
/\?>/,
{
token: 'metatag.php',
switchTo: '@$S2.$S3',
nextEmbedded: '$S3'
}
],
{ include: 'phpRoot' }
],
phpRoot: [
[
/[a-zA-Z_]\w*/,
{
cases: {
'@phpKeywords': { token: 'keyword.php' },
'@phpCompileTimeConstants': { token: 'constant.php' },
'@default': 'identifier.php'
}
}
],
[
/[$a-zA-Z_]\w*/,
{
cases: {
'@phpPreDefinedVariables': {
token: 'variable.predefined.php'
},
'@default': 'variable.php'
}
}
],
// brackets
[/[{}]/, 'delimiter.bracket.php'],
[/[\[\]]/, 'delimiter.array.php'],
[/[()]/, 'delimiter.parenthesis.php'],
// whitespace
[/[ \t\r\n]+/],
// comments
[/(#|\/\/)$/, 'comment.php'],
[/(#|\/\/)/, 'comment.php', '@phpLineComment'],
// block comments
[/\/\*/, 'comment.php', '@phpComment'],
// strings
[/"/, 'string.php', '@phpDoubleQuoteString'],
[/'/, 'string.php', '@phpSingleQuoteString'],
// delimiters
[/[\+\-\*\%\&\|\^\~\!\=\<\>\/\?\;\:\.\,\@]/, 'delimiter.php'],
// numbers
[/\d*\d+[eE]([\-+]?\d+)?/, 'number.float.php'],
[/\d*\.\d+([eE][\-+]?\d+)?/, 'number.float.php'],
[/0[xX][0-9a-fA-F']*[0-9a-fA-F]/, 'number.hex.php'],
[/0[0-7']*[0-7]/, 'number.octal.php'],
[/0[bB][0-1']*[0-1]/, 'number.binary.php'],
[/\d[\d']*/, 'number.php'],
[/\d/, 'number.php']
],
phpComment: [
[/\*\//, 'comment.php', '@pop'],
[/[^*]+/, 'comment.php'],
[/./, 'comment.php']
],
phpLineComment: [
[/\?>/, { token: '@rematch', next: '@pop' }],
[/.$/, 'comment.php', '@pop'],
[/[^?]+$/, 'comment.php', '@pop'],
[/[^?]+/, 'comment.php'],
[/./, 'comment.php']
],
phpDoubleQuoteString: [
[/[^\\"]+/, 'string.php'],
[/@escapes/, 'string.escape.php'],
[/\\./, 'string.escape.invalid.php'],
[/"/, 'string.php', '@pop']
],
phpSingleQuoteString: [
[/[^\\']+/, 'string.php'],
[/@escapes/, 'string.escape.php'],
[/\\./, 'string.escape.invalid.php'],
[/'/, 'string.php', '@pop']
]
},
phpKeywords: [
'abstract',
'and',
'array',
'as',
'break',
'callable',
'case',
'catch',
'cfunction',
'class',
'clone',
'const',
'continue',
'declare',
'default',
'do',
'else',
'elseif',
'enddeclare',
'endfor',
'endforeach',
'endif',
'endswitch',
'endwhile',
'extends',
'false',
'final',
'for',
'foreach',
'function',
'global',
'goto',
'if',
'implements',
'interface',
'instanceof',
'insteadof',
'namespace',
'new',
'null',
'object',
'old_function',
'or',
'private',
'protected',
'public',
'resource',
'static',
'switch',
'throw',
'trait',
'try',
'true',
'use',
'var',
'while',
'xor',
'die',
'echo',
'empty',
'exit',
'eval',
'include',
'include_once',
'isset',
'list',
'require',
'require_once',
'return',
'print',
'unset',
'yield',
'__construct'
],
phpCompileTimeConstants: [
'__CLASS__',
'__DIR__',
'__FILE__',
'__LINE__',
'__NAMESPACE__',
'__METHOD__',
'__FUNCTION__',
'__TRAIT__'
],
phpPreDefinedVariables: [
'$GLOBALS',
'$_SERVER',
'$_GET',
'$_POST',
'$_FILES',
'$_REQUEST',
'$_SESSION',
'$_ENV',
'$_COOKIE',
'$php_errormsg',
'$HTTP_RAW_POST_DATA',
'$http_response_header',
'$argc',
'$argv'
],
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/
};
});
// TESTED WITH
// <style type="text/css" >
// .boo { background: blue;
// <?=''?>
// }
// .boo { background: blue; <?=''?> }
// </style>
// <!--
// <?= '' ?>
// -->
// <?php
// // The next line contains a syntax error:
// __construct
// if () {
// return "The parser recovers from this type of syntax error";
// }
// ?>
// <html>
// <head>
// <title <?=''?>>Example page</title>
// <style <?=''?>>
// .boo { background: blue; <?=''?> }
// </style>
// </head>
// <body>
// <script <?=''?> type<?=''?>=<?=''?>"text/javascript"<?=''?>>
// // Some PHP embedded inside JS
// // Generated <?=date('l, F jS, Y')?>
// var server_token = <?=rand(5, 10000)?>
// if (typeof server_token === 'number') {
// alert('token: ' + server_token);
// }
// </script>
// <div>
// Hello
// <? if (isset($user)) { ?>
// <b><?=$user?></b>
// <? } else { ?>
// <i>guest</i>
// <? } ?>
// !
// </div>
// <?php
// /* Example PHP file
// multiline comment
// */
// # Another single line comment
// $cards = array("ah", "ac", "ad", "as",
// "2h", "2c", "2d", "2s",
// "3h", "3c", "3d", "3s",
// "4h", "4c", "4d", "4s",
// "5h", "5c", "5d", "5s",
// "6h", "6c", "6d", "6s",
// "7h", "7c", "7d", "7s",
// "8h", "8c", "8d", "8s",
// "9h", "9c", "9d", "9s",
// "th", "tc", "td", "ts",
// "jh", "jc", "jd", "js",
// "qh", "qc", "qd", "qs",
// "kh", "kc", "kd", "ks");
// srand(time());
// for($i = 0; $i < 52; $i++) {
// $count = count($cards);
// $random = (rand()%$count);
// if($cards[$random] == "") {
// $i--;
// } else {
// $deck[] = $cards[$random];
// $cards[$random] = "";
// }
// }
// $_GET
// __CLASS__
// srand(time());
// $starting_point = (rand()%51);
// print("Starting point for cut cards is: $starting_point<p>");
// // display shuffled cards (EXAMPLE ONLY)
// for ($index = 0; $index < 52; $index++) {
// if ($starting_point == 52) { $starting_point = 0; }
// print("Uncut Point: <strong>$deck[$index]</strong> ");
// print("Starting Point: <strong>$deck[$starting_point]</strong><br>");
// $starting_point++;
// }
// ?>
// </body>
// </html>
;

@ -0,0 +1,144 @@
/*---------------------------------------------------------------------------------------------
* 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/pla/pla',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
comments: {
lineComment: '#'
},
brackets: [
['[', ']'],
['<', '>'],
['(', ')']
],
autoClosingPairs: [
{ open: '[', close: ']' },
{ open: '<', close: '>' },
{ open: '(', close: ')' }
],
surroundingPairs: [
{ open: '[', close: ']' },
{ open: '<', close: '>' },
{ open: '(', close: ')' }
]
};
exports.language = {
defaultToken: '',
tokenPostfix: '.pla',
brackets: [
{ open: '[', close: ']', token: 'delimiter.square' },
{ open: '<', close: '>', token: 'delimiter.angle' },
{ open: '(', close: ')', token: 'delimiter.parenthesis' }
],
keywords: [
'.i',
'.o',
'.mv',
'.ilb',
'.ob',
'.label',
'.type',
'.phase',
'.pair',
'.symbolic',
'.symbolic-output',
'.kiss',
'.p',
'.e',
'.end'
],
// regular expressions
comment: /#.*$/,
identifier: /[a-zA-Z]+[a-zA-Z0-9_\-]*/,
plaContent: /[01\-~\|]+/,
// The main tokenizer for our languages
tokenizer: {
root: [
// comments and whitespace
{ include: '@whitespace' },
[/@comment/, 'comment'],
// keyword
[
/\.([a-zA-Z_\-]+)/,
{
cases: {
'@eos': { token: 'keyword.$1' },
'@keywords': {
cases: {
'.type': { token: 'keyword.$1', next: '@type' },
'@default': { token: 'keyword.$1', next: '@keywordArg' }
}
},
'@default': { token: 'keyword.$1' }
}
}
],
// identifiers
[/@identifier/, 'identifier'],
// PLA row
[/@plaContent/, 'string']
],
whitespace: [[/[ \t\r\n]+/, '']],
type: [{ include: '@whitespace' }, [/\w+/, { token: 'type', next: '@pop' }]],
keywordArg: [
// whitespace
[
/[ \t\r\n]+/,
{
cases: {
'@eos': { token: '', next: '@pop' },
'@default': ''
}
}
],
// comments
[/@comment/, 'comment', '@pop'],
// brackets
[
/[<>()\[\]]/,
{
cases: {
'@eos': { token: '@brackets', next: '@pop' },
'@default': '@brackets'
}
}
],
// numbers
[
/\-?\d+/,
{
cases: {
'@eos': { token: 'number', next: '@pop' },
'@default': 'number'
}
}
],
// identifiers
[
/@identifier/,
{
cases: {
'@eos': { token: 'identifier', next: '@pop' },
'@default': 'identifier'
}
}
],
// delimiter
[
/[;=]/,
{
cases: {
'@eos': { token: 'delimiter', next: '@pop' },
'@default': 'delimiter'
}
}
]
]
}
};
});

@ -0,0 +1,716 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Artyom Shalkhakov. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*
* Based on the ATS/Postiats lexer by Hongwei Xi.
*--------------------------------------------------------------------------------------------*/
define('vs/basic-languages/postiats/postiats',["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: [
['{', '}'],
['[', ']'],
['(', ')'],
['<', '>']
],
autoClosingPairs: [
{ open: '"', close: '"', notIn: ['string', 'comment'] },
{ open: '{', close: '}', notIn: ['string', 'comment'] },
{ open: '[', close: ']', notIn: ['string', 'comment'] },
{ open: '(', close: ')', notIn: ['string', 'comment'] }
]
};
exports.language = {
tokenPostfix: '.pats',
// TODO: staload and dynload are followed by a special kind of string literals
// with {$IDENTIFER} variables, and it also may make sense to highlight
// the punctuation (. and / and \) differently.
// Set defaultToken to invalid to see what you do not tokenize yet
defaultToken: 'invalid',
// keyword reference: https://github.com/githwxi/ATS-Postiats/blob/master/src/pats_lexing_token.dats
keywords: [
//
'abstype',
'abst0ype',
'absprop',
'absview',
'absvtype',
'absviewtype',
'absvt0ype',
'absviewt0ype',
//
'as',
//
'and',
//
'assume',
//
'begin',
//
/*
"case", // CASE
*/
//
'classdec',
//
'datasort',
//
'datatype',
'dataprop',
'dataview',
'datavtype',
'dataviewtype',
//
'do',
//
'end',
//
'extern',
'extype',
'extvar',
//
'exception',
//
'fn',
'fnx',
'fun',
//
'prfn',
'prfun',
//
'praxi',
'castfn',
//
'if',
'then',
'else',
//
'ifcase',
//
'in',
//
'infix',
'infixl',
'infixr',
'prefix',
'postfix',
//
'implmnt',
'implement',
//
'primplmnt',
'primplement',
//
'import',
//
/*
"lam", // LAM
"llam", // LLAM
"fix", // FIX
*/
//
'let',
//
'local',
//
'macdef',
'macrodef',
//
'nonfix',
//
'symelim',
'symintr',
'overload',
//
'of',
'op',
//
'rec',
//
'sif',
'scase',
//
'sortdef',
/*
// HX: [sta] is now deprecated
*/
'sta',
'stacst',
'stadef',
'static',
/*
"stavar", // T_STAVAR
*/
//
'staload',
'dynload',
//
'try',
//
'tkindef',
//
/*
"type", // TYPE
*/
'typedef',
'propdef',
'viewdef',
'vtypedef',
'viewtypedef',
//
/*
"val", // VAL
*/
'prval',
//
'var',
'prvar',
//
'when',
'where',
//
/*
"for", // T_FOR
"while", // T_WHILE
*/
//
'with',
//
'withtype',
'withprop',
'withview',
'withvtype',
'withviewtype' // WITHVIEWTYPE
//
],
keywords_dlr: [
'$delay',
'$ldelay',
//
'$arrpsz',
'$arrptrsize',
//
'$d2ctype',
//
'$effmask',
'$effmask_ntm',
'$effmask_exn',
'$effmask_ref',
'$effmask_wrt',
'$effmask_all',
//
'$extern',
'$extkind',
'$extype',
'$extype_struct',
//
'$extval',
'$extfcall',
'$extmcall',
//
'$literal',
//
'$myfilename',
'$mylocation',
'$myfunction',
//
'$lst',
'$lst_t',
'$lst_vt',
'$list',
'$list_t',
'$list_vt',
//
'$rec',
'$rec_t',
'$rec_vt',
'$record',
'$record_t',
'$record_vt',
//
'$tup',
'$tup_t',
'$tup_vt',
'$tuple',
'$tuple_t',
'$tuple_vt',
//
'$break',
'$continue',
//
'$raise',
//
'$showtype',
//
'$vcopyenv_v',
'$vcopyenv_vt',
//
'$tempenver',
//
'$solver_assert',
'$solver_verify' // T_DLRSOLVERIFY
],
keywords_srp: [
//
'#if',
'#ifdef',
'#ifndef',
//
'#then',
//
'#elif',
'#elifdef',
'#elifndef',
//
'#else',
'#endif',
//
'#error',
//
'#prerr',
'#print',
//
'#assert',
//
'#undef',
'#define',
//
'#include',
'#require',
//
'#pragma',
'#codegen2',
'#codegen3' // T_SRPCODEGEN3 // for level-3 codegen
//
// HX: end of special tokens
//
],
irregular_keyword_list: [
'val+',
'val-',
'val',
'case+',
'case-',
'case',
'addr@',
'addr',
'fold@',
'free@',
'fix@',
'fix',
'lam@',
'lam',
'llam@',
'llam',
'viewt@ype+',
'viewt@ype-',
'viewt@ype',
'viewtype+',
'viewtype-',
'viewtype',
'view+',
'view-',
'view@',
'view',
'type+',
'type-',
'type',
'vtype+',
'vtype-',
'vtype',
'vt@ype+',
'vt@ype-',
'vt@ype',
'viewt@ype+',
'viewt@ype-',
'viewt@ype',
'viewtype+',
'viewtype-',
'viewtype',
'prop+',
'prop-',
'prop',
'type+',
'type-',
'type',
't@ype',
't@ype+',
't@ype-',
'abst@ype',
'abstype',
'absviewt@ype',
'absvt@ype',
'for*',
'for',
'while*',
'while'
],
keywords_types: [
'bool',
'double',
'byte',
'int',
'short',
'char',
'void',
'unit',
'long',
'float',
'string',
'strptr'
],
// TODO: reference for this?
keywords_effects: [
'0',
'fun',
'clo',
'prf',
'funclo',
'cloptr',
'cloref',
'ref',
'ntm',
'1' // all effects
],
operators: [
'@',
'!',
'|',
'`',
':',
'$',
'.',
'=',
'#',
'~',
//
'..',
'...',
//
'=>',
// "=<", // T_EQLT
'=<>',
'=/=>',
'=>>',
'=/=>>',
//
'<',
'>',
//
'><',
//
'.<',
'>.',
//
'.<>.',
//
'->',
//"-<", // T_MINUSLT
'-<>' // T_MINUSLTGT
//
/*
":<", // T_COLONLT
*/
],
brackets: [
{ open: ',(', close: ')', token: 'delimiter.parenthesis' },
{ open: '`(', close: ')', token: 'delimiter.parenthesis' },
{ open: '%(', close: ')', token: 'delimiter.parenthesis' },
{ open: "'(", close: ')', token: 'delimiter.parenthesis' },
{ open: "'{", close: '}', token: 'delimiter.parenthesis' },
{ open: '@(', close: ')', token: 'delimiter.parenthesis' },
{ open: '@{', close: '}', token: 'delimiter.brace' },
{ open: '@[', close: ']', token: 'delimiter.square' },
{ open: '#[', close: ']', token: 'delimiter.square' },
{ open: '{', close: '}', token: 'delimiter.curly' },
{ open: '[', close: ']', token: 'delimiter.square' },
{ open: '(', close: ')', token: 'delimiter.parenthesis' },
{ open: '<', close: '>', token: 'delimiter.angle' }
],
// we include these common regular expressions
symbols: /[=><!~?:&|+\-*\/\^%]+/,
IDENTFST: /[a-zA-Z_]/,
IDENTRST: /[a-zA-Z0-9_'$]/,
symbolic: /[%&+-./:=@~`^|*!$#?<>]/,
digit: /[0-9]/,
digitseq0: /@digit*/,
xdigit: /[0-9A-Za-z]/,
xdigitseq0: /@xdigit*/,
INTSP: /[lLuU]/,
FLOATSP: /[fFlL]/,
fexponent: /[eE][+-]?[0-9]+/,
fexponent_bin: /[pP][+-]?[0-9]+/,
deciexp: /\.[0-9]*@fexponent?/,
hexiexp: /\.[0-9a-zA-Z]*@fexponent_bin?/,
irregular_keywords: /val[+-]?|case[+-]?|addr\@?|fold\@|free\@|fix\@?|lam\@?|llam\@?|prop[+-]?|type[+-]?|view[+-@]?|viewt@?ype[+-]?|t@?ype[+-]?|v(iew)?t@?ype[+-]?|abst@?ype|absv(iew)?t@?ype|for\*?|while\*?/,
ESCHAR: /[ntvbrfa\\\?'"\(\[\{]/,
start: 'root',
// The main tokenizer for ATS/Postiats
// reference: https://github.com/githwxi/ATS-Postiats/blob/master/src/pats_lexing.dats
tokenizer: {
root: [
// lexing_blankseq0
{ regex: /[ \t\r\n]+/, action: { token: '' } },
// NOTE: (*) is an invalid ML-like comment!
{ regex: /\(\*\)/, action: { token: 'invalid' } },
{
regex: /\(\*/,
action: { token: 'comment', next: 'lexing_COMMENT_block_ml' }
},
{
regex: /\(/,
action: '@brackets' /*{ token: 'delimiter.parenthesis' }*/
},
{
regex: /\)/,
action: '@brackets' /*{ token: 'delimiter.parenthesis' }*/
},
{
regex: /\[/,
action: '@brackets' /*{ token: 'delimiter.bracket' }*/
},
{
regex: /\]/,
action: '@brackets' /*{ token: 'delimiter.bracket' }*/
},
{
regex: /\{/,
action: '@brackets' /*{ token: 'delimiter.brace' }*/
},
{
regex: /\}/,
action: '@brackets' /*{ token: 'delimiter.brace' }*/
},
// lexing_COMMA
{
regex: /,\(/,
action: '@brackets' /*{ token: 'delimiter.parenthesis' }*/
},
{ regex: /,/, action: { token: 'delimiter.comma' } },
{ regex: /;/, action: { token: 'delimiter.semicolon' } },
// lexing_AT
{
regex: /@\(/,
action: '@brackets' /* { token: 'delimiter.parenthesis' }*/
},
{
regex: /@\[/,
action: '@brackets' /* { token: 'delimiter.bracket' }*/
},
{
regex: /@\{/,
action: '@brackets' /*{ token: 'delimiter.brace' }*/
},
// lexing_COLON
{
regex: /:</,
action: { token: 'keyword', next: '@lexing_EFFECT_commaseq0' }
},
/*
lexing_DOT:
. // SYMBOLIC => lexing_IDENT_sym
. FLOATDOT => lexing_FLOAT_deciexp
. DIGIT => T_DOTINT
*/
{ regex: /\.@symbolic+/, action: { token: 'identifier.sym' } },
// FLOATDOT case
{
regex: /\.@digit*@fexponent@FLOATSP*/,
action: { token: 'number.float' }
},
{ regex: /\.@digit+/, action: { token: 'number.float' } },
// lexing_DOLLAR:
// '$' IDENTFST IDENTRST* => lexing_IDENT_dlr, _ => lexing_IDENT_sym
{
regex: /\$@IDENTFST@IDENTRST*/,
action: {
cases: {
'@keywords_dlr': { token: 'keyword.dlr' },
'@default': { token: 'namespace' } // most likely a module qualifier
}
}
},
// lexing_SHARP:
// '#' IDENTFST IDENTRST* => lexing_ident_srp, _ => lexing_IDENT_sym
{
regex: /\#@IDENTFST@IDENTRST*/,
action: {
cases: {
'@keywords_srp': { token: 'keyword.srp' },
'@default': { token: 'identifier' }
}
}
},
// lexing_PERCENT:
{ regex: /%\(/, action: { token: 'delimiter.parenthesis' } },
{
regex: /^%{(#|\^|\$)?/,
action: {
token: 'keyword',
next: '@lexing_EXTCODE',
nextEmbedded: 'text/javascript'
}
},
{ regex: /^%}/, action: { token: 'keyword' } },
// lexing_QUOTE
{ regex: /'\(/, action: { token: 'delimiter.parenthesis' } },
{ regex: /'\[/, action: { token: 'delimiter.bracket' } },
{ regex: /'\{/, action: { token: 'delimiter.brace' } },
[/(')(\\@ESCHAR|\\[xX]@xdigit+|\\@digit+)(')/, ['string', 'string.escape', 'string']],
[/'[^\\']'/, 'string'],
// lexing_DQUOTE
[/"/, 'string.quote', '@lexing_DQUOTE'],
// lexing_BQUOTE
{
regex: /`\(/,
action: '@brackets' /* { token: 'delimiter.parenthesis' }*/
},
// TODO: otherwise, try lexing_IDENT_sym
{ regex: /\\/, action: { token: 'punctuation' } },
// lexing_IDENT_alp:
// NOTE: (?!regex) is syntax for "not-followed-by" regex
// to resolve ambiguity such as foreach$fwork being incorrectly lexed as [for] [each$fwork]!
{
regex: /@irregular_keywords(?!@IDENTRST)/,
action: { token: 'keyword' }
},
{
regex: /@IDENTFST@IDENTRST*[<!\[]?/,
action: {
cases: {
// TODO: dynload and staload should be specially parsed
// dynload whitespace+ "special_string"
// this special string is really:
// '/' '\\' '.' => punctuation
// ({\$)([a-zA-Z_][a-zA-Z_0-9]*)(}) => punctuation,keyword,punctuation
// [^"] => identifier/literal
'@keywords': { token: 'keyword' },
'@keywords_types': { token: 'type' },
'@default': { token: 'identifier' }
}
}
},
// lexing_IDENT_sym:
{
regex: /\/\/\/\//,
action: { token: 'comment', next: '@lexing_COMMENT_rest' }
},
{ regex: /\/\/.*$/, action: { token: 'comment' } },
{
regex: /\/\*/,
action: { token: 'comment', next: '@lexing_COMMENT_block_c' }
},
// AS-20160627: specifically for effect annotations
{
regex: /-<|=</,
action: { token: 'keyword', next: '@lexing_EFFECT_commaseq0' }
},
{
regex: /@symbolic+/,
action: {
cases: {
'@operators': 'keyword',
'@default': 'operator'
}
}
},
// lexing_ZERO:
// FIXME: this one is quite messy/unfinished yet
// TODO: lexing_INT_hex
// - testing_hexiexp => lexing_FLOAT_hexiexp
// - testing_fexponent_bin => lexing_FLOAT_hexiexp
// - testing_intspseq0 => T_INT_hex
// lexing_INT_hex:
{
regex: /0[xX]@xdigit+(@hexiexp|@fexponent_bin)@FLOATSP*/,
action: { token: 'number.float' }
},
{ regex: /0[xX]@xdigit+@INTSP*/, action: { token: 'number.hex' } },
{
regex: /0[0-7]+(?![0-9])@INTSP*/,
action: { token: 'number.octal' }
},
//{regex: /0/, action: { token: 'number' } }, // INTZERO
// lexing_INT_dec:
// - testing_deciexp => lexing_FLOAT_deciexp
// - testing_fexponent => lexing_FLOAT_deciexp
// - otherwise => intspseq0 ([0-9]*[lLuU]?)
{
regex: /@digit+(@fexponent|@deciexp)@FLOATSP*/,
action: { token: 'number.float' }
},
{
regex: /@digit@digitseq0@INTSP*/,
action: { token: 'number.decimal' }
},
// DIGIT, if followed by digitseq0, is lexing_INT_dec
{ regex: /@digit+@INTSP*/, action: { token: 'number' } }
],
lexing_COMMENT_block_ml: [
[/[^\(\*]+/, 'comment'],
[/\(\*/, 'comment', '@push'],
[/\(\*/, 'comment.invalid'],
[/\*\)/, 'comment', '@pop'],
[/\*/, 'comment']
],
lexing_COMMENT_block_c: [
[/[^\/*]+/, 'comment'],
// [/\/\*/, 'comment', '@push' ], // nested C-style block comments not allowed
// [/\/\*/, 'comment.invalid' ], // NOTE: this breaks block comments in the shape of /* //*/
[/\*\//, 'comment', '@pop'],
[/[\/*]/, 'comment']
],
lexing_COMMENT_rest: [
[/$/, 'comment', '@pop'],
[/.*/, 'comment']
],
// NOTE: added by AS, specifically for highlighting
lexing_EFFECT_commaseq0: [
{
regex: /@IDENTFST@IDENTRST+|@digit+/,
action: {
cases: {
'@keywords_effects': { token: 'type.effect' },
'@default': { token: 'identifier' }
}
}
},
{ regex: /,/, action: { token: 'punctuation' } },
{ regex: />/, action: { token: '@rematch', next: '@pop' } }
],
lexing_EXTCODE: [
{
regex: /^%}/,
action: {
token: '@rematch',
next: '@pop',
nextEmbedded: '@pop'
}
},
{ regex: /[^%]+/, action: '' }
],
lexing_DQUOTE: [
{ regex: /"/, action: { token: 'string.quote', next: '@pop' } },
// AS-20160628: additional hi-lighting for variables in staload/dynload strings
{
regex: /(\{\$)(@IDENTFST@IDENTRST*)(\})/,
action: [{ token: 'string.escape' }, { token: 'identifier' }, { token: 'string.escape' }]
},
{ regex: /\\$/, action: { token: 'string.escape' } },
{
regex: /\\(@ESCHAR|[xX]@xdigit+|@digit+)/,
action: { token: 'string.escape' }
},
{ regex: /[^\\"]+/, action: { token: 'string' } }
]
}
};
});

@ -0,0 +1,897 @@
/*---------------------------------------------------------------------------------------------
* 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/powerquery/powerquery',["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: [
['[', ']'],
['(', ')'],
['{', '}']
],
autoClosingPairs: [
{ open: '"', close: '"', notIn: ['string', 'comment', 'identifier'] },
{ open: '[', close: ']', notIn: ['string', 'comment', 'identifier'] },
{ open: '(', close: ')', notIn: ['string', 'comment', 'identifier'] },
{ open: '{', close: '}', notIn: ['string', 'comment', 'identifier'] }
]
};
exports.language = {
defaultToken: '',
tokenPostfix: '.pq',
ignoreCase: false,
brackets: [
{ open: '[', close: ']', token: 'delimiter.square' },
{ open: '{', close: '}', token: 'delimiter.brackets' },
{ open: '(', close: ')', token: 'delimiter.parenthesis' }
],
operatorKeywords: ['and', 'not', 'or'],
keywords: [
'as',
'each',
'else',
'error',
'false',
'if',
'in',
'is',
'let',
'meta',
'otherwise',
'section',
'shared',
'then',
'true',
'try',
'type'
],
constructors: ['#binary', '#date', '#datetime', '#datetimezone', '#duration', '#table', '#time'],
constants: ['#infinity', '#nan', '#sections', '#shared'],
typeKeywords: [
'action',
'any',
'anynonnull',
'none',
'null',
'logical',
'number',
'time',
'date',
'datetime',
'datetimezone',
'duration',
'text',
'binary',
'list',
'record',
'table',
'function'
],
builtinFunctions: [
'Access.Database',
'Action.Return',
'Action.Sequence',
'Action.Try',
'ActiveDirectory.Domains',
'AdoDotNet.DataSource',
'AdoDotNet.Query',
'AdobeAnalytics.Cubes',
'AnalysisServices.Database',
'AnalysisServices.Databases',
'AzureStorage.BlobContents',
'AzureStorage.Blobs',
'AzureStorage.Tables',
'Binary.Buffer',
'Binary.Combine',
'Binary.Compress',
'Binary.Decompress',
'Binary.End',
'Binary.From',
'Binary.FromList',
'Binary.FromText',
'Binary.InferContentType',
'Binary.Length',
'Binary.ToList',
'Binary.ToText',
'BinaryFormat.7BitEncodedSignedInteger',
'BinaryFormat.7BitEncodedUnsignedInteger',
'BinaryFormat.Binary',
'BinaryFormat.Byte',
'BinaryFormat.ByteOrder',
'BinaryFormat.Choice',
'BinaryFormat.Decimal',
'BinaryFormat.Double',
'BinaryFormat.Group',
'BinaryFormat.Length',
'BinaryFormat.List',
'BinaryFormat.Null',
'BinaryFormat.Record',
'BinaryFormat.SignedInteger16',
'BinaryFormat.SignedInteger32',
'BinaryFormat.SignedInteger64',
'BinaryFormat.Single',
'BinaryFormat.Text',
'BinaryFormat.Transform',
'BinaryFormat.UnsignedInteger16',
'BinaryFormat.UnsignedInteger32',
'BinaryFormat.UnsignedInteger64',
'Byte.From',
'Character.FromNumber',
'Character.ToNumber',
'Combiner.CombineTextByDelimiter',
'Combiner.CombineTextByEachDelimiter',
'Combiner.CombineTextByLengths',
'Combiner.CombineTextByPositions',
'Combiner.CombineTextByRanges',
'Comparer.Equals',
'Comparer.FromCulture',
'Comparer.Ordinal',
'Comparer.OrdinalIgnoreCase',
'Csv.Document',
'Cube.AddAndExpandDimensionColumn',
'Cube.AddMeasureColumn',
'Cube.ApplyParameter',
'Cube.AttributeMemberId',
'Cube.AttributeMemberProperty',
'Cube.CollapseAndRemoveColumns',
'Cube.Dimensions',
'Cube.DisplayFolders',
'Cube.Measures',
'Cube.Parameters',
'Cube.Properties',
'Cube.PropertyKey',
'Cube.ReplaceDimensions',
'Cube.Transform',
'Currency.From',
'DB2.Database',
'Date.AddDays',
'Date.AddMonths',
'Date.AddQuarters',
'Date.AddWeeks',
'Date.AddYears',
'Date.Day',
'Date.DayOfWeek',
'Date.DayOfWeekName',
'Date.DayOfYear',
'Date.DaysInMonth',
'Date.EndOfDay',
'Date.EndOfMonth',
'Date.EndOfQuarter',
'Date.EndOfWeek',
'Date.EndOfYear',
'Date.From',
'Date.FromText',
'Date.IsInCurrentDay',
'Date.IsInCurrentMonth',
'Date.IsInCurrentQuarter',
'Date.IsInCurrentWeek',
'Date.IsInCurrentYear',
'Date.IsInNextDay',
'Date.IsInNextMonth',
'Date.IsInNextNDays',
'Date.IsInNextNMonths',
'Date.IsInNextNQuarters',
'Date.IsInNextNWeeks',
'Date.IsInNextNYears',
'Date.IsInNextQuarter',
'Date.IsInNextWeek',
'Date.IsInNextYear',
'Date.IsInPreviousDay',
'Date.IsInPreviousMonth',
'Date.IsInPreviousNDays',
'Date.IsInPreviousNMonths',
'Date.IsInPreviousNQuarters',
'Date.IsInPreviousNWeeks',
'Date.IsInPreviousNYears',
'Date.IsInPreviousQuarter',
'Date.IsInPreviousWeek',
'Date.IsInPreviousYear',
'Date.IsInYearToDate',
'Date.IsLeapYear',
'Date.Month',
'Date.MonthName',
'Date.QuarterOfYear',
'Date.StartOfDay',
'Date.StartOfMonth',
'Date.StartOfQuarter',
'Date.StartOfWeek',
'Date.StartOfYear',
'Date.ToRecord',
'Date.ToText',
'Date.WeekOfMonth',
'Date.WeekOfYear',
'Date.Year',
'DateTime.AddZone',
'DateTime.Date',
'DateTime.FixedLocalNow',
'DateTime.From',
'DateTime.FromFileTime',
'DateTime.FromText',
'DateTime.IsInCurrentHour',
'DateTime.IsInCurrentMinute',
'DateTime.IsInCurrentSecond',
'DateTime.IsInNextHour',
'DateTime.IsInNextMinute',
'DateTime.IsInNextNHours',
'DateTime.IsInNextNMinutes',
'DateTime.IsInNextNSeconds',
'DateTime.IsInNextSecond',
'DateTime.IsInPreviousHour',
'DateTime.IsInPreviousMinute',
'DateTime.IsInPreviousNHours',
'DateTime.IsInPreviousNMinutes',
'DateTime.IsInPreviousNSeconds',
'DateTime.IsInPreviousSecond',
'DateTime.LocalNow',
'DateTime.Time',
'DateTime.ToRecord',
'DateTime.ToText',
'DateTimeZone.FixedLocalNow',
'DateTimeZone.FixedUtcNow',
'DateTimeZone.From',
'DateTimeZone.FromFileTime',
'DateTimeZone.FromText',
'DateTimeZone.LocalNow',
'DateTimeZone.RemoveZone',
'DateTimeZone.SwitchZone',
'DateTimeZone.ToLocal',
'DateTimeZone.ToRecord',
'DateTimeZone.ToText',
'DateTimeZone.ToUtc',
'DateTimeZone.UtcNow',
'DateTimeZone.ZoneHours',
'DateTimeZone.ZoneMinutes',
'Decimal.From',
'Diagnostics.ActivityId',
'Diagnostics.Trace',
'DirectQueryCapabilities.From',
'Double.From',
'Duration.Days',
'Duration.From',
'Duration.FromText',
'Duration.Hours',
'Duration.Minutes',
'Duration.Seconds',
'Duration.ToRecord',
'Duration.ToText',
'Duration.TotalDays',
'Duration.TotalHours',
'Duration.TotalMinutes',
'Duration.TotalSeconds',
'Embedded.Value',
'Error.Record',
'Excel.CurrentWorkbook',
'Excel.Workbook',
'Exchange.Contents',
'Expression.Constant',
'Expression.Evaluate',
'Expression.Identifier',
'Facebook.Graph',
'File.Contents',
'Folder.Contents',
'Folder.Files',
'Function.From',
'Function.Invoke',
'Function.InvokeAfter',
'Function.IsDataSource',
'GoogleAnalytics.Accounts',
'Guid.From',
'HdInsight.Containers',
'HdInsight.Contents',
'HdInsight.Files',
'Hdfs.Contents',
'Hdfs.Files',
'Informix.Database',
'Int16.From',
'Int32.From',
'Int64.From',
'Int8.From',
'ItemExpression.From',
'Json.Document',
'Json.FromValue',
'Lines.FromBinary',
'Lines.FromText',
'Lines.ToBinary',
'Lines.ToText',
'List.Accumulate',
'List.AllTrue',
'List.Alternate',
'List.AnyTrue',
'List.Average',
'List.Buffer',
'List.Combine',
'List.Contains',
'List.ContainsAll',
'List.ContainsAny',
'List.Count',
'List.Covariance',
'List.DateTimeZones',
'List.DateTimes',
'List.Dates',
'List.Difference',
'List.Distinct',
'List.Durations',
'List.FindText',
'List.First',
'List.FirstN',
'List.Generate',
'List.InsertRange',
'List.Intersect',
'List.IsDistinct',
'List.IsEmpty',
'List.Last',
'List.LastN',
'List.MatchesAll',
'List.MatchesAny',
'List.Max',
'List.MaxN',
'List.Median',
'List.Min',
'List.MinN',
'List.Mode',
'List.Modes',
'List.NonNullCount',
'List.Numbers',
'List.PositionOf',
'List.PositionOfAny',
'List.Positions',
'List.Product',
'List.Random',
'List.Range',
'List.RemoveFirstN',
'List.RemoveItems',
'List.RemoveLastN',
'List.RemoveMatchingItems',
'List.RemoveNulls',
'List.RemoveRange',
'List.Repeat',
'List.ReplaceMatchingItems',
'List.ReplaceRange',
'List.ReplaceValue',
'List.Reverse',
'List.Select',
'List.Single',
'List.SingleOrDefault',
'List.Skip',
'List.Sort',
'List.StandardDeviation',
'List.Sum',
'List.Times',
'List.Transform',
'List.TransformMany',
'List.Union',
'List.Zip',
'Logical.From',
'Logical.FromText',
'Logical.ToText',
'MQ.Queue',
'MySQL.Database',
'Number.Abs',
'Number.Acos',
'Number.Asin',
'Number.Atan',
'Number.Atan2',
'Number.BitwiseAnd',
'Number.BitwiseNot',
'Number.BitwiseOr',
'Number.BitwiseShiftLeft',
'Number.BitwiseShiftRight',
'Number.BitwiseXor',
'Number.Combinations',
'Number.Cos',
'Number.Cosh',
'Number.Exp',
'Number.Factorial',
'Number.From',
'Number.FromText',
'Number.IntegerDivide',
'Number.IsEven',
'Number.IsNaN',
'Number.IsOdd',
'Number.Ln',
'Number.Log',
'Number.Log10',
'Number.Mod',
'Number.Permutations',
'Number.Power',
'Number.Random',
'Number.RandomBetween',
'Number.Round',
'Number.RoundAwayFromZero',
'Number.RoundDown',
'Number.RoundTowardZero',
'Number.RoundUp',
'Number.Sign',
'Number.Sin',
'Number.Sinh',
'Number.Sqrt',
'Number.Tan',
'Number.Tanh',
'Number.ToText',
'OData.Feed',
'Odbc.DataSource',
'Odbc.Query',
'OleDb.DataSource',
'OleDb.Query',
'Oracle.Database',
'Percentage.From',
'PostgreSQL.Database',
'RData.FromBinary',
'Record.AddField',
'Record.Combine',
'Record.Field',
'Record.FieldCount',
'Record.FieldNames',
'Record.FieldOrDefault',
'Record.FieldValues',
'Record.FromList',
'Record.FromTable',
'Record.HasFields',
'Record.RemoveFields',
'Record.RenameFields',
'Record.ReorderFields',
'Record.SelectFields',
'Record.ToList',
'Record.ToTable',
'Record.TransformFields',
'Replacer.ReplaceText',
'Replacer.ReplaceValue',
'RowExpression.Column',
'RowExpression.From',
'Salesforce.Data',
'Salesforce.Reports',
'SapBusinessWarehouse.Cubes',
'SapHana.Database',
'SharePoint.Contents',
'SharePoint.Files',
'SharePoint.Tables',
'Single.From',
'Soda.Feed',
'Splitter.SplitByNothing',
'Splitter.SplitTextByAnyDelimiter',
'Splitter.SplitTextByDelimiter',
'Splitter.SplitTextByEachDelimiter',
'Splitter.SplitTextByLengths',
'Splitter.SplitTextByPositions',
'Splitter.SplitTextByRanges',
'Splitter.SplitTextByRepeatedLengths',
'Splitter.SplitTextByWhitespace',
'Sql.Database',
'Sql.Databases',
'SqlExpression.SchemaFrom',
'SqlExpression.ToExpression',
'Sybase.Database',
'Table.AddColumn',
'Table.AddIndexColumn',
'Table.AddJoinColumn',
'Table.AddKey',
'Table.AggregateTableColumn',
'Table.AlternateRows',
'Table.Buffer',
'Table.Column',
'Table.ColumnCount',
'Table.ColumnNames',
'Table.ColumnsOfType',
'Table.Combine',
'Table.CombineColumns',
'Table.Contains',
'Table.ContainsAll',
'Table.ContainsAny',
'Table.DemoteHeaders',
'Table.Distinct',
'Table.DuplicateColumn',
'Table.ExpandListColumn',
'Table.ExpandRecordColumn',
'Table.ExpandTableColumn',
'Table.FillDown',
'Table.FillUp',
'Table.FilterWithDataTable',
'Table.FindText',
'Table.First',
'Table.FirstN',
'Table.FirstValue',
'Table.FromColumns',
'Table.FromList',
'Table.FromPartitions',
'Table.FromRecords',
'Table.FromRows',
'Table.FromValue',
'Table.Group',
'Table.HasColumns',
'Table.InsertRows',
'Table.IsDistinct',
'Table.IsEmpty',
'Table.Join',
'Table.Keys',
'Table.Last',
'Table.LastN',
'Table.MatchesAllRows',
'Table.MatchesAnyRows',
'Table.Max',
'Table.MaxN',
'Table.Min',
'Table.MinN',
'Table.NestedJoin',
'Table.Partition',
'Table.PartitionValues',
'Table.Pivot',
'Table.PositionOf',
'Table.PositionOfAny',
'Table.PrefixColumns',
'Table.Profile',
'Table.PromoteHeaders',
'Table.Range',
'Table.RemoveColumns',
'Table.RemoveFirstN',
'Table.RemoveLastN',
'Table.RemoveMatchingRows',
'Table.RemoveRows',
'Table.RemoveRowsWithErrors',
'Table.RenameColumns',
'Table.ReorderColumns',
'Table.Repeat',
'Table.ReplaceErrorValues',
'Table.ReplaceKeys',
'Table.ReplaceMatchingRows',
'Table.ReplaceRelationshipIdentity',
'Table.ReplaceRows',
'Table.ReplaceValue',
'Table.ReverseRows',
'Table.RowCount',
'Table.Schema',
'Table.SelectColumns',
'Table.SelectRows',
'Table.SelectRowsWithErrors',
'Table.SingleRow',
'Table.Skip',
'Table.Sort',
'Table.SplitColumn',
'Table.ToColumns',
'Table.ToList',
'Table.ToRecords',
'Table.ToRows',
'Table.TransformColumnNames',
'Table.TransformColumnTypes',
'Table.TransformColumns',
'Table.TransformRows',
'Table.Transpose',
'Table.Unpivot',
'Table.UnpivotOtherColumns',
'Table.View',
'Table.ViewFunction',
'TableAction.DeleteRows',
'TableAction.InsertRows',
'TableAction.UpdateRows',
'Tables.GetRelationships',
'Teradata.Database',
'Text.AfterDelimiter',
'Text.At',
'Text.BeforeDelimiter',
'Text.BetweenDelimiters',
'Text.Clean',
'Text.Combine',
'Text.Contains',
'Text.End',
'Text.EndsWith',
'Text.Format',
'Text.From',
'Text.FromBinary',
'Text.Insert',
'Text.Length',
'Text.Lower',
'Text.Middle',
'Text.NewGuid',
'Text.PadEnd',
'Text.PadStart',
'Text.PositionOf',
'Text.PositionOfAny',
'Text.Proper',
'Text.Range',
'Text.Remove',
'Text.RemoveRange',
'Text.Repeat',
'Text.Replace',
'Text.ReplaceRange',
'Text.Select',
'Text.Split',
'Text.SplitAny',
'Text.Start',
'Text.StartsWith',
'Text.ToBinary',
'Text.ToList',
'Text.Trim',
'Text.TrimEnd',
'Text.TrimStart',
'Text.Upper',
'Time.EndOfHour',
'Time.From',
'Time.FromText',
'Time.Hour',
'Time.Minute',
'Time.Second',
'Time.StartOfHour',
'Time.ToRecord',
'Time.ToText',
'Type.AddTableKey',
'Type.ClosedRecord',
'Type.Facets',
'Type.ForFunction',
'Type.ForRecord',
'Type.FunctionParameters',
'Type.FunctionRequiredParameters',
'Type.FunctionReturn',
'Type.Is',
'Type.IsNullable',
'Type.IsOpenRecord',
'Type.ListItem',
'Type.NonNullable',
'Type.OpenRecord',
'Type.RecordFields',
'Type.ReplaceFacets',
'Type.ReplaceTableKeys',
'Type.TableColumn',
'Type.TableKeys',
'Type.TableRow',
'Type.TableSchema',
'Type.Union',
'Uri.BuildQueryString',
'Uri.Combine',
'Uri.EscapeDataString',
'Uri.Parts',
'Value.Add',
'Value.As',
'Value.Compare',
'Value.Divide',
'Value.Equals',
'Value.Firewall',
'Value.FromText',
'Value.Is',
'Value.Metadata',
'Value.Multiply',
'Value.NativeQuery',
'Value.NullableEquals',
'Value.RemoveMetadata',
'Value.ReplaceMetadata',
'Value.ReplaceType',
'Value.Subtract',
'Value.Type',
'ValueAction.NativeStatement',
'ValueAction.Replace',
'Variable.Value',
'Web.Contents',
'Web.Page',
'WebAction.Request',
'Xml.Document',
'Xml.Tables'
],
builtinConstants: [
'BinaryEncoding.Base64',
'BinaryEncoding.Hex',
'BinaryOccurrence.Optional',
'BinaryOccurrence.Repeating',
'BinaryOccurrence.Required',
'ByteOrder.BigEndian',
'ByteOrder.LittleEndian',
'Compression.Deflate',
'Compression.GZip',
'CsvStyle.QuoteAfterDelimiter',
'CsvStyle.QuoteAlways',
'Culture.Current',
'Day.Friday',
'Day.Monday',
'Day.Saturday',
'Day.Sunday',
'Day.Thursday',
'Day.Tuesday',
'Day.Wednesday',
'ExtraValues.Error',
'ExtraValues.Ignore',
'ExtraValues.List',
'GroupKind.Global',
'GroupKind.Local',
'JoinAlgorithm.Dynamic',
'JoinAlgorithm.LeftHash',
'JoinAlgorithm.LeftIndex',
'JoinAlgorithm.PairwiseHash',
'JoinAlgorithm.RightHash',
'JoinAlgorithm.RightIndex',
'JoinAlgorithm.SortMerge',
'JoinKind.FullOuter',
'JoinKind.Inner',
'JoinKind.LeftAnti',
'JoinKind.LeftOuter',
'JoinKind.RightAnti',
'JoinKind.RightOuter',
'JoinSide.Left',
'JoinSide.Right',
'MissingField.Error',
'MissingField.Ignore',
'MissingField.UseNull',
'Number.E',
'Number.Epsilon',
'Number.NaN',
'Number.NegativeInfinity',
'Number.PI',
'Number.PositiveInfinity',
'Occurrence.All',
'Occurrence.First',
'Occurrence.Last',
'Occurrence.Optional',
'Occurrence.Repeating',
'Occurrence.Required',
'Order.Ascending',
'Order.Descending',
'Precision.Decimal',
'Precision.Double',
'QuoteStyle.Csv',
'QuoteStyle.None',
'RelativePosition.FromEnd',
'RelativePosition.FromStart',
'RoundingMode.AwayFromZero',
'RoundingMode.Down',
'RoundingMode.ToEven',
'RoundingMode.TowardZero',
'RoundingMode.Up',
'SapHanaDistribution.All',
'SapHanaDistribution.Connection',
'SapHanaDistribution.Off',
'SapHanaDistribution.Statement',
'SapHanaRangeOperator.Equals',
'SapHanaRangeOperator.GreaterThan',
'SapHanaRangeOperator.GreaterThanOrEquals',
'SapHanaRangeOperator.LessThan',
'SapHanaRangeOperator.LessThanOrEquals',
'SapHanaRangeOperator.NotEquals',
'TextEncoding.Ascii',
'TextEncoding.BigEndianUnicode',
'TextEncoding.Unicode',
'TextEncoding.Utf16',
'TextEncoding.Utf8',
'TextEncoding.Windows',
'TraceLevel.Critical',
'TraceLevel.Error',
'TraceLevel.Information',
'TraceLevel.Verbose',
'TraceLevel.Warning',
'WebMethod.Delete',
'WebMethod.Get',
'WebMethod.Head',
'WebMethod.Patch',
'WebMethod.Post',
'WebMethod.Put'
],
builtinTypes: [
'Action.Type',
'Any.Type',
'Binary.Type',
'BinaryEncoding.Type',
'BinaryOccurrence.Type',
'Byte.Type',
'ByteOrder.Type',
'Character.Type',
'Compression.Type',
'CsvStyle.Type',
'Currency.Type',
'Date.Type',
'DateTime.Type',
'DateTimeZone.Type',
'Day.Type',
'Decimal.Type',
'Double.Type',
'Duration.Type',
'ExtraValues.Type',
'Function.Type',
'GroupKind.Type',
'Guid.Type',
'Int16.Type',
'Int32.Type',
'Int64.Type',
'Int8.Type',
'JoinAlgorithm.Type',
'JoinKind.Type',
'JoinSide.Type',
'List.Type',
'Logical.Type',
'MissingField.Type',
'None.Type',
'Null.Type',
'Number.Type',
'Occurrence.Type',
'Order.Type',
'Password.Type',
'Percentage.Type',
'Precision.Type',
'QuoteStyle.Type',
'Record.Type',
'RelativePosition.Type',
'RoundingMode.Type',
'SapHanaDistribution.Type',
'SapHanaRangeOperator.Type',
'Single.Type',
'Table.Type',
'Text.Type',
'TextEncoding.Type',
'Time.Type',
'TraceLevel.Type',
'Type.Type',
'Uri.Type',
'WebMethod.Type'
],
tokenizer: {
root: [
// quoted identifier
[/#"[\w \.]+"/, 'identifier.quote'],
// numbers
[/\d*\.\d+([eE][\-+]?\d+)?/, 'number.float'],
[/0[xX][0-9a-fA-F]+/, 'number.hex'],
[/\d+([eE][\-+]?\d+)?/, 'number'],
// keywords
[
/(#?[a-z]+)\b/,
{
cases: {
'@typeKeywords': 'type',
'@keywords': 'keyword',
'@constants': 'constant',
'@constructors': 'constructor',
'@operatorKeywords': 'operators',
'@default': 'identifier'
}
}
],
// built-in types
[
/\b([A-Z][a-zA-Z0-9]+\.Type)\b/,
{
cases: {
'@builtinTypes': 'type',
'@default': 'identifier'
}
}
],
// other built-ins
[
/\b([A-Z][a-zA-Z0-9]+\.[A-Z][a-zA-Z0-9]+)\b/,
{
cases: {
'@builtinFunctions': 'keyword.function',
'@builtinConstants': 'constant',
'@default': 'identifier'
}
}
],
// other identifiers
[/\b([a-zA-Z_][\w\.]*)\b/, 'identifier'],
{ include: '@whitespace' },
{ include: '@comments' },
{ include: '@strings' },
[/[{}()\[\]]/, '@brackets'],
[/([=\+<>\-\*&@\?\/!])|([<>]=)|(<>)|(=>)|(\.\.\.)|(\.\.)/, 'operators'],
[/[,;]/, 'delimiter']
],
whitespace: [[/\s+/, 'white']],
comments: [
['\\/\\*', 'comment', '@comment'],
['\\/\\/+.*', 'comment']
],
comment: [
['\\*\\/', 'comment', '@pop'],
['.', 'comment']
],
strings: [['"', 'string', '@string']],
string: [
['""', 'string.escape'],
['"', 'string', '@pop'],
['.', 'string']
]
}
};
});

@ -0,0 +1,246 @@
/*---------------------------------------------------------------------------------------------
* 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/powershell/powershell',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
// the default separators except `$-`
wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\#%\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,
comments: {
lineComment: '#',
blockComment: ['<#', '#>']
},
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"', notIn: ['string'] },
{ open: "'", close: "'", notIn: ['string', 'comment'] }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
folding: {
markers: {
start: new RegExp('^\\s*#region\\b'),
end: new RegExp('^\\s*#endregion\\b')
}
}
};
exports.language = {
defaultToken: '',
ignoreCase: true,
tokenPostfix: '.ps1',
brackets: [
{ token: 'delimiter.curly', open: '{', close: '}' },
{ token: 'delimiter.square', open: '[', close: ']' },
{ token: 'delimiter.parenthesis', open: '(', close: ')' }
],
keywords: [
'begin',
'break',
'catch',
'class',
'continue',
'data',
'define',
'do',
'dynamicparam',
'else',
'elseif',
'end',
'exit',
'filter',
'finally',
'for',
'foreach',
'from',
'function',
'if',
'in',
'param',
'process',
'return',
'switch',
'throw',
'trap',
'try',
'until',
'using',
'var',
'while',
'workflow',
'parallel',
'sequence',
'inlinescript',
'configuration'
],
helpKeywords: /SYNOPSIS|DESCRIPTION|PARAMETER|EXAMPLE|INPUTS|OUTPUTS|NOTES|LINK|COMPONENT|ROLE|FUNCTIONALITY|FORWARDHELPTARGETNAME|FORWARDHELPCATEGORY|REMOTEHELPRUNSPACE|EXTERNALHELP/,
// we include these common regular expressions
symbols: /[=><!~?&%|+\-*\/\^;\.,]+/,
escapes: /`(?:[abfnrtv\\"'$]|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
// The main tokenizer for our languages
tokenizer: {
root: [
// commands and keywords
[
/[a-zA-Z_][\w-]*/,
{
cases: {
'@keywords': { token: 'keyword.$0' },
'@default': ''
}
}
],
// whitespace
[/[ \t\r\n]+/, ''],
// labels
[/^:\w*/, 'metatag'],
// variables
[
/\$(\{((global|local|private|script|using):)?[\w]+\}|((global|local|private|script|using):)?[\w]+)/,
'variable'
],
// Comments
[/<#/, 'comment', '@comment'],
[/#.*$/, 'comment'],
// delimiters
[/[{}()\[\]]/, '@brackets'],
[/@symbols/, 'delimiter'],
// numbers
[/\d*\.\d+([eE][\-+]?\d+)?/, 'number.float'],
[/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/, 'number.hex'],
[/\d+?/, 'number'],
// delimiter: after number because of .\d floats
[/[;,.]/, 'delimiter'],
// strings:
[/\@"/, 'string', '@herestring."'],
[/\@'/, 'string', "@herestring.'"],
[
/"/,
{
cases: {
'@eos': 'string',
'@default': { token: 'string', next: '@string."' }
}
}
],
[
/'/,
{
cases: {
'@eos': 'string',
'@default': { token: 'string', next: "@string.'" }
}
}
]
],
string: [
[
/[^"'\$`]+/,
{
cases: {
'@eos': { token: 'string', next: '@popall' },
'@default': 'string'
}
}
],
[
/@escapes/,
{
cases: {
'@eos': { token: 'string.escape', next: '@popall' },
'@default': 'string.escape'
}
}
],
[
/`./,
{
cases: {
'@eos': {
token: 'string.escape.invalid',
next: '@popall'
},
'@default': 'string.escape.invalid'
}
}
],
[
/\$[\w]+$/,
{
cases: {
'$S2=="': { token: 'variable', next: '@popall' },
'@default': { token: 'string', next: '@popall' }
}
}
],
[
/\$[\w]+/,
{
cases: {
'$S2=="': 'variable',
'@default': 'string'
}
}
],
[
/["']/,
{
cases: {
'$#==$S2': { token: 'string', next: '@pop' },
'@default': {
cases: {
'@eos': { token: 'string', next: '@popall' },
'@default': 'string'
}
}
}
}
]
],
herestring: [
[
/^\s*(["'])@/,
{
cases: {
'$1==$S2': { token: 'string', next: '@pop' },
'@default': 'string'
}
}
],
[/[^\$`]+/, 'string'],
[/@escapes/, 'string.escape'],
[/`./, 'string.escape.invalid'],
[
/\$[\w]+/,
{
cases: {
'$S2=="': 'variable',
'@default': 'string'
}
}
]
],
comment: [
[/[^#\.]+/, 'comment'],
[/#>/, 'comment', '@pop'],
[/(\.)(@helpKeywords)(?!\w)/, { token: 'comment.keyword.$2' }],
[/[\.#]/, 'comment']
]
}
};
});

@ -0,0 +1,418 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
define('vs/basic-languages/protobuf/protobuf',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
var namedLiterals = ['true', 'false'];
exports.conf = {
comments: {
lineComment: '//',
blockComment: ['/*', '*/']
},
brackets: [
['{', '}'],
['[', ']'],
['(', ')'],
['<', '>']
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '<', close: '>' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '<', close: '>' },
{ open: '"', close: '"', notIn: ['string'] },
{ open: "'", close: "'", notIn: ['string'] }
],
autoCloseBefore: ".,=}])>' \n\t",
indentationRules: {
increaseIndentPattern: new RegExp('^((?!\\/\\/).)*(\\{[^}"\'`]*|\\([^)"\'`]*|\\[[^\\]"\'`]*)$'),
decreaseIndentPattern: new RegExp('^((?!.*?\\/\\*).*\\*/)?\\s*[\\}\\]].*$')
}
};
exports.language = {
defaultToken: '',
tokenPostfix: '.proto',
brackets: [
{ open: '{', close: '}', token: 'delimiter.curly' },
{ open: '[', close: ']', token: 'delimiter.square' },
{ open: '(', close: ')', token: 'delimiter.parenthesis' },
{ open: '<', close: '>', token: 'delimiter.angle' }
],
symbols: /[=><!~?:&|+\-*/^%]+/,
keywords: [
'syntax',
'import',
'weak',
'public',
'package',
'option',
'repeated',
'oneof',
'map',
'reserved',
'to',
'max',
'enum',
'message',
'service',
'rpc',
'stream',
'returns',
'package',
'optional',
'true',
'false'
],
builtinTypes: [
'double',
'float',
'int32',
'int64',
'uint32',
'uint64',
'sint32',
'sint64',
'fixed32',
'fixed64',
'sfixed32',
'sfixed64',
'bool',
'string',
'bytes'
],
operators: ['=', '+', '-'],
namedLiterals: namedLiterals,
escapes: "\\\\(u{[0-9A-Fa-f]+}|n|r|t|\\\\|'|\\${)",
identifier: /[a-zA-Z]\w*/,
fullIdentifier: /@identifier(?:\s*\.\s*@identifier)*/,
optionName: /(?:@identifier|\(\s*@fullIdentifier\s*\))(?:\s*\.\s*@identifier)*/,
messageName: /@identifier/,
enumName: /@identifier/,
messageType: /\.?\s*(?:@identifier\s*\.\s*)*@messageName/,
enumType: /\.?\s*(?:@identifier\s*\.\s*)*@enumName/,
floatLit: /[0-9]+\s*\.\s*[0-9]*(?:@exponent)?|[0-9]+@exponent|\.[0-9]+(?:@exponent)?/,
exponent: /[eE]\s*[+-]?\s*[0-9]+/,
boolLit: /true\b|false\b/,
decimalLit: /[1-9][0-9]*/,
octalLit: /0[0-7]*/,
hexLit: /0[xX][0-9a-fA-F]+/,
type: /double|float|int32|int64|uint32|uint64|sint32|sint64|fixed32|fixed64|sfixed32|sfixed64|bool|string|bytes|@messageType|@enumType/,
keyType: /int32|int64|uint32|uint64|sint32|sint64|fixed32|fixed64|sfixed32|sfixed64|bool|string/,
tokenizer: {
root: [
{ include: '@whitespace' },
[/syntax/, 'keyword'],
[/=/, 'operators'],
[/;/, 'delimiter'],
[
/(")(proto3)(")/,
['string.quote', 'string', { token: 'string.quote', switchTo: '@topLevel.proto3' }]
],
[
/(")(proto2)(")/,
['string.quote', 'string', { token: 'string.quote', switchTo: '@topLevel.proto2' }]
]
],
topLevel: [
// whitespace
{ include: '@whitespace' },
{ include: '@constant' },
[/=/, 'operators'],
[/[;.]/, 'delimiter'],
[
/@fullIdentifier/,
{
cases: {
option: { token: 'keyword', next: '@option.$S2' },
enum: { token: 'keyword', next: '@enumDecl.$S2' },
message: { token: 'keyword', next: '@messageDecl.$S2' },
service: { token: 'keyword', next: '@serviceDecl.$S2' },
extend: {
cases: {
'$S2==proto2': { token: 'keyword', next: '@extendDecl.$S2' }
}
},
'@keywords': 'keyword',
'@default': 'identifier'
}
}
]
],
enumDecl: [
{ include: '@whitespace' },
[/@identifier/, 'type.identifier'],
[/{/, { token: '@brackets', bracket: '@open', switchTo: '@enumBody.$S2' }]
],
enumBody: [
{ include: '@whitespace' },
{ include: '@constant' },
[/=/, 'operators'],
[/;/, 'delimiter'],
[/option\b/, 'keyword', '@option.$S2'],
[/@identifier/, 'identifier'],
[/\[/, { token: '@brackets', bracket: '@open', next: '@options.$S2' }],
[/}/, { token: '@brackets', bracket: '@close', next: '@pop' }]
],
messageDecl: [
{ include: '@whitespace' },
[/@identifier/, 'type.identifier'],
[/{/, { token: '@brackets', bracket: '@open', switchTo: '@messageBody.$S2' }]
],
messageBody: [
{ include: '@whitespace' },
{ include: '@constant' },
[/=/, 'operators'],
[/;/, 'delimiter'],
[
'(map)(s*)(<)',
['keyword', 'white', { token: '@brackets', bracket: '@open', next: '@map.$S2' }]
],
[
/@identifier/,
{
cases: {
option: { token: 'keyword', next: '@option.$S2' },
enum: { token: 'keyword', next: '@enumDecl.$S2' },
message: { token: 'keyword', next: '@messageDecl.$S2' },
oneof: { token: 'keyword', next: '@oneofDecl.$S2' },
extensions: {
cases: {
'$S2==proto2': { token: 'keyword', next: '@reserved.$S2' }
}
},
reserved: { token: 'keyword', next: '@reserved.$S2' },
'(?:repeated|optional)': { token: 'keyword', next: '@field.$S2' },
required: {
cases: {
'$S2==proto2': { token: 'keyword', next: '@field.$S2' }
}
},
'$S2==proto3': { token: '@rematch', next: '@field.$S2' }
}
}
],
[/\[/, { token: '@brackets', bracket: '@open', next: '@options.$S2' }],
[/}/, { token: '@brackets', bracket: '@close', next: '@pop' }]
],
extendDecl: [
{ include: '@whitespace' },
[/@identifier/, 'type.identifier'],
[/{/, { token: '@brackets', bracket: '@open', switchTo: '@extendBody.$S2' }]
],
extendBody: [
{ include: '@whitespace' },
{ include: '@constant' },
[/;/, 'delimiter'],
[/(?:repeated|optional|required)/, 'keyword', '@field.$S2'],
[/\[/, { token: '@brackets', bracket: '@open', next: '@options.$S2' }],
[/}/, { token: '@brackets', bracket: '@close', next: '@pop' }]
],
options: [
{ include: '@whitespace' },
{ include: '@constant' },
[/;/, 'delimiter'],
[/@optionName/, 'annotation'],
[/[()]/, 'annotation.brackets'],
[/=/, 'operator'],
[/\]/, { token: '@brackets', bracket: '@close', next: '@pop' }]
],
option: [
{ include: '@whitespace' },
[/@optionName/, 'annotation'],
[/[()]/, 'annotation.brackets'],
[/=/, 'operator', '@pop']
],
oneofDecl: [
{ include: '@whitespace' },
[/@identifier/, 'identifier'],
[/{/, { token: '@brackets', bracket: '@open', switchTo: '@oneofBody.$S2' }]
],
oneofBody: [
{ include: '@whitespace' },
{ include: '@constant' },
[/;/, 'delimiter'],
[/(@identifier)(\s*)(=)/, ['identifier', 'white', 'delimiter']],
[
/@fullIdentifier|\./,
{
cases: {
'@builtinTypes': 'keyword',
'@default': 'type.identifier'
}
}
],
[/\[/, { token: '@brackets', bracket: '@open', next: '@options.$S2' }],
[/}/, { token: '@brackets', bracket: '@close', next: '@pop' }]
],
reserved: [
{ include: '@whitespace' },
[/,/, 'delimiter'],
[/;/, 'delimiter', '@pop'],
{ include: '@constant' },
[/to\b|max\b/, 'keyword']
],
map: [
{ include: '@whitespace' },
[
/@fullIdentifier|\./,
{
cases: {
'@builtinTypes': 'keyword',
'@default': 'type.identifier'
}
}
],
[/,/, 'delimiter'],
[/>/, { token: '@brackets', bracket: '@close', switchTo: 'identifier' }]
],
field: [
{ include: '@whitespace' },
[
'group',
{
cases: {
'$S2==proto2': { token: 'keyword', switchTo: '@groupDecl.$S2' }
}
}
],
[/(@identifier)(\s*)(=)/, ['identifier', 'white', { token: 'delimiter', next: '@pop' }]],
[
/@fullIdentifier|\./,
{
cases: {
'@builtinTypes': 'keyword',
'@default': 'type.identifier'
}
}
]
],
groupDecl: [
{ include: '@whitespace' },
[/@identifier/, 'identifier'],
['=', 'operator'],
[/{/, { token: '@brackets', bracket: '@open', switchTo: '@messageBody.$S2' }],
{ include: '@constant' }
],
type: [
{ include: '@whitespace' },
[/@identifier/, 'type.identifier', '@pop'],
[/./, 'delimiter']
],
identifier: [{ include: '@whitespace' }, [/@identifier/, 'identifier', '@pop']],
serviceDecl: [
{ include: '@whitespace' },
[/@identifier/, 'identifier'],
[/{/, { token: '@brackets', bracket: '@open', switchTo: '@serviceBody.$S2' }]
],
serviceBody: [
{ include: '@whitespace' },
{ include: '@constant' },
[/;/, 'delimiter'],
[/option\b/, 'keyword', '@option.$S2'],
[/rpc\b/, 'keyword', '@rpc.$S2'],
[/\[/, { token: '@brackets', bracket: '@open', next: '@options.$S2' }],
[/}/, { token: '@brackets', bracket: '@close', next: '@pop' }]
],
rpc: [
{ include: '@whitespace' },
[/@identifier/, 'identifier'],
[/\(/, { token: '@brackets', bracket: '@open', switchTo: '@request.$S2' }],
[/{/, { token: '@brackets', bracket: '@open', next: '@methodOptions.$S2' }],
[/;/, 'delimiter', '@pop']
],
request: [
{ include: '@whitespace' },
[
/@messageType/,
{
cases: {
stream: { token: 'keyword', next: '@type.$S2' },
'@default': 'type.identifier'
}
}
],
[/\)/, { token: '@brackets', bracket: '@close', switchTo: '@returns.$S2' }]
],
returns: [
{ include: '@whitespace' },
[/returns\b/, 'keyword'],
[/\(/, { token: '@brackets', bracket: '@open', switchTo: '@response.$S2' }]
],
response: [
{ include: '@whitespace' },
[
/@messageType/,
{
cases: {
stream: { token: 'keyword', next: '@type.$S2' },
'@default': 'type.identifier'
}
}
],
[/\)/, { token: '@brackets', bracket: '@close', switchTo: '@rpc.$S2' }]
],
methodOptions: [
{ include: '@whitespace' },
{ include: '@constant' },
[/;/, 'delimiter'],
['option', 'keyword'],
[/@optionName/, 'annotation'],
[/[()]/, 'annotation.brackets'],
[/=/, 'operator'],
[/}/, { token: '@brackets', bracket: '@close', next: '@pop' }]
],
comment: [
[/[^\/*]+/, 'comment'],
[/\/\*/, 'comment', '@push'],
['\\*/', 'comment', '@pop'],
[/[\/*]/, 'comment']
],
string: [
[/[^\\"]+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/"/, { token: 'string.quote', bracket: '@close', next: '@pop' }]
],
stringSingle: [
[/[^\\']+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/'/, { token: 'string.quote', bracket: '@close', next: '@pop' }]
],
constant: [
['@boolLit', 'keyword.constant'],
['@hexLit', 'number.hex'],
['@octalLit', 'number.octal'],
['@decimalLit', 'number'],
['@floatLit', 'number.float'],
[/("([^"\\]|\\.)*|'([^'\\]|\\.)*)$/, 'string.invalid'],
[/"/, { token: 'string.quote', bracket: '@open', next: '@string' }],
[/'/, { token: 'string.quote', bracket: '@open', next: '@stringSingle' }],
[/{/, { token: '@brackets', bracket: '@open', next: '@prototext' }],
[/identifier/, 'identifier']
],
whitespace: [
[/[ \t\r\n]+/, 'white'],
[/\/\*/, 'comment', '@comment'],
[/\/\/.*$/, 'comment']
],
prototext: [
{ include: '@whitespace' },
{ include: '@constant' },
[/@identifier/, 'identifier'],
[/[:;]/, 'delimiter'],
[/}/, { token: '@brackets', bracket: '@close', next: '@pop' }]
]
}
};
});

@ -0,0 +1,409 @@
/*---------------------------------------------------------------------------------------------
* 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/pug/pug',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
comments: {
lineComment: '//'
},
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '"', close: '"', notIn: ['string', 'comment'] },
{ open: "'", close: "'", notIn: ['string', 'comment'] },
{ open: '{', close: '}', notIn: ['string', 'comment'] },
{ open: '[', close: ']', notIn: ['string', 'comment'] },
{ open: '(', close: ')', notIn: ['string', 'comment'] }
],
folding: {
offSide: true
}
};
exports.language = {
defaultToken: '',
tokenPostfix: '.pug',
ignoreCase: true,
brackets: [
{ token: 'delimiter.curly', open: '{', close: '}' },
{ token: 'delimiter.array', open: '[', close: ']' },
{ token: 'delimiter.parenthesis', open: '(', close: ')' }
],
keywords: [
'append',
'block',
'case',
'default',
'doctype',
'each',
'else',
'extends',
'for',
'if',
'in',
'include',
'mixin',
'typeof',
'unless',
'var',
'when'
],
tags: [
'a',
'abbr',
'acronym',
'address',
'area',
'article',
'aside',
'audio',
'b',
'base',
'basefont',
'bdi',
'bdo',
'blockquote',
'body',
'br',
'button',
'canvas',
'caption',
'center',
'cite',
'code',
'col',
'colgroup',
'command',
'datalist',
'dd',
'del',
'details',
'dfn',
'div',
'dl',
'dt',
'em',
'embed',
'fieldset',
'figcaption',
'figure',
'font',
'footer',
'form',
'frame',
'frameset',
'h1',
'h2',
'h3',
'h4',
'h5',
'h6',
'head',
'header',
'hgroup',
'hr',
'html',
'i',
'iframe',
'img',
'input',
'ins',
'keygen',
'kbd',
'label',
'li',
'link',
'map',
'mark',
'menu',
'meta',
'meter',
'nav',
'noframes',
'noscript',
'object',
'ol',
'optgroup',
'option',
'output',
'p',
'param',
'pre',
'progress',
'q',
'rp',
'rt',
'ruby',
's',
'samp',
'script',
'section',
'select',
'small',
'source',
'span',
'strike',
'strong',
'style',
'sub',
'summary',
'sup',
'table',
'tbody',
'td',
'textarea',
'tfoot',
'th',
'thead',
'time',
'title',
'tr',
'tracks',
'tt',
'u',
'ul',
'video',
'wbr'
],
// we include these common regular expressions
symbols: /[\+\-\*\%\&\|\!\=\/\.\,\:]+/,
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
tokenizer: {
root: [
// Tag or a keyword at start
[
/^(\s*)([a-zA-Z_-][\w-]*)/,
{
cases: {
'$2@tags': {
cases: {
'@eos': ['', 'tag'],
'@default': ['', { token: 'tag', next: '@tag.$1' }]
}
},
'$2@keywords': ['', { token: 'keyword.$2' }],
'@default': ['', '']
}
}
],
// id
[
/^(\s*)(#[a-zA-Z_-][\w-]*)/,
{
cases: {
'@eos': ['', 'tag.id'],
'@default': ['', { token: 'tag.id', next: '@tag.$1' }]
}
}
],
// class
[
/^(\s*)(\.[a-zA-Z_-][\w-]*)/,
{
cases: {
'@eos': ['', 'tag.class'],
'@default': ['', { token: 'tag.class', next: '@tag.$1' }]
}
}
],
// plain text with pipe
[/^(\s*)(\|.*)$/, ''],
{ include: '@whitespace' },
// keywords
[
/[a-zA-Z_$][\w$]*/,
{
cases: {
'@keywords': { token: 'keyword.$0' },
'@default': ''
}
}
],
// delimiters and operators
[/[{}()\[\]]/, '@brackets'],
[/@symbols/, 'delimiter'],
// numbers
[/\d+\.\d+([eE][\-+]?\d+)?/, 'number.float'],
[/\d+/, 'number'],
// strings:
[/"/, 'string', '@string."'],
[/'/, 'string', "@string.'"]
],
tag: [
[/(\.)(\s*$)/, [{ token: 'delimiter', next: '@blockText.$S2.' }, '']],
[/\s+/, { token: '', next: '@simpleText' }],
// id
[
/#[a-zA-Z_-][\w-]*/,
{
cases: {
'@eos': { token: 'tag.id', next: '@pop' },
'@default': 'tag.id'
}
}
],
// class
[
/\.[a-zA-Z_-][\w-]*/,
{
cases: {
'@eos': { token: 'tag.class', next: '@pop' },
'@default': 'tag.class'
}
}
],
// attributes
[/\(/, { token: 'delimiter.parenthesis', next: '@attributeList' }]
],
simpleText: [
[/[^#]+$/, { token: '', next: '@popall' }],
[/[^#]+/, { token: '' }],
// interpolation
[
/(#{)([^}]*)(})/,
{
cases: {
'@eos': [
'interpolation.delimiter',
'interpolation',
{
token: 'interpolation.delimiter',
next: '@popall'
}
],
'@default': ['interpolation.delimiter', 'interpolation', 'interpolation.delimiter']
}
}
],
[/#$/, { token: '', next: '@popall' }],
[/#/, '']
],
attributeList: [
[/\s+/, ''],
[
/(\w+)(\s*=\s*)("|')/,
['attribute.name', 'delimiter', { token: 'attribute.value', next: '@value.$3' }]
],
[/\w+/, 'attribute.name'],
[
/,/,
{
cases: {
'@eos': {
token: 'attribute.delimiter',
next: '@popall'
},
'@default': 'attribute.delimiter'
}
}
],
[/\)$/, { token: 'delimiter.parenthesis', next: '@popall' }],
[/\)/, { token: 'delimiter.parenthesis', next: '@pop' }]
],
whitespace: [
[/^(\s*)(\/\/.*)$/, { token: 'comment', next: '@blockText.$1.comment' }],
[/[ \t\r\n]+/, ''],
[/<!--/, { token: 'comment', next: '@comment' }]
],
blockText: [
[
/^\s+.*$/,
{
cases: {
'($S2\\s+.*$)': { token: '$S3' },
'@default': { token: '@rematch', next: '@popall' }
}
}
],
[/./, { token: '@rematch', next: '@popall' }]
],
comment: [
[/[^<\-]+/, 'comment.content'],
[/-->/, { token: 'comment', next: '@pop' }],
[/<!--/, 'comment.content.invalid'],
[/[<\-]/, 'comment.content']
],
string: [
[
/[^\\"'#]+/,
{
cases: {
'@eos': { token: 'string', next: '@popall' },
'@default': 'string'
}
}
],
[
/@escapes/,
{
cases: {
'@eos': { token: 'string.escape', next: '@popall' },
'@default': 'string.escape'
}
}
],
[
/\\./,
{
cases: {
'@eos': {
token: 'string.escape.invalid',
next: '@popall'
},
'@default': 'string.escape.invalid'
}
}
],
// interpolation
[/(#{)([^}]*)(})/, ['interpolation.delimiter', 'interpolation', 'interpolation.delimiter']],
[/#/, 'string'],
[
/["']/,
{
cases: {
'$#==$S2': { token: 'string', next: '@pop' },
'@default': { token: 'string' }
}
}
]
],
// Almost identical to above, except for escapes and the output token
value: [
[
/[^\\"']+/,
{
cases: {
'@eos': { token: 'attribute.value', next: '@popall' },
'@default': 'attribute.value'
}
}
],
[
/\\./,
{
cases: {
'@eos': { token: 'attribute.value', next: '@popall' },
'@default': 'attribute.value'
}
}
],
[
/["']/,
{
cases: {
'$#==$S2': { token: 'attribute.value', next: '@pop' },
'@default': { token: 'attribute.value' }
}
}
]
]
}
};
});

@ -0,0 +1,256 @@
/*---------------------------------------------------------------------------------------------
* 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/python/python',["require", "exports", "../fillers/monaco-editor-core"], function (require, exports, monaco_editor_core_1) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
comments: {
lineComment: '#',
blockComment: ["'''", "'''"]
},
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"', notIn: ['string'] },
{ open: "'", close: "'", notIn: ['string', 'comment'] }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
onEnterRules: [
{
beforeText: new RegExp('^\\s*(?:def|class|for|if|elif|else|while|try|with|finally|except|async).*?:\\s*$'),
action: { indentAction: monaco_editor_core_1.languages.IndentAction.Indent }
}
],
folding: {
offSide: true,
markers: {
start: new RegExp('^\\s*#region\\b'),
end: new RegExp('^\\s*#endregion\\b')
}
}
};
exports.language = {
defaultToken: '',
tokenPostfix: '.python',
keywords: [
// This section is the result of running
// `for k in keyword.kwlist: print(' "' + k + '",')` in a Python REPL,
// though note that the output from Python 3 is not a strict superset of the
// output from Python 2.
'False',
'None',
'True',
'and',
'as',
'assert',
'async',
'await',
'break',
'class',
'continue',
'def',
'del',
'elif',
'else',
'except',
'exec',
'finally',
'for',
'from',
'global',
'if',
'import',
'in',
'is',
'lambda',
'nonlocal',
'not',
'or',
'pass',
'print',
'raise',
'return',
'try',
'while',
'with',
'yield',
'int',
'float',
'long',
'complex',
'hex',
'abs',
'all',
'any',
'apply',
'basestring',
'bin',
'bool',
'buffer',
'bytearray',
'callable',
'chr',
'classmethod',
'cmp',
'coerce',
'compile',
'complex',
'delattr',
'dict',
'dir',
'divmod',
'enumerate',
'eval',
'execfile',
'file',
'filter',
'format',
'frozenset',
'getattr',
'globals',
'hasattr',
'hash',
'help',
'id',
'input',
'intern',
'isinstance',
'issubclass',
'iter',
'len',
'locals',
'list',
'map',
'max',
'memoryview',
'min',
'next',
'object',
'oct',
'open',
'ord',
'pow',
'print',
'property',
'reversed',
'range',
'raw_input',
'reduce',
'reload',
'repr',
'reversed',
'round',
'self',
'set',
'setattr',
'slice',
'sorted',
'staticmethod',
'str',
'sum',
'super',
'tuple',
'type',
'unichr',
'unicode',
'vars',
'xrange',
'zip',
'__dict__',
'__methods__',
'__members__',
'__class__',
'__bases__',
'__name__',
'__mro__',
'__subclasses__',
'__init__',
'__import__'
],
brackets: [
{ open: '{', close: '}', token: 'delimiter.curly' },
{ open: '[', close: ']', token: 'delimiter.bracket' },
{ open: '(', close: ')', token: 'delimiter.parenthesis' }
],
tokenizer: {
root: [
{ include: '@whitespace' },
{ include: '@numbers' },
{ include: '@strings' },
[/[,:;]/, 'delimiter'],
[/[{}\[\]()]/, '@brackets'],
[/@[a-zA-Z_]\w*/, 'tag'],
[
/[a-zA-Z_]\w*/,
{
cases: {
'@keywords': 'keyword',
'@default': 'identifier'
}
}
]
],
// Deal with white space, including single and multi-line comments
whitespace: [
[/\s+/, 'white'],
[/(^#.*$)/, 'comment'],
[/'''/, 'string', '@endDocString'],
[/"""/, 'string', '@endDblDocString']
],
endDocString: [
[/[^']+/, 'string'],
[/\\'/, 'string'],
[/'''/, 'string', '@popall'],
[/'/, 'string']
],
endDblDocString: [
[/[^"]+/, 'string'],
[/\\"/, 'string'],
[/"""/, 'string', '@popall'],
[/"/, 'string']
],
// Recognize hex, negatives, decimals, imaginaries, longs, and scientific notation
numbers: [
[/-?0x([abcdef]|[ABCDEF]|\d)+[lL]?/, 'number.hex'],
[/-?(\d*\.)?\d+([eE][+\-]?\d+)?[jJ]?[lL]?/, 'number']
],
// Recognize strings, including those broken across lines with \ (but not without)
strings: [
[/'$/, 'string.escape', '@popall'],
[/'/, 'string.escape', '@stringBody'],
[/"$/, 'string.escape', '@popall'],
[/"/, 'string.escape', '@dblStringBody']
],
stringBody: [
[/[^\\']+$/, 'string', '@popall'],
[/[^\\']+/, 'string'],
[/\\./, 'string'],
[/'/, 'string.escape', '@popall'],
[/\\$/, 'string']
],
dblStringBody: [
[/[^\\"]+$/, 'string', '@popall'],
[/[^\\"]+/, 'string'],
[/\\./, 'string'],
[/"/, 'string.escape', '@popall'],
[/\\$/, 'string']
]
}
};
});

@ -0,0 +1,291 @@
/*---------------------------------------------------------------------------------------------
* 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/qsharp/qsharp',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
comments: {
lineComment: '//'
},
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"', notIn: ['string', 'comment'] }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' }
]
};
exports.language = {
// Set defaultToken to invalid to see what you do not tokenize yet
keywords: [
'namespace',
'open',
'as',
'operation',
'function',
'body',
'adjoint',
'newtype',
'controlled',
'if',
'elif',
'else',
'repeat',
'until',
'fixup',
'for',
'in',
'while',
'return',
'fail',
'within',
'apply',
'Adjoint',
'Controlled',
'Adj',
'Ctl',
'is',
'self',
'auto',
'distribute',
'invert',
'intrinsic',
'let',
'set',
'w/',
'new',
'not',
'and',
'or',
'use',
'borrow',
'using',
'borrowing',
'mutable'
],
typeKeywords: [
'Unit',
'Int',
'BigInt',
'Double',
'Bool',
'String',
'Qubit',
'Result',
'Pauli',
'Range'
],
invalidKeywords: [
'abstract',
'base',
'bool',
'break',
'byte',
'case',
'catch',
'char',
'checked',
'class',
'const',
'continue',
'decimal',
'default',
'delegate',
'do',
'double',
'enum',
'event',
'explicit',
'extern',
'finally',
'fixed',
'float',
'foreach',
'goto',
'implicit',
'int',
'interface',
'lock',
'long',
'null',
'object',
'operator',
'out',
'override',
'params',
'private',
'protected',
'public',
'readonly',
'ref',
'sbyte',
'sealed',
'short',
'sizeof',
'stackalloc',
'static',
'string',
'struct',
'switch',
'this',
'throw',
'try',
'typeof',
'unit',
'ulong',
'unchecked',
'unsafe',
'ushort',
'virtual',
'void',
'volatile'
],
constants: ['true', 'false', 'PauliI', 'PauliX', 'PauliY', 'PauliZ', 'One', 'Zero'],
builtin: [
'X',
'Y',
'Z',
'H',
'HY',
'S',
'T',
'SWAP',
'CNOT',
'CCNOT',
'MultiX',
'R',
'RFrac',
'Rx',
'Ry',
'Rz',
'R1',
'R1Frac',
'Exp',
'ExpFrac',
'Measure',
'M',
'MultiM',
'Message',
'Length',
'Assert',
'AssertProb',
'AssertEqual'
],
operators: [
'and=',
'<-',
'->',
'*',
'*=',
'@',
'!',
'^',
'^=',
':',
'::',
'..',
'==',
'...',
'=',
'=>',
'>',
'>=',
'<',
'<=',
'-',
'-=',
'!=',
'or=',
'%',
'%=',
'|',
'+',
'+=',
'?',
'/',
'/=',
'&&&',
'&&&=',
'^^^',
'^^^=',
'>>>',
'>>>=',
'<<<',
'<<<=',
'|||',
'|||=',
'~~~',
'_',
'w/',
'w/='
],
namespaceFollows: ['namespace', 'open'],
symbols: /[=><!~?:&|+\-*\/\^%@._]+/,
escapes: /\\[\s\S]/,
// The main tokenizer for our languages
tokenizer: {
root: [
// identifiers and keywords
[
/[a-zA-Z_$][\w$]*/,
{
cases: {
'@namespaceFollows': {
token: 'keyword.$0',
next: '@namespace'
},
'@typeKeywords': 'type',
'@keywords': 'keyword',
'@constants': 'constant',
'@builtin': 'keyword',
'@invalidKeywords': 'invalid',
'@default': 'identifier'
}
}
],
// whitespace
{ include: '@whitespace' },
// delimiters and operators
[/[{}()\[\]]/, '@brackets'],
[/@symbols/, { cases: { '@operators': 'operator', '@default': '' } }],
// numbers
[/\d*\.\d+([eE][\-+]?\d+)?/, 'number.float'],
[/\d+/, 'number'],
// delimiter: after number because of .\d floats
[/[;,.]/, 'delimiter'],
// strings
//[/"([^"\\]|\\.)*$/, 'string.invalid' ], // non-teminated string
[/"/, { token: 'string.quote', bracket: '@open', next: '@string' }]
],
string: [
[/[^\\"]+/, 'string'],
[/@escapes/, 'string.escape'],
[/"/, { token: 'string.quote', bracket: '@close', next: '@pop' }]
],
namespace: [
{ include: '@whitespace' },
[/[A-Za-z]\w*/, 'namespace'],
[/[\.=]/, 'delimiter'],
['', '', '@pop']
],
whitespace: [
[/[ \t\r\n]+/, 'white'],
[/(\/\/).*/, 'comment']
]
}
};
});

@ -0,0 +1,250 @@
/*---------------------------------------------------------------------------------------------
* 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/r/r',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
comments: {
lineComment: '#'
},
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' }
]
};
exports.language = {
defaultToken: '',
tokenPostfix: '.r',
roxygen: [
'@alias',
'@aliases',
'@assignee',
'@author',
'@backref',
'@callGraph',
'@callGraphDepth',
'@callGraphPrimitives',
'@concept',
'@describeIn',
'@description',
'@details',
'@docType',
'@encoding',
'@evalNamespace',
'@evalRd',
'@example',
'@examples',
'@export',
'@exportClass',
'@exportMethod',
'@exportPattern',
'@family',
'@field',
'@formals',
'@format',
'@import',
'@importClassesFrom',
'@importFrom',
'@importMethodsFrom',
'@include',
'@inherit',
'@inheritDotParams',
'@inheritParams',
'@inheritSection',
'@keywords',
'@md',
'@method',
'@name',
'@noMd',
'@noRd',
'@note',
'@param',
'@rawNamespace',
'@rawRd',
'@rdname',
'@references',
'@return',
'@S3method',
'@section',
'@seealso',
'@setClass',
'@slot',
'@source',
'@template',
'@templateVar',
'@title',
'@TODO',
'@usage',
'@useDynLib'
],
constants: [
'NULL',
'FALSE',
'TRUE',
'NA',
'Inf',
'NaN',
'NA_integer_',
'NA_real_',
'NA_complex_',
'NA_character_',
'T',
'F',
'LETTERS',
'letters',
'month.abb',
'month.name',
'pi',
'R.version.string'
],
keywords: [
'break',
'next',
'return',
'if',
'else',
'for',
'in',
'repeat',
'while',
'array',
'category',
'character',
'complex',
'double',
'function',
'integer',
'list',
'logical',
'matrix',
'numeric',
'vector',
'data.frame',
'factor',
'library',
'require',
'attach',
'detach',
'source'
],
special: ['\\n', '\\r', '\\t', '\\b', '\\a', '\\f', '\\v', "\\'", '\\"', '\\\\'],
brackets: [
{ open: '{', close: '}', token: 'delimiter.curly' },
{ open: '[', close: ']', token: 'delimiter.bracket' },
{ open: '(', close: ')', token: 'delimiter.parenthesis' }
],
tokenizer: {
root: [
{ include: '@numbers' },
{ include: '@strings' },
[/[{}\[\]()]/, '@brackets'],
{ include: '@operators' },
[/#'$/, 'comment.doc'],
[/#'/, 'comment.doc', '@roxygen'],
[/(^#.*$)/, 'comment'],
[/\s+/, 'white'],
[/[,:;]/, 'delimiter'],
[/@[a-zA-Z]\w*/, 'tag'],
[
/[a-zA-Z]\w*/,
{
cases: {
'@keywords': 'keyword',
'@constants': 'constant',
'@default': 'identifier'
}
}
]
],
// Recognize Roxygen comments
roxygen: [
[
/@\w+/,
{
cases: {
'@roxygen': 'tag',
'@eos': { token: 'comment.doc', next: '@pop' },
'@default': 'comment.doc'
}
}
],
[
/\s+/,
{
cases: {
'@eos': { token: 'comment.doc', next: '@pop' },
'@default': 'comment.doc'
}
}
],
[/.*/, { token: 'comment.doc', next: '@pop' }]
],
// Recognize positives, negatives, decimals, imaginaries, and scientific notation
numbers: [
[/0[xX][0-9a-fA-F]+/, 'number.hex'],
[/-?(\d*\.)?\d+([eE][+\-]?\d+)?/, 'number']
],
// Recognize operators
operators: [
[/<{1,2}-/, 'operator'],
[/->{1,2}/, 'operator'],
[/%[^%\s]+%/, 'operator'],
[/\*\*/, 'operator'],
[/%%/, 'operator'],
[/&&/, 'operator'],
[/\|\|/, 'operator'],
[/<</, 'operator'],
[/>>/, 'operator'],
[/[-+=&|!<>^~*/:$]/, 'operator']
],
// Recognize strings, including those broken across lines
strings: [
[/'/, 'string.escape', '@stringBody'],
[/"/, 'string.escape', '@dblStringBody']
],
stringBody: [
[
/\\./,
{
cases: {
'@special': 'string',
'@default': 'error-token'
}
}
],
[/'/, 'string.escape', '@popall'],
[/./, 'string']
],
dblStringBody: [
[
/\\./,
{
cases: {
'@special': 'string',
'@default': 'error-token'
}
}
],
[/"/, 'string.escape', '@popall'],
[/./, 'string']
]
}
};
});

@ -0,0 +1,527 @@
/*---------------------------------------------------------------------------------------------
* 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/razor/razor',["require", "exports", "../fillers/monaco-editor-core"], function (require, exports, monaco_editor_core_1) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
var EMPTY_ELEMENTS = [
'area',
'base',
'br',
'col',
'embed',
'hr',
'img',
'input',
'keygen',
'link',
'menuitem',
'meta',
'param',
'source',
'track',
'wbr'
];
exports.conf = {
wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,
comments: {
blockComment: ['<!--', '-->']
},
brackets: [
['<!--', '-->'],
['<', '>'],
['{', '}'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
surroundingPairs: [
{ open: '"', close: '"' },
{ open: "'", close: "'" },
{ open: '<', close: '>' }
],
onEnterRules: [
{
beforeText: new RegExp("<(?!(?:" + EMPTY_ELEMENTS.join('|') + "))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$", 'i'),
afterText: /^<\/(\w[\w\d]*)\s*>$/i,
action: {
indentAction: monaco_editor_core_1.languages.IndentAction.IndentOutdent
}
},
{
beforeText: new RegExp("<(?!(?:" + EMPTY_ELEMENTS.join('|') + "))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$", 'i'),
action: { indentAction: monaco_editor_core_1.languages.IndentAction.Indent }
}
]
};
exports.language = {
defaultToken: '',
tokenPostfix: '',
// ignoreCase: true,
// The main tokenizer for our languages
tokenizer: {
root: [
[/@@@@/],
[/@[^@]/, { token: '@rematch', switchTo: '@razorInSimpleState.root' }],
[/<!DOCTYPE/, 'metatag.html', '@doctype'],
[/<!--/, 'comment.html', '@comment'],
[/(<)([\w\-]+)(\/>)/, ['delimiter.html', 'tag.html', 'delimiter.html']],
[/(<)(script)/, ['delimiter.html', { token: 'tag.html', next: '@script' }]],
[/(<)(style)/, ['delimiter.html', { token: 'tag.html', next: '@style' }]],
[/(<)([:\w\-]+)/, ['delimiter.html', { token: 'tag.html', next: '@otherTag' }]],
[/(<\/)([\w\-]+)/, ['delimiter.html', { token: 'tag.html', next: '@otherTag' }]],
[/</, 'delimiter.html'],
[/[ \t\r\n]+/],
[/[^<@]+/] // text
],
doctype: [
[/@[^@]/, { token: '@rematch', switchTo: '@razorInSimpleState.comment' }],
[/[^>]+/, 'metatag.content.html'],
[/>/, 'metatag.html', '@pop']
],
comment: [
[/@[^@]/, { token: '@rematch', switchTo: '@razorInSimpleState.comment' }],
[/-->/, 'comment.html', '@pop'],
[/[^-]+/, 'comment.content.html'],
[/./, 'comment.content.html']
],
otherTag: [
[/@[^@]/, { token: '@rematch', switchTo: '@razorInSimpleState.otherTag' }],
[/\/?>/, 'delimiter.html', '@pop'],
[/"([^"]*)"/, 'attribute.value'],
[/'([^']*)'/, 'attribute.value'],
[/[\w\-]+/, 'attribute.name'],
[/=/, 'delimiter'],
[/[ \t\r\n]+/] // whitespace
],
// -- BEGIN <script> tags handling
// After <script
script: [
[/@[^@]/, { token: '@rematch', switchTo: '@razorInSimpleState.script' }],
[/type/, 'attribute.name', '@scriptAfterType'],
[/"([^"]*)"/, 'attribute.value'],
[/'([^']*)'/, 'attribute.value'],
[/[\w\-]+/, 'attribute.name'],
[/=/, 'delimiter'],
[
/>/,
{
token: 'delimiter.html',
next: '@scriptEmbedded.text/javascript',
nextEmbedded: 'text/javascript'
}
],
[/[ \t\r\n]+/],
[
/(<\/)(script\s*)(>)/,
['delimiter.html', 'tag.html', { token: 'delimiter.html', next: '@pop' }]
]
],
// After <script ... type
scriptAfterType: [
[
/@[^@]/,
{
token: '@rematch',
switchTo: '@razorInSimpleState.scriptAfterType'
}
],
[/=/, 'delimiter', '@scriptAfterTypeEquals'],
[
/>/,
{
token: 'delimiter.html',
next: '@scriptEmbedded.text/javascript',
nextEmbedded: 'text/javascript'
}
],
[/[ \t\r\n]+/],
[/<\/script\s*>/, { token: '@rematch', next: '@pop' }]
],
// After <script ... type =
scriptAfterTypeEquals: [
[
/@[^@]/,
{
token: '@rematch',
switchTo: '@razorInSimpleState.scriptAfterTypeEquals'
}
],
[
/"([^"]*)"/,
{
token: 'attribute.value',
switchTo: '@scriptWithCustomType.$1'
}
],
[
/'([^']*)'/,
{
token: 'attribute.value',
switchTo: '@scriptWithCustomType.$1'
}
],
[
/>/,
{
token: 'delimiter.html',
next: '@scriptEmbedded.text/javascript',
nextEmbedded: 'text/javascript'
}
],
[/[ \t\r\n]+/],
[/<\/script\s*>/, { token: '@rematch', next: '@pop' }]
],
// After <script ... type = $S2
scriptWithCustomType: [
[
/@[^@]/,
{
token: '@rematch',
switchTo: '@razorInSimpleState.scriptWithCustomType.$S2'
}
],
[
/>/,
{
token: 'delimiter.html',
next: '@scriptEmbedded.$S2',
nextEmbedded: '$S2'
}
],
[/"([^"]*)"/, 'attribute.value'],
[/'([^']*)'/, 'attribute.value'],
[/[\w\-]+/, 'attribute.name'],
[/=/, 'delimiter'],
[/[ \t\r\n]+/],
[/<\/script\s*>/, { token: '@rematch', next: '@pop' }]
],
scriptEmbedded: [
[
/@[^@]/,
{
token: '@rematch',
switchTo: '@razorInEmbeddedState.scriptEmbedded.$S2',
nextEmbedded: '@pop'
}
],
[/<\/script/, { token: '@rematch', next: '@pop', nextEmbedded: '@pop' }]
],
// -- END <script> tags handling
// -- BEGIN <style> tags handling
// After <style
style: [
[/@[^@]/, { token: '@rematch', switchTo: '@razorInSimpleState.style' }],
[/type/, 'attribute.name', '@styleAfterType'],
[/"([^"]*)"/, 'attribute.value'],
[/'([^']*)'/, 'attribute.value'],
[/[\w\-]+/, 'attribute.name'],
[/=/, 'delimiter'],
[
/>/,
{
token: 'delimiter.html',
next: '@styleEmbedded.text/css',
nextEmbedded: 'text/css'
}
],
[/[ \t\r\n]+/],
[
/(<\/)(style\s*)(>)/,
['delimiter.html', 'tag.html', { token: 'delimiter.html', next: '@pop' }]
]
],
// After <style ... type
styleAfterType: [
[
/@[^@]/,
{
token: '@rematch',
switchTo: '@razorInSimpleState.styleAfterType'
}
],
[/=/, 'delimiter', '@styleAfterTypeEquals'],
[
/>/,
{
token: 'delimiter.html',
next: '@styleEmbedded.text/css',
nextEmbedded: 'text/css'
}
],
[/[ \t\r\n]+/],
[/<\/style\s*>/, { token: '@rematch', next: '@pop' }]
],
// After <style ... type =
styleAfterTypeEquals: [
[
/@[^@]/,
{
token: '@rematch',
switchTo: '@razorInSimpleState.styleAfterTypeEquals'
}
],
[
/"([^"]*)"/,
{
token: 'attribute.value',
switchTo: '@styleWithCustomType.$1'
}
],
[
/'([^']*)'/,
{
token: 'attribute.value',
switchTo: '@styleWithCustomType.$1'
}
],
[
/>/,
{
token: 'delimiter.html',
next: '@styleEmbedded.text/css',
nextEmbedded: 'text/css'
}
],
[/[ \t\r\n]+/],
[/<\/style\s*>/, { token: '@rematch', next: '@pop' }]
],
// After <style ... type = $S2
styleWithCustomType: [
[
/@[^@]/,
{
token: '@rematch',
switchTo: '@razorInSimpleState.styleWithCustomType.$S2'
}
],
[
/>/,
{
token: 'delimiter.html',
next: '@styleEmbedded.$S2',
nextEmbedded: '$S2'
}
],
[/"([^"]*)"/, 'attribute.value'],
[/'([^']*)'/, 'attribute.value'],
[/[\w\-]+/, 'attribute.name'],
[/=/, 'delimiter'],
[/[ \t\r\n]+/],
[/<\/style\s*>/, { token: '@rematch', next: '@pop' }]
],
styleEmbedded: [
[
/@[^@]/,
{
token: '@rematch',
switchTo: '@razorInEmbeddedState.styleEmbedded.$S2',
nextEmbedded: '@pop'
}
],
[/<\/style/, { token: '@rematch', next: '@pop', nextEmbedded: '@pop' }]
],
// -- END <style> tags handling
razorInSimpleState: [
[/@\*/, 'comment.cs', '@razorBlockCommentTopLevel'],
[/@[{(]/, 'metatag.cs', '@razorRootTopLevel'],
[/(@)(\s*[\w]+)/, ['metatag.cs', { token: 'identifier.cs', switchTo: '@$S2.$S3' }]],
[/[})]/, { token: 'metatag.cs', switchTo: '@$S2.$S3' }],
[/\*@/, { token: 'comment.cs', switchTo: '@$S2.$S3' }]
],
razorInEmbeddedState: [
[/@\*/, 'comment.cs', '@razorBlockCommentTopLevel'],
[/@[{(]/, 'metatag.cs', '@razorRootTopLevel'],
[
/(@)(\s*[\w]+)/,
[
'metatag.cs',
{
token: 'identifier.cs',
switchTo: '@$S2.$S3',
nextEmbedded: '$S3'
}
]
],
[
/[})]/,
{
token: 'metatag.cs',
switchTo: '@$S2.$S3',
nextEmbedded: '$S3'
}
],
[
/\*@/,
{
token: 'comment.cs',
switchTo: '@$S2.$S3',
nextEmbedded: '$S3'
}
]
],
razorBlockCommentTopLevel: [
[/\*@/, '@rematch', '@pop'],
[/[^*]+/, 'comment.cs'],
[/./, 'comment.cs']
],
razorBlockComment: [
[/\*@/, 'comment.cs', '@pop'],
[/[^*]+/, 'comment.cs'],
[/./, 'comment.cs']
],
razorRootTopLevel: [
[/\{/, 'delimiter.bracket.cs', '@razorRoot'],
[/\(/, 'delimiter.parenthesis.cs', '@razorRoot'],
[/[})]/, '@rematch', '@pop'],
{ include: 'razorCommon' }
],
razorRoot: [
[/\{/, 'delimiter.bracket.cs', '@razorRoot'],
[/\(/, 'delimiter.parenthesis.cs', '@razorRoot'],
[/\}/, 'delimiter.bracket.cs', '@pop'],
[/\)/, 'delimiter.parenthesis.cs', '@pop'],
{ include: 'razorCommon' }
],
razorCommon: [
[
/[a-zA-Z_]\w*/,
{
cases: {
'@razorKeywords': { token: 'keyword.cs' },
'@default': 'identifier.cs'
}
}
],
// brackets
[/[\[\]]/, 'delimiter.array.cs'],
// whitespace
[/[ \t\r\n]+/],
// comments
[/\/\/.*$/, 'comment.cs'],
[/@\*/, 'comment.cs', '@razorBlockComment'],
// strings
[/"([^"]*)"/, 'string.cs'],
[/'([^']*)'/, 'string.cs'],
// simple html
[/(<)([\w\-]+)(\/>)/, ['delimiter.html', 'tag.html', 'delimiter.html']],
[/(<)([\w\-]+)(>)/, ['delimiter.html', 'tag.html', 'delimiter.html']],
[/(<\/)([\w\-]+)(>)/, ['delimiter.html', 'tag.html', 'delimiter.html']],
// delimiters
[/[\+\-\*\%\&\|\^\~\!\=\<\>\/\?\;\:\.\,]/, 'delimiter.cs'],
// numbers
[/\d*\d+[eE]([\-+]?\d+)?/, 'number.float.cs'],
[/\d*\.\d+([eE][\-+]?\d+)?/, 'number.float.cs'],
[/0[xX][0-9a-fA-F']*[0-9a-fA-F]/, 'number.hex.cs'],
[/0[0-7']*[0-7]/, 'number.octal.cs'],
[/0[bB][0-1']*[0-1]/, 'number.binary.cs'],
[/\d[\d']*/, 'number.cs'],
[/\d/, 'number.cs']
]
},
razorKeywords: [
'abstract',
'as',
'async',
'await',
'base',
'bool',
'break',
'by',
'byte',
'case',
'catch',
'char',
'checked',
'class',
'const',
'continue',
'decimal',
'default',
'delegate',
'do',
'double',
'descending',
'explicit',
'event',
'extern',
'else',
'enum',
'false',
'finally',
'fixed',
'float',
'for',
'foreach',
'from',
'goto',
'group',
'if',
'implicit',
'in',
'int',
'interface',
'internal',
'into',
'is',
'lock',
'long',
'nameof',
'new',
'null',
'namespace',
'object',
'operator',
'out',
'override',
'orderby',
'params',
'private',
'protected',
'public',
'readonly',
'ref',
'return',
'switch',
'struct',
'sbyte',
'sealed',
'short',
'sizeof',
'stackalloc',
'static',
'string',
'select',
'this',
'throw',
'true',
'try',
'typeof',
'uint',
'ulong',
'unchecked',
'unsafe',
'ushort',
'using',
'var',
'virtual',
'volatile',
'void',
'when',
'while',
'where',
'yield',
'model',
'inject' // Razor specific
],
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/
};
});

@ -0,0 +1,309 @@
/*---------------------------------------------------------------------------------------------
* 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/redis/redis',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
]
};
exports.language = {
defaultToken: '',
tokenPostfix: '.redis',
ignoreCase: true,
brackets: [
{ open: '[', close: ']', token: 'delimiter.square' },
{ open: '(', close: ')', token: 'delimiter.parenthesis' }
],
keywords: [
'APPEND',
'AUTH',
'BGREWRITEAOF',
'BGSAVE',
'BITCOUNT',
'BITFIELD',
'BITOP',
'BITPOS',
'BLPOP',
'BRPOP',
'BRPOPLPUSH',
'CLIENT',
'KILL',
'LIST',
'GETNAME',
'PAUSE',
'REPLY',
'SETNAME',
'CLUSTER',
'ADDSLOTS',
'COUNT-FAILURE-REPORTS',
'COUNTKEYSINSLOT',
'DELSLOTS',
'FAILOVER',
'FORGET',
'GETKEYSINSLOT',
'INFO',
'KEYSLOT',
'MEET',
'NODES',
'REPLICATE',
'RESET',
'SAVECONFIG',
'SET-CONFIG-EPOCH',
'SETSLOT',
'SLAVES',
'SLOTS',
'COMMAND',
'COUNT',
'GETKEYS',
'CONFIG',
'GET',
'REWRITE',
'SET',
'RESETSTAT',
'DBSIZE',
'DEBUG',
'OBJECT',
'SEGFAULT',
'DECR',
'DECRBY',
'DEL',
'DISCARD',
'DUMP',
'ECHO',
'EVAL',
'EVALSHA',
'EXEC',
'EXISTS',
'EXPIRE',
'EXPIREAT',
'FLUSHALL',
'FLUSHDB',
'GEOADD',
'GEOHASH',
'GEOPOS',
'GEODIST',
'GEORADIUS',
'GEORADIUSBYMEMBER',
'GETBIT',
'GETRANGE',
'GETSET',
'HDEL',
'HEXISTS',
'HGET',
'HGETALL',
'HINCRBY',
'HINCRBYFLOAT',
'HKEYS',
'HLEN',
'HMGET',
'HMSET',
'HSET',
'HSETNX',
'HSTRLEN',
'HVALS',
'INCR',
'INCRBY',
'INCRBYFLOAT',
'KEYS',
'LASTSAVE',
'LINDEX',
'LINSERT',
'LLEN',
'LPOP',
'LPUSH',
'LPUSHX',
'LRANGE',
'LREM',
'LSET',
'LTRIM',
'MGET',
'MIGRATE',
'MONITOR',
'MOVE',
'MSET',
'MSETNX',
'MULTI',
'PERSIST',
'PEXPIRE',
'PEXPIREAT',
'PFADD',
'PFCOUNT',
'PFMERGE',
'PING',
'PSETEX',
'PSUBSCRIBE',
'PUBSUB',
'PTTL',
'PUBLISH',
'PUNSUBSCRIBE',
'QUIT',
'RANDOMKEY',
'READONLY',
'READWRITE',
'RENAME',
'RENAMENX',
'RESTORE',
'ROLE',
'RPOP',
'RPOPLPUSH',
'RPUSH',
'RPUSHX',
'SADD',
'SAVE',
'SCARD',
'SCRIPT',
'FLUSH',
'LOAD',
'SDIFF',
'SDIFFSTORE',
'SELECT',
'SETBIT',
'SETEX',
'SETNX',
'SETRANGE',
'SHUTDOWN',
'SINTER',
'SINTERSTORE',
'SISMEMBER',
'SLAVEOF',
'SLOWLOG',
'SMEMBERS',
'SMOVE',
'SORT',
'SPOP',
'SRANDMEMBER',
'SREM',
'STRLEN',
'SUBSCRIBE',
'SUNION',
'SUNIONSTORE',
'SWAPDB',
'SYNC',
'TIME',
'TOUCH',
'TTL',
'TYPE',
'UNSUBSCRIBE',
'UNLINK',
'UNWATCH',
'WAIT',
'WATCH',
'ZADD',
'ZCARD',
'ZCOUNT',
'ZINCRBY',
'ZINTERSTORE',
'ZLEXCOUNT',
'ZRANGE',
'ZRANGEBYLEX',
'ZREVRANGEBYLEX',
'ZRANGEBYSCORE',
'ZRANK',
'ZREM',
'ZREMRANGEBYLEX',
'ZREMRANGEBYRANK',
'ZREMRANGEBYSCORE',
'ZREVRANGE',
'ZREVRANGEBYSCORE',
'ZREVRANK',
'ZSCORE',
'ZUNIONSTORE',
'SCAN',
'SSCAN',
'HSCAN',
'ZSCAN'
],
operators: [
// NOT SUPPORTED
],
builtinFunctions: [
// NOT SUPPORTED
],
builtinVariables: [
// NOT SUPPORTED
],
pseudoColumns: [
// NOT SUPPORTED
],
tokenizer: {
root: [
{ include: '@whitespace' },
{ include: '@pseudoColumns' },
{ include: '@numbers' },
{ include: '@strings' },
{ include: '@scopes' },
[/[;,.]/, 'delimiter'],
[/[()]/, '@brackets'],
[
/[\w@#$]+/,
{
cases: {
'@keywords': 'keyword',
'@operators': 'operator',
'@builtinVariables': 'predefined',
'@builtinFunctions': 'predefined',
'@default': 'identifier'
}
}
],
[/[<>=!%&+\-*/|~^]/, 'operator']
],
whitespace: [[/\s+/, 'white']],
pseudoColumns: [
[
/[$][A-Za-z_][\w@#$]*/,
{
cases: {
'@pseudoColumns': 'predefined',
'@default': 'identifier'
}
}
]
],
numbers: [
[/0[xX][0-9a-fA-F]*/, 'number'],
[/[$][+-]*\d*(\.\d*)?/, 'number'],
[/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/, 'number']
],
strings: [
[/'/, { token: 'string', next: '@string' }],
[/"/, { token: 'string.double', next: '@stringDouble' }]
],
string: [
[/[^']+/, 'string'],
[/''/, 'string'],
[/'/, { token: 'string', next: '@pop' }]
],
stringDouble: [
[/[^"]+/, 'string.double'],
[/""/, 'string.double'],
[/"/, { token: 'string.double', next: '@pop' }]
],
scopes: [
// NOT SUPPORTED
]
}
};
});

@ -0,0 +1,815 @@
/*---------------------------------------------------------------------------------------------
* 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/redshift/redshift',["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: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
]
};
exports.language = {
defaultToken: '',
tokenPostfix: '.sql',
ignoreCase: true,
brackets: [
{ open: '[', close: ']', token: 'delimiter.square' },
{ open: '(', close: ')', token: 'delimiter.parenthesis' }
],
keywords: [
'AES128',
'AES256',
'ALL',
'ALLOWOVERWRITE',
'ANALYSE',
'ANALYZE',
'AND',
'ANY',
'ARRAY',
'AS',
'ASC',
'AUTHORIZATION',
'BACKUP',
'BETWEEN',
'BINARY',
'BLANKSASNULL',
'BOTH',
'BY',
'BYTEDICT',
'BZIP2',
'CASE',
'CAST',
'CHECK',
'COLLATE',
'COLUMN',
'CONSTRAINT',
'CREATE',
'CREDENTIALS',
'CROSS',
'CURRENT_DATE',
'CURRENT_TIME',
'CURRENT_TIMESTAMP',
'CURRENT_USER',
'CURRENT_USER_ID',
'DEFAULT',
'DEFERRABLE',
'DEFLATE',
'DEFRAG',
'DELTA',
'DELTA32K',
'DESC',
'DISABLE',
'DISTINCT',
'DO',
'ELSE',
'EMPTYASNULL',
'ENABLE',
'ENCODE',
'ENCRYPT',
'ENCRYPTION',
'END',
'EXCEPT',
'EXPLICIT',
'FALSE',
'FOR',
'FOREIGN',
'FREEZE',
'FROM',
'FULL',
'GLOBALDICT256',
'GLOBALDICT64K',
'GRANT',
'GROUP',
'GZIP',
'HAVING',
'IDENTITY',
'IGNORE',
'ILIKE',
'IN',
'INITIALLY',
'INNER',
'INTERSECT',
'INTO',
'IS',
'ISNULL',
'JOIN',
'LEADING',
'LEFT',
'LIKE',
'LIMIT',
'LOCALTIME',
'LOCALTIMESTAMP',
'LUN',
'LUNS',
'LZO',
'LZOP',
'MINUS',
'MOSTLY13',
'MOSTLY32',
'MOSTLY8',
'NATURAL',
'NEW',
'NOT',
'NOTNULL',
'NULL',
'NULLS',
'OFF',
'OFFLINE',
'OFFSET',
'OID',
'OLD',
'ON',
'ONLY',
'OPEN',
'OR',
'ORDER',
'OUTER',
'OVERLAPS',
'PARALLEL',
'PARTITION',
'PERCENT',
'PERMISSIONS',
'PLACING',
'PRIMARY',
'RAW',
'READRATIO',
'RECOVER',
'REFERENCES',
'RESPECT',
'REJECTLOG',
'RESORT',
'RESTORE',
'RIGHT',
'SELECT',
'SESSION_USER',
'SIMILAR',
'SNAPSHOT',
'SOME',
'SYSDATE',
'SYSTEM',
'TABLE',
'TAG',
'TDES',
'TEXT255',
'TEXT32K',
'THEN',
'TIMESTAMP',
'TO',
'TOP',
'TRAILING',
'TRUE',
'TRUNCATECOLUMNS',
'UNION',
'UNIQUE',
'USER',
'USING',
'VERBOSE',
'WALLET',
'WHEN',
'WHERE',
'WITH',
'WITHOUT'
],
operators: [
'AND',
'BETWEEN',
'IN',
'LIKE',
'NOT',
'OR',
'IS',
'NULL',
'INTERSECT',
'UNION',
'INNER',
'JOIN',
'LEFT',
'OUTER',
'RIGHT'
],
builtinFunctions: [
'current_schema',
'current_schemas',
'has_database_privilege',
'has_schema_privilege',
'has_table_privilege',
'age',
'current_time',
'current_timestamp',
'localtime',
'isfinite',
'now',
'ascii',
'get_bit',
'get_byte',
'set_bit',
'set_byte',
'to_ascii',
'approximate percentile_disc',
'avg',
'count',
'listagg',
'max',
'median',
'min',
'percentile_cont',
'stddev_samp',
'stddev_pop',
'sum',
'var_samp',
'var_pop',
'bit_and',
'bit_or',
'bool_and',
'bool_or',
'cume_dist',
'first_value',
'lag',
'last_value',
'lead',
'nth_value',
'ratio_to_report',
'dense_rank',
'ntile',
'percent_rank',
'rank',
'row_number',
'case',
'coalesce',
'decode',
'greatest',
'least',
'nvl',
'nvl2',
'nullif',
'add_months',
'at time zone',
'convert_timezone',
'current_date',
'date_cmp',
'date_cmp_timestamp',
'date_cmp_timestamptz',
'date_part_year',
'dateadd',
'datediff',
'date_part',
'date_trunc',
'extract',
'getdate',
'interval_cmp',
'last_day',
'months_between',
'next_day',
'sysdate',
'timeofday',
'timestamp_cmp',
'timestamp_cmp_date',
'timestamp_cmp_timestamptz',
'timestamptz_cmp',
'timestamptz_cmp_date',
'timestamptz_cmp_timestamp',
'timezone',
'to_timestamp',
'trunc',
'abs',
'acos',
'asin',
'atan',
'atan2',
'cbrt',
'ceil',
'ceiling',
'checksum',
'cos',
'cot',
'degrees',
'dexp',
'dlog1',
'dlog10',
'exp',
'floor',
'ln',
'log',
'mod',
'pi',
'power',
'radians',
'random',
'round',
'sin',
'sign',
'sqrt',
'tan',
'to_hex',
'bpcharcmp',
'btrim',
'bttext_pattern_cmp',
'char_length',
'character_length',
'charindex',
'chr',
'concat',
'crc32',
'func_sha1',
'initcap',
'left and rights',
'len',
'length',
'lower',
'lpad and rpads',
'ltrim',
'md5',
'octet_length',
'position',
'quote_ident',
'quote_literal',
'regexp_count',
'regexp_instr',
'regexp_replace',
'regexp_substr',
'repeat',
'replace',
'replicate',
'reverse',
'rtrim',
'split_part',
'strpos',
'strtol',
'substring',
'textlen',
'translate',
'trim',
'upper',
'cast',
'convert',
'to_char',
'to_date',
'to_number',
'json_array_length',
'json_extract_array_element_text',
'json_extract_path_text',
'current_setting',
'pg_cancel_backend',
'pg_terminate_backend',
'set_config',
'current_database',
'current_user',
'current_user_id',
'pg_backend_pid',
'pg_last_copy_count',
'pg_last_copy_id',
'pg_last_query_id',
'pg_last_unload_count',
'session_user',
'slice_num',
'user',
'version',
'abbrev',
'acosd',
'any',
'area',
'array_agg',
'array_append',
'array_cat',
'array_dims',
'array_fill',
'array_length',
'array_lower',
'array_ndims',
'array_position',
'array_positions',
'array_prepend',
'array_remove',
'array_replace',
'array_to_json',
'array_to_string',
'array_to_tsvector',
'array_upper',
'asind',
'atan2d',
'atand',
'bit',
'bit_length',
'bound_box',
'box',
'brin_summarize_new_values',
'broadcast',
'cardinality',
'center',
'circle',
'clock_timestamp',
'col_description',
'concat_ws',
'convert_from',
'convert_to',
'corr',
'cosd',
'cotd',
'covar_pop',
'covar_samp',
'current_catalog',
'current_query',
'current_role',
'currval',
'cursor_to_xml',
'diameter',
'div',
'encode',
'enum_first',
'enum_last',
'enum_range',
'every',
'family',
'format',
'format_type',
'generate_series',
'generate_subscripts',
'get_current_ts_config',
'gin_clean_pending_list',
'grouping',
'has_any_column_privilege',
'has_column_privilege',
'has_foreign_data_wrapper_privilege',
'has_function_privilege',
'has_language_privilege',
'has_sequence_privilege',
'has_server_privilege',
'has_tablespace_privilege',
'has_type_privilege',
'height',
'host',
'hostmask',
'inet_client_addr',
'inet_client_port',
'inet_merge',
'inet_same_family',
'inet_server_addr',
'inet_server_port',
'isclosed',
'isempty',
'isopen',
'json_agg',
'json_object',
'json_object_agg',
'json_populate_record',
'json_populate_recordset',
'json_to_record',
'json_to_recordset',
'jsonb_agg',
'jsonb_object_agg',
'justify_days',
'justify_hours',
'justify_interval',
'lastval',
'left',
'line',
'localtimestamp',
'lower_inc',
'lower_inf',
'lpad',
'lseg',
'make_date',
'make_interval',
'make_time',
'make_timestamp',
'make_timestamptz',
'masklen',
'mode',
'netmask',
'network',
'nextval',
'npoints',
'num_nonnulls',
'num_nulls',
'numnode',
'obj_description',
'overlay',
'parse_ident',
'path',
'pclose',
'percentile_disc',
'pg_advisory_lock',
'pg_advisory_lock_shared',
'pg_advisory_unlock',
'pg_advisory_unlock_all',
'pg_advisory_unlock_shared',
'pg_advisory_xact_lock',
'pg_advisory_xact_lock_shared',
'pg_backup_start_time',
'pg_blocking_pids',
'pg_client_encoding',
'pg_collation_is_visible',
'pg_column_size',
'pg_conf_load_time',
'pg_control_checkpoint',
'pg_control_init',
'pg_control_recovery',
'pg_control_system',
'pg_conversion_is_visible',
'pg_create_logical_replication_slot',
'pg_create_physical_replication_slot',
'pg_create_restore_point',
'pg_current_xlog_flush_location',
'pg_current_xlog_insert_location',
'pg_current_xlog_location',
'pg_database_size',
'pg_describe_object',
'pg_drop_replication_slot',
'pg_export_snapshot',
'pg_filenode_relation',
'pg_function_is_visible',
'pg_get_constraintdef',
'pg_get_expr',
'pg_get_function_arguments',
'pg_get_function_identity_arguments',
'pg_get_function_result',
'pg_get_functiondef',
'pg_get_indexdef',
'pg_get_keywords',
'pg_get_object_address',
'pg_get_owned_sequence',
'pg_get_ruledef',
'pg_get_serial_sequence',
'pg_get_triggerdef',
'pg_get_userbyid',
'pg_get_viewdef',
'pg_has_role',
'pg_identify_object',
'pg_identify_object_as_address',
'pg_index_column_has_property',
'pg_index_has_property',
'pg_indexam_has_property',
'pg_indexes_size',
'pg_is_in_backup',
'pg_is_in_recovery',
'pg_is_other_temp_schema',
'pg_is_xlog_replay_paused',
'pg_last_committed_xact',
'pg_last_xact_replay_timestamp',
'pg_last_xlog_receive_location',
'pg_last_xlog_replay_location',
'pg_listening_channels',
'pg_logical_emit_message',
'pg_logical_slot_get_binary_changes',
'pg_logical_slot_get_changes',
'pg_logical_slot_peek_binary_changes',
'pg_logical_slot_peek_changes',
'pg_ls_dir',
'pg_my_temp_schema',
'pg_notification_queue_usage',
'pg_opclass_is_visible',
'pg_operator_is_visible',
'pg_opfamily_is_visible',
'pg_options_to_table',
'pg_postmaster_start_time',
'pg_read_binary_file',
'pg_read_file',
'pg_relation_filenode',
'pg_relation_filepath',
'pg_relation_size',
'pg_reload_conf',
'pg_replication_origin_create',
'pg_replication_origin_drop',
'pg_replication_origin_oid',
'pg_replication_origin_progress',
'pg_replication_origin_session_is_setup',
'pg_replication_origin_session_progress',
'pg_replication_origin_session_reset',
'pg_replication_origin_session_setup',
'pg_replication_origin_xact_reset',
'pg_replication_origin_xact_setup',
'pg_rotate_logfile',
'pg_size_bytes',
'pg_size_pretty',
'pg_sleep',
'pg_sleep_for',
'pg_sleep_until',
'pg_start_backup',
'pg_stat_file',
'pg_stop_backup',
'pg_switch_xlog',
'pg_table_is_visible',
'pg_table_size',
'pg_tablespace_databases',
'pg_tablespace_location',
'pg_tablespace_size',
'pg_total_relation_size',
'pg_trigger_depth',
'pg_try_advisory_lock',
'pg_try_advisory_lock_shared',
'pg_try_advisory_xact_lock',
'pg_try_advisory_xact_lock_shared',
'pg_ts_config_is_visible',
'pg_ts_dict_is_visible',
'pg_ts_parser_is_visible',
'pg_ts_template_is_visible',
'pg_type_is_visible',
'pg_typeof',
'pg_xact_commit_timestamp',
'pg_xlog_location_diff',
'pg_xlog_replay_pause',
'pg_xlog_replay_resume',
'pg_xlogfile_name',
'pg_xlogfile_name_offset',
'phraseto_tsquery',
'plainto_tsquery',
'point',
'polygon',
'popen',
'pqserverversion',
'query_to_xml',
'querytree',
'quote_nullable',
'radius',
'range_merge',
'regexp_matches',
'regexp_split_to_array',
'regexp_split_to_table',
'regr_avgx',
'regr_avgy',
'regr_count',
'regr_intercept',
'regr_r2',
'regr_slope',
'regr_sxx',
'regr_sxy',
'regr_syy',
'right',
'row_security_active',
'row_to_json',
'rpad',
'scale',
'set_masklen',
'setseed',
'setval',
'setweight',
'shobj_description',
'sind',
'sprintf',
'statement_timestamp',
'stddev',
'string_agg',
'string_to_array',
'strip',
'substr',
'table_to_xml',
'table_to_xml_and_xmlschema',
'tand',
'text',
'to_json',
'to_regclass',
'to_regnamespace',
'to_regoper',
'to_regoperator',
'to_regproc',
'to_regprocedure',
'to_regrole',
'to_regtype',
'to_tsquery',
'to_tsvector',
'transaction_timestamp',
'ts_debug',
'ts_delete',
'ts_filter',
'ts_headline',
'ts_lexize',
'ts_parse',
'ts_rank',
'ts_rank_cd',
'ts_rewrite',
'ts_stat',
'ts_token_type',
'tsquery_phrase',
'tsvector_to_array',
'tsvector_update_trigger',
'tsvector_update_trigger_column',
'txid_current',
'txid_current_snapshot',
'txid_snapshot_xip',
'txid_snapshot_xmax',
'txid_snapshot_xmin',
'txid_visible_in_snapshot',
'unnest',
'upper_inc',
'upper_inf',
'variance',
'width',
'width_bucket',
'xml_is_well_formed',
'xml_is_well_formed_content',
'xml_is_well_formed_document',
'xmlagg',
'xmlcomment',
'xmlconcat',
'xmlelement',
'xmlexists',
'xmlforest',
'xmlparse',
'xmlpi',
'xmlroot',
'xmlserialize',
'xpath',
'xpath_exists'
],
builtinVariables: [
// NOT SUPPORTED
],
pseudoColumns: [
// NOT SUPPORTED
],
tokenizer: {
root: [
{ include: '@comments' },
{ include: '@whitespace' },
{ include: '@pseudoColumns' },
{ include: '@numbers' },
{ include: '@strings' },
{ include: '@complexIdentifiers' },
{ include: '@scopes' },
[/[;,.]/, 'delimiter'],
[/[()]/, '@brackets'],
[
/[\w@#$]+/,
{
cases: {
'@keywords': 'keyword',
'@operators': 'operator',
'@builtinVariables': 'predefined',
'@builtinFunctions': 'predefined',
'@default': 'identifier'
}
}
],
[/[<>=!%&+\-*/|~^]/, 'operator']
],
whitespace: [[/\s+/, 'white']],
comments: [
[/--+.*/, 'comment'],
[/\/\*/, { token: 'comment.quote', next: '@comment' }]
],
comment: [
[/[^*/]+/, 'comment'],
// Not supporting nested comments, as nested comments seem to not be standard?
// i.e. http://stackoverflow.com/questions/728172/are-there-multiline-comment-delimiters-in-sql-that-are-vendor-agnostic
// [/\/\*/, { token: 'comment.quote', next: '@push' }], // nested comment not allowed :-(
[/\*\//, { token: 'comment.quote', next: '@pop' }],
[/./, 'comment']
],
pseudoColumns: [
[
/[$][A-Za-z_][\w@#$]*/,
{
cases: {
'@pseudoColumns': 'predefined',
'@default': 'identifier'
}
}
]
],
numbers: [
[/0[xX][0-9a-fA-F]*/, 'number'],
[/[$][+-]*\d*(\.\d*)?/, 'number'],
[/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/, 'number']
],
strings: [[/'/, { token: 'string', next: '@string' }]],
string: [
[/[^']+/, 'string'],
[/''/, 'string'],
[/'/, { token: 'string', next: '@pop' }]
],
complexIdentifiers: [[/"/, { token: 'identifier.quote', next: '@quotedIdentifier' }]],
quotedIdentifier: [
[/[^"]+/, 'identifier'],
[/""/, 'identifier'],
[/"/, { token: 'identifier.quote', next: '@pop' }]
],
scopes: [
// NOT SUPPORTED
]
}
};
});

@ -0,0 +1,181 @@
/*---------------------------------------------------------------------------------------------
* 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/restructuredtext/restructuredtext',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '<', close: '>', notIn: ['string'] }
],
surroundingPairs: [
{ open: '(', close: ')' },
{ open: '[', close: ']' },
{ open: '`', close: '`' }
],
folding: {
markers: {
start: new RegExp('^\\s*<!--\\s*#?region\\b.*-->'),
end: new RegExp('^\\s*<!--\\s*#?endregion\\b.*-->')
}
}
};
exports.language = {
defaultToken: '',
tokenPostfix: '.rst',
control: /[\\`*_\[\]{}()#+\-\.!]/,
escapes: /\\(?:@control)/,
empty: [
'area',
'base',
'basefont',
'br',
'col',
'frame',
'hr',
'img',
'input',
'isindex',
'link',
'meta',
'param'
],
alphanumerics: /[A-Za-z0-9]/,
simpleRefNameWithoutBq: /(?:@alphanumerics[-_+:.]*@alphanumerics)+|(?:@alphanumerics+)/,
simpleRefName: /(?:`@phrase`|@simpleRefNameWithoutBq)/,
phrase: /@simpleRefNameWithoutBq(?:\s@simpleRefNameWithoutBq)*/,
citationName: /[A-Za-z][A-Za-z0-9-_.]*/,
blockLiteralStart: /(?:[!"#$%&'()*+,-./:;<=>?@\[\]^_`{|}~]|[\s])/,
precedingChars: /(?:[ -:/'"<([{])/,
followingChars: /(?:[ -.,:;!?/'")\]}>]|$)/,
punctuation: /(=|-|~|`|#|"|\^|\+|\*|:|\.|'|_|\+)/,
tokenizer: {
root: [
//sections
[/^(@punctuation{3,}$){1,1}?/, 'keyword'],
//line-blocks
//No rules on it
//bullet-lists
[/^\s*([\*\-+‣•]|[a-zA-Z0-9]+\.|\([a-zA-Z0-9]+\)|[a-zA-Z0-9]+\))\s/, 'keyword'],
//literal-blocks
[/([ ]::)\s*$/, 'keyword', '@blankLineOfLiteralBlocks'],
[/(::)\s*$/, 'keyword', '@blankLineOfLiteralBlocks'],
{ include: '@tables' },
{ include: '@explicitMarkupBlocks' },
{ include: '@inlineMarkup' }
],
explicitMarkupBlocks: [
//citations
{ include: '@citations' },
//footnotes
{ include: '@footnotes' },
//directives
[
/^(\.\.\s)(@simpleRefName)(::\s)(.*)$/,
[{ token: '', next: 'subsequentLines' }, 'keyword', '', '']
],
//hyperlink-targets
[
/^(\.\.)(\s+)(_)(@simpleRefName)(:)(\s+)(.*)/,
[{ token: '', next: 'hyperlinks' }, '', '', 'string.link', '', '', 'string.link']
],
//anonymous-hyperlinks
[
/^((?:(?:\.\.)(?:\s+))?)(__)(:)(\s+)(.*)/,
[{ token: '', next: 'subsequentLines' }, '', '', '', 'string.link']
],
[/^(__\s+)(.+)/, ['', 'string.link']],
//substitution-definitions
[
/^(\.\.)( \|)([^| ]+[^|]*[^| ]*)(\| )(@simpleRefName)(:: .*)/,
[{ token: '', next: 'subsequentLines' }, '', 'string.link', '', 'keyword', ''],
'@rawBlocks'
],
[/(\|)([^| ]+[^|]*[^| ]*)(\|_{0,2})/, ['', 'string.link', '']],
//comments
[/^(\.\.)([ ].*)$/, [{ token: '', next: '@comments' }, 'comment']]
],
inlineMarkup: [
{ include: '@citationsReference' },
{ include: '@footnotesReference' },
//hyperlink-references
[/(@simpleRefName)(_{1,2})/, ['string.link', '']],
//embedded-uris-and-aliases
[/(`)([^<`]+\s+)(<)(.*)(>)(`)(_)/, ['', 'string.link', '', 'string.link', '', '', '']],
//emphasis
[/\*\*([^\\*]|\*(?!\*))+\*\*/, 'strong'],
[/\*[^*]+\*/, 'emphasis'],
//inline-literals
[/(``)((?:[^`]|\`(?!`))+)(``)/, ['', 'keyword', '']],
[/(__\s+)(.+)/, ['', 'keyword']],
//interpreted-text
[/(:)((?:@simpleRefNameWithoutBq)?)(:`)([^`]+)(`)/, ['', 'keyword', '', '', '']],
[/(`)([^`]+)(`:)((?:@simpleRefNameWithoutBq)?)(:)/, ['', '', '', 'keyword', '']],
[/(`)([^`]+)(`)/, ''],
//inline-internal-targets
[/(_`)(@phrase)(`)/, ['', 'string.link', '']]
],
citations: [
[
/^(\.\.\s+\[)((?:@citationName))(\]\s+)(.*)/,
[{ token: '', next: '@subsequentLines' }, 'string.link', '', '']
]
],
citationsReference: [[/(\[)(@citationName)(\]_)/, ['', 'string.link', '']]],
footnotes: [
[
/^(\.\.\s+\[)((?:[0-9]+))(\]\s+.*)/,
[{ token: '', next: '@subsequentLines' }, 'string.link', '']
],
[
/^(\.\.\s+\[)((?:#@simpleRefName?))(\]\s+)(.*)/,
[{ token: '', next: '@subsequentLines' }, 'string.link', '', '']
],
[
/^(\.\.\s+\[)((?:\*))(\]\s+)(.*)/,
[{ token: '', next: '@subsequentLines' }, 'string.link', '', '']
]
],
footnotesReference: [
[/(\[)([0-9]+)(\])(_)/, ['', 'string.link', '', '']],
[/(\[)(#@simpleRefName?)(\])(_)/, ['', 'string.link', '', '']],
[/(\[)(\*)(\])(_)/, ['', 'string.link', '', '']]
],
blankLineOfLiteralBlocks: [
[/^$/, '', '@subsequentLinesOfLiteralBlocks'],
[/^.*$/, '', '@pop']
],
subsequentLinesOfLiteralBlocks: [
[/(@blockLiteralStart+)(.*)/, ['keyword', '']],
[/^(?!blockLiteralStart)/, '', '@popall']
],
subsequentLines: [
[/^[\s]+.*/, ''],
[/^(?!\s)/, '', '@pop']
],
hyperlinks: [
[/^[\s]+.*/, 'string.link'],
[/^(?!\s)/, '', '@pop']
],
comments: [
[/^[\s]+.*/, 'comment'],
[/^(?!\s)/, '', '@pop']
],
tables: [
[/\+-[+-]+/, 'keyword'],
[/\+=[+=]+/, 'keyword']
]
}
};
});

@ -0,0 +1,544 @@
/*---------------------------------------------------------------------------------------------
* 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/ruby/ruby',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
comments: {
lineComment: '#',
blockComment: ['=begin', '=end']
},
brackets: [
['(', ')'],
['{', '}'],
['[', ']']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
indentationRules: {
increaseIndentPattern: new RegExp('^\\s*((begin|class|(private|protected)\\s+def|def|else|elsif|ensure|for|if|module|rescue|unless|until|when|while|case)|([^#]*\\sdo\\b)|([^#]*=\\s*(case|if|unless)))\\b([^#\\{;]|("|\'|/).*\\4)*(#.*)?$'),
decreaseIndentPattern: new RegExp('^\\s*([}\\]]([,)]?\\s*(#|$)|\\.[a-zA-Z_]\\w*\\b)|(end|rescue|ensure|else|elsif|when)\\b)')
}
};
/*
* Ruby language definition
*
* Quite a complex language due to elaborate escape sequences
* and quoting of literate strings/regular expressions, and
* an 'end' keyword that does not always apply to modifiers like until and while,
* and a 'do' keyword that sometimes starts a block, but sometimes is part of
* another statement (like 'while').
*
* (1) end blocks:
* 'end' may end declarations like if or until, but sometimes 'if' or 'until'
* are modifiers where there is no 'end'. Also, 'do' sometimes starts a block
* that is ended by 'end', but sometimes it is part of a 'while', 'for', or 'until'
* To do proper brace matching we do some elaborate state manipulation.
* some examples:
*
* until bla do
* work until tired
* list.each do
* something if test
* end
* end
*
* or
*
* if test
* something (if test then x end)
* bar if bla
* end
*
* or, how about using class as a property..
*
* class Test
* def endpoint
* self.class.endpoint || routes
* end
* end
*
* (2) quoting:
* there are many kinds of strings and escape sequences. But also, one can
* start many string-like things as '%qx' where q specifies the kind of string
* (like a command, escape expanded, regular expression, symbol etc.), and x is
* some character and only another 'x' ends the sequence. Except for brackets
* where the closing bracket ends the sequence.. and except for a nested bracket
* inside the string like entity. Also, such strings can contain interpolated
* ruby expressions again (and span multiple lines). Moreover, expanded
* regular expression can also contain comments.
*/
exports.language = {
tokenPostfix: '.ruby',
keywords: [
'__LINE__',
'__ENCODING__',
'__FILE__',
'BEGIN',
'END',
'alias',
'and',
'begin',
'break',
'case',
'class',
'def',
'defined?',
'do',
'else',
'elsif',
'end',
'ensure',
'for',
'false',
'if',
'in',
'module',
'next',
'nil',
'not',
'or',
'redo',
'rescue',
'retry',
'return',
'self',
'super',
'then',
'true',
'undef',
'unless',
'until',
'when',
'while',
'yield'
],
keywordops: ['::', '..', '...', '?', ':', '=>'],
builtins: [
'require',
'public',
'private',
'include',
'extend',
'attr_reader',
'protected',
'private_class_method',
'protected_class_method',
'new'
],
// these are closed by 'end' (if, while and until are handled separately)
declarations: [
'module',
'class',
'def',
'case',
'do',
'begin',
'for',
'if',
'while',
'until',
'unless'
],
linedecls: ['def', 'case', 'do', 'begin', 'for', 'if', 'while', 'until', 'unless'],
operators: [
'^',
'&',
'|',
'<=>',
'==',
'===',
'!~',
'=~',
'>',
'>=',
'<',
'<=',
'<<',
'>>',
'+',
'-',
'*',
'/',
'%',
'**',
'~',
'+@',
'-@',
'[]',
'[]=',
'`',
'+=',
'-=',
'*=',
'**=',
'/=',
'^=',
'%=',
'<<=',
'>>=',
'&=',
'&&=',
'||=',
'|='
],
brackets: [
{ open: '(', close: ')', token: 'delimiter.parenthesis' },
{ open: '{', close: '}', token: 'delimiter.curly' },
{ open: '[', close: ']', token: 'delimiter.square' }
],
// we include these common regular expressions
symbols: /[=><!~?:&|+\-*\/\^%\.]+/,
// escape sequences
escape: /(?:[abefnrstv\\"'\n\r]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{4})/,
escapes: /\\(?:C\-(@escape|.)|c(@escape|.)|@escape)/,
decpart: /\d(_?\d)*/,
decimal: /0|@decpart/,
delim: /[^a-zA-Z0-9\s\n\r]/,
heredelim: /(?:\w+|'[^']*'|"[^"]*"|`[^`]*`)/,
regexpctl: /[(){}\[\]\$\^|\-*+?\.]/,
regexpesc: /\\(?:[AzZbBdDfnrstvwWn0\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})?/,
// The main tokenizer for our languages
tokenizer: {
// Main entry.
// root.<decl> where decl is the current opening declaration (like 'class')
root: [
// identifiers and keywords
// most complexity here is due to matching 'end' correctly with declarations.
// We distinguish a declaration that comes first on a line, versus declarations further on a line (which are most likey modifiers)
[
/^(\s*)([a-z_]\w*[!?=]?)/,
[
'white',
{
cases: {
'for|until|while': {
token: 'keyword.$2',
next: '@dodecl.$2'
},
'@declarations': {
token: 'keyword.$2',
next: '@root.$2'
},
end: { token: 'keyword.$S2', next: '@pop' },
'@keywords': 'keyword',
'@builtins': 'predefined',
'@default': 'identifier'
}
}
]
],
[
/[a-z_]\w*[!?=]?/,
{
cases: {
'if|unless|while|until': {
token: 'keyword.$0x',
next: '@modifier.$0x'
},
for: { token: 'keyword.$2', next: '@dodecl.$2' },
'@linedecls': { token: 'keyword.$0', next: '@root.$0' },
end: { token: 'keyword.$S2', next: '@pop' },
'@keywords': 'keyword',
'@builtins': 'predefined',
'@default': 'identifier'
}
}
],
[/[A-Z][\w]*[!?=]?/, 'constructor.identifier'],
[/\$[\w]*/, 'global.constant'],
[/@[\w]*/, 'namespace.instance.identifier'],
[/@@@[\w]*/, 'namespace.class.identifier'],
// here document
[/<<[-~](@heredelim).*/, { token: 'string.heredoc.delimiter', next: '@heredoc.$1' }],
[/[ \t\r\n]+<<(@heredelim).*/, { token: 'string.heredoc.delimiter', next: '@heredoc.$1' }],
[/^<<(@heredelim).*/, { token: 'string.heredoc.delimiter', next: '@heredoc.$1' }],
// whitespace
{ include: '@whitespace' },
// strings
[/"/, { token: 'string.d.delim', next: '@dstring.d."' }],
[/'/, { token: 'string.sq.delim', next: '@sstring.sq' }],
// % literals. For efficiency, rematch in the 'pstring' state
[/%([rsqxwW]|Q?)/, { token: '@rematch', next: 'pstring' }],
// commands and symbols
[/`/, { token: 'string.x.delim', next: '@dstring.x.`' }],
[/:(\w|[$@])\w*[!?=]?/, 'string.s'],
[/:"/, { token: 'string.s.delim', next: '@dstring.s."' }],
[/:'/, { token: 'string.s.delim', next: '@sstring.s' }],
// regular expressions. Lookahead for a (not escaped) closing forwardslash on the same line
[/\/(?=(\\\/|[^\/\n])+\/)/, { token: 'regexp.delim', next: '@regexp' }],
// delimiters and operators
[/[{}()\[\]]/, '@brackets'],
[
/@symbols/,
{
cases: {
'@keywordops': 'keyword',
'@operators': 'operator',
'@default': ''
}
}
],
[/[;,]/, 'delimiter'],
// numbers
[/0[xX][0-9a-fA-F](_?[0-9a-fA-F])*/, 'number.hex'],
[/0[_oO][0-7](_?[0-7])*/, 'number.octal'],
[/0[bB][01](_?[01])*/, 'number.binary'],
[/0[dD]@decpart/, 'number'],
[
/@decimal((\.@decpart)?([eE][\-+]?@decpart)?)/,
{
cases: {
$1: 'number.float',
'@default': 'number'
}
}
]
],
// used to not treat a 'do' as a block opener if it occurs on the same
// line as a 'do' statement: 'while|until|for'
// dodecl.<decl> where decl is the declarations started, like 'while'
dodecl: [
[/^/, { token: '', switchTo: '@root.$S2' }],
[
/[a-z_]\w*[!?=]?/,
{
cases: {
end: { token: 'keyword.$S2', next: '@pop' },
do: { token: 'keyword', switchTo: '@root.$S2' },
'@linedecls': {
token: '@rematch',
switchTo: '@root.$S2'
},
'@keywords': 'keyword',
'@builtins': 'predefined',
'@default': 'identifier'
}
}
],
{ include: '@root' }
],
// used to prevent potential modifiers ('if|until|while|unless') to match
// with 'end' keywords.
// modifier.<decl>x where decl is the declaration starter, like 'if'
modifier: [
[/^/, '', '@pop'],
[
/[a-z_]\w*[!?=]?/,
{
cases: {
end: { token: 'keyword.$S2', next: '@pop' },
'then|else|elsif|do': {
token: 'keyword',
switchTo: '@root.$S2'
},
'@linedecls': {
token: '@rematch',
switchTo: '@root.$S2'
},
'@keywords': 'keyword',
'@builtins': 'predefined',
'@default': 'identifier'
}
}
],
{ include: '@root' }
],
// single quote strings (also used for symbols)
// sstring.<kind> where kind is 'sq' (single quote) or 's' (symbol)
sstring: [
[/[^\\']+/, 'string.$S2'],
[/\\\\|\\'|\\$/, 'string.$S2.escape'],
[/\\./, 'string.$S2.invalid'],
[/'/, { token: 'string.$S2.delim', next: '@pop' }]
],
// double quoted "string".
// dstring.<kind>.<delim> where kind is 'd' (double quoted), 'x' (command), or 's' (symbol)
// and delim is the ending delimiter (" or `)
dstring: [
[/[^\\`"#]+/, 'string.$S2'],
[/#/, 'string.$S2.escape', '@interpolated'],
[/\\$/, 'string.$S2.escape'],
[/@escapes/, 'string.$S2.escape'],
[/\\./, 'string.$S2.escape.invalid'],
[
/[`"]/,
{
cases: {
'$#==$S3': { token: 'string.$S2.delim', next: '@pop' },
'@default': 'string.$S2'
}
}
]
],
// literal documents
// heredoc.<close> where close is the closing delimiter
heredoc: [
[
/^(\s*)(@heredelim)$/,
{
cases: {
'$2==$S2': ['string.heredoc', { token: 'string.heredoc.delimiter', next: '@pop' }],
'@default': ['string.heredoc', 'string.heredoc']
}
}
],
[/.*/, 'string.heredoc']
],
// interpolated sequence
interpolated: [
[/\$\w*/, 'global.constant', '@pop'],
[/@\w*/, 'namespace.class.identifier', '@pop'],
[/@@@\w*/, 'namespace.instance.identifier', '@pop'],
[
/[{]/,
{
token: 'string.escape.curly',
switchTo: '@interpolated_compound'
}
],
['', '', '@pop'] // just a # is interpreted as a #
],
// any code
interpolated_compound: [
[/[}]/, { token: 'string.escape.curly', next: '@pop' }],
{ include: '@root' }
],
// %r quoted regexp
// pregexp.<open>.<close> where open/close are the open/close delimiter
pregexp: [
{ include: '@whitespace' },
// turns out that you can quote using regex control characters, aargh!
// for example; %r|kgjgaj| is ok (even though | is used for alternation)
// so, we need to match those first
[
/[^\(\{\[\\]/,
{
cases: {
'$#==$S3': { token: 'regexp.delim', next: '@pop' },
'$#==$S2': { token: 'regexp.delim', next: '@push' },
'~[)}\\]]': '@brackets.regexp.escape.control',
'~@regexpctl': 'regexp.escape.control',
'@default': 'regexp'
}
}
],
{ include: '@regexcontrol' }
],
// We match regular expression quite precisely
regexp: [
{ include: '@regexcontrol' },
[/[^\\\/]/, 'regexp'],
['/[ixmp]*', { token: 'regexp.delim' }, '@pop']
],
regexcontrol: [
[
/(\{)(\d+(?:,\d*)?)(\})/,
[
'@brackets.regexp.escape.control',
'regexp.escape.control',
'@brackets.regexp.escape.control'
]
],
[
/(\[)(\^?)/,
['@brackets.regexp.escape.control', { token: 'regexp.escape.control', next: '@regexrange' }]
],
[/(\()(\?[:=!])/, ['@brackets.regexp.escape.control', 'regexp.escape.control']],
[/\(\?#/, { token: 'regexp.escape.control', next: '@regexpcomment' }],
[/[()]/, '@brackets.regexp.escape.control'],
[/@regexpctl/, 'regexp.escape.control'],
[/\\$/, 'regexp.escape'],
[/@regexpesc/, 'regexp.escape'],
[/\\\./, 'regexp.invalid'],
[/#/, 'regexp.escape', '@interpolated']
],
regexrange: [
[/-/, 'regexp.escape.control'],
[/\^/, 'regexp.invalid'],
[/\\$/, 'regexp.escape'],
[/@regexpesc/, 'regexp.escape'],
[/[^\]]/, 'regexp'],
[/\]/, '@brackets.regexp.escape.control', '@pop']
],
regexpcomment: [
[/[^)]+/, 'comment'],
[/\)/, { token: 'regexp.escape.control', next: '@pop' }]
],
// % quoted strings
// A bit repetitive since we need to often special case the kind of ending delimiter
pstring: [
[/%([qws])\(/, { token: 'string.$1.delim', switchTo: '@qstring.$1.(.)' }],
[/%([qws])\[/, { token: 'string.$1.delim', switchTo: '@qstring.$1.[.]' }],
[/%([qws])\{/, { token: 'string.$1.delim', switchTo: '@qstring.$1.{.}' }],
[/%([qws])</, { token: 'string.$1.delim', switchTo: '@qstring.$1.<.>' }],
[/%([qws])(@delim)/, { token: 'string.$1.delim', switchTo: '@qstring.$1.$2.$2' }],
[/%r\(/, { token: 'regexp.delim', switchTo: '@pregexp.(.)' }],
[/%r\[/, { token: 'regexp.delim', switchTo: '@pregexp.[.]' }],
[/%r\{/, { token: 'regexp.delim', switchTo: '@pregexp.{.}' }],
[/%r</, { token: 'regexp.delim', switchTo: '@pregexp.<.>' }],
[/%r(@delim)/, { token: 'regexp.delim', switchTo: '@pregexp.$1.$1' }],
[/%(x|W|Q?)\(/, { token: 'string.$1.delim', switchTo: '@qqstring.$1.(.)' }],
[/%(x|W|Q?)\[/, { token: 'string.$1.delim', switchTo: '@qqstring.$1.[.]' }],
[/%(x|W|Q?)\{/, { token: 'string.$1.delim', switchTo: '@qqstring.$1.{.}' }],
[/%(x|W|Q?)</, { token: 'string.$1.delim', switchTo: '@qqstring.$1.<.>' }],
[/%(x|W|Q?)(@delim)/, { token: 'string.$1.delim', switchTo: '@qqstring.$1.$2.$2' }],
[/%([rqwsxW]|Q?)./, { token: 'invalid', next: '@pop' }],
[/./, { token: 'invalid', next: '@pop' }] // recover
],
// non-expanded quoted string.
// qstring.<kind>.<open>.<close>
// kind = q|w|s (single quote, array, symbol)
// open = open delimiter
// close = close delimiter
qstring: [
[/\\$/, 'string.$S2.escape'],
[/\\./, 'string.$S2.escape'],
[
/./,
{
cases: {
'$#==$S4': { token: 'string.$S2.delim', next: '@pop' },
'$#==$S3': { token: 'string.$S2.delim', next: '@push' },
'@default': 'string.$S2'
}
}
]
],
// expanded quoted string.
// qqstring.<kind>.<open>.<close>
// kind = Q|W|x (double quote, array, command)
// open = open delimiter
// close = close delimiter
qqstring: [[/#/, 'string.$S2.escape', '@interpolated'], { include: '@qstring' }],
// whitespace & comments
whitespace: [
[/[ \t\r\n]+/, ''],
[/^\s*=begin\b/, 'comment', '@comment'],
[/#.*$/, 'comment']
],
comment: [
[/[^=]+/, 'comment'],
[/^\s*=begin\b/, 'comment.invalid'],
[/^\s*=end\b.*/, 'comment', '@pop'],
[/[=]/, 'comment']
]
}
};
});

@ -0,0 +1,350 @@
/*---------------------------------------------------------------------------------------------
* 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/rust/rust',["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: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '[', close: ']' },
{ open: '{', close: '}' },
{ open: '(', close: ')' },
{ open: '"', close: '"', notIn: ['string'] }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
folding: {
markers: {
start: new RegExp('^\\s*#pragma\\s+region\\b'),
end: new RegExp('^\\s*#pragma\\s+endregion\\b')
}
}
};
exports.language = {
tokenPostfix: '.rust',
defaultToken: 'invalid',
keywords: [
'as',
'async',
'await',
'box',
'break',
'const',
'continue',
'crate',
'dyn',
'else',
'enum',
'extern',
'false',
'fn',
'for',
'if',
'impl',
'in',
'let',
'loop',
'match',
'mod',
'move',
'mut',
'pub',
'ref',
'return',
'self',
'static',
'struct',
'super',
'trait',
'true',
'try',
'type',
'unsafe',
'use',
'where',
'while',
'catch',
'default',
'union',
'static',
'abstract',
'alignof',
'become',
'do',
'final',
'macro',
'offsetof',
'override',
'priv',
'proc',
'pure',
'sizeof',
'typeof',
'unsized',
'virtual',
'yield'
],
typeKeywords: [
'Self',
'm32',
'm64',
'm128',
'f80',
'f16',
'f128',
'int',
'uint',
'float',
'char',
'bool',
'u8',
'u16',
'u32',
'u64',
'f32',
'f64',
'i8',
'i16',
'i32',
'i64',
'str',
'Option',
'Either',
'c_float',
'c_double',
'c_void',
'FILE',
'fpos_t',
'DIR',
'dirent',
'c_char',
'c_schar',
'c_uchar',
'c_short',
'c_ushort',
'c_int',
'c_uint',
'c_long',
'c_ulong',
'size_t',
'ptrdiff_t',
'clock_t',
'time_t',
'c_longlong',
'c_ulonglong',
'intptr_t',
'uintptr_t',
'off_t',
'dev_t',
'ino_t',
'pid_t',
'mode_t',
'ssize_t'
],
constants: ['true', 'false', 'Some', 'None', 'Left', 'Right', 'Ok', 'Err'],
supportConstants: [
'EXIT_FAILURE',
'EXIT_SUCCESS',
'RAND_MAX',
'EOF',
'SEEK_SET',
'SEEK_CUR',
'SEEK_END',
'_IOFBF',
'_IONBF',
'_IOLBF',
'BUFSIZ',
'FOPEN_MAX',
'FILENAME_MAX',
'L_tmpnam',
'TMP_MAX',
'O_RDONLY',
'O_WRONLY',
'O_RDWR',
'O_APPEND',
'O_CREAT',
'O_EXCL',
'O_TRUNC',
'S_IFIFO',
'S_IFCHR',
'S_IFBLK',
'S_IFDIR',
'S_IFREG',
'S_IFMT',
'S_IEXEC',
'S_IWRITE',
'S_IREAD',
'S_IRWXU',
'S_IXUSR',
'S_IWUSR',
'S_IRUSR',
'F_OK',
'R_OK',
'W_OK',
'X_OK',
'STDIN_FILENO',
'STDOUT_FILENO',
'STDERR_FILENO'
],
supportMacros: [
'format!',
'print!',
'println!',
'panic!',
'format_args!',
'unreachable!',
'write!',
'writeln!'
],
operators: [
'!',
'!=',
'%',
'%=',
'&',
'&=',
'&&',
'*',
'*=',
'+',
'+=',
'-',
'-=',
'->',
'.',
'..',
'...',
'/',
'/=',
':',
';',
'<<',
'<<=',
'<',
'<=',
'=',
'==',
'=>',
'>',
'>=',
'>>',
'>>=',
'@',
'^',
'^=',
'|',
'|=',
'||',
'_',
'?',
'#'
],
escapes: /\\([nrt0\"''\\]|x\h{2}|u\{\h{1,6}\})/,
delimiters: /[,]/,
symbols: /[\#\!\%\&\*\+\-\.\/\:\;\<\=\>\@\^\|_\?]+/,
intSuffixes: /[iu](8|16|32|64|128|size)/,
floatSuffixes: /f(32|64)/,
tokenizer: {
root: [
// Raw string literals
[/r(#*)"/, { token: 'string.quote', bracket: '@open', next: '@stringraw.$1' }],
[
/[a-zA-Z][a-zA-Z0-9_]*!?|_[a-zA-Z0-9_]+/,
{
cases: {
'@typeKeywords': 'keyword.type',
'@keywords': 'keyword',
'@supportConstants': 'keyword',
'@supportMacros': 'keyword',
'@constants': 'keyword',
'@default': 'identifier'
}
}
],
// Designator
[/\$/, 'identifier'],
// Lifetime annotations
[/'[a-zA-Z_][a-zA-Z0-9_]*(?=[^\'])/, 'identifier'],
// Byte literal
[/'(\S|@escapes)'/, 'string.byteliteral'],
// Strings
[/"/, { token: 'string.quote', bracket: '@open', next: '@string' }],
{ include: '@numbers' },
// Whitespace + comments
{ include: '@whitespace' },
[
/@delimiters/,
{
cases: {
'@keywords': 'keyword',
'@default': 'delimiter'
}
}
],
[/[{}()\[\]<>]/, '@brackets'],
[/@symbols/, { cases: { '@operators': 'operator', '@default': '' } }]
],
whitespace: [
[/[ \t\r\n]+/, 'white'],
[/\/\*/, 'comment', '@comment'],
[/\/\/.*$/, 'comment']
],
comment: [
[/[^\/*]+/, 'comment'],
[/\/\*/, 'comment', '@push'],
['\\*/', 'comment', '@pop'],
[/[\/*]/, 'comment']
],
string: [
[/[^\\"]+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/"/, { token: 'string.quote', bracket: '@close', next: '@pop' }]
],
stringraw: [
[/[^"#]+/, { token: 'string' }],
[
/"(#*)/,
{
cases: {
'$1==$S2': { token: 'string.quote', bracket: '@close', next: '@pop' },
'@default': { token: 'string' }
}
}
],
[/["#]/, { token: 'string' }]
],
numbers: [
//Octal
[/(0o[0-7_]+)(@intSuffixes)?/, { token: 'number' }],
//Binary
[/(0b[0-1_]+)(@intSuffixes)?/, { token: 'number' }],
//Exponent
[/[\d][\d_]*(\.[\d][\d_]*)?[eE][+-][\d_]+(@floatSuffixes)?/, { token: 'number' }],
//Float
[/\b(\d\.?[\d_]*)(@floatSuffixes)?\b/, { token: 'number' }],
//Hexadecimal
[/(0x[\da-fA-F]+)_?(@intSuffixes)?/, { token: 'number' }],
//Integer
[/[\d][\d_]*(@intSuffixes?)?/, { token: 'number' }]
]
}
};
});

@ -0,0 +1,121 @@
/*---------------------------------------------------------------------------------------------
* 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/sb/sb',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
comments: {
lineComment: "'"
},
brackets: [
['(', ')'],
['[', ']'],
['If', 'EndIf'],
['While', 'EndWhile'],
['For', 'EndFor'],
['Sub', 'EndSub']
],
autoClosingPairs: [
{ open: '"', close: '"', notIn: ['string', 'comment'] },
{ open: '(', close: ')', notIn: ['string', 'comment'] },
{ open: '[', close: ']', notIn: ['string', 'comment'] }
]
};
exports.language = {
defaultToken: '',
tokenPostfix: '.sb',
ignoreCase: true,
brackets: [
{ token: 'delimiter.array', open: '[', close: ']' },
{ token: 'delimiter.parenthesis', open: '(', close: ')' },
// Special bracket statement pairs
{ token: 'keyword.tag-if', open: 'If', close: 'EndIf' },
{ token: 'keyword.tag-while', open: 'While', close: 'EndWhile' },
{ token: 'keyword.tag-for', open: 'For', close: 'EndFor' },
{ token: 'keyword.tag-sub', open: 'Sub', close: 'EndSub' }
],
keywords: [
'Else',
'ElseIf',
'EndFor',
'EndIf',
'EndSub',
'EndWhile',
'For',
'Goto',
'If',
'Step',
'Sub',
'Then',
'To',
'While'
],
tagwords: ['If', 'Sub', 'While', 'For'],
operators: ['>', '<', '<>', '<=', '>=', 'And', 'Or', '+', '-', '*', '/', '='],
// we include these common regular expressions
identifier: /[a-zA-Z_][\w]*/,
symbols: /[=><:+\-*\/%\.,]+/,
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
// The main tokenizer for our languages
tokenizer: {
root: [
// whitespace
{ include: '@whitespace' },
// classes
[/(@identifier)(?=[.])/, 'type'],
// identifiers, tagwords, and keywords
[
/@identifier/,
{
cases: {
'@keywords': { token: 'keyword.$0' },
'@operators': 'operator',
'@default': 'variable.name'
}
}
],
// methods, properties, and events
[
/([.])(@identifier)/,
{
cases: {
$2: ['delimiter', 'type.member'],
'@default': ''
}
}
],
// numbers
[/\d*\.\d+/, 'number.float'],
[/\d+/, 'number'],
// delimiters and operators
[/[()\[\]]/, '@brackets'],
[
/@symbols/,
{
cases: {
'@operators': 'operator',
'@default': 'delimiter'
}
}
],
// strings
[/"([^"\\]|\\.)*$/, 'string.invalid'],
[/"/, 'string', '@string']
],
whitespace: [
[/[ \t\r\n]+/, ''],
[/(\').*$/, 'comment']
],
string: [
[/[^\\"]+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/"C?/, 'string', '@pop']
]
}
};
});

@ -0,0 +1,376 @@
/*---------------------------------------------------------------------------------------------
* 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/scala/scala',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
/*
* `...` is allowed as an identifier.
* $ is allowed in identifiers.
* unary_<op> is allowed as an identifier.
* <name>_= is allowed as an identifier.
*/
wordPattern: /(unary_[@~!#%^&*()\-=+\\|:<>\/?]+)|([a-zA-Z_$][\w$]*?_=)|(`[^`]+`)|([a-zA-Z_$][\w$]*)/g,
comments: {
lineComment: '//',
blockComment: ['/*', '*/']
},
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
folding: {
markers: {
start: new RegExp('^\\s*//\\s*(?:(?:#?region\\b)|(?:<editor-fold\\b))'),
end: new RegExp('^\\s*//\\s*(?:(?:#?endregion\\b)|(?:</editor-fold>))')
}
}
};
exports.language = {
tokenPostfix: '.scala',
// We can't easily add everything from Dotty, but we can at least add some of its keywords
keywords: [
'asInstanceOf',
'catch',
'class',
'classOf',
'def',
'do',
'else',
'extends',
'finally',
'for',
'foreach',
'forSome',
'if',
'import',
'isInstanceOf',
'macro',
'match',
'new',
'object',
'package',
'return',
'throw',
'trait',
'try',
'type',
'until',
'val',
'var',
'while',
'with',
'yield',
// Dotty-specific:
'given',
'enum',
'then'
],
// Dotty-specific:
softKeywords: ['as', 'export', 'extension', 'end', 'derives', 'on'],
constants: ['true', 'false', 'null', 'this', 'super'],
modifiers: [
'abstract',
'final',
'implicit',
'lazy',
'override',
'private',
'protected',
'sealed'
],
// Dotty-specific:
softModifiers: ['inline', 'opaque', 'open', 'transparent', 'using'],
name: /(?:[a-z_$][\w$]*|`[^`]+`)/,
type: /(?:[A-Z][\w$]*)/,
// we include these common regular expressions
symbols: /[=><!~?:&|+\-*\/^\\%@#]+/,
digits: /\d+(_+\d+)*/,
hexdigits: /[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,
// C# style strings
escapes: /\\(?:[btnfr\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
fstring_conv: /[bBhHsScCdoxXeEfgGaAt]|[Tn](?:[HIklMSLNpzZsQ]|[BbhAaCYyjmde]|[RTrDFC])/,
// The main tokenizer for our languages
tokenizer: {
root: [
// strings
[/\braw"""/, { token: 'string.quote', bracket: '@open', next: '@rawstringt' }],
[/\braw"/, { token: 'string.quote', bracket: '@open', next: '@rawstring' }],
[/\bs"""/, { token: 'string.quote', bracket: '@open', next: '@sstringt' }],
[/\bs"/, { token: 'string.quote', bracket: '@open', next: '@sstring' }],
[/\bf""""/, { token: 'string.quote', bracket: '@open', next: '@fstringt' }],
[/\bf"/, { token: 'string.quote', bracket: '@open', next: '@fstring' }],
[/"""/, { token: 'string.quote', bracket: '@open', next: '@stringt' }],
[/"/, { token: 'string.quote', bracket: '@open', next: '@string' }],
// numbers
[/(@digits)[eE]([\-+]?(@digits))?[fFdD]?/, 'number.float', '@allowMethod'],
[/(@digits)\.(@digits)([eE][\-+]?(@digits))?[fFdD]?/, 'number.float', '@allowMethod'],
[/0[xX](@hexdigits)[Ll]?/, 'number.hex', '@allowMethod'],
[/(@digits)[fFdD]/, 'number.float', '@allowMethod'],
[/(@digits)[lL]?/, 'number', '@allowMethod'],
[/\b_\*/, 'key'],
[/\b(_)\b/, 'keyword', '@allowMethod'],
// identifiers and keywords
[/\bimport\b/, 'keyword', '@import'],
[/\b(case)([ \t]+)(class)\b/, ['keyword.modifier', 'white', 'keyword']],
[/\bcase\b/, 'keyword', '@case'],
[/\bva[lr]\b/, 'keyword', '@vardef'],
[
/\b(def)([ \t]+)((?:unary_)?@symbols|@name(?:_=)|@name)/,
['keyword', 'white', 'identifier']
],
[/@name(?=[ \t]*:(?!:))/, 'variable'],
[/(\.)(@name|@symbols)/, ['operator', { token: '@rematch', next: '@allowMethod' }]],
[/([{(])(\s*)(@name(?=\s*=>))/, ['@brackets', 'white', 'variable']],
[
/@name/,
{
cases: {
'@keywords': 'keyword',
'@softKeywords': 'keyword',
'@modifiers': 'keyword.modifier',
'@softModifiers': 'keyword.modifier',
'@constants': {
token: 'constant',
next: '@allowMethod'
},
'@default': {
token: 'identifier',
next: '@allowMethod'
}
}
}
],
[/@type/, 'type', '@allowMethod'],
// whitespace
{ include: '@whitespace' },
// @ annotations.
[/@[a-zA-Z_$][\w$]*(?:\.[a-zA-Z_$][\w$]*)*/, 'annotation'],
// delimiters and operators
[/[{(]/, '@brackets'],
[/[})]/, '@brackets', '@allowMethod'],
[/\[/, 'operator.square'],
[/](?!\s*(?:va[rl]|def|type)\b)/, 'operator.square', '@allowMethod'],
[/]/, 'operator.square'],
[/([=-]>|<-|>:|<:|:>|<%)(?=[\s\w()[\]{},\."'`])/, 'keyword'],
[/@symbols/, 'operator'],
// delimiter: after number because of .\d floats
[/[;,\.]/, 'delimiter'],
// symbols
[/'[a-zA-Z$][\w$]*(?!')/, 'attribute.name'],
// characters
[/'[^\\']'/, 'string', '@allowMethod'],
[/(')(@escapes)(')/, ['string', 'string.escape', { token: 'string', next: '@allowMethod' }]],
[/'/, 'string.invalid']
],
import: [
[/;/, 'delimiter', '@pop'],
[/^|$/, '', '@pop'],
[/[ \t]+/, 'white'],
[/[\n\r]+/, 'white', '@pop'],
[/\/\*/, 'comment', '@comment'],
[/@name|@type/, 'type'],
[/[(){}]/, '@brackets'],
[/[[\]]/, 'operator.square'],
[/[\.,]/, 'delimiter']
],
allowMethod: [
[/^|$/, '', '@pop'],
[/[ \t]+/, 'white'],
[/[\n\r]+/, 'white', '@pop'],
[/\/\*/, 'comment', '@comment'],
[/(?==>[\s\w([{])/, 'keyword', '@pop'],
[
/(@name|@symbols)(?=[ \t]*[[({"'`]|[ \t]+(?:[+-]?\.?\d|\w))/,
{
cases: {
'@keywords': { token: 'keyword', next: '@pop' },
'->|<-|>:|<:|<%': { token: 'keyword', next: '@pop' },
'@default': { token: '@rematch', next: '@pop' }
}
}
],
['', '', '@pop']
],
comment: [
[/[^\/*]+/, 'comment'],
[/\/\*/, 'comment', '@push'],
[/\*\//, 'comment', '@pop'],
[/[\/*]/, 'comment']
],
case: [
[/\b_\*/, 'key'],
[/\b(_|true|false|null|this|super)\b/, 'keyword', '@allowMethod'],
[/\bif\b|=>/, 'keyword', '@pop'],
[/`[^`]+`/, 'identifier', '@allowMethod'],
[/@name/, 'variable', '@allowMethod'],
[/:::?|\||@(?![a-z_$])/, 'keyword'],
{ include: '@root' }
],
vardef: [
[/\b_\*/, 'key'],
[/\b(_|true|false|null|this|super)\b/, 'keyword'],
[/@name/, 'variable'],
[/:::?|\||@(?![a-z_$])/, 'keyword'],
[/=|:(?!:)/, 'operator', '@pop'],
[/$/, 'white', '@pop'],
{ include: '@root' }
],
string: [
[/[^\\"\n\r]+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[
/"/,
{
token: 'string.quote',
bracket: '@close',
switchTo: '@allowMethod'
}
]
],
stringt: [
[/[^\\"\n\r]+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/"(?=""")/, 'string'],
[
/"""/,
{
token: 'string.quote',
bracket: '@close',
switchTo: '@allowMethod'
}
],
[/"/, 'string']
],
fstring: [
[/@escapes/, 'string.escape'],
[
/"/,
{
token: 'string.quote',
bracket: '@close',
switchTo: '@allowMethod'
}
],
[/\$\$/, 'string'],
[/(\$)([a-z_]\w*)/, ['operator', 'identifier']],
[/\$\{/, 'operator', '@interp'],
[/%%/, 'string'],
[
/(%)([\-#+ 0,(])(\d+|\.\d+|\d+\.\d+)(@fstring_conv)/,
['metatag', 'keyword.modifier', 'number', 'metatag']
],
[/(%)(\d+|\.\d+|\d+\.\d+)(@fstring_conv)/, ['metatag', 'number', 'metatag']],
[/(%)([\-#+ 0,(])(@fstring_conv)/, ['metatag', 'keyword.modifier', 'metatag']],
[/(%)(@fstring_conv)/, ['metatag', 'metatag']],
[/./, 'string']
],
fstringt: [
[/@escapes/, 'string.escape'],
[/"(?=""")/, 'string'],
[
/"""/,
{
token: 'string.quote',
bracket: '@close',
switchTo: '@allowMethod'
}
],
[/\$\$/, 'string'],
[/(\$)([a-z_]\w*)/, ['operator', 'identifier']],
[/\$\{/, 'operator', '@interp'],
[/%%/, 'string'],
[
/(%)([\-#+ 0,(])(\d+|\.\d+|\d+\.\d+)(@fstring_conv)/,
['metatag', 'keyword.modifier', 'number', 'metatag']
],
[/(%)(\d+|\.\d+|\d+\.\d+)(@fstring_conv)/, ['metatag', 'number', 'metatag']],
[/(%)([\-#+ 0,(])(@fstring_conv)/, ['metatag', 'keyword.modifier', 'metatag']],
[/(%)(@fstring_conv)/, ['metatag', 'metatag']],
[/./, 'string']
],
sstring: [
[/@escapes/, 'string.escape'],
[
/"/,
{
token: 'string.quote',
bracket: '@close',
switchTo: '@allowMethod'
}
],
[/\$\$/, 'string'],
[/(\$)([a-z_]\w*)/, ['operator', 'identifier']],
[/\$\{/, 'operator', '@interp'],
[/./, 'string']
],
sstringt: [
[/@escapes/, 'string.escape'],
[/"(?=""")/, 'string'],
[
/"""/,
{
token: 'string.quote',
bracket: '@close',
switchTo: '@allowMethod'
}
],
[/\$\$/, 'string'],
[/(\$)([a-z_]\w*)/, ['operator', 'identifier']],
[/\$\{/, 'operator', '@interp'],
[/./, 'string']
],
interp: [[/{/, 'operator', '@push'], [/}/, 'operator', '@pop'], { include: '@root' }],
rawstring: [
[/[^"]/, 'string'],
[
/"/,
{
token: 'string.quote',
bracket: '@close',
switchTo: '@allowMethod'
}
]
],
rawstringt: [
[/[^"]/, 'string'],
[/"(?=""")/, 'string'],
[
/"""/,
{
token: 'string.quote',
bracket: '@close',
switchTo: '@allowMethod'
}
],
[/"/, 'string']
],
whitespace: [
[/[ \t\r\n]+/, 'white'],
[/\/\*/, 'comment', '@comment'],
[/\/\/.*$/, 'comment']
]
}
};
});

@ -0,0 +1,115 @@
/*---------------------------------------------------------------------------------------------
* 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/scheme/scheme',["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: [
['(', ')'],
['{', '}'],
['[', ']']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' }
]
};
exports.language = {
defaultToken: '',
ignoreCase: true,
tokenPostfix: '.scheme',
brackets: [
{ open: '(', close: ')', token: 'delimiter.parenthesis' },
{ open: '{', close: '}', token: 'delimiter.curly' },
{ open: '[', close: ']', token: 'delimiter.square' }
],
keywords: [
'case',
'do',
'let',
'loop',
'if',
'else',
'when',
'cons',
'car',
'cdr',
'cond',
'lambda',
'lambda*',
'syntax-rules',
'format',
'set!',
'quote',
'eval',
'append',
'list',
'list?',
'member?',
'load'
],
constants: ['#t', '#f'],
operators: ['eq?', 'eqv?', 'equal?', 'and', 'or', 'not', 'null?'],
tokenizer: {
root: [
[/#[xXoObB][0-9a-fA-F]+/, 'number.hex'],
[/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?/, 'number.float'],
[
/(?:\b(?:(define|define-syntax|define-macro))\b)(\s+)((?:\w|\-|\!|\?)*)/,
['keyword', 'white', 'variable']
],
{ include: '@whitespace' },
{ include: '@strings' },
[
/[a-zA-Z_#][a-zA-Z0-9_\-\?\!\*]*/,
{
cases: {
'@keywords': 'keyword',
'@constants': 'constant',
'@operators': 'operators',
'@default': 'identifier'
}
}
]
],
comment: [
[/[^\|#]+/, 'comment'],
[/#\|/, 'comment', '@push'],
[/\|#/, 'comment', '@pop'],
[/[\|#]/, 'comment']
],
whitespace: [
[/[ \t\r\n]+/, 'white'],
[/#\|/, 'comment', '@comment'],
[/;.*$/, 'comment']
],
strings: [
[/"$/, 'string', '@popall'],
[/"(?=.)/, 'string', '@multiLineString']
],
multiLineString: [
[/[^\\"]+$/, 'string', '@popall'],
[/[^\\"]+/, 'string'],
[/\\./, 'string.escape'],
[/"/, 'string', '@popall'],
[/\\$/, 'string']
]
}
};
});

@ -0,0 +1,247 @@
/*---------------------------------------------------------------------------------------------
* 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/scss/scss',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
wordPattern: /(#?-?\d*\.\d\w*%?)|([@$#!.:]?[\w-?]+%?)|[@#!.]/g,
comments: {
blockComment: ['/*', '*/'],
lineComment: '//'
},
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}', notIn: ['string', 'comment'] },
{ open: '[', close: ']', notIn: ['string', 'comment'] },
{ open: '(', close: ')', notIn: ['string', 'comment'] },
{ open: '"', close: '"', notIn: ['string', 'comment'] },
{ open: "'", close: "'", notIn: ['string', 'comment'] }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
folding: {
markers: {
start: new RegExp('^\\s*\\/\\*\\s*#region\\b\\s*(.*?)\\s*\\*\\/'),
end: new RegExp('^\\s*\\/\\*\\s*#endregion\\b.*\\*\\/')
}
}
};
exports.language = {
defaultToken: '',
tokenPostfix: '.scss',
ws: '[ \t\n\r\f]*',
identifier: '-?-?([a-zA-Z]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))([\\w\\-]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))*',
brackets: [
{ open: '{', close: '}', token: 'delimiter.curly' },
{ open: '[', close: ']', token: 'delimiter.bracket' },
{ open: '(', close: ')', token: 'delimiter.parenthesis' },
{ open: '<', close: '>', token: 'delimiter.angle' }
],
tokenizer: {
root: [{ include: '@selector' }],
selector: [
{ include: '@comments' },
{ include: '@import' },
{ include: '@variabledeclaration' },
{ include: '@warndebug' },
['[@](include)', { token: 'keyword', next: '@includedeclaration' }],
[
'[@](keyframes|-webkit-keyframes|-moz-keyframes|-o-keyframes)',
{ token: 'keyword', next: '@keyframedeclaration' }
],
['[@](page|content|font-face|-moz-document)', { token: 'keyword' }],
['[@](charset|namespace)', { token: 'keyword', next: '@declarationbody' }],
['[@](function)', { token: 'keyword', next: '@functiondeclaration' }],
['[@](mixin)', { token: 'keyword', next: '@mixindeclaration' }],
['url(\\-prefix)?\\(', { token: 'meta', next: '@urldeclaration' }],
{ include: '@controlstatement' },
{ include: '@selectorname' },
['[&\\*]', 'tag'],
['[>\\+,]', 'delimiter'],
['\\[', { token: 'delimiter.bracket', next: '@selectorattribute' }],
['{', { token: 'delimiter.curly', next: '@selectorbody' }]
],
selectorbody: [
['[*_]?@identifier@ws:(?=(\\s|\\d|[^{;}]*[;}]))', 'attribute.name', '@rulevalue'],
{ include: '@selector' },
['[@](extend)', { token: 'keyword', next: '@extendbody' }],
['[@](return)', { token: 'keyword', next: '@declarationbody' }],
['}', { token: 'delimiter.curly', next: '@pop' }]
],
selectorname: [
['#{', { token: 'meta', next: '@variableinterpolation' }],
['(\\.|#(?=[^{])|%|(@identifier)|:)+', 'tag'] // selector (.foo, div, ...)
],
selectorattribute: [{ include: '@term' }, [']', { token: 'delimiter.bracket', next: '@pop' }]],
term: [
{ include: '@comments' },
['url(\\-prefix)?\\(', { token: 'meta', next: '@urldeclaration' }],
{ include: '@functioninvocation' },
{ include: '@numbers' },
{ include: '@strings' },
{ include: '@variablereference' },
['(and\\b|or\\b|not\\b)', 'operator'],
{ include: '@name' },
['([<>=\\+\\-\\*\\/\\^\\|\\~,])', 'operator'],
[',', 'delimiter'],
['!default', 'literal'],
['\\(', { token: 'delimiter.parenthesis', next: '@parenthizedterm' }]
],
rulevalue: [
{ include: '@term' },
['!important', 'literal'],
[';', 'delimiter', '@pop'],
['{', { token: 'delimiter.curly', switchTo: '@nestedproperty' }],
['(?=})', { token: '', next: '@pop' }] // missing semicolon
],
nestedproperty: [
['[*_]?@identifier@ws:', 'attribute.name', '@rulevalue'],
{ include: '@comments' },
['}', { token: 'delimiter.curly', next: '@pop' }]
],
warndebug: [['[@](warn|debug)', { token: 'keyword', next: '@declarationbody' }]],
import: [['[@](import)', { token: 'keyword', next: '@declarationbody' }]],
variabledeclaration: [
// sass variables
['\\$@identifier@ws:', 'variable.decl', '@declarationbody']
],
urldeclaration: [
{ include: '@strings' },
['[^)\r\n]+', 'string'],
['\\)', { token: 'meta', next: '@pop' }]
],
parenthizedterm: [
{ include: '@term' },
['\\)', { token: 'delimiter.parenthesis', next: '@pop' }]
],
declarationbody: [
{ include: '@term' },
[';', 'delimiter', '@pop'],
['(?=})', { token: '', next: '@pop' }] // missing semicolon
],
extendbody: [
{ include: '@selectorname' },
['!optional', 'literal'],
[';', 'delimiter', '@pop'],
['(?=})', { token: '', next: '@pop' }] // missing semicolon
],
variablereference: [
// sass variable reference
['\\$@identifier', 'variable.ref'],
['\\.\\.\\.', 'operator'],
['#{', { token: 'meta', next: '@variableinterpolation' }] // sass var resolve
],
variableinterpolation: [
{ include: '@variablereference' },
['}', { token: 'meta', next: '@pop' }]
],
comments: [
['\\/\\*', 'comment', '@comment'],
['\\/\\/+.*', 'comment']
],
comment: [
['\\*\\/', 'comment', '@pop'],
['.', 'comment']
],
name: [['@identifier', 'attribute.value']],
numbers: [
['(\\d*\\.)?\\d+([eE][\\-+]?\\d+)?', { token: 'number', next: '@units' }],
['#[0-9a-fA-F_]+(?!\\w)', 'number.hex']
],
units: [
[
'(em|ex|ch|rem|vmin|vmax|vw|vh|vm|cm|mm|in|px|pt|pc|deg|grad|rad|turn|s|ms|Hz|kHz|%)?',
'number',
'@pop'
]
],
functiondeclaration: [
['@identifier@ws\\(', { token: 'meta', next: '@parameterdeclaration' }],
['{', { token: 'delimiter.curly', switchTo: '@functionbody' }]
],
mixindeclaration: [
// mixin with parameters
['@identifier@ws\\(', { token: 'meta', next: '@parameterdeclaration' }],
// mixin without parameters
['@identifier', 'meta'],
['{', { token: 'delimiter.curly', switchTo: '@selectorbody' }]
],
parameterdeclaration: [
['\\$@identifier@ws:', 'variable.decl'],
['\\.\\.\\.', 'operator'],
[',', 'delimiter'],
{ include: '@term' },
['\\)', { token: 'meta', next: '@pop' }]
],
includedeclaration: [
{ include: '@functioninvocation' },
['@identifier', 'meta'],
[';', 'delimiter', '@pop'],
['(?=})', { token: '', next: '@pop' }],
['{', { token: 'delimiter.curly', switchTo: '@selectorbody' }]
],
keyframedeclaration: [
['@identifier', 'meta'],
['{', { token: 'delimiter.curly', switchTo: '@keyframebody' }]
],
keyframebody: [
{ include: '@term' },
['{', { token: 'delimiter.curly', next: '@selectorbody' }],
['}', { token: 'delimiter.curly', next: '@pop' }]
],
controlstatement: [
[
'[@](if|else|for|while|each|media)',
{ token: 'keyword.flow', next: '@controlstatementdeclaration' }
]
],
controlstatementdeclaration: [
['(in|from|through|if|to)\\b', { token: 'keyword.flow' }],
{ include: '@term' },
['{', { token: 'delimiter.curly', switchTo: '@selectorbody' }]
],
functionbody: [
['[@](return)', { token: 'keyword' }],
{ include: '@variabledeclaration' },
{ include: '@term' },
{ include: '@controlstatement' },
[';', 'delimiter'],
['}', { token: 'delimiter.curly', next: '@pop' }]
],
functioninvocation: [['@identifier\\(', { token: 'meta', next: '@functionarguments' }]],
functionarguments: [
['\\$@identifier@ws:', 'attribute.name'],
['[,]', 'delimiter'],
{ include: '@term' },
['\\)', { token: 'meta', next: '@pop' }]
],
strings: [
['~?"', { token: 'string.delimiter', next: '@stringenddoublequote' }],
["~?'", { token: 'string.delimiter', next: '@stringendquote' }]
],
stringenddoublequote: [
['\\\\.', 'string'],
['"', { token: 'string.delimiter', next: '@pop' }],
['.', 'string']
],
stringendquote: [
['\\\\.', 'string'],
["'", { token: 'string.delimiter', next: '@pop' }],
['.', 'string']
]
}
};
});

@ -0,0 +1,225 @@
/*---------------------------------------------------------------------------------------------
* 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/shell/shell',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
comments: {
lineComment: '#'
},
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" },
{ open: '`', close: '`' }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" },
{ open: '`', close: '`' }
]
};
exports.language = {
defaultToken: '',
ignoreCase: true,
tokenPostfix: '.shell',
brackets: [
{ token: 'delimiter.bracket', open: '{', close: '}' },
{ token: 'delimiter.parenthesis', open: '(', close: ')' },
{ token: 'delimiter.square', open: '[', close: ']' }
],
keywords: [
'if',
'then',
'do',
'else',
'elif',
'while',
'until',
'for',
'in',
'esac',
'fi',
'fin',
'fil',
'done',
'exit',
'set',
'unset',
'export',
'function'
],
builtins: [
'ab',
'awk',
'bash',
'beep',
'cat',
'cc',
'cd',
'chown',
'chmod',
'chroot',
'clear',
'cp',
'curl',
'cut',
'diff',
'echo',
'find',
'gawk',
'gcc',
'get',
'git',
'grep',
'hg',
'kill',
'killall',
'ln',
'ls',
'make',
'mkdir',
'openssl',
'mv',
'nc',
'node',
'npm',
'ping',
'ps',
'restart',
'rm',
'rmdir',
'sed',
'service',
'sh',
'shopt',
'shred',
'source',
'sort',
'sleep',
'ssh',
'start',
'stop',
'su',
'sudo',
'svn',
'tee',
'telnet',
'top',
'touch',
'vi',
'vim',
'wall',
'wc',
'wget',
'who',
'write',
'yes',
'zsh'
],
// we include these common regular expressions
symbols: /[=><!~?&|+\-*\/\^;\.,]+/,
// The main tokenizer for our languages
tokenizer: {
root: [
{ include: '@whitespace' },
[
/[a-zA-Z]\w*/,
{
cases: {
'@keywords': 'keyword',
'@builtins': 'type.identifier',
'@default': ''
}
}
],
{ include: '@strings' },
{ include: '@parameters' },
{ include: '@heredoc' },
[/[{}\[\]()]/, '@brackets'],
[/-+\w+/, 'attribute.name'],
[/@symbols/, 'delimiter'],
{ include: '@numbers' },
[/[,;]/, 'delimiter']
],
whitespace: [
[/\s+/, 'white'],
[/(^#!.*$)/, 'metatag'],
[/(^#.*$)/, 'comment']
],
numbers: [
[/\d*\.\d+([eE][\-+]?\d+)?/, 'number.float'],
[/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/, 'number.hex'],
[/\d+/, 'number']
],
// Recognize strings, including those broken across lines
strings: [
[/'/, 'string', '@stringBody'],
[/"/, 'string', '@dblStringBody']
],
stringBody: [
[/'/, 'string', '@popall'],
[/./, 'string']
],
dblStringBody: [
[/"/, 'string', '@popall'],
[/./, 'string']
],
heredoc: [
[
/(<<[-<]?)(\s*)(['"`]?)([\w\-]+)(['"`]?)/,
[
'constants',
'white',
'string.heredoc.delimiter',
'string.heredoc',
'string.heredoc.delimiter'
]
]
],
parameters: [
[/\$\d+/, 'variable.predefined'],
[/\$\w+/, 'variable'],
[/\$[*@#?\-$!0_]/, 'variable'],
[/\$'/, 'variable', '@parameterBodyQuote'],
[/\$"/, 'variable', '@parameterBodyDoubleQuote'],
[/\$\(/, 'variable', '@parameterBodyParen'],
[/\$\{/, 'variable', '@parameterBodyCurlyBrace']
],
parameterBodyQuote: [
[/[^#:%*@\-!_']+/, 'variable'],
[/[#:%*@\-!_]/, 'delimiter'],
[/[']/, 'variable', '@pop']
],
parameterBodyDoubleQuote: [
[/[^#:%*@\-!_"]+/, 'variable'],
[/[#:%*@\-!_]/, 'delimiter'],
[/["]/, 'variable', '@pop']
],
parameterBodyParen: [
[/[^#:%*@\-!_)]+/, 'variable'],
[/[#:%*@\-!_]/, 'delimiter'],
[/[)]/, 'variable', '@pop']
],
parameterBodyCurlyBrace: [
[/[^#:%*@\-!_}]+/, 'variable'],
[/[#:%*@\-!_]/, 'delimiter'],
[/[}]/, 'variable', '@pop']
]
}
};
});

@ -0,0 +1,205 @@
/*---------------------------------------------------------------------------------------------
* 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/sophia/sophia',["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: [
['{', '}'],
['[', ']'],
['(', ')'],
['<', '>']
],
autoClosingPairs: [
{ open: '"', close: '"', notIn: ['string', 'comment'] },
{ open: '{', close: '}', notIn: ['string', 'comment'] },
{ open: '[', close: ']', notIn: ['string', 'comment'] },
{ open: '(', close: ')', notIn: ['string', 'comment'] }
]
};
exports.language = {
defaultToken: '',
tokenPostfix: '.aes',
brackets: [
{ token: 'delimiter.curly', open: '{', close: '}' },
{ token: 'delimiter.parenthesis', open: '(', close: ')' },
{ token: 'delimiter.square', open: '[', close: ']' },
{ token: 'delimiter.angle', open: '<', close: '>' }
],
keywords: [
// Main keywords
'contract',
'library',
'entrypoint',
'function',
'stateful',
'state',
'hash',
'signature',
'tuple',
'list',
'address',
'string',
'bool',
'int',
'record',
'datatype',
'type',
'option',
'oracle',
'oracle_query',
'Call',
'Bits',
'Bytes',
'Oracle',
'String',
'Crypto',
'Address',
'Auth',
'Chain',
'None',
'Some',
'bits',
'bytes',
'event',
'let',
'map',
'private',
'public',
'true',
'false',
'var',
'if',
'else',
'throw'
],
operators: [
'=',
'>',
'<',
'!',
'~',
'?',
'::',
':',
'==',
'<=',
'>=',
'!=',
'&&',
'||',
'++',
'--',
'+',
'-',
'*',
'/',
'&',
'|',
'^',
'%',
'<<',
'>>',
'>>>',
'+=',
'-=',
'*=',
'/=',
'&=',
'|=',
'^=',
'%=',
'<<=',
'>>=',
'>>>='
],
// we include these common regular expressions
symbols: /[=><!~?:&|+\-*\/\^%]+/,
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
integersuffix: /(ll|LL|u|U|l|L)?(ll|LL|u|U|l|L)?/,
floatsuffix: /[fFlL]?/,
// The main tokenizer for our languages
tokenizer: {
root: [
// identifiers and keywords
[
/[a-zA-Z_]\w*/,
{
cases: {
'@keywords': { token: 'keyword.$0' },
'@default': 'identifier'
}
}
],
// whitespace
{ include: '@whitespace' },
// [[ attributes ]].
[/\[\[.*\]\]/, 'annotation'],
// Preprocessor directive
[/^\s*#\w+/, 'keyword'],
//DataTypes
[/int\d*/, 'keyword'],
// delimiters and operators
[/[{}()\[\]]/, '@brackets'],
[/[<>](?!@symbols)/, '@brackets'],
[
/@symbols/,
{
cases: {
'@operators': 'delimiter',
'@default': ''
}
}
],
// numbers
[/\d*\d+[eE]([\-+]?\d+)?(@floatsuffix)/, 'number.float'],
[/\d*\.\d+([eE][\-+]?\d+)?(@floatsuffix)/, 'number.float'],
[/0[xX][0-9a-fA-F']*[0-9a-fA-F](@integersuffix)/, 'number.hex'],
[/0[0-7']*[0-7](@integersuffix)/, 'number.octal'],
[/0[bB][0-1']*[0-1](@integersuffix)/, 'number.binary'],
[/\d[\d']*\d(@integersuffix)/, 'number'],
[/\d(@integersuffix)/, 'number'],
// delimiter: after number because of .\d floats
[/[;,.]/, 'delimiter'],
// strings
[/"([^"\\]|\\.)*$/, 'string.invalid'],
[/"/, 'string', '@string'],
// characters
[/'[^\\']'/, 'string'],
[/(')(@escapes)(')/, ['string', 'string.escape', 'string']],
[/'/, 'string.invalid']
],
whitespace: [
[/[ \t\r\n]+/, ''],
[/\/\*\*(?!\/)/, 'comment.doc', '@doccomment'],
[/\/\*/, 'comment', '@comment'],
[/\/\/.*$/, 'comment']
],
comment: [
[/[^\/*]+/, 'comment'],
[/\*\//, 'comment', '@pop'],
[/[\/*]/, 'comment']
],
//Identical copy of comment above, except for the addition of .doc
doccomment: [
[/[^\/*]+/, 'comment.doc'],
[/\*\//, 'comment.doc', '@pop'],
[/[\/*]/, 'comment.doc']
],
string: [
[/[^\\"]+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/"/, 'string', '@pop']
]
}
};
});

@ -0,0 +1,206 @@
/*---------------------------------------------------------------------------------------------
* 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/sparql/sparql',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
comments: {
lineComment: '#'
},
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: "'", close: "'", notIn: ['string'] },
{ open: '"', close: '"', notIn: ['string'] },
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' }
]
};
exports.language = {
defaultToken: '',
tokenPostfix: '.rq',
brackets: [
{ token: 'delimiter.curly', open: '{', close: '}' },
{ token: 'delimiter.parenthesis', open: '(', close: ')' },
{ token: 'delimiter.square', open: '[', close: ']' },
{ token: 'delimiter.angle', open: '<', close: '>' }
],
keywords: [
'add',
'as',
'asc',
'ask',
'base',
'by',
'clear',
'construct',
'copy',
'create',
'data',
'delete',
'desc',
'describe',
'distinct',
'drop',
'false',
'filter',
'from',
'graph',
'group',
'having',
'in',
'insert',
'limit',
'load',
'minus',
'move',
'named',
'not',
'offset',
'optional',
'order',
'prefix',
'reduced',
'select',
'service',
'silent',
'to',
'true',
'undef',
'union',
'using',
'values',
'where',
'with'
],
builtinFunctions: [
'a',
'abs',
'avg',
'bind',
'bnode',
'bound',
'ceil',
'coalesce',
'concat',
'contains',
'count',
'datatype',
'day',
'encode_for_uri',
'exists',
'floor',
'group_concat',
'hours',
'if',
'iri',
'isblank',
'isiri',
'isliteral',
'isnumeric',
'isuri',
'lang',
'langmatches',
'lcase',
'max',
'md5',
'min',
'minutes',
'month',
'now',
'rand',
'regex',
'replace',
'round',
'sameterm',
'sample',
'seconds',
'sha1',
'sha256',
'sha384',
'sha512',
'str',
'strafter',
'strbefore',
'strdt',
'strends',
'strlang',
'strlen',
'strstarts',
'struuid',
'substr',
'sum',
'timezone',
'tz',
'ucase',
'uri',
'uuid',
'year'
],
// describe tokens
ignoreCase: true,
tokenizer: {
root: [
// resource indicators
[/<[^\s\u00a0>]*>?/, 'tag'],
// strings
{ include: '@strings' },
// line comment
[/#.*/, 'comment'],
// special chars with special meaning
[/[{}()\[\]]/, '@brackets'],
[/[;,.]/, 'delimiter'],
// (prefixed) name
[/[_\w\d]+:(\.(?=[\w_\-\\%])|[:\w_-]|\\[-\\_~.!$&'()*+,;=/?#@%]|%[a-f\d][a-f\d])*/, 'tag'],
[/:(\.(?=[\w_\-\\%])|[:\w_-]|\\[-\\_~.!$&'()*+,;=/?#@%]|%[a-f\d][a-f\d])+/, 'tag'],
// identifiers, builtinFunctions and keywords
[
/[$?]?[_\w\d]+/,
{
cases: {
'@keywords': { token: 'keyword' },
'@builtinFunctions': { token: 'predefined.sql' },
'@default': 'identifier'
}
}
],
// operators
[/\^\^/, 'operator.sql'],
[/\^[*+\-<>=&|^\/!?]*/, 'operator.sql'],
[/[*+\-<>=&|\/!?]/, 'operator.sql'],
// symbol
[/@[a-z\d\-]*/, 'metatag.html'],
// whitespaces
[/\s+/, 'white']
],
strings: [
[/'([^'\\]|\\.)*$/, 'string.invalid'],
[/'$/, 'string.sql', '@pop'],
[/'/, 'string.sql', '@stringBody'],
[/"([^"\\]|\\.)*$/, 'string.invalid'],
[/"$/, 'string.sql', '@pop'],
[/"/, 'string.sql', '@dblStringBody']
],
// single-quoted strings
stringBody: [
[/[^\\']+/, 'string.sql'],
[/\\./, 'string.escape'],
[/'/, 'string.sql', '@pop']
],
// double-quoted strings
dblStringBody: [
[/[^\\"]+/, 'string.sql'],
[/\\./, 'string.escape'],
[/"/, 'string.sql', '@pop']
]
}
};
});

@ -0,0 +1,860 @@
/*---------------------------------------------------------------------------------------------
* 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/sql/sql',["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: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
]
};
exports.language = {
defaultToken: '',
tokenPostfix: '.sql',
ignoreCase: true,
brackets: [
{ open: '[', close: ']', token: 'delimiter.square' },
{ open: '(', close: ')', token: 'delimiter.parenthesis' }
],
keywords: [
// This list is generated using `keywords.js`
'ABORT',
'ABSOLUTE',
'ACTION',
'ADA',
'ADD',
'AFTER',
'ALL',
'ALLOCATE',
'ALTER',
'ALWAYS',
'ANALYZE',
'AND',
'ANY',
'ARE',
'AS',
'ASC',
'ASSERTION',
'AT',
'ATTACH',
'AUTHORIZATION',
'AUTOINCREMENT',
'AVG',
'BACKUP',
'BEFORE',
'BEGIN',
'BETWEEN',
'BIT',
'BIT_LENGTH',
'BOTH',
'BREAK',
'BROWSE',
'BULK',
'BY',
'CASCADE',
'CASCADED',
'CASE',
'CAST',
'CATALOG',
'CHAR',
'CHARACTER',
'CHARACTER_LENGTH',
'CHAR_LENGTH',
'CHECK',
'CHECKPOINT',
'CLOSE',
'CLUSTERED',
'COALESCE',
'COLLATE',
'COLLATION',
'COLUMN',
'COMMIT',
'COMPUTE',
'CONFLICT',
'CONNECT',
'CONNECTION',
'CONSTRAINT',
'CONSTRAINTS',
'CONTAINS',
'CONTAINSTABLE',
'CONTINUE',
'CONVERT',
'CORRESPONDING',
'COUNT',
'CREATE',
'CROSS',
'CURRENT',
'CURRENT_DATE',
'CURRENT_TIME',
'CURRENT_TIMESTAMP',
'CURRENT_USER',
'CURSOR',
'DATABASE',
'DATE',
'DAY',
'DBCC',
'DEALLOCATE',
'DEC',
'DECIMAL',
'DECLARE',
'DEFAULT',
'DEFERRABLE',
'DEFERRED',
'DELETE',
'DENY',
'DESC',
'DESCRIBE',
'DESCRIPTOR',
'DETACH',
'DIAGNOSTICS',
'DISCONNECT',
'DISK',
'DISTINCT',
'DISTRIBUTED',
'DO',
'DOMAIN',
'DOUBLE',
'DROP',
'DUMP',
'EACH',
'ELSE',
'END',
'END-EXEC',
'ERRLVL',
'ESCAPE',
'EXCEPT',
'EXCEPTION',
'EXCLUDE',
'EXCLUSIVE',
'EXEC',
'EXECUTE',
'EXISTS',
'EXIT',
'EXPLAIN',
'EXTERNAL',
'EXTRACT',
'FAIL',
'FALSE',
'FETCH',
'FILE',
'FILLFACTOR',
'FILTER',
'FIRST',
'FLOAT',
'FOLLOWING',
'FOR',
'FOREIGN',
'FORTRAN',
'FOUND',
'FREETEXT',
'FREETEXTTABLE',
'FROM',
'FULL',
'FUNCTION',
'GENERATED',
'GET',
'GLOB',
'GLOBAL',
'GO',
'GOTO',
'GRANT',
'GROUP',
'GROUPS',
'HAVING',
'HOLDLOCK',
'HOUR',
'IDENTITY',
'IDENTITYCOL',
'IDENTITY_INSERT',
'IF',
'IGNORE',
'IMMEDIATE',
'IN',
'INCLUDE',
'INDEX',
'INDEXED',
'INDICATOR',
'INITIALLY',
'INNER',
'INPUT',
'INSENSITIVE',
'INSERT',
'INSTEAD',
'INT',
'INTEGER',
'INTERSECT',
'INTERVAL',
'INTO',
'IS',
'ISNULL',
'ISOLATION',
'JOIN',
'KEY',
'KILL',
'LANGUAGE',
'LAST',
'LEADING',
'LEFT',
'LEVEL',
'LIKE',
'LIMIT',
'LINENO',
'LOAD',
'LOCAL',
'LOWER',
'MATCH',
'MATERIALIZED',
'MAX',
'MERGE',
'MIN',
'MINUTE',
'MODULE',
'MONTH',
'NAMES',
'NATIONAL',
'NATURAL',
'NCHAR',
'NEXT',
'NO',
'NOCHECK',
'NONCLUSTERED',
'NONE',
'NOT',
'NOTHING',
'NOTNULL',
'NULL',
'NULLIF',
'NULLS',
'NUMERIC',
'OCTET_LENGTH',
'OF',
'OFF',
'OFFSET',
'OFFSETS',
'ON',
'ONLY',
'OPEN',
'OPENDATASOURCE',
'OPENQUERY',
'OPENROWSET',
'OPENXML',
'OPTION',
'OR',
'ORDER',
'OTHERS',
'OUTER',
'OUTPUT',
'OVER',
'OVERLAPS',
'PAD',
'PARTIAL',
'PARTITION',
'PASCAL',
'PERCENT',
'PIVOT',
'PLAN',
'POSITION',
'PRAGMA',
'PRECEDING',
'PRECISION',
'PREPARE',
'PRESERVE',
'PRIMARY',
'PRINT',
'PRIOR',
'PRIVILEGES',
'PROC',
'PROCEDURE',
'PUBLIC',
'QUERY',
'RAISE',
'RAISERROR',
'RANGE',
'READ',
'READTEXT',
'REAL',
'RECONFIGURE',
'RECURSIVE',
'REFERENCES',
'REGEXP',
'REINDEX',
'RELATIVE',
'RELEASE',
'RENAME',
'REPLACE',
'REPLICATION',
'RESTORE',
'RESTRICT',
'RETURN',
'RETURNING',
'REVERT',
'REVOKE',
'RIGHT',
'ROLLBACK',
'ROW',
'ROWCOUNT',
'ROWGUIDCOL',
'ROWS',
'RULE',
'SAVE',
'SAVEPOINT',
'SCHEMA',
'SCROLL',
'SECOND',
'SECTION',
'SECURITYAUDIT',
'SELECT',
'SEMANTICKEYPHRASETABLE',
'SEMANTICSIMILARITYDETAILSTABLE',
'SEMANTICSIMILARITYTABLE',
'SESSION',
'SESSION_USER',
'SET',
'SETUSER',
'SHUTDOWN',
'SIZE',
'SMALLINT',
'SOME',
'SPACE',
'SQL',
'SQLCA',
'SQLCODE',
'SQLERROR',
'SQLSTATE',
'SQLWARNING',
'STATISTICS',
'SUBSTRING',
'SUM',
'SYSTEM_USER',
'TABLE',
'TABLESAMPLE',
'TEMP',
'TEMPORARY',
'TEXTSIZE',
'THEN',
'TIES',
'TIME',
'TIMESTAMP',
'TIMEZONE_HOUR',
'TIMEZONE_MINUTE',
'TO',
'TOP',
'TRAILING',
'TRAN',
'TRANSACTION',
'TRANSLATE',
'TRANSLATION',
'TRIGGER',
'TRIM',
'TRUE',
'TRUNCATE',
'TRY_CONVERT',
'TSEQUAL',
'UNBOUNDED',
'UNION',
'UNIQUE',
'UNKNOWN',
'UNPIVOT',
'UPDATE',
'UPDATETEXT',
'UPPER',
'USAGE',
'USE',
'USER',
'USING',
'VACUUM',
'VALUE',
'VALUES',
'VARCHAR',
'VARYING',
'VIEW',
'VIRTUAL',
'WAITFOR',
'WHEN',
'WHENEVER',
'WHERE',
'WHILE',
'WINDOW',
'WITH',
'WITHIN GROUP',
'WITHOUT',
'WORK',
'WRITE',
'WRITETEXT',
'YEAR',
'ZONE'
],
operators: [
// Logical
'ALL',
'AND',
'ANY',
'BETWEEN',
'EXISTS',
'IN',
'LIKE',
'NOT',
'OR',
'SOME',
// Set
'EXCEPT',
'INTERSECT',
'UNION',
// Join
'APPLY',
'CROSS',
'FULL',
'INNER',
'JOIN',
'LEFT',
'OUTER',
'RIGHT',
// Predicates
'CONTAINS',
'FREETEXT',
'IS',
'NULL',
// Pivoting
'PIVOT',
'UNPIVOT',
// Merging
'MATCHED'
],
builtinFunctions: [
// Aggregate
'AVG',
'CHECKSUM_AGG',
'COUNT',
'COUNT_BIG',
'GROUPING',
'GROUPING_ID',
'MAX',
'MIN',
'SUM',
'STDEV',
'STDEVP',
'VAR',
'VARP',
// Analytic
'CUME_DIST',
'FIRST_VALUE',
'LAG',
'LAST_VALUE',
'LEAD',
'PERCENTILE_CONT',
'PERCENTILE_DISC',
'PERCENT_RANK',
// Collation
'COLLATE',
'COLLATIONPROPERTY',
'TERTIARY_WEIGHTS',
// Azure
'FEDERATION_FILTERING_VALUE',
// Conversion
'CAST',
'CONVERT',
'PARSE',
'TRY_CAST',
'TRY_CONVERT',
'TRY_PARSE',
// Cryptographic
'ASYMKEY_ID',
'ASYMKEYPROPERTY',
'CERTPROPERTY',
'CERT_ID',
'CRYPT_GEN_RANDOM',
'DECRYPTBYASYMKEY',
'DECRYPTBYCERT',
'DECRYPTBYKEY',
'DECRYPTBYKEYAUTOASYMKEY',
'DECRYPTBYKEYAUTOCERT',
'DECRYPTBYPASSPHRASE',
'ENCRYPTBYASYMKEY',
'ENCRYPTBYCERT',
'ENCRYPTBYKEY',
'ENCRYPTBYPASSPHRASE',
'HASHBYTES',
'IS_OBJECTSIGNED',
'KEY_GUID',
'KEY_ID',
'KEY_NAME',
'SIGNBYASYMKEY',
'SIGNBYCERT',
'SYMKEYPROPERTY',
'VERIFYSIGNEDBYCERT',
'VERIFYSIGNEDBYASYMKEY',
// Cursor
'CURSOR_STATUS',
// Datatype
'DATALENGTH',
'IDENT_CURRENT',
'IDENT_INCR',
'IDENT_SEED',
'IDENTITY',
'SQL_VARIANT_PROPERTY',
// Datetime
'CURRENT_TIMESTAMP',
'DATEADD',
'DATEDIFF',
'DATEFROMPARTS',
'DATENAME',
'DATEPART',
'DATETIME2FROMPARTS',
'DATETIMEFROMPARTS',
'DATETIMEOFFSETFROMPARTS',
'DAY',
'EOMONTH',
'GETDATE',
'GETUTCDATE',
'ISDATE',
'MONTH',
'SMALLDATETIMEFROMPARTS',
'SWITCHOFFSET',
'SYSDATETIME',
'SYSDATETIMEOFFSET',
'SYSUTCDATETIME',
'TIMEFROMPARTS',
'TODATETIMEOFFSET',
'YEAR',
// Logical
'CHOOSE',
'COALESCE',
'IIF',
'NULLIF',
// Mathematical
'ABS',
'ACOS',
'ASIN',
'ATAN',
'ATN2',
'CEILING',
'COS',
'COT',
'DEGREES',
'EXP',
'FLOOR',
'LOG',
'LOG10',
'PI',
'POWER',
'RADIANS',
'RAND',
'ROUND',
'SIGN',
'SIN',
'SQRT',
'SQUARE',
'TAN',
// Metadata
'APP_NAME',
'APPLOCK_MODE',
'APPLOCK_TEST',
'ASSEMBLYPROPERTY',
'COL_LENGTH',
'COL_NAME',
'COLUMNPROPERTY',
'DATABASE_PRINCIPAL_ID',
'DATABASEPROPERTYEX',
'DB_ID',
'DB_NAME',
'FILE_ID',
'FILE_IDEX',
'FILE_NAME',
'FILEGROUP_ID',
'FILEGROUP_NAME',
'FILEGROUPPROPERTY',
'FILEPROPERTY',
'FULLTEXTCATALOGPROPERTY',
'FULLTEXTSERVICEPROPERTY',
'INDEX_COL',
'INDEXKEY_PROPERTY',
'INDEXPROPERTY',
'OBJECT_DEFINITION',
'OBJECT_ID',
'OBJECT_NAME',
'OBJECT_SCHEMA_NAME',
'OBJECTPROPERTY',
'OBJECTPROPERTYEX',
'ORIGINAL_DB_NAME',
'PARSENAME',
'SCHEMA_ID',
'SCHEMA_NAME',
'SCOPE_IDENTITY',
'SERVERPROPERTY',
'STATS_DATE',
'TYPE_ID',
'TYPE_NAME',
'TYPEPROPERTY',
// Ranking
'DENSE_RANK',
'NTILE',
'RANK',
'ROW_NUMBER',
// Replication
'PUBLISHINGSERVERNAME',
// Rowset
'OPENDATASOURCE',
'OPENQUERY',
'OPENROWSET',
'OPENXML',
// Security
'CERTENCODED',
'CERTPRIVATEKEY',
'CURRENT_USER',
'HAS_DBACCESS',
'HAS_PERMS_BY_NAME',
'IS_MEMBER',
'IS_ROLEMEMBER',
'IS_SRVROLEMEMBER',
'LOGINPROPERTY',
'ORIGINAL_LOGIN',
'PERMISSIONS',
'PWDENCRYPT',
'PWDCOMPARE',
'SESSION_USER',
'SESSIONPROPERTY',
'SUSER_ID',
'SUSER_NAME',
'SUSER_SID',
'SUSER_SNAME',
'SYSTEM_USER',
'USER',
'USER_ID',
'USER_NAME',
// String
'ASCII',
'CHAR',
'CHARINDEX',
'CONCAT',
'DIFFERENCE',
'FORMAT',
'LEFT',
'LEN',
'LOWER',
'LTRIM',
'NCHAR',
'PATINDEX',
'QUOTENAME',
'REPLACE',
'REPLICATE',
'REVERSE',
'RIGHT',
'RTRIM',
'SOUNDEX',
'SPACE',
'STR',
'STUFF',
'SUBSTRING',
'UNICODE',
'UPPER',
// System
'BINARY_CHECKSUM',
'CHECKSUM',
'CONNECTIONPROPERTY',
'CONTEXT_INFO',
'CURRENT_REQUEST_ID',
'ERROR_LINE',
'ERROR_NUMBER',
'ERROR_MESSAGE',
'ERROR_PROCEDURE',
'ERROR_SEVERITY',
'ERROR_STATE',
'FORMATMESSAGE',
'GETANSINULL',
'GET_FILESTREAM_TRANSACTION_CONTEXT',
'HOST_ID',
'HOST_NAME',
'ISNULL',
'ISNUMERIC',
'MIN_ACTIVE_ROWVERSION',
'NEWID',
'NEWSEQUENTIALID',
'ROWCOUNT_BIG',
'XACT_STATE',
// TextImage
'TEXTPTR',
'TEXTVALID',
// Trigger
'COLUMNS_UPDATED',
'EVENTDATA',
'TRIGGER_NESTLEVEL',
'UPDATE',
// ChangeTracking
'CHANGETABLE',
'CHANGE_TRACKING_CONTEXT',
'CHANGE_TRACKING_CURRENT_VERSION',
'CHANGE_TRACKING_IS_COLUMN_IN_MASK',
'CHANGE_TRACKING_MIN_VALID_VERSION',
// FullTextSearch
'CONTAINSTABLE',
'FREETEXTTABLE',
// SemanticTextSearch
'SEMANTICKEYPHRASETABLE',
'SEMANTICSIMILARITYDETAILSTABLE',
'SEMANTICSIMILARITYTABLE',
// FileStream
'FILETABLEROOTPATH',
'GETFILENAMESPACEPATH',
'GETPATHLOCATOR',
'PATHNAME',
// ServiceBroker
'GET_TRANSMISSION_STATUS'
],
builtinVariables: [
// Configuration
'@@DATEFIRST',
'@@DBTS',
'@@LANGID',
'@@LANGUAGE',
'@@LOCK_TIMEOUT',
'@@MAX_CONNECTIONS',
'@@MAX_PRECISION',
'@@NESTLEVEL',
'@@OPTIONS',
'@@REMSERVER',
'@@SERVERNAME',
'@@SERVICENAME',
'@@SPID',
'@@TEXTSIZE',
'@@VERSION',
// Cursor
'@@CURSOR_ROWS',
'@@FETCH_STATUS',
// Datetime
'@@DATEFIRST',
// Metadata
'@@PROCID',
// System
'@@ERROR',
'@@IDENTITY',
'@@ROWCOUNT',
'@@TRANCOUNT',
// Stats
'@@CONNECTIONS',
'@@CPU_BUSY',
'@@IDLE',
'@@IO_BUSY',
'@@PACKET_ERRORS',
'@@PACK_RECEIVED',
'@@PACK_SENT',
'@@TIMETICKS',
'@@TOTAL_ERRORS',
'@@TOTAL_READ',
'@@TOTAL_WRITE'
],
pseudoColumns: ['$ACTION', '$IDENTITY', '$ROWGUID', '$PARTITION'],
tokenizer: {
root: [
{ include: '@comments' },
{ include: '@whitespace' },
{ include: '@pseudoColumns' },
{ include: '@numbers' },
{ include: '@strings' },
{ include: '@complexIdentifiers' },
{ include: '@scopes' },
[/[;,.]/, 'delimiter'],
[/[()]/, '@brackets'],
[
/[\w@#$]+/,
{
cases: {
'@operators': 'operator',
'@builtinVariables': 'predefined',
'@builtinFunctions': 'predefined',
'@keywords': 'keyword',
'@default': 'identifier'
}
}
],
[/[<>=!%&+\-*/|~^]/, 'operator']
],
whitespace: [[/\s+/, 'white']],
comments: [
[/--+.*/, 'comment'],
[/\/\*/, { token: 'comment.quote', next: '@comment' }]
],
comment: [
[/[^*/]+/, 'comment'],
// Not supporting nested comments, as nested comments seem to not be standard?
// i.e. http://stackoverflow.com/questions/728172/are-there-multiline-comment-delimiters-in-sql-that-are-vendor-agnostic
// [/\/\*/, { token: 'comment.quote', next: '@push' }], // nested comment not allowed :-(
[/\*\//, { token: 'comment.quote', next: '@pop' }],
[/./, 'comment']
],
pseudoColumns: [
[
/[$][A-Za-z_][\w@#$]*/,
{
cases: {
'@pseudoColumns': 'predefined',
'@default': 'identifier'
}
}
]
],
numbers: [
[/0[xX][0-9a-fA-F]*/, 'number'],
[/[$][+-]*\d*(\.\d*)?/, 'number'],
[/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/, 'number']
],
strings: [
[/N'/, { token: 'string', next: '@string' }],
[/'/, { token: 'string', next: '@string' }]
],
string: [
[/[^']+/, 'string'],
[/''/, 'string'],
[/'/, { token: 'string', next: '@pop' }]
],
complexIdentifiers: [
[/\[/, { token: 'identifier.quote', next: '@bracketedIdentifier' }],
[/"/, { token: 'identifier.quote', next: '@quotedIdentifier' }]
],
bracketedIdentifier: [
[/[^\]]+/, 'identifier'],
[/]]/, 'identifier'],
[/]/, { token: 'identifier.quote', next: '@pop' }]
],
quotedIdentifier: [
[/[^"]+/, 'identifier'],
[/""/, 'identifier'],
[/"/, { token: 'identifier.quote', next: '@pop' }]
],
scopes: [
[/BEGIN\s+(DISTRIBUTED\s+)?TRAN(SACTION)?\b/i, 'keyword'],
[/BEGIN\s+TRY\b/i, { token: 'keyword.try' }],
[/END\s+TRY\b/i, { token: 'keyword.try' }],
[/BEGIN\s+CATCH\b/i, { token: 'keyword.catch' }],
[/END\s+CATCH\b/i, { token: 'keyword.catch' }],
[/(BEGIN|CASE)\b/i, { token: 'keyword.block' }],
[/END\b/i, { token: 'keyword.block' }],
[/WHEN\b/i, { token: 'keyword.choice' }],
[/THEN\b/i, { token: 'keyword.choice' }]
]
}
};
});

@ -0,0 +1,419 @@
/*---------------------------------------------------------------------------------------------
* 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/st/st',["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: [
['{', '}'],
['[', ']'],
['(', ')'],
['var', 'end_var'],
['var_input', 'end_var'],
['var_output', 'end_var'],
['var_in_out', 'end_var'],
['var_temp', 'end_var'],
['var_global', 'end_var'],
['var_access', 'end_var'],
['var_external', 'end_var'],
['type', 'end_type'],
['struct', 'end_struct'],
['program', 'end_program'],
['function', 'end_function'],
['function_block', 'end_function_block'],
['action', 'end_action'],
['step', 'end_step'],
['initial_step', 'end_step'],
['transaction', 'end_transaction'],
['configuration', 'end_configuration'],
['tcp', 'end_tcp'],
['recource', 'end_recource'],
['channel', 'end_channel'],
['library', 'end_library'],
['folder', 'end_folder'],
['binaries', 'end_binaries'],
['includes', 'end_includes'],
['sources', 'end_sources']
],
autoClosingPairs: [
{ open: '[', close: ']' },
{ open: '{', close: '}' },
{ open: '(', close: ')' },
{ open: '/*', close: '*/' },
{ open: "'", close: "'", notIn: ['string_sq'] },
{ open: '"', close: '"', notIn: ['string_dq'] },
{ open: 'var_input', close: 'end_var' },
{ open: 'var_output', close: 'end_var' },
{ open: 'var_in_out', close: 'end_var' },
{ open: 'var_temp', close: 'end_var' },
{ open: 'var_global', close: 'end_var' },
{ open: 'var_access', close: 'end_var' },
{ open: 'var_external', close: 'end_var' },
{ open: 'type', close: 'end_type' },
{ open: 'struct', close: 'end_struct' },
{ open: 'program', close: 'end_program' },
{ open: 'function', close: 'end_function' },
{ open: 'function_block', close: 'end_function_block' },
{ open: 'action', close: 'end_action' },
{ open: 'step', close: 'end_step' },
{ open: 'initial_step', close: 'end_step' },
{ open: 'transaction', close: 'end_transaction' },
{ open: 'configuration', close: 'end_configuration' },
{ open: 'tcp', close: 'end_tcp' },
{ open: 'recource', close: 'end_recource' },
{ open: 'channel', close: 'end_channel' },
{ open: 'library', close: 'end_library' },
{ open: 'folder', close: 'end_folder' },
{ open: 'binaries', close: 'end_binaries' },
{ open: 'includes', close: 'end_includes' },
{ open: 'sources', close: 'end_sources' }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" },
{ open: 'var', close: 'end_var' },
{ open: 'var_input', close: 'end_var' },
{ open: 'var_output', close: 'end_var' },
{ open: 'var_in_out', close: 'end_var' },
{ open: 'var_temp', close: 'end_var' },
{ open: 'var_global', close: 'end_var' },
{ open: 'var_access', close: 'end_var' },
{ open: 'var_external', close: 'end_var' },
{ open: 'type', close: 'end_type' },
{ open: 'struct', close: 'end_struct' },
{ open: 'program', close: 'end_program' },
{ open: 'function', close: 'end_function' },
{ open: 'function_block', close: 'end_function_block' },
{ open: 'action', close: 'end_action' },
{ open: 'step', close: 'end_step' },
{ open: 'initial_step', close: 'end_step' },
{ open: 'transaction', close: 'end_transaction' },
{ open: 'configuration', close: 'end_configuration' },
{ open: 'tcp', close: 'end_tcp' },
{ open: 'recource', close: 'end_recource' },
{ open: 'channel', close: 'end_channel' },
{ open: 'library', close: 'end_library' },
{ open: 'folder', close: 'end_folder' },
{ open: 'binaries', close: 'end_binaries' },
{ open: 'includes', close: 'end_includes' },
{ open: 'sources', close: 'end_sources' }
],
folding: {
markers: {
start: new RegExp('^\\s*#pragma\\s+region\\b'),
end: new RegExp('^\\s*#pragma\\s+endregion\\b')
}
}
};
exports.language = {
defaultToken: '',
tokenPostfix: '.st',
ignoreCase: true,
brackets: [
{ token: 'delimiter.curly', open: '{', close: '}' },
{ token: 'delimiter.parenthesis', open: '(', close: ')' },
{ token: 'delimiter.square', open: '[', close: ']' }
],
keywords: [
'if',
'end_if',
'elsif',
'else',
'case',
'of',
'to',
'__try',
'__catch',
'__finally',
'do',
'with',
'by',
'while',
'repeat',
'end_while',
'end_repeat',
'end_case',
'for',
'end_for',
'task',
'retain',
'non_retain',
'constant',
'with',
'at',
'exit',
'return',
'interval',
'priority',
'address',
'port',
'on_channel',
'then',
'iec',
'file',
'uses',
'version',
'packagetype',
'displayname',
'copyright',
'summary',
'vendor',
'common_source',
'from',
'extends'
],
constant: ['false', 'true', 'null'],
defineKeywords: [
'var',
'var_input',
'var_output',
'var_in_out',
'var_temp',
'var_global',
'var_access',
'var_external',
'end_var',
'type',
'end_type',
'struct',
'end_struct',
'program',
'end_program',
'function',
'end_function',
'function_block',
'end_function_block',
'interface',
'end_interface',
'method',
'end_method',
'property',
'end_property',
'namespace',
'end_namespace',
'configuration',
'end_configuration',
'tcp',
'end_tcp',
'resource',
'end_resource',
'channel',
'end_channel',
'library',
'end_library',
'folder',
'end_folder',
'binaries',
'end_binaries',
'includes',
'end_includes',
'sources',
'end_sources',
'action',
'end_action',
'step',
'initial_step',
'end_step',
'transaction',
'end_transaction'
],
typeKeywords: [
'int',
'sint',
'dint',
'lint',
'usint',
'uint',
'udint',
'ulint',
'real',
'lreal',
'time',
'date',
'time_of_day',
'date_and_time',
'string',
'bool',
'byte',
'word',
'dword',
'array',
'pointer',
'lword'
],
operators: [
'=',
'>',
'<',
':',
':=',
'<=',
'>=',
'<>',
'&',
'+',
'-',
'*',
'**',
'MOD',
'^',
'or',
'and',
'not',
'xor',
'abs',
'acos',
'asin',
'atan',
'cos',
'exp',
'expt',
'ln',
'log',
'sin',
'sqrt',
'tan',
'sel',
'max',
'min',
'limit',
'mux',
'shl',
'shr',
'rol',
'ror',
'indexof',
'sizeof',
'adr',
'adrinst',
'bitadr',
'is_valid',
'ref',
'ref_to'
],
builtinVariables: [],
builtinFunctions: [
'sr',
'rs',
'tp',
'ton',
'tof',
'eq',
'ge',
'le',
'lt',
'ne',
'round',
'trunc',
'ctd',
'сtu',
'ctud',
'r_trig',
'f_trig',
'move',
'concat',
'delete',
'find',
'insert',
'left',
'len',
'replace',
'right',
'rtc'
],
// we include these common regular expressions
symbols: /[=><!~?:&|+\-*\/\^%]+/,
// C# style strings
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
// The main tokenizer for our languages
tokenizer: {
root: [
[/(\.\.)/, 'delimiter'],
[/\b(16#[0-9A-Fa-f\_]*)+\b/, 'number.hex'],
[/\b(2#[01\_]+)+\b/, 'number.binary'],
[/\b(8#[0-9\_]*)+\b/, 'number.octal'],
[/\b\d*\.\d+([eE][\-+]?\d+)?\b/, 'number.float'],
[/\b(L?REAL)#[0-9\_\.e]+\b/, 'number.float'],
[/\b(BYTE|(?:D|L)?WORD|U?(?:S|D|L)?INT)#[0-9\_]+\b/, 'number'],
[/\d+/, 'number'],
[/\b(T|DT|TOD)#[0-9:-_shmyd]+\b/, 'tag'],
[/\%(I|Q|M)(X|B|W|D|L)[0-9\.]+/, 'tag'],
[/\%(I|Q|M)[0-9\.]*/, 'tag'],
[/\b[A-Za-z]{1,6}#[0-9]+\b/, 'tag'],
[/\b(TO_|CTU_|CTD_|CTUD_|MUX_|SEL_)[A_Za-z]+\b/, 'predefined'],
[/\b[A_Za-z]+(_TO_)[A_Za-z]+\b/, 'predefined'],
[/[;]/, 'delimiter'],
[/[.]/, { token: 'delimiter', next: '@params' }],
// identifiers and keywords
[
/[a-zA-Z_]\w*/,
{
cases: {
'@operators': 'operators',
'@keywords': 'keyword',
'@typeKeywords': 'type',
'@defineKeywords': 'variable',
'@constant': 'constant',
'@builtinVariables': 'predefined',
'@builtinFunctions': 'predefined',
'@default': 'identifier'
}
}
],
{ include: '@whitespace' },
[/[{}()\[\]]/, '@brackets'],
[/"([^"\\]|\\.)*$/, 'string.invalid'],
[/"/, { token: 'string.quote', bracket: '@open', next: '@string_dq' }],
[/'/, { token: 'string.quote', bracket: '@open', next: '@string_sq' }],
[/'[^\\']'/, 'string'],
[/(')(@escapes)(')/, ['string', 'string.escape', 'string']],
[/'/, 'string.invalid']
],
params: [
[/\b[A-Za-z0-9_]+\b(?=\()/, { token: 'identifier', next: '@pop' }],
[/\b[A-Za-z0-9_]+\b/, 'variable.name', '@pop']
],
comment: [
[/[^\/*]+/, 'comment'],
[/\/\*/, 'comment', '@push'],
['\\*/', 'comment', '@pop'],
[/[\/*]/, 'comment']
],
comment2: [
[/[^\(*]+/, 'comment'],
[/\(\*/, 'comment', '@push'],
['\\*\\)', 'comment', '@pop'],
[/[\(*]/, 'comment']
],
whitespace: [
[/[ \t\r\n]+/, 'white'],
[/\/\/.*$/, 'comment'],
[/\/\*/, 'comment', '@comment'],
[/\(\*/, 'comment', '@comment2']
],
string_dq: [
[/[^\\"]+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/"/, { token: 'string.quote', bracket: '@close', next: '@pop' }]
],
string_sq: [
[/[^\\']+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/'/, { token: 'string.quote', bracket: '@close', next: '@pop' }]
]
}
};
});

@ -0,0 +1,260 @@
/*!---------------------------------------------------------------------------------------------
* Copyright (C) David Owens II, owensd.io. All rights reserved.
*--------------------------------------------------------------------------------------------*/
define('vs/basic-languages/swift/swift',["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: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" },
{ open: '`', close: '`' }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" },
{ open: '`', close: '`' }
]
};
exports.language = {
defaultToken: '',
tokenPostfix: '.swift',
// TODO(owensd): Support the full range of unicode valid identifiers.
identifier: /[a-zA-Z_][\w$]*/,
// TODO(owensd): Support the @availability macro properly.
attributes: [
'@autoclosure',
'@noescape',
'@noreturn',
'@NSApplicationMain',
'@NSCopying',
'@NSManaged',
'@objc',
'@UIApplicationMain',
'@noreturn',
'@availability',
'@IBAction',
'@IBDesignable',
'@IBInspectable',
'@IBOutlet'
],
accessmodifiers: ['public', 'private', 'fileprivate', 'internal'],
keywords: [
'__COLUMN__',
'__FILE__',
'__FUNCTION__',
'__LINE__',
'as',
'as!',
'as?',
'associativity',
'break',
'case',
'catch',
'class',
'continue',
'convenience',
'default',
'deinit',
'didSet',
'do',
'dynamic',
'dynamicType',
'else',
'enum',
'extension',
'fallthrough',
'fileprivate',
'final',
'for',
'func',
'get',
'guard',
'if',
'import',
'in',
'infix',
'init',
'inout',
'internal',
'is',
'lazy',
'left',
'let',
'mutating',
'nil',
'none',
'nonmutating',
'operator',
'optional',
'override',
'postfix',
'precedence',
'prefix',
'private',
'protocol',
'Protocol',
'public',
'repeat',
'required',
'return',
'right',
'self',
'Self',
'set',
'static',
'struct',
'subscript',
'super',
'switch',
'throw',
'throws',
'try',
'try!',
'Type',
'typealias',
'unowned',
'var',
'weak',
'where',
'while',
'willSet',
'FALSE',
'TRUE'
],
symbols: /[=(){}\[\].,:;@#\_&\-<>`?!+*\\\/]/,
// Moved . to operatorstart so it can be a delimiter
operatorstart: /[\/=\-+!*%<>&|^~?\u00A1-\u00A7\u00A9\u00AB\u00AC\u00AE\u00B0-\u00B1\u00B6\u00BB\u00BF\u00D7\u00F7\u2016-\u2017\u2020-\u2027\u2030-\u203E\u2041-\u2053\u2055-\u205E\u2190-\u23FF\u2500-\u2775\u2794-\u2BFF\u2E00-\u2E7F\u3001-\u3003\u3008-\u3030]/,
operatorend: /[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE00-\uFE0F\uFE20-\uFE2F\uE0100-\uE01EF]/,
operators: /(@operatorstart)((@operatorstart)|(@operatorend))*/,
// TODO(owensd): These are borrowed from C#; need to validate correctness for Swift.
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
tokenizer: {
root: [
{ include: '@whitespace' },
{ include: '@comment' },
{ include: '@attribute' },
{ include: '@literal' },
{ include: '@keyword' },
{ include: '@invokedmethod' },
{ include: '@symbol' }
],
whitespace: [
[/\s+/, 'white'],
[/"""/, 'string.quote', '@endDblDocString']
],
endDblDocString: [
[/[^"]+/, 'string'],
[/\\"/, 'string'],
[/"""/, 'string.quote', '@popall'],
[/"/, 'string']
],
symbol: [
[/[{}()\[\]]/, '@brackets'],
[/[<>](?!@symbols)/, '@brackets'],
[/[.]/, 'delimiter'],
[/@operators/, 'operator'],
[/@symbols/, 'operator']
],
comment: [
[/\/\/\/.*$/, 'comment.doc'],
[/\/\*\*/, 'comment.doc', '@commentdocbody'],
[/\/\/.*$/, 'comment'],
[/\/\*/, 'comment', '@commentbody']
],
commentdocbody: [
[/\/\*/, 'comment', '@commentbody'],
[/\*\//, 'comment.doc', '@pop'],
[/\:[a-zA-Z]+\:/, 'comment.doc.param'],
[/./, 'comment.doc']
],
commentbody: [
[/\/\*/, 'comment', '@commentbody'],
[/\*\//, 'comment', '@pop'],
[/./, 'comment']
],
attribute: [
[
/@@@identifier/,
{
cases: {
'@attributes': 'keyword.control',
'@default': ''
}
}
]
],
literal: [
[/"/, { token: 'string.quote', next: '@stringlit' }],
[/0[b]([01]_?)+/, 'number.binary'],
[/0[o]([0-7]_?)+/, 'number.octal'],
[/0[x]([0-9a-fA-F]_?)+([pP][\-+](\d_?)+)?/, 'number.hex'],
[/(\d_?)*\.(\d_?)+([eE][\-+]?(\d_?)+)?/, 'number.float'],
[/(\d_?)+/, 'number']
],
stringlit: [
[/\\\(/, { token: 'operator', next: '@interpolatedexpression' }],
[/@escapes/, 'string'],
[/\\./, 'string.escape.invalid'],
[/"/, { token: 'string.quote', next: '@pop' }],
[/./, 'string']
],
interpolatedexpression: [
[/\(/, { token: 'operator', next: '@interpolatedexpression' }],
[/\)/, { token: 'operator', next: '@pop' }],
{ include: '@literal' },
{ include: '@keyword' },
{ include: '@symbol' }
],
keyword: [
[/`/, { token: 'operator', next: '@escapedkeyword' }],
[
/@identifier/,
{
cases: {
'@keywords': 'keyword',
'[A-Z][a-zA-Z0-9$]*': 'type.identifier',
'@default': 'identifier'
}
}
]
],
escapedkeyword: [
[/`/, { token: 'operator', next: '@pop' }],
[/./, 'identifier']
],
// symbol: [
// [ /@symbols/, 'operator' ],
// [ /@operators/, 'operator' ]
// ],
invokedmethod: [
[
/([.])(@identifier)/,
{
cases: {
$2: ['delimeter', 'type.identifier'],
'@default': ''
}
}
]
]
}
};
});

@ -0,0 +1,578 @@
/*---------------------------------------------------------------------------------------------
* 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'
},
table: {
token: 'keyword.$2',
next: '@table'
},
'@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 and comments
{ 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' }
]
]
],
table: [
{ include: '@whitespace' },
[/[()]/, '@brackets'],
[/[:;]/, 'delimiter'],
[/[01\-*?xXbBrRfFpPnN]/, 'variable.predefined'],
['endtable', 'keyword.endtable', '@pop']
]
}
};
});

@ -0,0 +1,239 @@
/*---------------------------------------------------------------------------------------------
* 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/tcl/tcl',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
]
};
exports.language = {
tokenPostfix: '.tcl',
specialFunctions: [
'set',
'unset',
'rename',
'variable',
'proc',
'coroutine',
'foreach',
'incr',
'append',
'lappend',
'linsert',
'lreplace'
],
mainFunctions: [
'if',
'then',
'elseif',
'else',
'case',
'switch',
'while',
'for',
'break',
'continue',
'return',
'package',
'namespace',
'catch',
'exit',
'eval',
'expr',
'uplevel',
'upvar'
],
builtinFunctions: [
'file',
'info',
'concat',
'join',
'lindex',
'list',
'llength',
'lrange',
'lsearch',
'lsort',
'split',
'array',
'parray',
'binary',
'format',
'regexp',
'regsub',
'scan',
'string',
'subst',
'dict',
'cd',
'clock',
'exec',
'glob',
'pid',
'pwd',
'close',
'eof',
'fblocked',
'fconfigure',
'fcopy',
'fileevent',
'flush',
'gets',
'open',
'puts',
'read',
'seek',
'socket',
'tell',
'interp',
'after',
'auto_execok',
'auto_load',
'auto_mkindex',
'auto_reset',
'bgerror',
'error',
'global',
'history',
'load',
'source',
'time',
'trace',
'unknown',
'unset',
'update',
'vwait',
'winfo',
'wm',
'bind',
'event',
'pack',
'place',
'grid',
'font',
'bell',
'clipboard',
'destroy',
'focus',
'grab',
'lower',
'option',
'raise',
'selection',
'send',
'tk',
'tkwait',
'tk_bisque',
'tk_focusNext',
'tk_focusPrev',
'tk_focusFollowsMouse',
'tk_popup',
'tk_setPalette'
],
symbols: /[=><!~?:&|+\-*\/\^%]+/,
brackets: [
{ open: '(', close: ')', token: 'delimiter.parenthesis' },
{ open: '{', close: '}', token: 'delimiter.curly' },
{ open: '[', close: ']', token: 'delimiter.square' }
],
escapes: /\\(?:[abfnrtv\\"'\[\]\{\};\$]|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
variables: /(?:\$+(?:(?:\:\:?)?[a-zA-Z_]\w*)+)/,
tokenizer: {
root: [
// identifiers and keywords
[
/[a-zA-Z_]\w*/,
{
cases: {
'@specialFunctions': {
token: 'keyword.flow',
next: '@specialFunc'
},
'@mainFunctions': 'keyword',
'@builtinFunctions': 'variable',
'@default': 'operator.scss'
}
}
],
[/\s+\-+(?!\d|\.)\w*|{\*}/, 'metatag'],
// whitespace
{ include: '@whitespace' },
// delimiters and operators
[/[{}()\[\]]/, '@brackets'],
[/@symbols/, 'operator'],
[/\$+(?:\:\:)?\{/, { token: 'identifier', next: '@nestedVariable' }],
[/@variables/, 'type.identifier'],
[/\.(?!\d|\.)[\w\-]*/, 'operator.sql'],
// numbers
[/\d+(\.\d+)?/, 'number'],
[/\d+/, 'number'],
// delimiter
[/;/, 'delimiter'],
// strings
[/"/, { token: 'string.quote', bracket: '@open', next: '@dstring' }],
[/'/, { token: 'string.quote', bracket: '@open', next: '@sstring' }]
],
dstring: [
[/\[/, { token: '@brackets', next: '@nestedCall' }],
[/\$+(?:\:\:)?\{/, { token: 'identifier', next: '@nestedVariable' }],
[/@variables/, 'type.identifier'],
[/[^\\$\[\]"]+/, 'string'],
[/@escapes/, 'string.escape'],
[/"/, { token: 'string.quote', bracket: '@close', next: '@pop' }]
],
sstring: [
[/\[/, { token: '@brackets', next: '@nestedCall' }],
[/\$+(?:\:\:)?\{/, { token: 'identifier', next: '@nestedVariable' }],
[/@variables/, 'type.identifier'],
[/[^\\$\[\]']+/, 'string'],
[/@escapes/, 'string.escape'],
[/'/, { token: 'string.quote', bracket: '@close', next: '@pop' }]
],
whitespace: [
[/[ \t\r\n]+/, 'white'],
[/#.*\\$/, { token: 'comment', next: '@newlineComment' }],
[/#.*(?!\\)$/, 'comment']
],
newlineComment: [
[/.*\\$/, 'comment'],
[/.*(?!\\)$/, { token: 'comment', next: '@pop' }]
],
nestedVariable: [
[/[^\{\}\$]+/, 'type.identifier'],
[/\}/, { token: 'identifier', next: '@pop' }]
],
nestedCall: [
[/\[/, { token: '@brackets', next: '@nestedCall' }],
[/\]/, { token: '@brackets', next: '@pop' }],
{ include: 'root' }
],
specialFunc: [
[/"/, { token: 'string', next: '@dstring' }],
[/'/, { token: 'string', next: '@sstring' }],
[/\S+/, { token: 'type', next: '@pop' }]
]
}
};
});

@ -0,0 +1,385 @@
/*---------------------------------------------------------------------------------------------
* 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/twig/twig',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,
comments: {
blockComment: ['{#', '#}']
},
brackets: [
['{#', '#}'],
['{%', '%}'],
['{{', '}}'],
['(', ')'],
['[', ']'],
// HTML
['<!--', '-->'],
['<', '>']
],
autoClosingPairs: [
{ open: '{# ', close: ' #}' },
{ open: '{% ', close: ' %}' },
{ open: '{{ ', close: ' }}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
surroundingPairs: [
{ open: '"', close: '"' },
{ open: "'", close: "'" },
// HTML
{ open: '<', close: '>' }
]
};
exports.language = {
defaultToken: '',
tokenPostfix: '',
ignoreCase: true,
keywords: [
// (opening) tags
'apply',
'autoescape',
'block',
'deprecated',
'do',
'embed',
'extends',
'flush',
'for',
'from',
'if',
'import',
'include',
'macro',
'sandbox',
'set',
'use',
'verbatim',
'with',
// closing tags
'endapply',
'endautoescape',
'endblock',
'endembed',
'endfor',
'endif',
'endmacro',
'endsandbox',
'endset',
'endwith',
// literals
'true',
'false'
],
tokenizer: {
root: [
// whitespace
[/\s+/],
// Twig Tag Delimiters
[/{#/, 'comment.twig', '@commentState'],
[/{%[-~]?/, 'delimiter.twig', '@blockState'],
[/{{[-~]?/, 'delimiter.twig', '@variableState'],
// HTML
[/<!DOCTYPE/, 'metatag.html', '@doctype'],
[/<!--/, 'comment.html', '@comment'],
[/(<)((?:[\w\-]+:)?[\w\-]+)(\s*)(\/>)/, ['delimiter.html', 'tag.html', '', 'delimiter.html']],
[/(<)(script)/, ['delimiter.html', { token: 'tag.html', next: '@script' }]],
[/(<)(style)/, ['delimiter.html', { token: 'tag.html', next: '@style' }]],
[/(<)((?:[\w\-]+:)?[\w\-]+)/, ['delimiter.html', { token: 'tag.html', next: '@otherTag' }]],
[/(<\/)((?:[\w\-]+:)?[\w\-]+)/, ['delimiter.html', { token: 'tag.html', next: '@otherTag' }]],
[/</, 'delimiter.html'],
[/[^<]+/] // text
],
/**
* Comment Tag Handling
*/
commentState: [
[/#}/, 'comment.twig', '@pop'],
[/./, 'comment.twig']
],
/**
* Block Tag Handling
*/
blockState: [
[/[-~]?%}/, 'delimiter.twig', '@pop'],
// whitespace
[/\s+/],
// verbatim
// Unlike other blocks, verbatim ehas its own state
// transition to ensure we mark its contents as strings.
[
/(verbatim)(\s*)([-~]?%})/,
['keyword.twig', '', { token: 'delimiter.twig', next: '@rawDataState' }]
],
{ include: 'expression' }
],
rawDataState: [
// endverbatim
[
/({%[-~]?)(\s*)(endverbatim)(\s*)([-~]?%})/,
['delimiter.twig', '', 'keyword.twig', '', { token: 'delimiter.twig', next: '@popall' }]
],
[/./, 'string.twig']
],
/**
* Variable Tag Handling
*/
variableState: [[/[-~]?}}/, 'delimiter.twig', '@pop'], { include: 'expression' }],
stringState: [
// closing double quoted string
[/"/, 'string.twig', '@pop'],
// interpolation start
[/#{\s*/, 'string.twig', '@interpolationState'],
// string part
[/[^#"\\]*(?:(?:\\.|#(?!\{))[^#"\\]*)*/, 'string.twig']
],
interpolationState: [
// interpolation end
[/}/, 'string.twig', '@pop'],
{ include: 'expression' }
],
/**
* Expression Handling
*/
expression: [
// whitespace
[/\s+/],
// operators - math
[/\+|-|\/{1,2}|%|\*{1,2}/, 'operators.twig'],
// operators - logic
[/(and|or|not|b-and|b-xor|b-or)(\s+)/, ['operators.twig', '']],
// operators - comparison (symbols)
[/==|!=|<|>|>=|<=/, 'operators.twig'],
// operators - comparison (words)
[/(starts with|ends with|matches)(\s+)/, ['operators.twig', '']],
// operators - containment
[/(in)(\s+)/, ['operators.twig', '']],
// operators - test
[/(is)(\s+)/, ['operators.twig', '']],
// operators - misc
[/\||~|:|\.{1,2}|\?{1,2}/, 'operators.twig'],
// names
[
/[^\W\d][\w]*/,
{
cases: {
'@keywords': 'keyword.twig',
'@default': 'variable.twig'
}
}
],
// numbers
[/\d+(\.\d+)?/, 'number.twig'],
// punctuation
[/\(|\)|\[|\]|{|}|,/, 'delimiter.twig'],
// strings
[/"([^#"\\]*(?:\\.[^#"\\]*)*)"|\'([^\'\\]*(?:\\.[^\'\\]*)*)\'/, 'string.twig'],
// opening double quoted string
[/"/, 'string.twig', '@stringState'],
// misc syntactic constructs
// These are not operators per se, but for the purposes of lexical analysis we
// can treat them as such.
// arrow functions
[/=>/, 'operators.twig'],
// assignment
[/=/, 'operators.twig']
],
/**
* HTML
*/
doctype: [
[/[^>]+/, 'metatag.content.html'],
[/>/, 'metatag.html', '@pop']
],
comment: [
[/-->/, 'comment.html', '@pop'],
[/[^-]+/, 'comment.content.html'],
[/./, 'comment.content.html']
],
otherTag: [
[/\/?>/, 'delimiter.html', '@pop'],
[/"([^"]*)"/, 'attribute.value.html'],
[/'([^']*)'/, 'attribute.value.html'],
[/[\w\-]+/, 'attribute.name.html'],
[/=/, 'delimiter.html'],
[/[ \t\r\n]+/] // whitespace
],
// -- BEGIN <script> tags handling
// After <script
script: [
[/type/, 'attribute.name.html', '@scriptAfterType'],
[/"([^"]*)"/, 'attribute.value.html'],
[/'([^']*)'/, 'attribute.value.html'],
[/[\w\-]+/, 'attribute.name.html'],
[/=/, 'delimiter.html'],
[
/>/,
{
token: 'delimiter.html',
next: '@scriptEmbedded',
nextEmbedded: 'text/javascript'
}
],
[/[ \t\r\n]+/],
[
/(<\/)(script\s*)(>)/,
['delimiter.html', 'tag.html', { token: 'delimiter.html', next: '@pop' }]
]
],
// After <script ... type
scriptAfterType: [
[/=/, 'delimiter.html', '@scriptAfterTypeEquals'],
[
/>/,
{
token: 'delimiter.html',
next: '@scriptEmbedded',
nextEmbedded: 'text/javascript'
}
],
[/[ \t\r\n]+/],
[/<\/script\s*>/, { token: '@rematch', next: '@pop' }]
],
// After <script ... type =
scriptAfterTypeEquals: [
[
/"([^"]*)"/,
{
token: 'attribute.value.html',
switchTo: '@scriptWithCustomType.$1'
}
],
[
/'([^']*)'/,
{
token: 'attribute.value.html',
switchTo: '@scriptWithCustomType.$1'
}
],
[
/>/,
{
token: 'delimiter.html',
next: '@scriptEmbedded',
nextEmbedded: 'text/javascript'
}
],
[/[ \t\r\n]+/],
[/<\/script\s*>/, { token: '@rematch', next: '@pop' }]
],
// After <script ... type = $S2
scriptWithCustomType: [
[
/>/,
{
token: 'delimiter.html',
next: '@scriptEmbedded.$S2',
nextEmbedded: '$S2'
}
],
[/"([^"]*)"/, 'attribute.value.html'],
[/'([^']*)'/, 'attribute.value.html'],
[/[\w\-]+/, 'attribute.name.html'],
[/=/, 'delimiter.html'],
[/[ \t\r\n]+/],
[/<\/script\s*>/, { token: '@rematch', next: '@pop' }]
],
scriptEmbedded: [
[/<\/script/, { token: '@rematch', next: '@pop', nextEmbedded: '@pop' }],
[/[^<]+/, '']
],
// -- END <script> tags handling
// -- BEGIN <style> tags handling
// After <style
style: [
[/type/, 'attribute.name.html', '@styleAfterType'],
[/"([^"]*)"/, 'attribute.value.html'],
[/'([^']*)'/, 'attribute.value.html'],
[/[\w\-]+/, 'attribute.name.html'],
[/=/, 'delimiter.html'],
[
/>/,
{
token: 'delimiter.html',
next: '@styleEmbedded',
nextEmbedded: 'text/css'
}
],
[/[ \t\r\n]+/],
[
/(<\/)(style\s*)(>)/,
['delimiter.html', 'tag.html', { token: 'delimiter.html', next: '@pop' }]
]
],
// After <style ... type
styleAfterType: [
[/=/, 'delimiter.html', '@styleAfterTypeEquals'],
[
/>/,
{
token: 'delimiter.html',
next: '@styleEmbedded',
nextEmbedded: 'text/css'
}
],
[/[ \t\r\n]+/],
[/<\/style\s*>/, { token: '@rematch', next: '@pop' }]
],
// After <style ... type =
styleAfterTypeEquals: [
[
/"([^"]*)"/,
{
token: 'attribute.value.html',
switchTo: '@styleWithCustomType.$1'
}
],
[
/'([^']*)'/,
{
token: 'attribute.value.html',
switchTo: '@styleWithCustomType.$1'
}
],
[
/>/,
{
token: 'delimiter.html',
next: '@styleEmbedded',
nextEmbedded: 'text/css'
}
],
[/[ \t\r\n]+/],
[/<\/style\s*>/, { token: '@rematch', next: '@pop' }]
],
// After <style ... type = $S2
styleWithCustomType: [
[
/>/,
{
token: 'delimiter.html',
next: '@styleEmbedded.$S2',
nextEmbedded: '$S2'
}
],
[/"([^"]*)"/, 'attribute.value.html'],
[/'([^']*)'/, 'attribute.value.html'],
[/[\w\-]+/, 'attribute.name.html'],
[/=/, 'delimiter.html'],
[/[ \t\r\n]+/],
[/<\/style\s*>/, { token: '@rematch', next: '@pop' }]
],
styleEmbedded: [
[/<\/style/, { token: '@rematch', next: '@pop', nextEmbedded: '@pop' }],
[/[^<]+/, '']
]
}
};
});

@ -0,0 +1,337 @@
/*---------------------------------------------------------------------------------------------
* 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/typescript/typescript',["require", "exports", "../fillers/monaco-editor-core"], function (require, exports, monaco_editor_core_1) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,
comments: {
lineComment: '//',
blockComment: ['/*', '*/']
},
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
onEnterRules: [
{
// e.g. /** | */
beforeText: /^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/,
afterText: /^\s*\*\/$/,
action: {
indentAction: monaco_editor_core_1.languages.IndentAction.IndentOutdent,
appendText: ' * '
}
},
{
// e.g. /** ...|
beforeText: /^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/,
action: {
indentAction: monaco_editor_core_1.languages.IndentAction.None,
appendText: ' * '
}
},
{
// e.g. * ...|
beforeText: /^(\t|(\ \ ))*\ \*(\ ([^\*]|\*(?!\/))*)?$/,
action: {
indentAction: monaco_editor_core_1.languages.IndentAction.None,
appendText: '* '
}
},
{
// e.g. */|
beforeText: /^(\t|(\ \ ))*\ \*\/\s*$/,
action: {
indentAction: monaco_editor_core_1.languages.IndentAction.None,
removeText: 1
}
}
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"', notIn: ['string'] },
{ open: "'", close: "'", notIn: ['string', 'comment'] },
{ open: '`', close: '`', notIn: ['string', 'comment'] },
{ open: '/**', close: ' */', notIn: ['string'] }
],
folding: {
markers: {
start: new RegExp('^\\s*//\\s*#?region\\b'),
end: new RegExp('^\\s*//\\s*#?endregion\\b')
}
}
};
exports.language = {
// Set defaultToken to invalid to see what you do not tokenize yet
defaultToken: 'invalid',
tokenPostfix: '.ts',
keywords: [
// Should match the keys of textToKeywordObj in
// https://github.com/microsoft/TypeScript/blob/master/src/compiler/scanner.ts
'abstract',
'any',
'as',
'asserts',
'bigint',
'boolean',
'break',
'case',
'catch',
'class',
'continue',
'const',
'constructor',
'debugger',
'declare',
'default',
'delete',
'do',
'else',
'enum',
'export',
'extends',
'false',
'finally',
'for',
'from',
'function',
'get',
'if',
'implements',
'import',
'in',
'infer',
'instanceof',
'interface',
'is',
'keyof',
'let',
'module',
'namespace',
'never',
'new',
'null',
'number',
'object',
'package',
'private',
'protected',
'public',
'override',
'readonly',
'require',
'global',
'return',
'set',
'static',
'string',
'super',
'switch',
'symbol',
'this',
'throw',
'true',
'try',
'type',
'typeof',
'undefined',
'unique',
'unknown',
'var',
'void',
'while',
'with',
'yield',
'async',
'await',
'of'
],
operators: [
'<=',
'>=',
'==',
'!=',
'===',
'!==',
'=>',
'+',
'-',
'**',
'*',
'/',
'%',
'++',
'--',
'<<',
'</',
'>>',
'>>>',
'&',
'|',
'^',
'!',
'~',
'&&',
'||',
'??',
'?',
':',
'=',
'+=',
'-=',
'*=',
'**=',
'/=',
'%=',
'<<=',
'>>=',
'>>>=',
'&=',
'|=',
'^=',
'@'
],
// we include these common regular expressions
symbols: /[=><!~?:&|+\-*\/\^%]+/,
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
digits: /\d+(_+\d+)*/,
octaldigits: /[0-7]+(_+[0-7]+)*/,
binarydigits: /[0-1]+(_+[0-1]+)*/,
hexdigits: /[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,
regexpctl: /[(){}\[\]\$\^|\-*+?\.]/,
regexpesc: /\\(?:[bBdDfnrstvwWn0\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})/,
// The main tokenizer for our languages
tokenizer: {
root: [[/[{}]/, 'delimiter.bracket'], { include: 'common' }],
common: [
// identifiers and keywords
[
/[a-z_$][\w$]*/,
{
cases: {
'@keywords': 'keyword',
'@default': 'identifier'
}
}
],
[/[A-Z][\w\$]*/, 'type.identifier'],
// [/[A-Z][\w\$]*/, 'identifier'],
// whitespace
{ include: '@whitespace' },
// regular expression: ensure it is terminated before beginning (otherwise it is an opeator)
[
/\/(?=([^\\\/]|\\.)+\/([dgimsuy]*)(\s*)(\.|;|,|\)|\]|\}|$))/,
{ token: 'regexp', bracket: '@open', next: '@regexp' }
],
// delimiters and operators
[/[()\[\]]/, '@brackets'],
[/[<>](?!@symbols)/, '@brackets'],
[/!(?=([^=]|$))/, 'delimiter'],
[
/@symbols/,
{
cases: {
'@operators': 'delimiter',
'@default': ''
}
}
],
// numbers
[/(@digits)[eE]([\-+]?(@digits))?/, 'number.float'],
[/(@digits)\.(@digits)([eE][\-+]?(@digits))?/, 'number.float'],
[/0[xX](@hexdigits)n?/, 'number.hex'],
[/0[oO]?(@octaldigits)n?/, 'number.octal'],
[/0[bB](@binarydigits)n?/, 'number.binary'],
[/(@digits)n?/, 'number'],
// delimiter: after number because of .\d floats
[/[;,.]/, 'delimiter'],
// strings
[/"([^"\\]|\\.)*$/, 'string.invalid'],
[/'([^'\\]|\\.)*$/, 'string.invalid'],
[/"/, 'string', '@string_double'],
[/'/, 'string', '@string_single'],
[/`/, 'string', '@string_backtick']
],
whitespace: [
[/[ \t\r\n]+/, ''],
[/\/\*\*(?!\/)/, 'comment.doc', '@jsdoc'],
[/\/\*/, 'comment', '@comment'],
[/\/\/.*$/, 'comment']
],
comment: [
[/[^\/*]+/, 'comment'],
[/\*\//, 'comment', '@pop'],
[/[\/*]/, 'comment']
],
jsdoc: [
[/[^\/*]+/, 'comment.doc'],
[/\*\//, 'comment.doc', '@pop'],
[/[\/*]/, 'comment.doc']
],
// We match regular expression quite precisely
regexp: [
[
/(\{)(\d+(?:,\d*)?)(\})/,
['regexp.escape.control', 'regexp.escape.control', 'regexp.escape.control']
],
[
/(\[)(\^?)(?=(?:[^\]\\\/]|\\.)+)/,
['regexp.escape.control', { token: 'regexp.escape.control', next: '@regexrange' }]
],
[/(\()(\?:|\?=|\?!)/, ['regexp.escape.control', 'regexp.escape.control']],
[/[()]/, 'regexp.escape.control'],
[/@regexpctl/, 'regexp.escape.control'],
[/[^\\\/]/, 'regexp'],
[/@regexpesc/, 'regexp.escape'],
[/\\\./, 'regexp.invalid'],
[/(\/)([dgimsuy]*)/, [{ token: 'regexp', bracket: '@close', next: '@pop' }, 'keyword.other']]
],
regexrange: [
[/-/, 'regexp.escape.control'],
[/\^/, 'regexp.invalid'],
[/@regexpesc/, 'regexp.escape'],
[/[^\]]/, 'regexp'],
[
/\]/,
{
token: 'regexp.escape.control',
next: '@pop',
bracket: '@close'
}
]
],
string_double: [
[/[^\\"]+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/"/, 'string', '@pop']
],
string_single: [
[/[^\\']+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/'/, 'string', '@pop']
],
string_backtick: [
[/\$\{/, { token: 'delimiter.bracket', next: '@bracketCounting' }],
[/[^\\`$]+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/`/, 'string', '@pop']
],
bracketCounting: [
[/\{/, 'delimiter.bracket', '@bracketCounting'],
[/\}/, 'delimiter.bracket', '@pop'],
{ include: 'common' }
]
}
};
});

@ -0,0 +1,379 @@
/*---------------------------------------------------------------------------------------------
* 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/vb/vb',["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: [
['{', '}'],
['[', ']'],
['(', ')'],
['<', '>'],
['addhandler', 'end addhandler'],
['class', 'end class'],
['enum', 'end enum'],
['event', 'end event'],
['function', 'end function'],
['get', 'end get'],
['if', 'end if'],
['interface', 'end interface'],
['module', 'end module'],
['namespace', 'end namespace'],
['operator', 'end operator'],
['property', 'end property'],
['raiseevent', 'end raiseevent'],
['removehandler', 'end removehandler'],
['select', 'end select'],
['set', 'end set'],
['structure', 'end structure'],
['sub', 'end sub'],
['synclock', 'end synclock'],
['try', 'end try'],
['while', 'end while'],
['with', 'end with'],
['using', 'end using'],
['do', 'loop'],
['for', 'next']
],
autoClosingPairs: [
{ open: '{', close: '}', notIn: ['string', 'comment'] },
{ open: '[', close: ']', notIn: ['string', 'comment'] },
{ open: '(', close: ')', notIn: ['string', 'comment'] },
{ open: '"', close: '"', notIn: ['string', 'comment'] },
{ open: '<', close: '>', notIn: ['string', 'comment'] }
],
folding: {
markers: {
start: new RegExp('^\\s*#Region\\b'),
end: new RegExp('^\\s*#End Region\\b')
}
}
};
exports.language = {
defaultToken: '',
tokenPostfix: '.vb',
ignoreCase: true,
brackets: [
{ token: 'delimiter.bracket', open: '{', close: '}' },
{ token: 'delimiter.array', open: '[', close: ']' },
{ token: 'delimiter.parenthesis', open: '(', close: ')' },
{ token: 'delimiter.angle', open: '<', close: '>' },
// Special bracket statement pairs
// according to https://msdn.microsoft.com/en-us/library/tsw2a11z.aspx
{
token: 'keyword.tag-addhandler',
open: 'addhandler',
close: 'end addhandler'
},
{ token: 'keyword.tag-class', open: 'class', close: 'end class' },
{ token: 'keyword.tag-enum', open: 'enum', close: 'end enum' },
{ token: 'keyword.tag-event', open: 'event', close: 'end event' },
{
token: 'keyword.tag-function',
open: 'function',
close: 'end function'
},
{ token: 'keyword.tag-get', open: 'get', close: 'end get' },
{ token: 'keyword.tag-if', open: 'if', close: 'end if' },
{
token: 'keyword.tag-interface',
open: 'interface',
close: 'end interface'
},
{ token: 'keyword.tag-module', open: 'module', close: 'end module' },
{
token: 'keyword.tag-namespace',
open: 'namespace',
close: 'end namespace'
},
{
token: 'keyword.tag-operator',
open: 'operator',
close: 'end operator'
},
{
token: 'keyword.tag-property',
open: 'property',
close: 'end property'
},
{
token: 'keyword.tag-raiseevent',
open: 'raiseevent',
close: 'end raiseevent'
},
{
token: 'keyword.tag-removehandler',
open: 'removehandler',
close: 'end removehandler'
},
{ token: 'keyword.tag-select', open: 'select', close: 'end select' },
{ token: 'keyword.tag-set', open: 'set', close: 'end set' },
{
token: 'keyword.tag-structure',
open: 'structure',
close: 'end structure'
},
{ token: 'keyword.tag-sub', open: 'sub', close: 'end sub' },
{
token: 'keyword.tag-synclock',
open: 'synclock',
close: 'end synclock'
},
{ token: 'keyword.tag-try', open: 'try', close: 'end try' },
{ token: 'keyword.tag-while', open: 'while', close: 'end while' },
{ token: 'keyword.tag-with', open: 'with', close: 'end with' },
// Other pairs
{ token: 'keyword.tag-using', open: 'using', close: 'end using' },
{ token: 'keyword.tag-do', open: 'do', close: 'loop' },
{ token: 'keyword.tag-for', open: 'for', close: 'next' }
],
keywords: [
'AddHandler',
'AddressOf',
'Alias',
'And',
'AndAlso',
'As',
'Async',
'Boolean',
'ByRef',
'Byte',
'ByVal',
'Call',
'Case',
'Catch',
'CBool',
'CByte',
'CChar',
'CDate',
'CDbl',
'CDec',
'Char',
'CInt',
'Class',
'CLng',
'CObj',
'Const',
'Continue',
'CSByte',
'CShort',
'CSng',
'CStr',
'CType',
'CUInt',
'CULng',
'CUShort',
'Date',
'Decimal',
'Declare',
'Default',
'Delegate',
'Dim',
'DirectCast',
'Do',
'Double',
'Each',
'Else',
'ElseIf',
'End',
'EndIf',
'Enum',
'Erase',
'Error',
'Event',
'Exit',
'False',
'Finally',
'For',
'Friend',
'Function',
'Get',
'GetType',
'GetXMLNamespace',
'Global',
'GoSub',
'GoTo',
'Handles',
'If',
'Implements',
'Imports',
'In',
'Inherits',
'Integer',
'Interface',
'Is',
'IsNot',
'Let',
'Lib',
'Like',
'Long',
'Loop',
'Me',
'Mod',
'Module',
'MustInherit',
'MustOverride',
'MyBase',
'MyClass',
'NameOf',
'Namespace',
'Narrowing',
'New',
'Next',
'Not',
'Nothing',
'NotInheritable',
'NotOverridable',
'Object',
'Of',
'On',
'Operator',
'Option',
'Optional',
'Or',
'OrElse',
'Out',
'Overloads',
'Overridable',
'Overrides',
'ParamArray',
'Partial',
'Private',
'Property',
'Protected',
'Public',
'RaiseEvent',
'ReadOnly',
'ReDim',
'RemoveHandler',
'Resume',
'Return',
'SByte',
'Select',
'Set',
'Shadows',
'Shared',
'Short',
'Single',
'Static',
'Step',
'Stop',
'String',
'Structure',
'Sub',
'SyncLock',
'Then',
'Throw',
'To',
'True',
'Try',
'TryCast',
'TypeOf',
'UInteger',
'ULong',
'UShort',
'Using',
'Variant',
'Wend',
'When',
'While',
'Widening',
'With',
'WithEvents',
'WriteOnly',
'Xor'
],
tagwords: [
'If',
'Sub',
'Select',
'Try',
'Class',
'Enum',
'Function',
'Get',
'Interface',
'Module',
'Namespace',
'Operator',
'Set',
'Structure',
'Using',
'While',
'With',
'Do',
'Loop',
'For',
'Next',
'Property',
'Continue',
'AddHandler',
'RemoveHandler',
'Event',
'RaiseEvent',
'SyncLock'
],
// we include these common regular expressions
symbols: /[=><!~?;\.,:&|+\-*\/\^%]+/,
integersuffix: /U?[DI%L&S@]?/,
floatsuffix: /[R#F!]?/,
// The main tokenizer for our languages
tokenizer: {
root: [
// whitespace
{ include: '@whitespace' },
// special ending tag-words
[/next(?!\w)/, { token: 'keyword.tag-for' }],
[/loop(?!\w)/, { token: 'keyword.tag-do' }],
// usual ending tags
[
/end\s+(?!for|do)(addhandler|class|enum|event|function|get|if|interface|module|namespace|operator|property|raiseevent|removehandler|select|set|structure|sub|synclock|try|while|with|using)/,
{ token: 'keyword.tag-$1' }
],
// identifiers, tagwords, and keywords
[
/[a-zA-Z_]\w*/,
{
cases: {
'@tagwords': { token: 'keyword.tag-$0' },
'@keywords': { token: 'keyword.$0' },
'@default': 'identifier'
}
}
],
// Preprocessor directive
[/^\s*#\w+/, 'keyword'],
// numbers
[/\d*\d+e([\-+]?\d+)?(@floatsuffix)/, 'number.float'],
[/\d*\.\d+(e[\-+]?\d+)?(@floatsuffix)/, 'number.float'],
[/&H[0-9a-f]+(@integersuffix)/, 'number.hex'],
[/&0[0-7]+(@integersuffix)/, 'number.octal'],
[/\d+(@integersuffix)/, 'number'],
// date literal
[/#.*#/, 'number'],
// delimiters and operators
[/[{}()\[\]]/, '@brackets'],
[/@symbols/, 'delimiter'],
// strings
[/["\u201c\u201d]/, { token: 'string.quote', next: '@string' }]
],
whitespace: [
[/[ \t\r\n]+/, ''],
[/(\'|REM(?!\w)).*$/, 'comment']
],
string: [
[/[^"\u201c\u201d]+/, 'string'],
[/["\u201c\u201d]{2}/, 'string.escape'],
[/["\u201c\u201d]C?/, { token: 'string.quote', next: '@pop' }]
]
}
};
});

@ -0,0 +1,94 @@
/*---------------------------------------------------------------------------------------------
* 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/xml/xml',["require", "exports", "../fillers/monaco-editor-core"], function (require, exports, monaco_editor_core_1) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
comments: {
blockComment: ['<!--', '-->']
},
brackets: [['<', '>']],
autoClosingPairs: [
{ open: '<', close: '>' },
{ open: "'", close: "'" },
{ open: '"', close: '"' }
],
surroundingPairs: [
{ open: '<', close: '>' },
{ open: "'", close: "'" },
{ open: '"', close: '"' }
],
onEnterRules: [
{
beforeText: new RegExp("<([_:\\w][_:\\w-.\\d]*)([^/>]*(?!/)>)[^<]*$", 'i'),
afterText: /^<\/([_:\w][_:\w-.\d]*)\s*>$/i,
action: {
indentAction: monaco_editor_core_1.languages.IndentAction.IndentOutdent
}
},
{
beforeText: new RegExp("<(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$", 'i'),
action: { indentAction: monaco_editor_core_1.languages.IndentAction.Indent }
}
]
};
exports.language = {
defaultToken: '',
tokenPostfix: '.xml',
ignoreCase: true,
// Useful regular expressions
qualifiedName: /(?:[\w\.\-]+:)?[\w\.\-]+/,
tokenizer: {
root: [
[/[^<&]+/, ''],
{ include: '@whitespace' },
// Standard opening tag
[/(<)(@qualifiedName)/, [{ token: 'delimiter' }, { token: 'tag', next: '@tag' }]],
// Standard closing tag
[
/(<\/)(@qualifiedName)(\s*)(>)/,
[{ token: 'delimiter' }, { token: 'tag' }, '', { token: 'delimiter' }]
],
// Meta tags - instruction
[/(<\?)(@qualifiedName)/, [{ token: 'delimiter' }, { token: 'metatag', next: '@tag' }]],
// Meta tags - declaration
[/(<\!)(@qualifiedName)/, [{ token: 'delimiter' }, { token: 'metatag', next: '@tag' }]],
// CDATA
[/<\!\[CDATA\[/, { token: 'delimiter.cdata', next: '@cdata' }],
[/&\w+;/, 'string.escape']
],
cdata: [
[/[^\]]+/, ''],
[/\]\]>/, { token: 'delimiter.cdata', next: '@pop' }],
[/\]/, '']
],
tag: [
[/[ \t\r\n]+/, ''],
[/(@qualifiedName)(\s*=\s*)("[^"]*"|'[^']*')/, ['attribute.name', '', 'attribute.value']],
[
/(@qualifiedName)(\s*=\s*)("[^">?\/]*|'[^'>?\/]*)(?=[\?\/]\>)/,
['attribute.name', '', 'attribute.value']
],
[/(@qualifiedName)(\s*=\s*)("[^">]*|'[^'>]*)/, ['attribute.name', '', 'attribute.value']],
[/@qualifiedName/, 'attribute.name'],
[/\?>/, { token: 'delimiter', next: '@pop' }],
[/(\/)(>)/, [{ token: 'tag' }, { token: 'delimiter', next: '@pop' }]],
[/>/, { token: 'delimiter', next: '@pop' }]
],
whitespace: [
[/[ \t\r\n]+/, ''],
[/<!--/, { token: 'comment', next: '@comment' }]
],
comment: [
[/[^<\-]+/, 'comment.content'],
[/-->/, { token: 'comment', next: '@pop' }],
[/<!--/, 'comment.content.invalid'],
[/[<\-]/, 'comment.content']
]
}
};
});

@ -0,0 +1,193 @@
define('vs/basic-languages/yaml/yaml',["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.language = exports.conf = void 0;
exports.conf = {
comments: {
lineComment: '#'
},
brackets: [
['{', '}'],
['[', ']'],
['(', ')']
],
autoClosingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
surroundingPairs: [
{ open: '{', close: '}' },
{ open: '[', close: ']' },
{ open: '(', close: ')' },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
folding: {
offSide: true
}
};
exports.language = {
tokenPostfix: '.yaml',
brackets: [
{ token: 'delimiter.bracket', open: '{', close: '}' },
{ token: 'delimiter.square', open: '[', close: ']' }
],
keywords: ['true', 'True', 'TRUE', 'false', 'False', 'FALSE', 'null', 'Null', 'Null', '~'],
numberInteger: /(?:0|[+-]?[0-9]+)/,
numberFloat: /(?:0|[+-]?[0-9]+)(?:\.[0-9]+)?(?:e[-+][1-9][0-9]*)?/,
numberOctal: /0o[0-7]+/,
numberHex: /0x[0-9a-fA-F]+/,
numberInfinity: /[+-]?\.(?:inf|Inf|INF)/,
numberNaN: /\.(?:nan|Nan|NAN)/,
numberDate: /\d{4}-\d\d-\d\d([Tt ]\d\d:\d\d:\d\d(\.\d+)?(( ?[+-]\d\d?(:\d\d)?)|Z)?)?/,
escapes: /\\(?:[btnfr\\"']|[0-7][0-7]?|[0-3][0-7]{2})/,
tokenizer: {
root: [
{ include: '@whitespace' },
{ include: '@comment' },
// Directive
[/%[^ ]+.*$/, 'meta.directive'],
// Document Markers
[/---/, 'operators.directivesEnd'],
[/\.{3}/, 'operators.documentEnd'],
// Block Structure Indicators
[/[-?:](?= )/, 'operators'],
{ include: '@anchor' },
{ include: '@tagHandle' },
{ include: '@flowCollections' },
{ include: '@blockStyle' },
// Numbers
[/@numberInteger(?![ \t]*\S+)/, 'number'],
[/@numberFloat(?![ \t]*\S+)/, 'number.float'],
[/@numberOctal(?![ \t]*\S+)/, 'number.octal'],
[/@numberHex(?![ \t]*\S+)/, 'number.hex'],
[/@numberInfinity(?![ \t]*\S+)/, 'number.infinity'],
[/@numberNaN(?![ \t]*\S+)/, 'number.nan'],
[/@numberDate(?![ \t]*\S+)/, 'number.date'],
// Key:Value pair
[/(".*?"|'.*?'|.*?)([ \t]*)(:)( |$)/, ['type', 'white', 'operators', 'white']],
{ include: '@flowScalars' },
// String nodes
[
/[^#]+/,
{
cases: {
'@keywords': 'keyword',
'@default': 'string'
}
}
]
],
// Flow Collection: Flow Mapping
object: [
{ include: '@whitespace' },
{ include: '@comment' },
// Flow Mapping termination
[/\}/, '@brackets', '@pop'],
// Flow Mapping delimiter
[/,/, 'delimiter.comma'],
// Flow Mapping Key:Value delimiter
[/:(?= )/, 'operators'],
// Flow Mapping Key:Value key
[/(?:".*?"|'.*?'|[^,\{\[]+?)(?=: )/, 'type'],
// Start Flow Style
{ include: '@flowCollections' },
{ include: '@flowScalars' },
// Scalar Data types
{ include: '@tagHandle' },
{ include: '@anchor' },
{ include: '@flowNumber' },
// Other value (keyword or string)
[
/[^\},]+/,
{
cases: {
'@keywords': 'keyword',
'@default': 'string'
}
}
]
],
// Flow Collection: Flow Sequence
array: [
{ include: '@whitespace' },
{ include: '@comment' },
// Flow Sequence termination
[/\]/, '@brackets', '@pop'],
// Flow Sequence delimiter
[/,/, 'delimiter.comma'],
// Start Flow Style
{ include: '@flowCollections' },
{ include: '@flowScalars' },
// Scalar Data types
{ include: '@tagHandle' },
{ include: '@anchor' },
{ include: '@flowNumber' },
// Other value (keyword or string)
[
/[^\],]+/,
{
cases: {
'@keywords': 'keyword',
'@default': 'string'
}
}
]
],
// First line of a Block Style
multiString: [[/^( +).+$/, 'string', '@multiStringContinued.$1']],
// Further lines of a Block Style
// Workaround for indentation detection
multiStringContinued: [
[
/^( *).+$/,
{
cases: {
'$1==$S2': 'string',
'@default': { token: '@rematch', next: '@popall' }
}
}
]
],
whitespace: [[/[ \t\r\n]+/, 'white']],
// Only line comments
comment: [[/#.*$/, 'comment']],
// Start Flow Collections
flowCollections: [
[/\[/, '@brackets', '@array'],
[/\{/, '@brackets', '@object']
],
// Start Flow Scalars (quoted strings)
flowScalars: [
[/"([^"\\]|\\.)*$/, 'string.invalid'],
[/'([^'\\]|\\.)*$/, 'string.invalid'],
[/'[^']*'/, 'string'],
[/"/, 'string', '@doubleQuotedString']
],
doubleQuotedString: [
[/[^\\"]+/, 'string'],
[/@escapes/, 'string.escape'],
[/\\./, 'string.escape.invalid'],
[/"/, 'string', '@pop']
],
// Start Block Scalar
blockStyle: [[/[>|][0-9]*[+-]?$/, 'operators', '@multiString']],
// Numbers in Flow Collections (terminate with ,]})
flowNumber: [
[/@numberInteger(?=[ \t]*[,\]\}])/, 'number'],
[/@numberFloat(?=[ \t]*[,\]\}])/, 'number.float'],
[/@numberOctal(?=[ \t]*[,\]\}])/, 'number.octal'],
[/@numberHex(?=[ \t]*[,\]\}])/, 'number.hex'],
[/@numberInfinity(?=[ \t]*[,\]\}])/, 'number.infinity'],
[/@numberNaN(?=[ \t]*[,\]\}])/, 'number.nan'],
[/@numberDate(?=[ \t]*[,\]\}])/, 'number.date']
],
tagHandle: [[/\![^ ]*/, 'tag']],
anchor: [[/[&*][^ ]+/, 'namespace']]
}
};
});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save