coffeescript.xml

  1<lexer>
  2  <config>
  3    <name>CoffeeScript</name>
  4    <alias>coffee-script</alias>
  5    <alias>coffeescript</alias>
  6    <alias>coffee</alias>
  7    <filename>*.coffee</filename>
  8    <mime_type>text/coffeescript</mime_type>
  9    <dot_all>true</dot_all>
 10    <not_multiline>true</not_multiline>
 11  </config>
 12  <rules>
 13    <state name="commentsandwhitespace">
 14      <rule pattern="\s+">
 15        <token type="Text"/>
 16      </rule>
 17      <rule pattern="###[^#].*?###">
 18        <token type="CommentMultiline"/>
 19      </rule>
 20      <rule pattern="#(?!##[^#]).*?\n">
 21        <token type="CommentSingle"/>
 22      </rule>
 23    </state>
 24    <state name="multilineregex">
 25      <rule pattern="[^/#]+">
 26        <token type="LiteralStringRegex"/>
 27      </rule>
 28      <rule pattern="///([gim]+\b|\B)">
 29        <token type="LiteralStringRegex"/>
 30        <pop depth="1"/>
 31      </rule>
 32      <rule pattern="#\{">
 33        <token type="LiteralStringInterpol"/>
 34        <push state="interpoling_string"/>
 35      </rule>
 36      <rule pattern="[/#]">
 37        <token type="LiteralStringRegex"/>
 38      </rule>
 39    </state>
 40    <state name="slashstartsregex">
 41      <rule>
 42        <include state="commentsandwhitespace"/>
 43      </rule>
 44      <rule pattern="///">
 45        <token type="LiteralStringRegex"/>
 46        <push state="#pop" state="multilineregex"/>
 47      </rule>
 48      <rule pattern="/(?! )(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/([gim]+\b|\B)">
 49        <token type="LiteralStringRegex"/>
 50        <pop depth="1"/>
 51      </rule>
 52      <rule pattern="/">
 53        <token type="Operator"/>
 54      </rule>
 55      <rule>
 56        <pop depth="1"/>
 57      </rule>
 58    </state>
 59    <state name="tsqs">
 60      <rule pattern="&#39;&#39;&#39;">
 61        <token type="LiteralString"/>
 62        <pop depth="1"/>
 63      </rule>
 64      <rule pattern="#|\\.|\&#39;|&#34;">
 65        <token type="LiteralString"/>
 66      </rule>
 67      <rule>
 68        <include state="strings"/>
 69      </rule>
 70    </state>
 71    <state name="dqs">
 72      <rule pattern="&#34;">
 73        <token type="LiteralString"/>
 74        <pop depth="1"/>
 75      </rule>
 76      <rule pattern="\\.|\&#39;">
 77        <token type="LiteralString"/>
 78      </rule>
 79      <rule pattern="#\{">
 80        <token type="LiteralStringInterpol"/>
 81        <push state="interpoling_string"/>
 82      </rule>
 83      <rule pattern="#">
 84        <token type="LiteralString"/>
 85      </rule>
 86      <rule>
 87        <include state="strings"/>
 88      </rule>
 89    </state>
 90    <state name="sqs">
 91      <rule pattern="&#39;">
 92        <token type="LiteralString"/>
 93        <pop depth="1"/>
 94      </rule>
 95      <rule pattern="#|\\.|&#34;">
 96        <token type="LiteralString"/>
 97      </rule>
 98      <rule>
 99        <include state="strings"/>
