UNPKG

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