Files
vscode/extensions/powershell/syntaxes/PowershellSyntax.tmLanguage
2016-06-10 12:11:30 +02:00

1643 lines
42 KiB
Plaintext

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>fileTypes</key>
<array>
<string>ps1</string>
<string>psm1</string>
<string>psd1</string>
</array>
<key>name</key>
<string>PowerShell</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(--%)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.powershell</string>
</dict>
</dict>
<key>comment</key>
<string>Stop Parsing</string>
<key>end</key>
<string>$</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#lineComment</string>
</dict>
<dict>
<key>match</key>
<string>(.)</string>
<key>name</key>
<string>support.other.powershell</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#illegalBacktick</string>
</dict>
<dict>
<key>include</key>
<string>#lineComment</string>
</dict>
<dict>
<key>include</key>
<string>#blockComment</string>
</dict>
<dict>
<key>include</key>
<string>#stringDoubleQuoted</string>
</dict>
<dict>
<key>include</key>
<string>#stringSingleQuoted</string>
</dict>
<dict>
<key>include</key>
<string>#stringDoubleQuotedHeredoc</string>
</dict>
<dict>
<key>include</key>
<string>#stringSingleQuotedHeredoc</string>
</dict>
<dict>
<key>include</key>
<string>#switch</string>
</dict>
<dict>
<key>include</key>
<string>#scriptBlock</string>
</dict>
<dict>
<key>include</key>
<string>#subExpression</string>
</dict>
<dict>
<key>include</key>
<string>#arrayDeclaration</string>
</dict>
<dict>
<key>include</key>
<string>#redirection</string>
</dict>
<dict>
<key>include</key>
<string>#numericConstant</string>
</dict>
<dict>
<key>include</key>
<string>#operators</string>
</dict>
<dict>
<key>include</key>
<string>#type</string>
</dict>
<dict>
<key>include</key>
<string>#function</string>
</dict>
<dict>
<key>include</key>
<string>#enum</string>
</dict>
<dict>
<key>include</key>
<string>#class</string>
</dict>
<dict>
<key>include</key>
<string>#reservedWords</string>
</dict>
<dict>
<key>include</key>
<string>#controlWords</string>
</dict>
<dict>
<key>include</key>
<string>#commands</string>
</dict>
<dict>
<key>include</key>
<string>#executableFiles</string>
</dict>
<dict>
<key>include</key>
<string>#illegalVariable</string>
</dict>
<dict>
<key>include</key>
<string>#variable</string>
</dict>
</array>
<key>repository</key>
<dict>
<key>arrayDeclaration</key>
<dict>
<key>begin</key>
<string>(\@?\()</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.other.powershell</string>
</dict>
</dict>
<key>end</key>
<string>(\))((\.[\w"']+)*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.powershell</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.other.attribute-name.powershell</string>
</dict>
</dict>
<key>name</key>
<string>meta.array.powershell</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>$self</string>
</dict>
</array>
</dict>
<key>blockComment</key>
<dict>
<key>begin</key>
<string>(&lt;#)</string>
<key>end</key>
<string>(#&gt;)</string>
<key>name</key>
<string>comment.block.powershell</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#commentEmbeddedDocs</string>
</dict>
</array>
</dict>
<key>class</key>
<dict>
<key>begin</key>
<string>(?&lt;!\w|-)(?i:(class))\s+(\w+)(?:\s*(:)\s*(\w+))?\s*\{</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.powershell</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.function.powershell</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>keyword.operator.powershell</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>entity.other.inherited-class.powershell</string>
</dict>
</dict>
<key>comment</key>
<string>Class</string>
<key>end</key>
<string>\}</string>
<key>name</key>
<string>meta.class.powershell</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#classReservedWords</string>
</dict>
<dict>
<key>include</key>
<string>#classBaseKeyword</string>
</dict>
<dict>
<key>include</key>
<string>$self</string>
</dict>
</array>
</dict>
<key>classBaseKeyword</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.powershell</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.control.class.powershell</string>
</dict>
</dict>
<key>comment</key>
<string>The base keyword used in classes.</string>
<key>match</key>
<string>(:)\s*(?i:(base))\s*(?=\()</string>
</dict>
<key>classReservedWords</key>
<dict>
<key>comment</key>
<string>Reserved words for classes.</string>
<key>match</key>
<string>\b(?i:(hidden|static))\b</string>
<key>name</key>
<string>keyword.other.powershell</string>
</dict>
<key>commandParameter</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>comment</key>
<string>-Parameter value</string>
<key>match</key>
<string>\s(-\w+)(:)?</string>
<key>name</key>
<string>variable.parameter.powershell</string>
</dict>
</array>
</dict>
<key>commands</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?&lt;!\\)\b((?i:(Add|Approve|Assert|Backup|Block|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Mount|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Write))-(\w+))\b(?!\.|\\)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.function.powershell</string>
</dict>
</dict>
<key>comment</key>
<string>Generic function match based on Verb-Noun pair using list of approved verbs.</string>
<key>end</key>
<string>((?=\))|(?=\})|(?&lt;!`)\n|(?&lt;!`)\r|(\|))</string>
<key>endCaptures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.powershell</string>
</dict>
</dict>
<key>name</key>
<string>meta.command.powershell</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#scriptblock</string>
</dict>
<dict>
<key>include</key>
<string>#commandParameter</string>
</dict>
<dict>
<key>include</key>
<string>#lineComment</string>
</dict>
<dict>
<key>include</key>
<string>#redirection</string>
</dict>
<dict>
<key>include</key>
<string>#numericConstant</string>
</dict>
<dict>
<key>include</key>
<string>#operators</string>
</dict>
<dict>
<key>include</key>
<string>#variable</string>
</dict>
<dict>
<key>include</key>
<string>#stringDoubleQuoted</string>
</dict>
<dict>
<key>include</key>
<string>#stringSingleQuoted</string>
</dict>
<dict>
<key>include</key>
<string>#arrayDeclaration</string>
</dict>
<dict>
<key>include</key>
<string>#illegalBacktick</string>
</dict>
<dict>
<key>include</key>
<string>#illegalVariable</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;!\\)\b(?i:foreach-object|tee-object|where-object|sort-object)\b(?!\.|\\)</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>support.function.powershell</string>
</dict>
</dict>
<key>comment</key>
<string>Built-in commands that don't adhere to the approved verbs standard.</string>
<key>end</key>
<string>((?=\))|(?=\})|(?&lt;!`)\n|(?&lt;!`)\r|(\|))</string>
<key>endCaptures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.powershell</string>
</dict>
</dict>
<key>name</key>
<string>meta.command.powershell</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#scriptblock</string>
</dict>
<dict>
<key>include</key>
<string>#commandParameter</string>
</dict>
<dict>
<key>include</key>
<string>#lineComment</string>
</dict>
<dict>
<key>include</key>
<string>#redirection</string>
</dict>
<dict>
<key>include</key>
<string>#numericConstant</string>
</dict>
<dict>
<key>include</key>
<string>#operators</string>
</dict>
<dict>
<key>include</key>
<string>#variable</string>
</dict>
<dict>
<key>include</key>
<string>#stringDoubleQuoted</string>
</dict>
<dict>
<key>include</key>
<string>#stringSingleQuoted</string>
</dict>
<dict>
<key>include</key>
<string>#arrayDeclaration</string>
</dict>
<dict>
<key>include</key>
<string>#illegalBacktick</string>
</dict>
<dict>
<key>include</key>
<string>#illegalVariable</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;!\\|\[)\b(?i:ac|asnp|cat|cd|cfs|chdir|clc|clear|clhy|cli|clp|cls|clv|cnsn|compare|copy|cp|cpi|cpp|curl|cvpa|dbp|del|diff|dir|dnsn|ebp|echo|epal|epcsv|epsn|erase|etsn|exsn|fc|fhx|fl|ft|fw|gal|gbp|gc|gcb|gci|gcm|gcs|gdr|ghy|gi|gjb|gl|gm|gmo|gp|gps|gpv|group|gsn|gsnp|gsv|gu|gv|gwmi|h|history|icm|iex|ihy|ii|ipal|ipcsv|ipmo|ipsn|irm|ise|iwmi|iwr|kill|lp|ls|man|md|measure|mi|mount|move|mp|mv|nal|ndr|ni|nmo|npssc|nsn|nv|ogv|oh|popd|ps|pushd|r|rbp|rcjb|rcsn|rd|rdr|ren|ri|rjb|rm|rmdir|rmo|rni|rnp|rp|rsn|rsnp|rujb|rv|rvpa|rwmi|sajb|sal|saps|sasv|sbp|sc|scb|select|set|shcm|si|sl|sleep|sls|sort|sp|spjb|spps|spsv|start|sujb|sv|swmi|tee|trcm|type|wget|wjb|write)\b(?!\.|\\|\])</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>support.function.powershell</string>
</dict>
</dict>
<key>comment</key>
<string>Built-in aliases</string>
<key>end</key>
<string>((?=\))|(?=\})|(?&lt;!`)\n|(?&lt;!`)\r|(\|))</string>
<key>endCaptures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.powershell</string>
</dict>
</dict>
<key>name</key>
<string>meta.command.powershell</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#scriptblock</string>
</dict>
<dict>
<key>include</key>
<string>#commandParameter</string>
</dict>
<dict>
<key>include</key>
<string>#lineComment</string>
</dict>
<dict>
<key>include</key>
<string>#redirection</string>
</dict>
<dict>
<key>include</key>
<string>#numericConstant</string>
</dict>
<dict>
<key>include</key>
<string>#operators</string>
</dict>
<dict>
<key>include</key>
<string>#variable</string>
</dict>
<dict>
<key>include</key>
<string>#stringDoubleQuoted</string>
</dict>
<dict>
<key>include</key>
<string>#stringSingleQuoted</string>
</dict>
<dict>
<key>include</key>
<string>#arrayDeclaration</string>
</dict>
<dict>
<key>include</key>
<string>#illegalBacktick</string>
</dict>
<dict>
<key>include</key>
<string>#illegalVariable</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(\b(([A-Za-z0-9\-_\.]+).(?i:ps1))\b)</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>support.function.powershell</string>
</dict>
</dict>
<key>comment</key>
<string>External script</string>
<key>end</key>
<string>((?=\))|(?=\})|(?&lt;!`)\n|(?&lt;!`)\r|(\|))</string>
<key>endCaptures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.powershell</string>
</dict>
</dict>
<key>name</key>
<string>meta.command.powershell</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#scriptblock</string>
</dict>
<dict>
<key>include</key>
<string>#commandParameter</string>
</dict>
<dict>
<key>include</key>
<string>#lineComment</string>
</dict>
<dict>
<key>include</key>
<string>#redirection</string>
</dict>
<dict>
<key>include</key>
<string>#numericConstant</string>
</dict>
<dict>
<key>include</key>
<string>#operators</string>
</dict>
<dict>
<key>include</key>
<string>#variable</string>
</dict>
<dict>
<key>include</key>
<string>#stringDoubleQuoted</string>
</dict>
<dict>
<key>include</key>
<string>#stringSingleQuoted</string>
</dict>
<dict>
<key>include</key>
<string>#arrayDeclaration</string>
</dict>
<dict>
<key>include</key>
<string>#illegalBacktick</string>
</dict>
<dict>
<key>include</key>
<string>#illegalVariable</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>commentEmbeddedDocs</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.documentation.powershell</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.documentation.powershell</string>
</dict>
</dict>
<key>match</key>
<string>(?i:(\.)(SYNOPSIS|DESCRIPTION|EXAMPLE|INPUTS|OUTPUTS|NOTES|LINK|COMPONENT|FUNCTIONALITY|ROLE)\b)</string>
<key>name</key>
<string>comment.documentation.embedded.powershell</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.documentation.powershell</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.documentation.powershell</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>constant.string.documentation.powershell</string>
</dict>
</dict>
<key>match</key>
<string>(?i:(\.)(PARAMETER|FORWARDHELPTARGETNAME|FORWARDHELPCATEGORY|REMOTEHELPRUNSPACE|EXTERNALHELP)\s+(.+))</string>
<key>name</key>
<string>comment.documentation.embedded.powershell</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.documentation.powershell</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>constant.string.documentation.powershell</string>
</dict>
</dict>
<key>comment</key>
<string>Requires -Version</string>
<key>match</key>
<string>(?i:(requires))\s(-(?i:version)\s\d+(\.\d+)?)</string>
<key>name</key>
<string>comment.documentation.embedded.powershell</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.documentation.powershell</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>constant.string.documentation.powershell</string>
</dict>
</dict>
<key>comment</key>
<string>Requires -PSSnapin</string>
<key>match</key>
<string>(?i:(requires))\s(-(?i:pssnapin)\s\w+(\s*-(?i:version)\s\d+(\.\d+)?)?)</string>
<key>name</key>
<string>comment.documentation.embedded.powershell</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.documentation.powershell</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>constant.string.documentation.powershell</string>
</dict>
</dict>
<key>comment</key>
<string>Requires -Modules</string>
<key>match</key>
<string>(?i:(requires))\s(-(?i:modules)\s.*)</string>
<key>name</key>
<string>comment.documentation.embedded.powershell</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.documentation.powershell</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>constant.string.documentation.powershell</string>
</dict>
</dict>
<key>comment</key>
<string>Requires -ShellId</string>
<key>match</key>
<string>(?i:(requires))\s(-(?i:shellid)\s.*)</string>
<key>name</key>
<string>comment.documentation.embedded.powershell</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.documentation.powershell</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>constant.string.documentation.powershell</string>
</dict>
</dict>
<key>comment</key>
<string>Requires -RunAsAdministrator</string>
<key>match</key>
<string>(?i:(requires))\s(-(?i:runasadministrator))</string>
<key>name</key>
<string>comment.documentation.embedded.powershell</string>
</dict>
</array>
</dict>
<key>controlWords</key>
<dict>
<key>match</key>
<string>(\b(?&lt;!-|\$)(?i:begin|exit|break|return|catch|finally|for|continue|foreach|throw|from|trap|try|do|if|until|in|using|else|elseif|while|end|where)\b(?!-|\.))</string>
<key>name</key>
<string>keyword.control.powershell</string>
</dict>
<key>defaultKeyword</key>
<dict>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.other.powershell</string>
</dict>
</dict>
<key>comment</key>
<string>Default is a reserved word when used in Switch statements. This is kind of a work-around - it will highlight only inside scriptblocks.</string>
<key>match</key>
<string>(?i:(default))\s*(?=\{)</string>
</dict>
<key>enum</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.powershell</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.function</string>
</dict>
</dict>
<key>comment</key>
<string>capture should be entity.name.type, but it doesn't provide a good color in the default schema.</string>
<key>match</key>
<string>(?&lt;!\w|-)(?i:(enum))\s+(\w+)\s+</string>
</dict>
<key>executableFiles</key>
<dict>
<key>comment</key>
<string>Executable files, like exe, com, cmd and bat</string>
<key>match</key>
<string>(\b(([A-Za-z0-9\-_\.]+).(?i:exe|com|cmd|bat))\b)</string>
<key>name</key>
<string>support.function.powershell</string>
</dict>
<key>function</key>
<dict>
<key>begin</key>
<string>(?&lt;!\S)(?i)(function|filter|workflow|configuration)\s+(?:(global|local|script|private):)?((?:\p{L}|\d|_|-|\.)+)</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>meta.function</string>
</dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.modifier.scope.powershell</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>entity.name.function.powershell</string>
</dict>
</dict>
<key>end</key>
<string>\{|\(</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#lineComment</string>
</dict>
</array>
</dict>
<key>hashTable</key>
<dict>
<key>begin</key>
<string>(@\{)</string>
<key>end</key>
<string>(\})</string>
<key>name</key>
<string>meta.hashtable.powershell</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>$self</string>
</dict>
</array>
</dict>
<key>illegalBacktick</key>
<dict>
<key>comment</key>
<string>Any characters (other than new line) after a back-tick, is illegal in PowerShell.</string>
<key>match</key>
<string>(`(?!$))</string>
<key>name</key>
<string>invalid.illegal.powershell</string>
</dict>
<key>illegalVariable</key>
<dict>
<key>match</key>
<string>\$\w+:\s</string>
<key>name</key>
<string>invalid.illegal.powershell</string>
</dict>
<key>lineComment</key>
<dict>
<key>begin</key>
<string>(^#|\s#)</string>
<key>comment</key>
<string>Line comment - must start with new line or at least one whitespace character before the '#'.</string>
<key>end</key>
<string>$</string>
<key>name</key>
<string>comment.line.number-sign.powershell</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#commentEmbeddedDocs</string>
</dict>
</array>
</dict>
<key>numericConstant</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>comment</key>
<string>Real [(+|-)] digits . digits [e [(+|-)] digits] [(d|l)] [(kb|mb|gb|tb|pb)]</string>
<key>match</key>
<string>(?&lt;!\w)([-+]?)\d+\.\d+(?i:e(\+|-){0,1}\d+){0,1}(?i:d|l){0,1}(?i:kb|mb|gb|tb|pb){0,1}(?!\w|\d)</string>
<key>name</key>
<string>constant.numeric.real.powershell</string>
</dict>
<dict>
<key>comment</key>
<string>Real [(+|-)] . digits [e [(+|-)] digits] [(d|l)] [(kb|mb|gb|tb|pb)]</string>
<key>match</key>
<string>(?&lt;!\.|\d|\w)([-+]?)\.\d+(?i:e(\+|-){0,1}\d+){0,1}(?i:d|l){0,1}(?i:kb|mb|gb|tb|pb){0,1}(?!\w|\d)</string>
<key>name</key>
<string>constant.numeric.real.powershell</string>
</dict>
<dict>
<key>comment</key>
<string>Real [(+|-)] digits . [e [(+|-)] digits] [(d|l)] [(kb|mb|gb|tb|pb)]</string>
<key>match</key>
<string>(?&lt;!\w)([-+]?)(?&lt;!\d)\d+\.(?i:e(\+|-){0,1}\d+){0,1}(?i:d|l){0,1}(?i:kb|mb|gb|tb|pb){0,1}(?!\w|\d|\.)</string>
<key>name</key>
<string>constant.numeric.real.powershell</string>
</dict>
<dict>
<key>comment</key>
<string>Integer [(+|-)] digits [(d|l)] [(kb|mb|gb|tb|pb)]</string>
<key>match</key>
<string>(?&lt;!\w|\w\.)([-+]?)\d+(?i:d|l){0,1}(?i:kb|mb|gb|tb|pb){0,1}(?!\w|\d)</string>
<key>name</key>
<string>constant.numeric.integer.powershell</string>
</dict>
<dict>
<key>comment</key>
<string>Real [(+|-)] digits [e [(+|-)] digits] [(d|l)] [(kb|mb|gb|tb|pb)]</string>
<key>match</key>
<string>(?&lt;!\w|\.)([-+]?)(?&lt;!\d)\d+(?i:e(\+|-){0,1}\d+){0,1}(?i:d|l){0,1}(?i:kb|mb|gb|tb|pb){0,1}(?!\w|\d|\.)</string>
<key>name</key>
<string>constant.numeric.real.powershell</string>
</dict>
<dict>
<key>comment</key>
<string>Hexadecimal 0x 0-f [l] [kb|mb|gb|tb|pb]</string>
<key>match</key>
<string>(?&lt;!\w|\d)([-+]?)(?i:0x)(?i:[0-9a-f])+(?i:l){0,1}(?i:kb|mb|gb|tb|pb){0,1}(?!\w|\d)</string>
<key>name</key>
<string>constant.numeric.hexadecimal.powershell</string>
</dict>
</array>
</dict>
<key>operators</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>comment</key>
<string>Comparison</string>
<key>match</key>
<string>(?&lt;=\d|\s|^)-(?i:as|is|isnot|in|notin|join|((c|i)?(eq|ne|gt|lt|ge|le|like|notlike|split|replace|contains|notcontains|match|notmatch))|shl|shr)\b(?!\.|\\)</string>
<key>name</key>
<string>keyword.operator.comparison.powershell</string>
</dict>
<dict>
<key>comment</key>
<string>Bitwise</string>
<key>match</key>
<string>(?&lt;=\d|\s|^)-(?i:band|bor|bxor|bnot|shr|shl)\b</string>
<key>name</key>
<string>keyword.operator.bitwise.powershell</string>
</dict>
<dict>
<key>comment</key>
<string>Logical</string>
<key>match</key>
<string>(?&lt;=\d|\s|^)-(?i:and|or|xor)\b</string>
<key>name</key>
<string>keyword.operator.logical.powershell</string>
</dict>
<dict>
<key>comment</key>
<string>Format</string>
<key>match</key>
<string>(?&lt;=\d|\s|^)-(?i:f)\b</string>
<key>name</key>
<string>keyword.operator.format.powershell</string>
</dict>
<dict>
<key>comment</key>
<string>Assignment</string>
<key>match</key>
<string>(=|-=|\+=|\*=|/=|%=)</string>
<key>name</key>
<string>keyword.operator.assignment.powershell</string>
</dict>
<dict>
<key>comment</key>
<string>Logical NOT</string>
<key>match</key>
<string>(?&lt;=\d|\s|^)((?i:-not)|!)</string>
<key>name</key>
<string>keyword.operator.unary.logical-not.powershell</string>
</dict>
<dict>
<key>comment</key>
<string>Multiplicative</string>
<key>match</key>
<string>([*/%])(?!\.)</string>
<key>name</key>
<string>keyword.operator.multiplicative.powershell</string>
</dict>
<dict>
<key>comment</key>
<string>Unary Plus</string>
<key>match</key>
<string>([+](?=\$|\(|"))</string>
<key>name</key>
<string>keyword.operator.unary-plus.powershell</string>
</dict>
<dict>
<key>comment</key>
<string>Unary Minus</string>
<key>match</key>
<string>([-](?=\$|\(|"))</string>
<key>name</key>
<string>keyword.operator.unary-minus.powershell</string>
</dict>
<dict>
<key>comment</key>
<string>Additive</string>
<key>match</key>
<string>([+-])(?!\{|\p{L}|@)</string>
<key>name</key>
<string>keyword.operator.additive.powershell</string>
</dict>
<dict>
<key>comment</key>
<string>Range</string>
<key>match</key>
<string>(\.\.)</string>
<key>name</key>
<string>keyword.operator.range.powershell</string>
</dict>
<dict>
<key>comment</key>
<string>Command invocation (Call)</string>
<key>match</key>
<string>(&amp;|\|)</string>
<key>name</key>
<string>keyword.operator.other.powershell</string>
</dict>
</array>
</dict>
<key>redirection</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>comment</key>
<string>Merging redirection</string>
<key>match</key>
<string>(?&lt;=\s|^)([2-6\*]?&gt;&amp;1)</string>
<key>name</key>
<string>keyword.operator.redirection.powershell</string>
</dict>
<dict>
<key>comment</key>
<string>File redirection</string>
<key>match</key>
<string>(?&lt;=\s|^)(([1-6\*]?&gt;{1,2})|(&lt;))</string>
<key>name</key>
<string>keyword.operator.redirection.powershell</string>
</dict>
</array>
</dict>
<key>reservedWords</key>
<dict>
<key>match</key>
<string>(\b(?&lt;!-|\$)(?i:configuration|node|process|enum|filter|sequence|class|data|define|function|dynamicparam|inlinescript|var|parallel|param|workflow)\b(?!-|\.))</string>
<key>name</key>
<string>keyword.other.powershell</string>
</dict>
<key>scriptBlock</key>
<dict>
<key>begin</key>
<string>(\{)</string>
<key>end</key>
<string>(\})</string>
<key>name</key>
<string>meta.scriptblock.powershell</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>$self</string>
</dict>
<dict>
<key>include</key>
<string>#defaultKeyword</string>
</dict>
</array>
</dict>
<key>stringDoubleQuoted</key>
<dict>
<key>begin</key>
<string>((?&lt;!\")\")</string>
<key>end</key>
<string>(\"(?!\"))</string>
<key>name</key>
<string>string.quoted.double.powershell</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#illegalVariable</string>
</dict>
<dict>
<key>include</key>
<string>#stringEscapeChars</string>
</dict>
<dict>
<key>include</key>
<string>#variableWithoutPropertyHighlighting</string>
</dict>
<dict>
<key>include</key>
<string>#subExpression</string>
</dict>
</array>
</dict>
<key>stringDoubleQuotedHeredoc</key>
<dict>
<key>begin</key>
<string>(\@"\s*$)</string>
<key>end</key>
<string>^"\@</string>
<key>name</key>
<string>string.quoted.double.heredoc.powershell</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#illegalVariable</string>
</dict>
<dict>
<key>include</key>
<string>#stringEscapeChars</string>
</dict>
<dict>
<key>include</key>
<string>#variableWithoutPropertyHighlighting</string>
</dict>
<dict>
<key>include</key>
<string>#subExpression</string>
</dict>
<dict>
<key>include</key>
<string>#scriptBlock</string>
</dict>
</array>
</dict>
<key>stringEscapeChars</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>(`[0abfnrtv"'$`])</string>
<key>name</key>
<string>constant.character.escape.powershell</string>
</dict>
<dict>
<key>match</key>
<string>("")</string>
<key>name</key>
<string>constant.character.escape.powershell</string>
</dict>
</array>
</dict>
<key>stringSingleQuoted</key>
<dict>
<key>begin</key>
<string>((?&lt;!')')</string>
<key>end</key>
<string>('(?!'))</string>
<key>name</key>
<string>string.quoted.single.powershell</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#stringSingleQuotedDouble</string>
</dict>
</array>
</dict>
<key>stringSingleQuotedDouble</key>
<dict>
<key>match</key>
<string>('')</string>
<key>name</key>
<string>constant.character.escape.powershell</string>
</dict>
<key>stringSingleQuotedHeredoc</key>
<dict>
<key>begin</key>
<string>(\@'\s*$)</string>
<key>end</key>
<string>^'\@</string>
<key>name</key>
<string>string.quoted.single.heredoc.powershell</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#stringSingleQuotedDouble</string>
</dict>
</array>
</dict>
<key>subExpression</key>
<dict>
<key>begin</key>
<string>(\$\()</string>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.other.powershell</string>
</dict>
</dict>
<key>end</key>
<string>(\))</string>
<key>name</key>
<string>meta.subexpression.powershell</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>$self</string>
</dict>
<dict>
<key>match</key>
<string>(.)</string>
<key>name</key>
<string>source.powershell</string>
</dict>
</array>
</dict>
<key>switch</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.powershell</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>variable.parameter.powershell</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>variable.parameter.powershell</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>variable.parameter.powershell</string>
</dict>
</dict>
<key>comment</key>
<string>switch [-regex|-wildcard|-exact][-casesensitive] -file filename</string>
<key>match</key>
<string>\b(?i:(switch))\b\s+(?i:(-regex|-wildcard|-exact){0,1})\s*(?i:(-casesensitive){0,1})\s*(?i:(-file))\s+</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.powershell</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>variable.parameter.powershell</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>variable.parameter.powershell</string>
</dict>
</dict>
<key>comment</key>
<string>switch [-regex|-wildcard|-exact][-casesensitive] (&lt;value&gt;)</string>
<key>match</key>
<string>\b(?i:(switch))\b\s+(?i:(-regex|-wildcard|-exact){0,1})\s*(?i:(-casesensitive){0,1})\s*</string>
</dict>
</array>
</dict>
<key>type</key>
<dict>
<key>begin</key>
<string>\[</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.other.powershell</string>
</dict>
</dict>
<key>comment</key>
<string>Type []</string>
<key>end</key>
<string>(\])(::[\w]+)*((\.[\w"']+)*)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.powershell</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>meta.method.powershell</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>entity.other.attribute-name.powershell</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>\(</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.other.powershell</string>
</dict>
</dict>
<key>comment</key>
<string>Parenthesis ()</string>
<key>end</key>
<string>\)</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.other.powershell</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>$self</string>
</dict>
<dict>
<key>comment</key>
<string>Reserved words within [( )]</string>
<key>match</key>
<string>\b(?i)(mandatory|valuefrompipeline|valuefrompipelinebypropertyname|valuefromremainingarguments|position|parametersetname|defaultparametersetname|supportsshouldprocess|positionalbinding|helpuri|confirmimpact)\b</string>
<key>name</key>
<string>entity.other.attribute-name.powershell</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>$self</string>
</dict>
<dict>
<key>match</key>
<string>(.(`){0,2}(\d){0,2})</string>
<key>name</key>
<string>entity.name.type</string>
</dict>
</array>
</dict>
<key>variable</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>comment</key>
<string>Invalid variable name</string>
<key>match</key>
<string>(\$)(\w+-\w+)\b</string>
<key>name</key>
<string>invalid.illegal.powershell</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.language.powershell</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>constant.language.powershell</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>entity.other.attribute-name.powershell</string>
</dict>
</dict>
<key>comment</key>
<string>Automatic variables - read-only.</string>
<key>match</key>
<string>(\$)(?i:(_|args|consolefilename|error|event|eventsubscriber|executioncontext|false|foreach|home|host|input|lastexitcode|matches|myinvocation|nestedpromptlevel|null|pid|psboundparameters|pscmdlet|psculture|psdebugcontext|pshome|psitem|psscriptroot|psuiculture|psversiontable|pwd|sender|shellid|sourceargs|sourceeventargs|switch|this|true))\b((\.[\w"']+)*)</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.powershell</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.modifier.scope.powershell</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>variable.other.readwrite.powershell</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>variable.other.readwrite.powershell</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>entity.other.attribute-name.powershell</string>
</dict>
</dict>
<key>comment</key>
<string>$var, $local:var</string>
<key>match</key>
<string>(\$)((?i:global|local|script|private|using|env|function|alias|cert|variable|hkcu|hklm|wsman):)?(\w+)(:\w+)?((\.[\w"']+)*)</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.powershell</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.other.powershell</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>storage.modifier.scope.powershell</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>variable.other.readwrite.powershell</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>keyword.other.powershell</string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>entity.other.attribute-name.powershell</string>
</dict>
</dict>
<key>comment</key>
<string>${var}, ${script:var}</string>
<key>match</key>
<string>(\$)(\{)((?i:global|local|script|private|using|env|function|alias|cert|variable|hkcu|hklm|wsman):)?(.+)(\})((\.[\w"']+)*)</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.powershell</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>variable.other.readwrite.powershell</string>
</dict>
</dict>
<key>comment</key>
<string>Splatting</string>
<key>match</key>
<string>(@)(\w+)</string>
</dict>
</array>
</dict>
<key>variableWithoutPropertyHighlighting</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>comment</key>
<string>Invalid variable name</string>
<key>match</key>
<string>(\$)(\w+-\w+)\b</string>
<key>name</key>
<string>invalid.illegal.powershell</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.language.powershell</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>constant.language.powershell</string>
</dict>
</dict>
<key>comment</key>
<string>Automatic variables - read-only.</string>
<key>match</key>
<string>(\$)(?i:(_|args|consolefilename|error|event|eventsubscriber|executioncontext|false|foreach|home|host|input|lastexitcode|matches|myinvocation|nestedpromptlevel|null|pid|psboundparameters|pscmdlet|psculture|psdebugcontext|pshome|psitem|psscriptroot|psuiculture|psversiontable|pwd|sender|shellid|sourceargs|sourceeventargs|switch|this|true))\b</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.powershell</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.modifier.scope.powershell</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>variable.other.readwrite.powershell</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>variable.other.readwrite.powershell</string>
</dict>
</dict>
<key>comment</key>
<string>$var, $local:var</string>
<key>match</key>
<string>(\$)((?i:global|local|script|private|using|env|function|alias|cert|variable|hkcu|hklm|wsman):)?(\w+)(:\w+)?</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.powershell</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.other.powershell</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>storage.modifier.scope.powershell</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>variable.other.readwrite.powershell</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>keyword.other.powershell</string>
</dict>
</dict>
<key>comment</key>
<string>${var}, ${script:var}</string>
<key>match</key>
<string>(\$)(\{)((?i:global|local|script|private|using|env|function|alias|cert|variable|hkcu|hklm|wsman):)?(.+)(\})</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.powershell</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>variable.other.readwrite.powershell</string>
</dict>
</dict>
<key>comment</key>
<string>Splatting</string>
<key>match</key>
<string>(@)(\w+)</string>
</dict>
</array>
</dict>
</dict>
<key>scopeName</key>
<string>source.powershell</string>
<key>uuid</key>
<string>f8f5ffb0-503e-11df-9879-0800200c9a66</string>
</dict>
</plist>