|
|
1.1.1.2 ! root 1: /* $Header: /cvsroot/src/sys/netiso/xebec/llparse.h,v 1.1 1993/04/09 12:02:07 cgd Exp $ */ ! 2: /* $Source: /cvsroot/src/sys/netiso/xebec/llparse.h,v $ */ 1.1 root 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.