mirror of
https://github.com/9fans/plan9port.git
synced 2025-01-15 11:20:03 +00:00
181 lines
4 KiB
C
181 lines
4 KiB
C
|
# include <u.h>
|
||
|
# include <libc.h>
|
||
|
# include <ctype.h>
|
||
|
# include <bio.h>
|
||
|
# define PP 1
|
||
|
|
||
|
#ifdef NOTDEF
|
||
|
# define CWIDTH 8
|
||
|
# define CMASK 0377
|
||
|
#endif
|
||
|
# 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 *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 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 *);
|