...
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="[,;{}\[\]()<>]">
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="\".*?\"">
53 <token type="LiteralString"/>
54 </rule>
55 <rule pattern="\'.*?\'">
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