...

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

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

     1<lexer>
     2  <config>
     3    <name>Rust</name>
     4    <alias>rust</alias>
     5    <alias>rs</alias>
     6    <filename>*.rs</filename>
     7    <filename>*.rs.in</filename>
     8    <mime_type>text/rust</mime_type>
     9    <mime_type>text/x-rust</mime_type>
    10    <ensure_nl>true</ensure_nl>
    11  </config>
    12  <rules>
    13    <state name="modname">
    14      <rule pattern="\s+">
    15        <token type="Text"/>
    16      </rule>
    17      <rule pattern="[a-zA-Z_]\w*">
    18        <token type="NameNamespace"/>
    19        <pop depth="1"/>
    20      </rule>
    21      <rule>
    22        <pop depth="1"/>
    23      </rule>
    24    </state>
    25    <state name="lifetime">
    26      <rule pattern="[a-zA-Z_]+\w*">
    27        <token type="NameAttribute"/>
    28      </rule>
    29      <rule>
    30        <pop depth="1"/>
    31      </rule>
    32    </state>
    33    <state name="number_lit">
    34      <rule pattern="[ui](8|16|32|64|size)">
    35        <token type="Keyword"/>
    36        <pop depth="1"/>
    37      </rule>
    38      <rule pattern="f(32|64)">
    39        <token type="Keyword"/>
    40        <pop depth="1"/>
    41      </rule>
    42      <rule>
    43        <pop depth="1"/>
    44      </rule>
    45    </state>
    46    <state name="attribute_common">
    47      <rule pattern="&#34;">
    48        <token type="LiteralString"/>
    49        <push state="string"/>
    50      </rule>
    51      <rule pattern="\[">
    52        <token type="CommentPreproc"/>
    53        <push state="attribute["/>
    54      </rule>
    55    </state>
    56    <state name="bytestring">
    57      <rule pattern="\\x[89a-fA-F][0-9a-fA-F]">
    58        <token type="LiteralStringEscape"/>
    59      </rule>
    60      <rule>
    61        <include state="string"/>
    62      </rule>
    63    </state>
    64    <state name="comment">
    65      <rule pattern="[^*/]+">
    66        <token type="CommentMultiline"/>
    67      </rule>
    68      <rule pattern="/\*">
    69        <token type="CommentMultiline"/>
    70        <push/>
    71      </rule>
    72      <rule pattern="\*/">
    73        <token type="CommentMultiline"/>
    74        <pop depth="1"/>
    75      </rule>
    76      <rule pattern="[*/]">
    77        <token type="CommentMultiline"/>
    78      </rule>
    79    </state>
    80    <state name="doccomment">
    81      <rule pattern="[^*/]+">
    82        <token type="LiteralStringDoc"/>
    83      </rule>
    84      <rule pattern="/\*">
    85        <token type="LiteralStringDoc"/>
    86        <push/>
    87      </rule>
    88      <rule pattern="\*/">
    89        <token type="LiteralStringDoc"/>
    90        <pop depth="1"/>
    91      </rule>
    92      <rule pattern="[*/]">
    93        <token type="LiteralStringDoc"/>
    94      </rule>
    95    </state>
    96    <state name="funcname">
    97      <rule pattern="\s+">
    98        <token type="Text"/>
    99      </rule>
   100      <rule pattern="[a-zA-Z_]\w*">
   101        <token type="NameFunction"/>
   102        <pop depth="1"/>
   103      </rule>
   104      <rule>
   105        <pop depth="1"/>
   106      </rule>
   107    </state>
   108    <state name="formatted_string">
   109      <rule pattern="&#34;">
   110        <token type="LiteralString"/>
   111        <pop depth="1"/>
   112      </rule>
   113      <rule pattern="\\[&#39;&#34;\\nrt]|\\(?=\n)|\\x[0-7][0-9a-fA-F]|\\0|\\u\{[0-9a-fA-F]{1,6}\}|\{\{|\}\}">
   114        <token type="LiteralStringEscape"/>
   115      </rule>
   116      <rule pattern="\{[^}]*\}">
   117        <token type="LiteralStringInterpol"/>
   118      </rule>
   119      <rule pattern="[^\\&#34;\{\}]+">
   120        <token type="LiteralString"/>
   121      </rule>
   122      <rule pattern="\\">
   123        <token type="LiteralString"/>
   124      </rule>
   125    </state>
   126    <state name="string">
   127      <rule pattern="&#34;">
   128        <token type="LiteralString"/>
   129        <pop depth="1"/>
   130      </rule>
   131      <rule pattern="\\[&#39;&#34;\\nrt]|\\(?=\n)|\\x[0-7][0-9a-fA-F]|\\0|\\u\{[0-9a-fA-F]{1,6}\}">
   132        <token type="LiteralStringEscape"/>
   133      </rule>
   134      <rule pattern="[^\\&#34;]+">
   135        <token type="LiteralString"/>
   136      </rule>
   137      <rule pattern="\\">
   138        <token type="LiteralString"/>
   139      </rule>
   140    </state>
   141    <state name="root">
   142      <rule pattern="#![^[\r\n].*$">
   143        <token type="CommentPreproc"/>
   144      </rule>
   145      <rule>
   146        <push state="base"/>
   147      </rule>
   148    </state>
   149    <state name="attribute[">
   150      <rule>
   151        <include state="attribute_common"/>
   152      </rule>
   153      <rule pattern="\]">
   154        <token type="CommentPreproc"/>
   155        <pop depth="1"/>
   156      </rule>
   157      <rule pattern="[^&#34;\]\[]+">
   158        <token type="CommentPreproc"/>
   159      </rule>
   160    </state>
   161    <state name="base">
   162      <rule pattern="\n">
   163        <token type="TextWhitespace"/>
   164      </rule>
   165      <rule pattern="\s+">
   166        <token type="TextWhitespace"/>
   167      </rule>
   168      <rule pattern="//!.*?\n">
   169        <token type="LiteralStringDoc"/>
   170      </rule>
   171      <rule pattern="///(\n|[^/].*?\n)">
   172        <token type="LiteralStringDoc"/>
   173      </rule>
   174      <rule pattern="//(.*?)\n">
   175        <token type="CommentSingle"/>
   176      </rule>
   177      <rule pattern="/\*\*(\n|[^/*])">
   178        <token type="LiteralStringDoc"/>
   179        <push state="doccomment"/>
   180      </rule>
   181      <rule pattern="/\*!">
   182        <token type="LiteralStringDoc"/>
   183        <push state="doccomment"/>
   184      </rule>
   185      <rule pattern="/\*">
   186        <token type="CommentMultiline"/>
   187        <push state="comment"/>
   188      </rule>
   189      <rule pattern="&#34;">
   190        <token type="LiteralString"/>
   191        <push state="string"/>
   192      </rule>
   193      <rule pattern="\$([a-zA-Z_]\w*|\(,?|\),?|,?)">
   194        <token type="CommentPreproc"/>
   195      </rule>
   196      <rule pattern="(unsafe|static|extern|return|const|crate|where|while|await|trait|super|async|match|impl|else|move|loop|pub|ref|mut|for|dyn|use|box|in|if|as)\b">
   197        <token type="Keyword"/>
   198      </rule>
   199      <rule pattern="(abstract|override|unsized|virtual|become|typeof|final|macro|yield|priv|try|do)\b">
   200        <token type="KeywordReserved"/>
   201      </rule>
   202      <rule pattern="(true|false)\b">
   203        <token type="KeywordConstant"/>
   204      </rule>
   205      <rule pattern="self\b">
   206        <token type="NameBuiltinPseudo"/>
   207      </rule>
   208      <rule pattern="mod\b">
   209        <token type="Keyword"/>
   210        <push state="modname"/>
   211      </rule>
   212      <rule pattern="let\b">
   213        <token type="KeywordDeclaration"/>
   214      </rule>
   215      <rule pattern="fn\b">
   216        <token type="Keyword"/>
   217        <push state="funcname"/>
   218      </rule>
   219      <rule pattern="(struct|enum|type|union)\b">
   220        <token type="Keyword"/>
   221        <push state="typename"/>
   222      </rule>
   223      <rule pattern="(default)(\s+)(type|fn)\b">
   224        <bygroups>
   225          <token type="Keyword"/>
   226          <token type="Text"/>
   227          <token type="Keyword"/>
   228        </bygroups>
   229      </rule>
   230      <rule pattern="(isize|usize|bool|char|u128|i128|i64|i32|i16|str|u64|u32|f32|f64|u16|i8|u8)\b">
   231        <token type="KeywordType"/>
   232      </rule>
   233      <rule pattern="[sS]elf\b">
   234        <token type="NameBuiltinPseudo"/>
   235      </rule>
   236      <rule pattern="(DoubleEndedIterator|ExactSizeIterator|IntoIterator|PartialOrd|PartialEq|ToString|Iterator|ToOwned|Default|Result|String|FnOnce|Extend|Option|FnMut|Unpin|Sized|AsRef|AsMut|Clone|None|From|Into|Sync|drop|Send|Drop|Copy|Some|Ord|Err|Box|Vec|Eq|Ok|Fn)\b">
   237        <token type="NameBuiltin"/>
   238      </rule>
   239      <rule pattern="::\b">
   240        <token type="Text"/>
   241      </rule>
   242      <rule pattern="(?::|-&gt;)">
   243        <token type="Text"/>
   244        <push state="typename"/>
   245      </rule>
   246      <rule pattern="(break|continue)(\b\s*)(\&#39;[A-Za-z_]\w*)?">
   247        <bygroups>
   248          <token type="Keyword"/>
   249          <token type="TextWhitespace"/>
   250          <token type="NameLabel"/>
   251        </bygroups>
   252      </rule>
   253      <rule pattern="&#39;(\\[&#39;&#34;\\nrt]|\\x[0-7][0-9a-fA-F]|\\0|\\u\{[0-9a-fA-F]{1,6}\}|.)&#39;">
   254        <token type="LiteralStringChar"/>
   255      </rule>
   256      <rule pattern="(b)(&#39;(?:\\[&#39;&#34;\\nrt]|\\x[0-9a-fA-F]{2}|\\0|.)&#39;)">
   257        <bygroups>
   258          <token type="LiteralStringAffix"/>
   259          <token type="LiteralStringChar"/>
   260        </bygroups>
   261      </rule>
   262      <rule pattern="0b[01_]+">
   263        <token type="LiteralNumberBin"/>
   264        <push state="number_lit"/>
   265      </rule>
   266      <rule pattern="0o[0-7_]+">
   267        <token type="LiteralNumberOct"/>
   268        <push state="number_lit"/>
   269      </rule>
   270      <rule pattern="0[xX][0-9a-fA-F_]+">
   271        <token type="LiteralNumberHex"/>
   272        <push state="number_lit"/>
   273      </rule>
   274      <rule pattern="[0-9][0-9_]*(\.[0-9_]+[eE][+\-]?[0-9_]+|\.[0-9_]*(?!\.)|[eE][+\-]?[0-9_]+)">
   275        <token type="LiteralNumberFloat"/>
   276        <push state="number_lit"/>
   277      </rule>
   278      <rule pattern="[0-9][0-9_]*">
   279        <token type="LiteralNumberInteger"/>
   280        <push state="number_lit"/>
   281      </rule>
   282      <rule pattern="(b)(&#34;)">
   283        <bygroups>
   284          <token type="LiteralStringAffix"/>
   285          <token type="LiteralString"/>
   286        </bygroups>
   287        <push state="bytestring"/>
   288      </rule>
   289      <rule pattern="(?s)(b?r)(#*)(&#34;.*?&#34;\2)">
   290        <bygroups>
   291          <token type="LiteralStringAffix"/>
   292          <token type="LiteralString"/>
   293          <token type="LiteralString"/>
   294        </bygroups>
   295      </rule>
   296      <rule pattern="&#39;(static|_)">
   297        <token type="NameBuiltin"/>
   298      </rule>
   299      <rule pattern="&#39;">
   300        <token type="NameAttribute"/>
   301        <push state="lifetime"/>
   302      </rule>
   303      <rule pattern="\.\.=?">
   304        <token type="Operator"/>
   305      </rule>
   306      <rule pattern="[{}()\[\],.;]">
   307        <token type="Punctuation"/>
   308      </rule>
   309      <rule pattern="[+\-*/%&amp;|&lt;&gt;^!~@=:?]">
   310        <token type="Operator"/>
   311      </rule>
   312      <rule pattern="\b(r#)?_?([A-Z][A-Z0-9_]*){2,}\b">
   313        <token type="NameConstant"/>
   314      </rule>
   315      <rule pattern="((?:e?print(?:ln)?|format(?:_args)?|panic|todo|un(?:reachable|implemented))!)(\s*)(\()(\s*)(&#34;)">
   316        <bygroups>
   317          <token type="NameFunctionMagic"/>
   318          <token type="TextWhitespace"/>
   319          <token type="Punctuation"/>
   320          <token type="TextWhitespace"/>
   321          <token type="LiteralString"/>
   322        </bygroups>
   323        <push state="formatted_string"/>
   324      </rule>
   325      <rule pattern="([a-zA-Z_]\w*!)(\s*)(\(|\[|\{)">
   326        <bygroups>
   327          <token type="NameFunctionMagic"/>
   328          <token type="TextWhitespace"/>
   329          <token type="Punctuation"/>
   330        </bygroups>
   331      </rule>
   332      <rule pattern="(r#)?[a-zA-Z_]\w*">
   333        <token type="Name"/>
   334      </rule>
   335      <rule pattern="r#[a-zA-Z_]\w*">
   336        <token type="Name"/>
   337      </rule>
   338      <rule pattern="#!?\[">
   339        <token type="CommentPreproc"/>
   340        <push state="attribute["/>
   341      </rule>
   342      <rule pattern="#">
   343        <token type="Text"/>
   344      </rule>
   345    </state>
   346    <state name="typename">
   347      <rule pattern="\s+">
   348        <token type="Text"/>
   349      </rule>
   350      <rule pattern="&amp;">
   351        <token type="KeywordPseudo"/>
   352      </rule>
   353      <rule pattern="&#39;(static|_)">
   354        <token type="NameBuiltin"/>
   355      </rule>
   356      <rule pattern="&#39;">
   357        <token type="NameAttribute"/>
   358        <push state="lifetime"/>
   359      </rule>
   360      <rule pattern="(DoubleEndedIterator|ExactSizeIterator|IntoIterator|PartialOrd|PartialEq|ToString|Iterator|ToOwned|Default|Result|String|FnOnce|Extend|Option|FnMut|Unpin|Sized|AsRef|AsMut|Clone|None|From|Into|Sync|drop|Send|Drop|Copy|Some|Ord|Err|Box|Vec|Eq|Ok|Fn)\b">
   361        <token type="NameBuiltin"/>
   362      </rule>
   363      <rule pattern="(isize|usize|bool|char|u128|i128|i64|i32|i16|str|u64|u32|f32|f64|u16|i8|u8)\b">
   364        <token type="KeywordType"/>
   365      </rule>
   366      <rule pattern="[a-zA-Z_]\w*">
   367        <token type="NameClass"/>
   368        <pop depth="1"/>
   369      </rule>
   370      <rule>
   371        <pop depth="1"/>
   372      </rule>
   373    </state>
   374  </rules>
   375</lexer>

View as plain text