...

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

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

     1<lexer>
     2  <config>
     3    <name>Protocol Buffer</name>
     4    <alias>protobuf</alias>
     5    <alias>proto</alias>
     6    <filename>*.proto</filename>
     7  </config>
     8  <rules>
     9    <state name="root">
    10      <rule pattern="[ \t]+">
    11        <token type="Text"/>
    12      </rule>
    13      <rule pattern="[,;{}\[\]()&lt;&gt;]">
    14        <token type="Punctuation"/>
    15      </rule>
    16      <rule pattern="/(\\\n)?/(\n|(.|\n)*?[^\\]\n)">
    17        <token type="CommentSingle"/>
    18      </rule>
    19      <rule pattern="/(\\\n)?\*(.|\n)*?\*(\\\n)?/">
    20        <token type="CommentMultiline"/>
    21      </rule>
    22      <rule pattern="\b(extensions|required|repeated|optional|returns|default|option|packed|import|ctype|oneof|max|rpc|to)\b">
    23        <token type="Keyword"/>
    24      </rule>
    25      <rule pattern="(sfixed32|sfixed64|fixed32|fixed64|sint32|sint64|double|string|uint32|uint64|int32|float|int64|bytes|bool)\b">
    26        <token type="KeywordType"/>
    27      </rule>
    28      <rule pattern="(true|false)\b">
    29        <token type="KeywordConstant"/>
    30      </rule>
    31      <rule pattern="(package)(\s+)">
    32        <bygroups>
    33          <token type="KeywordNamespace"/>
    34          <token type="Text"/>
    35        </bygroups>
    36        <push state="package"/>
    37      </rule>
    38      <rule pattern="(message|extend)(\s+)">
    39        <bygroups>
    40          <token type="KeywordDeclaration"/>
    41          <token type="Text"/>
    42        </bygroups>
    43        <push state="message"/>
    44      </rule>
    45      <rule pattern="(enum|group|service)(\s+)">
    46        <bygroups>
    47          <token type="KeywordDeclaration"/>
    48          <token type="Text"/>
    49        </bygroups>
    50        <push state="type"/>
    51      </rule>
    52      <rule pattern="\&#34;.*?\&#34;">
    53        <token type="LiteralString"/>
    54      </rule>
    55      <rule pattern="\&#39;.*?\&#39;">
    56        <token type="LiteralString"/>
    57      </rule>
    58      <rule pattern="(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[LlUu]*">
    59        <token type="LiteralNumberFloat"/>
    60      </rule>
    61      <rule pattern="(\d+\.\d*|\.\d+|\d+[fF])[fF]?">
    62        <token type="LiteralNumberFloat"/>
    63      </rule>
    64      <rule pattern="(\-?(inf|nan))\b">
    65        <token type="LiteralNumberFloat"/>
    66      </rule>
    67      <rule pattern="0x[0-9a-fA-F]+[LlUu]*">
    68        <token type="LiteralNumberHex"/>
    69      </rule>
    70      <rule pattern="0[0-7]+[LlUu]*">
    71        <token type="LiteralNumberOct"/>
    72      </rule>
    73      <rule pattern="\d+[LlUu]*">
    74        <token type="LiteralNumberInteger"/>
    75      </rule>
    76      <rule pattern="[+-=]">
    77        <token type="Operator"/>
    78      </rule>
    79      <rule pattern="([a-zA-Z_][\w.]*)([ \t]*)(=)">
    80        <bygroups>
    81          <token type="Name"/>
    82          <token type="Text"/>
    83          <token type="Operator"/>
    84        </bygroups>
    85      </rule>
    86      <rule pattern="[a-zA-Z_][\w.]*">
    87        <token type="Name"/>
    88      </rule>
    89    </state>
    90    <state name="package">
    91      <rule pattern="[a-zA-Z_]\w*">
    92        <token type="NameNamespace"/>
    93        <pop depth="1"/>
    94      </rule>
    95      <rule>
    96        <pop depth="1"/>
    97      </rule>
    98    </state>
    99    <state name="message">
   100      <rule pattern="[a-zA-Z_]\w*">
   101        <token type="NameClass"/>
   102        <pop depth="1"/>
   103      </rule>
   104      <rule>
   105        <pop depth="1"/>
   106      </rule>
   107    </state>
   108    <state name="type">
   109      <rule pattern="[a-zA-Z_]\w*">
   110        <token type="Name"/>
   111        <pop depth="1"/>
   112      </rule>
   113      <rule>
   114        <pop depth="1"/>
   115      </rule>
   116    </state>
   117  </rules>
   118</lexer>

View as plain text