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