...

Text file src/github.com/alecthomas/chroma/v2/lexers/embedded/powershell.xml

Documentation: github.com/alecthomas/chroma/v2/lexers/embedded

     1<lexer>
     2  <config>
     3    <name>PowerShell</name>
     4    <alias>powershell</alias>
     5    <alias>posh</alias>
     6    <alias>ps1</alias>
     7    <alias>psm1</alias>
     8    <alias>psd1</alias>
     9    <alias>pwsh</alias>
    10    <filename>*.ps1</filename>
    11    <filename>*.psm1</filename>
    12    <filename>*.psd1</filename>
    13    <mime_type>text/x-powershell</mime_type>
    14    <case_insensitive>true</case_insensitive>
    15    <dot_all>true</dot_all>
    16  </config>
    17  <rules>
    18    <state name="root">
    19      <rule pattern="\(">
    20        <token type="Punctuation"/>
    21        <push state="child"/>
    22      </rule>
    23      <rule pattern="\s+">
    24        <token type="Text"/>
    25      </rule>
    26      <rule pattern="(\s*)(#)(requires)(\s+)">
    27        <bygroups>
    28          <token type="TextWhitespace"/>
    29          <token type="Comment"/>
    30          <token type="Keyword"/>
    31          <token type="TextWhitespace"/>
    32        </bygroups>
    33        <push state="requires"/>
    34      </rule>
    35      <rule pattern="^(\s*#[#\s]*)(\.(?:component|description|example|externalhelp|forwardhelpcategory|forwardhelptargetname|functionality|inputs|link|notes|outputs|parameter|remotehelprunspace|role|synopsis))([^\n]*$)">
    36        <bygroups>
    37          <token type="Comment"/>
    38          <token type="LiteralStringDoc"/>
    39          <token type="Comment"/>
    40        </bygroups>
    41      </rule>
    42      <rule pattern="#[^\n]*?$">
    43        <token type="Comment"/>
    44      </rule>
    45      <rule pattern="(&amp;lt;|&lt;)#">
    46        <token type="CommentMultiline"/>
    47        <push state="multline"/>
    48      </rule>
    49      <rule pattern="(?i)([A-Z]:)">
    50        <token type="Name"/>
    51      </rule>
    52      <rule pattern="@&#34;\n">
    53        <token type="LiteralStringHeredoc"/>
    54        <push state="heredoc-double"/>
    55      </rule>
    56      <rule pattern="@&#39;\n.*?\n&#39;@">
    57        <token type="LiteralStringHeredoc"/>
    58      </rule>
    59      <rule pattern="@(?=\(|{)|\$(?=\()">
    60        <token type="NameVariableMagic"/>
    61      </rule>
    62      <rule pattern="`[\&#39;&#34;$@-]">
    63        <token type="Punctuation"/>
    64      </rule>
    65      <rule pattern="&#34;">
    66        <token type="LiteralStringDouble"/>
    67        <push state="string"/>
    68      </rule>
    69      <rule pattern="&#39;([^&#39;]|&#39;&#39;)*&#39;">
    70        <token type="LiteralStringSingle"/>
    71      </rule>
    72      <rule pattern="(?&lt;!\S)(function|filter|workflow)(\s*)(global:|script:|private:|env:)?(\w\S*\b)">
    73        <bygroups>
    74          <token type="KeywordDeclaration"/>
    75          <token type="TextWhitespace"/>
    76          <token type="NameVariableMagic"/>
    77          <token type="NameBuiltin"/>
    78        </bygroups>
    79      </rule>
    80      <rule pattern="(?&lt;!\S)(class|configuration)(\s+)(\w\S*)(\s*)(:*)">
    81        <bygroups>
    82          <token type="KeywordDeclaration"/>
    83          <token type="TextWhitespace"/>
    84          <token type="NameBuiltin"/>
    85          <token type="NameBuiltin"/>
    86          <token type="NameBuiltin"/>
    87        </bygroups>
    88      </rule>
    89      <rule pattern="\$false|\$null|\$true(?=\b)">
    90        <token type="NameVariableMagic"/>
    91      </rule>
    92      <rule pattern="(\$|@@|@)((global|script|private|env):)?\w+">
    93        <token type="NameVariable"/>
    94      </rule>
    95      <rule pattern="(parameter|validatenotnullorempty|validatescript|validaterange|validateset|validaterange|validatepattern|validatelength|validatecount|validatenotnullorempty|validatescript|cmdletbinding|alias)\b">
    96        <token type="NameBuiltin"/>
    97      </rule>
    98      <rule pattern="[a-z]\w*-[a-z]\w*\b">
    99        <token type="NameBuiltin"/>
   100      </rule>
   101      <rule pattern="(mandatory|parametersetname|position|helpmessage|valuefrompipeline|valuefrompipelinebypropertyname|valuefromremainingarguments|dontshow)\b">
   102        <token type="NameAttribute"/>
   103      </rule>
   104      <rule pattern="(confirmimpact|defaultparametersetname|helpuri|supportspaging|supportsshouldprocess|positionalbinding)\b">
   105        <token type="NameAttribute"/>
   106      </rule>
   107      <rule pattern="(while|until|trap|switch|return|ref|process|param|parameter|in|if|global:|foreach|for|finally|filter|end|elseif|else|dynamicparam|do|default|continue|break|begin|\?|%|#script|#private|#local|#global|try|catch|throw)\b">
   108        <token type="Keyword"/>
   109      </rule>
   110      <rule pattern="-(and|as|band|bnot|bor|bxor|casesensitive|ccontains|ceq|cge|cgt|cle|clike|clt|cmatch|cne|cnotcontains|cnotlike|cnotmatch|contains|creplace|eq|exact|f|file|ge|gt|icontains|ieq|ige|igt|ile|ilike|ilt|imatch|ine|inotcontains|inotlike|inotmatch|ireplace|is|isnot|le|like|lt|match|ne|not|notcontains|notlike|notmatch|or|regex|replace|wildcard)\b">
   111        <token type="Operator"/>
   112      </rule>
   113      <rule pattern="(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|foreach|ft|fw|gal|gbp|gc|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|pwd|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|select|set|shcm|si|sl|sleep|sls|sort|sp|spjb|spps|spsv|start|sujb|sv|swmi|tee|trcm|type|wget|where|wjb|write)\s">
   114        <token type="NameBuiltin"/>
   115      </rule>
   116      <rule pattern="(\[)([a-z_\[][\w. `,\[\]]*)(\])">
   117        <bygroups>
   118          <token type="Punctuation"/>
   119          <token type="NameConstant"/>
   120          <token type="Punctuation"/>
   121        </bygroups>
   122      </rule>
   123      <rule pattern="(?&lt;!\[)(?&lt;=\S[^\*|\n]\.)\w+(?=\s+|\(|\{|\.)">
   124        <token type="NameProperty"/>
   125      </rule>
   126      <rule pattern="(?&lt;!\w)([-+]?(?:[0-9]+)?\.?[0-9]+(?:(?:e|E)[0-9]+)?(?:F|f|D|d|M|m)?)((?i:[kmgtp]b)?)\b">
   127        <bygroups>
   128          <token type="LiteralNumberFloat"/>
   129          <token type="Punctuation"/>
   130        </bygroups>
   131      </rule>
   132      <rule pattern="-[a-z_]\w*:*">
   133        <token type="Name"/>
   134      </rule>
   135      <rule pattern="\w+">
   136        <token type="Name"/>
   137      </rule>
   138      <rule pattern="[.,;@{}\[\]$()=+*/\\&amp;%!~?^\x60|&lt;&gt;-]|::">
   139        <token type="Punctuation"/>
   140      </rule>
   141    </state>
   142    <state name="requires">
   143      <rule pattern="\s*\n|\s*$">
   144        <token type="TextWhitespace"/>
   145        <pop depth="1"/>
   146      </rule>
   147      <rule pattern="-(?i:modules|pssnapin|runasadministrator|ahellid|version|assembly|psedition)">
   148        <token type="KeywordDeclaration"/>
   149      </rule>
   150      <rule pattern="-\S*\b">
   151        <token type="Comment"/>
   152      </rule>
   153      <rule pattern="\s+(\S+)">
   154        <token type="NameAttribute"/>
   155      </rule>
   156    </state>
   157    <state name="child">
   158      <rule pattern="\)">
   159        <token type="Punctuation"/>
   160        <pop depth="1"/>
   161      </rule>
   162      <rule>
   163        <include state="root"/>
   164      </rule>
   165    </state>
   166    <state name="multline">
   167      <rule pattern="[^#&amp;.]+">
   168        <token type="CommentMultiline"/>
   169      </rule>
   170      <rule pattern="#(&gt;|&amp;gt;)">
   171        <token type="CommentMultiline"/>
   172        <pop depth="1"/>
   173      </rule>
   174      <rule pattern="(\s*\.)(component|description|example|externalhelp|forwardhelpcategory|forwardhelptargetname|functionality|inputs|link|notes|outputs|parameter|remotehelprunspace|role|synopsis)(\s*$)">
   175        <bygroups>
   176          <token type="CommentMultiline"/>
   177          <token type="LiteralStringDoc"/>
   178          <token type="CommentMultiline"/>
   179        </bygroups>
   180      </rule>
   181      <rule pattern="[#&amp;.]">
   182        <token type="CommentMultiline"/>
   183      </rule>
   184    </state>
   185    <state name="string">
   186      <rule pattern="`[0abfnrtv&#39;\&#34;$`]">
   187        <token type="LiteralStringEscape"/>
   188      </rule>
   189      <rule pattern="[^$`&#34;]+">
   190        <token type="LiteralStringDouble"/>
   191      </rule>
   192      <rule pattern="\$\(">
   193        <token type="Punctuation"/>
   194        <push state="child"/>
   195      </rule>
   196      <rule pattern="((\$)((global|script|private|env):)?\w+)|((\$){((global|script|private|env):)?\w+})">
   197        <token type="NameVariable"/>
   198      </rule>
   199      <rule pattern="&#34;&#34;">
   200        <token type="LiteralStringDouble"/>
   201      </rule>
   202      <rule pattern="[`$]">
   203        <token type="LiteralStringDouble"/>
   204      </rule>
   205      <rule pattern="&#34;">
   206        <token type="LiteralStringDouble"/>
   207        <pop depth="1"/>
   208      </rule>
   209    </state>
   210    <state name="heredoc-double">
   211      <rule pattern="\n&#34;@">
   212        <token type="LiteralStringHeredoc"/>
   213        <pop depth="1"/>
   214      </rule>
   215      <rule pattern="\$\(">
   216        <token type="Punctuation"/>
   217        <push state="child"/>
   218      </rule>
   219      <rule pattern="((\$)((global|script|private|env):)?\w+)|((\$){((global|script|private|env):)?\w+})">
   220        <token type="NameVariable"/>
   221      </rule>
   222      <rule pattern="[^@\n]+&#34;]">
   223        <token type="LiteralStringHeredoc"/>
   224      </rule>
   225      <rule pattern=".">
   226        <token type="LiteralStringHeredoc"/>
   227      </rule>
   228    </state>
   229  </rules>
   230</lexer>

View as plain text