Annotation of researchv10no/cmd/struct/beauty.c, revision 1.1

1.1     ! root        1: # define xxif 300
        !             2: # define xxelse 301
        !             3: # define xxwhile 302
        !             4: # define xxrept 303
        !             5: # define xxdo 304
        !             6: # define xxrb 305
        !             7: # define xxpred 306
        !             8: # define xxident 307
        !             9: # define xxle 308
        !            10: # define xxge 309
        !            11: # define xxne 310
        !            12: # define xxnum 311
        !            13: # define xxcom 312
        !            14: # define xxstring 313
        !            15: # define xxexplist 314
        !            16: # define xxidpar 315
        !            17: # define xxelseif 316
        !            18: # define xxlb 318
        !            19: # define xxend 319
        !            20: # define xxcase 320
        !            21: # define xxswitch 321
        !            22: # define xxuntil 322
        !            23: # define xxdefault 323
        !            24: # define xxeq 324
        !            25: # define xxuminus 281
        !            26: 
        !            27: # line 17 "beauty.y"
        !            28: #include "b.h"
        !            29: #include <stdio.h>
        !            30: #define yyclearin yychar = -1
        !            31: #define yyerrok yyerrflag = 0
        !            32: extern int yychar;
        !            33: extern short yyerrflag;
        !            34: #ifndef YYMAXDEPTH
        !            35: #define YYMAXDEPTH 150
        !            36: #endif
        !            37: #ifndef YYSTYPE
        !            38: #define YYSTYPE int
        !            39: #endif
        !            40: YYSTYPE yylval, yyval;
        !            41: 
        !            42: # line 23 "beauty.y"
        !            43: struct node *t;
        !            44: # define YYERRCODE 256
        !            45: 
        !            46: # line 229 "beauty.y"
        !            47: 
        !            48: #define ASSERT(X,Y)    if (!(X)) error("struct bug: assertion 'X' invalid in routine Y","","");
        !            49: 
        !            50: yyerror(s)
        !            51: char *s;
        !            52:        {
        !            53:        extern int yychar;
        !            54:        fprintf(stderr,"\n%s",s);
        !            55:        fprintf(stderr," in beautifying, output line %d,",xxlineno + 1);
        !            56:        fprintf(stderr," on input: ");
        !            57:                switch (yychar) {
        !            58:                        case '\t': fprintf(stderr,"\\t\n"); return;
        !            59:                        case '\n': fprintf(stderr,"\\n\n"); return;
        !            60:                        case '\0': fprintf(stderr,"$end\n"); return;
        !            61:                        default: fprintf(stderr,"%c\n",yychar); return;
        !            62:                        }
        !            63:        }
        !            64: 
        !            65: yyinit(argc, argv)                     /* initialize pushdown store */
        !            66: int argc;
        !            67: char *argv[];
        !            68:        {
        !            69:        xxindent = 0;
        !            70:        xxbpertab = 8;
        !            71:        xxmaxchars = 120;
        !            72:        }
        !            73: 
        !            74: 
        !            75: #include <signal.h>
        !            76: main()
        !            77:        {
        !            78:        int exit();
        !            79:        if ( signal(SIGINT, SIG_IGN) != SIG_IGN)
        !            80:                signal(SIGINT, exit);
        !            81:        yyinit();
        !            82:        yyparse();
        !            83:        }
        !            84: 
        !            85: 
        !            86: putout(type,string)                    /* output string with proper indentation */
        !            87: int type;
        !            88: char *string;
        !            89:        {
        !            90:        static int lasttype;
        !            91:        if ( (lasttype != 0) && (lasttype != '\n') && (lasttype != ' ') && (lasttype != '\t') && (type == xxcom))
        !            92:                accum("\t");
        !            93:        else if (lasttype == xxcom && type != '\n')
        !            94:                tab(xxindent);
        !            95:        else
        !            96:                if (lasttype == xxif    ||
        !            97:                        lasttype == xxwhile     ||
        !            98:                        lasttype == xxdo        ||
        !            99:                        type == '='     ||
        !           100:                        lasttype == '=' ||
        !           101:                        (lasttype == xxident && (type == xxident || type == xxnum) )    ||
        !           102:                        (lasttype == xxnum && type == xxnum) )
        !           103:                        accum(" ");
        !           104:        accum(string);
        !           105:        lasttype = type;
        !           106:        }
        !           107: 
        !           108: 
        !           109: accum(token)           /* fill output buffer, generate continuation lines */
        !           110: char *token;
        !           111:        {
        !           112:        static char *buffer;
        !           113:        static int lstatus,llen,bufind;
        !           114:        int tstatus,tlen,i;
        !           115: 
        !           116: #define NEW    0
        !           117: #define MID    1
        !           118: #define CONT   2
        !           119: 
        !           120:        if (buffer == 0)
        !           121:                {
        !           122:                buffer = malloc(xxmaxchars);
        !           123:                if (buffer == 0) error("malloc out of space","","");
        !           124:                }
        !           125:        tlen = slength(token);
        !           126:        if (tlen == 0) return;
        !           127:        for (i = 0; i < tlen; ++i)
        !           128:                ASSERT(token[i] != '\n' || tlen == 1,accum);
        !           129:        switch(token[tlen-1])
        !           130:                {
        !           131:                case '\n':      tstatus = NEW;
        !           132:                                break;
        !           133:                case '+':
        !           134:                case '-':
        !           135:                case '*':
        !           136:                case ',':
        !           137:                case '|':
        !           138:                case '&':
        !           139:                case '(':       tstatus = CONT;
        !           140:                                break;
        !           141:                default:        tstatus = MID;
        !           142:                }
        !           143:        if (llen + bufind + tlen > xxmaxchars && lstatus == CONT && tstatus != NEW)
        !           144:                {
        !           145:                putchar('\n');
        !           146:                ++xxlineno;
        !           147:                for (i = 0; i < xxindent; ++i)
        !           148:                        putchar('\t');
        !           149:                putchar(' ');putchar(' ');
        !           150:                llen = 2 + xxindent * xxbpertab;
        !           151:                lstatus = NEW;
        !           152:                }
        !           153:        if (lstatus == CONT && tstatus == MID)
        !           154:                {                       /* store in buffer in case need \n after last CONT char */
        !           155:                ASSERT(bufind + tlen < xxmaxchars,accum);
        !           156:                for (i = 0; i < tlen; ++i)
        !           157:                        buffer[bufind++] = token[i];
        !           158:                }
        !           159:        else
        !           160:                {
        !           161:                for (i = 0; i < bufind; ++i)
        !           162:                        putchar(buffer[i]);
        !           163:                llen += bufind;
        !           164:                bufind = 0;
        !           165:                for (i = 0; i < tlen; ++i)
        !           166:                        putchar(token[i]);
        !           167:                if (tstatus == NEW) ++xxlineno;
        !           168:                llen = (tstatus == NEW) ? 0 : llen + tlen;
        !           169:                lstatus = tstatus;
        !           170:                }
        !           171:        }
        !           172: 
        !           173: tab(n)
        !           174: int n;
        !           175:        {
        !           176:        int i;
        !           177:        newline();
        !           178:        for ( i = 0;  i < n; ++i)
        !           179:                putout('\t',"\t");
        !           180:        }
        !           181: 
        !           182: newline()
        !           183:        {
        !           184:        static int already;
        !           185:        if (already)
        !           186:                putout('\n',"\n");
        !           187:        else
        !           188:                already = 1;
        !           189:        }
        !           190: 
        !           191: error(mess1, mess2, mess3)
        !           192: char *mess1, *mess2, *mess3;
        !           193:        {
        !           194:        fprintf(stderr,"\nerror in beautifying, output line %d: %s %s %s \n",
        !           195:                xxlineno, mess1, mess2, mess3);
        !           196:        exit(1);
        !           197:        }
        !           198: 
        !           199: 
        !           200: 
        !           201: 
        !           202: 
        !           203: 
        !           204: 
        !           205: push(type)
        !           206: int type;
        !           207:        {
        !           208:        if (++xxstind > xxtop)
        !           209:                error("nesting too deep, stack overflow","","");
        !           210:        xxstack[xxstind] = type;
        !           211:        }
        !           212: 
        !           213: pop()
        !           214:        {
        !           215:        if (xxstind <= 0)
        !           216:                error("stack exhausted, can't be popped as requested","","");
        !           217:        --xxstind;
        !           218:        }
        !           219: 
        !           220: 
        !           221: forst()
        !           222:        {
        !           223:        while( (xxval = yylex()) != '\n')
        !           224:                {
        !           225:                putout(xxval, yylval);
        !           226:                free(yylval);
        !           227:                }
        !           228:        free(yylval);
        !           229:        }
        !           230: short yyexca[] ={
        !           231: -1, 0,
        !           232:        312, 17,
        !           233:        -2, 16,
        !           234: -1, 1,
        !           235:        0, -1,
        !           236:        -2, 0,
        !           237: -1, 2,
        !           238:        0, 18,
        !           239:        312, 17,
        !           240:        -2, 16,
        !           241: -1, 6,
        !           242:        312, 17,
        !           243:        -2, 16,
        !           244: -1, 7,
        !           245:        312, 17,
        !           246:        -2, 16,
        !           247: -1, 29,
        !           248:        312, 17,
        !           249:        -2, 16,
        !           250: -1, 36,
        !           251:        312, 17,
        !           252:        -2, 16,
        !           253: -1, 47,
        !           254:        322, 16,
        !           255:        -2, 66,
        !           256: -1, 95,
        !           257:        308, 0,
        !           258:        309, 0,
        !           259:        310, 0,
        !           260:        324, 0,
        !           261:        60, 0,
        !           262:        62, 0,
        !           263:        -2, 52,
        !           264: -1, 96,
        !           265:        308, 0,
        !           266:        309, 0,
        !           267:        310, 0,
        !           268:        324, 0,
        !           269:        60, 0,
        !           270:        62, 0,
        !           271:        -2, 53,
        !           272: -1, 97,
        !           273:        308, 0,
        !           274:        309, 0,
        !           275:        310, 0,
        !           276:        324, 0,
        !           277:        60, 0,
        !           278:        62, 0,
        !           279:        -2, 54,
        !           280: -1, 98,
        !           281:        308, 0,
        !           282:        309, 0,
        !           283:        310, 0,
        !           284:        324, 0,
        !           285:        60, 0,
        !           286:        62, 0,
        !           287:        -2, 55,
        !           288: -1, 99,
        !           289:        308, 0,
        !           290:        309, 0,
        !           291:        310, 0,
        !           292:        324, 0,
        !           293:        60, 0,
        !           294:        62, 0,
        !           295:        -2, 56,
        !           296: -1, 100,
        !           297:        308, 0,
        !           298:        309, 0,
        !           299:        310, 0,
        !           300:        324, 0,
        !           301:        60, 0,
        !           302:        62, 0,
        !           303:        -2, 57,
        !           304: -1, 106,
        !           305:        312, 17,
        !           306:        -2, 16,
        !           307: -1, 112,
        !           308:        312, 17,
        !           309:        125, 23,
        !           310:        -2, 16,
        !           311: -1, 128,
        !           312:        312, 17,
        !           313:        -2, 16,
        !           314: -1, 132,
        !           315:        312, 17,
        !           316:        320, 21,
        !           317:        323, 21,
        !           318:        125, 21,
        !           319:        -2, 16,
        !           320: -1, 134,
        !           321:        312, 17,
        !           322:        320, 21,
        !           323:        323, 21,
        !           324:        125, 21,
        !           325:        -2, 16,
        !           326: -1, 135,
        !           327:        312, 17,
        !           328:        320, 21,
        !           329:        323, 21,
        !           330:        125, 21,
        !           331:        -2, 16,
        !           332:        };
        !           333: # define YYNPROD 77
        !           334: # define YYLAST 384
        !           335: short yyact[]={
        !           336: 
        !           337:   67,  31, 105,  56,  63,  61, 115,  62,  67,  64,
        !           338:   11,  41,  63,  61, 109,  62, 121,  64,  38, 122,
        !           339:   34,  40,  69,  39,  68,  11,  11,  31,  45,  58,
        !           340:   69,  67,  68,   8, 101,  63,  61,  87,  62,  67,
        !           341:   64,  36,  60,  63,  61,  31,  62, 112,  64,  11,
        !           342:   33, 111,   2,  69,  65,  68,  65, 102,   6,  29,
        !           343:   84,  69,   5,  68,  65, 133,  67, 129,  52,  16,
        !           344:   63,  61, 108,  62,  67,  64,  51,  78,  63,  61,
        !           345:   24,  62,  30,  64,  63, 104,  66,  65,  69,  64,
        !           346:   68,  82,  54, 120,  66,  65,  69,   3,  68,  42,
        !           347:   14,  63,  61, 126,  62,  32,  64,  22,  23,  28,
        !           348:   81, 119,  27,   7,  15,  21,  49,  66,  20,  69,
        !           349:   19,  68,  65,  80,  26,  66,  25,  14,  53,  18,
        !           350:   65,  55,  46,  17,  59,  50,  65,  85,  57,   4,
        !           351:  114, 106,  13,   9,  63,  61, 114,  62,   1,  64,
        !           352:    0,   0,  66,  65,   0,   0,   0, 114,   9,   9,
        !           353:    0,   0, 128, 131, 118, 123,   0, 116, 132, 113,
        !           354:  136, 130, 137, 138, 117, 113, 103, 127,  22,  23,
        !           355:   28, 134,   0,  27,   0, 135, 113,  10,   0,   0,
        !           356:    0,   0,   0,  37,   0,  26,  65,  25,  12,  56,
        !           357:  125,   0,  10,  10,  35,   0,   0,   0,   0,   0,
        !           358:    0,   0,   0,  12,  12,  74,  75,  76,  77, 110,
        !           359:    0,   0,   0,  47,  48,   0,   0,   0,   0,  83,
        !           360:    0,   0,  14,  14,   0,   0,   0,   0,  88,  89,
        !           361:   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,
        !           362:  100,  79,   0,   0,   0,   0,   0,   0,   0,   0,
        !           363:    0, 107,  86,   0,   0,   0,   0,   0,   0,   0,
        !           364:   71,  72,  73,   0,   0,   0,   0,   0,  71,  72,
        !           365:   73,   0,   0,   0,   0,  45,  70,   0,   0,  43,
        !           366:    0,  44, 124,   0,  70,   0,   0,   0,   0,   0,
        !           367:    0,  71,  72,  73,   0,   0,   0,   0,   0,  71,
        !           368:   72,  73,   0,   0,   0,   0,   0,  70,   0,   0,
        !           369:    0,   0,   0,   0,   0,  70,   0,   0,   0,   0,
        !           370:    0,   0,   0,   0,   0,   0,  71,  72,  73,   0,
        !           371:    0,   0,   0,   0,  71,  72,  73,   0,   0,   0,
        !           372:    0,   0,  70,   0,   0,   0,   0,   0,   0,   0,
        !           373:   70,   0,   0,   0,   0,   0,   0,  71,  72,  73,
        !           374:    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        !           375:    0,   0,   0,  70 };
        !           376: short yypact[]={
        !           377: 
        !           378:  -97,-1000, -97,-1000,  29,-195, -98, -97,-292,-1000,
        !           379: -1000,-1000,-1000,-1000,-1000,-1000, -22,  29,-1000,-1000,
        !           380:   29,-1000,-1000,-1000,  24,-1000,-1000,-1000,-279, -97,
        !           381: -1000,-1000,-1000,-113,-1000,-272, -97,   1, -22, -22,
        !           382:  -22, -22,-1000,-1000,-1000,  37,-1000,-1000,-1000,-1000,
        !           383: -1000,-1000, -22,  -1,-124,-1000,-1000,-1000,-1000,-1000,
        !           384: -1000, -22, -22, -22, -22, -22, -22, -22, -22, -22,
        !           385:  -22, -22, -22, -22,  -7, -40, -40,  59, -22,-1000,
        !           386: -1000,-320, -74,  28, -22,-1000,-1000,-1000,  42,  42,
        !           387:  -40, -40, -40,  36,  59, 102, 102, 102, 102, 102,
        !           388:  102,-1000,  31, -30,  29,-1000,-1000, -38,-1000, -22,
        !           389: -1000,-1000,-1000,-304,-292, -22,-1000, -80,-1000, -22,
        !           390: -1000,-1000,   9,-309,  28,-1000,-1000,   7, -97,-1000,
        !           391: -1000,-1000, -97,-1000, -97, -97,-1000,-1000,-1000 };
        !           392: short yypgo[]={
        !           393: 
        !           394:    0, 148,  52, 142,  97, 139, 114, 204, 138,  62,
        !           395:  133, 129, 123, 120, 118, 116,  41,  58,  51,  82,
        !           396:   37, 115, 113,  33,  50,  47, 111, 103,  93,  99,
        !           397:   57, 176,  85,  80,  76 };
        !           398: short yyr1[]={
        !           399: 
        !           400:    0,   1,   2,   2,   4,   4,   4,   4,   4,   4,
        !           401:    4,   4,   4,   4,   4,   4,   9,  23,   3,   7,
        !           402:   16,  20,  18,  18,  25,  25,  25,  25,  26,  28,
        !           403:   14,  21,  21,  29,  29,  27,  30,  30,  15,  15,
        !           404:    6,  31,  31,  31,  31,  31,  31,  31,  31,  31,
        !           405:   31,  31,  31,  31,  31,  31,  31,  31,  31,  31,
        !           406:   31,   5,   8,  10,  11,  12,  12,  32,  13,  33,
        !           407:   34,  34,  17,  19,  22,  24,  24 };
        !           408: short yyr2[]={
        !           409: 
        !           410:    0,   2,   1,   2,   5,   3,   4,   4,   3,   9,
        !           411:    2,   4,   2,   2,   3,   1,   0,   0,   0,   3,
        !           412:    0,   0,   2,   1,   6,   5,   5,   3,   1,   2,
        !           413:    1,   1,   1,   4,   1,   2,   3,   1,   1,   0,
        !           414:    3,   3,   2,   2,   2,   3,   3,   3,   3,   3,
        !           415:    3,   3,   3,   3,   3,   3,   3,   3,   1,   1,
        !           416:    1,   1,   1,   1,   1,   3,   0,   1,   2,   6,
        !           417:    2,   0,   1,   1,   1,   1,   2 };
        !           418: short yychk[]={
        !           419: 
        !           420: -1000,  -1,  -2,  -4,  -5,  -9, -17, -22, -23, 256,
        !           421:  300, 123, 311,  -3,  -4,  -6,  40, -10, -11, -13,
        !           422:  -14, -21, 302, 303, -33, 321, 319, 307, 304,  -2,
        !           423:  -19, 125,  -4, -24, 312,  -7, -16, -31,  40,  45,
        !           424:   43,  33, -29, 311, 313, 307,  -6,  -7,  -7, -15,
        !           425:   -6, -34,  44, -29,  -9,  -4, 312,  -8, 301,  -4,
        !           426:   41,  43,  45,  42,  47,  94, 124,  38,  62,  60,
        !           427:  324, 308, 309, 310, -31, -31, -31, -31,  40,  -7,
        !           428:  -12,  -9, -16, -31,  61, -19,  -7, -20, -31, -31,
        !           429:  -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
        !           430:  -31,  41, -30, -31, -32, 322, -17, -31,  41,  44,
        !           431:   -6, -18, -25,  -9, -23,  44, -30,  -9, -18, -26,
        !           432:  -28, 320, 323, -24, -31, -19, -27, -30, -16,  58,
        !           433:  -25, -20, -16,  58,  -2,  -2, -20, -20, -20 };
        !           434: short yydef[]={
        !           435: 
        !           436:   -2,  -2,  -2,   2,   0,   0,  -2,  -2,   0,  15,
        !           437:   61,  72,  74,   1,   3,  20,   0,   0,  20,  20,
        !           438:   39,  10,  63,  64,  71,  30,  31,  32,   0,  -2,
        !           439:   12,  73,  13,  16,  75,   5,  -2,   0,   0,   0,
        !           440:    0,   0,  58,  59,  60,  34,  20,  -2,   8,  20,
        !           441:   38,  68,   0,   0,   0,  14,  76,  20,  62,  21,
        !           442:   40,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        !           443:    0,   0,   0,   0,   0,  42,  43,  44,   0,   6,
        !           444:    7,   0,   0,  70,   0,  11,   4,  19,  45,  46,
        !           445:   47,  48,  49,  50,  51,  -2,  -2,  -2,  -2,  -2,
        !           446:   -2,  41,   0,  37,   0,  67,  -2,   0,  33,   0,
        !           447:   65,  16,  -2,   0,   0,   0,  36,   0,  22,   0,
        !           448:   20,  28,   0,  16,  69,  21,  20,   0,  -2,  29,
        !           449:   27,   9,  -2,  35,  -2,  -2,  25,  26,  24 };
        !           450: #
        !           451: # define YYFLAG -1000
        !           452: # define YYERROR goto yyerrlab
        !           453: # define YYACCEPT return(0)
        !           454: # define YYABORT return(1)
        !           455: 
        !           456: /*     parser for yacc output  */
        !           457: 
        !           458: #ifdef YYDEBUG
        !           459: int yydebug = 0; /* 1 for debugging */
        !           460: #endif
        !           461: YYSTYPE yyv[YYMAXDEPTH]; /* where the values are stored */
        !           462: int yychar = -1; /* current input token number */
        !           463: int yynerrs = 0;  /* number of errors */
        !           464: short yyerrflag = 0;  /* error recovery flag */
        !           465: 
        !           466: yyparse() {
        !           467: 
        !           468:        short yys[YYMAXDEPTH];
        !           469:        short yyj, yym;
        !           470:        register YYSTYPE *yypvt;
        !           471:        register short yystate, *yyps, yyn;
        !           472:        register YYSTYPE *yypv;
        !           473:        register short *yyxi;
        !           474: 
        !           475:        yystate = 0;
        !           476:        yychar = -1;
        !           477:        yynerrs = 0;
        !           478:        yyerrflag = 0;
        !           479:        yyps= &yys[-1];
        !           480:        yypv= &yyv[-1];
        !           481: 
        !           482:  yystack:    /* put a state and value onto the stack */
        !           483: 
        !           484: #ifdef YYDEBUG
        !           485:        if( yydebug  ) printf( "state %d, char 0%o\n", yystate, yychar );
        !           486: #endif
        !           487:                if( ++yyps> &yys[YYMAXDEPTH] ) { yyerror( "yacc stack overflow" ); return(1); }
        !           488:                *yyps = yystate;
        !           489:                ++yypv;
        !           490:                *yypv = yyval;
        !           491: 
        !           492:  yynewstate:
        !           493: 
        !           494:        yyn = yypact[yystate];
        !           495: 
        !           496:        if( yyn<= YYFLAG ) goto yydefault; /* simple state */
        !           497: 
        !           498:        if( yychar<0 ) if( (yychar=yylex())<0 ) yychar=0;
        !           499:        if( (yyn += yychar)<0 || yyn >= YYLAST ) goto yydefault;
        !           500: 
        !           501:        if( yychk[ yyn=yyact[ yyn ] ] == yychar ){ /* valid shift */
        !           502:                yychar = -1;
        !           503:                yyval = yylval;
        !           504:                yystate = yyn;
        !           505:                if( yyerrflag > 0 ) --yyerrflag;
        !           506:                goto yystack;
        !           507:                }
        !           508: 
        !           509:  yydefault:
        !           510:        /* default state action */
        !           511: 
        !           512:        if( (yyn=yydef[yystate]) == -2 ) {
        !           513:                if( yychar<0 ) if( (yychar=yylex())<0 ) yychar = 0;
        !           514:                /* look through exception table */
        !           515: 
        !           516:                for( yyxi=yyexca; (*yyxi!= (-1)) || (yyxi[1]!=yystate) ; yyxi += 2 ) ; /* VOID */
        !           517: 
        !           518:                while( *(yyxi+=2) >= 0 ){
        !           519:                        if( *yyxi == yychar ) break;
        !           520:                        }
        !           521:                if( (yyn = yyxi[1]) < 0 ) return(0);   /* accept */
        !           522:                }
        !           523: 
        !           524:        if( yyn == 0 ){ /* error */
        !           525:                /* error ... attempt to resume parsing */
        !           526: 
        !           527:                switch( yyerrflag ){
        !           528: 
        !           529:                case 0:   /* brand new error */
        !           530: 
        !           531:                        yyerror( "syntax error" );
        !           532:                yyerrlab:
        !           533:                        ++yynerrs;
        !           534: 
        !           535:                case 1:
        !           536:                case 2: /* incompletely recovered error ... try again */
        !           537: 
        !           538:                        yyerrflag = 3;
        !           539: 
        !           540:                        /* find a state where "error" is a legal shift action */
        !           541: 
        !           542:                        while ( yyps >= yys ) {
        !           543:                           yyn = yypact[*yyps] + YYERRCODE;
        !           544:                           if( yyn>= 0 && yyn < YYLAST && yychk[yyact[yyn]] == YYERRCODE ){
        !           545:                              yystate = yyact[yyn];  /* simulate a shift of "error" */
        !           546:                              goto yystack;
        !           547:                              }
        !           548:                           yyn = yypact[*yyps];
        !           549: 
        !           550:                           /* the current yyps has no shift onn "error", pop stack */
        !           551: 
        !           552: #ifdef YYDEBUG
        !           553:                           if( yydebug ) printf( "error recovery pops state %d, uncovers %d\n", *yyps, yyps[-1] );
        !           554: #endif
        !           555:                           --yyps;
        !           556:                           --yypv;
        !           557:                           }
        !           558: 
        !           559:                        /* there is no state on the stack with an error shift ... abort */
        !           560: 
        !           561:        yyabort:
        !           562:                        return(1);
        !           563: 
        !           564: 
        !           565:                case 3:  /* no shift yet; clobber input char */
        !           566: 
        !           567: #ifdef YYDEBUG
        !           568:                        if( yydebug ) printf( "error recovery discards char %d\n", yychar );
        !           569: #endif
        !           570: 
        !           571:                        if( yychar == 0 ) goto yyabort; /* don't discard EOF, quit */
        !           572:                        yychar = -1;
        !           573:                        goto yynewstate;   /* try again in the same state */
        !           574: 
        !           575:                        }
        !           576: 
        !           577:                }
        !           578: 
        !           579:        /* reduction by production yyn */
        !           580: 
        !           581: #ifdef YYDEBUG
        !           582:                if( yydebug ) printf("reduce %d\n",yyn);
        !           583: #endif
        !           584:                yyps -= yyr2[yyn];
        !           585:                yypvt = yypv;
        !           586:                yypv -= yyr2[yyn];
        !           587:                yyval = yypv[1];
        !           588:                yym=yyn;
        !           589:                        /* consult goto table to find next state */
        !           590:                yyn = yyr1[yyn];
        !           591:                yyj = yypgo[yyn] + *yyps + 1;
        !           592:                if( yyj>=YYLAST || yychk[ yystate = yyact[yyj] ] != -yyn ) yystate = yyact[yypgo[yyn]];
        !           593:                switch(yym){
        !           594:                        
        !           595: case 16:
        !           596: # line 49 "beauty.y"
        !           597:        {
        !           598:                        if (!xxlablast) tab(xxindent);
        !           599:                        xxlablast = 0;
        !           600:                        } break;
        !           601: case 17:
        !           602: # line 54 "beauty.y"
        !           603:        newline(); break;
        !           604: case 18:
        !           605: # line 55 "beauty.y"
        !           606:        putout('\n',"\n"); break;
        !           607: case 20:
        !           608: # line 57 "beauty.y"
        !           609: 
        !           610:                                {
        !           611:                                if (xxstack[xxstind] != xxlb)
        !           612:                                        ++xxindent;
        !           613:                                } break;
        !           614: case 21:
        !           615: # line 62 "beauty.y"
        !           616: 
        !           617:                                {if (xxstack[xxstind] != xxlb && xxstack[xxstind] != xxelseif)
        !           618:                                        --xxindent;
        !           619:                                pop();
        !           620:                                } break;
        !           621: case 28:
        !           622: # line 77 "beauty.y"
        !           623:        {putout(xxcase,"case "); free (yypvt[-0]); push(xxcase); } break;
        !           624: case 29:
        !           625: # line 80 "beauty.y"
        !           626:                {
        !           627:                                                putout(xxcase,"default");
        !           628:                                                free(yypvt[-1]);
        !           629:                                                putout(':',":");
        !           630:                                                free(yypvt[-0]);
        !           631:                                                push(xxcase);
        !           632:                                                } break;
        !           633: case 30:
        !           634: # line 87 "beauty.y"
        !           635:        {putout(xxswitch,"switch"); free(yypvt[-0]); push(xxswitch); } break;
        !           636: case 31:
        !           637: # line 89 "beauty.y"
        !           638:        {
        !           639:                                free(yypvt[-0]);
        !           640:                                putout(xxident,"end");
        !           641:                                putout('\n',"\n");
        !           642:                                putout('\n',"\n");
        !           643:                                putout('\n',"\n");
        !           644:                                } break;
        !           645: case 32:
        !           646: # line 96 "beauty.y"
        !           647:        {
        !           648:                                putout(xxident,yypvt[-0]);
        !           649:                                free(yypvt[-0]);
        !           650:                                newflag = 1;
        !           651:                                forst();
        !           652:                                newflag = 0;
        !           653:                                } break;
        !           654: case 33:
        !           655: # line 106 "beauty.y"
        !           656:        {
        !           657:                                xxt = addroot(yypvt[-3],xxident,0,0);
        !           658:                                yyval = addroot("",xxidpar,xxt,yypvt[-1]);
        !           659:                                } break;
        !           660: case 34:
        !           661: # line 111 "beauty.y"
        !           662:        yyval = addroot(yypvt[-0],xxident,0,0); break;
        !           663: case 35:
        !           664: # line 114 "beauty.y"
        !           665:        {
        !           666:                                yield(yypvt[-1],0);
        !           667:                                putout(':',":");
        !           668:                                freetree(yypvt[-1]);
        !           669:                                } break;
        !           670: case 36:
        !           671: # line 119 "beauty.y"
        !           672:        yyval = addroot(yypvt[-1],xxexplist,checkneg(yypvt[-2],0),yypvt[-0]); break;
        !           673: case 37:
        !           674: # line 120 "beauty.y"
        !           675:        yyval = checkneg(yypvt[-0],0); break;
        !           676: case 40:
        !           677: # line 128 "beauty.y"
        !           678:        { t = checkneg(yypvt[-1],0);
        !           679:                                yield(t,100);  freetree(t);     } break;
        !           680: case 41:
        !           681: # line 131 "beauty.y"
        !           682:        yyval = yypvt[-1]; break;
        !           683: case 42:
        !           684: # line 132 "beauty.y"
        !           685:        yyval = addroot(yypvt[-1],xxuminus,yypvt[-0],0); break;
        !           686: case 43:
        !           687: # line 133 "beauty.y"
        !           688:        yyval = yypvt[-0]; break;
        !           689: case 44:
        !           690: # line 134 "beauty.y"
        !           691:        yyval = addroot(yypvt[-1],'!',yypvt[-0],0); break;
        !           692: case 45:
        !           693: # line 135 "beauty.y"
        !           694:        yyval = addroot(yypvt[-1],'+',yypvt[-2],yypvt[-0]); break;
        !           695: case 46:
        !           696: # line 136 "beauty.y"
        !           697:        yyval = addroot(yypvt[-1],'-',yypvt[-2],yypvt[-0]); break;
        !           698: case 47:
        !           699: # line 137 "beauty.y"
        !           700:        yyval = addroot(yypvt[-1],'*',yypvt[-2],yypvt[-0]); break;
        !           701: case 48:
        !           702: # line 138 "beauty.y"
        !           703:        yyval = addroot(yypvt[-1],'/',yypvt[-2],yypvt[-0]); break;
        !           704: case 49:
        !           705: # line 139 "beauty.y"
        !           706:        yyval = addroot(yypvt[-1],'^',yypvt[-2],yypvt[-0]); break;
        !           707: case 50:
        !           708: # line 140 "beauty.y"
        !           709:        yyval = addroot(yypvt[-1],'|',yypvt[-2],yypvt[-0]); break;
        !           710: case 51:
        !           711: # line 141 "beauty.y"
        !           712:        yyval = addroot(yypvt[-1],'&',yypvt[-2],yypvt[-0]); break;
        !           713: case 52:
        !           714: # line 142 "beauty.y"
        !           715:        yyval = addroot(yypvt[-1],'>',yypvt[-2],yypvt[-0]); break;
        !           716: case 53:
        !           717: # line 143 "beauty.y"
        !           718:        yyval = addroot(yypvt[-1],'<',yypvt[-2],yypvt[-0]); break;
        !           719: case 54:
        !           720: # line 144 "beauty.y"
        !           721:        yyval = addroot(yypvt[-1],xxeq,yypvt[-2],yypvt[-0]); break;
        !           722: case 55:
        !           723: # line 145 "beauty.y"
        !           724:        yyval = addroot(yypvt[-1],xxle,yypvt[-2],yypvt[-0]); break;
        !           725: case 56:
        !           726: # line 146 "beauty.y"
        !           727:        yyval = addroot(yypvt[-1],xxge,yypvt[-2],yypvt[-0]); break;
        !           728: case 57:
        !           729: # line 147 "beauty.y"
        !           730:        yyval = addroot(yypvt[-1],xxne,yypvt[-2],yypvt[-0]); break;
        !           731: case 58:
        !           732: # line 148 "beauty.y"
        !           733:        yyval = yypvt[-0]; break;
        !           734: case 59:
        !           735: # line 149 "beauty.y"
        !           736:        yyval = addroot(yypvt[-0],xxnum,0,0); break;
        !           737: case 60:
        !           738: # line 150 "beauty.y"
        !           739:        yyval = addroot(yypvt[-0],xxstring,0,0); break;
        !           740: case 61:
        !           741: # line 153 "beauty.y"
        !           742: 
        !           743:                                {
        !           744:                                if (xxstack[xxstind] == xxelse && !xxlablast)
        !           745:                                        {
        !           746:                                        --xxindent;
        !           747:                                        xxstack[xxstind] = xxelseif;
        !           748:                                        putout(' '," ");
        !           749:                                        }
        !           750:                                else
        !           751:                                        {
        !           752:                                        if (!xxlablast)
        !           753:                                                tab(xxindent);
        !           754:                                        xxlablast = 0;
        !           755:                                        }
        !           756:                                putout(xxif,"if");
        !           757:                                free(yypvt[-0]);
        !           758:                                push(xxif);
        !           759:                                } break;
        !           760: case 62:
        !           761: # line 171 "beauty.y"
        !           762: 
        !           763:                                {
        !           764:                                tab(xxindent);
        !           765:                                putout(xxelse,"else");
        !           766:                                free(yypvt[-0]);
        !           767:                                push(xxelse);
        !           768:                                } break;
        !           769: case 63:
        !           770: # line 178 "beauty.y"
        !           771:        {
        !           772:                                putout(xxwhile,"while");
        !           773:                                free(yypvt[-0]);
        !           774:                                push(xxwhile);
        !           775:                                } break;
        !           776: case 64:
        !           777: # line 183 "beauty.y"
        !           778:                        {
        !           779:                                        putout(xxrept,"repeat");
        !           780:                                        free(yypvt[-0]);
        !           781:                                        push(xxrept);
        !           782:                                        } break;
        !           783: case 67:
        !           784: # line 192 "beauty.y"
        !           785:        {
        !           786:                        putout('\t',"\t");
        !           787:                        putout(xxuntil,"until");
        !           788:                        free(yypvt[-0]);
        !           789:                        } break;
        !           790: case 69:
        !           791: # line 199 "beauty.y"
        !           792: 
        !           793:                                        {push(xxdo);
        !           794:                                        putout(xxdo,"do");
        !           795:                                        free(yypvt[-5]);
        !           796:                                        puttree(yypvt[-4]);
        !           797:                                        putout('=',"=");
        !           798:                                        free(yypvt[-3]);
        !           799:                                        puttree(yypvt[-2]);
        !           800:                                        putout(',',",");
        !           801:                                        free(yypvt[-1]);
        !           802:                                        puttree(yypvt[-0]);
        !           803:                                        } break;
        !           804: case 70:
        !           805: # line 211 "beauty.y"
        !           806:        {
        !           807:                                                putout(',',",");
        !           808:                                                puttree(yypvt[-0]);
        !           809:                                                } break;
        !           810: case 72:
        !           811: # line 216 "beauty.y"
        !           812:        {
        !           813:                                putout('{'," {");
        !           814:                                push(xxlb);
        !           815:                                } break;
        !           816: case 73:
        !           817: # line 220 "beauty.y"
        !           818:        { putout('}',"}");  pop();   } break;
        !           819: case 74:
        !           820: # line 221 "beauty.y"
        !           821:        {
        !           822:                                tab(xxindent);
        !           823:                                putout(xxnum,yypvt[-0]);
        !           824:                                putout(' ',"  ");
        !           825:                                xxlablast = 1;
        !           826:                                } break;
        !           827: case 75:
        !           828: # line 227 "beauty.y"
        !           829:        { putout(xxcom,yypvt[-0]);  free(yypvt[-0]);  xxlablast = 0; } break;
        !           830: case 76:
        !           831: # line 228 "beauty.y"
        !           832:  { putout ('\n',"\n"); putout(xxcom,yypvt[-0]);  free(yypvt[-0]);  xxlablast = 0; } break;
        !           833:                }
        !           834:                goto yystack;  /* stack new state and value */
        !           835: 
        !           836:        }

unix.superglobalmegacorp.com

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