...

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

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

     1<lexer>
     2  <config>
     3    <name>C</name>
     4    <alias>c</alias>
     5    <filename>*.c</filename>
     6    <filename>*.h</filename>
     7    <filename>*.idc</filename>
     8    <filename>*.x[bp]m</filename>
     9    <mime_type>text/x-chdr</mime_type>
    10    <mime_type>text/x-csrc</mime_type>
    11    <mime_type>image/x-xbitmap</mime_type>
    12    <mime_type>image/x-xpixmap</mime_type>
    13    <ensure_nl>true</ensure_nl>
    14  </config>
    15  <rules>
    16    <state name="statement">
    17      <rule>
    18        <include state="whitespace"/>
    19      </rule>
    20      <rule>
    21        <include state="statements"/>
    22      </rule>
    23      <rule pattern="[{}]">
    24        <token type="Punctuation"/>
    25      </rule>
    26      <rule pattern=";">
    27        <token type="Punctuation"/>
    28        <pop depth="1"/>
    29      </rule>
    30    </state>
    31    <state name="function">
    32      <rule>
    33        <include state="whitespace"/>
    34      </rule>
    35      <rule>
    36        <include state="statements"/>
    37      </rule>
    38      <rule pattern=";">
    39        <token type="Punctuation"/>
    40      </rule>
    41      <rule pattern="\{">
    42        <token type="Punctuation"/>
    43        <push/>
    44      </rule>
    45      <rule pattern="\}">
    46        <token type="Punctuation"/>
    47        <pop depth="1"/>
    48      </rule>
    49    </state>
    50    <state name="string">
    51      <rule pattern="&#34;">
    52        <token type="LiteralString"/>
    53        <pop depth="1"/>
    54      </rule>
    55      <rule pattern="\\([\\abfnrtv&#34;\&#39;]|x[a-fA-F0-9]{2,4}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8}|[0-7]{1,3})">
    56        <token type="LiteralStringEscape"/>
    57      </rule>
    58      <rule pattern="[^\\&#34;\n]+">
    59        <token type="LiteralString"/>
    60      </rule>
    61      <rule pattern="\\\n">
    62        <token type="LiteralString"/>
    63      </rule>
    64      <rule pattern="\\">
    65        <token type="LiteralString"/>
    66      </rule>
    67    </state>
    68    <state name="macro">
    69      <rule pattern="(include)(\s*(?:/[*].*?[*]/\s*)?)([^\n]+)">
    70        <bygroups>
    71          <token type="CommentPreproc"/>
    72          <token type="Text"/>
    73          <token type="CommentPreprocFile"/>
    74        </bygroups>
    75      </rule>
    76      <rule pattern="[^/\n]+">
    77        <token type="CommentPreproc"/>
    78      </rule>
    79      <rule pattern="/[*](.|\n)*?[*]/">
    80        <token type="CommentMultiline"/>
    81      </rule>
    82      <rule pattern="//.*?\n">
    83        <token type="CommentSingle"/>
    84        <pop depth="1"/>
    85      </rule>
    86      <rule pattern="/">
    87        <token type="CommentPreproc"/>
    88      </rule>
    89      <rule pattern="(?&lt;=\\)\n">
    90        <token type="CommentPreproc"/>
    91      </rule>
    92      <rule pattern="\n">
    93        <token type="CommentPreproc"/>
    94        <pop depth="1"/>
    95      </rule>
    96    </state>
    97    <state name="if0">
    98      <rule pattern="^\s*#if.*?(?&lt;!\\)\n">
    99        <token type="CommentPreproc"/>
   100        <push/>
   101      </rule>
   102      <rule pattern="^\s*#el(?:se|if).*\n">
   103        <token type="CommentPreproc"/>
   104        <pop depth="1"/>
   105      </rule>
   106      <rule pattern="^\s*#endif.*?(?&lt;!\\)\n">
   107        <token type="CommentPreproc"/>
   108        <pop depth="1"/>
   109      </rule>
   110      <rule pattern=".*?\n">
   111        <token type="Comment"/>
   112      </rule>
   113    </state>
   114    <state name="whitespace">
   115      <rule pattern="^#if\s+0">
   116        <token type="CommentPreproc"/>
   117        <push state="if0"/>
   118      </rule>
   119      <rule pattern="^#">
   120        <token type="CommentPreproc"/>
   121        <push state="macro"/>
   122      </rule>
   123      <rule pattern="^(\s*(?:/[*].*?[*]/\s*)?)(#if\s+0)">
   124        <bygroups>
   125          <usingself state="root"/>
   126          <token type="CommentPreproc"/>
   127        </bygroups>
   128        <push state="if0"/>
   129      </rule>
   130      <rule pattern="^(\s*(?:/[*].*?[*]/\s*)?)(#)">
   131        <bygroups>
   132          <usingself state="root"/>
   133          <token type="CommentPreproc"/>
   134        </bygroups>
   135        <push state="macro"/>
   136      </rule>
   137      <rule pattern="\n">
   138        <token type="Text"/>
   139      </rule>
   140      <rule pattern="\s+">
   141        <token type="Text"/>
   142      </rule>
   143      <rule pattern="\\\n">
   144        <token type="Text"/>
   145      </rule>
   146      <rule pattern="//(\n|[\w\W]*?[^\\]\n)">
   147        <token type="CommentSingle"/>
   148      </rule>
   149      <rule pattern="/(\\\n)?[*][\w\W]*?[*](\\\n)?/">
   150        <token type="CommentMultiline"/>
   151      </rule>
   152      <rule pattern="/(\\\n)?[*][\w\W]*">
   153        <token type="CommentMultiline"/>
   154      </rule>
   155    </state>
   156    <state name="statements">
   157      <rule pattern="(L?)(&#34;)">
   158        <bygroups>
   159          <token type="LiteralStringAffix"/>
   160          <token type="LiteralString"/>
   161        </bygroups>
   162        <push state="string"/>
   163      </rule>
   164      <rule pattern="(L?)(&#39;)(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\&#39;\n])(&#39;)">
   165        <bygroups>
   166          <token type="LiteralStringAffix"/>
   167          <token type="LiteralStringChar"/>
   168          <token type="LiteralStringChar"/>
   169          <token type="LiteralStringChar"/>
   170        </bygroups>
   171      </rule>
   172      <rule pattern="(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[LlUu]*">
   173        <token type="LiteralNumberFloat"/>
   174      </rule>
   175      <rule pattern="(\d+\.\d*|\.\d+|\d+[fF])[fF]?">
   176        <token type="LiteralNumberFloat"/>
   177      </rule>
   178      <rule pattern="0x[0-9a-fA-F]+[LlUu]*">
   179        <token type="LiteralNumberHex"/>
   180      </rule>
   181      <rule pattern="0[0-7]+[LlUu]*">
   182        <token type="LiteralNumberOct"/>
   183      </rule>
   184      <rule pattern="\d+[LlUu]*">
   185        <token type="LiteralNumberInteger"/>
   186      </rule>
   187      <rule pattern="\*/">
   188        <token type="Error"/>
   189      </rule>
   190      <rule pattern="[~!%^&amp;*+=|?:&lt;&gt;/-]">
   191        <token type="Operator"/>
   192      </rule>
   193      <rule pattern="[()\[\],.]">
   194        <token type="Punctuation"/>
   195      </rule>
   196      <rule pattern="(restricted|volatile|continue|register|default|typedef|struct|extern|switch|sizeof|static|return|union|while|const|break|goto|enum|else|case|auto|for|asm|if|do)\b">
   197        <token type="Keyword"/>
   198      </rule>
   199      <rule pattern="(bool|int|long|float|short|double|char((8|16|32)_t)?|unsigned|signed|void|u?int(_fast|_least|)(8|16|32|64)_t)\b|\b[a-z]\w*_t\b">
   200        <token type="KeywordType"/>
   201      </rule>
   202      <rule pattern="(typename|__inline|restrict|_inline|thread|inline|naked)\b">
   203        <token type="KeywordReserved"/>
   204      </rule>
   205      <rule pattern="(__m(128i|128d|128|64))\b">
   206        <token type="KeywordReserved"/>
   207      </rule>
   208      <rule pattern="__(forceinline|identifier|unaligned|declspec|fastcall|finally|stdcall|wchar_t|assume|except|int32|cdecl|int16|leave|based|raise|int64|noop|int8|w64|try|asm)\b">
   209        <token type="KeywordReserved"/>
   210      </rule>
   211      <rule pattern="(true|false|NULL)\b">
   212        <token type="NameBuiltin"/>
   213      </rule>
   214      <rule pattern="([a-zA-Z_]\w*)(\s*)(:)(?!:)">
   215        <bygroups>
   216          <token type="NameLabel"/>
   217          <token type="Text"/>
   218          <token type="Punctuation"/>
   219        </bygroups>
   220      </rule>
   221      <rule pattern="\b[A-Za-z_]\w*(?=\s*\()">
   222          <token type="NameFunction"/>
   223      </rule>
   224      <rule pattern="[a-zA-Z_]\w*">
   225        <token type="Name"/>
   226      </rule>
   227    </state>
   228    <state name="root">
   229      <rule>
   230        <include state="whitespace"/>
   231      </rule>
   232      <rule pattern="((?:[\w*\s])+?(?:\s|[*]))([a-zA-Z_]\w*)(\s*\([^;]*?\))([^;{]*)(\{)">
   233        <bygroups>
   234          <usingself state="root"/>
   235          <token type="NameFunction"/>
   236          <usingself state="root"/>
   237          <usingself state="root"/>
   238          <token type="Punctuation"/>
   239        </bygroups>
   240        <push state="function"/>
   241      </rule>
   242      <rule pattern="((?:[\w*\s])+?(?:\s|[*]))([a-zA-Z_]\w*)(\s*\([^;]*?\))([^;]*)(;)">
   243        <bygroups>
   244          <usingself state="root"/>
   245          <token type="NameFunction"/>
   246          <usingself state="root"/>
   247          <usingself state="root"/>
   248          <token type="Punctuation"/>
   249        </bygroups>
   250      </rule>
   251      <rule>
   252        <push state="statement"/>
   253      </rule>
   254    </state>
   255  </rules>
   256</lexer>

View as plain text