...
1<lexer>
2 <config>
3 <name>Thrift</name>
4 <alias>thrift</alias>
5 <filename>*.thrift</filename>
6 <mime_type>application/x-thrift</mime_type>
7 </config>
8 <rules>
9 <state name="class">
10 <rule pattern="[a-zA-Z_]\w*">
11 <token type="NameClass"/>
12 <pop depth="1"/>
13 </rule>
14 <rule>
15 <pop depth="1"/>
16 </rule>
17 </state>
18 <state name="keywords">
19 <rule pattern="(async|oneway|extends|throws|required|optional)\b">
20 <token type="Keyword"/>
21 </rule>
22 <rule pattern="(true|false)\b">
23 <token type="KeywordConstant"/>
24 </rule>
25 <rule pattern="(const|typedef)\b">
26 <token type="KeywordDeclaration"/>
27 </rule>
28 <rule pattern="(smalltalk_category|smalltalk_prefix|delphi_namespace|csharp_namespace|ruby_namespace|xsd_namespace|cpp_namespace|php_namespace|xsd_nillable|xsd_optional|java_package|cocoa_prefix|perl_package|cpp_include|py_module|xsd_attrs|cpp_type|xsd_all|include)\b">
29 <token type="KeywordNamespace"/>
30 </rule>
31 <rule pattern="(double|binary|string|slist|senum|bool|void|byte|list|i64|map|set|i32|i16)\b">
32 <token type="KeywordType"/>
33 </rule>
34 <rule pattern="\b(__NAMESPACE__|synchronized|__FUNCTION__|__METHOD__|endforeach|implements|enddeclare|instanceof|transient|endswitch|protected|interface|__CLASS__|continue|__FILE__|abstract|function|endwhile|unsigned|register|volatile|__LINE__|declare|foreach|default|__DIR__|private|finally|dynamic|virtual|lambda|elseif|inline|switch|unless|endfor|delete|import|return|module|ensure|native|rescue|assert|sizeof|static|global|except|public|float|BEGIN|super|endif|yield|elsif|throw|clone|class|catch|until|break|retry|begin|raise|alias|while|print|undef|exec|with|when|case|redo|args|elif|this|then|self|goto|else|pass|next|var|for|xor|END|not|try|del|and|def|new|use|nil|end|if|do|is|or|in|as)\b">
35 <token type="KeywordReserved"/>
36 </rule>
37 </state>
38 <state name="numbers">
39 <rule pattern="[+-]?(\d+\.\d+([eE][+-]?\d+)?|\.?\d+[eE][+-]?\d+)">
40 <token type="LiteralNumberFloat"/>
41 </rule>
42 <rule pattern="[+-]?0x[0-9A-Fa-f]+">
43 <token type="LiteralNumberHex"/>
44 </rule>
45 <rule pattern="[+-]?[0-9]+">
46 <token type="LiteralNumberInteger"/>
47 </rule>
48 </state>
49 <state name="root">
50 <rule>
51 <include state="whitespace"/>
52 </rule>
53 <rule>
54 <include state="comments"/>
55 </rule>
56 <rule pattern=""">
57 <token type="LiteralStringDouble"/>
58 <combined state="stringescape" state="dqs"/>
59 </rule>
60 <rule pattern="\'">
61 <token type="LiteralStringSingle"/>
62 <combined state="stringescape" state="sqs"/>
63 </rule>
64 <rule pattern="(namespace)(\s+)">
65 <bygroups>
66 <token type="KeywordNamespace"/>
67 <token type="TextWhitespace"/>
68 </bygroups>
69 <push state="namespace"/>
70 </rule>
71 <rule pattern="(enum|union|struct|service|exception)(\s+)">
72 <bygroups>
73 <token type="KeywordDeclaration"/>
74 <token type="TextWhitespace"/>
75 </bygroups>
76 <push state="class"/>
77 </rule>
78 <rule pattern="((?:(?:[^\W\d]|\$)[\w.\[\]$<>]*\s+)+?)((?:[^\W\d]|\$)[\w$]*)(\s*)(\()">
79 <bygroups>
80 <usingself state="root"/>
81 <token type="NameFunction"/>
82 <token type="Text"/>
83 <token type="Operator"/>
84 </bygroups>
85 </rule>
86 <rule>
87 <include state="keywords"/>
88 </rule>
89 <rule>
90 <include state="numbers"/>
91 </rule>
92 <rule pattern="[&=]">
93 <token type="Operator"/>
94 </rule>
95 <rule pattern="[:;,{}()<>\[\]]">
96 <token type="Punctuation"/>
97 </rule>
98 <rule pattern="[a-zA-Z_](\.\w|\w)*">
99 <token type="Name"/>
100 </rule>
101 </state>
102 <state name="dqs">
103 <rule pattern=""">
104 <token type="LiteralStringDouble"/>
105 <pop depth="1"/>
106 </rule>
107 <rule pattern="[^\\"\n]+">
108 <token type="LiteralStringDouble"/>
109 </rule>
110 </state>
111 <state name="namespace">
112 <rule pattern="[a-z*](\.\w|\w)*">
113 <token type="NameNamespace"/>
114 <pop depth="1"/>
115 </rule>
116 <rule>
117 <pop depth="1"/>
118 </rule>
119 </state>
120 <state name="whitespace">
121 <rule pattern="\n">
122 <token type="TextWhitespace"/>
123 </rule>
124 <rule pattern="\s+">
125 <token type="TextWhitespace"/>
126 </rule>
127 </state>
128 <state name="comments">
129 <rule pattern="#.*$">
130 <token type="Comment"/>
131 </rule>
132 <rule pattern="//.*?\n">
133 <token type="Comment"/>
134 </rule>
135 <rule pattern="/\*[\w\W]*?\*/">
136 <token type="CommentMultiline"/>
137 </rule>
138 </state>
139 <state name="stringescape">
140 <rule pattern="\\([\\nrt"\'])">
141 <token type="LiteralStringEscape"/>
142 </rule>
143 </state>
144 <state name="sqs">
145 <rule pattern="'">
146 <token type="LiteralStringSingle"/>
147 <pop depth="1"/>
148 </rule>
149 <rule pattern="[^\\\'\n]+">
150 <token type="LiteralStringSingle"/>
151 </rule>
152 </state>
153 </rules>
154</lexer>
View as plain text