100      </rule>
101    </state>
102    <state name="tdqs">
103      <rule pattern="&#34;&#34;&#34;">
104        <token type="LiteralString"/>
105        <pop depth="1"/>
106      </rule>
107      <rule pattern="\\.|\&#39;|&#34;">
108        <token type="LiteralString"/>
109      </rule>
110      <rule pattern="#\{">
111        <token type="LiteralStringInterpol"/>
112        <push state="interpoling_string"/>
113      </rule>
114      <rule pattern="#">
115        <token type="LiteralString"/>
116      </rule>
117      <rule>
118        <include state="strings"/>
119      </rule>
120    </state>
121    <state name="root">
122      <rule>
123        <include state="commentsandwhitespace"/>
124      </rule>
125      <rule pattern="^(?=\s|/)">
126        <token type="Text"/>
127        <push state="slashstartsregex"/>
128      </rule>
129      <rule pattern="\+\+|~|&amp;&amp;|\band\b|\bor\b|\bis\b|\bisnt\b|\bnot\b|\?|:|\|\||\\(?=\n)|(&lt;&lt;|&gt;&gt;&gt;?|==?(?!&gt;)|!=?|=(?!&gt;)|-(?!&gt;)|[&lt;&gt;+*`%&amp;\|\^/])=?">
130        <token type="Operator"/>
131        <push state="slashstartsregex"/>
132      </rule>
133      <rule pattern="(?:\([^()]*\))?\s*[=-]&gt;">
134        <token type="NameFunction"/>
135        <push state="slashstartsregex"/>
136      </rule>
137      <rule pattern="[{(\[;,]">
138        <token type="Punctuation"/>
139        <push state="slashstartsregex"/>
140      </rule>
141      <rule pattern="[})\].]">
142        <token type="Punctuation"/>
143      </rule>
144      <rule pattern="(?&lt;![.$])(for|own|in|of|while|until|loop|break|return|continue|switch|when|then|if|unless|else|throw|try|catch|finally|new|delete|typeof|instanceof|super|extends|this|class|by)\b">
145        <token type="Keyword"/>
146        <push state="slashstartsregex"/>
147      </rule>
148      <rule pattern="(?&lt;![.$])(true|false|yes|no|on|off|null|NaN|Infinity|undefined)\b">
149        <token type="KeywordConstant"/>
150      </rule>
151      <rule pattern="(Array|Boolean|Date|Error|Function|Math|netscape|Number|Object|Packages|RegExp|String|sun|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|document|window)\b">
152        <token type="NameBuiltin"/>
153      </rule>
154      <rule pattern="[$a-zA-Z_][\w.:$]*\s*[:=]\s">
155        <token type="NameVariable"/>
156        <push state="slashstartsregex"/>
157      </rule>
158      <rule pattern="@[$a-zA-Z_][\w.:$]*\s*[:=]\s">
159        <token type="NameVariableInstance"/>
160        <push state="slashstartsregex"/>
161      </rule>
162      <rule pattern="@">
163        <token type="NameOther"/>
164        <push state="slashstartsregex"/>
165      </rule>
166      <rule pattern="@?[$a-zA-Z_][\w$]*">
167        <token type="NameOther"/>
168      </rule>
169      <rule pattern="[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?">
170        <token type="LiteralNumberFloat"/>
171      </rule>
172      <rule pattern="0x[0-9a-fA-F]+">
173        <token type="LiteralNumberHex"/>
174      </rule>
175      <rule pattern="[0-9]+">
176        <token type="LiteralNumberInteger"/>
177      </rule>
178      <rule pattern="&#34;&#34;&#34;">
179        <token type="LiteralString"/>
180        <push state="tdqs"/>
181      </rule>
182      <rule pattern="&#39;&#39;&#39;">
183        <token type="LiteralString"/>
184        <push state="tsqs"/>
185      </rule>
186      <rule pattern="&#34;">
187        <token type="LiteralString"/>
188        <push state="dqs"/>
189      </rule>
190      <rule pattern="&#39;">
191        <token type="LiteralString"/>
192        <push state="sqs"/>
193      </rule>
194    </state>
195    <state name="interpoling_string">
196      <rule pattern="\}">
197        <token type="LiteralStringInterpol"/>
198        <pop depth="1"/>
199      </rule>
200      <rule>
201        <include state="root"/>
202      </rule>
203    </state>
204    <state name="strings">
205      <rule pattern="[^#\\\&#39;&#34;]+">
206        <token type="LiteralString"/>
207      </rule>
208    </state>
209  </rules>
210</lexer>