elm.xml

  1<lexer>
  2  <config>
  3    <name>Elm</name>
  4    <alias>elm</alias>
  5    <filename>*.elm</filename>
  6    <mime_type>text/x-elm</mime_type>
  7  </config>
  8  <rules>
  9    <state name="shader">
 10      <rule pattern="\|(?!\])">
 11        <token type="NameEntity"/>
 12      </rule>
 13      <rule pattern="\|\]">
 14        <token type="NameEntity"/>
 15        <pop depth="1"/>
 16      </rule>
 17      <rule pattern=".*\n">
 18        <token type="NameEntity"/>
 19      </rule>
 20    </state>
 21    <state name="root">
 22      <rule pattern="\{-">
 23        <token type="CommentMultiline"/>
 24        <push state="comment"/>
 25      </rule>
 26      <rule pattern="--.*">
 27        <token type="CommentSingle"/>
 28      </rule>
 29      <rule pattern="\s+">
 30        <token type="Text"/>
 31      </rule>
 32      <rule pattern="&#34;">
 33        <token type="LiteralString"/>
 34        <push state="doublequote"/>
 35      </rule>
 36      <rule pattern="^\s*module\s*">
 37        <token type="KeywordNamespace"/>
 38        <push state="imports"/>
 39      </rule>
 40      <rule pattern="^\s*import\s*">
 41        <token type="KeywordNamespace"/>
 42        <push state="imports"/>
 43      </rule>
 44      <rule pattern="\[glsl\|.*">
 45        <token type="NameEntity"/>
 46        <push state="shader"/>
 47      </rule>
 48      <rule pattern="(import|module|alias|where|port|else|type|case|then|let|as|of|if|in)\b">
 49        <token type="KeywordReserved"/>
 50      </rule>
 51      <rule pattern="[A-Z]\w*">
 52        <token type="KeywordType"/>
 53      </rule>
 54      <rule pattern="^main ">
 55        <token type="KeywordReserved"/>
 56      </rule>
 57      <rule pattern="\((&lt;-|\|\||\|&gt;|&amp;&amp;|\+\+|-&gt;|\.\.|//|&gt;&gt;|&gt;=|/=|==|::|&lt;~|&lt;\||&lt;=|&lt;&lt;|~|&lt;|=|:|&gt;|&#39;|/|\\|\.|\^|-|`|\+|\*|\||%)\)">
 58        <token type="NameFunction"/>
 59      </rule>
 60      <rule pattern="(&lt;-|\|\||\|&gt;|&amp;&amp;|\+\+|-&gt;|\.\.|//|&gt;&gt;|&gt;=|/=|==|::|&lt;~|&lt;\||&lt;=|&lt;&lt;|~|&lt;|=|:|&gt;|&#39;|/|\\|\.|\^|-|`|\+|\*|\||%)">
 61        <token type="NameFunction"/>
 62      </rule>
 63      <rule>
 64        <include state="numbers"/>
 65      </rule>
 66      <rule pattern="[a-z_][a-zA-Z_\&#39;]*">
 67        <token type="NameVariable"/>
 68      </rule>
 69      <rule pattern="[,()\[\]{}]">
 70        <token type="Punctuation"/>
 71      </rule>
 72    </state>
 73    <state name="comment">
 74      <rule pattern="-(?!\})">
 75        <token type="CommentMultiline"/>
 76      </rule>
 77      <rule pattern="\{-">
 78        <token type="CommentMultiline"/>
 79        <push state="comment"/>
 80      </rule>
 81      <rule pattern="[^-}]">
 82        <token type="CommentMultiline"/>
 83      </rule>
 84      <rule pattern="-\}">
 85        <token type="CommentMultiline"/>
 86        <pop depth="1"/>
 87      </rule>
 88    </state>
 89    <state name="doublequote">
 90      <rule pattern="\\u[0-9a-fA-F]{4}">
 91        <token type="LiteralStringEscape"/>
 92      </rule>
 93      <rule pattern="\\[nrfvb\\&#34;]">
 94        <token type="LiteralStringEscape"/>
 95      </rule>
 96      <rule pattern="[^&#34;]">
 97        <token type="LiteralString"/>
 98      </rule>
 99      <rule pattern="&#34;">
100        <token type="LiteralString"/>
101        <pop depth="1"/>
102      </rule>
103    </state>
104    <state name="imports">
105      <rule pattern="\w+(\.\w+)*">
106        <token type="NameClass"/>
107        <pop depth="1"/>
108      </rule>
109    </state>
110    <state name="numbers">
111      <rule pattern="_?\d+\.(?=\d+)">
112        <token type="LiteralNumberFloat"/>
113      </rule>
114      <rule pattern="_?\d+">
115        <token type="LiteralNumberInteger"/>
116      </rule>
117    </state>
118  </rules>
119</lexer>