/* $Id$ */ #ifdef LL_DEBUG #include #include #define LL_assert(x) assert(x) #else #define LL_assert(x) /* nothing */ #endif extern int LLsymb; #define LL_SAFE(x) /* Nothing */ #define LL_SSCANDONE(x) if (LLsymb != x) LLsafeerror(x) #define LL_SCANDONE(x) if (LLsymb != x) LLerror(x) #define LL_NOSCANDONE(x) LLscan(x) #ifdef LL_FASTER #define LLscan(x) if ((LLsymb = LL_LEXI()) != x) LLerror(x) #endif extern unsigned int LLscnt[]; extern unsigned int LLtcnt[]; extern int LLcsymb; #define LLsdecr(d) {LL_assert(LLscnt[d] > 0); LLscnt[d]--;} #define LLtdecr(d) {LL_assert(LLtcnt[d] > 0); LLtcnt[d]--;} #define LLsincr(d) LLscnt[d]++ #define LLtincr(d) LLtcnt[d]++ #if LL_ANSI_C extern int LL_LEXI(void); extern void LLread(void); extern int LLskip(void); extern int LLnext(int); extern void LLerror(int); extern void LLsafeerror(int); extern void LLnewlevel(unsigned int *); extern void LLoldlevel(unsigned int *); #ifndef LL_FASTER extern void LLscan(int); #endif #ifndef LLNOFIRSTS extern int LLfirst(int, int); #endif #else /* not LL_ANSI_C */ extern LLread(); extern int LLskip(); extern int LLnext(); extern LLerror(); extern LLsafeerror(); extern LLnewlevel(); extern LLoldlevel(); #ifndef LL_FASTER extern LLscan(); #endif #ifndef LLNOFIRSTS extern int LLfirst(); #endif #endif /* not LL_ANSI_C */