diff options
Diffstat (limited to 'sys/netiso/xebec/llparse.h')
-rw-r--r-- | sys/netiso/xebec/llparse.h | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/sys/netiso/xebec/llparse.h b/sys/netiso/xebec/llparse.h new file mode 100644 index 00000000000..f996d88ab0e --- /dev/null +++ b/sys/netiso/xebec/llparse.h @@ -0,0 +1,144 @@ +/* $NetBSD: llparse.h,v 1.4 1994/06/29 06:41:04 cgd Exp $ */ + + /************************************************************ + attributes stack garbage + ************************************************************/ + +#define LLMAXATTR 512 +#define LLMAXDESC 256 +#define LLATTR /* build an attribute stack */ + + /* + ** attribute stack + ** + ** AttrStack = stack of record + ** values : array of values; + ** ptr : index; + ** end; + ** + */ + + typedef union llattrib LLattrib; + + extern LLattrib llattributes[LLMAXATTR]; + extern int llattrtop; + + extern struct llattr { + LLattrib *llabase; /* ptr into the attr stack (llattributes) */ + int llaindex;/* # attrs on the stack so far for this prod */ + int llacnt;/* total # ever to go on for this prod */ + + int lloldtop;/* when popping this prod, restore stack to here ; + one attr will remain on the stack (for the lhs) */ + } llattrdesc[LLMAXDESC]; + + extern int lldescindex; + + /************************************************************ + attributes stack garbage + ************************************************************/ + + extern struct lltoken { + short llterm; /* token number */ + short llstate; /* inserted deleted normal */ + LLattrib llattrib; + } lltoken; + typedef struct lltoken LLtoken; + +/************************************************************ + constants used in llparse.c +************************************************************/ + +#define STACKSIZE 500 +#define MAXCORR 16 + +#define NORMAL 0 +#define DELETE 1 +#define INSERT 2 + +/************************************************************ + datatypes used to communicate with the parser +************************************************************/ + +struct llinsert { + short llinscost; + short llinslength; + short llinsert[MAXCORR]; +}; +typedef struct llinsert LLinsert; + +extern short llparsestack[]; +extern short llstackptr; +extern short llinfinite; + +/************************************************************ + variables used to pass information + specific to each grammer +************************************************************/ + +extern short llnterms; +extern short llnsyms; +extern short llnprods; + +extern char *llefile; + +extern struct llparsetable { + short llterm; + short llprod; +} llparsetable[]; + +extern short llparseindex[]; + +extern short llepsilon[]; + +extern short llproductions[]; + +extern struct llprodindex { + short llprodstart; + short llprodlength; + short llprodtlen; +} llprodindex[]; + +extern struct llcosts { + short llinsert; + short lldelete; +} llcosts[]; + +extern struct llstable { + short llsstart; + short llslength; +} llstable[]; + +extern short llsspace[]; + +extern struct lletable { + short llecost; + short llelength; + short llestart; +} lletable[]; + +extern long lleindex[]; + +extern short llespace[]; + +extern char *llstrings[]; + +/************************************************************ + routines defined in llparse.c +************************************************************/ + +extern llparse(); +extern llcopye(); +extern llcopys(); +extern llcorrector(); +extern llepsilonok(); +extern llexpand(); +extern short llfindaction(); +extern llgetprefix(); +extern llgettoken(); +extern llinsert(); +extern llinsertsym(); +extern llinserttokens(); +extern llparsererror(); +extern llpushprod(); +extern llreadetab(); |