...
1<lexer>
2 <config>
3 <name>TypeScript</name>
4 <alias>ts</alias>
5 <alias>tsx</alias>
6 <alias>typescript</alias>
7 <filename>*.ts</filename>
8 <filename>*.tsx</filename>
9 <filename>*.mts</filename>
10 <filename>*.cts</filename>
11 <mime_type>text/x-typescript</mime_type>
12 <dot_all>true</dot_all>
13 <ensure_nl>true</ensure_nl>
14 </config>
15 <rules>
16 <state name="expression">
17 <rule pattern="{">
18 <token type="Punctuation"/>
19 <push/>
20 </rule>
21 <rule pattern="}">
22 <token type="Punctuation"/>
23 <pop depth="1"/>
24 </rule>
25 <rule>
26 <include state="root"/>
27 </rule>
28 </state>
29 <state name="jsx">
30 <rule pattern="(<)(/?)(>)">
31 <bygroups>
32 <token type="Punctuation"/>
33 <token type="Punctuation"/>
34 <token type="Punctuation"/>
35 </bygroups>
36 </rule>
37 <rule pattern="(<)([\w\.]+)">
38 <bygroups>
39 <token type="Punctuation"/>
40 <token type="NameTag"/>
41 </bygroups>
42 <push state="tag"/>
43 </rule>
44 <rule pattern="(<)(/)([\w\.]*)(>)">
45 <bygroups>
46 <token type="Punctuation"/>
47 <token type="Punctuation"/>
48 <token type="NameTag"/>
49 <token type="Punctuation"/>
50 </bygroups>
51 </rule>
52 </state>
53 <state name="tag">
54 <rule pattern="\s+">
55 <token type="Text"/>
56 </rule>
57 <rule pattern="([\w]+\s*)(=)(\s*)">
58 <bygroups>
59 <token type="NameAttribute"/>
60 <token type="Operator"/>
61 <token type="Text"/>
62 </bygroups>
63 <push state="attr"/>
64 </rule>
65 <rule pattern="[{}]+">
66 <token type="Punctuation"/>
67 </rule>
68 <rule pattern="[\w\.]+">
69 <token type="NameAttribute"/>
70 </rule>
71 <rule pattern="(/?)(\s*)(>)">
72 <bygroups>
73 <token type="Punctuation"/>
74 <token type="Text"/>
75 <token type="Punctuation"/>
76 </bygroups>
77 <pop depth="1"/>
78 </rule>
79 </state>
80 <state name="commentsandwhitespace">
81 <rule pattern="\s+">
82 <token type="Text"/>
83 </rule>
84 <rule pattern="<!--">
85 <token type="Comment"/>
86 </rule>
87 <rule pattern="//.*?\n">
88 <token type="CommentSingle"/>
89 </rule>
90 <rule pattern="/\*.*?\*/">
91 <token type="CommentMultiline"/>
92 </rule>
93 </state>
94 <state name="badregex">
95 <rule pattern="\n">
96 <token type="Text"/>
97 <pop depth="1"/>
98 </rule>
99 </state>
100 <state name="interp">
101 <rule pattern="`">
102 <token type="LiteralStringBacktick"/>
103 <pop depth="1"/>
104 </rule>
105 <rule pattern="\\\\">
106 <token type="LiteralStringBacktick"/>
107 </rule>
108 <rule pattern="\\`">
109 <token type="LiteralStringBacktick"/>
110 </rule>
111 <rule pattern="\$\{">
112 <token type="LiteralStringInterpol"/>
113 <push state="interp-inside"/>
114 </rule>
115 <rule pattern="\$">
116 <token type="LiteralStringBacktick"/>
117 </rule>
118 <rule pattern="[^`\\$]+">
119 <token type="LiteralStringBacktick"/>
120 </rule>
121 </state>
122 <state name="attr">
123 <rule pattern="{">
124 <token type="Punctuation"/>
125 <push state="expression"/>
126 </rule>
127 <rule pattern="".*?"">
128 <token type="LiteralString"/>
129 <pop depth="1"/>
130 </rule>
131 <rule pattern="'.*?'">
132 <token type="LiteralString"/>
133 <pop depth="1"/>
134 </rule>
135 <rule>
136 <pop depth="1"/>
137 </rule>
138 </state>
139 <state name="interp-inside">
140 <rule pattern="\}">
141 <token type="LiteralStringInterpol"/>
142 <pop depth="1"/>
143 </rule>
144 <rule>
145 <include state="root"/>
146 </rule>
147 </state>
148 <state name="slashstartsregex">
149 <rule>
150 <include state="commentsandwhitespace"/>
151 </rule>
152 <rule pattern="/(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/([gim]+\b|\B)">
153 <token type="LiteralStringRegex"/>
154 <pop depth="1"/>
155 </rule>
156 <rule pattern="(?=/)">
157 <token type="Text"/>
158 <push state="#pop" state="badregex"/>
159 </rule>
160 <rule>
161 <pop depth="1"/>
162 </rule>
163 </state>
164 <state name="root">
165 <rule>
166 <include state="jsx"/>
167 </rule>
168 <rule pattern="^(?=\s|/|<!--)">
169 <token type="Text"/>
170 <push state="slashstartsregex"/>
171 </rule>
172 <rule>
173 <include state="commentsandwhitespace"/>
174 </rule>
175 <rule pattern="\+\+|--|~|&&|\?|:|\|\||\\(?=\n)|(<<|>>>?|==?|!=?|[-<>+*%&|^/])=?">
176 <token type="Operator"/>
177 <push state="slashstartsregex"/>
178 </rule>
179 <rule pattern="[{(\[;,]">
180 <token type="Punctuation"/>
181 <push state="slashstartsregex"/>
182 </rule>
183 <rule pattern="[})\].]">
184 <token type="Punctuation"/>
185 </rule>
186 <rule pattern="(for|in|of|while|do|break|return|yield|continue|switch|case|default|if|else|throw|try|catch|finally|new|delete|typeof|instanceof|keyof|asserts|is|infer|await|void|this)\b">
187 <token type="Keyword"/>
188 <push state="slashstartsregex"/>
189 </rule>
190 <rule pattern="(var|let|with|function)\b">
191 <token type="KeywordDeclaration"/>
192 <push state="slashstartsregex"/>
193 </rule>
194 <rule pattern="(abstract|async|boolean|class|const|debugger|enum|export|extends|from|get|global|goto|implements|import|interface|namespace|package|private|protected|public|readonly|require|set|static|super|type)\b">
195 <token type="KeywordReserved"/>
196 </rule>
197 <rule pattern="(true|false|null|NaN|Infinity|undefined)\b">
198 <token type="KeywordConstant"/>
199 </rule>
200 <rule pattern="(Array|Boolean|Date|Error|Function|Math|Number|Object|Packages|RegExp|String|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|document|this|window)\b">
201 <token type="NameBuiltin"/>
202 </rule>
203 <rule pattern="\b(module)(\s*)(\s*[\w?.$][\w?.$]*)(\s*)">
204 <bygroups>
205 <token type="KeywordReserved"/>
206 <token type="Text"/>
207 <token type="NameOther"/>
208 <token type="Text"/>
209 </bygroups>
210 <push state="slashstartsregex"/>
211 </rule>
212 <rule pattern="\b(string|bool|number|any|never|object|symbol|unique|unknown|bigint)\b">
213 <token type="KeywordType"/>
214 </rule>
215 <rule pattern="\b(constructor|declare|interface|as)\b">
216 <token type="KeywordReserved"/>
217 </rule>
218 <rule pattern="(super)(\s*)(\([\w,?.$\s]+\s*\))">
219 <bygroups>
220 <token type="KeywordReserved"/>
221 <token type="Text"/>
222 </bygroups>
223 <push state="slashstartsregex"/>
224 </rule>
225 <rule pattern="([a-zA-Z_?.$][\w?.$]*)\(\) \{">
226 <token type="NameOther"/>
227 <push state="slashstartsregex"/>
228 </rule>
229 <rule pattern="([\w?.$][\w?.$]*)(\s*:\s*)([\w?.$][\w?.$]*)">
230 <bygroups>
231 <token type="NameOther"/>
232 <token type="Text"/>
233 <token type="KeywordType"/>
234 </bygroups>
235 </rule>
236 <rule pattern="[$a-zA-Z_]\w*">
237 <token type="NameOther"/>
238 </rule>
239 <rule pattern="[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?">
240 <token type="LiteralNumberFloat"/>
241 </rule>
242 <rule pattern="0x[0-9a-fA-F]+">
243 <token type="LiteralNumberHex"/>
244 </rule>
245 <rule pattern="[0-9]+">
246 <token type="LiteralNumberInteger"/>
247 </rule>
248 <rule pattern=""(\\\\|\\"|[^"])*"">
249 <token type="LiteralStringDouble"/>
250 </rule>
251 <rule pattern="'(\\\\|\\'|[^'])*'">
252 <token type="LiteralStringSingle"/>
253 </rule>
254 <rule pattern="`">
255 <token type="LiteralStringBacktick"/>
256 <push state="interp"/>
257 </rule>
258 <rule pattern="@\w+">
259 <token type="KeywordDeclaration"/>
260 </rule>
261 </state>
262 </rules>
263</lexer>
View as plain text