...
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="(&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="@"\n">
53 <token type="LiteralStringHeredoc"/>
54 <push state="heredoc-double"/>
55 </rule>
56 <rule pattern="@'\n.*?\n'@">
57 <token type="LiteralStringHeredoc"/>
58 </rule>
59 <rule pattern="@(?=\(|{)|\$(?=\()">
60 <token type="NameVariableMagic"/>
61 </rule>
62 <rule pattern="`[\'"$@-]">
63 <token type="Punctuation"/>
64 </rule>
65 <rule pattern=""">
66 <token type="LiteralStringDouble"/>
67 <push state="string"/>
68 </rule>
69 <rule pattern="'([^']|'')*'">
70 <token type="LiteralStringSingle"/>
71 </rule>
72 <rule pattern="(?<!\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="(?<!\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="(?<!\[)(?<=\S[^\*|\n]\.)\w+(?=\s+|\(|\{|\.)">
124 <token type="NameProperty"/>
125 </rule>
126 <rule pattern="(?<!\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="[.,;@{}\[\]$()=+*/\\&%!~?^\x60|<>-]|::">
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="[^#&.]+">
168 <token type="CommentMultiline"/>
169 </rule>
170 <rule pattern="#(>|&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="[#&.]">
182 <token type="CommentMultiline"/>
183 </rule>
184 </state>
185 <state name="string">
186 <rule pattern="`[0abfnrtv'\"$`]">
187 <token type="LiteralStringEscape"/>
188 </rule>
189 <rule pattern="[^$`"]+">
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="""">
200 <token type="LiteralStringDouble"/>
201 </rule>
202 <rule pattern="[`$]">
203 <token type="LiteralStringDouble"/>
204 </rule>
205 <rule pattern=""">
206 <token type="LiteralStringDouble"/>
207 <pop depth="1"/>
208 </rule>
209 </state>
210 <state name="heredoc-double">
211 <rule pattern="\n"@">
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]+"]">
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