dos.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. /*
  2. Language: Batch file (DOS)
  3. Author: Alexander Makarov <sam@rmcreative.ru>
  4. Contributors: Anton Kochkov <anton.kochkov@gmail.com>
  5. Website: https://en.wikipedia.org/wiki/Batch_file
  6. */
  7. /** @type LanguageFn */
  8. function dos(hljs) {
  9. const COMMENT = hljs.COMMENT(
  10. /^\s*@?rem\b/, /$/,
  11. { relevance: 10 }
  12. );
  13. const LABEL = {
  14. className: 'symbol',
  15. begin: '^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)',
  16. relevance: 0
  17. };
  18. const KEYWORDS = [
  19. "if",
  20. "else",
  21. "goto",
  22. "for",
  23. "in",
  24. "do",
  25. "call",
  26. "exit",
  27. "not",
  28. "exist",
  29. "errorlevel",
  30. "defined",
  31. "equ",
  32. "neq",
  33. "lss",
  34. "leq",
  35. "gtr",
  36. "geq"
  37. ];
  38. const BUILT_INS = [
  39. "prn",
  40. "nul",
  41. "lpt3",
  42. "lpt2",
  43. "lpt1",
  44. "con",
  45. "com4",
  46. "com3",
  47. "com2",
  48. "com1",
  49. "aux",
  50. "shift",
  51. "cd",
  52. "dir",
  53. "echo",
  54. "setlocal",
  55. "endlocal",
  56. "set",
  57. "pause",
  58. "copy",
  59. "append",
  60. "assoc",
  61. "at",
  62. "attrib",
  63. "break",
  64. "cacls",
  65. "cd",
  66. "chcp",
  67. "chdir",
  68. "chkdsk",
  69. "chkntfs",
  70. "cls",
  71. "cmd",
  72. "color",
  73. "comp",
  74. "compact",
  75. "convert",
  76. "date",
  77. "dir",
  78. "diskcomp",
  79. "diskcopy",
  80. "doskey",
  81. "erase",
  82. "fs",
  83. "find",
  84. "findstr",
  85. "format",
  86. "ftype",
  87. "graftabl",
  88. "help",
  89. "keyb",
  90. "label",
  91. "md",
  92. "mkdir",
  93. "mode",
  94. "more",
  95. "move",
  96. "path",
  97. "pause",
  98. "print",
  99. "popd",
  100. "pushd",
  101. "promt",
  102. "rd",
  103. "recover",
  104. "rem",
  105. "rename",
  106. "replace",
  107. "restore",
  108. "rmdir",
  109. "shift",
  110. "sort",
  111. "start",
  112. "subst",
  113. "time",
  114. "title",
  115. "tree",
  116. "type",
  117. "ver",
  118. "verify",
  119. "vol",
  120. // winutils
  121. "ping",
  122. "net",
  123. "ipconfig",
  124. "taskkill",
  125. "xcopy",
  126. "ren",
  127. "del"
  128. ];
  129. return {
  130. name: 'Batch file (DOS)',
  131. aliases: [
  132. 'bat',
  133. 'cmd'
  134. ],
  135. case_insensitive: true,
  136. illegal: /\/\*/,
  137. keywords: {
  138. keyword: KEYWORDS,
  139. built_in: BUILT_INS
  140. },
  141. contains: [
  142. {
  143. className: 'variable',
  144. begin: /%%[^ ]|%[^ ]+?%|![^ ]+?!/
  145. },
  146. {
  147. className: 'function',
  148. begin: LABEL.begin,
  149. end: 'goto:eof',
  150. contains: [
  151. hljs.inherit(hljs.TITLE_MODE, { begin: '([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*' }),
  152. COMMENT
  153. ]
  154. },
  155. {
  156. className: 'number',
  157. begin: '\\b\\d+',
  158. relevance: 0
  159. },
  160. COMMENT
  161. ]
  162. };
  163. }
  164. module.exports = dos;