Annotation of 43BSD/usr.bin/lex/header.c, revision 1.1

1.1     ! root        1: #ifndef lint
        !             2: static char sccsid[] = "@(#)header.c   4.1 (Berkeley) 8/11/83";
        !             3: #endif
        !             4: # include "ldefs.c"
        !             5: phead1(){
        !             6:        ratfor ? rhd1() : chd1();
        !             7:        }
        !             8: 
        !             9: chd1(){
        !            10:        fprintf(fout,"# include \"stdio.h\"\n");
        !            11:        if (ZCH>NCH)
        !            12:        fprintf(fout, "# define U(x) ((x)&0377)\n");
        !            13:        else
        !            14:        fprintf(fout, "# define U(x) x\n");
        !            15:        fprintf(fout, "# define NLSTATE yyprevious=YYNEWLINE\n");
        !            16:        fprintf(fout,"# define BEGIN yybgin = yysvec + 1 +\n");
        !            17:        fprintf(fout,"# define INITIAL 0\n");
        !            18:        fprintf(fout,"# define YYLERR yysvec\n");
        !            19:        fprintf(fout,"# define YYSTATE (yyestate-yysvec-1)\n");
        !            20:        if(optim)
        !            21:                fprintf(fout,"# define YYOPTIM 1\n");
        !            22: # ifdef DEBUG
        !            23:        fprintf(fout,"# define LEXDEBUG 1\n");
        !            24: # endif
        !            25:        fprintf(fout,"# define YYLMAX 200\n");
        !            26:        fprintf(fout,"# define output(c) putc(c,yyout)\n");
        !            27:        fprintf(fout, "%s%d%s\n",
        !            28:   "# define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==",
        !            29:        ctable['\n'],
        !            30:  "?(yylineno++,yytchar):yytchar)==EOF?0:yytchar)");
        !            31:        fprintf(fout,
        !            32: "# define unput(c) {yytchar= (c);if(yytchar=='\\n')yylineno--;*yysptr++=yytchar;}\n");
        !            33:        fprintf(fout,"# define yymore() (yymorfg=1)\n");
        !            34:        fprintf(fout,"# define ECHO fprintf(yyout, \"%%s\",yytext)\n");
        !            35:        fprintf(fout,"# define REJECT { nstr = yyreject(); goto yyfussy;}\n");
        !            36:        fprintf(fout,"int yyleng; extern char yytext[];\n");
        !            37:        fprintf(fout,"int yymorfg;\n");
        !            38:        fprintf(fout,"extern char *yysptr, yysbuf[];\n");
        !            39:        fprintf(fout,"int yytchar;\n");
        !            40:        fprintf(fout,"FILE *yyin ={stdin}, *yyout ={stdout};\n");
        !            41:        fprintf(fout,"extern int yylineno;\n");
        !            42:        fprintf(fout,"struct yysvf { \n");
        !            43:        fprintf(fout,"\tstruct yywork *yystoff;\n");
        !            44:        fprintf(fout,"\tstruct yysvf *yyother;\n");
        !            45:        fprintf(fout,"\tint *yystops;};\n");
        !            46:        fprintf(fout,"struct yysvf *yyestate;\n");
        !            47:        fprintf(fout,"extern struct yysvf yysvec[], *yybgin;\n");
        !            48:        }
        !            49: 
        !            50: rhd1(){
        !            51:        fprintf(fout,"integer function yylex(dummy)\n");
        !            52:        fprintf(fout,"define YYLMAX 200\n");
        !            53:        fprintf(fout,"define ECHO call yyecho(yytext,yyleng)\n");
        !            54:        fprintf(fout,"define REJECT nstr = yyrjct(yytext,yyleng);goto 30998\n");
        !            55:        fprintf(fout,"integer nstr,yylook,yywrap\n");
        !            56:        fprintf(fout,"integer yyleng, yytext(YYLMAX)\n");
        !            57:        fprintf(fout,"common /yyxel/ yyleng, yytext\n");
        !            58:        fprintf(fout,"common /yyldat/ yyfnd, yymorf, yyprev, yybgin, yylsp, yylsta\n");
        !            59:        fprintf(fout,"integer yyfnd, yymorf, yyprev, yybgin, yylsp, yylsta(YYLMAX)\n");
        !            60:        fprintf(fout,"for(;;){\n");
        !            61:        fprintf(fout,"\t30999 nstr = yylook(dummy)\n");
        !            62:        fprintf(fout,"\tgoto 30998\n");
        !            63:        fprintf(fout,"\t30000 k = yywrap(dummy)\n");
        !            64:        fprintf(fout,"\tif(k .ne. 0){\n");
        !            65:        fprintf(fout,"\tyylex=0; return; }\n");
        !            66:        fprintf(fout,"\t\telse goto 30998\n");
        !            67:        }
        !            68: 
        !            69: phead2(){
        !            70:        if(!ratfor)chd2();
        !            71:        }
        !            72: 
        !            73: chd2(){
        !            74:        fprintf(fout,"while((nstr = yylook()) >= 0)\n");
        !            75:        fprintf(fout,"yyfussy: switch(nstr){\n");
        !            76:        fprintf(fout,"case 0:\n");
        !            77:        fprintf(fout,"if(yywrap()) return(0); break;\n");
        !            78:        }
        !            79: 
        !            80: ptail(){
        !            81:        if(!pflag)
        !            82:                ratfor ? rtail() : ctail();
        !            83:        pflag = 1;
        !            84:        }
        !            85: 
        !            86: ctail(){
        !            87:        fprintf(fout,"case -1:\nbreak;\n");             /* for reject */
        !            88:        fprintf(fout,"default:\n");
        !            89:        fprintf(fout,"fprintf(yyout,\"bad switch yylook %%d\",nstr);\n");
        !            90:        fprintf(fout,"} return(0); }\n");
        !            91:        fprintf(fout,"/* end of yylex */\n");
        !            92:        }
        !            93: 
        !            94: rtail(){
        !            95:        register int i;
        !            96:        fprintf(fout,"\n30998 if(nstr .lt. 0 .or. nstr .gt. %d)goto 30999\n",casecount);
        !            97:        fprintf(fout,"nstr = nstr + 1\n");
        !            98:        fprintf(fout,"goto(\n");
        !            99:        for(i=0; i<casecount; i++)
        !           100:                fprintf(fout,"%d,\n",30000+i);
        !           101:        fprintf(fout,"30999),nstr\n");
        !           102:        fprintf(fout,"30997 continue\n");
        !           103:        fprintf(fout,"}\nend\n");
        !           104:        }
        !           105: statistics(){
        !           106:        fprintf(errorf,"%d/%d nodes(%%e), %d/%d positions(%%p), %d/%d (%%n), %ld transitions\n",
        !           107:                tptr, treesize, nxtpos-positions, maxpos, stnum+1, nstates, rcount);
        !           108:        fprintf(errorf, ", %d/%d packed char classes(%%k)", pcptr-pchar, pchlen);
        !           109:        if(optim)fprintf(errorf,", %d/%d packed transitions(%%a)",nptr, ntrans);
        !           110:        fprintf(errorf, ", %d/%d output slots(%%o)", yytop, outsize);
        !           111:        putc('\n',errorf);
        !           112:        }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.