Blame


1 e37302c4 2004-04-21 devnull # include "ldefs.h"
2 e37302c4 2004-04-21 devnull
3 e37302c4 2004-04-21 devnull extern int nine;
4 e37302c4 2004-04-21 devnull
5 e37302c4 2004-04-21 devnull void
6 e37302c4 2004-04-21 devnull phead1(void)
7 e37302c4 2004-04-21 devnull {
8 e37302c4 2004-04-21 devnull Bprint(&fout,"typedef unsigned char Uchar;\n");
9 e37302c4 2004-04-21 devnull if (nine) {
10 e37302c4 2004-04-21 devnull Bprint(&fout,"# include <u.h>\n");
11 e37302c4 2004-04-21 devnull Bprint(&fout,"# include <libc.h>\n");
12 e37302c4 2004-04-21 devnull }
13 e37302c4 2004-04-21 devnull Bprint(&fout,"# include <stdio.h>\n");
14 e37302c4 2004-04-21 devnull Bprint(&fout, "# define U(x) x\n");
15 e37302c4 2004-04-21 devnull Bprint(&fout, "# define NLSTATE yyprevious=YYNEWLINE\n");
16 e37302c4 2004-04-21 devnull Bprint(&fout,"# define BEGIN yybgin = yysvec + 1 +\n");
17 e37302c4 2004-04-21 devnull Bprint(&fout,"# define INITIAL 0\n");
18 e37302c4 2004-04-21 devnull Bprint(&fout,"# define YYLERR yysvec\n");
19 e37302c4 2004-04-21 devnull Bprint(&fout,"# define YYSTATE (yyestate-yysvec-1)\n");
20 e37302c4 2004-04-21 devnull Bprint(&fout,"# define YYOPTIM 1\n");
21 e37302c4 2004-04-21 devnull # ifdef DEBUG
22 e37302c4 2004-04-21 devnull Bprint(&fout,"# define LEXDEBUG 1\n");
23 e37302c4 2004-04-21 devnull # endif
24 e37302c4 2004-04-21 devnull Bprint(&fout,"# define YYLMAX 200\n");
25 e37302c4 2004-04-21 devnull Bprint(&fout,
26 e37302c4 2004-04-21 devnull "# define unput(c) {yytchar= (c);if(yytchar=='\\n')yylineno--;*yysptr++=yytchar;}\n");
27 e37302c4 2004-04-21 devnull Bprint(&fout,"# define yymore() (yymorfg=1)\n");
28 e37302c4 2004-04-21 devnull Bprint(&fout,"# define ECHO fprintf(yyout, \"%%s\",yytext)\n");
29 e37302c4 2004-04-21 devnull Bprint(&fout,"# define REJECT { nstr = yyreject(); goto yyfussy;}\n");
30 e37302c4 2004-04-21 devnull Bprint(&fout,"int yyleng; extern char yytext[];\n");
31 e37302c4 2004-04-21 devnull Bprint(&fout,"int yymorfg;\n");
32 e37302c4 2004-04-21 devnull Bprint(&fout,"extern Uchar *yysptr, yysbuf[];\n");
33 e37302c4 2004-04-21 devnull Bprint(&fout,"int yytchar;\n");
34 cbeb0b26 2006-04-01 devnull /* Bprint(&fout,"FILE *yyin = stdin, *yyout = stdout;\n"); */
35 e37302c4 2004-04-21 devnull Bprint(&fout,"FILE *yyin, *yyout;\n");
36 e37302c4 2004-04-21 devnull Bprint(&fout,"extern int yylineno;\n");
37 e37302c4 2004-04-21 devnull Bprint(&fout,"struct yysvf { \n");
38 e37302c4 2004-04-21 devnull Bprint(&fout,"\tstruct yywork *yystoff;\n");
39 e37302c4 2004-04-21 devnull Bprint(&fout,"\tstruct yysvf *yyother;\n");
40 e37302c4 2004-04-21 devnull Bprint(&fout,"\tint *yystops;};\n");
41 e37302c4 2004-04-21 devnull Bprint(&fout,"struct yysvf *yyestate;\n");
42 e37302c4 2004-04-21 devnull Bprint(&fout,"extern struct yysvf yysvec[], *yybgin;\n");
43 e37302c4 2004-04-21 devnull Bprint(&fout,"int yylook(void), yywrap(void), yyback(int *, int);\n");
44 e37302c4 2004-04-21 devnull if(nine) {
45 e37302c4 2004-04-21 devnull Bprint(&fout,
46 e37302c4 2004-04-21 devnull "int infd, outfd;\n"
47 e37302c4 2004-04-21 devnull "\n"
48 e37302c4 2004-04-21 devnull "void\n"
49 e37302c4 2004-04-21 devnull "output(char c)\n"
50 e37302c4 2004-04-21 devnull "{\n"
51 e37302c4 2004-04-21 devnull " int rv;\n"
52 e37302c4 2004-04-21 devnull " if ((rv = write(outfd, &c, 1)) < 0)\n"
53 e37302c4 2004-04-21 devnull " sysfatal(\"output: %%r\");\n"
54 e37302c4 2004-04-21 devnull " if (rv == 0)\n"
55 e37302c4 2004-04-21 devnull " sysfatal(\"output: EOF?\");\n"
56 e37302c4 2004-04-21 devnull "}\n"
57 e37302c4 2004-04-21 devnull "\n"
58 e37302c4 2004-04-21 devnull "int\n"
59 e37302c4 2004-04-21 devnull "input(void)\n"
60 e37302c4 2004-04-21 devnull "{\n"
61 e37302c4 2004-04-21 devnull " if(yysptr > yysbuf)\n"
62 e37302c4 2004-04-21 devnull " yytchar = U(*--yysptr);\n"
63 e37302c4 2004-04-21 devnull " else {\n"
64 e37302c4 2004-04-21 devnull " int rv;\n"
65 e37302c4 2004-04-21 devnull " if ((rv = read(infd, &yytchar, 1)) < 0)\n"
66 e37302c4 2004-04-21 devnull " sysfatal(\"input: %%r\");\n"
67 e37302c4 2004-04-21 devnull " if (rv == 0)\n"
68 e37302c4 2004-04-21 devnull " return 0;\n"
69 e37302c4 2004-04-21 devnull " }\n"
70 e37302c4 2004-04-21 devnull " if (yytchar == '\\n')\n"
71 e37302c4 2004-04-21 devnull " yylineno++;\n"
72 e37302c4 2004-04-21 devnull " return yytchar;\n"
73 e37302c4 2004-04-21 devnull "}\n");
74 e37302c4 2004-04-21 devnull }
75 e37302c4 2004-04-21 devnull else {
76 e37302c4 2004-04-21 devnull Bprint(&fout,"# define output(c) putc(c,yyout)\n");
77 e37302c4 2004-04-21 devnull Bprint(&fout, "%s%d%s\n",
78 e37302c4 2004-04-21 devnull "# define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==",
79 e37302c4 2004-04-21 devnull '\n',
80 e37302c4 2004-04-21 devnull "?(yylineno++,yytchar):yytchar)==EOF?0:yytchar)");
81 e37302c4 2004-04-21 devnull }
82 e37302c4 2004-04-21 devnull }
83 e37302c4 2004-04-21 devnull
84 e37302c4 2004-04-21 devnull void
85 e37302c4 2004-04-21 devnull phead2(void)
86 e37302c4 2004-04-21 devnull {
87 e3e30cff 2004-08-17 devnull Bprint(&fout,"while((nstr = yylook()) >= 0){\n");
88 e3e30cff 2004-08-17 devnull Bprint(&fout,"goto yyfussy; yyfussy: switch(nstr){\n");
89 e37302c4 2004-04-21 devnull Bprint(&fout,"case 0:\n");
90 e37302c4 2004-04-21 devnull Bprint(&fout,"if(yywrap()) return(0); break;\n");
91 e37302c4 2004-04-21 devnull }
92 e37302c4 2004-04-21 devnull
93 e37302c4 2004-04-21 devnull void
94 e37302c4 2004-04-21 devnull ptail(void)
95 e37302c4 2004-04-21 devnull {
96 e37302c4 2004-04-21 devnull if(!pflag){
97 e37302c4 2004-04-21 devnull Bprint(&fout,"case -1:\nbreak;\n"); /* for reject */
98 e37302c4 2004-04-21 devnull Bprint(&fout,"default:\n");
99 e37302c4 2004-04-21 devnull Bprint(&fout,"fprintf(yyout,\"bad switch yylook %%d\",nstr);\n");
100 e3e30cff 2004-08-17 devnull Bprint(&fout,"}} return(0); }\n");
101 e37302c4 2004-04-21 devnull Bprint(&fout,"/* end of yylex */\n");
102 e37302c4 2004-04-21 devnull }
103 e37302c4 2004-04-21 devnull pflag = 1;
104 e37302c4 2004-04-21 devnull }
105 e37302c4 2004-04-21 devnull
106 e37302c4 2004-04-21 devnull void
107 e37302c4 2004-04-21 devnull statistics(void)
108 e37302c4 2004-04-21 devnull {
109 e37302c4 2004-04-21 devnull fprint(errorf,"%d/%d nodes(%%e), %d/%d positions(%%p), %d/%d (%%n), %ld transitions\n",
110 e37302c4 2004-04-21 devnull tptr, treesize, (int)(nxtpos-positions), maxpos, stnum+1, nstates, rcount);
111 e37302c4 2004-04-21 devnull fprint(errorf, ", %d/%d packed char classes(%%k)", (int)(pcptr-pchar), pchlen);
112 e37302c4 2004-04-21 devnull fprint(errorf,", %d/%d packed transitions(%%a)",nptr, ntrans);
113 e37302c4 2004-04-21 devnull fprint(errorf, ", %d/%d output slots(%%o)", yytop, outsize);
114 e37302c4 2004-04-21 devnull fprint(errorf,"\n");
115 e37302c4 2004-04-21 devnull }