...
1<lexer>
2 <config>
3 <name>HolyC</name>
4 <alias>holyc</alias>
5 <filename>*.HC</filename>
6 <filename>*.hc</filename>
7 <filename>*.HH</filename>
8 <filename>*.hh</filename>
9 <filename>*.hc.z</filename>
10 <filename>*.HC.Z</filename>
11 <mime_type>text/x-chdr</mime_type>
12 <mime_type>text/x-csrc</mime_type>
13 <mime_type>image/x-xbitmap</mime_type>
14 <mime_type>image/x-xpixmap</mime_type>
15 <ensure_nl>true</ensure_nl>
16 </config>
17 <rules>
18 <state name="statement">
19 <rule>
20 <include state="whitespace"/>
21 </rule>
22 <rule>
23 <include state="statements"/>
24 </rule>
25 <rule pattern="[{}]">
26 <token type="Punctuation"/>
27 </rule>
28 <rule pattern=";">
29 <token type="Punctuation"/>
30 <pop depth="1"/>
31 </rule>
32 </state>
33 <state name="function">
34 <rule>
35 <include state="whitespace"/>
36 </rule>
37 <rule>
38 <include state="statements"/>
39 </rule>
40 <rule pattern=";">
41 <token type="Punctuation"/>
42 </rule>
43 <rule pattern="\{">
44 <token type="Punctuation"/>
45 <push/>
46 </rule>
47 <rule pattern="\}">
48 <token type="Punctuation"/>
49 <pop depth="1"/>
50 </rule>
51 </state>
52 <state name="string">
53 <rule pattern=""">
54 <token type="LiteralString"/>
55 <pop depth="1"/>
56 </rule>
57 <rule pattern="\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8}|[0-7]{1,3})">
58 <token type="LiteralStringEscape"/>
59 </rule>
60 <rule pattern="[^\\"\n]+">
61 <token type="LiteralString"/>
62 </rule>
63 <rule pattern="\\\n">
64 <token type="LiteralString"/>
65 </rule>
66 <rule pattern="\\">
67 <token type="LiteralString"/>
68 </rule>
69 </state>
70 <state name="macro">
71 <rule pattern="(include)(\s*(?:/[*].*?[*]/\s*)?)([^\n]+)">
72 <bygroups>
73 <token type="CommentPreproc"/>
74 <token type="Text"/>
75 <token type="CommentPreprocFile"/>
76 </bygroups>
77 </rule>
78 <rule pattern="[^/\n]+">
79 <token type="CommentPreproc"/>
80 </rule>
81 <rule pattern="/[*](.|\n)*?[*]/">
82 <token type="CommentMultiline"/>
83 </rule>
84 <rule pattern="//.*?\n">
85 <token type="CommentSingle"/>
86 <pop depth="1"/>
87 </rule>
88 <rule pattern="/">
89 <token type="CommentPreproc"/>
90 </rule>
91 <rule pattern="(?<=\\)\n">
92 <token type="CommentPreproc"/>
93 </rule>
94 <rule pattern="\n">
95 <token type="CommentPreproc"/>
96 <pop depth="1"/>
97 </rule>
98 </state>
99 <state name="if0">
100 <rule pattern="^\s*#if.*?(?<!\\)\n">
101 <token type="CommentPreproc"/>
102 <push/>
103 </rule>
104 <rule pattern="^\s*#el(?:se|if).*\n">
105 <token type="CommentPreproc"/>
106 <pop depth="1"/>
107 </rule>
108 <rule pattern="^\s*#endif.*?(?<!\\)\n">
109 <token type="CommentPreproc"/>
110 <pop depth="1"/>
111 </rule>
112 <rule pattern=".*?\n">
113 <token type="Comment"/>
114 </rule>
115 </state>
116 <state name="whitespace">
117 <rule pattern="^#if\s+0">
118 <token type="CommentPreproc"/>
119 <push state="if0"/>
120 </rule>
121 <rule pattern="^#">
122 <token type="CommentPreproc"/>
123 <push state="macro"/>
124 </rule>
125 <rule pattern="^(\s*(?:/[*].*?[*]/\s*)?)(#if\s+0)">
126 <bygroups>
127 <usingself state="root"/>
128 <token type="CommentPreproc"/>
129 </bygroups>
130 <push state="if0"/>
131 </rule>
132 <rule pattern="^(\s*(?:/[*].*?[*]/\s*)?)(#)">
133 <bygroups>
134 <usingself state="root"/>
135 <token type="CommentPreproc"/>
136 </bygroups>
137 <push state="macro"/>
138 </rule>
139 <rule pattern="\n">
140 <token type="Text"/>
141 </rule>
142 <rule pattern="\s+">
143 <token type="Text"/>
144 </rule>
145 <rule pattern="\\\n">
146 <token type="Text"/>
147 </rule>
148 <rule pattern="//(\n|[\w\W]*?[^\\]\n)">
149 <token type="CommentSingle"/>
150 </rule>
151 <rule pattern="/(\\\n)?[*][\w\W]*?[*](\\\n)?/">
152 <token type="CommentMultiline"/>
153 </rule>
154 <rule pattern="/(\\\n)?[*][\w\W]*">
155 <token type="CommentMultiline"/>
156 </rule>
157 </state>
158 <state name="statements">
159 <rule pattern="(L?)(")">
160 <bygroups>
161 <token type="LiteralStringAffix"/>
162 <token type="LiteralString"/>
163 </bygroups>
164 <push state="string"/>
165 </rule>
166 <rule pattern="(L?)(')(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\'\n])(')">
167 <bygroups>
168 <token type="LiteralStringAffix"/>
169 <token type="LiteralStringChar"/>
170 <token type="LiteralStringChar"/>
171 <token type="LiteralStringChar"/>
172 </bygroups>
173 </rule>
174 <rule pattern="(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[LlUu]*">
175 <token type="LiteralNumberFloat"/>
176 </rule>
177 <rule pattern="(\d+\.\d*|\.\d+|\d+[fF])[fF]?">
178 <token type="LiteralNumberFloat"/>
179 </rule>
180 <rule pattern="0x[0-9a-fA-F]+[LlUu]*">
181 <token type="LiteralNumberHex"/>
182 </rule>
183 <rule pattern="0[0-7]+[LlUu]*">
184 <token type="LiteralNumberOct"/>
185 </rule>
186 <rule pattern="\d+[LlUu]*">
187 <token type="LiteralNumberInteger"/>
188 </rule>
189 <rule pattern="\*/">
190 <token type="Error"/>
191 </rule>
192 <rule pattern="[~!%^&*+=|?:<>/-]">
193 <token type="Operator"/>
194 </rule>
195 <rule pattern="[()\[\],.]">
196 <token type="Punctuation"/>
197 </rule>
198 <rule pattern="(break|case|continue|default|do|else|for|goto|if|return|switch|while|throw|try|catch|extern|MOV|CALL|PUSH|LEAVE|RET|SUB|SHR|ADD|RETF|CMP|JNE|BTS|INT|XOR|JC|JZ|LOOP|POP|TEST|SHL|ADC|SBB|JMP|INC)\b">
199 <token type="Keyword"/>
200 </rule>
201 <rule pattern="(U0|I8|U8|I16|U16|I32|U32|I64|U64|F64|Bool|class|union|DU8|DU16|DU32|DU64|RAX|RCX|RDX|RBX|RSP|RBP|RSI|RDI|EAX|ECX|EDX|EBX|ESP|EBP|ESI|EDI|AX|CX|DX|BX|SP|BP|SI|DI|SS|CS|DS|ES|FS|GS|CH|asm|const|extern|register|restrict|static|volatile|inline|_extern|_import|IMPORT|public)\b">
202 <token type="KeywordType"/>
203 </rule>
204 <rule pattern="__()\b">
205 <token type="KeywordReserved"/>
206 </rule>
207 <rule pattern="(NULL|TRUE|FALSE|ON|OFF)\b">
208 <token type="NameBuiltin"/>
209 </rule>
210 <rule pattern="([a-zA-Z_]\w*)(\s*)(:)(?!:)">
211 <bygroups>
212 <token type="NameLabel"/>
213 <token type="Text"/>
214 <token type="Punctuation"/>
215 </bygroups>
216 </rule>
217 <rule pattern="\b[A-Za-z_]\w*(?=\s*\()">
218 <token type="NameFunction"/>
219 </rule>
220 <rule pattern="[a-zA-Z_]\w*">
221 <token type="Name"/>
222 </rule>
223 </state>
224 <state name="root">
225 <rule>
226 <include state="whitespace"/>
227 </rule>
228 <rule pattern="((?:[\w*\s])+?(?:\s|[*]))([a-zA-Z_]\w*)(\s*\([^;]*?\))([^;{]*)(\{)">
229 <bygroups>
230 <usingself state="root"/>
231 <token type="NameFunction"/>
232 <usingself state="root"/>
233 <usingself state="root"/>
234 <token type="Punctuation"/>
235 </bygroups>
236 <push state="function"/>
237 </rule>
238 <rule pattern="((?:[\w*\s])+?(?:\s|[*]))([a-zA-Z_]\w*)(\s*\([^;]*?\))([^;]*)(;)">
239 <bygroups>
240 <usingself state="root"/>
241 <token type="NameFunction"/>
242 <usingself state="root"/>
243 <usingself state="root"/>
244 <token type="Punctuation"/>
245 </bygroups>
246 </rule>
247 <rule>
248 <push state="statement"/>
249 </rule>
250 </state>
251 </rules>
252</lexer>
View as plain text