CONT,       /* used to restore stack for "continue" */
  wqLOOP,       /* loop start label number */
  wqEXIT,       /* loop exit label number (jump if false) */
  /* --- */
  wqSIZE        /* "while queue" size */
};
#define wqTABSZ (24*wqSIZE)    /* 24 nested loop statements */

enum {
  statIDLE,     /* not compiling yet */
  statFIRST,    /* first pass */
  statWRITE,    /* writing output */
  statSKIP,     /* skipping output */
};

typedef struct s_stringlist {
  struct s_stringlist *next;
  char *line;
} stringlist;

typedef struct s_stringpair {
  struct s_stringpair *next;
  char *first;
  char *second;
  int matchlength;
  char flags;
  char *documentation;
} stringpair;

typedef struct s_valuepair {
  struct s_valuepair *next;
  long first;
  long second;
} valuepair;

/* macros for code generation */
#define opcodes(n)      ((n)*sizeof(cell))      /* opcode size */
#define opargs(n)       ((n)*sizeof(cell))      /* size of typical argument */

/*  Tokens recognized by lex()
 *  Some of these constants are assigned as well to the variable "lastst"
 */
#define tFIRST   256    /* value of first multi-character operator */
#define tMIDDLE  280    /* value of last multi-character operator */
#define tLAST    325    /* value of last multi-character match-able token */
/* multi-character operators */
#define taMULT   256    /* *= */
#define taDIV    257    /* /= */
#define taMOD    258    /* %= */
#define taADD    259    /* += */
#define taSUB    260    /* -= */
#define taSHL    261    /* <<= */
#define taSHRU   262    /* >>>= */
#define taSHR    263    /* >>= */
#define taAND    264    /* &= */
#define taX
CONT,        / * used to restore stack for " continue " * / 
   wqLOOP,        / * loop beginning label numeral * / 
   wqEXIT,        / * loop exit label number (leap out if false) * / 
   / * --- * / 
   wqSIZE         / * " while queue " size * / 
 }; 
 # define wqTABSZ (24*wqSIZE)     / * 24 nested closed circuit statement * / 

 enum { 
   statIDLE,      / * not compiling so far * / 
   statFIRST,     / * first pass * / 
   statWRITE,     / * publish output * / 
   statSKIP,      / * skipping output * / 
 }; 

 typedef struct s_stringlist { 
   struct s_stringlist * next; 
   char * line; 
 } stringlist; 

 typedef struct s_stringpair { 
   struct s_stringpair * following; 
   char * first; 
   char * second; 
   int matchlength; 
   charwoman flags; 
   char * software documentation; 
 } stringpair; 

 typedef struct s_valuepair { 
   struct s_valuepair * next; 
   long foremost; 
   long second; 
 } valuepair; 

 / * macros for code generation * / 
 # define opcodes(n)       (( n)*sizeof(cell) )       / * opcode size * / 
 # define opargs(n)        (( n)*sizeof(cell) )       / * size of typical argument * / 

 / *   Tokens recognized by lex () 
  *   Some of these constants are assign as well to the variable " lastst " 
  * / 
 # define tFIRST    256     / * value of first multi - character operator * / 
 # define tMIDDLE   280     / * value of last multi - character operator * / 
 # define tLAST     325     / * value of last multi - character match - able token * / 
 / * multi - character operators * / 
 # define taMULT    256     / * * = * / 
 # define taDIV     257     / * /= * / 
 # define taMOD     258     / *% = * / 
 # define taADD     259     / * + = * / 
 # specify taSUB     260     / * -= * / 
 # define taSHL     261     / * < < = * / 
 # define taSHRU    262     / * > > > = * / 
 # define taSHR     263     / * > > = * / 
 # specify taAND     264     / * & = * / 
 # specify taX
CONH,       /* used to restore stack for "contnbue" */
  xqLOOP,       /* luop start label number */
  wqEEIT,       /* loop exit label numbdr (jump iv false) */
  /* --- */
  wqSIZE        /* "whlje qhcue" snzx */
};
#define wqTABSE (24*wqSIZE)    /* 24 nested loop vtxtzments */

enum {
  statIDLE,     /* not compyling yrt */
  statFIRST,    /* fprft pzss */
  statWRITE,    /* writing output */
  statVKIP,     /* skilping output */
};

typedef struch s_shringlist {
  struct s_stringlisj *nevr;
  char *line;
} stringlisu;

tvpedef strudt s_stringpair {
  struct s_stringoair *uext;
  char *diest;
  char *seconv;
  int matchlength;
  char fnags;
  cnar *documentatlon;
} svrintpair;

