...

Text file src/github.com/alecthomas/chroma/v2/lexers/embedded/standard_ml.xml

Documentation: github.com/alecthomas/chroma/v2/lexers/embedded

     1<lexer>
     2  <config>
     3    <name>Standard ML</name>
     4    <alias>sml</alias>
     5    <filename>*.sml</filename>
     6    <filename>*.sig</filename>
     7    <filename>*.fun</filename>
     8    <mime_type>text/x-standardml</mime_type>
     9    <mime_type>application/x-standardml</mime_type>
    10  </config>
    11  <rules>
    12    <state name="delimiters">
    13      <rule pattern="\(|\[|\{">
    14        <token type="Punctuation"/>
    15        <push state="main"/>
    16      </rule>
    17      <rule pattern="\)|\]|\}">
    18        <token type="Punctuation"/>
    19        <pop depth="1"/>
    20      </rule>
    21      <rule pattern="\b(let|if|local)\b(?!\&#39;)">
    22        <token type="KeywordReserved"/>
    23        <push state="main" state="main"/>
    24      </rule>
    25      <rule pattern="\b(struct|sig|while)\b(?!\&#39;)">
    26        <token type="KeywordReserved"/>
    27        <push state="main"/>
    28      </rule>
    29      <rule pattern="\b(do|else|end|in|then)\b(?!\&#39;)">
    30        <token type="KeywordReserved"/>
    31        <pop depth="1"/>
    32      </rule>
    33    </state>
    34    <state name="root">
    35      <rule>
    36        <push state="main"/>
    37      </rule>
    38    </state>
    39    <state name="breakout">
    40      <rule pattern="(?=\b(where|do|handle|if|sig|op|while|case|as|else|signature|andalso|struct|infixr|functor|in|structure|then|local|rec|end|fun|of|orelse|val|include|fn|with|exception|let|and|infix|sharing|datatype|type|abstype|withtype|eqtype|nonfix|raise|open)\b(?!\&#39;))">
    41        <token type="Text"/>
    42        <pop depth="1"/>
    43      </rule>
    44    </state>
    45    <state name="tyvarseq">
    46      <rule pattern="\s">
    47        <token type="Text"/>
    48      </rule>
    49      <rule pattern="\(\*">
    50        <token type="CommentMultiline"/>
    51        <push state="comment"/>
    52      </rule>
    53      <rule pattern="\&#39;[\w\&#39;]*">
    54        <token type="NameDecorator"/>
    55      </rule>
    56      <rule pattern="[a-zA-Z][\w&#39;]*">
    57        <token type="Name"/>
    58      </rule>
    59      <rule pattern=",">
    60        <token type="Punctuation"/>
    61      </rule>
    62      <rule pattern="\)">
    63        <token type="Punctuation"/>
    64        <pop depth="1"/>
    65      </rule>
    66      <rule pattern="[!%&amp;$#+\-/:&lt;=&gt;?@\\~`^|*]+">
    67        <token type="Name"/>
    68      </rule>
    69    </state>
    70    <state name="char">
    71      <rule pattern="[^&#34;\\]">
    72        <token type="LiteralStringChar"/>
    73      </rule>
    74      <rule pattern="\\[\\&#34;abtnvfr]">
    75        <token type="LiteralStringEscape"/>
    76      </rule>
    77      <rule pattern="\\\^[\x40-\x5e]">
    78        <token type="LiteralStringEscape"/>
    79      </rule>
    80      <rule pattern="\\[0-9]{3}">
    81        <token type="LiteralStringEscape"/>
    82      </rule>
    83      <rule pattern="\\u[0-9a-fA-F]{4}">
    84        <token type="LiteralStringEscape"/>
    85      </rule>
    86      <rule pattern="\\\s+\\">
    87        <token type="LiteralStringInterpol"/>
    88      </rule>
    89      <rule pattern="&#34;">
    90        <token type="LiteralStringChar"/>
    91        <pop depth="1"/>
    92      </rule>
    93    </state>
    94    <state name="datbind">
    95      <rule>
    96        <include state="whitespace"/>
    97      </rule>
    98      <rule pattern="\b(and)\b(?!\&#39;)">
    99        <token type="KeywordReserved"/>
   100        <push state="#pop" state="dname"/>
   101      </rule>
   102      <rule pattern="\b(withtype)\b(?!\&#39;)">
   103        <token type="KeywordReserved"/>
   104        <push state="#pop" state="tname"/>
   105      </rule>
   106      <rule pattern="\b(of)\b(?!\&#39;)">
   107        <token type="KeywordReserved"/>
   108      </rule>
   109      <rule pattern="(\|)(\s*)([a-zA-Z][\w&#39;]*)">
   110        <bygroups>
   111          <token type="Punctuation"/>
   112          <token type="Text"/>
   113          <token type="NameClass"/>
   114        </bygroups>
   115      </rule>
   116      <rule pattern="(\|)(\s+)([!%&amp;$#+\-/:&lt;=&gt;?@\\~`^|*]+)">
   117        <bygroups>
   118          <token type="Punctuation"/>
   119          <token type="Text"/>
   120          <token type="NameClass"/>
   121        </bygroups>
   122      </rule>
   123      <rule>
   124        <include state="breakout"/>
   125      </rule>
   126      <rule>
   127        <include state="core"/>
   128      </rule>
   129      <rule pattern="\S+">
   130        <token type="Error"/>
   131      </rule>
   132    </state>
   133    <state name="string">
   134      <rule pattern="[^&#34;\\]">
   135        <token type="LiteralStringDouble"/>
   136      </rule>
   137      <rule pattern="\\[\\&#34;abtnvfr]">
   138        <token type="LiteralStringEscape"/>
   139      </rule>
   140      <rule pattern="\\\^[\x40-\x5e]">
   141        <token type="LiteralStringEscape"/>
   142      </rule>
   143      <rule pattern="\\[0-9]{3}">
   144        <token type="LiteralStringEscape"/>
   145      </rule>
   146      <rule pattern="\\u[0-9a-fA-F]{4}">
   147        <token type="LiteralStringEscape"/>
   148      </rule>
   149      <rule pattern="\\\s+\\">
   150        <token type="LiteralStringInterpol"/>
   151      </rule>
   152      <rule pattern="&#34;">
   153        <token type="LiteralStringDouble"/>
   154        <pop depth="1"/>
   155      </rule>
   156    </state>
   157    <state name="tname">
   158      <rule>
   159        <include state="whitespace"/>
   160      </rule>
   161      <rule>
   162        <include state="breakout"/>
   163      </rule>
   164      <rule pattern="\&#39;[\w\&#39;]*">
   165        <token type="NameDecorator"/>
   166      </rule>
   167      <rule pattern="\(">
   168        <token type="Punctuation"/>
   169        <push state="tyvarseq"/>
   170      </rule>
   171      <rule pattern="=(?![!%&amp;$#+\-/:&lt;=&gt;?@\\~`^|*]+)">
   172        <token type="Punctuation"/>
   173        <push state="#pop" state="typbind"/>
   174      </rule>
   175      <rule pattern="([a-zA-Z][\w&#39;]*)">
   176        <token type="KeywordType"/>
   177      </rule>
   178      <rule pattern="([!%&amp;$#+\-/:&lt;=&gt;?@\\~`^|*]+)">
   179        <token type="KeywordType"/>
   180      </rule>
   181      <rule pattern="\S+">
   182        <token type="Error"/>
   183        <pop depth="1"/>
   184      </rule>
   185    </state>
   186    <state name="dname">
   187      <rule>
   188        <include state="whitespace"/>
   189      </rule>
   190      <rule>
   191        <include state="breakout"/>
   192      </rule>
   193      <rule pattern="\&#39;[\w\&#39;]*">
   194        <token type="NameDecorator"/>
   195      </rule>
   196      <rule pattern="\(">
   197        <token type="Punctuation"/>
   198        <push state="tyvarseq"/>
   199      </rule>
   200      <rule pattern="(=)(\s*)(datatype)">
   201        <bygroups>
   202          <token type="Punctuation"/>
   203          <token type="Text"/>
   204          <token type="KeywordReserved"/>
   205        </bygroups>
   206        <pop depth="1"/>
   207      </rule>
   208      <rule pattern="=(?![!%&amp;$#+\-/:&lt;=&gt;?@\\~`^|*]+)">
   209        <token type="Punctuation"/>
   210        <push state="#pop" state="datbind" state="datcon"/>
   211      </rule>
   212      <rule pattern="([a-zA-Z][\w&#39;]*)">
   213        <token type="KeywordType"/>
   214      </rule>
   215      <rule pattern="([!%&amp;$#+\-/:&lt;=&gt;?@\\~`^|*]+)">
   216        <token type="KeywordType"/>
   217      </rule>
   218      <rule pattern="\S+">
   219        <token type="Error"/>
   220        <pop depth="1"/>
   221      </rule>
   222    </state>
   223    <state name="typbind">
   224      <rule>
   225        <include state="whitespace"/>
   226      </rule>
   227      <rule pattern="\b(and)\b(?!\&#39;)">
   228        <token type="KeywordReserved"/>
   229        <push state="#pop" state="tname"/>
   230      </rule>
   231      <rule>
   232        <include state="breakout"/>
   233      </rule>
   234      <rule>
   235        <include state="core"/>
   236      </rule>
   237      <rule pattern="\S+">
   238        <token type="Error"/>
   239        <pop depth="1"/>
   240      </rule>
   241    </state>
   242    <state name="ename">
   243      <rule>
   244        <include state="whitespace"/>
   245      </rule>
   246      <rule pattern="(exception|and)\b(\s+)([a-zA-Z][\w&#39;]*)">
   247        <bygroups>
   248          <token type="KeywordReserved"/>
   249          <token type="Text"/>
   250          <token type="NameClass"/>
   251        </bygroups>
   252      </rule>
   253      <rule pattern="(exception|and)\b(\s*)([!%&amp;$#+\-/:&lt;=&gt;?@\\~`^|*]+)">
   254        <bygroups>
   255          <token type="KeywordReserved"/>
   256          <token type="Text"/>
   257          <token type="NameClass"/>
   258        </bygroups>
   259      </rule>
   260      <rule pattern="\b(of)\b(?!\&#39;)">
   261        <token type="KeywordReserved"/>
   262      </rule>
   263      <rule>
   264        <include state="breakout"/>
   265      </rule>
   266      <rule>
   267        <include state="core"/>
   268      </rule>
   269      <rule pattern="\S+">
   270        <token type="Error"/>
   271      </rule>
   272    </state>
   273    <state name="vname">
   274      <rule>
   275        <include state="whitespace"/>
   276      </rule>
   277      <rule pattern="\&#39;[\w\&#39;]*">
   278        <token type="NameDecorator"/>
   279      </rule>
   280      <rule pattern="\(">
   281        <token type="Punctuation"/>
   282        <push state="tyvarseq"/>
   283      </rule>
   284      <rule pattern="([a-zA-Z][\w&#39;]*)(\s*)(=(?![!%&amp;$#+\-/:&lt;=&gt;?@\\~`^|*]+))">
   285        <bygroups>
   286          <token type="NameVariable"/>
   287          <token type="Text"/>
   288          <token type="Punctuation"/>
   289        </bygroups>
   290        <pop depth="1"/>
   291      </rule>
   292      <rule pattern="([!%&amp;$#+\-/:&lt;=&gt;?@\\~`^|*]+)(\s*)(=(?![!%&amp;$#+\-/:&lt;=&gt;?@\\~`^|*]+))">
   293        <bygroups>
   294          <token type="NameVariable"/>
   295          <token type="Text"/>
   296          <token type="Punctuation"/>
   297        </bygroups>
   298        <pop depth="1"/>
   299      </rule>
   300      <rule pattern="([a-zA-Z][\w&#39;]*)">
   301        <token type="NameVariable"/>
   302        <pop depth="1"/>
   303      </rule>
   304      <rule pattern="([!%&amp;$#+\-/:&lt;=&gt;?@\\~`^|*]+)">
   305        <token type="NameVariable"/>
   306        <pop depth="1"/>
   307      </rule>
   308      <rule>
   309        <pop depth="1"/>
   310      </rule>
   311    </state>
   312    <state name="sname">
   313      <rule>
   314        <include state="whitespace"/>
   315      </rule>
   316      <rule>
   317        <include state="breakout"/>
   318      </rule>
   319      <rule pattern="([a-zA-Z][\w&#39;]*)">
   320        <token type="NameNamespace"/>
   321      </rule>
   322      <rule>
   323        <pop depth="1"/>
   324      </rule>
   325    </state>
   326    <state name="main-fun">
   327      <rule>
   328        <include state="whitespace"/>
   329      </rule>
   330      <rule pattern="\s">
   331        <token type="Text"/>
   332      </rule>
   333      <rule pattern="\(\*">
   334        <token type="CommentMultiline"/>
   335        <push state="comment"/>
   336      </rule>
   337      <rule pattern="\b(fun|and)\b(?!\&#39;)">
   338        <token type="KeywordReserved"/>
   339        <push state="fname"/>
   340      </rule>
   341      <rule pattern="\b(val)\b(?!\&#39;)">
   342        <token type="KeywordReserved"/>
   343        <push state="#pop" state="main" state="vname"/>
   344      </rule>
   345      <rule pattern="\|">
   346        <token type="Punctuation"/>
   347        <push state="fname"/>
   348      </rule>
   349      <rule pattern="\b(case|handle)\b(?!\&#39;)">
   350        <token type="KeywordReserved"/>
   351        <push state="#pop" state="main"/>
   352      </rule>
   353      <rule>
   354        <include state="delimiters"/>
   355      </rule>
   356      <rule>
   357        <include state="core"/>
   358      </rule>
   359      <rule pattern="\S+">
   360        <token type="Error"/>
   361      </rule>
   362    </state>
   363    <state name="datcon">
   364      <rule>
   365        <include state="whitespace"/>
   366      </rule>
   367      <rule pattern="([a-zA-Z][\w&#39;]*)">
   368        <token type="NameClass"/>
   369        <pop depth="1"/>
   370      </rule>
   371      <rule pattern="([!%&amp;$#+\-/:&lt;=&gt;?@\\~`^|*]+)">
   372        <token type="NameClass"/>
   373        <pop depth="1"/>
   374      </rule>
   375      <rule pattern="\S+">
   376        <token type="Error"/>
   377        <pop depth="1"/>
   378      </rule>
   379    </state>
   380    <state name="dotted">
   381      <rule pattern="([a-zA-Z][\w&#39;]*)(\.)">
   382        <token type="NameNamespace"/>
   383      </rule>
   384      <rule pattern="([a-zA-Z][\w&#39;]*)">
   385        <token type="Name"/>
   386        <pop depth="1"/>
   387      </rule>
   388      <rule pattern="([!%&amp;$#+\-/:&lt;=&gt;?@\\~`^|*]+)">
   389        <token type="Name"/>
   390        <pop depth="1"/>
   391      </rule>
   392      <rule pattern="\s+">
   393        <token type="Error"/>
   394      </rule>
   395      <rule pattern="\S+">
   396        <token type="Error"/>
   397      </rule>
   398    </state>
   399    <state name="main">
   400      <rule>
   401        <include state="whitespace"/>
   402      </rule>
   403      <rule pattern="\b(val|and)\b(?!\&#39;)">
   404        <token type="KeywordReserved"/>
   405        <push state="vname"/>
   406      </rule>
   407      <rule pattern="\b(fun)\b(?!\&#39;)">
   408        <token type="KeywordReserved"/>
   409        <push state="#pop" state="main-fun" state="fname"/>
   410      </rule>
   411      <rule>
   412        <include state="delimiters"/>
   413      </rule>
   414      <rule>
   415        <include state="core"/>
   416      </rule>
   417      <rule pattern="\S+">
   418        <token type="Error"/>
   419      </rule>
   420    </state>
   421    <state name="comment">
   422      <rule pattern="[^(*)]">
   423        <token type="CommentMultiline"/>
   424      </rule>
   425      <rule pattern="\(\*">
   426        <token type="CommentMultiline"/>
   427        <push/>
   428      </rule>
   429      <rule pattern="\*\)">
   430        <token type="CommentMultiline"/>
   431        <pop depth="1"/>
   432      </rule>
   433      <rule pattern="[(*)]">
   434        <token type="CommentMultiline"/>
   435      </rule>
   436    </state>
   437    <state name="whitespace">
   438      <rule pattern="\s+">
   439        <token type="Text"/>
   440      </rule>
   441      <rule pattern="\(\*">
   442        <token type="CommentMultiline"/>
   443        <push state="comment"/>
   444      </rule>
   445    </state>
   446    <state name="core">
   447      <rule pattern="(_|\}|\{|\)|;|,|\[|\(|\]|\.\.\.)">
   448        <token type="Punctuation"/>
   449      </rule>
   450      <rule pattern="#&#34;">
   451        <token type="LiteralStringChar"/>
   452        <push state="char"/>
   453      </rule>
   454      <rule pattern="&#34;">
   455        <token type="LiteralStringDouble"/>
   456        <push state="string"/>
   457      </rule>
   458      <rule pattern="~?0x[0-9a-fA-F]+">
   459        <token type="LiteralNumberHex"/>
   460      </rule>
   461      <rule pattern="0wx[0-9a-fA-F]+">
   462        <token type="LiteralNumberHex"/>
   463      </rule>
   464      <rule pattern="0w\d+">
   465        <token type="LiteralNumberInteger"/>
   466      </rule>
   467      <rule pattern="~?\d+\.\d+[eE]~?\d+">
   468        <token type="LiteralNumberFloat"/>
   469      </rule>
   470      <rule pattern="~?\d+\.\d+">
   471        <token type="LiteralNumberFloat"/>
   472      </rule>
   473      <rule pattern="~?\d+[eE]~?\d+">
   474        <token type="LiteralNumberFloat"/>
   475      </rule>
   476      <rule pattern="~?\d+">
   477        <token type="LiteralNumberInteger"/>
   478      </rule>
   479      <rule pattern="#\s*[1-9][0-9]*">
   480        <token type="NameLabel"/>
   481      </rule>
   482      <rule pattern="#\s*([a-zA-Z][\w&#39;]*)">
   483        <token type="NameLabel"/>
   484      </rule>
   485      <rule pattern="#\s+([!%&amp;$#+\-/:&lt;=&gt;?@\\~`^|*]+)">
   486        <token type="NameLabel"/>
   487      </rule>
   488      <rule pattern="\b(datatype|abstype)\b(?!\&#39;)">
   489        <token type="KeywordReserved"/>
   490        <push state="dname"/>
   491      </rule>
   492      <rule pattern="(?=\b(exception)\b(?!\&#39;))">
   493        <token type="Text"/>
   494        <push state="ename"/>
   495      </rule>
   496      <rule pattern="\b(functor|include|open|signature|structure)\b(?!\&#39;)">
   497        <token type="KeywordReserved"/>
   498        <push state="sname"/>
   499      </rule>
   500      <rule pattern="\b(type|eqtype)\b(?!\&#39;)">
   501        <token type="KeywordReserved"/>
   502        <push state="tname"/>
   503      </rule>
   504      <rule pattern="\&#39;[\w\&#39;]*">
   505        <token type="NameDecorator"/>
   506      </rule>
   507      <rule pattern="([a-zA-Z][\w&#39;]*)(\.)">
   508        <token type="NameNamespace"/>
   509        <push state="dotted"/>
   510      </rule>
   511      <rule pattern="\b(abstype|and|andalso|as|case|datatype|do|else|end|exception|fn|fun|handle|if|in|infix|infixr|let|local|nonfix|of|op|open|orelse|raise|rec|then|type|val|with|withtype|while|eqtype|functor|include|sharing|sig|signature|struct|structure|where)\b">
   512        <token type="KeywordReserved"/>
   513      </rule>
   514      <rule pattern="([a-zA-Z][\w&#39;]*)">
   515        <token type="Name"/>
   516      </rule>
   517      <rule pattern="\b(:|\|,=|=&gt;|-&gt;|#|:&gt;)\b">
   518        <token type="KeywordReserved"/>
   519      </rule>
   520      <rule pattern="([!%&amp;$#+\-/:&lt;=&gt;?@\\~`^|*]+)">
   521        <token type="Name"/>
   522      </rule>
   523    </state>
   524    <state name="fname">
   525      <rule>
   526        <include state="whitespace"/>
   527      </rule>
   528      <rule pattern="\&#39;[\w\&#39;]*">
   529        <token type="NameDecorator"/>
   530      </rule>
   531      <rule pattern="\(">
   532        <token type="Punctuation"/>
   533        <push state="tyvarseq"/>
   534      </rule>
   535      <rule pattern="([a-zA-Z][\w&#39;]*)">
   536        <token type="NameFunction"/>
   537        <pop depth="1"/>
   538      </rule>
   539      <rule pattern="([!%&amp;$#+\-/:&lt;=&gt;?@\\~`^|*]+)">
   540        <token type="NameFunction"/>
   541        <pop depth="1"/>
   542      </rule>
   543      <rule>
   544        <pop depth="1"/>
   545      </rule>
   546    </state>
   547  </rules>
   548</lexer>

View as plain text