dart.xml

  1<lexer>
  2  <config>
  3    <name>Dart</name>
  4    <alias>dart</alias>
  5    <filename>*.dart</filename>
  6    <mime_type>text/x-dart</mime_type>
  7    <dot_all>true</dot_all>
  8  </config>
  9  <rules>
 10    <state name="string_double_multiline">
 11      <rule pattern="&#34;&#34;&#34;">
 12        <token type="LiteralStringDouble"/>
 13        <pop depth="1"/>
 14      </rule>
 15      <rule pattern="[^&#34;$\\]+">
 16        <token type="LiteralStringDouble"/>
 17      </rule>
 18      <rule>
 19        <include state="string_common"/>
 20      </rule>
 21      <rule pattern="(\$|\&#34;)+">
 22        <token type="LiteralStringDouble"/>
 23      </rule>
 24    </state>
 25    <state name="class">
 26      <rule pattern="[a-zA-Z_$]\w*">
 27        <token type="NameClass"/>
 28        <pop depth="1"/>
 29      </rule>
 30    </state>
 31    <state name="import_decl">
 32      <rule>
 33        <include state="string_literal"/>
 34      </rule>
 35      <rule pattern="\s+">
 36        <token type="Text"/>
 37      </rule>
 38      <rule pattern="\b(as|show|hide)\b">
 39        <token type="Keyword"/>
 40      </rule>
 41      <rule pattern="[a-zA-Z_$]\w*">
 42        <token type="Name"/>
 43      </rule>
 44      <rule pattern="\,">
 45        <token type="Punctuation"/>
 46      </rule>
 47      <rule pattern="\;">
 48        <token type="Punctuation"/>
 49        <pop depth="1"/>
 50      </rule>
 51    </state>
 52    <state name="string_single_multiline">
 53      <rule pattern="&#39;&#39;&#39;">
 54        <token type="LiteralStringSingle"/>
 55        <pop depth="1"/>
 56      </rule>
 57      <rule pattern="[^\&#39;$\\]+">
 58        <token type="LiteralStringSingle"/>
 59      </rule>
 60      <rule>
 61        <include state="string_common"/>
 62      </rule>
 63      <rule pattern="(\$|\&#39;)+">
 64        <token type="LiteralStringSingle"/>
 65      </rule>
 66    </state>
 67    <state name="root">
 68      <rule>
 69        <include state="string_literal"/>
 70      </rule>
 71      <rule pattern="#!(.*?)$">
 72        <token type="CommentPreproc"/>
 73      </rule>
 74      <rule pattern="\b(import|export)\b">
 75        <token type="Keyword"/>
 76        <push state="import_decl"/>
 77      </rule>
 78      <rule pattern="\b(library|source|part of|part)\b">
 79        <token type="Keyword"/>
 80      </rule>
 81      <rule pattern="[^\S\n]+">
 82        <token type="Text"/>
 83      </rule>
 84      <rule pattern="//.*?\n">
 85        <token type="CommentSingle"/>
 86      </rule>
 87      <rule pattern="/\*.*?\*/">
 88        <token type="CommentMultiline"/>
 89      </rule>
 90      <rule pattern="\b(class)\b(\s+)">
 91        <bygroups>
 92          <token type="KeywordDeclaration"/>
 93          <token type="Text"/>
 94        </bygroups>
 95        <push state="class"/>
 96      </rule>
 97      <rule pattern="\b(assert|break|case|catch|continue|default|do|else|finally|for|if|in|is|new|return|super|switch|this|throw|try|while)\b">
 98        <token type="Keyword"/>
 99      </rule>
