ref|requires|signal|static|throws|unowned|var|virtual|volatile|weak|yields)\b"><token type="KeywordDeclaration"/></rule>
      <rule pattern="(namespace|using)(\s+)"><bygroups><token type="KeywordNamespace"/><token type="TextWhitespace"/></bygroups><push state="namespace"/></rule>
      <rule pattern="(class|errordomain|interface|struct)(\s+)"><bygroups><token type="KeywordDeclaration"/><token type="TextWhitespace"/></bygroups><push state="class"/></rule>
      <rule pattern="(\.)([a-zA-Z_]\w*)"><bygroups><token type="Operator"/><token type="NameAttribute"/></bygroups></rule>
      <rule pattern="(void|bool|char|double|float|int|int8|int16|int32|int64|long|short|size_t|ssize_t|string|time_t|uchar|uint|uint8|uint16|uint32|uint64|ulong|unichar|ushort)\b"><token type="KeywordType"/></rule>
      <rule pattern="(true|false|null)\b"><token type="NameBuiltin"/></rule>
      <rule pattern="[a-zA-Z_]\w*"><token type="Name"/></rule>
    </state>
    <state name="root">
      <rule><include state="whitespace"/></rule>
      <rule><push state="statement"/></rule>
    </state>
    <state name="statement">
      <rule><include state="whitespace"/></rule>
      <rule><include state="statements"/></rule>
      <rule pattern="[{}]"><token type="Punctuation"/></rule>
      <rule pattern=";"><token type="Punctuation"/><pop depth="1"/></rule>
    </state>
    <state name="string">
      <rule pattern="&quot;"><token type="LiteralString"/><pop depth="1"/></rule>
      <rule pattern="\\([\\abfnrtv&quot;\&#x27;]|x[a-fA-F0-9]{2,4}|[0-7]{1,3})"><token type="LiteralStringEscape"/></rule>
      <rule pattern="[^\\&quot;\n]+"><token type="LiteralString"/></rule>
      <rule pattern="\\\n"><token type="LiteralString"/></rule>
      <rule pattern="\\"><token type="LiteralString"/></rule>
    </state>
    <state name="if0">
      <rule pattern="^\s*#if.*?(?&lt;!\\)\n"><token type="CommentPreproc"/><push/></rule>
      <rule pattern="^\s*#el(?:se|if).*\n"><token type="CommentPreproc"/><pop depth="1"/></rule>
      <rule pattern="^\s*#endif.*?(?&lt;!\\)\n"><token type="CommentPreproc"/><pop depth="1"/></rule>
      <rule pattern=".*?\n"><token type="Comment"/></rule>
    </state>
    <state name="class">
      <rule pattern="[a-zA-Z_]\w*"><token type="NameClass"/><pop depth="1"/></rule>
    </state>
    <state name="namespace">
      <rule pattern="[a-zA-Z_][\w.]*"><token type="NameNamespace"/><pop depth="1"/></rule>
    </state>
  </rules>
</lexer>
