bat.js 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. /*!-----------------------------------------------------------------------------
  2. * Copyright (c) Microsoft Corporation. All rights reserved.
  3. * Version: 0.31.1(337587859b1c171314b40503171188b6cea6a32a)
  4. * Released under the MIT license
  5. * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
  6. *-----------------------------------------------------------------------------*/
  7. // src/basic-languages/bat/bat.ts
  8. var conf = {
  9. comments: {
  10. lineComment: "REM"
  11. },
  12. brackets: [
  13. ["{", "}"],
  14. ["[", "]"],
  15. ["(", ")"]
  16. ],
  17. autoClosingPairs: [
  18. { open: "{", close: "}" },
  19. { open: "[", close: "]" },
  20. { open: "(", close: ")" },
  21. { open: '"', close: '"' }
  22. ],
  23. surroundingPairs: [
  24. { open: "[", close: "]" },
  25. { open: "(", close: ")" },
  26. { open: '"', close: '"' }
  27. ],
  28. folding: {
  29. markers: {
  30. start: new RegExp("^\\s*(::\\s*|REM\\s+)#region"),
  31. end: new RegExp("^\\s*(::\\s*|REM\\s+)#endregion")
  32. }
  33. }
  34. };
  35. var language = {
  36. defaultToken: "",
  37. ignoreCase: true,
  38. tokenPostfix: ".bat",
  39. brackets: [
  40. { token: "delimiter.bracket", open: "{", close: "}" },
  41. { token: "delimiter.parenthesis", open: "(", close: ")" },
  42. { token: "delimiter.square", open: "[", close: "]" }
  43. ],
  44. keywords: /call|defined|echo|errorlevel|exist|for|goto|if|pause|set|shift|start|title|not|pushd|popd/,
  45. symbols: /[=><!~?&|+\-*\/\^;\.,]+/,
  46. escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
  47. tokenizer: {
  48. root: [
  49. [/^(\s*)(rem(?:\s.*|))$/, ["", "comment"]],
  50. [/(\@?)(@keywords)(?!\w)/, [{ token: "keyword" }, { token: "keyword.$2" }]],
  51. [/[ \t\r\n]+/, ""],
  52. [/setlocal(?!\w)/, "keyword.tag-setlocal"],
  53. [/endlocal(?!\w)/, "keyword.tag-setlocal"],
  54. [/[a-zA-Z_]\w*/, ""],
  55. [/:\w*/, "metatag"],
  56. [/%[^%]+%/, "variable"],
  57. [/%%[\w]+(?!\w)/, "variable"],
  58. [/[{}()\[\]]/, "@brackets"],
  59. [/@symbols/, "delimiter"],
  60. [/\d*\.\d+([eE][\-+]?\d+)?/, "number.float"],
  61. [/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/, "number.hex"],
  62. [/\d+/, "number"],
  63. [/[;,.]/, "delimiter"],
  64. [/"/, "string", '@string."'],
  65. [/'/, "string", "@string.'"]
  66. ],
  67. string: [
  68. [
  69. /[^\\"'%]+/,
  70. {
  71. cases: {
  72. "@eos": { token: "string", next: "@popall" },
  73. "@default": "string"
  74. }
  75. }
  76. ],
  77. [/@escapes/, "string.escape"],
  78. [/\\./, "string.escape.invalid"],
  79. [/%[\w ]+%/, "variable"],
  80. [/%%[\w]+(?!\w)/, "variable"],
  81. [
  82. /["']/,
  83. {
  84. cases: {
  85. "$#==$S2": { token: "string", next: "@pop" },
  86. "@default": "string"
  87. }
  88. }
  89. ],
  90. [/$/, "string", "@popall"]
  91. ]
  92. }
  93. };
  94. export {
  95. conf,
  96. language
  97. };