UNPKG

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