|
|
1.1 root 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 200
10: # define output(c) putc(c,yyout)
11: # define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):efgetc)==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: # define DOTSON 2
29: #include <ctype.h>
30: #include "defs"
31: #include "tokdefs"
32:
33: typedef union { int ival; ptr pval; } YYSTYPE;
34: extern YYSTYPE yylval;
35: YYSTYPE prevl;
36: int prevv;
37: char *copys();
38: static ptr p;
39: static ptr q;
40: static FILE *fd;
41: static int quoted, k;
42: static int rket = 0;
43: FILE *opincl();
44: ptr mkdef(), mkcomm(), mkname(), mkimcon();
45:
46: #define RET(x) { RETI(x,x); }
47:
48: #define RETL(yv,yl) {yylval=prevl=yl;igeol=comneed=0;return(prevv=yv); }
49: #define RETP(yv,yl) {yylval.pval=prevl.pval=yl;igeol=comneed=0;return(prevv=yv); }
50: #define RETI(yv,yl) {yylval.ival=prevl.ival=yl;igeol=comneed=0;return(prevv=yv); }
51: #define REL(n) { RETI(RELOP, OPREL+n);}
52: #define AS(n) { RETI(ASGNOP, OPASGN+n); }
53: #define RETC(x) { RETP(CONST, mkconst(x,yytext) ); }
54: #define RETZ(x) { yytext[yyleng-1] = '\0'; RETP(CONST, mkimcon(x,yytext) ); }
55:
56: # define YYNEWLINE 10
57: yylex(){
58: int nstr; extern int yyprevious;
59: if(pushlex)
60: if(pushlex==1)
61: {
62: pushlex = 2;
63: yylval.ival = 0;
64: return(EOS);
65: }
66: else {
67: pushlex = 0;
68: if(rket == 2)
69: rket = 1;
70: else RETL(prevv,prevl);
71: }
72: if(rket > 0)
73: {
74: if(rket==1)
75: {
76: rket = 2;
77: RET(RBRACK);
78: }
79: else {
80: rket = 0;
81: RET(EOS);
82: }
83: }
84: if(eofneed) return(0);
85: if(forcerr) return(-1);
86: while((nstr = yylook()) >= 0)
87: yyfussy: switch(nstr){
88: case 0:
89: if(yywrap()) return(0); break;
90: case 1:
91: {
92: lower(yytext);
93: if(lettneed && yyleng==1)
94: { RETI(LETTER, yytext[0]); }
95: else if(defneed)
96: {
97: register char *q1, *q2;
98: for(q2=q1=yytext+yyleng+1 ; (*q1 = efgetc)!='\n' ; ++q1)
99: ;
100: *q1 = '\0';
101: p = mkdef(yytext, q2);
102: defneed = 0;
103: ++yylineno;
104: unput('\n');
105: }
106: else if(optneed)
107: { RETP(OPTNAME, copys(yytext)); }
108: else if(comneed && ( (q=name(yytext,1))==NULL || q->tag!=TDEFINE) )
109: { RETP(COMNAME, mkcomm(yytext) ); }
110: else if(q = name(yytext,1)) switch(q->tag)
111: {
112: case TDEFINE:
113: filelines[filedepth] = yylineno;
114: filemacs[filedepth] = efmacp;
115: pushchars[filedepth] = (yysptr>yysbuf?
116: *--yysptr : -1);
117: if(++filedepth >= MAXINCLUDEDEPTH)
118: fatal("macro or include too deep");
119: filelines[filedepth] = yylineno = 1;
120: efmacp = q->varp->valp;
121: filenames[filedepth] = NULL;
122: break; /*now process new input */
123:
124: case TSTRUCT:
125: RETP(STRUCTNAME, q);
126:
127: case TNAME:
128: RETP(NAME, q);
129:
130: case TKEYWORD:
131: if(q->subtype == END)
132: {
133: register int c;
134: eofneed = YES;
135: while((c=input())!=';'&&c!='\n'&&c!=EOF)
136: ;
137: NLSTATE;
138: }
139: RET(q->subtype);
140:
141: default:
142: fatal1("lex: impossible type code %d", q->tag);
143: }
144: else RETP(NAME, mkname(yytext) );
145: }
146: break;
147: case 2:
148: RET(COMMA);
149: break;
150: case 3:
151: RET(EOS);
152: break;
153: case 4:
154: RET(LPAR);
155: break;
156: case 5:
157: RET(RPAR);
158: break;
159: case 6:
160: case 7:
161: RET(LBRACK);
162: break;
163: case 8:
164: case 9:
165: { if(iobrlevel>0) RET(RBRACK); rket = 1; RET(EOS); }
166: break;
167: case 10:
168: RET(COMMA);
169: break;
170: case 11:
171: RET(COLON);
172: break;
173: case 12:
174: RET(REPOP);
175: break;
176: case 13:
177: case 14:
178: RETI(OR,OPOR);
179: break;
180: case 15:
181: case 16:
182: RETI(OR,OP2OR);
183: break;
184: case 17:
185: case 18:
186: RETI(AND,OPAND);
187: break;
188: case 19:
189: case 20:
190: RETI(AND,OP2AND);
191: break;
192: case 21:
193: case 22:
194: RETI(NOT,OPNOT);
195: break;
196: case 23:
197: RETI(NOT,OPNOT);
198: break;
199: case 24:
200: case 25:
201: REL(OPLT);
202: break;
203: case 26:
204: case 27:
205: REL(OPLE);
206: break;
207: case 28:
208: case 29:
209: REL(OPGT);
210: break;
211: case 30:
212: case 31:
213: REL(OPGE);
214: break;
215: case 32:
216: case 33:
217: REL(OPEQ);
218: break;
219: case 34:
220: case 35:
221: case 36:
222: REL(OPNE);
223: break;
224: case 37:
225: RET(ARROW);
226: break;
227: case 38:
228: RET(QUALOP);
229: break;
230: case 39:
231: RETI(ADDOP, OPPLUS);
232: break;
233: case 40:
234: RETI(ADDOP, OPMINUS);
235: break;
236: case 41:
237: RETI(MULTOP, OPSTAR);
238: break;
239: case 42:
240: RETI(MULTOP, OPSLASH);
241: break;
242: case 43:
243: case 44:
244: RETI(POWER, OPPOWER);
245: break;
246: case 45:
247: RETI(DOUBLEADDOP, OPPLUS);
248: break;
249: case 46:
250: RETI(DOUBLEADDOP, OPMINUS);
251: break;
252: case 47:
253: AS(OPASGN);
254: break;
255: case 48:
256: AS(OPPLUS);
257: break;
258: case 49:
259: AS(OPMINUS);
260: break;
261: case 50:
262: AS(OPSTAR);
263: break;
264: case 51:
265: AS(OPSLASH);
266: break;
267: case 52:
268: case 53:
269: AS(OPPOWER);
270: break;
271: case 54:
272: AS(OPAND);
273: break;
274: case 55:
275: AS(OP2AND);
276: break;
277: case 56:
278: AS(OPOR);
279: break;
280: case 57:
281: AS(OP2OR);
282: break;
283: case 58:
284: case 59:
285: { yytext[yyleng-1] = '\0'; p = mkconst(TYCHAR,yytext+1);
286: RETP(CONST,p); }
287: break;
288: case 60:
289: { /* nh construct */
290: int i, n; char c;
291: yytext[yyleng-1] = '\0'; n = convci(yytext);
292: for(i = 0; i<n ; ++i)
293: if( (c=yytext[i]=input()) == '\n' || c=='\0') break;
294: yytext[i] = '\0';
295: p = mkconst(TYCHAR,yytext);
296: p->vtypep = mkint(i);
297: RETP(CONST, p);
298: }
299: break;
300: case 61:
301: RETC(TYINT);
302: break;
303: case 62:
304: case 63:
305: RETC(TYREAL);
306: break;
307: case 64:
308: case 65:
309: RETC(TYREAL);
310: break;
311: case 66:
312: case 67:
313: RETC(TYLREAL);
314: break;
315: case 68:
316: { yytext[yyleng-1] = '.';
317: RETP(CONST,mkimcon(TYCOMPLEX,yytext)); }
318: break;
319: case 69:
320: case 70:
321: RETZ(TYCOMPLEX);
322: break;
323: case 71:
324: case 72:
325: RETZ(TYCOMPLEX);
326: break;
327: case 73:
328: case 74:
329: RETZ(TYLCOMPLEX);
330: break;
331: case 75:
332: { if(! nocommentflag) goto litline; }
333: break;
334: case 76:
335: { if(thisexec) thisexec->nftnst += 2;
336: if(inproc)
337: {
338: unput('\n');
339: RETP(ESCAPE, copys(yytext));
340: }
341:
342: litline: p = mkchain( copys(yytext), CHNULL);
343: if(inproc==0 && yytext[0]=='%')
344: prevcomments = hookup(prevcomments, p);
345: else
346: comments = hookup(comments,p);
347: }
348: break;
349: case 77:
350: ;
351: break;
352: case 78:
353: ;
354: break;
355: case 79:
356: ;
357: break;
358: case 80:
359: ;
360: break;
361: case 81:
362: { if(igeol) { igeol=0; prevv = NEWLINE; }
363: else if(prevv>=NAME || prevv==RPAR || prevv==RBRACK
364: || prevv== -1 || prevv==QUALOP)
365: RET(EOS); }
366: break;
367: case 82:
368: { char * linerr();
369: fprintf(diagfile, "Bad input character %c %s\n", yytext[0], linerr());
370: ++nerrs;
371: }
372: break;
373: case 83:
374: { /* Include statement */
375: char *q1;
376: register char *q2;
377: for(q1=yytext ; *q1==' ' || *q1=='\t' ; ++q1) ;
378: quoted = NO;
379: for(q1 += 7 ; *q1==' ' || *q1=='\t' ||
380: *q1=='\'' || *q1=='"' || *q1=='(' ; ++q1 )
381: if(*q1=='"' || *q1=='\'')
382: quoted = YES;
383: for(q2=q1 ; *q2!='\0' && *q2!=' ' && *q2!='\n' &&
384: *q2!='\'' && *q2!='"' && *q2!=')' ; ++q2 )
385: ;
386: *q2 = '\0';
387: if( ! quoted)
388: for(k=0; (q = name(q1,1)) && q->tag==TDEFINE ; ++k)
389: {
390: if(k > MAXINCLUDEDEPTH)
391: fatal1("Macros too deep for %s", yytext);
392: q1 = q->varp->valp;
393: }
394: if( (fd = opincl(&q1)) == NULL)
395: {
396: fprintf(diagfile, "Cannot open file %s. Stop.\n", q1);
397: exit(2);
398: }
399: filelines[filedepth] = yylineno;
400: pushchars[filedepth] = '\n';
401: if(++filedepth >= MAXINCLUDEDEPTH)
402: fatal("macro or include too deep");
403: fileptrs[filedepth] = yyin = fd;
404: filenames[filedepth] = copys(q1);
405: filelines[filedepth] = yylineno = 1;
406: filemacs[filedepth] = NULL;
407: }
408: break;
409: case -1:
410: break;
411: default:
412: fprintf(yyout,"bad switch yylook %d",nstr);
413: } return(0); }
414: /* end of yylex */
415:
416: yywrap()
417: {
418: if(filedepth == 0)
419: {
420: ateof = 1;
421: return(1);
422: }
423:
424: if(efmacp == 0)
425: {
426: fclose(yyin);
427: cfree(filenames[filedepth]);
428: }
429:
430: --filedepth;
431: if( filemacs[filedepth] )
432: efmacp = filemacs[filedepth];
433: else {
434: yyin = fileptrs[filedepth];
435: efmacp = 0;
436: }
437: yylineno = filelines[filedepth];
438: if(pushchars[filedepth] != -1)
439: unput( pushchars[filedepth] );
440: return(0);
441: }
442:
443:
444:
445: lower(s) /* replace upper with lower case letters */
446: register char *s;
447: {
448: register char *t;
449: for(t=s ; *t ; ++t)
450: if( isupper(*t) )
451: *s++ = tolower(*t);
452: else if(*t != '_')
453: *s++ = *t;
454: }
455:
456:
457:
458:
459: setdot(k)
460: int k;
461: {
462: if(k)
463: BEGIN DOTSON;
464: else BEGIN 0;
465: }
466:
467:
468:
469:
470: FILE *opincl(namep)
471: char **namep;
472: {
473: #ifndef unix
474: return( fopen(*namep, "r") );
475: #else
476:
477: /* On Unix, follow the C include conventions */
478:
479: register char *s, *lastslash;
480: char *dir, *name, temp[100];
481: int i;
482: FILE *fp;
483:
484: name = *namep;
485: if(name[0] == '/')
486: return( fopen(name, "r") );
487:
488: dir = basefile;
489: for(i = filedepth ; i>=0 ; --i)
490: if( filemacs[i] == NULL)
491: {
492: dir = filenames[i];
493: break;
494: }
495:
496: lastslash = NULL;
497: for(s = dir ; *s ; ++s)
498: if(*s == '/')
499: lastslash = s;
500: if(lastslash)
501: {
502: *lastslash = '\0';
503: sprintf(temp, "%s/%s", dir, name);
504: *lastslash = '/';
505: if( fp = fopen(temp, "r") )
506: *namep = temp;
507: }
508: else
509: fp = fopen(name, "r");
510:
511: if(fp == NULL)
512: {
513: sprintf(temp, "/usr/include/%s", name);
514: fp = fopen(temp, "r");
515: *namep = temp;
516: }
517: return(fp);
518:
519: #endif
520: }
521:
522: int yyvstop[] ={
523: 0,
524:
525: 82,
526: 0,
527:
528: 78,
529: 82,
530: 0,
531:
532: 81,
533: 0,
534:
535: 79,
536: 82,
537: 0,
538:
539: 77,
540: 82,
541: 0,
542:
543: 23,
544: 82,
545: 0,
546:
547: 82,
548: 0,
549:
550: 75,
551: 82,
552: 0,
553:
554: 12,
555: 82,
556: 0,
557:
558: 18,
559: 82,
560: 0,
561:
562: 82,
563: 0,
564:
565: 4,
566: 82,
567: 0,
568:
569: 5,
570: 82,
571: 0,
572:
573: 41,
574: 82,
575: 0,
576:
577: 39,
578: 82,
579: 0,
580:
581: 2,
582: 10,
583: 82,
584: 0,
585:
586: 40,
587: 82,
588: 0,
589:
590: 38,
591: 82,
592: 0,
593:
594: 42,
595: 82,
596: 0,
597:
598: 61,
599: 82,
600: 0,
601:
602: 11,
603: 82,
604: 0,
605:
606: 3,
607: 82,
608: 0,
609:
610: 25,
611: 82,
612: 0,
613:
614: 47,
615: 82,
616: 0,
617:
618: 29,
619: 82,
620: 0,
621:
622: 1,
623: 82,
624: 0,
625:
626: 6,
627: 82,
628: 0,
629:
630: 8,
631: 82,
632: 0,
633:
634: 44,
635: 82,
636: 0,
637:
638: 82,
639: 0,
640:
641: 7,
642: 82,
643: 0,
644:
645: 14,
646: 82,
647: 0,
648:
649: 9,
650: 82,
651: 0,
652:
653: 22,
654: 82,
655: 0,
656:
657: 78,
658: 82,
659: 0,
660:
661: 77,
662: 82,
663: 0,
664:
665: 76,
666: 82,
667: 0,
668:
669: 1,
670: 82,
671: 0,
672:
673: 38,
674: 82,
675: 0,
676:
677: 36,
678: 0,
679:
680: 59,
681: 0,
682:
683: 75,
684: 0,
685:
686: 20,
687: 0,
688:
689: 54,
690: 0,
691:
692: 58,
693: 0,
694:
695: 43,
696: 0,
697:
698: 50,
699: 0,
700:
701: 45,
702: 0,
703:
704: 48,
705: 0,
706:
707: 46,
708: 0,
709:
710: 49,
711: 0,
712:
713: 37,
714: 0,
715:
716: 63,
717: 0,
718:
719: 51,
720: 0,
721:
722: 62,
723: 0,
724:
725: 61,
726: 0,
727:
728: 60,
729: 0,
730:
731: 68,
732: 0,
733:
734: 27,
735: 0,
736:
737: 33,
738: 0,
739:
740: 31,
741: 0,
742:
743: 1,
744: 0,
745:
746: 53,
747: 0,
748:
749: 80,
750: 0,
751:
752: 56,
753: 0,
754:
755: 16,
756: 0,
757:
758: 35,
759: 0,
760:
761: 76,
762: 0,
763:
764: 1,
765: 0,
766:
767: 55,
768: 0,
769:
770: 52,
771: 0,
772:
773: 70,
774: 0,
775:
776: 62,
777: 63,
778: 0,
779:
780: 69,
781: 0,
782:
783: 66,
784: 0,
785:
786: 64,
787: 0,
788:
789: 57,
790: 0,
791:
792: 1,
793: 0,
794:
795: 67,
796: 0,
797:
798: 65,
799: 0,
800:
801: 69,
802: 70,
803: 0,
804:
805: 73,
806: 0,
807:
808: 71,
809: 0,
810:
811: 1,
812: 0,
813:
814: 32,
815: 0,
816:
817: 30,
818: 0,
819:
820: 28,
821: 0,
822:
823: 26,
824: 0,
825:
826: 24,
827: 0,
828:
829: 34,
830: 0,
831:
832: 13,
833: 0,
834:
835: 74,
836: 0,
837:
838: 72,
839: 0,
840:
841: 66,
842: 67,
843: 0,
844:
845: 64,
846: 65,
847: 0,
848:
849: 1,
850: 0,
851:
852: 17,
853: 0,
854:
855: 15,
856: 0,
857:
858: 21,
859: 0,
860:
861: 73,
862: 74,
863: 0,
864:
865: 71,
866: 72,
867: 0,
868:
869: 1,
870: 0,
871:
872: 19,
873: 0,
874:
875: 1,
876: 0,
877:
878: 83,
879: 0,
880: 0};
881: # define YYTYPE int
882: struct yywork { YYTYPE verify, advance; } yycrank[] ={
883: 0,0, 0,0, 1,5, 0,0,
884: 0,0, 0,0, 0,0, 0,0,
885: 0,0, 0,0, 1,6, 1,7,
886: 45,0, 1,8, 47,0, 34,72,
887: 34,73, 50,0, 79,0, 0,0,
888: 0,0, 0,0, 0,0, 0,0,
889: 0,0, 0,0, 0,0, 0,0,
890: 0,0, 0,0, 0,0, 0,0,
891: 0,0, 1,9, 1,10, 1,11,
892: 1,12, 1,13, 34,72, 1,14,
893: 1,15, 1,16, 1,17, 1,18,
894: 1,19, 1,20, 1,21, 1,22,
895: 1,23, 1,24, 0,0, 0,0,
896: 14,48, 19,54, 0,0, 0,0,
897: 0,0, 18,52, 105,127, 1,25,
898: 1,26, 1,27, 1,28, 1,29,
899: 10,44, 23,60, 1,30, 1,30,
900: 1,30, 1,30, 1,30, 19,55,
901: 1,30, 1,30, 1,30, 14,49,
902: 18,53, 1,30, 27,67, 1,30,
903: 1,30, 2,39, 1,30, 1,30,
904: 2,8, 1,30, 1,30, 28,68,
905: 29,69, 33,71, 38,76, 36,74,
906: 1,31, 48,88, 1,32, 1,33,
907: 1,34, 42,80, 39,77, 52,89,
908: 75,99, 106,128, 107,129, 78,100,
909: 2,40, 2,10, 80,101, 2,12,
910: 2,13, 2,41, 2,14, 108,130,
911: 2,16, 2,17, 2,18, 109,131,
912: 2,20, 2,21, 2,22, 2,23,
913: 21,56, 39,77, 110,132, 3,8,
914: 1,35, 1,36, 1,37, 1,38,
915: 81,102, 42,80, 2,25, 2,26,
916: 2,27, 2,28, 2,29, 78,100,
917: 21,57, 21,58, 80,101, 112,134,
918: 124,143, 126,145, 133,146, 3,9,
919: 3,10, 2,42, 3,12, 3,13,
920: 144,151, 3,14, 0,0, 3,16,
921: 3,17, 3,18, 36,75, 3,20,
922: 3,21, 3,43, 3,23, 83,105,
923: 81,102, 87,112, 39,78, 2,31,
924: 0,0, 2,32, 2,33, 96,120,
925: 0,0, 3,25, 3,26, 3,27,
926: 3,28, 3,29, 22,59, 22,59,
927: 22,59, 22,59, 22,59, 22,59,
928: 22,59, 22,59, 22,59, 22,59,
929: 0,0, 0,0, 0,0, 98,121,
930: 0,0, 4,39, 0,0, 83,105,
931: 4,8, 87,112, 39,78, 2,35,
932: 2,36, 2,37, 2,38, 96,120,
933: 82,103, 0,0, 3,31, 0,0,
934: 3,32, 3,33, 0,0, 0,0,
935: 0,0, 0,0, 0,0, 0,0,
936: 4,40, 4,10, 82,104, 4,12,
937: 4,13, 4,41, 4,14, 98,121,
938: 4,16, 4,17, 4,18, 0,0,
939: 4,20, 4,21, 4,43, 4,23,
940: 59,90, 59,91, 84,106, 0,0,
941: 82,103, 59,92, 3,35, 3,36,
942: 3,37, 3,38, 4,25, 4,26,
943: 4,27, 4,28, 4,29, 11,45,
944: 0,0, 84,107, 82,104, 86,110,
945: 85,108, 0,0, 100,122, 11,45,
946: 11,0, 4,42, 93,117, 93,118,
947: 101,123, 86,111, 0,0, 93,119,
948: 59,90, 59,91, 84,106, 85,109,
949: 102,124, 59,92, 103,125, 104,126,
950: 0,0, 0,0, 111,133, 4,31,
951: 0,0, 4,32, 4,33, 0,0,
952: 11,46, 84,107, 0,0, 86,110,
953: 85,108, 11,45, 100,122, 0,0,
954: 114,135, 11,45, 93,117, 93,118,
955: 101,123, 86,111, 11,45, 93,119,
956: 12,47, 0,0, 0,0, 85,109,
957: 102,124, 116,136, 103,125, 104,126,
958: 12,47, 12,0, 111,133, 4,35,
959: 4,36, 4,37, 4,38, 11,45,
960: 11,45, 11,45, 11,45, 11,45,
961: 122,141, 11,45, 11,45, 11,45,
962: 114,135, 0,0, 11,45, 123,142,
963: 11,45, 11,45, 125,144, 11,45,
964: 11,45, 12,47, 11,45, 11,45,
965: 0,0, 116,136, 12,47, 0,0,
966: 0,0, 138,147, 12,47, 0,0,
967: 140,148, 11,45, 0,0, 12,47,
968: 0,0, 15,50, 0,0, 0,0,
969: 122,141, 141,149, 142,150, 0,0,
970: 149,152, 15,50, 15,0, 123,142,
971: 150,153, 0,0, 125,144, 0,0,
972: 12,47, 12,47, 12,47, 12,47,
973: 12,47, 0,0, 12,47, 12,47,
974: 12,47, 138,147, 0,0, 12,47,
975: 140,148, 12,47, 12,47, 152,154,
976: 12,47, 12,47, 15,50, 12,47,
977: 12,47, 141,149, 142,150, 15,51,
978: 149,152, 0,0, 0,0, 15,50,
979: 150,153, 63,95, 12,47, 63,95,
980: 15,50, 0,0, 63,96, 63,96,
981: 63,96, 63,96, 63,96, 63,96,
982: 63,96, 63,96, 63,96, 63,96,
983: 0,0, 0,0, 0,0, 152,154,
984: 0,0, 15,50, 15,50, 15,50,
985: 15,50, 15,50, 0,0, 15,50,
986: 15,50, 15,50, 0,0, 0,0,
987: 15,50, 0,0, 15,50, 15,50,
988: 0,0, 15,50, 15,50, 0,0,
989: 15,50, 15,50, 0,0, 0,0,
990: 0,0, 0,0, 0,0, 0,0,
991: 0,0, 0,0, 24,61, 15,50,
992: 24,62, 24,62, 24,62, 24,62,
993: 24,62, 24,62, 24,62, 24,62,
994: 24,62, 24,62, 95,96, 95,96,
995: 95,96, 95,96, 95,96, 95,96,
996: 95,96, 95,96, 95,96, 95,96,
997: 24,63, 24,64, 0,0, 0,0,
998: 24,65, 24,66, 64,97, 0,0,
999: 64,97, 0,0, 0,0, 64,98,
1000: 64,98, 64,98, 64,98, 64,98,
1001: 64,98, 64,98, 64,98, 64,98,
1002: 64,98, 30,70, 30,70, 30,70,
1003: 30,70, 30,70, 30,70, 30,70,
1004: 30,70, 30,70, 30,70, 0,0,
1005: 24,63, 24,64, 0,0, 0,0,
1006: 24,65, 24,66, 30,70, 30,70,
1007: 30,70, 30,70, 30,70, 30,70,
1008: 30,70, 30,70, 30,70, 30,70,
1009: 30,70, 30,70, 30,70, 30,70,
1010: 30,70, 30,70, 30,70, 30,70,
1011: 30,70, 30,70, 30,70, 30,70,
1012: 30,70, 30,70, 30,70, 30,70,
1013: 0,0, 0,0, 0,0, 0,0,
1014: 30,70, 0,0, 30,70, 30,70,
1015: 30,70, 30,70, 30,70, 30,70,
1016: 30,70, 30,70, 30,70, 30,70,
1017: 30,70, 30,70, 30,70, 30,70,
1018: 30,70, 30,70, 30,70, 30,70,
1019: 30,70, 30,70, 30,70, 30,70,
1020: 30,70, 30,70, 30,70, 30,70,
1021: 41,79, 0,0, 0,0, 0,0,
1022: 0,0, 90,113, 0,0, 90,113,
1023: 41,79, 41,0, 90,114, 90,114,
1024: 90,114, 90,114, 90,114, 90,114,
1025: 90,114, 90,114, 90,114, 90,114,
1026: 97,98, 97,98, 97,98, 97,98,
1027: 97,98, 97,98, 97,98, 97,98,
1028: 97,98, 97,98, 0,0, 0,0,
1029: 0,0, 41,79, 0,0, 0,0,
1030: 0,0, 0,0, 41,79, 0,0,
1031: 0,0, 0,0, 41,79, 91,115,
1032: 0,0, 91,115, 0,0, 41,79,
1033: 91,116, 91,116, 91,116, 91,116,
1034: 91,116, 91,116, 91,116, 91,116,
1035: 91,116, 91,116, 0,0, 0,0,
1036: 0,0, 0,0, 0,0, 0,0,
1037: 41,79, 41,79, 41,79, 41,79,
1038: 41,79, 0,0, 41,79, 41,79,
1039: 41,79, 0,0, 0,0, 41,79,
1040: 0,0, 41,79, 41,79, 0,0,
1041: 41,79, 41,79, 0,0, 41,79,
1042: 41,79, 0,0, 0,0, 0,0,
1043: 0,0, 0,0, 0,0, 0,0,
1044: 0,0, 0,0, 41,79, 43,59,
1045: 43,59, 43,59, 43,59, 43,59,
1046: 43,59, 43,59, 43,59, 43,59,
1047: 43,59, 0,0, 0,0, 0,0,
1048: 0,0, 0,0, 0,0, 0,0,
1049: 43,81, 0,0, 43,82, 0,0,
1050: 43,83, 0,0, 43,84, 0,0,
1051: 0,0, 0,0, 0,0, 43,85,
1052: 0,0, 43,86, 43,87, 0,0,
1053: 0,0, 0,0, 0,0, 61,93,
1054: 61,93, 61,93, 61,93, 61,93,
1055: 61,93, 61,93, 61,93, 61,93,
1056: 61,93, 0,0, 0,0, 0,0,
1057: 43,81, 0,0, 43,82, 0,0,
1058: 43,83, 0,0, 43,84, 61,63,
1059: 61,64, 0,0, 0,0, 43,85,
1060: 61,94, 43,86, 43,87, 113,114,
1061: 113,114, 113,114, 113,114, 113,114,
1062: 113,114, 113,114, 113,114, 113,114,
1063: 113,114, 115,116, 115,116, 115,116,
1064: 115,116, 115,116, 115,116, 115,116,
1065: 115,116, 115,116, 115,116, 0,0,
1066: 0,0, 0,0, 0,0, 61,63,
1067: 61,64, 117,137, 0,0, 117,137,
1068: 61,94, 0,0, 117,138, 117,138,
1069: 117,138, 117,138, 117,138, 117,138,
1070: 117,138, 117,138, 117,138, 117,138,
1071: 118,139, 0,0, 118,139, 0,0,
1072: 0,0, 118,140, 118,140, 118,140,
1073: 118,140, 118,140, 118,140, 118,140,
1074: 118,140, 118,140, 118,140, 137,138,
1075: 137,138, 137,138, 137,138, 137,138,
1076: 137,138, 137,138, 137,138, 137,138,
1077: 137,138, 139,140, 139,140, 139,140,
1078: 139,140, 139,140, 139,140, 139,140,
1079: 139,140, 139,140, 139,140, 153,154,
1080: 0,0, 0,0, 0,0, 0,0,
1081: 0,0, 0,0, 0,0, 153,154,
1082: 153,155, 0,0, 0,0, 0,0,
1083: 0,0, 0,0, 0,0, 0,0,
1084: 0,0, 0,0, 0,0, 0,0,
1085: 0,0, 0,0, 0,0, 0,0,
1086: 0,0, 0,0, 0,0, 0,0,
1087: 0,0, 0,0, 0,0, 0,0,
1088: 153,154, 0,0, 0,0, 0,0,
1089: 0,0, 153,154, 0,0, 0,0,
1090: 0,0, 153,154, 0,0, 0,0,
1091: 0,0, 0,0, 153,153, 0,0,
1092: 0,0, 0,0, 0,0, 0,0,
1093: 0,0, 0,0, 0,0, 0,0,
1094: 0,0, 0,0, 0,0, 0,0,
1095: 0,0, 0,0, 0,0, 153,153,
1096: 153,153, 153,153, 153,153, 153,153,
1097: 0,0, 153,153, 153,153, 153,153,
1098: 0,0, 0,0, 153,153, 0,0,
1099: 153,153, 153,153, 154,154, 153,153,
1100: 153,153, 0,0, 153,153, 153,153,
1101: 0,0, 0,0, 0,0, 0,0,
1102: 0,0, 0,0, 0,0, 0,0,
1103: 0,0, 153,153, 0,0, 154,154,
1104: 154,154, 154,154, 154,154, 154,154,
1105: 0,0, 154,154, 154,154, 154,154,
1106: 0,0, 0,0, 154,154, 0,0,
1107: 154,154, 154,154, 0,0, 154,154,
1108: 154,154, 0,0, 154,154, 154,154,
1109: 0,0, 0,0, 0,0, 0,0,
1110: 0,0, 0,0, 0,0, 0,0,
1111: 0,0, 154,154, 0,0, 0,0,
1112: 0,0};
1113: struct yysvf yysvec[] ={
1114: 0, 0, 0,
1115: yycrank+-1, 0, 0,
1116: yycrank+-72, yysvec+1, 0,
1117: yycrank+-111, yysvec+1, 0,
1118: yycrank+-180, yysvec+1, 0,
1119: yycrank+0, 0, yyvstop+1,
1120: yycrank+0, 0, yyvstop+3,
1121: yycrank+0, 0, yyvstop+6,
1122: yycrank+0, 0, yyvstop+8,
1123: yycrank+0, 0, yyvstop+11,
1124: yycrank+3, 0, yyvstop+14,
1125: yycrank+-242, 0, yyvstop+17,
1126: yycrank+-291, 0, yyvstop+19,
1127: yycrank+0, 0, yyvstop+22,
1128: yycrank+14, 0, yyvstop+25,
1129: yycrank+-340, 0, yyvstop+28,
1130: yycrank+0, 0, yyvstop+30,
1131: yycrank+0, 0, yyvstop+33,
1132: yycrank+15, 0, yyvstop+36,
1133: yycrank+10, 0, yyvstop+39,
1134: yycrank+0, 0, yyvstop+42,
1135: yycrank+75, 0, yyvstop+46,
1136: yycrank+126, 0, yyvstop+49,
1137: yycrank+4, 0, yyvstop+52,
1138: yycrank+388, 0, yyvstop+55,
1139: yycrank+0, 0, yyvstop+58,
1140: yycrank+0, 0, yyvstop+61,
1141: yycrank+17, 0, yyvstop+64,
1142: yycrank+26, 0, yyvstop+67,
1143: yycrank+27, 0, yyvstop+70,
1144: yycrank+429, 0, yyvstop+73,
1145: yycrank+0, 0, yyvstop+76,
1146: yycrank+0, 0, yyvstop+79,
1147: yycrank+28, 0, yyvstop+82,
1148: yycrank+6, 0, yyvstop+85,
1149: yycrank+0, 0, yyvstop+87,
1150: yycrank+30, 0, yyvstop+90,
1151: yycrank+0, 0, yyvstop+93,
1152: yycrank+29, 0, yyvstop+96,
1153: yycrank+89, 0, yyvstop+99,
1154: yycrank+0, yysvec+39, yyvstop+102,
1155: yycrank+-551, 0, yyvstop+105,
1156: yycrank+19, yysvec+30, yyvstop+108,
1157: yycrank+599, 0, yyvstop+111,
1158: yycrank+0, 0, yyvstop+114,
1159: yycrank+-2, yysvec+11, 0,
1160: yycrank+0, 0, yyvstop+116,
1161: yycrank+-4, yysvec+12, yyvstop+118,
1162: yycrank+32, 0, yyvstop+120,
1163: yycrank+0, 0, yyvstop+122,
1164: yycrank+-7, yysvec+15, 0,
1165: yycrank+0, 0, yyvstop+124,
1166: yycrank+38, 0, yyvstop+126,
1167: yycrank+0, 0, yyvstop+128,
1168: yycrank+0, 0, yyvstop+130,
1169: yycrank+0, 0, yyvstop+132,
1170: yycrank+0, 0, yyvstop+134,
1171: yycrank+0, 0, yyvstop+136,
1172: yycrank+0, 0, yyvstop+138,
1173: yycrank+160, yysvec+22, yyvstop+140,
1174: yycrank+0, 0, yyvstop+142,
1175: yycrank+635, 0, yyvstop+144,
1176: yycrank+0, yysvec+24, yyvstop+146,
1177: yycrank+342, 0, 0,
1178: yycrank+419, 0, 0,
1179: yycrank+0, 0, yyvstop+148,
1180: yycrank+0, 0, yyvstop+150,
1181: yycrank+0, 0, yyvstop+152,
1182: yycrank+0, 0, yyvstop+154,
1183: yycrank+0, 0, yyvstop+156,
1184: yycrank+0, yysvec+30, yyvstop+158,
1185: yycrank+0, 0, yyvstop+160,
1186: yycrank+0, yysvec+34, 0,
1187: yycrank+0, 0, yyvstop+162,
1188: yycrank+0, 0, yyvstop+164,
1189: yycrank+39, 0, yyvstop+166,
1190: yycrank+0, 0, yyvstop+168,
1191: yycrank+0, yysvec+39, 0,
1192: yycrank+25, 0, 0,
1193: yycrank+-8, yysvec+41, yyvstop+170,
1194: yycrank+39, yysvec+30, yyvstop+172,
1195: yycrank+50, 0, 0,
1196: yycrank+135, 0, 0,
1197: yycrank+78, 0, 0,
1198: yycrank+161, 0, 0,
1199: yycrank+179, 0, 0,
1200: yycrank+178, 0, 0,
1201: yycrank+79, 0, 0,
1202: yycrank+0, 0, yyvstop+174,
1203: yycrank+0, 0, yyvstop+176,
1204: yycrank+514, 0, 0,
1205: yycrank+552, 0, 0,
1206: yycrank+0, 0, yyvstop+178,
1207: yycrank+186, yysvec+61, yyvstop+180,
1208: yycrank+0, 0, yyvstop+183,
1209: yycrank+398, 0, 0,
1210: yycrank+94, yysvec+95, yyvstop+185,
1211: yycrank+524, 0, 0,
1212: yycrank+114, yysvec+97, yyvstop+187,
1213: yycrank+0, 0, yyvstop+189,
1214: yycrank+183, 0, 0,
1215: yycrank+180, yysvec+30, yyvstop+191,
1216: yycrank+196, 0, 0,
1217: yycrank+188, 0, 0,
1218: yycrank+185, 0, 0,
1219: yycrank+12, 0, 0,
1220: yycrank+55, 0, 0,
1221: yycrank+56, 0, 0,
1222: yycrank+65, 0, 0,
1223: yycrank+69, 0, 0,
1224: yycrank+76, 0, 0,
1225: yycrank+186, 0, 0,
1226: yycrank+93, 0, 0,
1227: yycrank+663, 0, 0,
1228: yycrank+211, yysvec+113, yyvstop+193,
1229: yycrank+673, 0, 0,
1230: yycrank+224, yysvec+115, yyvstop+195,
1231: yycrank+694, 0, 0,
1232: yycrank+709, 0, 0,
1233: yycrank+0, 0, yyvstop+197,
1234: yycrank+0, 0, yyvstop+200,
1235: yycrank+0, 0, yyvstop+202,
1236: yycrank+236, 0, 0,
1237: yycrank+234, yysvec+30, yyvstop+204,
1238: yycrank+94, 0, 0,
1239: yycrank+254, 0, 0,
1240: yycrank+95, 0, 0,
1241: yycrank+0, 0, yyvstop+206,
1242: yycrank+0, 0, yyvstop+208,
1243: yycrank+0, 0, yyvstop+210,
1244: yycrank+0, 0, yyvstop+212,
1245: yycrank+0, 0, yyvstop+214,
1246: yycrank+0, 0, yyvstop+216,
1247: yycrank+96, 0, 0,
1248: yycrank+0, 0, yyvstop+218,
1249: yycrank+0, 0, yyvstop+220,
1250: yycrank+0, 0, yyvstop+222,
1251: yycrank+719, 0, 0,
1252: yycrank+260, yysvec+137, yyvstop+224,
1253: yycrank+729, 0, 0,
1254: yycrank+263, yysvec+139, yyvstop+227,
1255: yycrank+260, 0, 0,
1256: yycrank+278, yysvec+30, yyvstop+230,
1257: yycrank+0, 0, yyvstop+232,
1258: yycrank+102, 0, 0,
1259: yycrank+0, 0, yyvstop+234,
1260: yycrank+0, 0, yyvstop+236,
1261: yycrank+0, 0, yyvstop+238,
1262: yycrank+0, 0, yyvstop+241,
1263: yycrank+280, 0, 0,
1264: yycrank+283, yysvec+30, yyvstop+244,
1265: yycrank+0, 0, yyvstop+246,
1266: yycrank+302, 0, 0,
1267: yycrank+-786, 0, yyvstop+248,
1268: yycrank+-818, yysvec+153, 0,
1269: yycrank+0, 0, yyvstop+250,
1270: 0, 0, 0};
1271: struct yywork *yytop = yycrank+913;
1272: struct yysvf *yybgin = yysvec+1;
1273: char yymatch[] ={
1274: 00 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
1275: 01 ,011 ,012 ,01 ,01 ,01 ,01 ,01 ,
1276: 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
1277: 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
1278: 011 ,01 ,'"' ,01 ,01 ,01 ,01 ,047 ,
1279: 01 ,01 ,01 ,'+' ,01 ,'+' ,01 ,01 ,
1280: '0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,
1281: '0' ,'0' ,01 ,01 ,01 ,01 ,01 ,01 ,
1282: 01 ,'A' ,'B' ,'C' ,'D' ,'E' ,'B' ,'G' ,
1283: 'H' ,'I' ,'B' ,'B' ,'L' ,'B' ,'N' ,'O' ,
1284: 'B' ,'Q' ,'R' ,'B' ,'T' ,'U' ,'B' ,'B' ,
1285: 'B' ,'B' ,'B' ,01 ,01 ,01 ,01 ,'_' ,
1286: 01 ,'A' ,'B' ,'C' ,'D' ,'E' ,'B' ,'G' ,
1287: 'H' ,'I' ,'B' ,'B' ,'L' ,'B' ,'N' ,'O' ,
1288: 'B' ,'Q' ,'R' ,'B' ,'T' ,'U' ,'B' ,'B' ,
1289: 'B' ,'B' ,'B' ,01 ,01 ,01 ,01 ,01 ,
1290: 0};
1291: char yyextra[] ={
1292: 0,0,0,0,0,0,0,0,
1293: 0,0,0,0,0,0,0,0,
1294: 0,0,0,0,0,0,0,0,
1295: 0,0,0,0,0,0,0,0,
1296: 0,0,0,0,0,0,0,0,
1297: 0,0,0,0,0,0,0,0,
1298: 0,0,0,0,0,0,0,0,
1299: 0,0,0,0,0,0,0,0,
1300: 0,0,0,0,0,0,0,0,
1301: 0,0,0,0,0,0,0,0,
1302: 0,0,0,0,0,0,0,0,
1303: 0};
1304: /* ncform 4.1 83/08/11 */
1305:
1306: int yylineno =1;
1307: # define YYU(x) x
1308: # define NLSTATE yyprevious=YYNEWLINE
1309: char yytext[YYLMAX];
1310: struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp;
1311: char yysbuf[YYLMAX];
1312: char *yysptr = yysbuf;
1313: int *yyfnd;
1314: extern struct yysvf *yyestate;
1315: int yyprevious = YYNEWLINE;
1316: yylook(){
1317: register struct yysvf *yystate, **lsp;
1318: register struct yywork *yyt;
1319: struct yysvf *yyz;
1320: int yych;
1321: struct yywork *yyr;
1322: # ifdef LEXDEBUG
1323: int debug;
1324: # endif
1325: char *yylastch;
1326: /* start off machines */
1327: # ifdef LEXDEBUG
1328: debug = 0;
1329: # endif
1330: if (!yymorfg)
1331: yylastch = yytext;
1332: else {
1333: yymorfg=0;
1334: yylastch = yytext+yyleng;
1335: }
1336: for(;;){
1337: lsp = yylstate;
1338: yyestate = yystate = yybgin;
1339: if (yyprevious==YYNEWLINE) yystate++;
1340: for (;;){
1341: # ifdef LEXDEBUG
1342: if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1);
1343: # endif
1344: yyt = yystate->yystoff;
1345: if(yyt == yycrank){ /* may not be any transitions */
1346: yyz = yystate->yyother;
1347: if(yyz == 0)break;
1348: if(yyz->yystoff == yycrank)break;
1349: }
1350: *yylastch++ = yych = input();
1351: tryagain:
1352: # ifdef LEXDEBUG
1353: if(debug){
1354: fprintf(yyout,"char ");
1355: allprint(yych);
1356: putchar('\n');
1357: }
1358: # endif
1359: yyr = yyt;
1360: if ( (int)yyt > (int)yycrank){
1361: yyt = yyr + yych;
1362: if (yyt <= yytop && yyt->verify+yysvec == yystate){
1363: if(yyt->advance+yysvec == YYLERR) /* error transitions */
1364: {unput(*--yylastch);break;}
1365: *lsp++ = yystate = yyt->advance+yysvec;
1366: goto contin;
1367: }
1368: }
1369: # ifdef YYOPTIM
1370: else if((int)yyt < (int)yycrank) { /* r < yycrank */
1371: yyt = yyr = yycrank+(yycrank-yyt);
1372: # ifdef LEXDEBUG
1373: if(debug)fprintf(yyout,"compressed state\n");
1374: # endif
1375: yyt = yyt + yych;
1376: if(yyt <= yytop && yyt->verify+yysvec == yystate){
1377: if(yyt->advance+yysvec == YYLERR) /* error transitions */
1378: {unput(*--yylastch);break;}
1379: *lsp++ = yystate = yyt->advance+yysvec;
1380: goto contin;
1381: }
1382: yyt = yyr + YYU(yymatch[yych]);
1383: # ifdef LEXDEBUG
1384: if(debug){
1385: fprintf(yyout,"try fall back character ");
1386: allprint(YYU(yymatch[yych]));
1387: putchar('\n');
1388: }
1389: # endif
1390: if(yyt <= yytop && yyt->verify+yysvec == yystate){
1391: if(yyt->advance+yysvec == YYLERR) /* error transition */
1392: {unput(*--yylastch);break;}
1393: *lsp++ = yystate = yyt->advance+yysvec;
1394: goto contin;
1395: }
1396: }
1397: if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){
1398: # ifdef LEXDEBUG
1399: if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1);
1400: # endif
1401: goto tryagain;
1402: }
1403: # endif
1404: else
1405: {unput(*--yylastch);break;}
1406: contin:
1407: # ifdef LEXDEBUG
1408: if(debug){
1409: fprintf(yyout,"state %d char ",yystate-yysvec-1);
1410: allprint(yych);
1411: putchar('\n');
1412: }
1413: # endif
1414: ;
1415: }
1416: # ifdef LEXDEBUG
1417: if(debug){
1418: fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1);
1419: allprint(yych);
1420: putchar('\n');
1421: }
1422: # endif
1423: while (lsp-- > yylstate){
1424: *yylastch-- = 0;
1425: if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){
1426: yyolsp = lsp;
1427: if(yyextra[*yyfnd]){ /* must backup */
1428: while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){
1429: lsp--;
1430: unput(*yylastch--);
1431: }
1432: }
1433: yyprevious = YYU(*yylastch);
1434: yylsp = lsp;
1435: yyleng = yylastch-yytext+1;
1436: yytext[yyleng] = 0;
1437: # ifdef LEXDEBUG
1438: if(debug){
1439: fprintf(yyout,"\nmatch ");
1440: sprint(yytext);
1441: fprintf(yyout," action %d\n",*yyfnd);
1442: }
1443: # endif
1444: return(*yyfnd++);
1445: }
1446: unput(*yylastch);
1447: }
1448: if (yytext[0] == 0 /* && feof(yyin) */)
1449: {
1450: yysptr=yysbuf;
1451: return(0);
1452: }
1453: yyprevious = yytext[0] = input();
1454: if (yyprevious>0)
1455: output(yyprevious);
1456: yylastch=yytext;
1457: # ifdef LEXDEBUG
1458: if(debug)putchar('\n');
1459: # endif
1460: }
1461: }
1462: yyback(p, m)
1463: int *p;
1464: {
1465: if (p==0) return(0);
1466: while (*p)
1467: {
1468: if (*p++ == m)
1469: return(1);
1470: }
1471: return(0);
1472: }
1473: /* the following are only used in the lex library */
1474: yyinput(){
1475: return(input());
1476: }
1477: yyoutput(c)
1478: int c; {
1479: output(c);
1480: }
1481: yyunput(c)
1482: int c; {
1483: unput(c);
1484: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.