Conditions | 328 |
Paths | 330 |
Total Lines | 945 |
Code Lines | 674 |
Lines | 0 |
Ratio | 0 % |
Changes | 1 | ||
Bugs | 0 | Features | 0 |
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
1 | <?php |
||
25 | public function applyActions(Production $production): void |
||
26 | { |
||
27 | $header = $production->getHeaderShortcut(); |
||
28 | $symbols = $production->getSymbolListShortcut(); |
||
29 | $hash = "{$production->getHeader()->getSymbolId()}.{$production->getIndex()}"; |
||
30 | switch ($hash) { |
||
31 | /** |
||
32 | * Root production. |
||
33 | */ |
||
34 | case SymbolType::NT_ROOT . ".0": |
||
35 | // [SymbolType::NT_PARTS, SymbolType::T_EOI] |
||
36 | $rootNode = $this |
||
37 | ->tree |
||
38 | ->getNode($symbols[0]['s.alternatives_node']); |
||
39 | $this |
||
40 | ->tree |
||
41 | ->setRootNode($rootNode); |
||
42 | break; |
||
43 | |||
44 | /** |
||
45 | * Alternative patterns. |
||
46 | */ |
||
47 | case SymbolType::NT_PARTS . ".0": |
||
48 | // [SymbolType::NT_PART, SymbolType::NT_ALT_PARTS] |
||
49 | $header['s.alternatives_node'] = $symbols[1]['s.alternatives_node']; |
||
50 | break; |
||
51 | |||
52 | case SymbolType::NT_ALT_PARTS . ".0": |
||
53 | case SymbolType::NT_ALT_PARTS_TAIL . ".0": |
||
54 | // [SymbolType::NT_ALT_SEPARATOR, SymbolType::NT_PART, SymbolType::NT_ALT_PARTS_TAIL] |
||
55 | $header['s.alternatives_node'] = $symbols[2]['s.alternatives_node']; |
||
56 | break; |
||
57 | |||
58 | case SymbolType::NT_ALT_PARTS . ".1": |
||
59 | // [] |
||
60 | $header['s.alternatives_node'] = $header['i.alternative_node']; |
||
61 | break; |
||
62 | |||
63 | case SymbolType::NT_ALT_PARTS_TAIL . ".1": |
||
64 | // [] |
||
65 | $header['s.alternatives_node'] = $header['i.alternatives_node']; |
||
66 | $alternativeNode = $this |
||
67 | ->tree |
||
68 | ->getNode($header['i.alternative_node']); |
||
69 | $this |
||
70 | ->tree |
||
71 | ->getNode($header['i.alternatives_node']) |
||
72 | ->addChild($alternativeNode); |
||
73 | break; |
||
74 | |||
75 | /** |
||
76 | * Repeatable pattern. |
||
77 | */ |
||
78 | case SymbolType::NT_PART . ".0": |
||
79 | // [SymbolType::NT_ITEM, SymbolType::NT_MORE_ITEMS] |
||
80 | $header['s.alternative_node'] = $symbols[1]['s.concatenate_node']; |
||
81 | break; |
||
82 | |||
83 | case SymbolType::NT_PART . ".1": |
||
84 | // [] |
||
85 | $header['s.alternative_node'] = $this |
||
86 | ->tree |
||
87 | ->createNode(NodeType::EMPTY) |
||
88 | ->getId(); |
||
89 | break; |
||
90 | |||
91 | case SymbolType::NT_MORE_ITEMS . ".0": |
||
92 | // [SymbolType::NT_ITEM, SymbolType::NT_MORE_ITEMS_TAIL] |
||
93 | $header['s.concatenate_node'] = $symbols[1]['s.concatenate_node']; |
||
94 | break; |
||
95 | |||
96 | case SymbolType::NT_MORE_ITEMS . ".1": |
||
97 | // [] |
||
98 | $header['s.concatenate_node'] = $header['i.concatenable_node']; |
||
99 | break; |
||
100 | |||
101 | case SymbolType::NT_MORE_ITEMS_TAIL . ".0": |
||
102 | // [SymbolType::NT_ITEM, SymbolType::NT_MORE_ITEMS_TAIL] |
||
103 | $header['s.concatenate_node'] = $symbols[1]['s.concatenate_node']; |
||
104 | break; |
||
105 | |||
106 | case SymbolType::NT_MORE_ITEMS_TAIL . ".1": |
||
107 | // [] |
||
108 | $header['s.concatenate_node'] = $header['i.concatenate_node']; |
||
109 | $concatenableNode = $this |
||
110 | ->tree |
||
111 | ->getNode($header['i.concatenable_node']); |
||
112 | $this |
||
113 | ->tree |
||
114 | ->getNode($header['i.concatenate_node']) |
||
115 | ->addChild($concatenableNode); |
||
116 | break; |
||
117 | |||
118 | case SymbolType::NT_ITEM . ".0": |
||
119 | // [SymbolType::NT_ASSERT] |
||
120 | $header['s.concatenable_node'] = $symbols[0]['s.assert_node']; |
||
121 | break; |
||
122 | |||
123 | case SymbolType::NT_ITEM . ".1": |
||
124 | // [SymbolType::NT_ITEM_BODY, SymbolType::NT_ITEM_QUANT] |
||
125 | $min = $symbols[1]['s.min']; |
||
126 | $max = $symbols[1]['s.max']; |
||
127 | $isMaxInfinite = $symbols[1]['s.is_max_infinite']; |
||
128 | $shouldNotRepeat = 1 == $min && 1 == $max && !$isMaxInfinite; |
||
129 | if ($shouldNotRepeat) { |
||
130 | $header['s.concatenable_node'] = $symbols[0]['s.repeatable_node']; |
||
131 | break; |
||
132 | } |
||
133 | $repeatableNode = $this |
||
134 | ->tree |
||
135 | ->getNode($symbols[0]['s.repeatable_node']); |
||
136 | $repeatNode = $this |
||
137 | ->tree |
||
138 | ->createNode(NodeType::REPEAT) |
||
139 | ->setAttribute('min', $min) |
||
140 | ->setAttribute('max', $max) |
||
141 | ->setAttribute('is_max_infinite', $isMaxInfinite) |
||
142 | ->addChild($repeatableNode); |
||
143 | $header['s.concatenable_node'] = $repeatNode->getId(); |
||
144 | break; |
||
145 | |||
146 | case SymbolType::NT_ITEM_BODY . ".0": |
||
147 | // [SymbolType::NT_GROUP] |
||
148 | $header['s.repeatable_node'] = $symbols[0]['s.group_node']; |
||
149 | break; |
||
150 | |||
151 | case SymbolType::NT_ITEM_BODY . ".1": |
||
152 | // [SymbolType::NT_CLASS_] |
||
153 | $header['s.repeatable_node'] = $symbols[0]['s.class_node']; |
||
154 | break; |
||
155 | |||
156 | case SymbolType::NT_ITEM_BODY . ".2": |
||
157 | // [SymbolType::NT_SYMBOL] |
||
158 | $header['s.repeatable_node'] = $symbols[0]['s.symbol_node']; |
||
159 | break; |
||
160 | |||
161 | case SymbolType::NT_CLASS . ".0": |
||
162 | // [SymbolType::NT_CLASS_START, SymbolType::NT_CLASS_BODY, SymbolType::NT_CLASS_END] |
||
163 | $header['s.class_node'] = $symbols[1]['s.class_node']; |
||
164 | break; |
||
165 | |||
166 | case SymbolType::NT_CLASS_BODY . ".0": |
||
167 | // [SymbolType::NT_CLASS_INVERTER, SymbolType::NT_FIRST_INV_CLASS_ITEM, SymbolType::NT_CLASS_ITEMS] |
||
168 | $header['s.class_node'] = $symbols[2]['s.class_node']; |
||
169 | break; |
||
170 | |||
171 | case SymbolType::NT_CLASS_BODY . ".1": |
||
172 | // [SymbolType::NT_FIRST_CLASS_ITEM, SymbolType::NT_CLASS_ITEMS] |
||
173 | $header['s.class_node'] = $symbols[1]['s.class_node']; |
||
174 | break; |
||
175 | |||
176 | case SymbolType::NT_FIRST_CLASS_ITEM . ".0": |
||
177 | // [SymbolType::NT_FIRST_CLASS_SYMBOL, SymbolType::NT_RANGE] |
||
178 | $header['s.symbol_node'] = $symbols[1]['s.symbol_node']; |
||
179 | break; |
||
180 | |||
181 | case SymbolType::NT_FIRST_CLASS_ITEM . ".1": |
||
182 | case SymbolType::NT_FIRST_INV_CLASS_ITEM . ".1": |
||
183 | // [SymbolType::NT_ESC_CLASS_SYMBOL, SymbolType::NT_RANGE] |
||
184 | $header['s.symbol_node'] = $symbols[1]['s.symbol_node']; |
||
185 | break; |
||
186 | |||
187 | case SymbolType::NT_FIRST_INV_CLASS_ITEM . ".0": |
||
188 | // [SymbolType::NT_FIRST_INV_CLASS_SYMBOL, SymbolType::NT_RANGE] |
||
189 | $header['s.symbol_node'] = $symbols[1]['s.symbol_node']; |
||
190 | break; |
||
191 | |||
192 | case SymbolType::NT_CLASS_ITEM . ".0": |
||
193 | // [SymbolType::NT_CLASS_SYMBOL, SymbolType::NT_RANGE] |
||
194 | $header['s.symbol_node'] = $symbols[1]['s.symbol_node']; |
||
195 | break; |
||
196 | |||
197 | case SymbolType::NT_ESC_CLASS_SYMBOL . ".0": |
||
198 | // [SymbolType::NT_ESC, SymbolType::NT_CLASS_ESC_SEQUENCE] |
||
199 | $header['s.symbol_node'] = $symbols[1]['s.escape_node']; |
||
200 | break; |
||
201 | |||
202 | case SymbolType::NT_CLASS_ESC_SEQUENCE . ".0": |
||
203 | // [SymbolType::NT_ESC_SIMPLE] |
||
204 | $escapeNode = $this |
||
205 | ->tree |
||
206 | ->createNode(NodeType::ESC_SIMPLE) |
||
207 | ->setAttribute('code', $symbols[0]['s.code']); |
||
208 | $header['s.escape_node'] = $escapeNode->getId(); |
||
209 | break; |
||
210 | |||
211 | case SymbolType::NT_CLASS_ESC_SEQUENCE . ".1": |
||
212 | // [SymbolType::NT_ESC_SPECIAL] |
||
213 | $escapeNode = $this |
||
214 | ->tree |
||
215 | ->createNode(NodeType::SYMBOL) |
||
216 | ->setAttribute('code', $symbols[0]['s.code']); |
||
217 | $header['s.escape_node'] = $escapeNode->getId(); |
||
218 | break; |
||
219 | |||
220 | case SymbolType::NT_CLASS_ESC_SEQUENCE . ".2": |
||
221 | // [SymbolType::NT_ESC_NON_PRINTABLE] |
||
222 | $header['s.escape_node'] = $symbols[0]['s.symbol_node']; |
||
223 | break; |
||
224 | |||
225 | case SymbolType::NT_CLASS_ESC_SEQUENCE . ".3": |
||
226 | // [SymbolType::NT_ESC_PROP] |
||
227 | $escapeNode = $this |
||
228 | ->tree |
||
229 | ->createNode(NodeType::SYMBOL_PROP) |
||
230 | ->setAttribute('not', false) |
||
231 | ->setAttribute('name', $symbols[0]['s.name']); |
||
232 | $header['s.escape_node'] = $escapeNode->getId(); |
||
233 | break; |
||
234 | |||
235 | case SymbolType::NT_CLASS_ESC_SEQUENCE . ".4": |
||
236 | // [SymbolType::NT_ESC_NOT_PROP] |
||
237 | $escapeNode = $this |
||
238 | ->tree |
||
239 | ->createNode(NodeType::SYMBOL_PROP) |
||
240 | ->setAttribute('not', true) |
||
241 | ->setAttribute('name', $symbols[0]['s.name']); |
||
242 | $header['s.escape_node'] = $escapeNode->getId(); |
||
243 | break; |
||
244 | |||
245 | case SymbolType::NT_CLASS_SYMBOL . ".0": |
||
246 | // [SymbolType::NT_ESC_CLASS_SYMBOL] |
||
247 | $header['s.symbol_node'] = $symbols[0]['s.symbol_node']; |
||
248 | break; |
||
249 | |||
250 | case SymbolType::NT_CLASS_SYMBOL . ".1": |
||
251 | // [SymbolType::NT_UNESC_CLASS_SYMBOL] |
||
252 | $symbolNode = $this |
||
253 | ->tree |
||
254 | ->createNode(NodeType::SYMBOL) |
||
255 | ->setAttribute('code', $symbols[0]['s.code']); |
||
256 | $header['s.symbol_node'] = $symbolNode->getId(); |
||
257 | break; |
||
258 | |||
259 | case SymbolType::NT_RANGE . ".0": |
||
260 | // [SymbolType::NT_RANGE_SEPARATOR, SymbolType::NT_CLASS_SYMBOL] |
||
261 | $startRangeNode = $this |
||
262 | ->tree |
||
263 | ->getNode($header['i.symbol_node']); |
||
264 | $finishRangeNode = $this |
||
265 | ->tree |
||
266 | ->getNode($symbols[1]['s.symbol_node']); |
||
267 | $symbolNode = $this |
||
268 | ->tree |
||
269 | ->createNode(NodeType::SYMBOL_RANGE) |
||
270 | ->addChild($startRangeNode) |
||
271 | ->addChild($finishRangeNode); |
||
272 | $header['s.symbol_node'] = $symbolNode->getId(); |
||
273 | break; |
||
274 | |||
275 | case SymbolType::NT_RANGE . ".1": |
||
276 | // [] |
||
277 | $header['s.symbol_node'] = $header['i.symbol_node']; |
||
278 | break; |
||
279 | |||
280 | case SymbolType::NT_CLASS_ITEMS . ".0": |
||
281 | // [SymbolType::NT_CLASS_ITEM, SymbolType::NT_CLASS_ITEMS_TAIL] |
||
282 | $header['s.class_node'] = $symbols[1]['i.class_node']; |
||
283 | break; |
||
284 | |||
285 | case SymbolType::NT_CLASS_ITEMS . ".1": |
||
286 | // [] |
||
287 | $symbolNode = $this->tree->getNode($header['i.symbol_node']); |
||
288 | $classNode = $header['i.not'] |
||
289 | ? $this |
||
290 | ->tree |
||
291 | ->createNode(NodeType::SYMBOL_CLASS) |
||
292 | ->setAttribute('not', true) |
||
293 | ->addChild($symbolNode) |
||
294 | : $symbolNode; |
||
295 | $header['s.class_node'] = $classNode->getId(); |
||
296 | break; |
||
297 | |||
298 | case SymbolType::NT_CLASS_ITEMS_TAIL . ".0": |
||
299 | // [SymbolType::NT_CLASS_ITEM, SymbolType::NT_CLASS_ITEMS_TAIL] |
||
300 | // TODO: Wierd SDD, maybe bug? Write test. |
||
301 | case SymbolType::NT_CLASS_ITEMS_TAIL . ".1": |
||
302 | // [] |
||
303 | $header['s.class_node'] = $header['i.class_node']; |
||
304 | break; |
||
305 | |||
306 | |||
307 | case SymbolType::NT_SYMBOL . ".0": |
||
308 | // [SymbolType::NT_SYMBOL_ANY] |
||
309 | $symbolNode = $this |
||
310 | ->tree |
||
311 | ->createNode(NodeType::SYMBOL_ANY); |
||
312 | $header['s.symbol_node'] = $symbolNode->getId(); |
||
313 | break; |
||
314 | |||
315 | case SymbolType::NT_SYMBOL . ".1": |
||
316 | // [SymbolType::NT_ESC_SYMBOL] |
||
317 | $header['s.symbol_node'] = $symbols[0]['s.escape_node']; |
||
318 | break; |
||
319 | |||
320 | case SymbolType::NT_SYMBOL . ".2": |
||
321 | // [SymbolType::NT_UNESC_SYMBOL] |
||
322 | $symbolNode = $this |
||
323 | ->tree |
||
324 | ->createNode(NodeType::SYMBOL) |
||
325 | ->setAttribute('code', $symbols[0]['s.code']); |
||
326 | $header['s.symbol_node'] = $symbolNode->getId(); |
||
327 | break; |
||
328 | |||
329 | case SymbolType::NT_GROUP . ".0": |
||
330 | // [SymbolType::NT_GROUP_START, SymbolType::NT_PARTS, SymbolType::NT_GROUP_END] |
||
331 | $header['s.group_node'] = $symbols[1]['s.alternatives_node']; |
||
332 | break; |
||
333 | |||
334 | case SymbolType::NT_ASSERT . ".0": |
||
335 | // [SymbolType::NT_ASSERT_LINE_START] |
||
336 | $assertNode = $this |
||
337 | ->tree |
||
338 | ->createNode(NodeType::ASSERT) |
||
339 | ->setAttribute('type', 'line_start'); |
||
340 | $header['s.assert_node'] = $assertNode->getId(); |
||
341 | break; |
||
342 | |||
343 | case SymbolType::NT_ASSERT . ".1": |
||
344 | // [SymbolType::NT_ASSERT_LINE_FINISH] |
||
345 | $assertNode = $this |
||
346 | ->tree |
||
347 | ->createNode(NodeType::ASSERT) |
||
348 | ->setAttribute('type', 'line_finish'); |
||
349 | $header['s.assert_node'] = $assertNode->getId(); |
||
350 | break; |
||
351 | |||
352 | /** |
||
353 | * Escaped patterns. |
||
354 | */ |
||
355 | case SymbolType::NT_ESC_SYMBOL . ".0": |
||
356 | // [SymbolType::NT_ESC, SymbolType::NT_ESC_SEQUENCE] |
||
357 | $header['s.escape_node'] = $symbols[1]['s.escape_node']; |
||
358 | break; |
||
359 | |||
360 | case SymbolType::NT_ESC_SEQUENCE . ".0": |
||
361 | // [SymbolType::NT_ESC_SIMPLE] |
||
362 | $escapeNode = $this |
||
363 | ->tree |
||
364 | ->createNode(NodeType::ESC_SIMPLE) |
||
365 | ->setAttribute('code', $symbols[0]['s.code']); |
||
366 | $header['s.escape_node'] = $escapeNode->getId(); |
||
367 | break; |
||
368 | |||
369 | case SymbolType::NT_ESC_SEQUENCE . ".1": |
||
370 | // [SymbolType::NT_ESC_SPECIAL] |
||
371 | $escapeNode = $this |
||
372 | ->tree |
||
373 | ->createNode(NodeType::SYMBOL) |
||
374 | ->setAttribute('code', $symbols[0]['s.code']); |
||
375 | $header['s.escape_node'] = $escapeNode->getId(); |
||
376 | break; |
||
377 | |||
378 | case SymbolType::NT_ESC_SEQUENCE . ".2": |
||
379 | // [SymbolType::NT_ESC_NON_PRINTABLE] |
||
380 | $header['s.escape_node'] = $symbols[0]['s.symbol_node']; |
||
381 | break; |
||
382 | |||
383 | case SymbolType::NT_ESC_SEQUENCE . ".3": |
||
384 | // [SymbolType::NT_ESC_PROP] |
||
385 | $escapeNode = $this |
||
386 | ->tree |
||
387 | ->createNode(NodeType::SYMBOL_PROP) |
||
388 | ->setAttribute('not', false) |
||
389 | ->setAttribute('name', $symbols[0]['s.name']); |
||
390 | $header['s.escape_node'] = $escapeNode->getId(); |
||
391 | break; |
||
392 | |||
393 | case SymbolType::NT_ESC_SEQUENCE . ".4": |
||
394 | // [SymbolType::NT_ESC_NOT_PROP] |
||
395 | $escapeNode = $this |
||
396 | ->tree |
||
397 | ->createNode(NodeType::SYMBOL_PROP) |
||
398 | ->setAttribute('not', true) |
||
399 | ->setAttribute('name', $symbols[0]['s.name']); |
||
400 | $header['s.escape_node'] = $escapeNode->getId(); |
||
401 | break; |
||
402 | |||
403 | case SymbolType::NT_ESC_PROP . ".0": |
||
404 | // [SymbolType::NT_ESC_PROP_MARKER, SymbolType::NT_PROP] |
||
405 | case SymbolType::NT_ESC_NOT_PROP . ".0": |
||
406 | // [SymbolType::NT_ESC_NOT_PROP_MARKER, SymbolType::NT_PROP] |
||
407 | $header['s.name'] = $symbols[1]['s.name']; |
||
408 | break; |
||
409 | |||
410 | case SymbolType::NT_PROP . ".0": |
||
411 | // [SymbolType::NT_PROP_SHORT] |
||
412 | case SymbolType::NT_PROP . ".1": |
||
413 | // [SymbolType::NT_PROP_FULL] |
||
414 | $header['s.name'] = $symbols[0]['s.name']; |
||
415 | break; |
||
416 | |||
417 | |||
418 | case SymbolType::NT_PROP_SHORT . ".0": |
||
419 | // [SymbolType::NT_NOT_PROP_START] |
||
420 | $header['s.name'] = [$symbols[0]['s.code']]; |
||
421 | break; |
||
422 | |||
423 | case SymbolType::NT_PROP_FULL . ".0": |
||
424 | // [SymbolType::NT_PROP_START, SymbolType::NT_PROP_NAME, SymbolType::NT_PROP_FINISH] |
||
425 | $header['s.name'] = $symbols[1]['s.name']; |
||
426 | break; |
||
427 | |||
428 | case SymbolType::NT_PROP_NAME . ".0": |
||
429 | // [SymbolType::NT_PROP_NAME_PART] |
||
430 | $header['s.name'] = $symbols[0]['s.name']; |
||
431 | break; |
||
432 | |||
433 | case SymbolType::NT_PROP_NAME_PART . ".0": |
||
434 | // [SymbolType::NT_NOT_PROP_FINISH, SymbolType::NT_PROP_NAME_PART] |
||
435 | $header['s.name'] = $symbols[1]['s.name']; |
||
436 | break; |
||
437 | |||
438 | case SymbolType::NT_PROP_NAME_PART . ".1": |
||
439 | // [] |
||
440 | $header['s.name'] = $header['i.name']; |
||
441 | break; |
||
442 | |||
443 | case SymbolType::NT_ESC_NON_PRINTABLE . ".0": |
||
444 | // [SymbolType::NT_ESC_CTL] |
||
445 | case SymbolType::NT_ESC_NON_PRINTABLE . ".1": |
||
446 | // [SymbolType::NT_ESC_OCT] |
||
447 | case SymbolType::NT_ESC_NON_PRINTABLE . ".2": |
||
448 | // [SymbolType::NT_ESC_HEX] |
||
449 | case SymbolType::NT_ESC_NON_PRINTABLE . ".3": |
||
450 | // [SymbolType::NT_ESC_UNICODE] |
||
451 | $header['s.symbol_node'] = $symbols[0]['s.symbol_node']; |
||
452 | break; |
||
453 | |||
454 | case SymbolType::NT_ESC_CTL . ".0": |
||
455 | // [SymbolType::NT_ESC_CTL_MARKER, SymbolType::NT_ESC_CTL_CODE] |
||
456 | $symbolNode = $this |
||
457 | ->tree |
||
458 | ->createNode(NodeType::SYMBOL_CTL) |
||
459 | ->setAttribute('code', $symbols[1]['s.code']); |
||
460 | $header['s.symbol_node'] = $symbolNode->getId(); |
||
461 | break; |
||
462 | |||
463 | case SymbolType::NT_ESC_CTL_CODE . ".0": |
||
464 | // [SymbolType::NT_PRINTABLE_ASCII] |
||
465 | $header['s.code'] = $symbols[0]['s.code']; |
||
466 | break; |
||
467 | |||
468 | case SymbolType::NT_ESC_OCT . ".0": |
||
469 | // [SymbolType::NT_ESC_OCT_SHORT] |
||
470 | case SymbolType::NT_ESC_OCT . ".1": |
||
471 | // [SymbolType::NT_ESC_OCT_LONG] |
||
472 | $symbolNode = $this |
||
473 | ->tree |
||
474 | ->createNode(NodeType::SYMBOL) |
||
475 | ->setAttribute('code', $symbols[0]['s.code']); |
||
476 | $header['s.symbol_node'] = $symbolNode->getId(); |
||
477 | break; |
||
478 | |||
479 | case SymbolType::NT_ESC_OCT_SHORT . ".0": |
||
480 | // [SymbolType::NT_ESC_OCT_SHORT_MARKER] |
||
481 | $octNumber = $symbols[0]['s.oct_digit']; |
||
482 | $header['s.code'] = octdec($octNumber); |
||
483 | break; |
||
484 | |||
485 | case SymbolType::NT_ESC_OCT_SHORT_MARKER . ".0": |
||
486 | // [SymbolType::T_DIGIT_ZERO] |
||
487 | $header['s.oct_digit'] = $symbols[0]['s.oct_digit']; |
||
488 | break; |
||
489 | |||
490 | case SymbolType::NT_ESC_OCT_LONG . ".0": |
||
491 | // [SymbolType::NT_ESC_OCT_LONG_MARKER, SymbolType::NT_ESC_OCT_LONG_NUM] |
||
492 | $header['s.code'] = $symbols[1]['s.code']; |
||
493 | break; |
||
494 | |||
495 | case SymbolType::NT_ESC_OCT_LONG_NUM . ".0": |
||
496 | // [SymbolType::NT_ESC_NUM_START, SymbolType::NT_OCT, SymbolType::NT_ESC_NUM_FINISH] |
||
497 | $header['s.code'] = $symbols[1]['s.number_value']; |
||
498 | break; |
||
499 | |||
500 | case SymbolType::NT_ESC_UNICODE . ".0": |
||
501 | // [SymbolType::NT_ESC_UNICODE_MARKER, SymbolType::NT_ESC_UNICODE_NUM] |
||
502 | $header['s.symbol_node'] = $symbols[1]['s.symbol_node']; |
||
503 | break; |
||
504 | |||
505 | case SymbolType::NT_ESC_UNICODE_NUM . ".0": |
||
506 | // [4 x SymbolType::NT_HEX_DIGIT] |
||
507 | $hexNumberString = |
||
508 | $symbols[0]['s.hex_digit'] . |
||
509 | $symbols[1]['s.hex_digit'] . |
||
510 | $symbols[2]['s.hex_digit'] . |
||
511 | $symbols[3]['s.hex_digit']; |
||
512 | $hexNumber = hexdec($hexNumberString); |
||
513 | $symbolNode = $this |
||
514 | ->tree |
||
515 | ->createNode(NodeType::SYMBOL) |
||
516 | ->setAttribute('code', $hexNumber); |
||
517 | $header['s.symbol_node'] = $symbolNode->getId(); |
||
518 | break; |
||
519 | |||
520 | case SymbolType::NT_ESC_HEX . ".0": |
||
521 | // [SymbolType::NT_ESC_HEX_MARKER, SymbolType::NT_ESC_HEX_NUM] |
||
522 | $symbolNode = $this |
||
523 | ->tree |
||
524 | ->createNode(NodeType::SYMBOL) |
||
525 | ->setAttribute('code', $symbols[1]['s.code']); |
||
526 | $header['s.symbol_node'] = $symbolNode->getId(); |
||
527 | break; |
||
528 | |||
529 | case SymbolType::NT_ESC_HEX_NUM . ".0": |
||
530 | // [SymbolType::NT_ESC_HEX_SHORT_NUM] |
||
531 | case SymbolType::NT_ESC_HEX_NUM . ".1": |
||
532 | // [SymbolType::NT_ESC_HEX_LONG_NUM] |
||
533 | $header['s.code'] = $symbols[0]['s.code']; |
||
534 | break; |
||
535 | |||
536 | case SymbolType::NT_ESC_HEX_SHORT_NUM . ".0": |
||
537 | // [SymbolType::NT_HEX_DIGIT, SymbolType::NT_HEX_DIGIT] |
||
538 | $hexNumberString = $symbols[0]['s.hex_digit'] . $symbols[1]['s.hex_digit']; |
||
539 | $header['s.code'] = hexdec($hexNumberString); |
||
540 | break; |
||
541 | |||
542 | case SymbolType::NT_ESC_HEX_LONG_NUM . ".0": |
||
543 | // [SymbolType::NT_ESC_NUM_START, SymbolType::NT_HEX, SymbolType::NT_ESC_NUM_FINISH] |
||
544 | $header['s.code'] = $symbols[1]['s.number_value']; |
||
545 | break; |
||
546 | |||
547 | /** |
||
548 | * Repeatable pattern quantifier. |
||
549 | */ |
||
550 | case SymbolType::NT_ITEM_QUANT . ".0": |
||
551 | // [SymbolType::NT_ITEM_OPT] |
||
552 | $header['s.min'] = 0; |
||
553 | $header['s.max'] = 1; |
||
554 | $header['s.is_max_infinite'] = false; |
||
555 | break; |
||
556 | |||
557 | case SymbolType::NT_ITEM_QUANT . ".1": |
||
558 | // [SymbolType::NT_ITEM_QUANT_STAR] |
||
559 | $header['s.min'] = 0; |
||
560 | $header['s.max'] = 0; |
||
561 | $header['s.is_max_infinite'] = true; |
||
562 | break; |
||
563 | |||
564 | case SymbolType::NT_ITEM_QUANT . ".2": |
||
565 | // [SymbolType::NT_ITEM_QUANT_PLUS] |
||
566 | $header['s.min'] = 1; |
||
567 | $header['s.max'] = 0; |
||
568 | $header['s.is_max_infinite'] = true; |
||
569 | break; |
||
570 | |||
571 | case SymbolType::NT_ITEM_QUANT . ".3": |
||
572 | // [SymbolType::NT_LIMIT] |
||
573 | $header['s.min'] = $symbols[0]['s.min']; |
||
574 | $header['s.max'] = $symbols[0]['s.max']; |
||
575 | $header['s.is_max_infinite'] = $symbols[0]['s.is_max_infinite']; |
||
576 | break; |
||
577 | |||
578 | case SymbolType::NT_ITEM_QUANT . ".4": |
||
579 | // [] |
||
580 | $header['s.min'] = 1; |
||
581 | $header['s.max'] = 1; |
||
582 | $header['s.is_max_infinite'] = false; |
||
583 | break; |
||
584 | |||
585 | case SymbolType::NT_LIMIT . ".0": |
||
586 | // [SymbolType::NT_LIMIT_START, SymbolType::NT_MIN, SymbolType::NT_OPT_MAX, SymbolType::NT_LIMIT_END] |
||
587 | $header['s.min'] = $symbols[1]['s.number_value']; |
||
588 | $header['s.max'] = $symbols[2]['s.number_value']; |
||
589 | $header['s.is_max_infinite'] = $symbols[2]['s.is_infinite']; |
||
590 | break; |
||
591 | |||
592 | case SymbolType::NT_MIN . ".0": |
||
593 | // [SymbolType::NT_DEC] |
||
594 | $header['s.number_value'] = $symbols[0]['s.number_value']; |
||
595 | break; |
||
596 | |||
597 | case SymbolType::NT_MAX . ".0": |
||
598 | // [SymbolType::NT_DEC] |
||
599 | $header['s.number_value'] = $symbols[0]['s.number_value']; |
||
600 | $header['s.is_infinite'] = false; |
||
601 | break; |
||
602 | |||
603 | case SymbolType::NT_MAX . ".1": |
||
604 | // [] |
||
605 | $header['s.number_value'] = 0; |
||
606 | $header['s.is_infinite'] = true; |
||
607 | break; |
||
608 | |||
609 | case SymbolType::NT_OPT_MAX . ".0": |
||
610 | // [SymbolType::NT_LIMIT_SEPARATOR, SymbolType::NT_MAX] |
||
611 | $header['s.number_value'] = $symbols[1]['s.number_value']; |
||
612 | $header['s.is_infinite'] = $symbols[1]['s.is_infinite']; |
||
613 | break; |
||
614 | |||
615 | case SymbolType::NT_OPT_MAX . ".1": |
||
616 | // [] |
||
617 | $header['s.number_value'] = $header['i.min']; |
||
618 | $header['s.is_infinite'] = false; |
||
619 | break; |
||
620 | |||
621 | /** |
||
622 | * Decimal numbers. |
||
623 | */ |
||
624 | case SymbolType::NT_DEC . ".0": |
||
625 | // [SymbolType::NT_DEC_DIGIT, SymbolType::NT_OPT_DEC] |
||
626 | $number = $symbols[0]['s.dec_digit'] . $symbols[1]['s.dec_number_tail']; |
||
627 | $header['s.number_value'] = (int) $number; |
||
628 | break; |
||
629 | |||
630 | case SymbolType::NT_OPT_DEC . ".0": |
||
631 | // [SymbolType::NT_DEC_DIGIT, SymbolType::NT_OPT_DEC] |
||
632 | $numberTail = $symbols[0]['s.dec_digit'] . $symbols[1]['s.dec_number_tail']; |
||
633 | $header['s.dec_number_tail'] = $numberTail; |
||
634 | break; |
||
635 | |||
636 | case SymbolType::NT_OPT_DEC . ".1": |
||
637 | // [] |
||
638 | $header['s.dec_number_tail'] = ''; |
||
639 | break; |
||
640 | |||
641 | case SymbolType::NT_DEC_DIGIT . ".0": |
||
642 | // [SymbolType::T_DIGIT_ZERO] |
||
643 | case SymbolType::NT_DEC_DIGIT . ".1": |
||
644 | // [SymbolType::T_DIGIT_OCT] |
||
645 | case SymbolType::NT_DEC_DIGIT . ".2": |
||
646 | // [SymbolType::T_DIGIT_DEC] |
||
647 | $header['s.dec_digit'] = $symbols[0]['s.dec_digit']; |
||
648 | break; |
||
649 | |||
650 | /** |
||
651 | * Octal numbers. |
||
652 | */ |
||
653 | case SymbolType::NT_OCT . ".0": |
||
654 | // [SymbolType::NT_DEC_DIGIT, SymbolType::NT_OPT_DEC] |
||
655 | $number = $symbols[0]['s.oct_digit'] . $symbols[1]['s.oct_number_tail']; |
||
656 | $header['s.number_value'] = octdec($number); |
||
657 | break; |
||
658 | |||
659 | case SymbolType::NT_OPT_OCT . ".0": |
||
660 | // [SymbolType::NT_OCT_DIGIT, SymbolType::NT_OPT_OCT] |
||
661 | $numberTail = $symbols[0]['s.oct_digit'] . $symbols[1]['s.oct_number_tail']; |
||
662 | $header['s.oct_number_tail'] = $numberTail; |
||
663 | break; |
||
664 | |||
665 | case SymbolType::NT_OPT_OCT . ".1": |
||
666 | // [] |
||
667 | $header['s.oct_number_tail'] = ''; |
||
668 | break; |
||
669 | |||
670 | case SymbolType::NT_OCT_DIGIT . ".0": |
||
671 | // [SymbolType::T_DIGIT_ZERO] |
||
672 | case SymbolType::NT_OCT_DIGIT . ".1": |
||
673 | // [SymbolType::T_DIGIT_OCT] |
||
674 | $header['s.oct_digit'] = $symbols[0]['s.oct_digit']; |
||
675 | break; |
||
676 | |||
677 | /** |
||
678 | * Hexadecimal numbers. |
||
679 | */ |
||
680 | case SymbolType::NT_HEX . ".0": |
||
681 | // [SymbolType::NT_HEX_DIGIT, SymbolType::NT_OPT_HEX] |
||
682 | $hexNumber = $symbols[0]['s.hex_digit'] . $symbols[1]['s.hex_number_tail']; |
||
683 | $header['s.number_value'] = hexdec($hexNumber); |
||
684 | break; |
||
685 | |||
686 | case SymbolType::NT_OPT_HEX . ".0": |
||
687 | // [SymbolType::NT_HEX_DIGIT, SymbolType::NT_OPT_HEX] |
||
688 | $numberTail = $symbols[0]['s.hex_digit'] . $symbols[1]['s.hex_number_tail']; |
||
689 | $header['s.hex_number_tail'] = $numberTail; |
||
690 | break; |
||
691 | |||
692 | case SymbolType::NT_OPT_HEX . ".1": |
||
693 | // [] |
||
694 | $header['s.hex_number_tail'] = ''; |
||
695 | break; |
||
696 | |||
697 | case SymbolType::NT_HEX_DIGIT . ".0": |
||
698 | // [SymbolType::T_DIGIT_ZERO] |
||
699 | case SymbolType::NT_HEX_DIGIT . ".1": |
||
700 | // [SymbolType::T_DIGIT_OCT] |
||
701 | case SymbolType::NT_HEX_DIGIT . ".2": |
||
702 | // [SymbolType::T_DIGIT_DEC] |
||
703 | case SymbolType::NT_HEX_DIGIT . ".3": |
||
704 | // [SymbolType::T_SMALL_C] |
||
705 | case SymbolType::NT_HEX_DIGIT . ".4": |
||
706 | // [SymbolType::T_OTHER_HEX_LETTER] |
||
707 | $header['s.hex_digit'] = $symbols[0]['s.hex_digit']; |
||
708 | break; |
||
709 | |||
710 | /** |
||
711 | * Printable ASCII symbols. |
||
712 | */ |
||
713 | case SymbolType::NT_PRINTABLE_ASCII . ".0": |
||
714 | // [SymbolType::NT_META_CHAR] |
||
715 | case SymbolType::NT_PRINTABLE_ASCII . ".1": |
||
716 | // [SymbolType::NT_DEC_DIGIT] |
||
717 | case SymbolType::NT_PRINTABLE_ASCII . ".2": |
||
718 | // [SymbolType::NT_ASCII_LETTER] |
||
719 | case SymbolType::NT_PRINTABLE_ASCII . ".3": |
||
720 | // [SymbolType::NT_PRINTABLE_ASCII_OTHER] |
||
721 | $header['s.code'] = $symbols[0]['s.code']; |
||
722 | break; |
||
723 | |||
724 | /** |
||
725 | * Non-terminal symbols with code. |
||
726 | */ |
||
727 | case SymbolType::NT_FIRST_CLASS_SYMBOL . ".0": |
||
728 | case SymbolType::NT_FIRST_INV_CLASS_SYMBOL . ".0": |
||
729 | case SymbolType::NT_ESC_SPECIAL . ".10": |
||
730 | case SymbolType::NT_NOT_PROP_START . ".15": |
||
731 | case SymbolType::NT_NOT_PROP_FINISH . ".15": |
||
732 | case SymbolType::NT_UNESC_SYMBOL . ".6": |
||
733 | case SymbolType::NT_META_CHAR . ".11": |
||
734 | // [SymbolType::T_RIGHT_SQUARE_BRACKET] |
||
735 | case SymbolType::NT_FIRST_CLASS_SYMBOL . ".1": |
||
736 | case SymbolType::NT_FIRST_INV_CLASS_SYMBOL . ".1": |
||
737 | case SymbolType::NT_UNESC_CLASS_SYMBOL . ".0": |
||
738 | case SymbolType::NT_ESC_SPECIAL . ".0": |
||
739 | case SymbolType::NT_NOT_PROP_START . ".0": |
||
740 | case SymbolType::NT_NOT_PROP_FINISH . ".0": |
||
741 | case SymbolType::NT_META_CHAR . ".0": |
||
742 | // [SymbolType::T_DOLLAR] |
||
743 | case SymbolType::NT_FIRST_CLASS_SYMBOL . ".2": |
||
744 | case SymbolType::NT_FIRST_INV_CLASS_SYMBOL . ".2": |
||
745 | case SymbolType::NT_UNESC_CLASS_SYMBOL . ".1": |
||
746 | case SymbolType::NT_ESC_SPECIAL . ".1": |
||
747 | case SymbolType::NT_NOT_PROP_START . ".1": |
||
748 | case SymbolType::NT_NOT_PROP_FINISH . ".1": |
||
749 | case SymbolType::NT_META_CHAR . ".1": |
||
750 | // [SymbolType::T_LEFT_BRACKET] |
||
751 | case SymbolType::NT_FIRST_CLASS_SYMBOL . ".3": |
||
752 | case SymbolType::NT_FIRST_INV_CLASS_SYMBOL . ".3": |
||
753 | case SymbolType::NT_UNESC_CLASS_SYMBOL . ".2": |
||
754 | case SymbolType::NT_ESC_SPECIAL . ".2": |
||
755 | case SymbolType::NT_NOT_PROP_START . ".2": |
||
756 | case SymbolType::NT_NOT_PROP_FINISH . ".2": |
||
757 | case SymbolType::NT_META_CHAR . ".2": |
||
758 | // [SymbolType::T_RIGHT_BRACKET] |
||
759 | case SymbolType::NT_FIRST_CLASS_SYMBOL . ".4": |
||
760 | case SymbolType::NT_FIRST_INV_CLASS_SYMBOL . ".4": |
||
761 | case SymbolType::NT_UNESC_CLASS_SYMBOL . ".3": |
||
762 | case SymbolType::NT_ESC_SPECIAL . ".3": |
||
763 | case SymbolType::NT_NOT_PROP_START . ".3": |
||
764 | case SymbolType::NT_NOT_PROP_FINISH . ".3": |
||
765 | case SymbolType::NT_META_CHAR . ".3": |
||
766 | // [SymbolType::T_STAR] |
||
767 | case SymbolType::NT_FIRST_CLASS_SYMBOL . ".5": |
||
768 | case SymbolType::NT_FIRST_INV_CLASS_SYMBOL . ".5": |
||
769 | case SymbolType::NT_UNESC_CLASS_SYMBOL . ".4": |
||
770 | case SymbolType::NT_ESC_SPECIAL . ".4": |
||
771 | case SymbolType::NT_NOT_PROP_START . ".4": |
||
772 | case SymbolType::NT_NOT_PROP_FINISH . ".4": |
||
773 | case SymbolType::NT_META_CHAR . ".4": |
||
774 | // [SymbolType::T_PLUS] |
||
775 | case SymbolType::NT_FIRST_CLASS_SYMBOL . ".6": |
||
776 | case SymbolType::NT_FIRST_INV_CLASS_SYMBOL . ".6": |
||
777 | case SymbolType::NT_UNESC_CLASS_SYMBOL . ".5": |
||
778 | case SymbolType::NT_ESC_SPECIAL . ".5": |
||
779 | case SymbolType::NT_NOT_PROP_START . ".5": |
||
780 | case SymbolType::NT_NOT_PROP_FINISH . ".5": |
||
781 | case SymbolType::NT_UNESC_SYMBOL . ".0": |
||
782 | case SymbolType::NT_META_CHAR . ".5": |
||
783 | // [SymbolType::T_COMMA] |
||
784 | case SymbolType::NT_FIRST_CLASS_SYMBOL . ".7": |
||
785 | case SymbolType::NT_FIRST_INV_CLASS_SYMBOL . ".7": |
||
786 | case SymbolType::NT_UNESC_CLASS_SYMBOL . ".6": |
||
787 | case SymbolType::NT_ESC_SPECIAL . ".7": |
||
788 | case SymbolType::NT_NOT_PROP_START . ".11": |
||
789 | case SymbolType::NT_NOT_PROP_FINISH . ".11": |
||
790 | case SymbolType::NT_META_CHAR . ".8": |
||
791 | // [SymbolType::T_QUESTION] |
||
792 | case SymbolType::NT_FIRST_CLASS_SYMBOL . ".8": |
||
793 | case SymbolType::NT_FIRST_INV_CLASS_SYMBOL . ".8": |
||
794 | case SymbolType::NT_UNESC_CLASS_SYMBOL . ".7": |
||
795 | case SymbolType::NT_ESC_SPECIAL . ".8": |
||
796 | case SymbolType::NT_NOT_PROP_START . ".13": |
||
797 | case SymbolType::NT_NOT_PROP_FINISH . ".13": |
||
798 | case SymbolType::NT_META_CHAR . ".9": |
||
799 | // [SymbolType::T_LEFT_SQUARE_BRACKET] |
||
800 | case SymbolType::NT_FIRST_CLASS_SYMBOL . ".9": |
||
801 | case SymbolType::NT_FIRST_INV_CLASS_SYMBOL . ".9": |
||
802 | case SymbolType::NT_UNESC_CLASS_SYMBOL . ".9": |
||
803 | case SymbolType::NT_ESC_SPECIAL . ".12": |
||
804 | case SymbolType::NT_NOT_PROP_FINISH . ".22": |
||
805 | case SymbolType::NT_META_CHAR . ".13": |
||
806 | // [SymbolType::T_LEFT_CURLY_BRACKET] |
||
807 | case SymbolType::NT_FIRST_CLASS_SYMBOL . ".10": |
||
808 | case SymbolType::NT_FIRST_INV_CLASS_SYMBOL . ".10": |
||
809 | case SymbolType::NT_UNESC_CLASS_SYMBOL . ".10": |
||
810 | case SymbolType::NT_ESC_SPECIAL . ".13": |
||
811 | case SymbolType::NT_NOT_PROP_START . ".22": |
||
812 | case SymbolType::NT_NOT_PROP_FINISH . ".23": |
||
813 | case SymbolType::NT_META_CHAR . ".14": |
||
814 | // [SymbolType::T_VERTICAL_LINE] |
||
815 | case SymbolType::NT_FIRST_CLASS_SYMBOL . ".11": |
||
816 | case SymbolType::NT_FIRST_INV_CLASS_SYMBOL . ".11": |
||
817 | case SymbolType::NT_UNESC_CLASS_SYMBOL . ".11": |
||
818 | case SymbolType::NT_ESC_SPECIAL . ".14": |
||
819 | case SymbolType::NT_NOT_PROP_START . ".23": |
||
820 | case SymbolType::NT_UNESC_SYMBOL . ".12": |
||
821 | case SymbolType::NT_META_CHAR . ".15": |
||
822 | // [SymbolType::T_RIGHT_CURLY_BRACKET] |
||
823 | case SymbolType::NT_FIRST_CLASS_SYMBOL . ".12": |
||
824 | case SymbolType::NT_FIRST_INV_CLASS_SYMBOL . ".12": |
||
825 | case SymbolType::NT_UNESC_CLASS_SYMBOL . ".12": |
||
826 | case SymbolType::NT_ESC_SPECIAL . ".15": |
||
827 | case SymbolType::NT_NOT_PROP_START . ".24": |
||
828 | case SymbolType::NT_NOT_PROP_FINISH . ".24": |
||
829 | case SymbolType::NT_UNESC_SYMBOL . ".13": |
||
830 | // [SymbolType::T_CTL_ASCII] |
||
831 | case SymbolType::NT_FIRST_CLASS_SYMBOL . ".13": |
||
832 | case SymbolType::NT_FIRST_INV_CLASS_SYMBOL . ".13": |
||
833 | case SymbolType::NT_UNESC_CLASS_SYMBOL . ".13": |
||
834 | case SymbolType::NT_ESC_SIMPLE . ".1": |
||
835 | case SymbolType::NT_NOT_PROP_START . ".25": |
||
836 | case SymbolType::NT_NOT_PROP_FINISH . ".25": |
||
837 | case SymbolType::NT_UNESC_SYMBOL . ".14": |
||
838 | case SymbolType::NT_ASCII_LETTER . ".7": |
||
839 | // [SymbolType::T_OTHER_HEX_LETTER] |
||
840 | case SymbolType::NT_FIRST_CLASS_SYMBOL . ".14": |
||
841 | case SymbolType::NT_FIRST_INV_CLASS_SYMBOL . ".14": |
||
842 | case SymbolType::NT_UNESC_CLASS_SYMBOL . ".14": |
||
843 | case SymbolType::NT_ESC_SIMPLE . ".0": |
||
844 | case SymbolType::NT_NOT_PROP_START . ".26": |
||
845 | case SymbolType::NT_NOT_PROP_FINISH . ".26": |
||
846 | case SymbolType::NT_UNESC_SYMBOL . ".15": |
||
847 | case SymbolType::NT_ASCII_LETTER . ".6": |
||
848 | // [SymbolType::T_OTHER_ASCII_LETTER] |
||
849 | case SymbolType::NT_FIRST_CLASS_SYMBOL . ".15": |
||
850 | case SymbolType::NT_FIRST_INV_CLASS_SYMBOL . ".15": |
||
851 | case SymbolType::NT_UNESC_CLASS_SYMBOL . ".15": |
||
852 | case SymbolType::NT_ESC_SPECIAL . ".16": |
||
853 | case SymbolType::NT_NOT_PROP_START . ".27": |
||
854 | case SymbolType::NT_NOT_PROP_FINISH . ".27": |
||
855 | case SymbolType::NT_UNESC_SYMBOL . ".16": |
||
856 | case SymbolType::NT_PRINTABLE_ASCII_OTHER . ".0": |
||
857 | // [SymbolType::T_PRINTABLE_ASCII_OTHER] |
||
858 | case SymbolType::NT_FIRST_CLASS_SYMBOL . ".16": |
||
859 | case SymbolType::NT_FIRST_INV_CLASS_SYMBOL . ".16": |
||
860 | case SymbolType::NT_UNESC_CLASS_SYMBOL . ".16": |
||
861 | case SymbolType::NT_ESC_SPECIAL . ".17": |
||
862 | case SymbolType::NT_NOT_PROP_START . ".28": |
||
863 | case SymbolType::NT_NOT_PROP_FINISH . ".28": |
||
864 | case SymbolType::NT_UNESC_SYMBOL . ".17": |
||
865 | // [SymbolType::T_OTHER_ASCII] |
||
866 | case SymbolType::NT_FIRST_CLASS_SYMBOL . ".17": |
||
867 | case SymbolType::NT_FIRST_INV_CLASS_SYMBOL . ".17": |
||
868 | case SymbolType::NT_UNESC_CLASS_SYMBOL . ".17": |
||
869 | case SymbolType::NT_ESC_SPECIAL . ".18": |
||
870 | case SymbolType::NT_NOT_PROP_START . ".29": |
||
871 | case SymbolType::NT_NOT_PROP_FINISH . ".29": |
||
872 | case SymbolType::NT_UNESC_SYMBOL . ".18": |
||
873 | // [SymbolType::T_NOT_ASCII] |
||
874 | case SymbolType::NT_FIRST_INV_CLASS_SYMBOL . ".18": |
||
875 | case SymbolType::NT_UNESC_CLASS_SYMBOL . ".8": |
||
876 | case SymbolType::NT_ESC_SPECIAL . ".11": |
||
877 | case SymbolType::NT_NOT_PROP_START . ".16": |
||
878 | case SymbolType::NT_NOT_PROP_FINISH . ".16": |
||
879 | case SymbolType::NT_META_CHAR . ".12": |
||
880 | // [SymbolType::T_CIRCUMFLEX] |
||
881 | case SymbolType::NT_FIRST_CLASS_SYMBOL . ".18": |
||
882 | case SymbolType::NT_FIRST_INV_CLASS_SYMBOL . ".19": |
||
883 | case SymbolType::NT_UNESC_CLASS_SYMBOL . ".18": |
||
884 | case SymbolType::NT_NOT_PROP_START . ".12": |
||
885 | case SymbolType::NT_NOT_PROP_FINISH . ".12": |
||
886 | case SymbolType::NT_UNESC_SYMBOL . ".5": |
||
887 | case SymbolType::NT_ASCII_LETTER . ".0": |
||
888 | // [SymbolType::T_CAPITAL_P] |
||
889 | case SymbolType::NT_FIRST_CLASS_SYMBOL . ".19": |
||
890 | case SymbolType::NT_FIRST_INV_CLASS_SYMBOL . ".20": |
||
891 | case SymbolType::NT_UNESC_CLASS_SYMBOL . ".19": |
||
892 | case SymbolType::NT_NOT_PROP_START . ".17": |
||
893 | case SymbolType::NT_NOT_PROP_FINISH . ".17": |
||
894 | case SymbolType::NT_UNESC_SYMBOL . ".7": |
||
895 | case SymbolType::NT_ASCII_LETTER . ".1": |
||
896 | // [SymbolType::T_SMALL_C] |
||
897 | case SymbolType::NT_FIRST_CLASS_SYMBOL . ".20": |
||
898 | case SymbolType::NT_FIRST_INV_CLASS_SYMBOL . ".21": |
||
899 | case SymbolType::NT_UNESC_CLASS_SYMBOL . ".20": |
||
900 | case SymbolType::NT_NOT_PROP_START . ".18": |
||
901 | case SymbolType::NT_NOT_PROP_FINISH . ".18": |
||
902 | case SymbolType::NT_UNESC_SYMBOL . ".8": |
||
903 | case SymbolType::NT_ASCII_LETTER . ".2": |
||
904 | // [SymbolType::T_SMALL_O] |
||
905 | case SymbolType::NT_FIRST_CLASS_SYMBOL . ".21": |
||
906 | case SymbolType::NT_FIRST_INV_CLASS_SYMBOL . ".22": |
||
907 | case SymbolType::NT_UNESC_CLASS_SYMBOL . ".21": |
||
908 | case SymbolType::NT_NOT_PROP_START . ".19": |
||
909 | case SymbolType::NT_NOT_PROP_FINISH . ".19": |
||
910 | case SymbolType::NT_UNESC_SYMBOL . ".9": |
||
911 | case SymbolType::NT_ASCII_LETTER . ".3": |
||
912 | // [SymbolType::T_SMALL_P] |
||
913 | case SymbolType::NT_FIRST_CLASS_SYMBOL . ".22": |
||
914 | case SymbolType::NT_FIRST_INV_CLASS_SYMBOL . ".23": |
||
915 | case SymbolType::NT_UNESC_CLASS_SYMBOL . ".22": |
||
916 | case SymbolType::NT_NOT_PROP_START . ".20": |
||
917 | case SymbolType::NT_NOT_PROP_FINISH . ".20": |
||
918 | case SymbolType::NT_UNESC_SYMBOL . ".10": |
||
919 | case SymbolType::NT_ASCII_LETTER . ".4": |
||
920 | // [SymbolType::T_SMALL_U] |
||
921 | case SymbolType::NT_FIRST_CLASS_SYMBOL . ".23": |
||
922 | case SymbolType::NT_FIRST_INV_CLASS_SYMBOL . ".24": |
||
923 | case SymbolType::NT_UNESC_CLASS_SYMBOL . ".23": |
||
924 | case SymbolType::NT_NOT_PROP_START . ".21": |
||
925 | case SymbolType::NT_NOT_PROP_FINISH . ".21": |
||
926 | case SymbolType::NT_UNESC_SYMBOL . ".11": |
||
927 | case SymbolType::NT_ASCII_LETTER . ".5": |
||
928 | // [SymbolType::T_SMALL_X] |
||
929 | case SymbolType::NT_ESC_SIMPLE . ".2": |
||
930 | case SymbolType::NT_NOT_PROP_START . ".9": |
||
931 | case SymbolType::NT_NOT_PROP_FINISH . ".9": |
||
932 | case SymbolType::NT_UNESC_SYMBOL . ".3": |
||
933 | case SymbolType::NT_FIRST_CLASS_SYMBOL . ".25": |
||
934 | case SymbolType::NT_FIRST_INV_CLASS_SYMBOL . ".26": |
||
935 | case SymbolType::NT_UNESC_CLASS_SYMBOL . ".25": |
||
936 | // [SymbolType::T_DIGIT_OCT] |
||
937 | case SymbolType::NT_ESC_SIMPLE . ".3": |
||
938 | case SymbolType::NT_NOT_PROP_START . ".10": |
||
939 | case SymbolType::NT_NOT_PROP_FINISH . ".10": |
||
940 | case SymbolType::NT_UNESC_SYMBOL . ".4": |
||
941 | case SymbolType::NT_FIRST_CLASS_SYMBOL . ".26": |
||
942 | case SymbolType::NT_FIRST_INV_CLASS_SYMBOL . ".27": |
||
943 | case SymbolType::NT_UNESC_CLASS_SYMBOL . ".26": |
||
944 | // [SymbolType::T_DIGIT_DEC] |
||
945 | case SymbolType::NT_ESC_SPECIAL . ".6": |
||
946 | case SymbolType::NT_NOT_PROP_START . ".6": |
||
947 | case SymbolType::NT_NOT_PROP_FINISH . ".6": |
||
948 | case SymbolType::NT_META_CHAR . ".6": |
||
949 | // [SymbolType::T_HYPHEN] |
||
950 | case SymbolType::NT_ESC_SPECIAL . ".9": |
||
951 | case SymbolType::NT_NOT_PROP_START . ".14": |
||
952 | case SymbolType::NT_NOT_PROP_FINISH . ".14": |
||
953 | case SymbolType::NT_UNESC_SYMBOL . ".1": |
||
954 | case SymbolType::NT_META_CHAR . ".10": |
||
955 | // [SymbolType::T_BACKSLASH] |
||
956 | case SymbolType::NT_NOT_PROP_START . ".7": |
||
957 | case SymbolType::NT_NOT_PROP_FINISH . ".7": |
||
958 | case SymbolType::NT_META_CHAR . ".7": |
||
959 | case SymbolType::NT_ESC_SPECIAL . ".19": |
||
960 | // [SymbolType::T_DOT] |
||
961 | case SymbolType::NT_NOT_PROP_START . ".8": |
||
962 | case SymbolType::NT_NOT_PROP_FINISH . ".8": |
||
963 | case SymbolType::NT_UNESC_SYMBOL . ".2": |
||
964 | case SymbolType::NT_FIRST_CLASS_SYMBOL . ".24": |
||
965 | case SymbolType::NT_FIRST_INV_CLASS_SYMBOL . ".25": |
||
966 | case SymbolType::NT_UNESC_CLASS_SYMBOL . ".24": |
||
967 | // [SymbolType::T_DIGIT_ZERO] |
||
968 | $header['s.code'] = $symbols[0]['s.code']; |
||
969 | break; |
||
970 | } |
||
973 |