...

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

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

     1<lexer>
     2  <config>
     3    <name>Objective-C</name>
     4    <alias>objective-c</alias>
     5    <alias>objectivec</alias>
     6    <alias>obj-c</alias>
     7    <alias>objc</alias>
     8    <filename>*.m</filename>
     9    <filename>*.h</filename>
    10    <mime_type>text/x-objective-c</mime_type>
    11  </config>
    12  <rules>
    13    <state name="macro">
    14      <rule pattern="(include)(\s*(?:/[*].*?[*]/\s*)?)([^\n]+)">
    15        <bygroups>
    16          <token type="CommentPreproc"/>
    17          <token type="Text"/>
    18          <token type="CommentPreprocFile"/>
    19        </bygroups>
    20      </rule>
    21      <rule pattern="[^/\n]+">
    22        <token type="CommentPreproc"/>
    23      </rule>
    24      <rule pattern="/[*](.|\n)*?[*]/">
    25        <token type="CommentMultiline"/>
    26      </rule>
    27      <rule pattern="//.*?\n">
    28        <token type="CommentSingle"/>
    29        <pop depth="1"/>
    30      </rule>
    31      <rule pattern="/">
    32        <token type="CommentPreproc"/>
    33      </rule>
    34      <rule pattern="(?&lt;=\\)\n">
    35        <token type="CommentPreproc"/>
    36      </rule>
    37      <rule pattern="\n">
    38        <token type="CommentPreproc"/>
    39        <pop depth="1"/>
    40      </rule>
    41    </state>
    42    <state name="literal_number">
    43      <rule pattern="\(">
    44        <token type="Punctuation"/>
    45        <push state="literal_number_inner"/>
    46      </rule>
    47      <rule pattern="\)">
    48        <token type="Literal"/>
    49        <pop depth="1"/>
    50      </rule>
    51      <rule>
    52        <include state="statement"/>
    53      </rule>
    54    </state>
    55    <state name="if0">
    56      <rule pattern="^\s*#if.*?(?&lt;!\\)\n">
    57        <token type="CommentPreproc"/>
    58        <push/>
    59      </rule>
    60      <rule pattern="^\s*#el(?:se|if).*\n">
    61        <token type="CommentPreproc"/>
    62        <pop depth="1"/>
    63      </rule>
    64      <rule pattern="^\s*#endif.*?(?&lt;!\\)\n">
    65        <token type="CommentPreproc"/>
    66        <pop depth="1"/>
    67      </rule>
    68      <rule pattern=".*?\n">
    69        <token type="Comment"/>
    70      </rule>
    71    </state>
    72    <state name="root">
    73      <rule pattern="^([-+])(\s*)(\(.*?\))?(\s*)([a-zA-Z$_][\w$]*:?)">
    74        <bygroups>
    75          <token type="Punctuation"/>
    76          <token type="Text"/>
    77          <usingself state="root"/>
    78          <token type="Text"/>
    79          <token type="NameFunction"/>
    80        </bygroups>
    81        <push state="method"/>
    82      </rule>
    83      <rule>
    84        <include state="whitespace"/>
    85      </rule>
    86      <rule pattern="((?:[\w*\s])+?(?:\s|[*]))([a-zA-Z_]\w*)(\s*\([^;]*?\))([^;{]*)(\{)">
    87        <bygroups>
    88          <usingself state="root"/>
    89          <token type="NameFunction"/>
    90          <usingself state="root"/>
    91          <usingself state="root"/>
    92          <token type="Punctuation"/>
    93        </bygroups>
    94        <push state="function"/>
    95      </rule>
    96      <rule pattern="((?:[\w*\s])+?(?:\s|[*]))([a-zA-Z_]\w*)(\s*\([^;]*?\))([^;]*)(;)">
    97        <bygroups>
    98          <usingself state="root"/>
    99          <token type="NameFunction"/>
   100          <usingself state="root"/>
   101          <usingself state="root"/>
   102          <token type="Punctuation"/>
   103        </bygroups>
   104      </rule>
   105      <rule>
   106        <push state="statement"/>
   107      </rule>
   108    </state>
   109    <state name="statements">
   110      <rule pattern="@&#34;">
   111        <token type="LiteralString"/>
   112        <push state="string"/>
   113      </rule>
   114      <rule pattern="@(YES|NO)">
   115        <token type="LiteralNumber"/>
   116      </rule>
   117      <rule pattern="@&#39;(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\&#39;\n])&#39;">
   118        <token type="LiteralStringChar"/>
   119      </rule>
   120      <rule pattern="@(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[lL]?">
   121        <token type="LiteralNumberFloat"/>
   122      </rule>
   123      <rule pattern="@(\d+\.\d*|\.\d+|\d+[fF])[fF]?">
   124        <token type="LiteralNumberFloat"/>
   125      </rule>
   126      <rule pattern="@0x[0-9a-fA-F]+[Ll]?">
   127        <token type="LiteralNumberHex"/>
   128      </rule>
   129      <rule pattern="@0[0-7]+[Ll]?">
   130        <token type="LiteralNumberOct"/>
   131      </rule>
   132      <rule pattern="@\d+[Ll]?">
   133        <token type="LiteralNumberInteger"/>
   134      </rule>
   135      <rule pattern="@\(">
   136        <token type="Literal"/>
   137        <push state="literal_number"/>
   138      </rule>
   139      <rule pattern="@\[">
   140        <token type="Literal"/>
   141        <push state="literal_array"/>
   142      </rule>
   143      <rule pattern="@\{">
   144        <token type="Literal"/>
   145        <push state="literal_dictionary"/>
   146      </rule>
   147      <rule pattern="(unsafe_unretained|__bridge_transfer|@autoreleasepool|__autoreleasing|@synchronized|@synthesize|@protected|@selector|@required|@optional|readwrite|@property|nonatomic|@finally|__bridge|@dynamic|__strong|readonly|@private|__block|@public|@encode|release|assign|retain|atomic|@throw|@catch|__weak|setter|getter|typeof|strong|inout|class|@try|@end|weak|copy|out|in)\b">
   148        <token type="Keyword"/>
   149      </rule>
   150      <rule pattern="(instancetype|IBOutlet|IBAction|unichar|Class|BOOL|IMP|SEL|id)\b">
   151        <token type="KeywordType"/>
   152      </rule>
   153      <rule pattern="@(true|false|YES|NO)\n">
   154        <token type="NameBuiltin"/>
   155      </rule>
   156      <rule pattern="(YES|NO|nil|self|super)\b">
   157        <token type="NameBuiltin"/>
   158      </rule>
   159      <rule pattern="(Boolean|UInt8|SInt8|UInt16|SInt16|UInt32|SInt32)\b">
   160        <token type="KeywordType"/>
   161      </rule>
   162      <rule pattern="(TRUE|FALSE)\b">
   163        <token type="NameBuiltin"/>
   164      </rule>
   165      <rule pattern="(@interface|@implementation)(\s+)">
   166        <bygroups>
   167          <token type="Keyword"/>
   168          <token type="Text"/>
   169        </bygroups>
   170        <push state="#pop" state="oc_classname"/>
   171      </rule>
   172      <rule pattern="(@class|@protocol)(\s+)">
   173        <bygroups>
   174          <token type="Keyword"/>
   175          <token type="Text"/>
   176        </bygroups>
   177        <push state="#pop" state="oc_forward_classname"/>
   178      </rule>
   179      <rule pattern="@">
   180        <token type="Punctuation"/>
   181      </rule>
   182      <rule pattern="(L?)(&#34;)">
   183        <bygroups>
   184          <token type="LiteralStringAffix"/>
   185          <token type="LiteralString"/>
   186        </bygroups>
   187        <push state="string"/>
   188      </rule>
   189      <rule pattern="(L?)(&#39;)(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\&#39;\n])(&#39;)">
   190        <bygroups>
   191          <token type="LiteralStringAffix"/>
   192          <token type="LiteralStringChar"/>
   193          <token type="LiteralStringChar"/>
   194          <token type="LiteralStringChar"/>
   195        </bygroups>
   196      </rule>
   197      <rule pattern="(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[LlUu]*">
   198        <token type="LiteralNumberFloat"/>
   199      </rule>
   200      <rule pattern="(\d+\.\d*|\.\d+|\d+[fF])[fF]?">
   201        <token type="LiteralNumberFloat"/>
   202      </rule>
   203      <rule pattern="0x[0-9a-fA-F]+[LlUu]*">
   204        <token type="LiteralNumberHex"/>
   205      </rule>
   206      <rule pattern="0[0-7]+[LlUu]*">
   207        <token type="LiteralNumberOct"/>
   208      </rule>
   209      <rule pattern="\d+[LlUu]*">
   210        <token type="LiteralNumberInteger"/>
   211      </rule>
   212      <rule pattern="\*/">
   213        <token type="Error"/>
   214      </rule>
   215      <rule pattern="[~!%^&amp;*+=|?:&lt;&gt;/-]">
   216        <token type="Operator"/>
   217      </rule>
   218      <rule pattern="[()\[\],.]">
   219        <token type="Punctuation"/>
   220      </rule>
   221      <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">
   222        <token type="Keyword"/>
   223      </rule>
   224      <rule pattern="(bool|int|long|float|short|double|char|unsigned|signed|void)\b">
   225        <token type="KeywordType"/>
   226      </rule>
   227      <rule pattern="(typename|__inline|restrict|_inline|thread|inline|naked)\b">
   228        <token type="KeywordReserved"/>
   229      </rule>
   230      <rule pattern="(__m(128i|128d|128|64))\b">
   231        <token type="KeywordReserved"/>
   232      </rule>
   233      <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">
   234        <token type="KeywordReserved"/>
   235      </rule>
   236      <rule pattern="(true|false|NULL)\b">
   237        <token type="NameBuiltin"/>
   238      </rule>
   239      <rule pattern="([a-zA-Z_]\w*)(\s*)(:)(?!:)">
   240        <bygroups>
   241          <token type="NameLabel"/>
   242          <token type="Text"/>
   243          <token type="Punctuation"/>
   244        </bygroups>
   245      </rule>
   246      <rule pattern="[a-zA-Z_]\w*">
   247        <token type="Name"/>
   248      </rule>
   249    </state>
   250    <state name="method">
   251      <rule>
   252        <include state="whitespace"/>
   253      </rule>
   254      <rule pattern=",">
   255        <token type="Punctuation"/>
   256      </rule>
   257      <rule pattern="\.\.\.">
   258        <token type="Punctuation"/>
   259      </rule>
   260      <rule pattern="(\(.*?\))(\s*)([a-zA-Z$_][\w$]*)">
   261        <bygroups>
   262          <usingself state="root"/>
   263          <token type="Text"/>
   264          <token type="NameVariable"/>
   265        </bygroups>
   266      </rule>
   267      <rule pattern="[a-zA-Z$_][\w$]*:">
   268        <token type="NameFunction"/>
   269      </rule>
   270      <rule pattern=";">
   271        <token type="Punctuation"/>
   272        <pop depth="1"/>
   273      </rule>
   274      <rule pattern="\{">
   275        <token type="Punctuation"/>
   276        <push state="function"/>
   277      </rule>
   278      <rule>
   279        <pop depth="1"/>
   280      </rule>
   281    </state>
   282    <state name="literal_array">
   283      <rule pattern="\[">
   284        <token type="Punctuation"/>
   285        <push state="literal_array_inner"/>
   286      </rule>
   287      <rule pattern="\]">
   288        <token type="Literal"/>
   289        <pop depth="1"/>
   290      </rule>
   291      <rule>
   292        <include state="statement"/>
   293      </rule>
   294    </state>
   295    <state name="oc_classname">
   296      <rule pattern="([a-zA-Z$_][\w$]*)(\s*:\s*)([a-zA-Z$_][\w$]*)?(\s*)(\{)">
   297        <bygroups>
   298          <token type="NameClass"/>
   299          <token type="Text"/>
   300          <token type="NameClass"/>
   301          <token type="Text"/>
   302          <token type="Punctuation"/>
   303        </bygroups>
   304        <push state="#pop" state="oc_ivars"/>
   305      </rule>
   306      <rule pattern="([a-zA-Z$_][\w$]*)(\s*:\s*)([a-zA-Z$_][\w$]*)?">
   307        <bygroups>
   308          <token type="NameClass"/>
   309          <token type="Text"/>
   310          <token type="NameClass"/>
   311        </bygroups>
   312        <pop depth="1"/>
   313      </rule>
   314      <rule pattern="([a-zA-Z$_][\w$]*)(\s*)(\([a-zA-Z$_][\w$]*\))(\s*)(\{)">
   315        <bygroups>
   316          <token type="NameClass"/>
   317          <token type="Text"/>
   318          <token type="NameLabel"/>
   319          <token type="Text"/>
   320          <token type="Punctuation"/>
   321        </bygroups>
   322        <push state="#pop" state="oc_ivars"/>
   323      </rule>
   324      <rule pattern="([a-zA-Z$_][\w$]*)(\s*)(\([a-zA-Z$_][\w$]*\))">
   325        <bygroups>
   326          <token type="NameClass"/>
   327          <token type="Text"/>
   328          <token type="NameLabel"/>
   329        </bygroups>
   330        <pop depth="1"/>
   331      </rule>
   332      <rule pattern="([a-zA-Z$_][\w$]*)(\s*)(\{)">
   333        <bygroups>
   334          <token type="NameClass"/>
   335          <token type="Text"/>
   336          <token type="Punctuation"/>
   337        </bygroups>
   338        <push state="#pop" state="oc_ivars"/>
   339      </rule>
   340      <rule pattern="([a-zA-Z$_][\w$]*)">
   341        <token type="NameClass"/>
   342        <pop depth="1"/>
   343      </rule>
   344    </state>
   345    <state name="function">
   346      <rule>
   347        <include state="whitespace"/>
   348      </rule>
   349      <rule>
   350        <include state="statements"/>
   351      </rule>
   352      <rule pattern=";">
   353        <token type="Punctuation"/>
   354      </rule>
   355      <rule pattern="\{">
   356        <token type="Punctuation"/>
   357        <push/>
   358      </rule>
   359      <rule pattern="\}">
   360        <token type="Punctuation"/>
   361        <pop depth="1"/>
   362      </rule>
   363    </state>
   364    <state name="whitespace">
   365      <rule pattern="^#if\s+0">
   366        <token type="CommentPreproc"/>
   367        <push state="if0"/>
   368      </rule>
   369      <rule pattern="^#">
   370        <token type="CommentPreproc"/>
   371        <push state="macro"/>
   372      </rule>
   373      <rule pattern="^(\s*(?:/[*].*?[*]/\s*)?)(#if\s+0)">
   374        <bygroups>
   375          <usingself state="root"/>
   376          <token type="CommentPreproc"/>
   377        </bygroups>
   378        <push state="if0"/>
   379      </rule>
   380      <rule pattern="^(\s*(?:/[*].*?[*]/\s*)?)(#)">
   381        <bygroups>
   382          <usingself state="root"/>
   383          <token type="CommentPreproc"/>
   384        </bygroups>
   385        <push state="macro"/>
   386      </rule>
   387      <rule pattern="\n">
   388        <token type="Text"/>
   389      </rule>
   390      <rule pattern="\s+">
   391        <token type="Text"/>
   392      </rule>
   393      <rule pattern="\\\n">
   394        <token type="Text"/>
   395      </rule>
   396      <rule pattern="//(\n|[\w\W]*?[^\\]\n)">
   397        <token type="CommentSingle"/>
   398      </rule>
   399      <rule pattern="/(\\\n)?[*][\w\W]*?[*](\\\n)?/">
   400        <token type="CommentMultiline"/>
   401      </rule>
   402      <rule pattern="/(\\\n)?[*][\w\W]*">
   403        <token type="CommentMultiline"/>
   404      </rule>
   405    </state>
   406    <state name="literal_number_inner">
   407      <rule pattern="\(">
   408        <token type="Punctuation"/>
   409        <push/>
   410      </rule>
   411      <rule pattern="\)">
   412        <token type="Punctuation"/>
   413        <pop depth="1"/>
   414      </rule>
   415      <rule>
   416        <include state="statement"/>
   417      </rule>
   418    </state>
   419    <state name="statement">
   420      <rule>
   421        <include state="whitespace"/>
   422      </rule>
   423      <rule>
   424        <include state="statements"/>
   425      </rule>
   426      <rule pattern="[{}]">
   427        <token type="Punctuation"/>
   428      </rule>
   429      <rule pattern=";">
   430        <token type="Punctuation"/>
   431        <pop depth="1"/>
   432      </rule>
   433    </state>
   434    <state name="oc_forward_classname">
   435      <rule pattern="([a-zA-Z$_][\w$]*)(\s*,\s*)">
   436        <bygroups>
   437          <token type="NameClass"/>
   438          <token type="Text"/>
   439        </bygroups>
   440        <push state="oc_forward_classname"/>
   441      </rule>
   442      <rule pattern="([a-zA-Z$_][\w$]*)(\s*;?)">
   443        <bygroups>
   444          <token type="NameClass"/>
   445          <token type="Text"/>
   446        </bygroups>
   447        <pop depth="1"/>
   448      </rule>
   449    </state>
   450    <state name="literal_array_inner">
   451      <rule pattern="\[">
   452        <token type="Punctuation"/>
   453        <push/>
   454      </rule>
   455      <rule pattern="\]">
   456        <token type="Punctuation"/>
   457        <pop depth="1"/>
   458      </rule>
   459      <rule>
   460        <include state="statement"/>
   461      </rule>
   462    </state>
   463    <state name="literal_dictionary">
   464      <rule pattern="\}">
   465        <token type="Literal"/>
   466        <pop depth="1"/>
   467      </rule>
   468      <rule>
   469        <include state="statement"/>
   470      </rule>
   471    </state>
   472    <state name="oc_ivars">
   473      <rule>
   474        <include state="whitespace"/>
   475      </rule>
   476      <rule>
   477        <include state="statements"/>
   478      </rule>
   479      <rule pattern=";">
   480        <token type="Punctuation"/>
   481      </rule>
   482      <rule pattern="\{">
   483        <token type="Punctuation"/>
   484        <push/>
   485      </rule>
   486      <rule pattern="\}">
   487        <token type="Punctuation"/>
   488        <pop depth="1"/>
   489      </rule>
   490    </state>
   491    <state name="string">
   492      <rule pattern="&#34;">
   493        <token type="LiteralString"/>
   494        <pop depth="1"/>
   495      </rule>
   496      <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})">
   497        <token type="LiteralStringEscape"/>
   498      </rule>
   499      <rule pattern="[^\\&#34;\n]+">
   500        <token type="LiteralString"/>
   501      </rule>
   502      <rule pattern="\\\n">
   503        <token type="LiteralString"/>
   504      </rule>
   505      <rule pattern="\\">
   506        <token type="LiteralString"/>
   507      </rule>
   508    </state>
   509  </rules>
   510</lexer>

View as plain text