batchfile.tmLanguage.json 13 KB

1
  1. {"information_for_contributors":["This file has been converted from https://github.com/mmims/language-batchfile/blob/master/grammars/batchfile.cson","If you want to provide a fix or improvement, please create a pull request against the original repository.","Once accepted there, we are happy to receive an update request."],"version":"https://github.com/mmims/language-batchfile/commit/6154ae25a24e01ac9329e7bcf958e093cd8733a9","name":"Batch File","scopeName":"source.batchfile","injections":{"L:meta.block.repeat.batchfile":{"patterns":[{"include":"#repeatParameter"}]}},"patterns":[{"include":"#commands"},{"include":"#comments"},{"include":"#constants"},{"include":"#controls"},{"include":"#escaped_characters"},{"include":"#labels"},{"include":"#numbers"},{"include":"#operators"},{"include":"#parens"},{"include":"#strings"},{"include":"#variables"}],"repository":{"commands":{"patterns":[{"match":"(?<=^|[\\s@])(?i:adprep|append|arp|assoc|at|atmadm|attrib|auditpol|autochk|autoconv|autofmt|bcdboot|bcdedit|bdehdcfg|bitsadmin|bootcfg|brea|cacls|cd|certreq|certutil|change|chcp|chdir|chglogon|chgport|chgusr|chkdsk|chkntfs|choice|cipher|clip|cls|clscluadmin|cluster|cmd|cmdkey|cmstp|color|comp|compact|convert|copy|cprofile|cscript|csvde|date|dcdiag|dcgpofix|dcpromo|defra|del|dfscmd|dfsdiag|dfsrmig|diantz|dir|dirquota|diskcomp|diskcopy|diskpart|diskperf|diskraid|diskshadow|dispdiag|doin|dnscmd|doskey|driverquery|dsacls|dsadd|dsamain|dsdbutil|dsget|dsmgmt|dsmod|dsmove|dsquery|dsrm|edit|endlocal|eraseesentutl|eventcreate|eventquery|eventtriggers|evntcmd|expand|extract|fc|filescrn|find|findstr|finger|flattemp|fonde|forfiles|format|freedisk|fsutil|ftp|ftype|fveupdate|getmac|gettype|gpfixup|gpresult|gpupdate|graftabl|hashgen|hep|helpctr|hostname|icacls|iisreset|inuse|ipconfig|ipxroute|irftp|ismserv|jetpack|klist|ksetup|ktmutil|ktpass|label|ldifd|ldp|lodctr|logman|logoff|lpq|lpr|macfile|makecab|manage-bde|mapadmin|md|mkdir|mklink|mmc|mode|more|mount|mountvol|move|mqbup|mqsvc|mqtgsvc|msdt|msg|msiexec|msinfo32|mstsc|nbtstat|net computer|net group|net localgroup|net print|net session|net share|net start|net stop|net use|net user|net view|net|netcfg|netdiag|netdom|netsh|netstat|nfsadmin|nfsshare|nfsstat|nlb|nlbmgr|nltest|nslookup|ntackup|ntcmdprompt|ntdsutil|ntfrsutl|openfiles|pagefileconfig|path|pathping|pause|pbadmin|pentnt|perfmon|ping|pnpunatten|pnputil|popd|powercfg|powershell|powershell_ise|print|prncnfg|prndrvr|prnjobs|prnmngr|prnport|prnqctl|prompt|pubprn|pushd|pushprinterconnections|pwlauncher|qappsrv|qprocess|query|quser|qwinsta|rasdial|rcp|rd|rdpsign|regentc|recover|redircmp|redirusr|reg|regini|regsvr32|relog|ren|rename|rendom|repadmin|repair-bde|replace|reset session|rxec|risetup|rmdir|robocopy|route|rpcinfo|rpcping|rsh|runas|rundll32|rwinsta|sc|schtasks|scp|scwcmd|secedit|serverceipoptin|servrmanagercmd|serverweroptin|setspn|setx|sfc|sftp|shadow|shift|showmount|shutdown|sort|ssh|ssh-add|ssh-agent|ssh-keygen|ssh-keyscan|start|storrept|subst|sxstrace|ysocmgr|systeminfo|takeown|tapicfg|taskkill|tasklist|tcmsetup|telnet|tftp|time|timeout|title|tlntadmn|tpmvscmgr|tpmvscmgr|tacerpt|tracert|tree|tscon|tsdiscon|tsecimp|tskill|tsprof|type|typeperf|tzutil|uddiconfig|umount|unlodctr|ver|verifier|verif|vol|vssadmin|w32tm|waitfor|wbadmin|wdsutil|wecutil|wevtutil|where|whoami|winnt|winnt32|winpop|winrm|winrs|winsat|wlbs|wmic|wscript|wsl|xcopy)(?=$|\\s)","name":"keyword.command.batchfile"},{"begin":"(?i)(?<=^|[\\s@])(echo)(?:(?=$|\\.|:)|\\s+(?:(on|off)(?=\\s*$))?)","beginCaptures":{"1":{"name":"keyword.command.batchfile"},"2":{"name":"keyword.other.special-method.batchfile"}},"end":"(?=$\\n|[&|><)])","patterns":[{"include":"#escaped_characters"},{"include":"#variables"},{"include":"#numbers"},{"include":"#strings"}]},{"match":"(?i)(?<=^|[\\s@])(setlocal)(?:\\s*$|\\s+(EnableExtensions|DisableExtensions|EnableDelayedExpansion|DisableDelayedExpansion)(?=\\s*$))","captures":{"1":{"name":"keyword.command.batchfile"},"2":{"name":"keyword.other.special-method.batchfile"}}},{"include":"#command_set"}]},"command_set":{"patterns":[{"begin":"(?<=^|[\\s@])(?i:SET)(?=$|\\s)","beginCaptures":{"0":{"name":"keyword.command.batchfile"}},"end":"(?=$\\n|[&|><)])","patterns":[{"include":"#command_set_inside"}]}]},"command_set_inside":{"patterns":[{"include":"#escaped_characters"},{"include":"#variables"},{"include":"#numbers"},{"include":"#parens"},{"include":"#command_set_strings"},{"include":"#strings"},{"begin":"([^ ][^=]*)(=)","beginCaptures":{"1":{"name":"variable.other.readwrite.batchfile"},"2":{"name":"keyword.operator.assignment.batchfile"}},"end":"(?=$\\n|[&|><)])","patterns":[{"include":"#escaped_characters"},{"include":"#variables"},{"include":"#numbers"},{"include":"#parens"},{"include":"#strings"}]},{"begin":"\\s+/[aA]\\s+","end":"(?=$\\n|[&|><)])","name":"meta.expression.set.batchfile","patterns":[{"begin":"\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.batchfile"}},"end":"\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.batchfile"}},"name":"string.quoted.double.batchfile","patterns":[{"include":"#command_set_inside_arithmetic"},{"include":"#command_set_group"},{"include":"#variables"}]},{"include":"#command_set_inside_arithmetic"},{"include":"#command_set_group"}]},{"begin":"\\s+/[pP]\\s+","end":"(?=$\\n|[&|><)])","patterns":[{"include":"#command_set_strings"},{"begin":"([^ ][^=]*)(=)","beginCaptures":{"1":{"name":"variable.other.readwrite.batchfile"},"2":{"name":"keyword.operator.assignment.batchfile"}},"end":"(?=$\\n|[&|><)])","name":"meta.prompt.set.batchfile","patterns":[{"include":"#strings"}]}]}]},"command_set_group":{"patterns":[{"begin":"\\(","beginCaptures":{"0":{"name":"punctuation.section.group.begin.batchfile"}},"end":"\\)","endCaptures":{"0":{"name":"punctuation.section.group.end.batchfile"}},"patterns":[{"include":"#command_set_inside_arithmetic"}]}]},"command_set_inside_arithmetic":{"patterns":[{"include":"#command_set_operators"},{"include":"#numbers"},{"match":",","name":"punctuation.separator.batchfile"}]},"command_set_operators":{"patterns":[{"match":"([^ ]*)(\\+\\=|\\-\\=|\\*\\=|\\/\\=|%%\\=|&\\=|\\|\\=|\\^\\=|<<\\=|>>\\=)","captures":{"1":{"name":"variable.other.readwrite.batchfile"},"2":{"name":"keyword.operator.assignment.augmented.batchfile"}}},{"match":"\\+|\\-|/|\\*|%%|\\||&|\\^|<<|>>|~","name":"keyword.operator.arithmetic.batchfile"},{"match":"!","name":"keyword.operator.logical.batchfile"},{"match":"([^ =]*)(=)","captures":{"1":{"name":"variable.other.readwrite.batchfile"},"2":{"name":"keyword.operator.assignment.batchfile"}}}]},"command_set_strings":{"patterns":[{"begin":"(\")\\s*([^ ][^=]*)(=)","beginCaptures":{"1":{"name":"punctuation.definition.string.begin.batchfile"},"2":{"name":"variable.other.readwrite.batchfile"},"3":{"name":"keyword.operator.assignment.batchfile"}},"end":"\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.batchfile"}},"name":"string.quoted.double.batchfile","patterns":[{"include":"#variables"},{"include":"#numbers"},{"include":"#escaped_characters"}]}]},"comments":{"patterns":[{"begin":"(?:^|(&))\\s*(?=((?::[+=,;: ])))","beginCaptures":{"1":{"name":"keyword.operator.conditional.batchfile"}},"end":"\\n","patterns":[{"begin":"((?::[+=,;: ]))","beginCaptures":{"1":{"name":"punctuation.definition.comment.batchfile"}},"end":"(?=\\n)","name":"comment.line.colon.batchfile"}]},{"begin":"(?<=^|[\\s@])(?i)(REM)(\\.)","beginCaptures":{"1":{"name":"keyword.command.rem.batchfile"},"2":{"name":"punctuation.separator.batchfile"}},"end":"(?=$\\n|[&|><)])","name":"comment.line.rem.batchfile"},{"begin":"(?<=^|[\\s@])(?i:rem)\\b","beginCaptures":{"0":{"name":"keyword.command.rem.batchfile"}},"end":"\\n","name":"comment.line.rem.batchfile","patterns":[{"match":"[><|]","name":"invalid.illegal.unexpected-character.batchfile"}]}]},"constants":{"patterns":[{"match":"\\b(?i:NUL)\\b","name":"constant.language.batchfile"}]},"controls":{"patterns":[{"match":"(?i)(?<=^|\\s)(?:call|exit(?=$|\\s)|goto(?=$|\\s|:))","name":"keyword.control.statement.batchfile"},{"match":"(?<=^|\\s)(?i)(if)\\s+(?:(not)\\s+)?(exist|defined|errorlevel|cmdextversion)(?=\\s)","captures":{"1":{"name":"keyword.control.conditional.batchfile"},"2":{"name":"keyword.operator.logical.batchfile"},"3":{"name":"keyword.other.special-method.batchfile"}}},{"match":"(?<=^|\\s)(?i)(?:if|else)(?=$|\\s)","name":"keyword.control.conditional.batchfile"},{"begin":"(?<=^|[\\s(&^])(?i)for(?=\\s)","beginCaptures":{"0":{"name":"keyword.control.repeat.batchfile"}},"name":"meta.block.repeat.batchfile","end":"\\n","patterns":[{"begin":"(?<=[\\s^])(?i)in(?=\\s)","beginCaptures":{"0":{"name":"keyword.control.repeat.in.batchfile"}},"end":"(?<=[\\s)^])(?i)do(?=\\s)|\\n","endCaptures":{"0":{"name":"keyword.control.repeat.do.batchfile"}},"patterns":[{"include":"$self"}]},{"include":"$self"}]}]},"escaped_characters":{"patterns":[{"match":"%%|\\^\\^!|\\^(?=.)|\\^\\n","name":"constant.character.escape.batchfile"}]},"labels":{"patterns":[{"match":"(?i)(?:^\\s*|(?<=call|goto)\\s*)(:)([^+=,;:\\s]\\S*)","captures":{"1":{"name":"punctuation.separator.batchfile"},"2":{"name":"keyword.other.special-method.batchfile"}}}]},"numbers":{"patterns":[{"match":"(?<=^|\\s|=)(0[xX][0-9A-Fa-f]*|[+-]?\\d+)(?=$|\\s|<|>)","name":"constant.numeric.batchfile"}]},"operators":{"patterns":[{"match":"@(?=\\S)","name":"keyword.operator.at.batchfile"},{"match":"(?<=\\s)(?i:EQU|NEQ|LSS|LEQ|GTR|GEQ)(?=\\s)|==","name":"keyword.operator.comparison.batchfile"},{"match":"(?<=\\s)(?i)(NOT)(?=\\s)","name":"keyword.operator.logical.batchfile"},{"match":"(?<!\\^)&&?|\\|\\|","name":"keyword.operator.conditional.batchfile"},{"match":"(?<!\\^)\\|","name":"keyword.operator.pipe.batchfile"},{"match":"<&?|>[&>]?","name":"keyword.operator.redirection.batchfile"}]},"parens":{"patterns":[{"begin":"\\(","beginCaptures":{"0":{"name":"punctuation.section.group.begin.batchfile"}},"end":"\\)","endCaptures":{"0":{"name":"punctuation.section.group.end.batchfile"}},"name":"meta.group.batchfile","patterns":[{"match":",|;","name":"punctuation.separator.batchfile"},{"include":"$self"}]}]},"repeatParameter":{"patterns":[{"match":"(%%)(?:(?i:~[fdpnxsatz]*(?:\\$PATH:)?)?[a-zA-Z])","captures":{"1":{"name":"punctuation.definition.variable.batchfile"}},"name":"variable.parameter.repeat.batchfile"}]},"strings":{"patterns":[{"begin":"\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.batchfile"}},"end":"(\")|(\\n)","endCaptures":{"1":{"name":"punctuation.definition.string.end.batchfile"},"2":{"name":"invalid.illegal.newline.batchfile"}},"name":"string.quoted.double.batchfile","patterns":[{"match":"%%","name":"constant.character.escape.batchfile"},{"include":"#variables"}]}]},"variables":{"patterns":[{"match":"(%)(?:(?i:~[fdpnxsatz]*(?:\\$PATH:)?)?\\d|\\*)","captures":{"1":{"name":"punctuation.definition.variable.batchfile"}},"name":"variable.parameter.batchfile"},{"include":"#variable"},{"include":"#variable_delayed_expansion"}]},"variable":{"patterns":[{"begin":"%(?=[^%]+%)","beginCaptures":{"0":{"name":"punctuation.definition.variable.begin.batchfile"}},"end":"(%)|\\n","endCaptures":{"1":{"name":"punctuation.definition.variable.end.batchfile"}},"name":"variable.other.readwrite.batchfile","patterns":[{"begin":":~","beginCaptures":{"0":{"name":"punctuation.separator.batchfile"}},"end":"(?=%|\\n)","name":"meta.variable.substring.batchfile","patterns":[{"include":"#variable_substring"}]},{"begin":":","beginCaptures":{"0":{"name":"punctuation.separator.batchfile"}},"end":"(?=%|\\n)","name":"meta.variable.substitution.batchfile","patterns":[{"include":"#variable_replace"},{"begin":"=","beginCaptures":{"0":{"name":"punctuation.separator.batchfile"}},"end":"(?=%|\\n)","patterns":[{"include":"#variable_delayed_expansion"},{"match":"[^%]+","name":"string.unquoted.batchfile"}]}]}]}]},"variable_delayed_expansion":{"patterns":[{"begin":"!(?=[^!]+!)","beginCaptures":{"0":{"name":"punctuation.definition.variable.begin.batchfile"}},"end":"(!)|\\n","endCaptures":{"1":{"name":"punctuation.definition.variable.end.batchfile"}},"name":"variable.other.readwrite.batchfile","patterns":[{"begin":":~","beginCaptures":{"0":{"name":"punctuation.separator.batchfile"}},"end":"(?=!|\\n)","name":"meta.variable.substring.batchfile","patterns":[{"include":"#variable_substring"}]},{"begin":":","beginCaptures":{"0":{"name":"punctuation.separator.batchfile"}},"end":"(?=!|\\n)","name":"meta.variable.substitution.batchfile","patterns":[{"include":"#escaped_characters"},{"include":"#variable_replace"},{"include":"#variable"},{"begin":"=","beginCaptures":{"0":{"name":"punctuation.separator.batchfile"}},"end":"(?=!|\\n)","patterns":[{"include":"#variable"},{"match":"[^!]+","name":"string.unquoted.batchfile"}]}]}]}]},"variable_replace":{"patterns":[{"match":"[^=%!\\n]+","name":"string.unquoted.batchfile"}]},"variable_substring":{"patterns":[{"match":"([+-]?\\d+)(?:(,)([+-]?\\d+))?","captures":{"1":{"name":"constant.numeric.batchfile"},"2":{"name":"punctuation.separator.batchfile"},"3":{"name":"constant.numeric.batchfile"}}}]}}}