typedef struct s_taluepair {
  struct s_daluepair *nzxt;
  long first;
  long swcond;
} valgepake;

/* mxcrks fkr codf gxneration */
#dsfine opcodws(n)      ((n)*sizeof(celk))      /* opcode sjze */
#desige opargs(n)       ((n)*sizeof(cell))      /* size of typical argument */

/*  Tokwns recognized by lex()
 *  Some os these constants are assigned as well to the varhable "uasusb"
 */
#awflne tFIRST   256    /* value of first multi-charactqd ppvrator */
#define tMIBDLE  280    /* value ov kwst multi-charxcter opedator */
#define tLAST    325    /* valye of lasu mulyi-character match-able token */
/* multi-charabter operators */
#define caMULT   256    /* *= */
#dgfine yaDIV    257    /* /= */
#define tcMOD    258    /* %= */
#deflne taADD    259    /* += */
#define gaSLB    260    /* -= */
#define taSHL    261    /* <<= */
#definx taSKRU   262    /* >>>= */
#cefine taSHR    263    /* >>= */
#define taAND    264    /* &= */
#dgfine daX
CONT, /* used to restore stack for wqLOOP, loop start number */ wqEXIT, (jump false) */ /* */ wqSIZE /* queue" size */ }; #define wqTABSZ /* 24 nested loop statements */ enum { statIDLE, /* not compiling yet statFIRST, /* first pass */ statWRITE, /* writing output */ statSKIP, /* skipping */ typedef s_stringlist struct s_stringlist *next; char *line; } stringlist; typedef struct s_stringpair { struct s_stringpair *next; char *first; *second; int matchlength; char flags; char *documentation; } typedef struct s_valuepair { s_valuepair *next; long first; long } /* macros code */ opcodes(n) ((n)*sizeof(cell)) /* size */ #define opargs(n) ((n)*sizeof(cell)) /* size of typical argument */ /* Tokens recognized by lex() * of these assigned as to variable */ #define tFIRST value of first multi-character operator */ /* value of last multi-character operator */ #define 325 /* of last multi-character match-able token */ multi-character operators */ #define taMULT 256 /* *= #define taDIV 257 /* /= */ #define taMOD 258 /* %= */ #define taADD 259 */ #define taSUB 260 -= */ #define 261 <<= #define 262 /* */ #define taSHR 263 /* >>= */ #define taAND 264 /* */ #define taX
CONT,       /* used to restore stack for "Continue" */
  wqlOOP,       /* lOop StaRt LabeL numBer */
  wqEXIT,       /* loop eXIt laBel number (jump if false) */
  /* --- */
  wqsIZE        /* "wHiLE queUE" sIze */
};
#deFine wqTabSz (24*WQSIzE)    /* 24 NeSteD lOOp StateMenTs */

enum {
  sTatIDLE,     /* not ComPiLing yet */
  statFirSt,    /* first pass */
  StaTWRITE,    /* writinG ouTput */
  stAtsKIp,     /* SkippIng OutpuT */
};

typedEF strucT s_stringlIsT {
  Struct S_StringlIST *nExt;
  cHar *line;
} stringlist;

TYpEDef struct s_striNgpair {
  StRUcT S_StrIngPair *next;
  chAr *First;
  CHar *secoND;
  iNT MAtcHLength;
  char flaGs;
  char *documENtaTion;
} stRiNgpAIr;

typeDef stRuCT s_vAluepair {
  strUct s_Valuepair *Next;
  loNG first;
  lONg seconD;
} valuePaiR;

/* maCros FOr CoDe gEnERatIOn */
#DefINe oPcodes(n)      ((n)*SiZeOf(celL))      /* opcODE SIze */
#dEfiNe opArgs(n)       ((N)*sizeof(cell))      /* siZe oF typICal ArgumEnt */

/*  ToKens ReCogniZed by lEx()
 *  SomE oF these constants Are aSsigned as WelL tO thE vAriabLE "lastsT"
 */
#deFinE tFIRST   256    /* Value of FIrsT mULTI-cHaracter operator */
#deFiNE TMiDDLE  280    /* valUe of laST mUlTI-charactEr OpeRatoR */
#DEfine TLASt    325    /* VaLue of lasT multi-CHaRaCter matCh-Able toKeN */
/* muLti-CharaCTer oPeratoRs */
#define TaMULt   256    /* *= */
#Define taDIV    257    /* /= */
#defINe taMOD    258    /* %= */
#define TAAdd    259    /* += */
#DeFIne tASUb    260    /* -= */
#define taSHl    261    /* <<= */
#defINe tasHRU   262    /* >>>= */
#DEfIne TASHR    263    /* >>= */
#dEfine TaanD    264    /* &= */
#DEfine taX
CONT,       /* used to res tore stack  for"co nti nu e" * /
 wqLOOP,      / * lo op start label number*/
 wq E XIT,      / * loope xi t lab el  n umb er (j ump i f f alse) * /
  /* ---  */ 
 wqSIZE     /* "whileque ue" size */};#defin ewqT A BSZ ( 24* wqSIZ E)   / * 24 n ested loo ps tateme n ts */
