Blob


1 # include <u.h>
2 # include <libc.h>
3 # include <ctype.h>
4 # include <bio.h>
5 # define PP 1
7 #ifdef NOTDEF
8 # define CWIDTH 8
9 # define CMASK 0377
10 #endif
11 # define NCH 256
14 # define TOKENSIZE 1000
15 # define DEFSIZE 40
16 # define DEFCHAR 1000
17 # define STARTCHAR 100
18 # define STARTSIZE 256
19 # define CCLSIZE 1000
21 # define TREESIZE 1000
22 # define NSTATES 500
23 # define MAXPOS 2500
24 # define NTRANS 2000
25 # define NOUTPUT 5000
27 # define NACTIONS 100
28 # define ALITTLEEXTRA 30
30 # define RCCL NCH+90
31 # define RNCCL NCH+91
32 # define RSTR NCH+92
33 # define RSCON NCH+93
34 # define RNEWE NCH+94
35 # define FINAL NCH+95
36 # define RNULLS NCH+96
37 # define RCAT NCH+97
38 # define STAR NCH+98
39 # define PLUS NCH+99
40 # define QUEST NCH+100
41 # define DIV NCH+101
42 # define BAR NCH+102
43 # define CARAT NCH+103
44 # define S1FINAL NCH+104
45 # define S2FINAL NCH+105
47 # define DEFSECTION 1
48 # define RULESECTION 2
49 # define ENDSECTION 5
50 # define TRUE 1
51 # define FALSE 0
53 # define PC 1
54 # define PS 1
56 # ifdef DEBUG
57 # define LINESIZE 110
58 extern int yydebug;
59 extern int debug; /* 1 = on */
60 extern int charc;
61 # endif
63 # ifdef DEBUG
64 extern int freturn(int);
65 # else
66 # define freturn(s) s
67 # endif
69 extern int sargc;
70 extern char **sargv;
71 extern uchar buf[520];
72 extern int yyline; /* line number of file */
73 extern int sect;
74 extern int eof;
75 extern int lgatflg;
76 extern int divflg;
77 extern int funcflag;
78 extern int pflag;
79 extern int casecount;
80 extern int chset; /* 1 = char set modified */
81 extern Biobuf *fin, fout, *fother;
82 extern int foutopen;
83 extern int errorf;
84 extern int fptr;
85 extern char *cname;
86 extern int prev; /* previous input character */
87 extern int pres; /* present input character */
88 extern int peek; /* next input character */
89 extern int *name;
90 extern int *left;
91 extern uintptr *right;
92 extern int *parent;
93 extern uchar **ptr;
94 extern uchar *nullstr;
95 extern int tptr;
96 extern uchar pushc[TOKENSIZE];
97 extern uchar *pushptr;
98 extern uchar slist[STARTSIZE];
99 extern uchar *slptr;
100 extern uchar **def, **subs, *dchar;
101 extern uchar **sname, *stchar;
102 extern uchar *ccl;
103 extern uchar *ccptr;
104 extern uchar *dp, *sp;
105 extern int dptr, sptr;
106 extern uchar *bptr; /* store input position */
107 extern uchar *tmpstat;
108 extern int count;
109 extern int **foll;
110 extern int *nxtpos;
111 extern int *positions;
112 extern int *gotof;
113 extern int *nexts;
114 extern uchar *nchar;
115 extern int **state;
116 extern int *sfall; /* fallback state num */
117 extern uchar *cpackflg; /* true if state has been character packed */
118 extern int *atable, aptr;
119 extern int nptr;
120 extern uchar symbol[NCH];
121 extern uchar cindex[NCH];
122 extern int xstate;
123 extern int stnum;
124 extern int ccount;
125 extern uchar match[NCH];
126 extern uchar extra[NACTIONS];
127 extern uchar *pcptr, *pchar;
128 extern int pchlen;
129 extern int nstates, maxpos;
130 extern int yytop;
131 extern int report;
132 extern int ntrans, treesize, outsize;
133 extern long rcount;
134 extern int *verify, *advance, *stoff;
135 extern int scon;
136 extern uchar *psave;
138 extern void acompute(int);
139 extern void add(int **, int);
140 extern void allprint(int);
141 extern void cclinter(int);
142 extern void cgoto(void);
143 extern void cfoll(int);
144 extern int cpyact(void);
145 extern int dupl(int);
146 extern void error(char *,...);
147 extern void first(int);
148 extern void follow(int);
149 extern int gch(void);
150 extern uchar *getl(uchar *);
151 extern void layout(void);
152 extern void lgate(void);
153 extern int lookup(uchar *, uchar **);
154 extern int member(int, uchar *);
155 extern void mkmatch(void);
156 extern int mnp(int, void*);
157 extern int mn0(int);
158 extern int mn1(int, int);
159 extern int mn2(int, int, uintptr);
160 extern void munputc(int);
161 extern void munputs(uchar *);
162 extern void *myalloc(int, int);
163 extern void nextstate(int, int);
164 extern int notin(int);
165 extern void packtrans(int, uchar *, int *, int, int);
166 extern void padd(int **, int);
167 extern void pccl(void);
168 extern void pfoll(void);
169 extern void phead1(void);
170 extern void phead2(void);
171 extern void pstate(int);
172 extern void ptail(void);
173 extern void sect1dump(void);
174 extern void sect2dump(void);
175 extern void statistics(void);
176 extern void stprt(int);
177 extern void strpt(uchar *);
178 extern void treedump(void);
179 extern int usescape(int);
180 extern void warning(char *,...);
181 extern int yyparse(void);
182 extern void yyerror(char *);