/* Language: Batch file (DOS) Author: Alexander Makarov Contributors: Anton Kochkov Website: https://en.wikipedia.org/wiki/Batch_file */ /** @type LanguageFn */ function dos(hljs) { const COMMENT = hljs.COMMENT( /^\s*@?rem\b/, /$/, { relevance: 10 } ); const LABEL = { className: 'symbol', begin: '^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)', relevance: 0 }; return { name: 'Batch file (DOS)', aliases: [ 'bat', 'cmd' ], case_insensitive: true, illegal: /\/\*/, keywords: { keyword: 'if else goto for in do call exit not exist errorlevel defined ' + 'equ neq lss leq gtr geq', built_in: 'prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux ' + 'shift cd dir echo setlocal endlocal set pause copy ' + 'append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color ' + 'comp compact convert date dir diskcomp diskcopy doskey erase fs ' + 'find findstr format ftype graftabl help keyb label md mkdir mode more move path ' + 'pause print popd pushd promt rd recover rem rename replace restore rmdir shift ' + 'sort start subst time title tree type ver verify vol ' + // winutils 'ping net ipconfig taskkill xcopy ren del' }, contains: [ { className: 'variable', begin: /%%[^ ]|%[^ ]+?%|![^ ]+?!/ }, { className: 'function', begin: LABEL.begin, end: 'goto:eof', contains: [ hljs.inherit(hljs.TITLE_MODE, { begin: '([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*' }), COMMENT ] }, { className: 'number', begin: '\\b\\d+', relevance: 0 }, COMMENT ] }; } module.exports = dos;