Annotation of Net2/netiso/xebec/xebec.c, revision 1.1.1.3

1.1.1.3 ! root        1: /* xebec.c,v 1.2 1993/05/20 05:28:39 cgd Exp */
1.1       root        2: 
                      3: #include "xebec.h"
                      4: #include "llparse.h"
                      5: #ifndef        E_TABLE
                      6: #define        E_TABLE "xebec.e"
                      7: #endif E_TABLE
                      8: 
                      9: #include "main.h"
                     10: #include "sets.h"
                     11: #include <stdio.h> 
                     12: 
                     13: extern FILE *eventfile_h, *actfile; 
                     14: 
                     15: llaction(lln,token)
                     16: LLtoken *token;
                     17: {
                     18:        struct llattr *llattr;
                     19:        llattr = &llattrdesc[lldescindex-1];
                     20: switch(lln) {
                     21: case 1:
                     22:        llfinprod();
                     23:        break;
                     24: 
                     25: case 10: {
                     26:        
                     27:                                        if(strlen(llattr->llabase[3].ID.address) > 50 ) {
                     28:                                                fprintf(stderr, 
                     29:                                                "Protocol name may not exceed 50 chars in length.\n"); 
                     30:                                                Exit(-1);
                     31:                                        }
                     32:                                        strcpy(protocol, llattr->llabase[3].ID.address); 
                     33:                                        openfiles(protocol); 
                     34:                                
                     35: } break;
                     36: 
                     37: case 11: {
                     38:  
                     39:                                        llattr->llabase[7].pcb.isevent = 0; 
                     40:                                
                     41: } break;
                     42: 
                     43: case 12: {
                     44: 
                     45:                                  fprintf(actfile, "\ntypedef %s %s%s;\n",
                     46:                                                          llattr->llabase[7].pcb.address,protocol, PCBNAME); 
                     47:                                  llattr->llabase[8].syn.type = PCB_SYN;
                     48:                                
                     49: } break;
                     50: 
                     51: case 13: {
                     52:  llattr->llabase[11].part.type = (unsigned char) STATESET; 
                     53: } break;
                     54: 
                     55: case 14: {
                     56:  end_states(eventfile_h); 
                     57: } break;
                     58: 
                     59: case 15: {
                     60:  llattr->llabase[14].pcb.isevent = 1; 
                     61: } break;
                     62: 
                     63: case 16: {
                     64: 
                     65:                                        fprintf(eventfile_h, "\t"); /* fmq gags on single chars */
                     66:                                        includecode(eventfile_h, llattr->llabase[14].pcb.address);
                     67:                                        fprintf(eventfile_h, "\n"); /* fmq gags on single chars */
                     68:                                        llattr->llabase[15].syn.type = EVENT_SYN;
                     69:                                
                     70: } break;
                     71: 
                     72: case 17: {
                     73:  
                     74:                                        llattr->llabase[16].part.type = (unsigned char)EVENTSET; 
                     75:                                
                     76: } break;
                     77: 
                     78: case 18: {
                     79:  end_events(); 
                     80: } break;
                     81: 
                     82: case 19: {
                     83:  
                     84:                                        putincludes();
                     85:                                        putdriver(actfile, 9);
                     86:                                
                     87: } break;
                     88: 
                     89: case 20: {
                     90:        if(llattr->llabase[0].pcb.isevent)  {
                     91:                                        fprintf(stderr, 
                     92:                                        "Event is a list of objects enclosed by \"{}\"\n");
                     93:                                        Exit(-1);
                     94:                                }
                     95:                          fprintf(eventfile_h, "struct "); 
                     96:                        
                     97: } break;
                     98: 
                     99: case 21: {
                    100:  llattr->llabase[0].pcb.address = llattr->llabase[2].ACTION.address; 
                    101: } break;
                    102: 
                    103: case 22: {
                    104:        if( ! llattr->llabase[0].pcb.isevent)  {
                    105:                                        fprintf(stderr, 
                    106:                                        "Pcb requires a type or structure definition.\"{}\"\n");
                    107:                                        Exit(-1);
                    108:                                }
                    109:                           llattr->llabase[0].pcb.address = llattr->llabase[1].ACTION.address; 
                    110:                        
                    111: } break;
                    112: 
                    113: case 23: {
                    114:   llattr->llabase[0].pcb.address = llattr->llabase[1].ID.address; 
                    115: } break;
                    116: 
                    117: case 24: {
                    118:  synonyms[llattr->llabase[0].syn.type] = stash( llattr->llabase[2].ID.address ); 
                    119: } break;
                    120: 
                    121: case 25: {
                    122:  includecode(actfile, llattr->llabase[2].ACTION.address);
                    123: } break;
                    124: 
                    125: case 26: {
                    126:  
                    127:                        llattr->llabase[2].partrest.address = llattr->llabase[1].ID.address;
                    128:                        llattr->llabase[2].partrest.type = llattr->llabase[0].part.type; 
                    129:                
                    130: } break;
                    131: 
                    132: case 27: {
                    133:  llattr->llabase[3].parttail.type = llattr->llabase[0].part.type; 
                    134: } break;
                    135: 
                    136: case 28: {
                    137:  llattr->llabase[1].part.type = llattr->llabase[0].parttail.type; 
                    138: } break;
                    139: 
                    140: case 29: {
                    141:  
                    142:                          if(  lookup( llattr->llabase[0].partrest.type, llattr->llabase[0].partrest.address ) ) {
                    143:                                fprintf(stderr, "bnf:trying to redefine obj type 0x%x, adr %s\n",
                    144:                                        llattr->llabase[0].partrest.type, llattr->llabase[0].partrest.address);
                    145:                                Exit(-1);
                    146:                          } 
                    147:                          llattr->llabase[2].setdef.type = llattr->llabase[0].partrest.type;
                    148:                          llattr->llabase[2].setdef.address = stash( llattr->llabase[0].partrest.address );
                    149:                          llattr->llabase[2].setdef.keep = 1;
                    150:                        
                    151: } break;
                    152: 
                    153: case 30: {
                    154:  llattr->llabase[3].setstruct.object = llattr->llabase[2].setdef.object; 
                    155: } break;
                    156: 
                    157: case 31: {
                    158:  
                    159:                 defineitem(llattr->llabase[0].partrest.type, 
                    160:                                        llattr->llabase[0].partrest.address, llattr->llabase[1].ACTION.address); 
                    161:                
                    162: } break;
                    163: 
                    164: case 32: {
                    165:  
                    166:                        defineitem(llattr->llabase[0].partrest.type, llattr->llabase[0].partrest.address, (char *)0);
                    167:                
                    168: } break;
                    169: 
                    170: case 33: {
                    171: 
                    172:                                if(llattr->llabase[0].setstruct.object)  {
                    173:                                        /* WHEN COULD THIS BE FALSE?? 
                    174:                                         * isn't it supposed to be setstruct.object???
                    175:                                         * (it used to be $ACTION.address)
                    176:                                         */
                    177: 
                    178:                                        llattr->llabase[0].setstruct.object->obj_struc = llattr->llabase[1].ACTION.address;
                    179:                                        fprintf(eventfile_h, 
                    180:                                                "struct %s %s%s;\n\n", llattr->llabase[1].ACTION.address, 
                    181:                                                EV_PREFIX,  llattr->llabase[0].setstruct.object->obj_name);
                    182:                                }
                    183:                        
                    184: } break;
                    185: 
                    186: case 34: {
                    187:  
                    188:                        llattr->llabase[2].setlist.setnum = 
                    189:                        defineset(llattr->llabase[0].setdef.type, llattr->llabase[0].setdef.address, llattr->llabase[0].setdef.keep); 
                    190:                
                    191: } break;
                    192: 
                    193: case 35: {
                    194:  llattr->llabase[0].setdef.object = llattr->llabase[2].setlist.setnum; 
                    195: } break;
                    196: 
                    197: case 36: {
                    198:  
                    199:                member(llattr->llabase[0].setlist.setnum, llattr->llabase[1].ID.address); 
                    200:                                llattr->llabase[2].setlisttail.setnum = llattr->llabase[0].setlist.setnum; 
                    201:        
                    202: } break;
                    203: 
                    204: case 37: {
                    205:  llattr->llabase[2].setlist.setnum = llattr->llabase[0].setlisttail.setnum; 
                    206: } break;
                    207: 
                    208: case 38: {
                    209:  transno ++; 
                    210: } break;
                    211: 
                    212: case 39: {
                    213:  
                    214:                CurrentEvent /* GAG! */ = llattr->llabase[6].event.object; 
                    215:         
                    216: } break;
                    217: 
                    218: case 40: {
                    219:  
                    220:                llattr->llabase[8].actionpart.string = llattr->llabase[7].predicatepart.string; 
                    221:                llattr->llabase[8].actionpart.newstate = llattr->llabase[1].newstate.object; 
                    222:                llattr->llabase[8].actionpart.oldstate = llattr->llabase[5].oldstate.object;
                    223:        
                    224: } break;
                    225: 
                    226: case 41: {
                    227:  
                    228:                 llattr->llabase[0].predicatepart.string = stash ( llattr->llabase[1].PREDICATE.address );
                    229:        
                    230: } break;
                    231: 
                    232: case 42: {
                    233:  
                    234:                llattr->llabase[0].predicatepart.string = (char *)0;
                    235:        
                    236: } break;
                    237: 
                    238: case 43: {
                    239: 
                    240:          statetable( llattr->llabase[0].actionpart.string, llattr->llabase[0].actionpart.oldstate, 
                    241:                                        llattr->llabase[0].actionpart.newstate,
                    242:                                        acttable(actfile, llattr->llabase[1].ACTION.address ), 
                    243:                                        CurrentEvent ); 
                    244:          if( print_trans ) {
                    245:                dump_trans( llattr->llabase[0].actionpart.string, llattr->llabase[0].actionpart.oldstate, 
                    246:                                        llattr->llabase[0].actionpart.newstate,
                    247:                                        llattr->llabase[1].ACTION.address, CurrentEvent ); 
                    248:          }
                    249:        
                    250: } break;
                    251: 
                    252: case 44: {
                    253: 
                    254:          statetable(llattr->llabase[0].actionpart.string, llattr->llabase[0].actionpart.oldstate, llattr->llabase[0].actionpart.newstate,
                    255:                                  0, CurrentEvent ); /* KLUDGE - remove this */
                    256:          if( print_trans ) {
                    257:                dump_trans( llattr->llabase[0].actionpart.string, llattr->llabase[0].actionpart.oldstate, 
                    258:                                        llattr->llabase[0].actionpart.newstate,
                    259:                                        "NULLACTION", CurrentEvent ); 
                    260:          }
                    261:        
                    262: } break;
                    263: 
                    264: case 45: {
                    265:        
                    266:                llattr->llabase[0].oldstate.object = Lookup(STATESET, llattr->llabase[1].ID.address);
                    267:        
                    268: } break;
                    269: 
                    270: case 46: {
                    271: 
                    272:                        llattr->llabase[1].setdef.address = (char *)0;
                    273:                        llattr->llabase[1].setdef.type = (unsigned char)STATESET; 
                    274:                        llattr->llabase[1].setdef.keep = 0;
                    275:                
                    276: } break;
                    277: 
                    278: case 47: {
                    279:  
                    280:                        llattr->llabase[0].oldstate.object = llattr->llabase[1].setdef.object; 
                    281:                
                    282: } break;
                    283: 
                    284: case 48: {
                    285:  
                    286:                llattr->llabase[0].newstate.object = Lookup(STATESET, llattr->llabase[1].ID.address); 
                    287:        
                    288: } break;
                    289: 
                    290: case 49: {
                    291:  
                    292:                extern struct Object *SameState;
                    293: 
                    294:                llattr->llabase[0].newstate.object = SameState;
                    295:        
                    296: } break;
                    297: 
                    298: case 50: {
                    299: 
                    300:                        llattr->llabase[0].event.object = Lookup(EVENTSET, llattr->llabase[1].ID.address); 
                    301:                
                    302: } break;
                    303: 
                    304: case 51: {
                    305: 
                    306:                        llattr->llabase[1].setdef.address = (char *)0;
                    307:                        llattr->llabase[1].setdef.type = (unsigned char)EVENTSET; 
                    308:                        llattr->llabase[1].setdef.keep = 0;
                    309:                
                    310: } break;
                    311: 
                    312: case 52: {
                    313:  
                    314:                        llattr->llabase[0].event.object = llattr->llabase[1].setdef.object; 
                    315:                
                    316: } break;
                    317: }
                    318: }
                    319: char *llstrings[] = {
                    320:        "<null>",
                    321:        "ID",
                    322:        "STRUCT",
                    323:        "SYNONYM",
                    324:        "PREDICATE",
                    325:        "ACTION",
                    326:        "PROTOCOL",
                    327:        "LBRACK",
                    328:        "RBRACK",
                    329:        "LANGLE",
                    330:        "EQUAL",
                    331:        "COMMA",
                    332:        "STAR",
                    333:        "EVENTS",
                    334:        "TRANSITIONS",
                    335:        "INCLUDE",
                    336:        "STATES",
                    337:        "SEMI",
                    338:        "PCB",
                    339:        "DEFAULT",
                    340:        "NULLACTION",
                    341:        "SAME",
                    342:        "ENDMARKER",
                    343:        "pcb",
                    344:        "syn",
                    345:        "setlist",
                    346:        "setlisttail",
                    347:        "part",
                    348:        "parttail",
                    349:        "partrest",
                    350:        "setstruct",
                    351:        "setdef",
                    352:        "translist",
                    353:        "transition",
                    354:        "event",
                    355:        "oldstate",
                    356:        "newstate",
                    357:        "predicatepart",
                    358:        "actionpart",
                    359:        "program",
                    360:        "includelist",
                    361:        "optsemi",
                    362:        "translisttail",
                    363:        "$goal$",
                    364:        (char *) 0
                    365: };
                    366: short llnterms = 23;
                    367: short llnsyms = 44;
                    368: short llnprods = 38;
                    369: short llinfinite = 10000;
                    370: short llproductions[] = {
                    371: 41, -21, 5, -20, 2, 
                    372: 41, -22, 5, 
                    373: 41, -23, 1, 
                    374: -24, 1, 3, 
                    375: 
                    376: 26, -36, 1, 
                    377: 25, -37, 11, 
                    378: 
                    379: 28, -27, 29, -26, 1, 
                    380: 27, -28, 
                    381: 
                    382: 30, -30, 31, -29, 10, 
                    383: -31, 5, 
                    384: -32, 
                    385: -33, 5, 
                    386: 
                    387: -35, 8, 25, -34, 7, 
                    388: 42, 33, 
                    389: 17, 38, -40, 37, -39, 34, 35, 10, 10, 9, -38, 36, 
                    390: -50, 1, 
                    391: -52, 31, -51, 
                    392: -45, 1, 
                    393: -47, 31, -46, 
                    394: -48, 1, 
                    395: -49, 21, 
                    396: -41, 4, 
                    397: -42, 19, 
                    398: -43, 5, 
                    399: -44, 20, 
                    400: 32, -19, 14, -18, 12, 27, -17, 24, -16, 23, -15, 13, -14, 12, 27, -13, 16, 12, 24, -12, 23, -11, 18, 40, 12, -10, 1, 6, 12, 
                    401: 12, -25, 5, 15, 
                    402: 
                    403: 17, 
                    404: 
                    405: 32, 
                    406: 
                    407: 22, 39, 
                    408: 0
                    409: };
                    410: struct llprodindex llprodindex[] = {
                    411: {   0,   0,   0 }, {   0,   5,  19 }, {   5,   3,   3 }, {   8,   3,   2 }, 
                    412: {  11,   3,   2 }, {  14,   0,   2 }, {  14,   3,   0 }, {  17,   3,   1 }, 
                    413: {  20,   0,   0 }, {  20,   5,   3 }, {  25,   2,   0 }, {  27,   0,   3 }, 
                    414: {  27,   5,   1 }, {  32,   2,   0 }, {  34,   1,   3 }, {  35,   2,   1 }, 
                    415: {  37,   0,   0 }, {  37,   5,   1 }, {  42,   2,   0 }, {  44,  12,   3 }, 
                    416: {  56,   2,   2 }, {  58,   3,   2 }, {  61,   2,   0 }, {  63,   3,   2 }, 
                    417: {  66,   2,   1 }, {  68,   2,   0 }, {  70,   2,   9 }, {  72,   2,   1 }, 
                    418: {  74,   2,   1 }, {  76,   2,   1 }, {  78,  29,   1 }, { 107,   4,   1 }, 
                    419: { 111,   0,   1 }, { 111,   1,   1 }, { 112,   0,   1 }, { 112,   1,   1 }, 
                    420: { 113,   0,   1 }, { 113,   2,   2 }, {   0,   0,   0 }
                    421: };
                    422: short llepsilon[] = {
                    423:  0, 0, 0, 0, 0, 1, 0, 0, 1, 0,
                    424:  0, 1, 0, 0, 1, 0, 1, 0, 0, 0,
                    425:  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                    426:  0, 0, 1, 0, 1, 0, 1, 0, 0
                    427: };
                    428: struct llparsetable llparsetable[] = {
                    429: {   1,   3 }, {   2,   1 }, {   5,   2 }, {   0,  23 }, {   1,   5 }, 
                    430: {   3,   4 }, {  12,   5 }, {   0,  24 }, {   1,   6 }, {   0,  25 }, 
                    431: {   8,   8 }, {  11,   7 }, {   0,  26 }, {   1,   9 }, {   0,  27 }, 
                    432: {   1,  10 }, {  12,  11 }, {   0,  28 }, {   1,  14 }, {   5,  13 }, 
                    433: {  10,  12 }, {  12,  14 }, {   0,  29 }, {   1,  16 }, {   5,  15 }, 
                    434: {  12,  16 }, {   0,  30 }, {   7,  17 }, {   0,  31 }, {   1,  18 }, 
                    435: {  21,  18 }, {   0,  32 }, {   1,  19 }, {  21,  19 }, {   0,  33 }, 
                    436: {   1,  20 }, {   7,  21 }, {   0,  34 }, {   1,  22 }, {   7,  23 }, 
                    437: {   0,  35 }, {   1,  24 }, {  21,  25 }, {   0,  36 }, {   4,  26 }, 
                    438: {  19,  27 }, {   0,  37 }, {   5,  28 }, {  20,  29 }, {   0,  38 }, 
                    439: {  12,  30 }, {   0,  39 }, {  15,  31 }, {  18,  32 }, {   0,  40 }, 
                    440: {   1,  34 }, {   3,  34 }, {  12,  34 }, {  17,  33 }, {   0,  41 }, 
                    441: {   1,  35 }, {  21,  35 }, {  22,  36 }, {   0,  42 }, {  12,  37 }, 
                    442: {   0,  43 }, {   0,   0 }
                    443: };
                    444: short llparseindex[] = {
                    445:  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                    446:  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                    447:  0, 0, 0, 0, 4, 8, 10, 13, 15, 18,
                    448:  23, 27, 29, 32, 35, 38, 41, 44, 47, 50,
                    449:  52, 55, 60, 64, 0
                    450: };

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.