1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 | function 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 |
|
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 |
|
170 | export { dos as default };
|