100      <rule pattern="\b(abstract|async|await|const|extends|factory|final|get|implements|native|operator|required|set|static|sync|typedef|var|with|yield)\b">
101        <token type="KeywordDeclaration"/>
102      </rule>
103      <rule pattern="\b(bool|double|dynamic|int|num|Object|String|void)\b">
104        <token type="KeywordType"/>
105      </rule>
106      <rule pattern="\b(false|null|true)\b">
107        <token type="KeywordConstant"/>
108      </rule>
109      <rule pattern="[~!%^&amp;*+=|?:&lt;&gt;/-]|as\b">
110        <token type="Operator"/>
111      </rule>
112      <rule pattern="[a-zA-Z_$]\w*:">
113        <token type="NameLabel"/>
114      </rule>
115      <rule pattern="[a-zA-Z_$]\w*">
116        <token type="Name"/>
117      </rule>
118      <rule pattern="[(){}\[\],.;]">
119        <token type="Punctuation"/>
120      </rule>
121      <rule pattern="0[xX][0-9a-fA-F]+">
122        <token type="LiteralNumberHex"/>
123      </rule>
124      <rule pattern="\d+(\.\d*)?([eE][+-]?\d+)?">
125        <token type="LiteralNumber"/>
126      </rule>
127      <rule pattern="\.\d+([eE][+-]?\d+)?">
128        <token type="LiteralNumber"/>
129      </rule>
130      <rule pattern="\n">
131        <token type="Text"/>
132      </rule>
133    </state>
134    <state name="string_literal">
135      <rule pattern="r&#34;&#34;&#34;([\w\W]*?)&#34;&#34;&#34;">
136        <token type="LiteralStringDouble"/>
137      </rule>
138      <rule pattern="r&#39;&#39;&#39;([\w\W]*?)&#39;&#39;&#39;">
139        <token type="LiteralStringSingle"/>
140      </rule>
141      <rule pattern="r&#34;(.*?)&#34;">
142        <token type="LiteralStringDouble"/>
143      </rule>
144      <rule pattern="r&#39;(.*?)&#39;">
145        <token type="LiteralStringSingle"/>
146      </rule>
147      <rule pattern="&#34;&#34;&#34;">
148        <token type="LiteralStringDouble"/>
149        <push state="string_double_multiline"/>
150      </rule>
151      <rule pattern="&#39;&#39;&#39;">
152        <token type="LiteralStringSingle"/>
153        <push state="string_single_multiline"/>
154      </rule>
155      <rule pattern="&#34;">
156        <token type="LiteralStringDouble"/>
157        <push state="string_double"/>
158      </rule>
159      <rule pattern="&#39;">
160        <token type="LiteralStringSingle"/>
161        <push state="string_single"/>
162      </rule>
163    </state>
164    <state name="string_common">
165      <rule pattern="\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\{[0-9A-Fa-f]*\}|[a-z&#39;\&#34;$\\])">
166        <token type="LiteralStringEscape"/>
167      </rule>
168      <rule pattern="(\$)([a-zA-Z_]\w*)">
169        <bygroups>
170          <token type="LiteralStringInterpol"/>
171          <token type="Name"/>
172        </bygroups>
173      </rule>
174      <rule pattern="(\$\{)(.*?)(\})">
175        <bygroups>
176          <token type="LiteralStringInterpol"/>
177          <usingself state="root"/>
178          <token type="LiteralStringInterpol"/>
179        </bygroups>
180      </rule>
181    </state>
182    <state name="string_double">
183      <rule pattern="&#34;">
184        <token type="LiteralStringDouble"/>
185        <pop depth="1"/>
186      </rule>
187      <rule pattern="[^&#34;$\\\n]+">
188        <token type="LiteralStringDouble"/>
189      </rule>
190      <rule>
191        <include state="string_common"/>
192      </rule>
193      <rule pattern="\$+">
194        <token type="LiteralStringDouble"/>
195      </rule>
196    </state>
197    <state name="string_single">
198      <rule pattern="&#39;">
199        <token type="LiteralStringSingle"/>
200        <pop depth="1"/>
201      </rule>
202      <rule pattern="[^&#39;$\\\n]+">
203        <token type="LiteralStringSingle"/>
204      </rule>
205      <rule>
206        <include state="string_common"/>
207      </rule>
208      <rule pattern="\$+">
209        <token type="LiteralStringSingle"/>
210      </rule>
211    </state>
212  </rules>
213</lexer>