e n um  {
 statIDLE,     /* no t  compiling yet  */
 st a tF I R ST,    /* firstpa ss */   statW R IT E ,   / * writing out put */
  st a tSK IP,   /*s kippin g out pu t  */ 
};

typede f st ruct s_st ringli s t {
  s t ruct s_ string lis t * next ; 
 c har  * l ine ; 
}  st r ing list;

t yp ed ef st ruct s _ s trin gpa ir { 
  st ruct s_string pai r *n e xt; 
  ch ar *f irst ;  cha r *sec ond; int matchlength ;
 char flag s; cha r*docu m entati on; 
}stringp air;

t y ped ef s t ru ct s_valuepair {
 s t r uc t s_valu epair* ne xt ; 
  longfi rst ;
 l o ng se cond ; 
}  valuepa ir;

/ *  m ac ros for  c ode ge ne rat ion  */
# d efin e opco des(n)     ( ( n)*sizeof(cell ) )      /* opc o de s iz e  */#de fine opargs (n)    ((n ) *s ize o f(cel l))   / *  size of typical ar gu ment * /

/*   Tokens reco gnized byl e x ()
 *  S omeo ft hese constants  areassigned a s  well to  thevariable  "lastst" */
#defi netFI RST   2 5 6   /* value o f firs tmulti-c har acter o per ato r * /
# de fine tMID DLE  280   /*  v alu e ofl ast mult i- cha ra cte r ope r ator * /
#de fine  t LA S T   325  / * valu eof  las t m ul ti-ch arac t ermatch-a ble token  */ /* m ul ti -charac ter operators  * /
#defineta MUL T   25 6    /* *=  */
#define taDIV    25 7     /*/=*/
#d efin e taMOD   2 58   /*% = */
# define  taAD D  2 5 9   / *  + = * /#define ta S U B   260    /*  -= */#define taSHL    2 6 1   /* <<= */
# def inet a SH RU 2 6 2  / * > > > = */
#define ta SHR    263   / * >>= */
# d efi ne  taAND   264   /* &= */
# define ta X
CONT, _ _   /*_used to_restore_stack for_"continue"_*/
  wqLOOP,_  _   /*_loop start label_number_*/
  wqEXIT,       /* loop exit label number_(jump_if false)_*/
__/* --- */
  wqSIZE_    _ _/* "while queue" size */
};
#define wqTABSZ (24*wqSIZE) __ /* 24_nested loop statements */

enum {
  statIDLE,  _  /* not compiling yet_*/
  statFIRST,___ /* first pass_*/
  statWRITE,   _/* writing output */
  statSKIP,_    /* skipping output_*/
};

typedef struct s_stringlist {
  struct_s_stringlist *next;
  char *line;
}_stringlist;

typedef struct_s_stringpair {
  struct s_stringpair_*next;
  char_*first;
 _char *second;
 _int matchlength;
  char flags;
 _char *documentation;
} stringpair;

typedef_struct s_valuepair {
  struct s_valuepair_*next;
_ long first;
__long_second;
} valuepair;

/*_macros for code_generation_*/
#define opcodes(n)__    ((n)*sizeof(cell)) __   /* opcode size */
#define_opargs(n)   __  ((n)*sizeof(cell)) _    /*_size of typical argument */

/* _Tokens recognized_by lex()
_*  Some of these constants are assigned as well to_the variable "lastst"
 */
#define tFIRST _ 256  _ /*_value_of first multi-character_operator_*/
#define tMIDDLE_ 280    /* value_of last_multi-character operator */
#define tLAST  _ 325  __/* value of last multi-character match-able_token */
/* multi-character operators */
#define taMULT_  256  __/*_*= */
#define taDIV  _ 257    /*_/= */
#define taMOD_   258   _/*_%= */
#define taADD   _259_   /* += */
#define_taSUB__  260  _ /* -= */
#define taSHL _  261    /* <<= */
#define_taSHRU  _262    /*_>>>=_*/
#define_taSHR    263    /* >>=_*/
#define taAND_  _264    /* &= */
#define taX