4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * err.h
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * Standard error handling mechanism
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * SOFTWARE RIGHTS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * We reserve no LEGAL rights to the Purdue Compiler Construction Tool
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * Set (PCCTS) -- PCCTS is in the public domain. An individual or
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * company may do whatever they wish with source code distributed with
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * PCCTS or the code generated by PCCTS, including the incorporation of
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * PCCTS, or its output, into commerical software.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * We encourage users to develop software with PCCTS. However, we do ask
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * that credit is given to us for developing PCCTS. By "credit",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * we mean that if you incorporate our source code into one of your
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * programs (commercial product, research project, or otherwise) that you
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * acknowledge this fact somewhere in the documentation, research report,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * etc... If you like PCCTS and have developed a nice tool with the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * output, please mention that you developed it using PCCTS. In
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * addition, we ask that this header remain intact in our source code.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * As long as these guidelines are kept, we expect to continue enhancing
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * this system and expect to make other tools available as they are
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * completed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * Has grown to hold all kinds of stuff (err.h is increasingly misnamed)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * ANTLR 1.33
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * Terence Parr
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * Parr Research Corporation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * with Purdue University and AHPCRC, University of Minnesota
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * 1989-2000
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifndef ERR_H
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ERR_H
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include "pcctscfg.h"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <stdlib.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <assert.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/* */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/* 7-Apr-97 133MR1 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/* Proper choice of STDC and cplusplus pre-processor symbols (?) */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/* */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include "pccts_string.h"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef PCCTS_USE_STDARG
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include "pccts_stdarg.h"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <varargs.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef DUM
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/* Define usable bits per unsigned int word (used for set stuff) */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef PC
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define BSETWORDSIZE 16
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define BSETLOGWORDSIZE 4
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define BSETWORDSIZE 32
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define BSETLOGWORDSIZE 5
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define BSETWORDSIZE 8
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define BSETLOGWORDSIZE 3 /* SetWordType is 8bits */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define BSETMODWORD(x) ((x) & (BSETWORDSIZE-1)) /* x % BSETWORDSIZE */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define BSETDIVWORD(x) ((x) >> BSETLOGWORDSIZE) /* x / BSETWORDSIZE */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/* This is not put into the global pccts_parser structure because it is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * hidden and does not need to be saved during a "save state" operation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/* maximum of 32 bits/unsigned int and must be 8 bits/byte */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstatic SetWordType bitmask[] = {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync 0x00000001, 0x00000002, 0x00000004, 0x00000008,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync 0x00000010, 0x00000020, 0x00000040, 0x00000080
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync};
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef zzTRACE_RULES
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint zzTraceOptionValueDefault=1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint zzTraceOptionValue=1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint zzTraceGuessOptionValue=1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncchar *zzTraceCurrentRuleName=NULL;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint zzTraceDepth=0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint zzGuessSeq=0; /* MR10 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint zzSyntaxErrCount=0; /* MR11 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint zzLexErrCount=0; /* MR11 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __USE_PROTOS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynczzresynch(SetWordType *wd,SetWordType mask)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynczzresynch(wd,mask)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncSetWordType *wd, mask;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync static int consumed = 1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /* if you enter here without having consumed a token from last resynch
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * force a token consumption.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( !consumed ) {zzCONSUME; consumed=1; return;} /* MR10 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /* if current token is in resynch set, we've got what we wanted */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( wd[LA(1)]&mask || LA(1) == zzEOF_TOKEN ) {consumed=0; return;}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /* scan until we find something in the resynch set */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync while ( !(wd[LA(1)]&mask) && LA(1) != zzEOF_TOKEN ) {zzCONSUME;}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync consumed=1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/* */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/* 7-Apr-97 133MR1 for C++ and MR7 for C */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/* Change suggested by Eli Sternheim (eli@interhdl.com) */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/* */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __USE_PROTOS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynczzconsumeUntil(SetWordType *st)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynczzconsumeUntil(st)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncSetWordType *st;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int tmp; /* MR7 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync while ( !zzset_el( (tmp=LA(1)), st) && tmp!=1 /* Eof */) { /* MR7 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzCONSUME; } /* MR7 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/* */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/* 7-Apr-97 133MR1 for C++ and MR7 for C */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/* Change suggested by Eli Sternheim (eli@interhdl.com) */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/* */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __USE_PROTOS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynczzconsumeUntilToken(int t)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynczzconsumeUntilToken(t)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint t;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int tmp; /* MR7 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync while ( (tmp=LA(1)) !=t && tmp!=1 /* Eof */) { zzCONSUME; } /* MR7 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/* input looks like:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * zzFAIL(k, e1, e2, ...,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * where the zzMiss stuff is set here to the token that did not match
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * (and which set wasn't it a member of).
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef PCCTS_USE_STDARG
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid zzFAIL(int k, ...)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid zzFAIL(va_alist)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncva_dcl
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef LL_K
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync static char text[LL_K*ZZLEXBUFSIZE+1];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SetWordType *f[LL_K];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync static char text[ZZLEXBUFSIZE+1];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SetWordType *f[1];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SetWordType **miss_set;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char **miss_text;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int *bad_tok;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char **bad_text;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int *err_k;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int i;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync va_list ap;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifndef PCCTS_USE_STDARG /* MR20 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int k;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef PCCTS_USE_STDARG /* MR20 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync va_start(ap, k);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync va_start(ap);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync k = va_arg(ap, int); /* how many lookahead sets? */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync assert(k <= sizeof(f)/sizeof(f[0])); /* MR20 G. Hobbelt */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync text[0] = '\0';
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for (i=1; i<=k; i++) /* collect all lookahead sets */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync f[i-1] = va_arg(ap, SetWordType *);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for (i=1; i<=k; i++) /* look for offending token */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( i>1 ) strcat(text, " ");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync strcat(text, LATEXT(i));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( !zzset_el((unsigned)LA(i), f[i-1]) ) break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync miss_set = va_arg(ap, SetWordType **);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync miss_text = va_arg(ap, char **);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync bad_tok = va_arg(ap, int *);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync bad_text = va_arg(ap, char **);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync err_k = va_arg(ap, int *);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( i>k )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /* bad; lookahead is permutation that cannot be matched,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * but, the ith token of lookahead is valid at the ith position
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * (The old LL sub 1 (k) versus LL(k) parsing technique)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *miss_set = NULL;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *miss_text = zzlextext;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *bad_tok = LA(1);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *bad_text = LATEXT(1);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *err_k = k;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/* fprintf(stderr, "%s not in %dth set\n", zztokens[LA(i)], i);*/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *miss_set = f[i-1];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *miss_text = text;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *bad_tok = LA(i);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *bad_text = LATEXT(i);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( i==1 ) *err_k = 1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync else *err_k = k;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __USE_PROTOS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid zzTraceGuessDone(zzantlr_state *state)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid zzTraceGuessDone(state)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzantlr_state *state;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef zzTRACE_RULES
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef ZZCAN_GUESS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int doIt=0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (zzTraceCurrentRuleName == NULL) return;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (zzTraceOptionValue <= 0) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync doIt=0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else if (zzTraceGuessOptionValue <= 0) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync doIt=0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync doIt=1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync };
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (doIt) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fprintf(stderr,"guess done - returning to rule %s {\"%s\"} at depth %d",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync state->traceCurrentRuleName,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LATEXT(1),
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync state->traceDepth);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (state->guessing != 0) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fprintf(stderr," (guess mode continues - an enclosing guess is still active)");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fprintf(stderr," (guess mode ends)");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync };
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fprintf(stderr,"\n");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync };
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __USE_PROTOS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynczzsave_antlr_state(zzantlr_state *buf)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynczzsave_antlr_state(buf)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynczzantlr_state *buf;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef LL_K
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int i;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef ZZCAN_GUESS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync buf->guess_start = zzguess_start;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync buf->guessing = zzguessing;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync buf->asp = zzasp;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef GENAST
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync buf->ast_sp = zzast_sp;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef ZZINF_LOOK
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync buf->inf_labase = zzinf_labase;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync buf->inf_last = zzinf_last;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/* MR6 Gunnar Rxnning (gunnar@candleweb.no) */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/* MR6 Additional state needs to be saved/restored */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync buf->inf_tokens = zzinf_tokens; /* MR6 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync buf->inf_text = zzinf_text; /* MR6 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync buf->inf_text_buffer = zzinf_text_buffer; /* MR6 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync buf->inf_line = zzinf_line; /* MR6 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef DEMAND_LOOK
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync buf->dirty = zzdirty;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef LL_K
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for (i=0; i<LL_K; i++) buf->tokenLA[i] = zztokenLA[i];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for (i=0; i<LL_K; i++) strcpy(buf->textLA[i], zztextLA[i]);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync buf->lap = zzlap;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync buf->labase = zzlabase;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync buf->token = zztoken;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync strcpy(buf->text, zzlextext);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef zzTRACE_RULES
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /* MR10 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync buf->traceOptionValue=zzTraceOptionValue;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync buf->traceGuessOptionValue=zzTraceGuessOptionValue;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync buf->traceCurrentRuleName=zzTraceCurrentRuleName;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync buf->traceDepth=zzTraceDepth;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __USE_PROTOS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynczzrestore_antlr_state(zzantlr_state *buf)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynczzrestore_antlr_state(buf)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynczzantlr_state *buf;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef zzTRACE_RULES
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int prevTraceOptionValue;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef LL_K
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int i;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef ZZCAN_GUESS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzguess_start = buf->guess_start;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzguessing = buf->guessing;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzasp = buf->asp;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef GENAST
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzast_sp = buf->ast_sp;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef ZZINF_LOOK
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_labase = buf->inf_labase;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_last = buf->inf_last;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/* MR6 Gunnar Rxnning (gunnar@candleweb.no) */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/* MR6 Additional state needs to be saved/restored */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_tokens = buf->inf_tokens; /* MR6 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_text = buf->inf_text; /* MR6 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_text_buffer = buf->inf_text_buffer; /* MR6 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_line = buf->inf_line; /* MR6 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef DEMAND_LOOK
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzdirty = buf->dirty;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef LL_K
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for (i=0; i<LL_K; i++) zztokenLA[i] = buf->tokenLA[i];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for (i=0; i<LL_K; i++) strcpy(zztextLA[i], buf->textLA[i]);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzlap = buf->lap;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzlabase = buf->labase;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zztoken = buf->token;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync strcpy(zzlextext, buf->text);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef zzTRACE_RULES
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync prevTraceOptionValue=zzTraceOptionValue;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzTraceOptionValue=buf->traceOptionValue;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( (prevTraceOptionValue > 0) !=
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync (zzTraceOptionValue > 0)) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (zzTraceOptionValue > 0) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fprintf(stderr,"trace enable restored in rule %s depth %d\n",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzTraceCurrentRuleName,zzTraceDepth);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync };
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (zzTraceOptionValue <= 0) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fprintf(stderr,"trace disable restored in rule %s depth %d\n",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzTraceCurrentRuleName,zzTraceDepth);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync };
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync };
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzTraceOptionValue=buf->traceOptionValue; /* MR10 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzTraceGuessOptionValue=buf->traceGuessOptionValue; /* MR10 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzTraceCurrentRuleName=buf->traceCurrentRuleName; /* MR10 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzTraceDepth=buf->traceDepth; /* MR10 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzTraceGuessDone(buf); /* MR10 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __USE_PROTOS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynczzedecode(SetWordType *a)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynczzedecode(a)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncSetWordType *a;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync register SetWordType *p = a;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync register SetWordType *endp = &(p[zzSET_SIZE]);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync register unsigned e = 0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( zzset_deg(a)>1 ) fprintf(stderr, " {");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync do {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync register SetWordType t = *p;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync register SetWordType *b = &(bitmask[0]);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync do {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( t & *b ) fprintf(stderr, " %s", zztokens[e]);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync e++;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } while (++b < &(bitmask[sizeof(SetWordType)*8]));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } while (++p < endp);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( zzset_deg(a)>1 ) fprintf(stderr, " }");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifndef USER_ZZSYN
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/* standard error reporting function */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __USE_PROTOS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynczzsyn(char *text, int tok, char *egroup, SetWordType *eset, int etok, int k, char *bad_text)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynczzsyn(text, tok, egroup, eset, etok, k, bad_text)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncchar *text, *egroup, *bad_text;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint tok;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint etok;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint k;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncSetWordType *eset;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzSyntaxErrCount++; /* MR11 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fprintf(stderr, "line %d: syntax error at \"%s\"", zzline, (tok==zzEOF_TOKEN)?"EOF":bad_text);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( !etok && !eset ) {fprintf(stderr, "\n"); return;}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( k==1 ) fprintf(stderr, " missing");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fprintf(stderr, "; \"%s\" not", bad_text);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( zzset_deg(eset)>1 ) fprintf(stderr, " in");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( zzset_deg(eset)>0 ) zzedecode(eset);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync else fprintf(stderr, " %s", zztokens[etok]);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( strlen(egroup) > 0 ) fprintf(stderr, " in %s", egroup);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fprintf(stderr, "\n");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/* is b an element of set p? */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __USE_PROTOS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynczzset_el(unsigned b, SetWordType *p)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynczzset_el(b,p)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncunsigned b;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncSetWordType *p;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return( p[BSETDIVWORD(b)] & bitmask[BSETMODWORD(b)] );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __USE_PROTOS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynczzset_deg(SetWordType *a)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynczzset_deg(a)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncSetWordType *a;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /* Fast compute degree of a set... the number
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of elements present in the set. Assumes
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync that all word bits are used in the set
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync register SetWordType *p = a;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync register SetWordType *endp = &(a[zzSET_SIZE]);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync register int degree = 0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( a == NULL ) return 0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync while ( p < endp )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync register SetWordType t = *p;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync register SetWordType *b = &(bitmask[0]);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync do {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (t & *b) ++degree;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } while (++b < &(bitmask[sizeof(SetWordType)*8]));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync p++;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return(degree);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef DEMAND_LOOK
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef LL_K
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __USE_PROTOS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync_zzmatch(int _t, char **zzBadText, char **zzMissText,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int *zzMissTok, int *zzBadTok,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SetWordType **zzMissSet)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync_zzmatch(_t, zzBadText, zzMissText, zzMissTok, zzBadTok, zzMissSet)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint _t;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncchar **zzBadText;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncchar **zzMissText;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint *zzMissTok, *zzBadTok;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncSetWordType **zzMissSet;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( zzdirty==LL_K ) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzCONSUME;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( LA(1)!=_t ) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *zzBadText = *zzMissText=LATEXT(1);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *zzMissTok= _t; *zzBadTok=LA(1);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *zzMissSet=NULL;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return 0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzMakeAttr
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzdirty++;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzlabase++;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return 1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __USE_PROTOS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync_zzmatch_wsig(int _t)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync_zzmatch_wsig(_t)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint _t;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( zzdirty==LL_K ) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzCONSUME;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( LA(1)!=_t ) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return 0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzMakeAttr
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzdirty++;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzlabase++;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return 1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __USE_PROTOS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync_zzmatch(int _t, char **zzBadText, char **zzMissText,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int *zzMissTok, int *zzBadTok, SetWordType **zzMissSet)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync_zzmatch(_t, zzBadText, zzMissText, zzMissTok, zzBadTok, zzMissSet)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint _t;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncchar **zzBadText;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncchar **zzMissText;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint *zzMissTok, *zzBadTok;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncSetWordType **zzMissSet;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( zzdirty ) {zzCONSUME;}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( LA(1)!=_t ) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *zzBadText = *zzMissText=LATEXT(1);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *zzMissTok= _t; *zzBadTok=LA(1);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *zzMissSet=NULL;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return 0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzdirty = 1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzMakeAttr
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return 1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __USE_PROTOS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync_zzmatch_wsig(int _t)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync_zzmatch_wsig(_t)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint _t;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( zzdirty ) {zzCONSUME;}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( LA(1)!=_t ) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return 0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzdirty = 1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzMakeAttr
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return 1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif /*LL_K*/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __USE_PROTOS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync_zzmatch(int _t, char **zzBadText, char **zzMissText,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int *zzMissTok, int *zzBadTok,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SetWordType **zzMissSet)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync_zzmatch(_t, zzBadText, zzMissText, zzMissTok, zzBadTok, zzMissSet)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint _t;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncchar **zzBadText;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncchar **zzMissText;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint *zzMissTok, *zzBadTok;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncSetWordType **zzMissSet;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( LA(1)!=_t ) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *zzBadText = *zzMissText=LATEXT(1);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *zzMissTok= _t; *zzBadTok=LA(1);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *zzMissSet=NULL;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return 0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzMakeAttr
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return 1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __USE_PROTOS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync_zzmatch_wsig(int _t)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync_zzmatch_wsig(_t)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint _t;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( LA(1)!=_t ) return 0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzMakeAttr
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return 1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif /*DEMAND_LOOK*/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef ZZINF_LOOK
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __USE_PROTOS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync_inf_zzgettok(void)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync_inf_zzgettok()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( zzinf_labase >= zzinf_last )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {NLA = zzEOF_TOKEN; strcpy(NLATEXT, "");}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync else {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync NLA = zzinf_tokens[zzinf_labase];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzline = zzinf_line[zzinf_labase]; /* wrong in 1.21 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync strcpy(NLATEXT, zzinf_text[zzinf_labase]);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_labase++;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef ZZINF_LOOK
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/* allocate default size text,token and line arrays;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * then, read all of the input reallocing the arrays as needed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * Once the number of total tokens is known, the LATEXT(i) array (zzinf_text)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * is allocated and it's pointers are set to the tokens in zzinf_text_buffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __USE_PROTOS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynczzfill_inf_look(void)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynczzfill_inf_look()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int tok, line;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int zzinf_token_buffer_size = ZZINF_DEF_TOKEN_BUFFER_SIZE;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int zzinf_text_buffer_size = ZZINF_DEF_TEXT_BUFFER_SIZE;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int zzinf_text_buffer_index = 0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int zzinf_lap = 0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /* allocate text/token buffers */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_text_buffer = (char *) malloc(zzinf_text_buffer_size);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( zzinf_text_buffer == NULL )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fprintf(stderr, "cannot allocate lookahead text buffer (%d bytes)\n",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_text_buffer_size);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync exit(PCCTS_EXIT_FAILURE);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_tokens = (int *) calloc(zzinf_token_buffer_size,sizeof(int));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( zzinf_tokens == NULL )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fprintf(stderr, "cannot allocate token buffer (%d tokens)\n",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_token_buffer_size);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync exit(PCCTS_EXIT_FAILURE);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_line = (int *) calloc(zzinf_token_buffer_size,sizeof(int));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( zzinf_line == NULL )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fprintf(stderr, "cannot allocate line buffer (%d ints)\n",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_token_buffer_size);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync exit(PCCTS_EXIT_FAILURE);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /* get tokens, copying text to text buffer */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_text_buffer_index = 0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync do {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzgettok();
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync line = zzreal_line;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync while ( zzinf_lap>=zzinf_token_buffer_size )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_token_buffer_size += ZZINF_BUFFER_TOKEN_CHUNK_SIZE;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_tokens = (int *) realloc(zzinf_tokens,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_token_buffer_size*sizeof(int));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( zzinf_tokens == NULL )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fprintf(stderr, "cannot allocate lookahead token buffer (%d tokens)\n",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_token_buffer_size);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync exit(PCCTS_EXIT_FAILURE);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_line = (int *) realloc(zzinf_line,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_token_buffer_size*sizeof(int));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( zzinf_line == NULL )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fprintf(stderr, "cannot allocate lookahead line buffer (%d ints)\n",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_token_buffer_size);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync exit(PCCTS_EXIT_FAILURE);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync while ( (zzinf_text_buffer_index+strlen(NLATEXT)+1) >= zzinf_text_buffer_size )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_text_buffer_size += ZZINF_BUFFER_TEXT_CHUNK_SIZE;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_text_buffer = (char *) realloc(zzinf_text_buffer,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_text_buffer_size);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( zzinf_text_buffer == NULL )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fprintf(stderr, "cannot allocate lookahead text buffer (%d bytes)\n",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_text_buffer_size);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync exit(PCCTS_EXIT_FAILURE);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /* record token and text and line of input symbol */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync tok = zzinf_tokens[zzinf_lap] = NLA;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync strcpy(&zzinf_text_buffer[zzinf_text_buffer_index], NLATEXT);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_text_buffer_index += strlen(NLATEXT)+1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_line[zzinf_lap] = line;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_lap++;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } while (tok!=zzEOF_TOKEN);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_labase = 0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_last = zzinf_lap-1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /* allocate ptrs to text of ith token */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_text = (char **) calloc(zzinf_last+1,sizeof(char *));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( zzinf_text == NULL )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fprintf(stderr, "cannot allocate lookahead text buffer (%d)\n",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_text_buffer_size);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync exit(PCCTS_EXIT_FAILURE);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_text_buffer_index = 0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_lap = 0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /* set ptrs so that zzinf_text[i] is the text of the ith token found on input */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync while (zzinf_lap<=zzinf_last)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_text[zzinf_lap++] = &zzinf_text_buffer[zzinf_text_buffer_index];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzinf_text_buffer_index += strlen(&zzinf_text_buffer[zzinf_text_buffer_index])+1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __USE_PROTOS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync_zzsetmatch(SetWordType *e, char **zzBadText, char **zzMissText,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int *zzMissTok, int *zzBadTok,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SetWordType **zzMissSet,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SetWordType *zzTokclassErrset /* MR23 */)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync_zzsetmatch(e, zzBadText, zzMissText, zzMissTok, zzBadTok, zzMissSet, zzTokclassErrset /* MR23 */)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncSetWordType *e;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncchar **zzBadText;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncchar **zzMissText;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint *zzMissTok, *zzBadTok;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncSetWordType **zzMissSet;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncSetWordType *zzTokclassErrset;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef DEMAND_LOOK
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef LL_K
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( zzdirty==LL_K ) {zzCONSUME;}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( zzdirty ) {zzCONSUME;}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( !zzset_el((unsigned)LA(1), e) ) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *zzBadText = LATEXT(1); *zzMissText=NULL;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *zzMissTok= 0; *zzBadTok=LA(1);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *zzMissSet=zzTokclassErrset; /* MR23 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return 0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzMakeAttr /* MR14 Ger Hobbelt (hobbelt@axa.nl) */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef DEMAND_LOOK
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef LL_K
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzdirty++;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzlabase++; /* MR14 Ger Hobbelt (hobbelt@axa.nl) */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzdirty = 1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return 1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __USE_PROTOS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync_zzmatch_wdfltsig(int tokenWanted, SetWordType *whatFollows)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync_zzmatch_wdfltsig(tokenWanted, whatFollows)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint tokenWanted;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncSetWordType *whatFollows;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef DEMAND_LOOK
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef LL_K
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( zzdirty==LL_K ) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzCONSUME;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( zzdirty ) {zzCONSUME;}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( LA(1)!=tokenWanted )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzSyntaxErrCount++; /* MR11 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fprintf(stderr,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "line %d: syntax error at \"%s\" missing %s\n",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzline,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync (LA(1)==zzEOF_TOKEN)?"<eof>":(char *)LATEXT(1),
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zztokens[tokenWanted]);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzconsumeUntil( whatFollows );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return 0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync else {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzMakeAttr
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef DEMAND_LOOK
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef LL_K
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzdirty++;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzlabase++;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzdirty = 1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/* zzCONSUME; consume if not demand lookahead */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return 1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __USE_PROTOS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync_zzsetmatch_wdfltsig(SetWordType *tokensWanted,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int tokenTypeOfSet,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SetWordType *whatFollows)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync_zzsetmatch_wdfltsig(tokensWanted, tokenTypeOfSet, whatFollows)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncSetWordType *tokensWanted;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint tokenTypeOfSet;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncSetWordType *whatFollows;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef DEMAND_LOOK
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef LL_K
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( zzdirty==LL_K ) {zzCONSUME;}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( zzdirty ) {zzCONSUME;}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( !zzset_el((unsigned)LA(1), tokensWanted) )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzSyntaxErrCount++; /* MR11 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fprintf(stderr,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "line %d: syntax error at \"%s\" missing %s\n",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzline,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync (LA(1)==zzEOF_TOKEN)?"<eof>":(char *)LATEXT(1),
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zztokens[tokenTypeOfSet]);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzconsumeUntil( whatFollows );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return 0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync else {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzMakeAttr
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef DEMAND_LOOK
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef LL_K
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzdirty++;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzlabase++;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzdirty = 1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/* zzCONSUME; consume if not demand lookahead */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return 1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __USE_PROTOS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync_zzsetmatch_wsig(SetWordType *e)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync_zzsetmatch_wsig(e)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncSetWordType *e;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef DEMAND_LOOK
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef LL_K
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( zzdirty==LL_K ) {zzCONSUME;}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( zzdirty ) {zzCONSUME;}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ( !zzset_el((unsigned)LA(1), e) ) return 0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzMakeAttr /* MR14 Ger Hobbelt (hobbelt@axa.nl) */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef DEMAND_LOOK
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef LL_K
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzdirty++;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzlabase++; /* MR14 Ger Hobbelt (hobbelt@axa.nl) */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzdirty = 1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return 1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef USER_ZZMODE_STACK
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstatic int zzmstk[ZZMAXSTK] = { -1 };
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstatic int zzmdep = 0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstatic char zzmbuf[70];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __USE_PROTOS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynczzmpush( int m )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynczzmpush( m )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint m;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if(zzmdep == ZZMAXSTK - 1) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync sprintf(zzmbuf, "Mode stack overflow ");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzerr(zzmbuf);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzmstk[zzmdep++] = zzauto;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzmode(m);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __USE_PROTOS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynczzmpop( void )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynczzmpop( )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if(zzmdep == 0)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { sprintf(zzmbuf, "Mode stack underflow ");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzerr(zzmbuf);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { zzmdep--;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzmode(zzmstk[zzmdep]);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __USE_PROTOS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynczzsave_mode_stack( int modeStack[], int *modeLevel )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynczzsave_mode_stack( modeStack, modeLevel )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint modeStack[];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint *modeLevel;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int i;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync memcpy(modeStack, zzmstk, sizeof(zzmstk));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *modeLevel = zzmdep;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzmdep = 0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __USE_PROTOS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynczzrestore_mode_stack( int modeStack[], int *modeLevel )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynczzrestore_mode_stack( modeStack, modeLevel )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint modeStack[];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint *modeLevel;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int i;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync memcpy(zzmstk, modeStack, sizeof(zzmstk));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzmdep = *modeLevel;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif /* USER_ZZMODE_STACK */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __USE_PROTOS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid zzTraceReset(void)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid zzTraceReset()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef zzTRACE_RULES
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzTraceOptionValue=zzTraceOptionValueDefault;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzTraceGuessOptionValue=1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzTraceCurrentRuleName=NULL;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzTraceDepth=0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __USE_PROTOS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid zzTraceGuessFail(void)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid zzTraceGuessFail()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef zzTRACE_RULES
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef ZZCAN_GUESS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int doIt=0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (zzTraceOptionValue <= 0) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync doIt=0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else if (zzguessing && zzTraceGuessOptionValue <= 0) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync doIt=0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync doIt=1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync };
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (doIt) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fprintf(stderr,"guess failed\n");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync };
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/* zzTraceOption:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zero value turns off trace
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync*/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __USE_PROTOS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid zzTraceIn(char * rule)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid zzTraceIn(rule)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char *rule;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef zzTRACE_RULES
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int doIt=0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzTraceDepth++;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzTraceCurrentRuleName=rule;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (zzTraceOptionValue <= 0) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync doIt=0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef ZZCAN_GUESS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else if (zzguessing && zzTraceGuessOptionValue <= 0) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync doIt=0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync doIt=1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync };
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (doIt) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fprintf(stderr,"enter rule %s {\"%s\"} depth %d",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync rule,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LA(1)==1 ? "@" : (char *) LATEXT(1), /* MR19 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzTraceDepth);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef ZZCAN_GUESS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (zzguessing) fprintf(stderr," guessing");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fprintf(stderr,"\n");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync };
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __USE_PROTOS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid zzTraceOut(char * rule)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid zzTraceOut(rule)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char *rule;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef zzTRACE_RULES
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int doIt=0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzTraceDepth--;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (zzTraceOptionValue <= 0) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync doIt=0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef ZZCAN_GUESS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else if (zzguessing && zzTraceGuessOptionValue <= 0) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync doIt=0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync doIt=1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync };
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (doIt) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fprintf(stderr,"exit rule %s {\"%s\"} depth %d",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync rule,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LA(1)==1 ? "@" : (char *) LATEXT(1), /* MR19 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzTraceDepth+1);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef ZZCAN_GUESS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (zzguessing) fprintf(stderr," guessing");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fprintf(stderr,"\n");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync };
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __USE_PROTOS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint zzTraceOption(int delta)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint zzTraceOption(delta)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int delta;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef zzTRACE_RULES
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int prevValue=zzTraceOptionValue;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzTraceOptionValue=zzTraceOptionValue+delta;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (zzTraceCurrentRuleName != NULL) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (prevValue <= 0 && zzTraceOptionValue > 0) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fprintf(stderr,"trace enabled in rule %s depth %d\n",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzTraceCurrentRuleName,zzTraceDepth);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync };
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (prevValue > 0 && zzTraceOptionValue <= 0) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fprintf(stderr,"trace disabled in rule %s depth %d\n",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzTraceCurrentRuleName,zzTraceDepth);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync };
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync };
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return prevValue;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return 0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef __USE_PROTOS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint zzTraceGuessOption(int delta)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint zzTraceGuessOption(delta)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int delta;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef zzTRACE_RULES
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifdef ZZCAN_GUESS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int prevValue=zzTraceGuessOptionValue;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzTraceGuessOptionValue=zzTraceGuessOptionValue+delta;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (zzTraceCurrentRuleName != NULL) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (prevValue <= 0 && zzTraceGuessOptionValue > 0) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fprintf(stderr,"guess trace enabled in rule %s depth %d\n",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzTraceCurrentRuleName,zzTraceDepth);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync };
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (prevValue > 0 && zzTraceGuessOptionValue <= 0) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fprintf(stderr,"guess trace disabled in rule %s depth %d\n",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync zzTraceCurrentRuleName,zzTraceDepth);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync };
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync };
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return prevValue;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return 0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return 0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif /* ERR_H */