#ifndef _DEXTERN_H
#define _DEXTERN_H
#include <stdio.h>
#include <inttypes.h>
#include <ctype.h>
#include <memory.h>
#include <string.h>
#include <malloc.h>
#include <values.h>
#include <widec.h>
#include <unistd.h>
#include <stdlib.h>
#include <wctype.h>
#ifdef __cplusplus
extern "C" {
#endif
#if u3b || u3b15 || u3b2 || vax || uts || sparc
#define WORD32
#endif
#include <libintl.h>
#define NTBASE (10000000)
#define ERRCODE 8190
#define ACCEPTCODE 8191
#define ACTSIZE 4000
#define MEMSIZE 2000
#define PSTSIZE 1024
#define NSTATES 1000
#define NTERMS 127
#define NPROD 300
#define NNONTERM 600
#define TEMPSIZE 800
#define CNAMSZ 1000
#define LSETSIZE 950
#define WSETSIZE 850
#define NAMESIZE 50
#define NTYPES 1000
#define NMBCHARSZ 100
#define LKFACTOR 5
#ifdef WORD32
#define BIT(a, i) ((a)[(i)>>5] & (1<<((i)&037)))
#define SETBIT(a, i) ((a)[(i)>>5] |= (1<<((i)&037)))
#define NWORDS(n) (((n)+32)/32)
#else
#define BIT(a, i) ((a)[(i)>>4] & (1<<((i)&017)))
#define SETBIT(a, i) ((a)[(i)>>4] |= (1<<((i)&017)))
#define NWORDS(n) (((n)+16)/16)
#endif
#define NOASC 0
#define LASC 1
#define RASC 2
#define BASC 3
#define DONE 0
#define MUSTDO 1
#define MUSTLOOKAHEAD 2
#define ACTFLAG 04
#define REDFLAG 010
#define YYFLAG1 (-10000000)
#define ASSOC(i) ((i)&07)
#define PLEVEL(i) (((i)>>4)&077)
#define TYPE(i) ((i>>10)&077)
#define SETASC(i, j) i |= j
#define SETPLEV(i, j) i |= (j<<4)
#define SETTYPE(i, j) i |= (j<<10)
#define TLOOP(i) for (i = 1; i <= ntokens; ++i)
#define NTLOOP(i) for (i = 0; i <= nnonter; ++i)
#define PLOOP(s, i) for (i = s; i < nprod; ++i)
#define SLOOP(i) for (i = 0; i < nstate; ++i)
#define WSBUMP(x) ++x
#define WSLOOP(s, j) for (j = s; j < &wsets[cwp]; ++j)
#define ITMLOOP(i, p, q) q = pstate[i+1]; for (p = pstate[i]; p < q; ++p)
#define SETLOOP(i) for (i = 0; i < tbitset; ++i)
extern FILE *finput;
extern FILE *faction;
extern FILE *fdefine;
extern FILE *ftable;
extern FILE *ftemp;
extern FILE *fdebug;
extern FILE *foutput;
typedef struct looksets {
int *lset;
} LOOKSETS;
typedef struct item {
int *pitem;
LOOKSETS *look;
} ITEM;
typedef struct toksymb {
wchar_t *name;
int value;
} TOKSYMB;
typedef struct mbclit {
wchar_t character;
int tvalue;
} MBCLIT;
typedef struct ntsymb {
wchar_t *name;
int tvalue;
} NTSYMB;
typedef struct wset {
int *pitem;
int flag;
LOOKSETS ws;
} WSET;
extern int ntokens;
extern TOKSYMB *tokset;
extern int ntoksz;
extern int nmbchars;
extern MBCLIT *mbchars;
extern int nmbcharsz;
extern int nnonter;
extern NTSYMB *nontrst;
extern int nnontersz;
extern int nprod;
extern int **prdptr;
extern int *levprd;
extern wchar_t *had_act;
extern int nstate;
extern ITEM **pstate;
extern int *tystate;
extern int *defact;
extern int size;
extern int TBITSET;
extern LOOKSETS *lkst;
extern int nolook;
extern WSET *wsets;
extern int *mem0;
extern int *mem;
extern int *tracemem;
extern int new_memsize;
extern int *amem;
extern int *memp;
extern int *indgo;
extern int new_actsize;
extern int *temp1;
extern int lineno;
extern int zzgoent;
extern int zzgobest;
extern int zzacent;
extern int zzexcp;
extern int zzrrconf;
extern int zzsrconf;
extern void setup(int, char *[]);
extern void closure(int);
extern void output(void);
extern void aryfil(int *, int, int);
extern void error(char *, ...);
extern void warning(int, char *, ...);
extern void putitem(int *, LOOKSETS *);
extern void go2out(void);
extern void hideprod(void);
extern void callopt(void);
extern void warray(wchar_t *, int *, int);
extern wchar_t *symnam(int);
extern wchar_t *writem(int *);
extern void exp_mem(int);
extern void exp_act(int **);
extern int apack(int *, int);
extern int state(int);
extern void fprintf3(FILE *, const char *, const wchar_t *, const char *, ...);
extern void error3(const char *, const wchar_t *, const char *, ...);
extern wchar_t *wscpy(wchar_t *, const wchar_t *);
extern size_t wslen(const wchar_t *);
extern int wscmp(const wchar_t *, const wchar_t *);
extern char *parser;
#ifndef TEMPNAME
#define TEMPNAME "yacc.tmp"
#endif
#ifndef ACTNAME
#define ACTNAME "yacc.acts"
#endif
#ifndef DEBUGNAME
#define DEBUGNAME "yacc.debug"
#endif
#ifndef ZAPFILE
#define ZAPFILE(x) (void)unlink(x)
#endif
#ifndef PARSER
#define PARSER "/usr/share/lib/ccs/yaccpar"
#endif
#ifdef __cplusplus
}
#endif
#endif