# include <u.h>
# include <libc.h>
# include <ctype.h>
# include <bio.h>
# define PP 1
# define CWIDTH 8
# define CMASK 0377
# define NCH 256
# define TOKENSIZE 1000
# define DEFSIZE 40
# define DEFCHAR 1000
# define STARTCHAR 100
# define STARTSIZE 256
# define CCLSIZE 1000
# define TREESIZE 1000
# define NSTATES 500
# define MAXPOS 2500
# define NTRANS 2000
# define NOUTPUT 5000
# define NACTIONS 100
# define ALITTLEEXTRA 30
# define RCCL NCH+90
# define RNCCL NCH+91
# define RSTR NCH+92
# define RSCON NCH+93
# define RNEWE NCH+94
# define FINAL NCH+95
# define RNULLS NCH+96
# define RCAT NCH+97
# define STAR NCH+98
# define PLUS NCH+99
# define QUEST NCH+100
# define DIV NCH+101
# define BAR NCH+102
# define CARAT NCH+103
# define S1FINAL NCH+104
# define S2FINAL NCH+105
# define DEFSECTION 1
# define RULESECTION 2
# define ENDSECTION 5
# define TRUE 1
# define FALSE 0
# define PC 1
# define PS 1
# ifdef DEBUG
# define LINESIZE 110
extern int yydebug;
extern int debug; /* 1 = on */
extern int charc;
# endif
# ifdef DEBUG
extern int freturn(int);
# else
# define freturn(s) s
# endif
extern int sargc;
extern char **sargv;
extern uchar buf[520];
extern int yyline; /* line number of file */
extern int sect;
extern int eof;
extern int lgatflg;
extern int divflg;
extern int funcflag;
extern int pflag;
extern int casecount;
extern int chset; /* 1 = char set modified */
extern Biobuf *fin, fout, *fother;
extern int foutopen;
extern int errorf;
extern int fptr;
extern char *cname;
extern int prev; /* previous input character */
extern int pres; /* present input character */
extern int peek; /* next input character */
extern int *name;
extern int *left;
extern int *right;
extern int *parent;
extern uchar **ptr;
extern uchar *nullstr;
extern int tptr;
extern uchar pushc[TOKENSIZE];
extern uchar *pushptr;
extern uchar slist[STARTSIZE];
extern uchar *slptr;
extern uchar **def, **subs, *dchar;
extern uchar **sname, *stchar;
extern uchar *ccl;
extern uchar *ccptr;
extern uchar *dp, *sp;
extern int dptr, sptr;
extern uchar *bptr; /* store input position */
extern uchar *tmpstat;
extern int count;
extern int **foll;
extern int *nxtpos;
extern int *positions;
extern int *gotof;
extern int *nexts;
extern uchar *nchar;
extern int **state;
extern int *sfall; /* fallback state num */
extern uchar *cpackflg; /* true if state has been character packed */
extern int *atable, aptr;
extern int nptr;
extern uchar symbol[NCH];
extern uchar cindex[NCH];
extern int xstate;
extern int stnum;
extern int ccount;
extern uchar match[NCH];
extern uchar extra[NACTIONS];
extern uchar *pcptr, *pchar;
extern int pchlen;
extern int nstates, maxpos;
extern int yytop;
extern int report;
extern int ntrans, treesize, outsize;
extern long rcount;
extern int *verify, *advance, *stoff;
extern int scon;
extern uchar *psave;
extern void acompute(int);
extern void add(int **, int);
extern void allprint(int);
extern void cclinter(int);
extern void cgoto(void);
extern void cfoll(int);
extern int cpyact(void);
extern int dupl(int);
extern void error(char *,...);
extern void first(int);
extern void follow(int);
extern int gch(void);
extern uchar *getl(uchar *);
extern void layout(void);
extern void lgate(void);
extern int lookup(uchar *, uchar **);
extern int member(int, uchar *);
extern void mkmatch(void);
extern int mn0(int);
extern int mn1(int, int);
extern int mnp(int, void*);
extern int mn2(int, int, int);
extern void munputc(int);
extern void munputs(uchar *);
extern void *myalloc(int, int);
extern void nextstate(int, int);
extern int notin(int);
extern void packtrans(int, uchar *, int *, int, int);
extern void padd(int **, int);
extern void pccl(void);
extern void pfoll(void);
extern void phead1(void);
extern void phead2(void);
extern void pstate(int);
extern void ptail(void);
extern void sect1dump(void);
extern void sect2dump(void);
extern void statistics(void);
extern void stprt(int);
extern void strpt(uchar *);
extern void treedump(void);
extern int usescape(int);
extern void warning(char *,...);
extern int yyparse(void);
extern void yyerror(char *);
|