---input---
@ @@ echo off
::This is an example of the Windows batch language.

setlocal EnableDelayedExpansion
(cls)
set/a^
_te^
sts^
=0,^
_"pa"^
ssed=0^
0
set,/a title= Batch test
title=%,/a title%
echo^ %~nx0,^ the>,con comprehensive testing suite
ver
echo(

if cmdextversion 2 goto =)
goto :fail

     :)
echo Starting tests at:
date/t & time/t
echo(

if '%*'=='--help' (
  echo Usage: %~nx0 [--help]
  echo   --help: Display this help message and quit.
  shift
  goto :exit comment) else rem

(call :comments)
call ::io+x
call:control:x
call::internal x

:exit
if /i !_tests!==!_passed! (
  color 02
) else if !*==* (
  color c
  if not defined _exit^
Code set _exit^
Code=1
)
set _percentage=NaN
if defined _tests (
  if !_tests! neq 0 (set/a_percentage=100*_passed/_tests)
)
echo(
if !_percentage!==NaN ( echo(There were no tests^^! & color e
) else ( echo Tests passed: %_passed%/%_tests% (%_percentage%%%^) )
pause
color
title
endlocal
exit /b %_exitCode%

x:fail
rem This should never happen.
echo Internal error 1>& 269105>>&2
set /a _exitCode=0x69+(0105*1000)
break
goto :exit

:comments
(rem )/?
)
rem "comment^
(rem.) & set /a _tests+=1
(rem) & goto :fail
(rem. ) & (rem. comment ) & echo Test %_tests%: Comments
rem )
)
)|comment
)(
:: comment
goto :comments^^1:comment
:comments^^1 comment
if(1==1) goto :comments^
^1
rem^ /?
rem ^
^
goto :comments^
2+comment
goto :fail
:comments2
rem >^
if 1==1 (goto :comments3)
:comments3)
goto :fail
:comments3
rem comment^
goto:fail
rem.comment comment^
goto fail
rem "comment comment"^
goto fail
rem comment comment^
if "1==1" equ "1==1" goto comments4
goto fail
:comments4
rem comment"comment^
set /a _passed+=1
GOTO :EOF
goto :fail

:IO
SET /A _tests+=1 & Echo Test !_tests:*!==^!: I/O
verify on
pushd .
if exist temp echo  temp already exists. & goto :eof
md temp
cd temp
mkdir 2>nul temp
chdir temp
>cd  echo Checking drive...
>>cd echo must be C or else this won't work
for /f "tokens=* usebackq" %%G in ("cd
) do (<nul set /p="%%G ")
echo(
DEL cd
if not "%cd:~0,3%"=="C:\" (
  call call echo  Wrong drive (should be C^):
  vol
  goto :test)
>test0^
.bat echo rem Machine-generated; do not edit
call echo set /a _passed+=1 >>test0.bat
type test0.bat >"test 1.bat
ren "test 1.bat" test2.bat
rename test2.bat test.bat
caLL ^
C:test
del test.bat 2>nul
2>NUL erase test0.bat
popd
rd temp\temp
rmdir temp
VERIFY OFF
goto:eof

