home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / bsd_srcs / sys / netiso / xebec / llparse.h < prev    next >
Encoding:
C/C++ Source or Header  |  1988-10-05  |  3.2 KB  |  146 lines

  1. /* $Header: llparse.h,v 2.1 88/09/19 12:56:20 nhall Exp $ */
  2. /* $Source: /var/home/tadl/src/argo/xebec/RCS/llparse.h,v $ */
  3.  
  4.     /************************************************************
  5.         attributes stack garbage
  6.     ************************************************************/
  7.  
  8. #define LLMAXATTR    512
  9. #define LLMAXDESC    256
  10. #define    LLATTR        /* build an attribute stack */
  11.  
  12.     /*
  13.     **    attribute stack
  14.     **
  15.     **    AttrStack =    stack of record
  16.     **                values : array of values;
  17.     **                ptr    : index;
  18.     **    end;
  19.     **
  20.     */
  21.  
  22.     typedef union llattrib LLattrib;
  23.  
  24.     extern LLattrib    llattributes[LLMAXATTR];
  25.     extern int    llattrtop;
  26.  
  27.     extern struct    llattr {
  28.         LLattrib    *llabase; /* ptr into the attr stack (llattributes) */
  29.         int        llaindex;/* # attrs on the stack so far for this prod */
  30.         int        llacnt;/* total # ever to go on for this prod */
  31.  
  32.         int        lloldtop;/* when popping this prod, restore stack to here ;
  33.                          one attr will remain on the stack (for the lhs) */
  34.     }    llattrdesc[LLMAXDESC];
  35.  
  36.     extern int    lldescindex;
  37.  
  38.     /************************************************************
  39.         attributes stack garbage
  40.     ************************************************************/
  41.  
  42.     extern    struct    lltoken {
  43.         short        llterm;        /* token number */
  44.         short        llstate;    /* inserted deleted normal */
  45.         LLattrib    llattrib; 
  46.     }     lltoken;
  47.     typedef    struct lltoken    LLtoken;
  48.  
  49. /************************************************************
  50.     constants used in llparse.c
  51. ************************************************************/
  52.  
  53. #define STACKSIZE    500
  54. #define MAXCORR        16
  55.  
  56. #define    NORMAL        0
  57. #define    DELETE        1
  58. #define    INSERT        2
  59.  
  60. /************************************************************
  61.     datatypes used to communicate with the parser
  62. ************************************************************/
  63.  
  64. struct    llinsert {
  65.     short    llinscost;
  66.     short    llinslength;
  67.     short    llinsert[MAXCORR];
  68. };
  69. typedef    struct llinsert    LLinsert;
  70.  
  71. extern    short    llparsestack[];
  72. extern    short    llstackptr;
  73. extern    short    llinfinite;
  74.  
  75. /************************************************************
  76.     variables used to pass information
  77.     specific to each grammer
  78. ************************************************************/
  79.  
  80. extern    short    llnterms;
  81. extern    short    llnsyms;
  82. extern    short    llnprods;
  83.  
  84. extern    char    *llefile;
  85.  
  86. extern    struct    llparsetable {
  87.     short    llterm;
  88.     short    llprod;
  89. }    llparsetable[];
  90.  
  91. extern    short    llparseindex[];
  92.  
  93. extern    short    llepsilon[];
  94.  
  95. extern    short    llproductions[];
  96.  
  97. extern    struct    llprodindex {
  98.     short    llprodstart;
  99.     short    llprodlength;
  100.     short    llprodtlen;
  101. }    llprodindex[];
  102.  
  103. extern    struct    llcosts {
  104.     short    llinsert;
  105.     short    lldelete;
  106. }    llcosts[];
  107.  
  108. extern    struct    llstable {
  109.     short    llsstart;
  110.     short    llslength;
  111. }    llstable[];
  112.  
  113. extern    short    llsspace[];
  114.  
  115. extern    struct    lletable {
  116.     short    llecost;
  117.     short    llelength;
  118.     short    llestart;
  119. }    lletable[];
  120.  
  121. extern    long    lleindex[];
  122.  
  123. extern    short    llespace[];
  124.  
  125. extern    char    *llstrings[];
  126.  
  127. /************************************************************
  128.     routines defined in llparse.c
  129. ************************************************************/
  130.  
  131. extern llparse();
  132. extern llcopye();
  133. extern llcopys();
  134. extern llcorrector();
  135. extern llepsilonok();
  136. extern llexpand();
  137. extern short llfindaction();
  138. extern llgetprefix();
  139. extern llgettoken();
  140. extern llinsert();
  141. extern llinsertsym();
  142. extern llinserttokens();
  143. extern llparsererror();
  144. extern llpushprod();
  145. extern llreadetab();
  146.