1 /* Generated by re2c 0.13.6 on Tue Apr 26 22:58:08 2016 */
2 // 1 "scanner.re"
3 
4 /*
5   +------------------------------------------------------------------------+
6   | Phalcon Framework                                                      |
7   +------------------------------------------------------------------------+
8   | Copyright (c) 2011-2016 Phalcon Team (http://www.phalconphp.com)       |
9   +------------------------------------------------------------------------+
10   | This source file is subject to the New BSD License that is bundled     |
11   | with this package in the file docs/LICENSE.txt.                        |
12   |                                                                        |
13   | If you did not receive a copy of the license and are unable to         |
14   | obtain it through the world-wide-web, please send an email             |
15   | to license@phalconphp.com so we can send you a copy immediately.       |
16   +------------------------------------------------------------------------+
17   | Authors: Andres Gutierrez <andres@phalconphp.com>                      |
18   |          Eduar Carvajal <eduar@phalconphp.com>                         |
19   +------------------------------------------------------------------------+
20 */
21 
22 #include "php_phalcon.h"
23 
24 #include "scanner.h"
25 
26 #define AACTYPE unsigned char
27 #define AACURSOR (s->start)
28 #define AALIMIT (s->end)
29 #define AAMARKER q
30 
phannot_get_token(phannot_scanner_state * s,phannot_scanner_token * token)31 int phannot_get_token(phannot_scanner_state *s, phannot_scanner_token *token) {
32 
33 	char next, *q = AACURSOR, *start = AACURSOR;
34 	int status = PHANNOT_SCANNER_RETCODE_IMPOSSIBLE;
35 
36 	while (PHANNOT_SCANNER_RETCODE_IMPOSSIBLE == status) {
37 
38 		if (s->mode == PHANNOT_MODE_RAW) {
39 
40 			if (*AACURSOR == '\n') {
41 				s->active_line++;
42 			}
43 
44 			next = *(AACURSOR+1);
45 
46 			if (*AACURSOR == '\0' || *AACURSOR == '@') {
47 				if ((next >= 'A' && next <= 'Z') || (next >= 'a' && next <= 'z')) {
48 					s->mode = PHANNOT_MODE_ANNOTATION;
49 					continue;
50 				}
51 			}
52 
53 			++AACURSOR;
54 			token->opcode = PHANNOT_T_IGNORE;
55 			return 0;
56 
57 		} else {
58 
59 
60 // 61 "scanner.c"
61 		{
62 			AACTYPE aach;
63 			unsigned int aaaccept = 0;
64 
65 			aach = *AACURSOR;
66 			switch (aach) {
67 			case 0x00:	goto aa38;
68 			case '\t':
69 			case '\r':
70 			case ' ':	goto aa34;
71 			case '\n':	goto aa36;
72 			case '"':	goto aa10;
73 			case '\'':	goto aa11;
74 			case '(':	goto aa14;
75 			case ')':	goto aa16;
76 			case ',':	goto aa32;
77 			case '-':	goto aa2;
78 			case '0':
79 			case '1':
80 			case '2':
81 			case '3':
82 			case '4':
83 			case '5':
84 			case '6':
85 			case '7':
86 			case '8':
87 			case '9':	goto aa4;
88 			case ':':	goto aa30;
89 			case '=':	goto aa28;
90 			case '@':	goto aa26;
91 			case 'A':
92 			case 'B':
93 			case 'C':
94 			case 'D':
95 			case 'E':
96 			case 'G':
97 			case 'H':
98 			case 'I':
99 			case 'J':
100 			case 'K':
101 			case 'L':
102 			case 'M':
103 			case 'O':
104 			case 'P':
105 			case 'Q':
106 			case 'R':
107 			case 'S':
108 			case 'U':
109 			case 'V':
110 			case 'W':
111 			case 'X':
112 			case 'Y':
113 			case 'Z':
114 			case '_':
115 			case 'a':
116 			case 'b':
117 			case 'c':
118 			case 'd':
119 			case 'e':
120 			case 'g':
121 			case 'h':
122 			case 'i':
123 			case 'j':
124 			case 'k':
125 			case 'l':
126 			case 'm':
127 			case 'o':
128 			case 'p':
129 			case 'q':
130 			case 'r':
131 			case 's':
132 			case 'u':
133 			case 'v':
134 			case 'w':
135 			case 'x':
136 			case 'y':
137 			case 'z':	goto aa13;
138 			case 'F':
139 			case 'f':	goto aa8;
140 			case 'N':
141 			case 'n':	goto aa6;
142 			case 'T':
143 			case 't':	goto aa9;
144 			case '[':	goto aa22;
145 			case '\\':	goto aa12;
146 			case ']':	goto aa24;
147 			case '{':	goto aa18;
148 			case '}':	goto aa20;
149 			default:	goto aa40;
150 			}
151 aa2:
152 			++AACURSOR;
153 			switch ((aach = *AACURSOR)) {
154 			case '0':
155 			case '1':
156 			case '2':
157 			case '3':
158 			case '4':
159 			case '5':
160 			case '6':
161 			case '7':
162 			case '8':
163 			case '9':	goto aa71;
164 			default:	goto aa3;
165 			}
166 aa3:
167 // 178 "scanner.re"
168 			{
169 			status = PHANNOT_SCANNER_RETCODE_ERR;
170 			break;
171 		}
172 // 173 "scanner.c"
173 aa4:
174 			aaaccept = 0;
175 			aach = *(AAMARKER = ++AACURSOR);
176 			goto aa72;
177 aa5:
178 // 62 "scanner.re"
179 			{
180 			token->opcode = PHANNOT_T_INTEGER;
181 			token->value = estrndup(start, AACURSOR - start);
182 			token->len = AACURSOR - start;
183 			q = AACURSOR;
184 			return 0;
185 		}
186 // 187 "scanner.c"
187 aa6:
188 			aaaccept = 1;
189 			aach = *(AAMARKER = ++AACURSOR);
190 			switch (aach) {
191 			case 'U':
192 			case 'u':	goto aa66;
193 			default:	goto aa44;
194 			}
195 aa7:
196 // 104 "scanner.re"
197 			{
198 			token->opcode = PHANNOT_T_IDENTIFIER;
199 			token->value = estrndup(start, AACURSOR - start);
200 			token->len = AACURSOR - start;
201 			q = AACURSOR;
202 			return 0;
203 		}
204 // 205 "scanner.c"
205 aa8:
206 			aaaccept = 1;
207 			aach = *(AAMARKER = ++AACURSOR);
208 			switch (aach) {
209 			case 'A':
210 			case 'a':	goto aa61;
211 			default:	goto aa44;
212 			}
213 aa9:
214 			aaaccept = 1;
215 			aach = *(AAMARKER = ++AACURSOR);
216 			switch (aach) {
217 			case 'R':
218 			case 'r':	goto aa57;
219 			default:	goto aa44;
220 			}
221 aa10:
222 			aaaccept = 2;
223 			aach = *(AAMARKER = ++AACURSOR);
224 			if (aach <= 0x00) goto aa3;
225 			goto aa55;
226 aa11:
227 			aaaccept = 2;
228 			aach = *(AAMARKER = ++AACURSOR);
229 			if (aach <= 0x00) goto aa3;
230 			goto aa50;
231 aa12:
232 			aach = *++AACURSOR;
233 			switch (aach) {
234 			case 'A':
235 			case 'B':
236 			case 'C':
237 			case 'D':
238 			case 'E':
239 			case 'F':
240 			case 'G':
241 			case 'H':
242 			case 'I':
243 			case 'J':
244 			case 'K':
245 			case 'L':
246 			case 'M':
247 			case 'N':
248 			case 'O':
249 			case 'P':
250 			case 'Q':
251 			case 'R':
252 			case 'S':
253 			case 'T':
254 			case 'U':
255 			case 'V':
256 			case 'W':
257 			case 'X':
258 			case 'Y':
259 			case 'Z':
260 			case '_':
261 			case 'a':
262 			case 'b':
263 			case 'c':
264 			case 'd':
265 			case 'e':
266 			case 'f':
267 			case 'g':
268 			case 'h':
269 			case 'i':
270 			case 'j':
271 			case 'k':
272 			case 'l':
273 			case 'm':
274 			case 'n':
275 			case 'o':
276 			case 'p':
277 			case 'q':
278 			case 'r':
279 			case 's':
280 			case 't':
281 			case 'u':
282 			case 'v':
283 			case 'w':
284 			case 'x':
285 			case 'y':
286 			case 'z':	goto aa43;
287 			default:	goto aa3;
288 			}
289 aa13:
290 			aaaccept = 1;
291 			aach = *(AAMARKER = ++AACURSOR);
292 			goto aa44;
293 aa14:
294 			++AACURSOR;
295 // 112 "scanner.re"
296 			{
297 			token->opcode = PHANNOT_T_PARENTHESES_OPEN;
298 			return 0;
299 		}
300 // 301 "scanner.c"
301 aa16:
302 			++AACURSOR;
303 // 117 "scanner.re"
304 			{
305 			token->opcode = PHANNOT_T_PARENTHESES_CLOSE;
306 			return 0;
307 		}
308 // 309 "scanner.c"
309 aa18:
310 			++AACURSOR;
311 // 122 "scanner.re"
312 			{
313 			token->opcode = PHANNOT_T_BRACKET_OPEN;
314 			return 0;
315 		}
316 // 317 "scanner.c"
317 aa20:
318 			++AACURSOR;
319 // 127 "scanner.re"
320 			{
321 			token->opcode = PHANNOT_T_BRACKET_CLOSE;
322 			return 0;
323 		}
324 // 325 "scanner.c"
325 aa22:
326 			++AACURSOR;
327 // 132 "scanner.re"
328 			{
329 			token->opcode = PHANNOT_T_SBRACKET_OPEN;
330 			return 0;
331 		}
332 // 333 "scanner.c"
333 aa24:
334 			++AACURSOR;
335 // 137 "scanner.re"
336 			{
337 			token->opcode = PHANNOT_T_SBRACKET_CLOSE;
338 			return 0;
339 		}
340 // 341 "scanner.c"
341 aa26:
342 			++AACURSOR;
343 // 142 "scanner.re"
344 			{
345 			token->opcode = PHANNOT_T_AT;
346 			return 0;
347 		}
348 // 349 "scanner.c"
349 aa28:
350 			++AACURSOR;
351 // 147 "scanner.re"
352 			{
353 			token->opcode = PHANNOT_T_EQUALS;
354 			return 0;
355 		}
356 // 357 "scanner.c"
357 aa30:
358 			++AACURSOR;
359 // 152 "scanner.re"
360 			{
361 			token->opcode = PHANNOT_T_COLON;
362 			return 0;
363 		}
364 // 365 "scanner.c"
365 aa32:
366 			++AACURSOR;
367 // 157 "scanner.re"
368 			{
369 			token->opcode = PHANNOT_T_COMMA;
370 			return 0;
371 		}
372 // 373 "scanner.c"
373 aa34:
374 			++AACURSOR;
375 			aach = *AACURSOR;
376 			goto aa42;
377 aa35:
378 // 162 "scanner.re"
379 			{
380 			token->opcode = PHANNOT_T_IGNORE;
381 			return 0;
382 		}
383 // 384 "scanner.c"
384 aa36:
385 			++AACURSOR;
386 // 167 "scanner.re"
387 			{
388 			s->active_line++;
389 			token->opcode = PHANNOT_T_IGNORE;
390 			return 0;
391 		}
392 // 393 "scanner.c"
393 aa38:
394 			++AACURSOR;
395 // 173 "scanner.re"
396 			{
397 			status = PHANNOT_SCANNER_RETCODE_EOF;
398 			break;
399 		}
400 // 401 "scanner.c"
401 aa40:
402 			aach = *++AACURSOR;
403 			goto aa3;
404 aa41:
405 			++AACURSOR;
406 			aach = *AACURSOR;
407 aa42:
408 			switch (aach) {
409 			case '\t':
410 			case '\r':
411 			case ' ':	goto aa41;
412 			default:	goto aa35;
413 			}
414 aa43:
415 			aaaccept = 1;
416 			AAMARKER = ++AACURSOR;
417 			aach = *AACURSOR;
418 aa44:
419 			switch (aach) {
420 			case '0':
421 			case '1':
422 			case '2':
423 			case '3':
424 			case '4':
425 			case '5':
426 			case '6':
427 			case '7':
428 			case '8':
429 			case '9':
430 			case 'A':
431 			case 'B':
432 			case 'C':
433 			case 'D':
434 			case 'E':
435 			case 'F':
436 			case 'G':
437 			case 'H':
438 			case 'I':
439 			case 'J':
440 			case 'K':
441 			case 'L':
442 			case 'M':
443 			case 'N':
444 			case 'O':
445 			case 'P':
446 			case 'Q':
447 			case 'R':
448 			case 'S':
449 			case 'T':
450 			case 'U':
451 			case 'V':
452 			case 'W':
453 			case 'X':
454 			case 'Y':
455 			case 'Z':
456 			case '_':
457 			case 'a':
458 			case 'b':
459 			case 'c':
460 			case 'd':
461 			case 'e':
462 			case 'f':
463 			case 'g':
464 			case 'h':
465 			case 'i':
466 			case 'j':
467 			case 'k':
468 			case 'l':
469 			case 'm':
470 			case 'n':
471 			case 'o':
472 			case 'p':
473 			case 'q':
474 			case 'r':
475 			case 's':
476 			case 't':
477 			case 'u':
478 			case 'v':
479 			case 'w':
480 			case 'x':
481 			case 'y':
482 			case 'z':	goto aa43;
483 			case '\\':	goto aa45;
484 			default:	goto aa7;
485 			}
486 aa45:
487 			++AACURSOR;
488 			aach = *AACURSOR;
489 			switch (aach) {
490 			case 'A':
491 			case 'B':
492 			case 'C':
493 			case 'D':
494 			case 'E':
495 			case 'F':
496 			case 'G':
497 			case 'H':
498 			case 'I':
499 			case 'J':
500 			case 'K':
501 			case 'L':
502 			case 'M':
503 			case 'N':
504 			case 'O':
505 			case 'P':
506 			case 'Q':
507 			case 'R':
508 			case 'S':
509 			case 'T':
510 			case 'U':
511 			case 'V':
512 			case 'W':
513 			case 'X':
514 			case 'Y':
515 			case 'Z':
516 			case '_':
517 			case 'a':
518 			case 'b':
519 			case 'c':
520 			case 'd':
521 			case 'e':
522 			case 'f':
523 			case 'g':
524 			case 'h':
525 			case 'i':
526 			case 'j':
527 			case 'k':
528 			case 'l':
529 			case 'm':
530 			case 'n':
531 			case 'o':
532 			case 'p':
533 			case 'q':
534 			case 'r':
535 			case 's':
536 			case 't':
537 			case 'u':
538 			case 'v':
539 			case 'w':
540 			case 'x':
541 			case 'y':
542 			case 'z':	goto aa47;
543 			default:	goto aa46;
544 			}
545 aa46:
546 			AACURSOR = AAMARKER;
547 			switch (aaaccept) {
548 			case 0: 	goto aa5;
549 			case 1: 	goto aa7;
550 			case 2: 	goto aa3;
551 			case 3: 	goto aa60;
552 			case 4: 	goto aa65;
553 			default:	goto aa69;
554 			}
555 aa47:
556 			aaaccept = 1;
557 			AAMARKER = ++AACURSOR;
558 			aach = *AACURSOR;
559 			switch (aach) {
560 			case '0':
561 			case '1':
562 			case '2':
563 			case '3':
564 			case '4':
565 			case '5':
566 			case '6':
567 			case '7':
568 			case '8':
569 			case '9':
570 			case 'A':
571 			case 'B':
572 			case 'C':
573 			case 'D':
574 			case 'E':
575 			case 'F':
576 			case 'G':
577 			case 'H':
578 			case 'I':
579 			case 'J':
580 			case 'K':
581 			case 'L':
582 			case 'M':
583 			case 'N':
584 			case 'O':
585 			case 'P':
586 			case 'Q':
587 			case 'R':
588 			case 'S':
589 			case 'T':
590 			case 'U':
591 			case 'V':
592 			case 'W':
593 			case 'X':
594 			case 'Y':
595 			case 'Z':
596 			case '_':
597 			case 'a':
598 			case 'b':
599 			case 'c':
600 			case 'd':
601 			case 'e':
602 			case 'f':
603 			case 'g':
604 			case 'h':
605 			case 'i':
606 			case 'j':
607 			case 'k':
608 			case 'l':
609 			case 'm':
610 			case 'n':
611 			case 'o':
612 			case 'p':
613 			case 'q':
614 			case 'r':
615 			case 's':
616 			case 't':
617 			case 'u':
618 			case 'v':
619 			case 'w':
620 			case 'x':
621 			case 'y':
622 			case 'z':	goto aa47;
623 			case '\\':	goto aa45;
624 			default:	goto aa7;
625 			}
626 aa49:
627 			++AACURSOR;
628 			aach = *AACURSOR;
629 aa50:
630 			switch (aach) {
631 			case 0x00:	goto aa46;
632 			case '\'':	goto aa52;
633 			case '\\':	goto aa51;
634 			default:	goto aa49;
635 			}
636 aa51:
637 			++AACURSOR;
638 			aach = *AACURSOR;
639 			switch (aach) {
640 			case '\n':	goto aa46;
641 			default:	goto aa49;
642 			}
643 aa52:
644 			++AACURSOR;
645 // 95 "scanner.re"
646 			{
647 			token->opcode = PHANNOT_T_STRING;
648 			token->value = estrndup(q, AACURSOR - q - 1);
649 			token->len = AACURSOR - q - 1;
650 			q = AACURSOR;
651 			return 0;
652 		}
653 // 654 "scanner.c"
654 aa54:
655 			++AACURSOR;
656 			aach = *AACURSOR;
657 aa55:
658 			switch (aach) {
659 			case 0x00:	goto aa46;
660 			case '"':	goto aa52;
661 			case '\\':	goto aa56;
662 			default:	goto aa54;
663 			}
664 aa56:
665 			++AACURSOR;
666 			aach = *AACURSOR;
667 			switch (aach) {
668 			case '\n':	goto aa46;
669 			default:	goto aa54;
670 			}
671 aa57:
672 			aaaccept = 1;
673 			aach = *(AAMARKER = ++AACURSOR);
674 			switch (aach) {
675 			case 'U':
676 			case 'u':	goto aa58;
677 			default:	goto aa44;
678 			}
679 aa58:
680 			aaaccept = 1;
681 			aach = *(AAMARKER = ++AACURSOR);
682 			switch (aach) {
683 			case 'E':
684 			case 'e':	goto aa59;
685 			default:	goto aa44;
686 			}
687 aa59:
688 			aaaccept = 3;
689 			aach = *(AAMARKER = ++AACURSOR);
690 			switch (aach) {
691 			case '0':
692 			case '1':
693 			case '2':
694 			case '3':
695 			case '4':
696 			case '5':
697 			case '6':
698 			case '7':
699 			case '8':
700 			case '9':
701 			case 'A':
702 			case 'B':
703 			case 'C':
704 			case 'D':
705 			case 'E':
706 			case 'F':
707 			case 'G':
708 			case 'H':
709 			case 'I':
710 			case 'J':
711 			case 'K':
712 			case 'L':
713 			case 'M':
714 			case 'N':
715 			case 'O':
716 			case 'P':
717 			case 'Q':
718 			case 'R':
719 			case 'S':
720 			case 'T':
721 			case 'U':
722 			case 'V':
723 			case 'W':
724 			case 'X':
725 			case 'Y':
726 			case 'Z':
727 			case '_':
728 			case 'a':
729 			case 'b':
730 			case 'c':
731 			case 'd':
732 			case 'e':
733 			case 'f':
734 			case 'g':
735 			case 'h':
736 			case 'i':
737 			case 'j':
738 			case 'k':
739 			case 'l':
740 			case 'm':
741 			case 'n':
742 			case 'o':
743 			case 'p':
744 			case 'q':
745 			case 'r':
746 			case 's':
747 			case 't':
748 			case 'u':
749 			case 'v':
750 			case 'w':
751 			case 'x':
752 			case 'y':
753 			case 'z':	goto aa43;
754 			case '\\':	goto aa45;
755 			default:	goto aa60;
756 			}
757 aa60:
758 // 89 "scanner.re"
759 			{
760 			token->opcode = PHANNOT_T_TRUE;
761 			return 0;
762 		}
763 // 764 "scanner.c"
764 aa61:
765 			aaaccept = 1;
766 			aach = *(AAMARKER = ++AACURSOR);
767 			switch (aach) {
768 			case 'L':
769 			case 'l':	goto aa62;
770 			default:	goto aa44;
771 			}
772 aa62:
773 			aaaccept = 1;
774 			aach = *(AAMARKER = ++AACURSOR);
775 			switch (aach) {
776 			case 'S':
777 			case 's':	goto aa63;
778 			default:	goto aa44;
779 			}
780 aa63:
781 			aaaccept = 1;
782 			aach = *(AAMARKER = ++AACURSOR);
783 			switch (aach) {
784 			case 'E':
785 			case 'e':	goto aa64;
786 			default:	goto aa44;
787 			}
788 aa64:
789 			aaaccept = 4;
790 			aach = *(AAMARKER = ++AACURSOR);
791 			switch (aach) {
792 			case '0':
793 			case '1':
794 			case '2':
795 			case '3':
796 			case '4':
797 			case '5':
798 			case '6':
799 			case '7':
800 			case '8':
801 			case '9':
802 			case 'A':
803 			case 'B':
804 			case 'C':
805 			case 'D':
806 			case 'E':
807 			case 'F':
808 			case 'G':
809 			case 'H':
810 			case 'I':
811 			case 'J':
812 			case 'K':
813 			case 'L':
814 			case 'M':
815 			case 'N':
816 			case 'O':
817 			case 'P':
818 			case 'Q':
819 			case 'R':
820 			case 'S':
821 			case 'T':
822 			case 'U':
823 			case 'V':
824 			case 'W':
825 			case 'X':
826 			case 'Y':
827 			case 'Z':
828 			case '_':
829 			case 'a':
830 			case 'b':
831 			case 'c':
832 			case 'd':
833 			case 'e':
834 			case 'f':
835 			case 'g':
836 			case 'h':
837 			case 'i':
838 			case 'j':
839 			case 'k':
840 			case 'l':
841 			case 'm':
842 			case 'n':
843 			case 'o':
844 			case 'p':
845 			case 'q':
846 			case 'r':
847 			case 's':
848 			case 't':
849 			case 'u':
850 			case 'v':
851 			case 'w':
852 			case 'x':
853 			case 'y':
854 			case 'z':	goto aa43;
855 			case '\\':	goto aa45;
856 			default:	goto aa65;
857 			}
858 aa65:
859 // 84 "scanner.re"
860 			{
861 			token->opcode = PHANNOT_T_FALSE;
862 			return 0;
863 		}
864 // 865 "scanner.c"
865 aa66:
866 			aaaccept = 1;
867 			aach = *(AAMARKER = ++AACURSOR);
868 			switch (aach) {
869 			case 'L':
870 			case 'l':	goto aa67;
871 			default:	goto aa44;
872 			}
873 aa67:
874 			aaaccept = 1;
875 			aach = *(AAMARKER = ++AACURSOR);
876 			switch (aach) {
877 			case 'L':
878 			case 'l':	goto aa68;
879 			default:	goto aa44;
880 			}
881 aa68:
882 			aaaccept = 5;
883 			aach = *(AAMARKER = ++AACURSOR);
884 			switch (aach) {
885 			case '0':
886 			case '1':
887 			case '2':
888 			case '3':
889 			case '4':
890 			case '5':
891 			case '6':
892 			case '7':
893 			case '8':
894 			case '9':
895 			case 'A':
896 			case 'B':
897 			case 'C':
898 			case 'D':
899 			case 'E':
900 			case 'F':
901 			case 'G':
902 			case 'H':
903 			case 'I':
904 			case 'J':
905 			case 'K':
906 			case 'L':
907 			case 'M':
908 			case 'N':
909 			case 'O':
910 			case 'P':
911 			case 'Q':
912 			case 'R':
913 			case 'S':
914 			case 'T':
915 			case 'U':
916 			case 'V':
917 			case 'W':
918 			case 'X':
919 			case 'Y':
920 			case 'Z':
921 			case '_':
922 			case 'a':
923 			case 'b':
924 			case 'c':
925 			case 'd':
926 			case 'e':
927 			case 'f':
928 			case 'g':
929 			case 'h':
930 			case 'i':
931 			case 'j':
932 			case 'k':
933 			case 'l':
934 			case 'm':
935 			case 'n':
936 			case 'o':
937 			case 'p':
938 			case 'q':
939 			case 'r':
940 			case 's':
941 			case 't':
942 			case 'u':
943 			case 'v':
944 			case 'w':
945 			case 'x':
946 			case 'y':
947 			case 'z':	goto aa43;
948 			case '\\':	goto aa45;
949 			default:	goto aa69;
950 			}
951 aa69:
952 // 79 "scanner.re"
953 			{
954 			token->opcode = PHANNOT_T_NULL;
955 			return 0;
956 		}
957 // 958 "scanner.c"
958 aa70:
959 			aach = *++AACURSOR;
960 			switch (aach) {
961 			case '0':
962 			case '1':
963 			case '2':
964 			case '3':
965 			case '4':
966 			case '5':
967 			case '6':
968 			case '7':
969 			case '8':
970 			case '9':	goto aa73;
971 			default:	goto aa46;
972 			}
973 aa71:
974 			aaaccept = 0;
975 			AAMARKER = ++AACURSOR;
976 			aach = *AACURSOR;
977 aa72:
978 			switch (aach) {
979 			case '.':	goto aa70;
980 			case '0':
981 			case '1':
982 			case '2':
983 			case '3':
984 			case '4':
985 			case '5':
986 			case '6':
987 			case '7':
988 			case '8':
989 			case '9':	goto aa71;
990 			default:	goto aa5;
991 			}
992 aa73:
993 			++AACURSOR;
994 			aach = *AACURSOR;
995 			switch (aach) {
996 			case '0':
997 			case '1':
998 			case '2':
999 			case '3':
1000 			case '4':
1001 			case '5':
1002 			case '6':
1003 			case '7':
1004 			case '8':
1005 			case '9':	goto aa73;
1006 			default:	goto aa75;
1007 			}
1008 aa75:
1009 // 71 "scanner.re"
1010 			{
1011 			token->opcode = PHANNOT_T_DOUBLE;
1012 			token->value = estrndup(start, AACURSOR - start);
1013 			token->len = AACURSOR - start;
1014 			q = AACURSOR;
1015 			return 0;
1016 		}
1017 // 1018 "scanner.c"
1018 		}
1019 // 183 "scanner.re"
1020 
1021 
1022 		}
1023 	}
1024 
1025 	return status;
1026 }