Imported from ../lua-1.0.tar.gz.
[lua.git] / lex_yy.c
blobcc129d9b47df5455de3ee066d57b6992c885878e
1 # include "stdio.h"
2 # define U(x) x
3 # define NLSTATE yyprevious=YYNEWLINE
4 # define BEGIN yybgin = yysvec + 1 +
5 # define INITIAL 0
6 # define YYLERR yysvec
7 # define YYSTATE (yyestate-yysvec-1)
8 # define YYOPTIM 1
9 # define YYLMAX BUFSIZ
10 # define output(c) putc(c,yyout)
11 # define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar)
12 # define unput(c) {yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar;}
13 # define yymore() (yymorfg=1)
14 # define ECHO fprintf(yyout, "%s",yytext)
15 # define REJECT { nstr = yyreject(); goto yyfussy;}
16 int yyleng; extern char yytext[];
17 int yymorfg;
18 extern char *yysptr, yysbuf[];
19 int yytchar;
20 FILE *yyin = {stdin}, *yyout = {stdout};
21 extern int yylineno;
22 struct yysvf {
23 struct yywork *yystoff;
24 struct yysvf *yyother;
25 int *yystops;};
26 struct yysvf *yyestate;
27 extern struct yysvf yysvec[], *yybgin;
28 #include <stdlib.h>
29 #include <string.h>
31 #include "opcode.h"
32 #include "hash.h"
33 #include "inout.h"
34 #include "table.h"
35 #include "y_tab.h"
37 #undef input
38 #undef unput
40 static Input input;
41 static Unput unput;
43 void lua_setinput (Input fn)
45 input = fn;
48 void lua_setunput (Unput fn)
50 unput = fn;
53 char *lua_lasttext (void)
55 return yytext;
58 # define YYNEWLINE 10
59 yylex(){
60 int nstr; extern int yyprevious;
61 while((nstr = yylook()) >= 0)
62 yyfussy: switch(nstr){
63 case 0:
64 if(yywrap()) return(0); break;
65 case 1:
67 break;
68 case 2:
69 {yylval.vInt = 1; return DEBUG;}
70 break;
71 case 3:
72 {yylval.vInt = 0; return DEBUG;}
73 break;
74 case 4:
75 lua_linenumber++;
76 break;
77 case 5:
79 break;
80 case 6:
81 return LOCAL;
82 break;
83 case 7:
84 return IF;
85 break;
86 case 8:
87 return THEN;
88 break;
89 case 9:
90 return ELSE;
91 break;
92 case 10:
93 return ELSEIF;
94 break;
95 case 11:
96 return WHILE;
97 break;
98 case 12:
99 return DO;
100 break;
101 case 13:
102 return REPEAT;
103 break;
104 case 14:
105 return UNTIL;
106 break;
107 case 15:
109 yylval.vWord = lua_nfile-1;
110 return FUNCTION;
112 break;
113 case 16:
114 return END;
115 break;
116 case 17:
117 return RETURN;
118 break;
119 case 18:
120 return LOCAL;
121 break;
122 case 19:
123 return NIL;
124 break;
125 case 20:
126 return AND;
127 break;
128 case 21:
129 return OR;
130 break;
131 case 22:
132 return NOT;
133 break;
134 case 23:
135 return NE;
136 break;
137 case 24:
138 return LE;
139 break;
140 case 25:
141 return GE;
142 break;
143 case 26:
144 return CONC;
145 break;
146 case 27:
147 case 28:
149 yylval.vWord = lua_findenclosedconstant (yytext);
150 return STRING;
152 break;
153 case 29:
154 case 30:
155 case 31:
156 case 32:
158 yylval.vFloat = atof(yytext);
159 return NUMBER;
161 break;
162 case 33:
164 yylval.vWord = lua_findsymbol (yytext);
165 return NAME;
167 break;
168 case 34:
169 return *yytext;
170 break;
171 case -1:
172 break;
173 default:
174 fprintf(yyout,"bad switch yylook %d",nstr);
175 } return(0); }
176 /* end of yylex */
177 int yyvstop[] = {
490 # define YYTYPE char
491 struct yywork { YYTYPE verify, advance; } yycrank[] = {
492 0,0, 0,0, 1,3, 0,0,
493 0,0, 0,0, 0,0, 0,0,
494 0,0, 0,0, 1,4, 1,5,
495 6,29, 4,28, 0,0, 0,0,
496 0,0, 0,0, 7,31, 0,0,
497 6,29, 6,29, 0,0, 0,0,
498 0,0, 0,0, 7,31, 7,31,
499 0,0, 0,0, 0,0, 0,0,
500 0,0, 0,0, 0,0, 1,6,
501 4,28, 0,0, 0,0, 0,0,
502 1,7, 0,0, 0,0, 0,0,
503 1,3, 6,30, 1,8, 1,9,
504 0,0, 1,10, 6,29, 7,31,
505 8,33, 0,0, 6,29, 0,0,
506 7,32, 0,0, 0,0, 6,29,
507 7,31, 1,11, 0,0, 1,12,
508 2,27, 7,31, 1,13, 11,39,
509 12,40, 1,13, 26,56, 0,0,
510 0,0, 2,8, 2,9, 0,0,
511 6,29, 0,0, 0,0, 6,29,
512 0,0, 0,0, 7,31, 0,0,
513 0,0, 7,31, 0,0, 0,0,
514 2,11, 0,0, 2,12, 0,0,
515 0,0, 0,0, 0,0, 0,0,
516 0,0, 0,0, 1,14, 0,0,
517 0,0, 1,15, 1,16, 1,17,
518 0,0, 22,52, 1,18, 18,47,
519 23,53, 1,19, 42,63, 1,20,
520 1,21, 25,55, 14,42, 1,22,
521 15,43, 1,23, 1,24, 16,44,
522 1,25, 16,45, 17,46, 19,48,
523 21,51, 2,14, 20,49, 1,26,
524 2,15, 2,16, 2,17, 24,54,
525 20,50, 2,18, 44,64, 45,65,
526 2,19, 46,66, 2,20, 2,21,
527 27,57, 48,67, 2,22, 49,68,
528 2,23, 2,24, 50,69, 2,25,
529 52,70, 53,72, 27,58, 54,73,
530 52,71, 9,34, 2,26, 9,35,
531 9,35, 9,35, 9,35, 9,35,
532 9,35, 9,35, 9,35, 9,35,
533 9,35, 10,36, 55,74, 10,37,
534 10,37, 10,37, 10,37, 10,37,
535 10,37, 10,37, 10,37, 10,37,
536 10,37, 57,75, 58,76, 64,80,
537 66,81, 67,82, 70,83, 71,84,
538 72,85, 73,86, 74,87, 10,38,
539 10,38, 38,61, 10,38, 38,61,
540 75,88, 76,89, 38,62, 38,62,
541 38,62, 38,62, 38,62, 38,62,
542 38,62, 38,62, 38,62, 38,62,
543 80,92, 81,93, 13,41, 13,41,
544 13,41, 13,41, 13,41, 13,41,
545 13,41, 13,41, 13,41, 13,41,
546 82,94, 83,95, 84,96, 10,38,
547 10,38, 86,97, 10,38, 13,41,
548 13,41, 13,41, 13,41, 13,41,
549 13,41, 13,41, 13,41, 13,41,
550 13,41, 13,41, 13,41, 13,41,
551 13,41, 13,41, 13,41, 13,41,
552 13,41, 13,41, 13,41, 13,41,
553 13,41, 13,41, 13,41, 13,41,
554 13,41, 87,98, 88,99, 60,79,
555 60,79, 13,41, 60,79, 13,41,
556 13,41, 13,41, 13,41, 13,41,
557 13,41, 13,41, 13,41, 13,41,
558 13,41, 13,41, 13,41, 13,41,
559 13,41, 13,41, 13,41, 13,41,
560 13,41, 13,41, 13,41, 13,41,
561 13,41, 13,41, 13,41, 13,41,
562 13,41, 33,33, 89,100, 60,79,
563 60,79, 92,101, 60,79, 93,102,
564 95,103, 33,33, 33,0, 96,104,
565 99,105, 100,106, 102,107, 106,108,
566 107,109, 35,35, 35,35, 35,35,
567 35,35, 35,35, 35,35, 35,35,
568 35,35, 35,35, 35,35, 108,110,
569 0,0, 0,0, 0,0, 0,0,
570 0,0, 0,0, 33,33, 0,0,
571 0,0, 35,59, 35,59, 33,33,
572 35,59, 0,0, 0,0, 33,33,
573 0,0, 0,0, 0,0, 0,0,
574 33,33, 0,0, 0,0, 0,0,
575 0,0, 36,60, 36,60, 36,60,
576 36,60, 36,60, 36,60, 36,60,
577 36,60, 36,60, 36,60, 0,0,
578 0,0, 33,33, 0,0, 0,0,
579 33,33, 35,59, 35,59, 0,0,
580 35,59, 36,38, 36,38, 59,77,
581 36,38, 59,77, 0,0, 0,0,
582 59,78, 59,78, 59,78, 59,78,
583 59,78, 59,78, 59,78, 59,78,
584 59,78, 59,78, 61,62, 61,62,
585 61,62, 61,62, 61,62, 61,62,
586 61,62, 61,62, 61,62, 61,62,
587 0,0, 0,0, 0,0, 0,0,
588 0,0, 36,38, 36,38, 0,0,
589 36,38, 77,78, 77,78, 77,78,
590 77,78, 77,78, 77,78, 77,78,
591 77,78, 77,78, 77,78, 79,90,
592 0,0, 79,90, 0,0, 0,0,
593 79,91, 79,91, 79,91, 79,91,
594 79,91, 79,91, 79,91, 79,91,
595 79,91, 79,91, 90,91, 90,91,
596 90,91, 90,91, 90,91, 90,91,
597 90,91, 90,91, 90,91, 90,91,
598 0,0};
599 struct yysvf yysvec[] = {
600 0, 0, 0,
601 yycrank+-1, 0, yyvstop+1,
602 yycrank+-28, yysvec+1, yyvstop+3,
603 yycrank+0, 0, yyvstop+5,
604 yycrank+4, 0, yyvstop+7,
605 yycrank+0, 0, yyvstop+10,
606 yycrank+-11, 0, yyvstop+12,
607 yycrank+-17, 0, yyvstop+14,
608 yycrank+7, 0, yyvstop+16,
609 yycrank+107, 0, yyvstop+18,
610 yycrank+119, 0, yyvstop+20,
611 yycrank+6, 0, yyvstop+23,
612 yycrank+7, 0, yyvstop+25,
613 yycrank+158, 0, yyvstop+27,
614 yycrank+4, yysvec+13, yyvstop+30,
615 yycrank+5, yysvec+13, yyvstop+33,
616 yycrank+11, yysvec+13, yyvstop+36,
617 yycrank+5, yysvec+13, yyvstop+39,
618 yycrank+5, yysvec+13, yyvstop+42,
619 yycrank+12, yysvec+13, yyvstop+45,
620 yycrank+21, yysvec+13, yyvstop+48,
621 yycrank+10, yysvec+13, yyvstop+51,
622 yycrank+4, yysvec+13, yyvstop+54,
623 yycrank+4, yysvec+13, yyvstop+57,
624 yycrank+21, yysvec+13, yyvstop+60,
625 yycrank+9, yysvec+13, yyvstop+63,
626 yycrank+9, 0, yyvstop+66,
627 yycrank+40, 0, yyvstop+68,
628 yycrank+0, yysvec+4, yyvstop+70,
629 yycrank+0, yysvec+6, 0,
630 yycrank+0, 0, yyvstop+72,
631 yycrank+0, yysvec+7, 0,
632 yycrank+0, 0, yyvstop+74,
633 yycrank+-280, 0, yyvstop+76,
634 yycrank+0, 0, yyvstop+78,
635 yycrank+249, 0, yyvstop+80,
636 yycrank+285, 0, yyvstop+82,
637 yycrank+0, yysvec+10, yyvstop+84,
638 yycrank+146, 0, 0,
639 yycrank+0, 0, yyvstop+86,
640 yycrank+0, 0, yyvstop+88,
641 yycrank+0, yysvec+13, yyvstop+90,
642 yycrank+10, yysvec+13, yyvstop+92,
643 yycrank+0, yysvec+13, yyvstop+94,
644 yycrank+19, yysvec+13, yyvstop+97,
645 yycrank+35, yysvec+13, yyvstop+99,
646 yycrank+27, yysvec+13, yyvstop+101,
647 yycrank+0, yysvec+13, yyvstop+103,
648 yycrank+42, yysvec+13, yyvstop+106,
649 yycrank+35, yysvec+13, yyvstop+108,
650 yycrank+30, yysvec+13, yyvstop+110,
651 yycrank+0, yysvec+13, yyvstop+112,
652 yycrank+36, yysvec+13, yyvstop+115,
653 yycrank+48, yysvec+13, yyvstop+117,
654 yycrank+35, yysvec+13, yyvstop+119,
655 yycrank+61, yysvec+13, yyvstop+121,
656 yycrank+0, 0, yyvstop+123,
657 yycrank+76, 0, 0,
658 yycrank+67, 0, 0,
659 yycrank+312, 0, 0,
660 yycrank+183, yysvec+36, yyvstop+125,
661 yycrank+322, 0, 0,
662 yycrank+0, yysvec+61, yyvstop+128,
663 yycrank+0, yysvec+13, yyvstop+130,
664 yycrank+78, yysvec+13, yyvstop+133,
665 yycrank+0, yysvec+13, yyvstop+135,
666 yycrank+81, yysvec+13, yyvstop+138,
667 yycrank+84, yysvec+13, yyvstop+140,
668 yycrank+0, yysvec+13, yyvstop+142,
669 yycrank+0, yysvec+13, yyvstop+145,
670 yycrank+81, yysvec+13, yyvstop+148,
671 yycrank+66, yysvec+13, yyvstop+150,
672 yycrank+74, yysvec+13, yyvstop+152,
673 yycrank+80, yysvec+13, yyvstop+154,
674 yycrank+78, yysvec+13, yyvstop+156,
675 yycrank+94, 0, 0,
676 yycrank+93, 0, 0,
677 yycrank+341, 0, 0,
678 yycrank+0, yysvec+77, yyvstop+158,
679 yycrank+356, 0, 0,
680 yycrank+99, yysvec+13, yyvstop+160,
681 yycrank+89, yysvec+13, yyvstop+163,
682 yycrank+108, yysvec+13, yyvstop+165,
683 yycrank+120, yysvec+13, yyvstop+167,
684 yycrank+104, yysvec+13, yyvstop+169,
685 yycrank+0, yysvec+13, yyvstop+171,
686 yycrank+113, yysvec+13, yyvstop+174,
687 yycrank+148, yysvec+13, yyvstop+176,
688 yycrank+133, 0, 0,
689 yycrank+181, 0, 0,
690 yycrank+366, 0, 0,
691 yycrank+0, yysvec+90, yyvstop+178,
692 yycrank+183, yysvec+13, yyvstop+181,
693 yycrank+182, yysvec+13, yyvstop+183,
694 yycrank+0, yysvec+13, yyvstop+185,
695 yycrank+172, yysvec+13, yyvstop+189,
696 yycrank+181, yysvec+13, yyvstop+191,
697 yycrank+0, yysvec+13, yyvstop+193,
698 yycrank+0, yysvec+13, yyvstop+196,
699 yycrank+189, 0, 0,
700 yycrank+195, 0, 0,
701 yycrank+0, yysvec+13, yyvstop+199,
702 yycrank+183, yysvec+13, yyvstop+202,
703 yycrank+0, yysvec+13, yyvstop+204,
704 yycrank+0, yysvec+13, yyvstop+207,
705 yycrank+0, 0, yyvstop+210,
706 yycrank+178, 0, 0,
707 yycrank+186, yysvec+13, yyvstop+212,
708 yycrank+204, 0, 0,
709 yycrank+0, yysvec+13, yyvstop+214,
710 yycrank+0, 0, yyvstop+217,
711 0, 0, 0};
712 struct yywork *yytop = yycrank+423;
713 struct yysvf *yybgin = yysvec+1;
714 char yymatch[] = {
715 00 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
716 01 ,011 ,012 ,01 ,01 ,01 ,01 ,01 ,
717 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
718 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
719 011 ,01 ,'"' ,01 ,01 ,01 ,01 ,047 ,
720 01 ,01 ,01 ,'+' ,01 ,'+' ,01 ,01 ,
721 '0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,
722 '0' ,'0' ,01 ,01 ,01 ,01 ,01 ,01 ,
723 01 ,'A' ,'A' ,'A' ,'D' ,'D' ,'A' ,'D' ,
724 'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
725 'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
726 'A' ,'A' ,'A' ,01 ,01 ,01 ,01 ,'A' ,
727 01 ,'A' ,'A' ,'A' ,'D' ,'D' ,'A' ,'D' ,
728 'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
729 'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
730 'A' ,'A' ,'A' ,01 ,01 ,01 ,01 ,01 ,
732 char yyextra[] = {
733 0,0,0,0,0,0,0,0,
734 0,0,0,0,0,0,0,0,
735 0,0,0,0,0,0,0,0,
736 0,0,0,0,0,0,0,0,
737 0,0,0,0,0,0,0,0,
739 #ifndef lint
740 static char ncform_sccsid[] = "@(#)ncform 1.6 88/02/08 SMI"; /* from S5R2 1.2 */
741 #endif
743 int yylineno =1;
744 # define YYU(x) x
745 # define NLSTATE yyprevious=YYNEWLINE
746 char yytext[YYLMAX];
747 struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp;
748 char yysbuf[YYLMAX];
749 char *yysptr = yysbuf;
750 int *yyfnd;
751 extern struct yysvf *yyestate;
752 int yyprevious = YYNEWLINE;
753 yylook(){
754 register struct yysvf *yystate, **lsp;
755 register struct yywork *yyt;
756 struct yysvf *yyz;
757 int yych, yyfirst;
758 struct yywork *yyr;
759 # ifdef LEXDEBUG
760 int debug;
761 # endif
762 char *yylastch;
763 /* start off machines */
764 # ifdef LEXDEBUG
765 debug = 0;
766 # endif
767 yyfirst=1;
768 if (!yymorfg)
769 yylastch = yytext;
770 else {
771 yymorfg=0;
772 yylastch = yytext+yyleng;
774 for(;;){
775 lsp = yylstate;
776 yyestate = yystate = yybgin;
777 if (yyprevious==YYNEWLINE) yystate++;
778 for (;;){
779 # ifdef LEXDEBUG
780 if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1);
781 # endif
782 yyt = yystate->yystoff;
783 if(yyt == yycrank && !yyfirst){ /* may not be any transitions */
784 yyz = yystate->yyother;
785 if(yyz == 0)break;
786 if(yyz->yystoff == yycrank)break;
788 *yylastch++ = yych = input();
789 yyfirst=0;
790 tryagain:
791 # ifdef LEXDEBUG
792 if(debug){
793 fprintf(yyout,"char ");
794 allprint(yych);
795 putchar('\n');
797 # endif
798 yyr = yyt;
799 if ( (int)yyt > (int)yycrank){
800 yyt = yyr + yych;
801 if (yyt <= yytop && yyt->verify+yysvec == yystate){
802 if(yyt->advance+yysvec == YYLERR) /* error transitions */
803 {unput(*--yylastch);break;}
804 *lsp++ = yystate = yyt->advance+yysvec;
805 goto contin;
808 # ifdef YYOPTIM
809 else if((int)yyt < (int)yycrank) { /* r < yycrank */
810 yyt = yyr = yycrank+(yycrank-yyt);
811 # ifdef LEXDEBUG
812 if(debug)fprintf(yyout,"compressed state\n");
813 # endif
814 yyt = yyt + yych;
815 if(yyt <= yytop && yyt->verify+yysvec == yystate){
816 if(yyt->advance+yysvec == YYLERR) /* error transitions */
817 {unput(*--yylastch);break;}
818 *lsp++ = yystate = yyt->advance+yysvec;
819 goto contin;
821 yyt = yyr + YYU(yymatch[yych]);
822 # ifdef LEXDEBUG
823 if(debug){
824 fprintf(yyout,"try fall back character ");
825 allprint(YYU(yymatch[yych]));
826 putchar('\n');
828 # endif
829 if(yyt <= yytop && yyt->verify+yysvec == yystate){
830 if(yyt->advance+yysvec == YYLERR) /* error transition */
831 {unput(*--yylastch);break;}
832 *lsp++ = yystate = yyt->advance+yysvec;
833 goto contin;
836 if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){
837 # ifdef LEXDEBUG
838 if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1);
839 # endif
840 goto tryagain;
842 # endif
843 else
844 {unput(*--yylastch);break;}
845 contin:
846 # ifdef LEXDEBUG
847 if(debug){
848 fprintf(yyout,"state %d char ",yystate-yysvec-1);
849 allprint(yych);
850 putchar('\n');
852 # endif
855 # ifdef LEXDEBUG
856 if(debug){
857 fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1);
858 allprint(yych);
859 putchar('\n');
861 # endif
862 while (lsp-- > yylstate){
863 *yylastch-- = 0;
864 if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){
865 yyolsp = lsp;
866 if(yyextra[*yyfnd]){ /* must backup */
867 while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){
868 lsp--;
869 unput(*yylastch--);
872 yyprevious = YYU(*yylastch);
873 yylsp = lsp;
874 yyleng = yylastch-yytext+1;
875 yytext[yyleng] = 0;
876 # ifdef LEXDEBUG
877 if(debug){
878 fprintf(yyout,"\nmatch ");
879 sprint(yytext);
880 fprintf(yyout," action %d\n",*yyfnd);
882 # endif
883 return(*yyfnd++);
885 unput(*yylastch);
887 if (yytext[0] == 0 /* && feof(yyin) */)
889 yysptr=yysbuf;
890 return(0);
892 yyprevious = yytext[0] = input();
893 if (yyprevious>0)
894 output(yyprevious);
895 yylastch=yytext;
896 # ifdef LEXDEBUG
897 if(debug)putchar('\n');
898 # endif
901 yyback(p, m)
902 int *p;
904 if (p==0) return(0);
905 while (*p)
907 if (*p++ == m)
908 return(1);
910 return(0);
912 /* the following are only used in the lex library */
913 yyinput(){
914 return(input());
916 yyoutput(c)
917 int c; {
918 output(c);
920 yyunput(c)
921 int c; {
922 unput(c);