:control
set /a _tests+=1
echo Test %_tests%: Control statements
set "_iterations=0">nul
for %%G in (,+,,-,
) do @(
  for /l %%H in (,-1;;-1	-3,) do (
    for /f tokens^=1-2^,5 %%I in ("2 %%H _ _ 10") do (
      for /f "tokens=1 usebackq" %%L in ( `echo %%G%%J ``` `
`  `    ) do ( for /f "tokens=2" %%M in ('echo ' %%L0 '
'  '      ) do ( set /a _iterations+=(%%M%%M^)
        )
      )
    )
  )
)
if exist %~nx0 if not exist %~nx0 goto :fail
if exist %~nx0 (
  if not exist %~nx0 goto :fail
) else (
  if exist %~nx0 goto :fail
)
if /i %_iterations% gtr -2 (
  if /i %_iterations% geq -1 (
    if /i %_iterations% lss 1 (
      if /i %_iterations% leq 0 (
        if /i %_iterations% equ 0 (
          if 1 equ 01 (
            if 1 neq "01" (
              if "1" neq 01 (
                set /a _passed+=1))))))))
) comment
goto :eof

:internal
set /a _tests+=1
echo Test %_tests%: Internal commands
keys on
mklink 2>nul
>nul path %path%
>nul dpath %dpath%
if not defined prompt prompt $P$G
prompt !prompt:~!rem/ $H?
echo on
rem/?
@echo off
rem(/?>nul
rem )/? >nul
(rem (/?) >nul
rem /?>nul
rem^/?>nul
if/?>nul || if^/^?>nul || if /?>nul || if x/? >nul
for/?>nul && for^/^?>nul && for /?>nul && for x/? >nul && for /?x >nul
goto/?>nul && goto^/? && goto^ /? && goto /^
? && goto /?>nul && goto:/? >nul && goto ) /? ) >nul && (goto /? )>nul
=set+;/p extension'),=.bat
for /f "tokens=2 delims==" %%G in ( 'assoc %+;/p extension'),%'
 ) do (
  assoc 2>nul %+;/p extension'),:*.=.%=%%G
  ftype 1>nul %%G
) &>nul ver
if errorlevel 0 if not errorlevel 1 set /a _passed+=1
goto :eof
FOR /F %%a IN ('%%c%%') DO %%a
rem %x% %x% %x% %x% %x% %x% %x% %x% %x% %x% %x% %x% %x% %x% %x% %x%
:/?
goto :fail

---tokens---
'@'           Punctuation
' '           Text
'@@'          Punctuation
' '           Text
'echo'        Keyword
' '           Text
'off'         Text
''            Text
'\n'          Text

''            Text
':'           Punctuation
':This is an example of the Windows batch language.' Comment.Single
''            Text
'\n\n'        Text

'setlocal'    Keyword
' '           Text
'EnableDelayedExpansion' Text
''            Text
'\n'          Text

'('           Punctuation
'cls'         Keyword
''            Text
')'           Punctuation
'\n'          Text

'set'         Keyword
'/a'          Keyword
'^\n_'        Literal.String.Escape
'te'          Name.Variable
'^\ns'        Literal.String.Escape
'ts'          Name.Variable
'^\n='        Literal.String.Escape
'0'           Name.Variable
','           Punctuation
'^\n_'        Literal.String.Escape
'"'           Literal.String.Double
'pa'          Literal.String.Double
'"'           Literal.String.Double
'^\ns'        Literal.String.Escape
'sed'         Name.Variable
'='           Operator
'0'           Literal.Number.Integer
'^\n0'        Literal.String.Escape
''            Text
'\n'          Text

'set'         Keyword
',/a title'   Name.Variable
'='           Punctuation
' '           Text
'Batch'       Text
' '           Text
'test'        Text
''            Text
'\n'          Text

'title'       Keyword
'='           Text
'%,/a title%' Name.Variable
''            Text
'\n'          Text

'echo'        Keyword
'^ '          Literal.String.Escape
'%~nx0'       Name.Variable
','           Text
'^ '          Literal.String.Escape
'the'         Text
'>'           Punctuation
','           Text
'con'         Text
' '           Text
'comprehensive' Text
' '           Text
'testing'     Text
' '           Text
'suite'       Text
''            Text
'\n'          Text

'ver'         Keyword
''            Text
'\n'          Text

'echo'        Keyword
'('           Text
''            Text
'\n\n'        Text

'if'          Keyword
' '           Text
'cmdextversion' Keyword
' '           Text
'2'           Literal.Number.Integer
' '           Text
'goto'        Keyword
' '           Text
'='           Text
')'           Name.Label
'\n'          Text

'goto'        Keyword
' '           Text
':'           Punctuation
'fail'        Name.Label
'\n\n'        Text

''            Text
'     '       Text
':'           Punctuation
')'           Name.Label
''            Text
'\n'          Text

'echo'        Keyword
' '           Text
'Starting'    Text
' '           Text
'tests'       Text
' '           Text
'at:'         Text
''            Text
'\n'          Text

'date'        Keyword
'/t'          Text
' '           Text
'&'           Punctuation
' '           Text
'time'        Keyword
'/t'          Text
''            Text
'\n'          Text

'echo'        Keyword
'('           Text
''            Text
'\n\n'        Text

'if'          Keyword
' '           Text
"'"           Text
'%*'          Name.Variable
"'"           Text
'=='          Operator
"'--help'"    Text
' '           Text
'('           Punctuation
'\n'          Text

' '           Text
' '           Text
'echo'        Keyword
' '           Text
'Usage:'      Text
' '           Text
'%~nx0'       Name.Variable
' '           Text
'[--help]'    Text
''            Text
'\n'          Text

' '           Text
' '           Text
'echo'        Keyword
' '           Text
' '           Text
' '           Text
'--help:'     Text
' '           Text
'Display'     Text
' '           Text
'this'        Text
' '           Text
'help'        Text
' '           Text
'message'     Text
' '           Text
'and'         Text
' '           Text
'quit.'       Text
''            Text
'\n'          Text

' '           Text
' '           Text
'shift'       Keyword
''            Text
'\n'          Text

' '           Text
' '           Text
'goto'        Keyword
' '           Text
':'           Punctuation
'exit'        Name.Label
' comment'    Comment.Single
')'           Punctuation
' '           Text
'else'        Keyword
' '           Text
'rem'         Comment.Single
''            Text
'\n\n'        Text

'('           Punctuation
'call'        Keyword
' '           Text
':'           Punctuation
'comments'    Name.Label
')'           Punctuation
'\n'          Text

'call'        Keyword
' '           Text
':'           Punctuation
':'           Punctuation
'io'          Name.Label
'+x'          Text
''            Text
'\n'          Text

'call'        Keyword
':'           Punctuation
'control'     Name.Label
':x'          Text
''            Text
'\n'          Text

'call'        Keyword
':'           Punctuation
':'           Punctuation
'internal'    Name.Label
' '           Text
'x'           Text
''            Text
'\n\n'        Text

''            Text
':'           Punctuation
'exit'        Name.Label
''            Text
'\n'          Text

'if'          Keyword
' '           Text
'/i'          Keyword
' '           Text
'!_tests!'    Name.Variable
'=='          Operator
'!_passed!'   Name.Variable
' '           Text
'('           Punctuation
'\n'          Text

' '           Text
' '           Text
'color'       Keyword
' '           Text
'0'           Text
'2'           Text
''            Text
'\n'          Text

')'           Punctuation
' '           Text
'else'        Keyword
' '           Text
'if'          Keyword
' '           Text
'!*'          Text
'=='          Operator
'*'           Text
' '           Text
'('           Punctuation
'\n'          Text

' '           Text
' '           Text
'color'       Keyword
' '           Text
'c'           Text
''            Text
'\n'          Text

' '           Text
' '           Text
'if'          Keyword
' '           Text
'not'         Keyword
' '           Text
'defined'     Keyword
' '           Text
'_exit'       Name.Variable
'^\nC'        Literal.String.Escape
'ode'         Name.Variable
' '           Text
'set'         Keyword
' '           Text
'_exit'       Name.Variable
'^\nC'        Literal.String.Escape
'ode'         Name.Variable
'='           Punctuation
'1'           Text
''            Text
'\n'          Text

')'           Punctuation
'\n'          Text

'set'         Keyword
' '           Text
'_percentage' Name.Variable
'='           Punctuation
'NaN'         Text
''            Text
'\n'          Text

'if'          Keyword
' '           Text
'defined'     Keyword
' '           Text
'_tests'      Name.Variable
' '           Text
'('           Punctuation
'\n'          Text

' '           Text
' '           Text
'if'          Keyword
' '           Text
'!_tests!'    Name.Variable
' '           Text
'neq'         Operator.Word
' '           Text
'0'           Text
' '           Text
'('           Punctuation
'set'         Keyword
'/a'          Keyword
'_percentage' Name.Variable
'='           Operator
'100'         Literal.Number.Integer
'*'           Operator
'_passed'     Name.Variable
'/'           Operator
'_tests'      Name.Variable
''            Text
')'           Punctuation
'\n'          Text

')'           Punctuation
'\n'          Text

'echo'        Keyword
'('           Text
''            Text
'\n'          Text

'if'          Keyword
' '           Text
'!_percentage!' Name.Variable
'=='          Operator
'NaN'         Text
' '           Text
'('           Punctuation
' '           Text
'echo'        Keyword
'(There'      Text
' '           Text
'were'        Text
' '           Text
'no'          Text
' '           Text
'tests'       Text
'^^!'         Literal.String.Escape
' '           Text
'&'           Punctuation
' '           Text
'color'       Keyword
' '           Text
'e'           Text
''            Text
'\n'          Text

')'           Punctuation
' '           Text
'else'        Keyword
' '           Text
'('           Punctuation
' '           Text
'echo'        Keyword
' '           Text
'Tests'       Text
' '           Text
'passed:'     Text
' '           Text
'%_passed%'   Name.Variable
'/'           Text
'%_tests%'    Name.Variable
' '           Text
'('           Text
'%_percentage%' Name.Variable
'%%'          Literal.String.Escape
'^)'          Literal.String.Escape
' '           Text
''            Text
')'           Punctuation
'\n'          Text

'pause'       Keyword
''            Text
'\n'          Text

'color'       Keyword
''            Text
'\n'          Text

'title'       Keyword
''            Text
'\n'          Text

'endlocal'    Keyword
''            Text
'\n'          Text

'exit'        Keyword
' '           Text
'/b'          Text
' '           Text
'%_exitCode%' Name.Variable
''            Text
'\n\n'        Text

''            Text
'x'           Text
':'           Punctuation
'fail'        Name.Label
''            Text
'\n'          Text

'rem This should never happen.' Comment.Single
''            Text
'\n'          Text

'echo'        Keyword
' '           Text
'Internal'    Text
' '           Text
'error'       Text
' '           Text
'1'           Literal.Number.Integer
'>&'          Punctuation
' '           Text
'2'           Literal.Number.Integer
'6'           Text
'9'           Text
'1'           Text
'0'           Text
'5'           Text
'>>&'         Punctuation
'2'           Literal.Number.Integer
''            Text
'\n'          Text

'set'         Keyword
' '           Text
'/a'          Keyword
' '           Text
'_exitCode'   Name.Variable
'='           Operator
'0x69'        Literal.Number.Hex
'+'           Operator
'('           Punctuation
'0105'        Literal.Number.Oct
'*'           Operator
'1000'        Literal.Number.Integer
')'           Punctuation
''            Text
'\n'          Text

'break'       Keyword
''            Text
'\n'          Text

'goto'        Keyword
' '           Text
':'           Punctuation
'exit'        Name.Label
'\n\n'        Text

''            Text
':'           Punctuation
'comments'    Name.Label
''            Text
'\n'          Text

'('           Punctuation
'rem )/?'     Comment.Single
''            Text
'\n'          Text

')'           Punctuation
'\n'          Text

'rem "comment^' Comment.Single
''            Text
'\n'          Text

'('           Punctuation
'rem.'        Comment.Single
''            Text
')'           Punctuation
' '           Text
'&'           Punctuation
' '           Text
'set'         Keyword
' '           Text
'/a'          Keyword
' '           Text
'_tests'      Name.Variable
'+='          Operator
'1'           Literal.Number.Integer
''            Text
'\n'          Text

'('           Punctuation
'rem) & goto :fail' Comment.Single
''            Text
'\n'          Text

'('           Punctuation
'rem. '       Comment.Single
''            Text
')'           Punctuation
' '           Text
'&'           Punctuation
' '           Text
'('           Punctuation
'rem. comment ' Comment.Single
''            Text
')'           Punctuation
' '           Text
'&'           Punctuation
' '           Text
'echo'        Keyword
' '           Text
'Test'        Text
' '           Text
'%_tests%'    Name.Variable
':'           Text
' '           Text
'Comments'    Text
''            Text
'\n'          Text

'rem )'       Comment.Single
''            Text
'\n'          Text

')'           Punctuation
'\n'          Text

')|comment'   Comment.Single
'\n'          Text

')('          Comment.Single
'\n'          Text

''            Text
':'           Punctuation
': comment'   Comment.Single
''            Text
'\n'          Text

'goto'        Keyword
' '           Text
':'           Punctuation
'comments^^1' Name.Label
':comment'    Comment.Single
'\n'          Text

''            Text
':'           Punctuation
'comments^^1' Name.Label
' comment'    Comment.Single
''            Text
'\n'          Text

'if'          Keyword
'('           Text
'1'           Text
'=='          Operator
'1'           Text
')'           Text
' '           Text
'goto'        Keyword
' '           Text
':'           Punctuation
'comments^\n^1' Name.Label
'\n'          Text

'rem^ /?'     Comment.Single
''            Text
'\n'          Text

'rem ^\n^'    Comment.Single
''            Text
'\n'          Text

'goto'        Keyword
' '           Text
':'           Punctuation
'comments^\n2' Name.Label
'+comment'    Comment.Single
'\n'          Text

'goto'        Keyword
' '           Text
':'           Punctuation
'fail'        Name.Label
'\n'          Text

''            Text
':'           Punctuation
'comments2'   Name.Label
''            Text
'\n'          Text

'rem >^'      Comment.Single
''            Text
'\n'          Text

'if'          Keyword
' '           Text
'1'           Text
'=='          Operator
'1'           Text
' '           Text
'('           Punctuation
'goto'        Keyword
' '           Text
':'           Punctuation
'comments3'   Name.Label
')'           Punctuation
'\n'          Text

''            Text
':'           Punctuation
'comments3)'  Name.Label
''            Text
'\n'          Text

'goto'        Keyword
' '           Text
':'           Punctuation
'fail'        Name.Label
'\n'          Text

''            Text
':'           Punctuation
'comments3'   Name.Label
''            Text
'\n'          Text

'rem comment^\ngoto:fail' Comment.Single
''            Text
'\n'          Text

'rem.comment comment^\ngoto fail' Comment.Single
''            Text
'\n'          Text

'rem "comment comment"^\ngoto fail' Comment.Single
''            Text
'\n'          Text

'rem comment comment^' Comment.Single
''            Text
'\n'          Text

'if'          Keyword
' '           Text
'"'           Literal.String.Double
'1==1'        Literal.String.Double
'"'           Literal.String.Double
' '           Text
'equ'         Operator.Word
' '           Text
'"'           Literal.String.Double
'1==1'        Literal.String.Double
'"'           Literal.String.Double
' '           Text
'goto'        Keyword
' '           Text
'comments4'   Name.Label
'\n'          Text

'goto'        Keyword
' '           Text
'fail'        Name.Label
'\n'          Text

''            Text
':'           Punctuation
'comments4'   Name.Label
''            Text
'\n'          Text

'rem comment"comment^' Comment.Single
''            Text
'\n'          Text

'set'         Keyword
' '           Text
'/a'          Keyword
' '           Text
'_passed'     Name.Variable
'+='          Operator
'1'           Literal.Number.Integer
''            Text
'\n'          Text

'GOTO'        Keyword
' '           Text
':'           Punctuation
'EOF'         Name.Label
'\n'          Text

'goto'        Keyword
' '           Text
':'           Punctuation
'fail'        Name.Label
'\n\n'        Text

''            Text
':'           Punctuation
'IO'          Name.Label
''            Text
'\n'          Text

'SET'         Keyword
' '           Text
'/A'          Keyword
' '           Text
'_tests'      Name.Variable
'+='          Operator
'1'           Literal.Number.Integer
' '           Text
''            Text
'&'           Punctuation
' '           Text
'Echo'        Keyword
' '           Text
'Test'        Text
' '           Text
'!_tests:*!==^!' Name.Variable
':'           Text
' '           Text
'I/O'         Text
''            Text
'\n'          Text

'verify'      Keyword
' '           Text
'on'          Text
''            Text
'\n'          Text

'pushd'       Keyword
' '           Text
'.'           Text
''            Text
'\n'          Text

'if'          Keyword
' '           Text
'exist'       Keyword
' '           Text
'temp'        Text
' '           Text
'echo'        Keyword
' '           Text
' '           Text
'temp'        Text
' '           Text
'already'     Text
' '           Text
'exists.'     Text
' '           Text
'&'           Punctuation
' '           Text
'goto'        Keyword
' '           Text
':'           Punctuation
'eof'         Name.Label
'\n'          Text

'md'          Keyword
' '           Text
'temp'        Text
''            Text
'\n'          Text

'cd'          Keyword
' '           Text
'temp'        Text
''            Text
'\n'          Text

'mkdir'       Keyword
' '           Text
'2'           Literal.Number.Integer
'>'           Punctuation
'nul'         Text
' '           Text
'temp'        Text
''            Text
'\n'          Text

'chdir'       Keyword
' '           Text
'temp'        Text
''            Text
'\n'          Text

'>'           Punctuation
'cd'          Text
' '           Text
' '           Text
'echo'        Keyword
' '           Text
'Checking'    Text
' '           Text
'drive...'    Text
''            Text
'\n'          Text

'>>'          Punctuation
'cd'          Text
' '           Text
'echo'        Keyword
' '           Text
'must'        Text
' '           Text
'be'          Text
' '           Text
'C'           Text
' '           Text
'or'          Text
' '           Text
'else'        Text
' '           Text
'this'        Text
' '           Text
"won't"       Text
' '           Text
'work'        Text
''            Text
'\n'          Text

'for'         Keyword
' '           Text
'/f'          Keyword
' '           Text
'"'           Literal.String.Double
'tokens=* usebackq' Literal.String.Double
'"'           Literal.String.Double
' '           Text
'%%'          Literal.String.Escape
'G'           Text
' '           Text
'in'          Keyword
' '           Text
'('           Punctuation
'"'           Literal.String.Double
'cd'          Literal.String.Double
'\n'          Text

')'           Punctuation
' '           Text
'do'          Keyword
' '           Text
'('           Punctuation
'<'           Punctuation
'nul'         Text
' '           Text
'set'         Keyword
' '           Text
'/p'          Keyword
'='           Punctuation
'"'           Literal.String.Double
'%%'          Literal.String.Escape
'G '          Literal.String.Double
'"'           Literal.String.Double
''            Text
')'           Punctuation
'\n'          Text

'echo'        Keyword
'('           Text
''            Text
'\n'          Text

'DEL'         Keyword
' '           Text
'cd'          Text
''            Text
'\n'          Text

'if'          Keyword
' '           Text
'not'         Keyword
' '           Text
'"'           Literal.String.Double
'%cd:~0,3%'   Name.Variable
'"'           Literal.String.Double
'=='          Operator
'"'           Literal.String.Double
'C:\\'        Literal.String.Double
'"'           Literal.String.Double
' '           Text
'('           Punctuation
'\n'          Text

' '           Text
' '           Text
'call'        Keyword
' '           Text
'call'        Keyword
' '           Text
'echo'        Keyword
' '           Text
' '           Text
'Wrong'       Text
' '           Text
'drive'       Text
' '           Text
'(should'     Text
' '           Text
'be'          Text
' '           Text
'C'           Text
'^)'          Literal.String.Escape
':'           Text
''            Text
'\n'          Text

' '           Text
' '           Text
'vol'         Keyword
''            Text
'\n'          Text

' '           Text
' '           Text
'goto'        Keyword
' '           Text
':'           Punctuation
'test'        Name.Label
')'           Punctuation
'\n'          Text

'>'           Punctuation
'test'        Text
'0'           Text
'^\n.'        Literal.String.Escape
'bat'         Text
' '           Text
'echo'        Keyword
' '           Text
'rem'         Text
' '           Text
'Machine-generated' Text
';'           Text
' '           Text
'do'          Text
' '           Text
'not'         Text
' '           Text
'edit'        Text
''            Text
'\n'          Text

'call'        Keyword
' '           Text
'echo'        Keyword
' '           Text
'set'         Text
' '           Text
'/a'          Text
' '           Text
'_passed+'    Text
'='           Text
'1'           Text
' '           Text
'>>'          Punctuation
'test'        Text
'0'           Text
'.bat'        Text
''            Text
'\n'          Text

'type'        Keyword
' '           Text
'test'        Text
'0'           Text
'.bat'        Text
' '           Text
'>'           Punctuation
'"'           Literal.String.Double
'test 1.bat'  Literal.String.Double
''            Text
'\n'          Text

'ren'         Keyword
' '           Text
'"'           Literal.String.Double
'test 1.bat'  Literal.String.Double
'"'           Literal.String.Double
' '           Text
'test'        Text
'2'           Text
'.bat'        Text
''            Text
'\n'          Text

'rename'      Keyword
' '           Text
'test'        Text
'2'           Text
'.bat'        Text
' '           Text
'test.bat'    Text
''            Text
'\n'          Text

'caLL'        Keyword
' '           Text
'^\nC'        Literal.String.Escape
':'           Punctuation
'test'        Name.Label
''            Text
'\n'          Text

'del'         Keyword
' '           Text
'test.bat'    Text
' '           Text
'2'           Literal.Number.Integer
'>'           Punctuation
'nul'         Text
''            Text
'\n'          Text

'2'           Literal.Number.Integer
'>'           Punctuation
'NUL'         Text
' '           Text
'erase'       Keyword
' '           Text
'test'        Text
'0'           Text
'.bat'        Text
''            Text
'\n'          Text

'popd'        Keyword
''            Text
'\n'          Text

'rd'          Keyword
' '           Text
'temp\\temp'  Text
''            Text
'\n'          Text

'rmdir'       Keyword
' '           Text
'temp'        Text
''            Text
'\n'          Text

'VERIFY'      Keyword
' '           Text
'OFF'         Text
''            Text
'\n'          Text

'goto'        Keyword
':'           Punctuation
'eof'         Name.Label
'\n\n'        Text

''            Text
':'           Punctuation
'control'     Name.Label
''            Text
'\n'          Text

'set'         Keyword
' '           Text
'/a'          Keyword
' '           Text
'_tests'      Name.Variable
'+='          Operator
'1'           Literal.Number.Integer
''            Text
'\n'          Text

'echo'        Keyword
' '           Text
'Test'        Text
' '           Text
'%_tests%'    Name.Variable
':'           Text
' '           Text
'Control'     Text
' '           Text
'statements'  Text
''            Text
'\n'          Text

'set'         Keyword
' '           Text
'"'           Literal.String.Double
'_iterations=0' Literal.String.Double
'"'           Literal.String.Double
'>'           Punctuation
'nul'         Text
''            Text
'\n'          Text

'for'         Keyword
' '           Text
'%%'          Literal.String.Escape
'G'           Text
' '           Text
'in'          Keyword
' '           Text
'('           Punctuation
','           Text
'+'           Text
','           Text
','           Text
'-'           Text
','           Text
'\n'          Text

')'           Punctuation
' '           Text
'do'          Keyword
' '           Text
'@'           Punctuation
'('           Punctuation
'\n'          Text

' '           Text
' '           Text
'for'         Keyword
' '           Text
'/l'          Keyword
' '           Text
'%%'          Literal.String.Escape
'H'           Text
' '           Text
'in'          Keyword
' '           Text
'('           Punctuation
','           Text
'-1'          Literal.Number.Integer
';'           Text
';'           Text
'-1'          Literal.Number.Integer
'\t'          Text
'-3'          Literal.Number.Integer
','           Text
')'           Punctuation
' '           Text
'do'          Keyword
' '           Text
'('           Punctuation
'\n'          Text

' '           Text
' '           Text
' '           Text
' '           Text
'for'         Keyword
' '           Text
'/f'          Keyword
' '           Text
'tokens'      Text
'^='          Literal.String.Escape
'1'           Text
'-'           Text
'2'           Text
'^,'          Literal.String.Escape
'5'           Text
' '           Text
'%%'          Literal.String.Escape
'I'           Text
' '           Text
'in'          Keyword
' '           Text
'('           Punctuation
'"'           Literal.String.Double
'2 '          Literal.String.Double
'%%'          Literal.String.Escape
'H _ _ 10'    Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
' '           Text
'do'          Keyword
' '           Text
'('           Punctuation
'\n'          Text

' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
'for'         Keyword
' '           Text
'/f'          Keyword
' '           Text
'"'           Literal.String.Double
'tokens=1 usebackq' Literal.String.Double
'"'           Literal.String.Double
' '           Text
'%%'          Literal.String.Escape
'L'           Text
' '           Text
'in'          Keyword
' '           Text
'('           Punctuation
' '           Text
'`echo '      Literal.String.Backtick
'%%'          Literal.String.Escape
'G'           Literal.String.Backtick
'%%'          Literal.String.Escape
'J ``` `\n`  `' Literal.String.Backtick
'    '        Text
')'           Punctuation
' '           Text
'do'          Keyword
' '           Text
'('           Punctuation
' '           Text
'for'         Keyword
' '           Text
'/f'          Keyword
' '           Text
'"'           Literal.String.Double
'tokens=2'    Literal.String.Double
'"'           Literal.String.Double
' '           Text
'%%'          Literal.String.Escape
'M'           Text
' '           Text
'in'          Keyword
' '           Text
'('           Punctuation
"'echo ' "    Literal.String.Single
'%%'          Literal.String.Escape
"L0 '\n'  '"  Literal.String.Single
'      '      Text
')'           Punctuation
' '           Text
'do'          Keyword
' '           Text
'('           Punctuation
' '           Text
'set'         Keyword
' '           Text
'/a'          Keyword
' '           Text
'_iterations' Name.Variable
'+='          Operator
'('           Punctuation
'%%'          Operator
'M'           Name.Variable
'%%'          Operator
'M'           Name.Variable
'^)'          Literal.String.Escape
''            Text
'\n'          Text

' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
')'           Punctuation
'\n'          Text

' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
')'           Punctuation
'\n'          Text

' '           Text
' '           Text
' '           Text
' '           Text
')'           Punctuation
'\n'          Text

' '           Text
' '           Text
')'           Punctuation
'\n'          Text

')'           Punctuation
'\n'          Text

'if'          Keyword
' '           Text
'exist'       Keyword
' '           Text
'%~nx0'       Name.Variable
' '           Text
'if'          Keyword
' '           Text
'not'         Keyword
' '           Text
'exist'       Keyword
' '           Text
'%~nx0'       Name.Variable
' '           Text
'goto'        Keyword
' '           Text
':'           Punctuation
'fail'        Name.Label
'\n'          Text

'if'          Keyword
' '           Text
'exist'       Keyword
' '           Text
'%~nx0'       Name.Variable
' '           Text
'('           Punctuation
'\n'          Text

' '           Text
' '           Text
'if'          Keyword
' '           Text
'not'         Keyword
' '           Text
'exist'       Keyword
' '           Text
'%~nx0'       Name.Variable
' '           Text
'goto'        Keyword
' '           Text
':'           Punctuation
'fail'        Name.Label
'\n'          Text

')'           Punctuation
' '           Text
'else'        Keyword
' '           Text
'('           Punctuation
'\n'          Text

' '           Text
' '           Text
'if'          Keyword
' '           Text
'exist'       Keyword
' '           Text
'%~nx0'       Name.Variable
' '           Text
'goto'        Keyword
' '           Text
':'           Punctuation
'fail'        Name.Label
'\n'          Text

')'           Punctuation
'\n'          Text

'if'          Keyword
' '           Text
'/i'          Keyword
' '           Text
'%_iterations%' Name.Variable
' '           Text
'gtr'         Operator.Word
' '           Text
'-'           Text
'2'           Text
' '           Text
'('           Punctuation
'\n'          Text

' '           Text
' '           Text
'if'          Keyword
' '           Text
'/i'          Keyword
' '           Text
'%_iterations%' Name.Variable
' '           Text
'geq'         Operator.Word
' '           Text
'-'           Text
'1'           Text
' '           Text
'('           Punctuation
'\n'          Text

' '           Text
' '           Text
' '           Text
' '           Text
'if'          Keyword
' '           Text
'/i'          Keyword
' '           Text
'%_iterations%' Name.Variable
' '           Text
'lss'         Operator.Word
' '           Text
'1'           Text
' '           Text
'('           Punctuation
'\n'          Text

' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
'if'          Keyword
' '           Text
'/i'          Keyword
' '           Text
'%_iterations%' Name.Variable
' '           Text
'leq'         Operator.Word
' '           Text
'0'           Text
' '           Text
'('           Punctuation
'\n'          Text

' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
'if'          Keyword
' '           Text
'/i'          Keyword
' '           Text
'%_iterations%' Name.Variable
' '           Text
'equ'         Operator.Word
' '           Text
'0'           Text
' '           Text
'('           Punctuation
'\n'          Text

' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
'if'          Keyword
' '           Text
'1'           Literal.Number.Integer
' '           Text
'equ'         Operator.Word
' '           Text
'01'          Literal.Number.Oct
' '           Text
'('           Punctuation
'\n'          Text

' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
'if'          Keyword
' '           Text
'1'           Text
' '           Text
'neq'         Operator.Word
' '           Text
'"'           Literal.String.Double
'01'          Literal.String.Double
'"'           Literal.String.Double
' '           Text
'('           Punctuation
'\n'          Text

' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
'if'          Keyword
' '           Text
'"'           Literal.String.Double
'1'           Literal.String.Double
'"'           Literal.String.Double
' '           Text
'neq'         Operator.Word
' '           Text
'0'           Text
'1'           Text
' '           Text
'('           Punctuation
'\n'          Text

' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
' '           Text
'set'         Keyword
' '           Text
'/a'          Keyword
' '           Text
'_passed'     Name.Variable
'+='          Operator
'1'           Literal.Number.Integer
''            Text
')'           Punctuation
')'           Punctuation
')'           Punctuation
')'           Punctuation
')'           Punctuation
')'           Punctuation
')'           Punctuation
')'           Punctuation
'\n'          Text

') comment'   Comment.Single
'\n'          Text

'goto'        Keyword
' '           Text
':'           Punctuation
'eof'         Name.Label
'\n\n'        Text

''            Text
':'           Punctuation
'internal'    Name.Label
''            Text
'\n'          Text

'set'         Keyword
' '           Text
'/a'          Keyword
' '           Text
'_tests'      Name.Variable
'+='          Operator
'1'           Literal.Number.Integer
''            Text
'\n'          Text

'echo'        Keyword
' '           Text
'Test'        Text
' '           Text
'%_tests%'    Name.Variable
':'           Text
' '           Text
'Internal'    Text
' '           Text
'commands'    Text
''            Text
'\n'          Text

'keys'        Keyword
' '           Text
'on'          Text
''            Text
'\n'          Text

'mklink'      Keyword
' '           Text
'2'           Literal.Number.Integer
'>'           Punctuation
'nul'         Text
''            Text
'\n'          Text

'>'           Punctuation
'nul'         Text
' '           Text
'path'        Keyword
' '           Text
'%path%'      Name.Variable
''            Text
'\n'          Text

'>'           Punctuation
'nul'         Text
' '           Text
'dpath'       Keyword
' '           Text
'%dpath%'     Name.Variable
''            Text
'\n'          Text

'if'          Keyword
' '           Text
'not'         Keyword
' '           Text
'defined'     Keyword
' '           Text
'prompt'      Name.Variable
' '           Text
'prompt'      Keyword
' '           Text
'$P$G'        Text
''            Text
'\n'          Text

'prompt'      Keyword
' '           Text
'!prompt:~!'  Name.Variable
'rem/'        Text
' '           Text
'$H?'         Text
''            Text
'\n'          Text

'echo'        Keyword
' '           Text
'on'          Text
''            Text
'\n'          Text

'rem'         Keyword
'/?'          Text
''            Text
'\n'          Text

'@'           Punctuation
'echo'        Keyword
' '           Text
'off'         Text
''            Text
'\n'          Text

'rem'         Keyword
'(/?'         Text
'>'           Punctuation
'nul'         Text
''            Text
'\n'          Text

'rem'         Keyword
' '           Text
')'           Text
'/?'          Text
' '           Text
'>'           Punctuation
'nul'         Text
''            Text
'\n'          Text

'('           Punctuation
'rem'         Keyword
' '           Text
'(/?'         Text
''            Text
')'           Punctuation
' '           Text
'>'           Punctuation
'nul'         Text
'\n'          Text

'rem'         Keyword
' '           Text
'/?'          Text
'>'           Punctuation
'nul'         Text
''            Text
'\n'          Text

'rem'         Keyword
'^/'          Literal.String.Escape
'?'           Text
'>'           Punctuation
'nul'         Text
''            Text
'\n'          Text

'if'          Keyword
'/?'          Text
'>'           Punctuation
'nul'         Text
' '           Text
'||'          Punctuation
' '           Text
'if'          Keyword
'^/'          Literal.String.Escape
'^?'          Literal.String.Escape
'>'           Punctuation
'nul'         Text
' '           Text
'||'          Punctuation
' '           Text
'if'          Keyword
' '           Text
'/?'          Text
'>'           Punctuation
'nul'         Text
' '           Text
'||'          Punctuation
' '           Text
'if'          Keyword
' '           Text
'x/?'         Text
' '           Text
'>'           Punctuation
'nul'         Text
''            Text
'\n'          Text

'for'         Keyword
'/?'          Text
'>'           Punctuation
'nul'         Text
' '           Text
'&&'          Punctuation
' '           Text
'for'         Keyword
'^/'          Literal.String.Escape
'^?'          Literal.String.Escape
'>'           Punctuation
'nul'         Text
' '           Text
'&&'          Punctuation
' '           Text
'for'         Keyword
' '           Text
'/?'          Text
'>'           Punctuation
'nul'         Text
' '           Text
'&&'          Punctuation
' '           Text
'for'         Keyword
' '           Text
'x/?'         Text
' '           Text
'>'           Punctuation
'nul'         Text
' '           Text
'&&'          Punctuation
' '           Text
'for'         Keyword
' '           Text
'/?'          Text
'x'           Text
' '           Text
'>'           Punctuation
'nul'         Text
''            Text
'\n'          Text

'goto'        Keyword
'/?'          Text
'>'           Punctuation
'nul'         Text
' '           Text
'&&'          Punctuation
' '           Text
'goto'        Keyword
'^/'          Literal.String.Escape
'?'           Text
' '           Text
'&&'          Punctuation
' '           Text
'goto'        Keyword
'^ '          Literal.String.Escape
'/?'          Text
' '           Text
'&&'          Punctuation
' '           Text
'goto'        Keyword
' '           Text
'/'           Text
'^\n?'        Literal.String.Escape
' '           Text
'&&'          Punctuation
' '           Text
'goto'        Keyword
' '           Text
'/?'          Text
'>'           Punctuation
'nul'         Text
' '           Text
'&&'          Punctuation
' '           Text
'goto'        Keyword
':/?'         Text
' '           Text
'>'           Punctuation
'nul'         Text
' '           Text
'&&'          Punctuation
' '           Text
'goto'        Keyword
' '           Text
')'           Text
' '           Text
'/?'          Text
' '           Text
')'           Text
' '           Text
'>'           Punctuation
'nul'         Text
' '           Text
'&&'          Punctuation
' '           Text
'('           Punctuation
'goto'        Keyword
' '           Text
'/?'          Text
' '           Text
''            Text
')'           Punctuation
'>'           Punctuation
'nul'         Text
'\n'          Text

'='           Text
'set'         Keyword
"+;/p extension')," Name.Variable
'='           Punctuation
'.bat'        Text
''            Text
'\n'          Text

'for'         Keyword
' '           Text
'/f'          Keyword
' '           Text
'"'           Literal.String.Double
'tokens=2 delims==' Literal.String.Double
'"'           Literal.String.Double
' '           Text
'%%'          Literal.String.Escape
'G'           Text
' '           Text
'in'          Keyword
' '           Text
'('           Punctuation
' '           Text
"'assoc "     Literal.String.Single
"%+;/p extension'),%" Name.Variable
"'"           Literal.String.Single
'\n '         Text
')'           Punctuation
' '           Text
'do'          Keyword
' '           Text
'('           Punctuation
'\n'          Text

' '           Text
' '           Text
'assoc'       Keyword
' '           Text
'2'           Literal.Number.Integer
'>'           Punctuation
'nul'         Text
' '           Text
"%+;/p extension'),:*.=.%" Name.Variable
'='           Text
'%%'          Literal.String.Escape
'G'           Text
''            Text
'\n'          Text

' '           Text
' '           Text
'ftype'       Keyword
' '           Text
'1'           Literal.Number.Integer
'>'           Punctuation
'nul'         Text
' '           Text
'%%'          Literal.String.Escape
'G'           Text
''            Text
'\n'          Text

')'           Punctuation
' '           Text
'&'           Punctuation
'>'           Punctuation
'nul'         Text
' '           Text
'ver'         Keyword
''            Text
'\n'          Text

'if'          Keyword
' '           Text
'errorlevel'  Keyword
' '           Text
'0'           Literal.Number.Integer
' '           Text
'if'          Keyword
' '           Text
'not'         Keyword
' '           Text
'errorlevel'  Keyword
' '           Text
'1'           Literal.Number.Integer
' '           Text
'set'         Keyword
' '           Text
'/a'          Keyword
' '           Text
'_passed'     Name.Variable
'+='          Operator
'1'           Literal.Number.Integer
''            Text
'\n'          Text

'goto'        Keyword
' '           Text
':'           Punctuation
'eof'         Name.Label
'\n'          Text

'FOR'         Keyword
' '           Text
'/F'          Keyword
' '           Text
'%%'          Literal.String.Escape
'a'           Text
' '           Text
'IN'          Keyword
' '           Text
'('           Punctuation
"'"           Literal.String.Single
'%%'          Literal.String.Escape
'c'           Literal.String.Single
'%%'          Literal.String.Escape
"'"           Literal.String.Single
')'           Punctuation
' '           Text
'DO'          Keyword
' '           Text
'%%'          Literal.String.Escape
'a'           Text
''            Text
'\n'          Text

'rem %x% %x% %x% %x% %x% %x% %x% %x% %x% %x% %x% %x% %x% %x% %x% %x%' Comment.Single
''            Text
'\n'          Text

''            Text
':'           Punctuation
'/?'          Name.Label
''            Text
'\n'          Text

'goto'        Keyword
' '           Text
':'           Punctuation
'fail'        Name.Label
'\n'          Text
