|
|
1.1 ! root 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();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.