Annotation of 41BSD/cmd/cifplot/parser.c, revision 1.1

1.1     ! root        1: 
        !             2: # line 3 "parser.y"
        !             3: /*******************************************************************
        !             4: *                                                                  *
        !             5: *    File: CIFPLOT/parser.y                                        *
        !             6: *    Written by Dan Fitzpatrick                                    *
        !             7: *    copyright 1980 -- Regents of the University of California     *
        !             8: *                                                                  *
        !             9: ********************************************************************/
        !            10: 
        !            11: /* This is a YACC description for the parser */
        !            12: 
        !            13: /* In the offical CIF language description SEMI = BLANKLIST ';' BLANKLIST
        !            14:  * but this causes ambiguities for the LALR(1) parser so the scanner
        !            15:  * returns ';' when it spots the pattern BLANKLIST ';'
        !            16:  */
        !            17: 
        !            18: #include <stdio.h>
        !            19: #include "defs.h"
        !            20: #include "globals.h"
        !            21: #include "structs.h"
        !            22: #include "alloc.h"
        !            23: 
        !            24: #define yyparse parser
        !            25: #define yylex scanner
        !            26: 
        !            27: #define null  Concat("",0);
        !            28: int Definning=0;
        !            29: int SendAll=0;         /* If set causes the lexical analyzer to return
        !            30:                         * BLANKLIST and ';' seperately */
        !            31: int A = 1;
        !            32: int B = 1;
        !            33: 
        !            34: #define SCALE(x)       ( (((real) A) * ((real) x)) / ((real) B ))
        !            35: 
        !            36: # define BLANK 257
        !            37: # define OTHERCHAR 258
        !            38: # define COMMENT_COMMAND 259
        !            39: #define yyclearin yychar = -1
        !            40: #define yyerrok yyerrflag = 0
        !            41: extern int yychar;
        !            42: extern short yyerrflag;
        !            43: #ifndef YYMAXDEPTH
        !            44: #define YYMAXDEPTH 150
        !            45: #endif
        !            46: #ifndef YYSTYPE
        !            47: #define YYSTYPE int
        !            48: #endif
        !            49: YYSTYPE yylval, yyval;
        !            50: # define YYERRCODE 256
        !            51: 
        !            52: # line 527 "parser.y"
        !            53: 
        !            54: 
        !            55: #include "scanner.c"
        !            56: 
        !            57: short yyexca[] ={
        !            58: -1, 1,
        !            59:        0, -1,
        !            60:        -2, 0,
        !            61: -1, 2,
        !            62:        0, 4,
        !            63:        -2, 167,
        !            64: -1, 23,
        !            65:        59, 35,
        !            66:        -2, 16,
        !            67: -1, 49,
        !            68:        59, 35,
        !            69:        -2, 26,
        !            70: -1, 155,
        !            71:        59, 81,
        !            72:        -2, 160,
        !            73:        };
        !            74: # define YYNPROD 168
        !            75: # define YYLAST 1046
        !            76: short yyact[]={
        !            77: 
        !            78:  242, 158, 132, 183, 226, 227, 192, 193, 184, 157,
        !            79:  182, 194, 162, 164,  89,  90,  91,  92,  93,  94,
        !            80:   95,  96,  97,  98,  36, 159, 160, 167, 166, 165,
        !            81:   70,  99, 100, 101, 102, 103, 104, 105, 106, 107,
        !            82:  108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
        !            83:  118, 119, 120, 121, 122, 123, 124, 188,  68,  66,
        !            84:   64,  61,  11, 192, 193,  55,  52, 133, 194, 132,
        !            85:  150,  89,  90,  91,  92,  93,  94,  95,  96,  97,
        !            86:   98,  11, 131,  57,  44, 149, 220, 218,  99, 100,
        !            87:  101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
        !            88:  111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
        !            89:  121, 122, 123, 124, 230,  54, 200, 214, 231,  76,
        !            90:  192, 193,  10,  26,  75, 194, 198,  34,  89,  90,
        !            91:   91,  92,  93,  94,  95,  96,  97,  98,  43,  22,
        !            92:   21,  20,  19,  18,  17,  99, 100, 101, 102, 103,
        !            93:  104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
        !            94:  114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
        !            95:  124,  16, 129,  36, 126,  25,  27,  50,  15,  14,
        !            96:   13,  41,   6,  36,  83,   5,   2,   1,   0,  36,
        !            97:    0,   0,   0, 159, 217,   0,   0,   0,   0,   0,
        !            98:  192, 193, 159,   0,   0, 194,   0,   0,  89,  90,
        !            99:   91,  92,  93,  94,  95,  96,  97,  98, 159,   0,
        !           100:    0, 181, 174, 232, 191,  99, 100, 101, 102, 103,
        !           101:  104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
        !           102:  114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
        !           103:  124, 188, 207, 170, 204,   0,  36, 192, 193,  38,
        !           104:   12,   0, 194,   0, 180,  89,  90,  91,  92,  93,
        !           105:   94,  95,  96,  97,  98,  48,   0,   0, 224,   0,
        !           106:  235, 191,  99, 100, 101, 102, 103, 104, 105, 106,
        !           107:  107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
        !           108:  117, 118, 119, 120, 121, 122, 123, 124, 234,  89,
        !           109:   90,  91,  92,  93,  94,  95,  96,  97,  98, 146,
        !           110:    0,   0,  89,  90,  91,  92,  93,  94,  95,  96,
        !           111:   97,  98,   0, 251, 250,   0, 253, 232, 191,  99,
        !           112:  100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
        !           113:  110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
        !           114:  120, 121, 122, 123, 124, 141,   0,   0,  89,  90,
        !           115:   91,  92,  93,  94,  95,  96,  97,  98,   0,   0,
        !           116:    0,   0,   0,   0,   0,  99, 100, 101, 102, 103,
        !           117:  104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
        !           118:  114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
        !           119:  124,  87,  88, 186,   0,   0,  86, 215, 191,  89,
        !           120:   90,  91,  92,  93,  94,  95,  96,  97,  98,   0,
        !           121:   48,   0,   0, 187, 185,   0,  99, 100, 101, 102,
        !           122:  103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
        !           123:  113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
        !           124:  123, 124,  89,  90,  91,  92,  93,  94,  95,  96,
        !           125:   97,  98,   0,   0,   0, 191,   0,   0,   0,  99,
        !           126:  100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
        !           127:  110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
        !           128:  120, 121, 122, 123, 124,  99, 100, 101, 102, 103,
        !           129:  104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
        !           130:  114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
        !           131:  124, 136, 137,  99, 100, 101, 102, 103, 104, 105,
        !           132:  106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
        !           133:  116, 117, 118, 119, 120, 121, 122, 123, 124,  59,
        !           134:    4,   0,  35,   0,   0,   4,   0,   0,   0,   0,
        !           135:    0,   4,  11,   0,  35,   0,   0, 136, 137,  29,
        !           136:   33,  24,   9,   0,   4,   0, 156, 134,   0,  32,
        !           137:    0, 140,   4,  28,  11,  30,   0,   0, 202, 211,
        !           138:   31,  29,  33,  47,  29,  33,  24,   4,   0,   0,
        !           139:    4,  32,   0,   0,  32,  28, 211,  30,  28,   0,
        !           140:   30,   0,  31,  29,  33,  31, 211,   0,  36, 155,
        !           141:  212,   0, 216,  32,   0, 211,   0,  28, 221,  30,
        !           142:    0, 135, 153,   0,  31, 138, 142,   0, 144,   0,
        !           143:  142, 147, 233, 148, 145,   0,   0,   0,   7,   0,
        !           144:  161, 163,   0,   0,  39,  40, 154,   3, 233,   0,
        !           145:    0,  36,  37,  45,  58,   0,   0,   0,  42,  85,
        !           146:    0,   0,   0,   0,  53,   0,   0,   0,   0,   4,
        !           147:   35,  51,   0,   0,  56,   0, 139, 136, 137,  67,
        !           148:  125,   0,   0,   0,  62,  62,  62, 128,  62, 152,
        !           149:    0,   0,   0,   0, 127, 189,   0, 130,   0,   4,
        !           150:  199,   0,   0,   0,   0, 136, 137,   0,   0,  35,
        !           151:    0,   0,   0, 176,   0,   0,   0,   0, 178,   0,
        !           152:    0,   0,   0,   4, 195,   0,   0,   0,   0, 201,
        !           153:    0, 203,   0,  84,   0,   0,   0,   0,   0, 205,
        !           154:  219,   0,   0,   0,   0, 206,   0,   0, 155,   8,
        !           155:  155,   0,  23,   0, 143,   0,   0,   0, 143,   0,
        !           156:  219,   0,   0, 151, 213, 168, 155, 155,   0,   0,
        !           157:  155,  46, 152,   0,  49,  36, 169,  23, 190,   0,
        !           158:    0,   0, 155,   0,  60, 190,  62,   0,  62,   0,
        !           159:  236, 237,   0,   4,  36,   0,  49, 240,   0,  62,
        !           160:    0,   0,   0, 152,   0,   0, 197, 190,   0, 173,
        !           161:  248,   0,   0,  62, 249,  63,  65, 190,  69, 252,
        !           162:  190,   0, 179,   0, 190, 190,   0,   0,   0, 152,
        !           163:  209, 225,   0, 228, 190,   0, 175, 143,   0,   0,
        !           164:  190, 175, 143, 190,   0,   0, 151,   0,   0, 238,
        !           165:  239,   0,   0, 241,   0,   0, 190, 208,   0, 210,
        !           166:   62,   0,   0,   0,   0, 247,   0,   0,  62,   0,
        !           167:  152,   0, 175,   0, 175,   0,   0, 151,   0,   0,
        !           168:    0, 223,   0,   0,   0,   0,   0,   0,   0,   0,
        !           169:    0,  62,   0,   0,   0,  62,   0,   0,   0,   0,
        !           170:  254,   0,   0, 151,   0,   0,   0,   0,   0,   0,
        !           171:  243,   0, 245,   0,   0,   0, 171,   0, 172,  71,
        !           172:   72,  73,  77,  78,  79,  80,  81,  82,  74, 177,
        !           173:   89,  90,  91,  92,  93,  94,  95,  96,  97,  98,
        !           174:    0,   0,   0, 196, 151,   0,   0,  99, 100, 101,
        !           175:  102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !           176:  112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
        !           177:  122, 123, 124,   0,   0,   0,   0,   0,   0,   0,
        !           178:    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        !           179:  222,   0,   0,   0,   0,   0,   0,   0, 229,   0,
        !           180:    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        !           181:    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        !           182:    0, 244,   0,   0,   0, 246 };
        !           183: short yypact[]={
        !           184: 
        !           185: -1000,-1000, 513,-233,-1000,   3,  22,-1000,-1000,-1000,
        !           186: -1000,-1000,-1000,-1000, 535,-1000,-1000,-1000,-1000,-1000,
        !           187: -1000,-1000,-1000,-1000,-190,  22,-1000,-1000,-191,-195,
        !           188: -196,-197,-198,-226, 891,-1000,-1000, 371,-1000,-1000,
        !           189: -1000,  22,-233,-1000,-1000,-1000,-1000,-1000,  22,-1000,
        !           190: -1000,  -1,-1000,-1000, 468,-1000,-1000, 440, 320,-1000,
        !           191:  468,-1000, 274, 468,-1000, 468,-1000, 414,-1000,-1000,
        !           192: -1000, -64,-231, -55, -39,-227,-228,-1000,-1000,-1000,
        !           193: -1000,-1000,-1000,-229,-1000,-1000,-1000,-1000,-1000,-1000,
        !           194: -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
        !           195: -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
        !           196: -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
        !           197: -1000,-1000,-1000,-1000,-1000,-1000,  22, -68,-1000,-1000,
        !           198:  538,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
        !           199:  261, 261,-1000,-1000,-1000, 261, 261,-1000,-1000,-1000,
        !           200:  902,-1000,-1000,-1000, -74,-1000, 217,-232,-1000,-1000,
        !           201: -1000,  82,-232, 217,-232,-1000,-1000,-1000,-1000, 557,
        !           202: -1000, 468,-1000,-1000,-1000,-1000, 261, 468, 261,-1000,
        !           203:  468, 902,-1000,-1000,-1000, 217,-1000,-1000,-1000,-1000,
        !           204: -1000,-1000,-1000,-1000,-1000, 217, 468,-233, 160,-1000,
        !           205: -1000,  52, 217, 217,-1000,-1000,-1000, 902,-1000, -84,
        !           206: -1000,-1000, 217,-1000,-1000,-1000,-1000,-1000,  80,-1000,
        !           207: -1000,  23, 468, 468,-1000,-1000,-1000,-1000,-1000, 468,
        !           208: -1000,-1000,-1000,-1000, -34,-1000,-1000,-1000,-1000,-1000,
        !           209: -1000,-1000,-1000,-232,-1000,-1000, 468,-1000, 902,-1000,
        !           210: -1000, 468,-1000,-1000,-233 };
        !           211: short yypgo[]={
        !           212: 
        !           213:    0, 187, 186, 185, 666, 658, 184, 182, 181, 122,
        !           214:  260, 180, 179, 123, 178, 177, 176,  84, 175, 174,
        !           215:  172, 171, 144, 143, 142, 141, 140, 139, 115, 804,
        !           216:  587, 694,  85, 642, 127, 586, 434,  83, 126,  87,
        !           217:  124, 119, 559, 674, 591, 715,  70, 641, 413, 433,
        !           218:  118, 117 };
        !           219: short yyr1[]={
        !           220: 
        !           221:    0,   1,   1,   1,   1,   1,   2,   2,   2,   8,
        !           222:    2,   7,   9,   9,   9,   9,  15,  14,  14,  14,
        !           223:   12,  12,  12,  19,  12,  17,  20,  17,  10,  10,
        !           224:   10,  10,  10,  10,  10,  10,  21,  21,  22,  22,
        !           225:   22,  23,  23,  24,  24,  25,  25,  18,  18,  13,
        !           226:   11,  16,  26,  26,  27,  27,  27,  27,  27,  27,
        !           227:   27,  27,  27,  27,  27,  40,  40,  40,  40,  41,
        !           228:   41,  41,  41,  41,  41,  34,   3,  33,  33,  33,
        !           229:   33,  33,  28,  28,  31,  31,  37,  37,  29,  29,
        !           230:   44,  44,  32,  32,  32,  32,  46,  46,  43,  43,
        !           231:   30,  30,  30,  47,  47,  47,  47,  47,  47,  47,
        !           232:   47,  47,  47,  47,  47,  47,  47,  47,  47,  47,
        !           233:   47,  47,  47,  47,  47,  47,  47,  47,  47,  45,
        !           234:   45,  45,  45,  45,  45,  45,  45,  45,  45,  36,
        !           235:   36,  48,  48,  39,  39,  50,  50,  38,  38,  51,
        !           236:   51,  51,  49,  49,  49,  49,  49,  49,  35,   4,
        !           237:    4,   6,   6,   6,   6,   6,   5,  42 };
        !           238: short yyr2[]={
        !           239: 
        !           240:    0,   3,   3,   3,   1,   5,   3,   2,   1,   0,
        !           241:    4,   1,   1,   1,   2,   1,   0,   4,   1,   1,
        !           242:    2,   2,   2,   0,   4,   2,   0,   4,   1,   1,
        !           243:    1,   1,   1,   1,   1,   1,   2,   2,   6,   8,
        !           244:    2,   4,   2,   4,   2,   3,   2,   4,   8,   3,
        !           245:    4,   2,   3,   2,   4,   5,  13,   4,   7,   8,
        !           246:    4,   7,   9,   3,   3,   1,   1,   1,   1,   1,
        !           247:    1,   1,   1,   1,   1,   1,   1,   4,   5,   5,
        !           248:    4,   1,   3,   1,   3,   2,   2,   3,   2,   3,
        !           249:    2,   1,   1,   2,   3,   4,   1,   1,   2,   1,
        !           250:    1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
        !           251:    1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
        !           252:    1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
        !           253:    1,   1,   1,   1,   1,   1,   1,   1,   1,   2,
        !           254:    1,   1,   1,   2,   1,   1,   1,   2,   1,   1,
        !           255:    1,   1,   1,   1,   1,   1,   1,   1,   2,   2,
        !           256:    1,   1,   1,   1,   1,   1,   2,   0 };
        !           257: short yychk[]={
        !           258: 
        !           259: -1000,  -1,  -2,  -4, -42,  -3,  -7,  -5, 256,  69,
        !           260:   -9,  59, -10, -11, -12, -14, -21, -22, -23, -24,
        !           261:  -25, -26, -27, 259,  68, -18, -13, -16,  80,  66,
        !           262:   82,  87,  76,  67, -34, -42, 257,  -4, 256,  -5,
        !           263:   -5,  -8,  -4, -13, -17,  -5, 256,  68, -10, 259,
        !           264:  -15,  -4, 256,  -5, -28, 256, -31, -37, -43, -42,
        !           265:  -29, 256, -43, -29, 256, -29, 256,  -4, 256, -29,
        !           266:  256,  48,  49,  50,  57, -40, -41,  51,  52,  53,
        !           267:   54,  55,  56,  -6, -45, -47,  45,  40,  41,  48,
        !           268:   49,  50,  51,  52,  53,  54,  55,  56,  57,  65,
        !           269:   66,  67,  68,  69,  70,  71,  72,  73,  74,  75,
        !           270:   76,  77,  78,  79,  80,  81,  82,  83,  84,  85,
        !           271:   86,  87,  88,  89,  90,  -5, -19,  -4,  -5, -20,
        !           272:   -4,  83,  70,  68, -30, -47, 257, 258, -30, 256,
        !           273:  -44,  45, -30, -45, -30, -44,  45, -30, -30, -32,
        !           274:  -46, -45, -47, -33,  -4, -42, -35,  73,  65, 257,
        !           275:  257, -35,  67, -35,  52, 256, 256, 256,  -5,  -4,
        !           276:   -9, -29, -29, -31, -37, -45, -44, -29, -44, -31,
        !           277:  -28, -46,  84,  77,  82, -36, -48, -49,  34, -45,
        !           278:  -47, 258,  40,  41,  45, -35, -29,  -4, -38, -42,
        !           279:   34, -35, -36, -35, -17, -30, -30, -46, -31,  -4,
        !           280:  -31, -48, -36, -30, -51, 257, -49,  34, -39, -42,
        !           281:   34, -36, -29, -31, -46, -33,  88,  89, -33, -29,
        !           282:   34, -50, 257, -49, -39, 257, -30, -30, -33, -33,
        !           283:  -30, -33,  34, -31, -29, -31, -29, -33, -35, -30,
        !           284:  -32, -37, -30, -37,  -4 };
        !           285: short yydef[]={
        !           286: 
        !           287:  167,  -2,  -2,   8, 160, 167,   0,   7,   9,  76,
        !           288:   11, 167,  12,  13, 167,  15,  28,  29,  30,  31,
        !           289:   32,  33,  34,  -2, 167,   0,  18,  19, 167, 167,
        !           290:  167, 167, 167, 167,   0,  75, 159,   1,   2,   3,
        !           291:    6,   0, 166,  14,  20,  21,  23, 167,   0,  -2,
        !           292:  167,   0,  51,  22,  36,  37,  83,   0,   0,  99,
        !           293:    0,  40,   0,   0,  42,   0,  44,   0,  46, 167,
        !           294:   53,  65,  66,  67,  68,   0,   0,  69,  70,  71,
        !           295:   72,  73,  74,   0, 161, 162, 163, 164, 165, 129,
        !           296:  130, 131, 132, 133, 134, 135, 136, 137, 138, 103,
        !           297:  104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
        !           298:  114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
        !           299:  124, 125, 126, 127, 128,  10,   0,   0,  25, 167,
        !           300:  167, 167,  49, 167, 167, 100, 101, 102, 167,  85,
        !           301:   86,   0,  98,  91, 167,  88,   0, 167, 167,  45,
        !           302:   92,  96,  97,  52,   0,  -2,   0,   0, 167, 167,
        !           303:  167,   0,   0,   0,   0,  63,  64,   5,  24, 167,
        !           304:   17,  47,  50,  82,  84,  90,  87,   0,  89,  41,
        !           305:   43,  93, 167, 167, 167,  54, 140, 141, 142, 152,
        !           306:  153, 154, 155, 156, 157,   0,   0, 158,  57, 148,
        !           307:  167,   0,  60,   0,  27, 167, 167,  94, 167,   0,
        !           308:  167, 139,  55, 167, 147, 149, 150, 151,   0, 144,
        !           309:  167,   0,   0,  38,  95,  77, 167, 167,  80,   0,
        !           310:  167, 143, 145, 146,   0, 167, 167, 167,  78,  79,
        !           311:  167,  58, 167,  61,  48,  39,   0,  59,   0, 167,
        !           312:   62,   0, 167, 167,  56 };
        !           313: #
        !           314: # define YYFLAG -1000
        !           315: # define YYERROR goto yyerrlab
        !           316: # define YYACCEPT return(0)
        !           317: # define YYABORT return(1)
        !           318: 
        !           319: /*     parser for yacc output  */
        !           320: 
        !           321: #ifdef YYDEBUG
        !           322: int yydebug = 0; /* 1 for debugging */
        !           323: #endif
        !           324: YYSTYPE yyv[YYMAXDEPTH]; /* where the values are stored */
        !           325: int yychar = -1; /* current input token number */
        !           326: int yynerrs = 0;  /* number of errors */
        !           327: short yyerrflag = 0;  /* error recovery flag */
        !           328: 
        !           329: yyparse() {
        !           330: 
        !           331:        short yys[YYMAXDEPTH];
        !           332:        short yyj, yym;
        !           333:        register YYSTYPE *yypvt;
        !           334:        register short yystate, *yyps, yyn;
        !           335:        register YYSTYPE *yypv;
        !           336:        register short *yyxi;
        !           337: 
        !           338:        yystate = 0;
        !           339:        yychar = -1;
        !           340:        yynerrs = 0;
        !           341:        yyerrflag = 0;
        !           342:        yyps= &yys[-1];
        !           343:        yypv= &yyv[-1];
        !           344: 
        !           345:  yystack:    /* put a state and value onto the stack */
        !           346: 
        !           347: #ifdef YYDEBUG
        !           348:        if( yydebug  ) printf( "state %d, char 0%o\n", yystate, yychar );
        !           349: #endif
        !           350:                if( ++yyps> &yys[YYMAXDEPTH] ) { yyerror( "yacc stack overflow" ); return(1); }
        !           351:                *yyps = yystate;
        !           352:                ++yypv;
        !           353:                *yypv = yyval;
        !           354: 
        !           355:  yynewstate:
        !           356: 
        !           357:        yyn = yypact[yystate];
        !           358: 
        !           359:        if( yyn<= YYFLAG ) goto yydefault; /* simple state */
        !           360: 
        !           361:        if( yychar<0 ) if( (yychar=yylex())<0 ) yychar=0;
        !           362:        if( (yyn += yychar)<0 || yyn >= YYLAST ) goto yydefault;
        !           363: 
        !           364:        if( yychk[ yyn=yyact[ yyn ] ] == yychar ){ /* valid shift */
        !           365:                yychar = -1;
        !           366:                yyval = yylval;
        !           367:                yystate = yyn;
        !           368:                if( yyerrflag > 0 ) --yyerrflag;
        !           369:                goto yystack;
        !           370:                }
        !           371: 
        !           372:  yydefault:
        !           373:        /* default state action */
        !           374: 
        !           375:        if( (yyn=yydef[yystate]) == -2 ) {
        !           376:                if( yychar<0 ) if( (yychar=yylex())<0 ) yychar = 0;
        !           377:                /* look through exception table */
        !           378: 
        !           379:                for( yyxi=yyexca; (*yyxi!= (-1)) || (yyxi[1]!=yystate) ; yyxi += 2 ) ; /* VOID */
        !           380: 
        !           381:                while( *(yyxi+=2) >= 0 ){
        !           382:                        if( *yyxi == yychar ) break;
        !           383:                        }
        !           384:                if( (yyn = yyxi[1]) < 0 ) return(0);   /* accept */
        !           385:                }
        !           386: 
        !           387:        if( yyn == 0 ){ /* error */
        !           388:                /* error ... attempt to resume parsing */
        !           389: 
        !           390:                switch( yyerrflag ){
        !           391: 
        !           392:                case 0:   /* brand new error */
        !           393: 
        !           394:                        yyerror( "syntax error" );
        !           395:                yyerrlab:
        !           396:                        ++yynerrs;
        !           397: 
        !           398:                case 1:
        !           399:                case 2: /* incompletely recovered error ... try again */
        !           400: 
        !           401:                        yyerrflag = 3;
        !           402: 
        !           403:                        /* find a state where "error" is a legal shift action */
        !           404: 
        !           405:                        while ( yyps >= yys ) {
        !           406:                           yyn = yypact[*yyps] + YYERRCODE;
        !           407:                           if( yyn>= 0 && yyn < YYLAST && yychk[yyact[yyn]] == YYERRCODE ){
        !           408:                              yystate = yyact[yyn];  /* simulate a shift of "error" */
        !           409:                              goto yystack;
        !           410:                              }
        !           411:                           yyn = yypact[*yyps];
        !           412: 
        !           413:                           /* the current yyps has no shift onn "error", pop stack */
        !           414: 
        !           415: #ifdef YYDEBUG
        !           416:                           if( yydebug ) printf( "error recovery pops state %d, uncovers %d\n", *yyps, yyps[-1] );
        !           417: #endif
        !           418:                           --yyps;
        !           419:                           --yypv;
        !           420:                           }
        !           421: 
        !           422:                        /* there is no state on the stack with an error shift ... abort */
        !           423: 
        !           424:        yyabort:
        !           425:                        return(1);
        !           426: 
        !           427: 
        !           428:                case 3:  /* no shift yet; clobber input char */
        !           429: 
        !           430: #ifdef YYDEBUG
        !           431:                        if( yydebug ) printf( "error recovery discards char %d\n", yychar );
        !           432: #endif
        !           433: 
        !           434:                        if( yychar == 0 ) goto yyabort; /* don't discard EOF, quit */
        !           435:                        yychar = -1;
        !           436:                        goto yynewstate;   /* try again in the same state */
        !           437: 
        !           438:                        }
        !           439: 
        !           440:                }
        !           441: 
        !           442:        /* reduction by production yyn */
        !           443: 
        !           444: #ifdef YYDEBUG
        !           445:                if( yydebug ) printf("reduce %d\n",yyn);
        !           446: #endif
        !           447:                yyps -= yyr2[yyn];
        !           448:                yypvt = yypv;
        !           449:                yypv -= yyr2[yyn];
        !           450:                yyval = yypv[1];
        !           451:                yym=yyn;
        !           452:                        /* consult goto table to find next state */
        !           453:                yyn = yyr1[yyn];
        !           454:                yyj = yypgo[yyn] + *yyps + 1;
        !           455:                if( yyj>=YYLAST || yychk[ yystate = yyact[yyj] ] != -yyn ) yystate = yyact[yypgo[yyn]];
        !           456:                switch(yym){
        !           457:                        
        !           458: case 2:
        !           459: # line 47 "parser.y"
        !           460: { Error("Improper Ending",FATAL); } break;
        !           461: case 3:
        !           462: # line 49 "parser.y"
        !           463: { Error("Semi-Colon found after End",
        !           464:                                                        RECOVERABLE); } break;
        !           465: case 4:
        !           466: # line 52 "parser.y"
        !           467: { Error("No End Statement",RECOVERABLE); } break;
        !           468: case 5:
        !           469: # line 54 "parser.y"
        !           470: { Error("Garbage after End Statement",
        !           471:                                                        RECOVERABLE); } break;
        !           472: case 9:
        !           473: # line 63 "parser.y"
        !           474: { Error("Unrecognizable Command",FATAL); } break;
        !           475: case 12:
        !           476: # line 73 "parser.y"
        !           477: { Execute(yypvt[-0]);          } break;
        !           478: case 14:
        !           479: # line 76 "parser.y"
        !           480: { Execute(yypvt[-1]);
        !           481:                                          Definning = 0;
        !           482:                                          A=1; B=1;             } break;
        !           483: case 16:
        !           484: # line 84 "parser.y"
        !           485: { Error("Comments must end with a semi-colon",
        !           486:                                                        RECOVERABLE);           } break;
        !           487: case 17:
        !           488: # line 87 "parser.y"
        !           489: { yyval = yypvt[-3]; } break;
        !           490: case 18:
        !           491: # line 89 "parser.y"
        !           492: { Error("Define Finnished found outside of Definition",
        !           493:                                                        FATAL); 
        !           494:                                          yyval = yypvt[-0];    } break;
        !           495: case 19:
        !           496: # line 93 "parser.y"
        !           497: { Error("Unrecognized Definition Command",
        !           498:                                                        FATAL); } break;
        !           499: case 20:
        !           500: # line 99 "parser.y"
        !           501: { yyval = AddCmd(yypvt[-1],yypvt[-0]); } break;
        !           502: case 21:
        !           503: # line 101 "parser.y"
        !           504: { yyval = yypvt[-1]; } break;
        !           505: case 22:
        !           506: # line 103 "parser.y"
        !           507: { Definning = 1;
        !           508:                                          A=(int) ((Command *) yypvt[-1])->Ctype.Symbl.a;
        !           509:                                          B=(int) ((Command *) yypvt[-1])->Ctype.Symbl.b;
        !           510:                                          yyval = yypvt[-1];            } break;
        !           511: case 23:
        !           512: # line 108 "parser.y"
        !           513: { yyval = yypvt[-1];
        !           514:                                          Error("Unrecognized or Illegal Command in Definition",
        !           515:                                                        FATAL); } break;
        !           516: case 25:
        !           517: # line 116 "parser.y"
        !           518: { yyval = yypvt[-1]; } break;
        !           519: case 26:
        !           520: # line 118 "parser.y"
        !           521: { Error("Comments must end with a semi-colon",RECOVERABLE); } break;
        !           522: case 27:
        !           523: # line 120 "parser.y"
        !           524: { yyval = yypvt[-0];   } break;
        !           525: case 36:
        !           526: # line 136 "parser.y"
        !           527: { /* Polygons must have more than two
        !           528:                                           * vertices to be well defined */
        !           529:                                          if( ((struct PathHeader *) yypvt[-0])->PNo < 3)
        !           530:                                                Error("Degenerate Polygon",WARNING);
        !           531:                                          /* Polygons with less than two vertices are
        !           532:                                            * useless   */
        !           533:                                          if( ((struct PathHeader *) yypvt[-0])->PNo < 2) {
        !           534:                                                Error("Command Ignored",WARNING);
        !           535:                                                yyval = MakeComment();
        !           536:                                                }
        !           537:                                              else
        !           538:                                                yyval = MakePoly(yypvt[-0]);    } break;
        !           539: case 37:
        !           540: # line 149 "parser.y"
        !           541: { Error("Bad Path Descriptor in Polygon",FATAL);               
        !           542:                                          yyval = MakeComment();        } break;
        !           543: case 38:
        !           544: # line 155 "parser.y"
        !           545: { yyval = MakeBox(SCALE(yypvt[-4]),SCALE(yypvt[-2]),yypvt[-0],
        !           546:                                                        MakePoint(1.0,0.0)); 
        !           547:                                          Free(yypvt[-0]);              } break;
        !           548: case 39:
        !           549: # line 159 "parser.y"
        !           550: { if(!CheckPoint(yypvt[-0]))
        !           551:                                                Error("Bad Direction Vector in Box Command",FATAL);
        !           552:                                          yyval = MakeBox(SCALE(yypvt[-6]),SCALE(yypvt[-4]),yypvt[-2],yypvt[-0]);
        !           553:                                          Free(yypvt[-2]); Free(yypvt[-0]);     } break;
        !           554: case 40:
        !           555: # line 164 "parser.y"
        !           556: { Error("Illegal Box Description",FATAL);
        !           557:                                          yyval = MakeComment();        } break;
        !           558: case 41:
        !           559: # line 170 "parser.y"
        !           560: { yyval = MakeFlash(SCALE(yypvt[-2]),yypvt[-0]);} break;
        !           561: case 42:
        !           562: # line 172 "parser.y"
        !           563: { Error("Illegal Round Flash Description",FATAL);
        !           564:                                          yyval = MakeComment();        } break;
        !           565: case 43:
        !           566: # line 178 "parser.y"
        !           567: { if( ((struct PathHeader *) yypvt[-0])->PNo < 2) 
        !           568:                                                Error("Degenerate Wire",WARNING);
        !           569:                                          yyval = MakeWire(SCALE(yypvt[-2]),yypvt[-0]); } break;
        !           570: case 44:
        !           571: # line 182 "parser.y"
        !           572: { Error("Illegal Wire Description",FATAL);
        !           573:                                          yyval = MakeComment();        } break;
        !           574: case 45:
        !           575: # line 188 "parser.y"
        !           576: { yyval = MakeLayer(yypvt[-0]);        } break;
        !           577: case 46:
        !           578: # line 190 "parser.y"
        !           579: { Error("Illegal Layer Command",FATAL);
        !           580:                                          yyval = MakeComment();        } break;
        !           581: case 47:
        !           582: # line 196 "parser.y"
        !           583: { yyval = MakeSymbol(yypvt[-0],1,1);} break;
        !           584: case 48:
        !           585: # line 198 "parser.y"
        !           586: { yyval = MakeSymbol(yypvt[-4],yypvt[-2],yypvt[-0]);} break;
        !           587: case 49:
        !           588: # line 203 "parser.y"
        !           589: { yyval = 0; } break;
        !           590: case 50:
        !           591: # line 208 "parser.y"
        !           592: { DeleteDefintion(yypvt[-0]);
        !           593:                                          yyval = MakeComment();        } break;
        !           594: case 52:
        !           595: # line 219 "parser.y"
        !           596: { yyval = MakeCall(yypvt[-1],yypvt[-0]);       } break;
        !           597: case 53:
        !           598: # line 221 "parser.y"
        !           599: { Error("Illegal Call Command",FATAL);         
        !           600:                                          yyval = MakeComment();        } break;
        !           601: case 54:
        !           602: # line 227 "parser.y"
        !           603: { yyval = MakeComment();
        !           604:                                          if(!standard)
        !           605:                                             Include(yypvt[-0]);
        !           606:                                           else
        !           607:                                             Error("User Extention Ignored\n",WARNING);
        !           608:                                         SendAll = 0;
        !           609:                                         Free(yypvt[-0]);               } break;
        !           610: case 55:
        !           611: # line 235 "parser.y"
        !           612: { yyval = MakeComment();
        !           613:                                          if(!standard)
        !           614:                                             Include(yypvt[-1]);
        !           615:                                           else
        !           616:                                             Error("User Extention Ignored\n",WARNING);
        !           617:                                          SendAll = 0;
        !           618:                                          Free(yypvt[-1]);              } break;
        !           619: case 56:
        !           620: # line 243 "parser.y"
        !           621: { if(!standard)
        !           622:                                             yyval = MakeArray(yypvt[-9],yypvt[-7],yypvt[-5],SCALE(yypvt[-3]),SCALE(yypvt[-1]));
        !           623:                                           else {
        !           624:                                             Error("User Extention Ignored\n",WARNING);
        !           625:                                             yyval = MakeComment();
        !           626:                                             }
        !           627:                                          SendAll = 0;          } break;
        !           628: case 57:
        !           629: # line 251 "parser.y"
        !           630: { yyval = MakeComment();
        !           631:                                          if(!standard)
        !           632:                                             fprintf(stderr,"%s\n",yypvt[-0]);
        !           633:                                           else
        !           634:                                             Error("User Extention Ignored\n",WARNING);
        !           635:                                          SendAll = 0;
        !           636:                                          Free(yypvt[-0]);              } break;
        !           637: case 58:
        !           638: # line 259 "parser.y"
        !           639: { if(!standard)
        !           640:                                             yyval = MakeText(yypvt[-2],yypvt[-0],'l');
        !           641:                                           else {
        !           642:                                             Error("User Extention Ignored\n",WARNING);
        !           643:                                             yyval = MakeComment();
        !           644:                                             }
        !           645:                                          SendAll = 0;          } break;
        !           646: case 59:
        !           647: # line 267 "parser.y"
        !           648: { if(!standard)
        !           649:                                             yyval = MakeText(yypvt[-2],yypvt[-0],'c');
        !           650:                                           else {
        !           651:                                             Error("User Extention Ignored\n",WARNING);
        !           652:                                             yyval = MakeComment();
        !           653:                                             }
        !           654:                                          SendAll = 0;          } break;
        !           655: case 60:
        !           656: # line 275 "parser.y"
        !           657: { if(!standard)
        !           658:                                             yyval = MakeName(yypvt[-0]);
        !           659:                                           else {
        !           660:                                             Error("User Extention Ignored\n",WARNING);
        !           661:                                             yyval = MakeComment();
        !           662:                                             }
        !           663:                                          SendAll = 0;          } break;
        !           664: case 61:
        !           665: # line 283 "parser.y"
        !           666: { if(!standard) {
        !           667:                                            yyval = MakePointName(yypvt[-2],yypvt[-0],"all");
        !           668:                                            Free(yypvt[-0]);
        !           669:                                            }
        !           670:                                          else {
        !           671:                                             Error("User Extention Ignored\n",WARNING);
        !           672:                                             yyval = MakeComment();
        !           673:                                             }
        !           674:                                          SendAll = 0;          } break;
        !           675: case 62:
        !           676: # line 293 "parser.y"
        !           677: { if(!standard) {
        !           678:                                            yyval = MakePointName(yypvt[-4],yypvt[-2],yypvt[-0]);
        !           679:                                            Free(yypvt[-2]);
        !           680:                                            }
        !           681:                                          else {
        !           682:                                             Error("User Extention Ignored\n",WARNING);
        !           683:                                             yyval = MakeComment();
        !           684:                                             }
        !           685:                                          SendAll = 0;          } break;
        !           686: case 63:
        !           687: # line 303 "parser.y"
        !           688: { yyval = MakeComment();
        !           689:                                          Error("Bad Syntax in Extension Command --- Command Ignored",
        !           690:                                                                WARNING);
        !           691:                                           SendAll = 0;   } break;
        !           692: case 64:
        !           693: # line 308 "parser.y"
        !           694: { yyval = MakeComment();
        !           695:                                          Error("Unimplemented User Extension",
        !           696:                                                                WARNING);
        !           697:                                          SendAll = 0;     } break;
        !           698: case 75:
        !           699: # line 323 "parser.y"
        !           700: {SendAll = 1; } break;
        !           701: case 77:
        !           702: # line 332 "parser.y"
        !           703: { yyval = Translate(yypvt[-1],yypvt[-0]);      
        !           704:                                          if(output == NOPLOT)
        !           705:                                              Free(((transform *) yypvt[-0])->TransString);
        !           706:                                          Free(yypvt[-1]);  FreeTransform(yypvt[-0]);   } break;
        !           707: case 78:
        !           708: # line 337 "parser.y"
        !           709: { yyval = Mirror('x',yypvt[-0]);       
        !           710:                                          if(output == NOPLOT)
        !           711:                                              Free(((transform *) yypvt[-0])->TransString);
        !           712:                                          FreeTransform(yypvt[-0]);             } break;
        !           713: case 79:
        !           714: # line 342 "parser.y"
        !           715: { yyval = Mirror('y',yypvt[-0]);       
        !           716:                                          if(output == NOPLOT)
        !           717:                                              Free(((transform *) yypvt[-0])->TransString);
        !           718:                                          FreeTransform(yypvt[-0]);             } break;
        !           719: case 80:
        !           720: # line 347 "parser.y"
        !           721: { if(!CheckPoint(yypvt[-1]))
        !           722:                                              Error("Bad Rotation Vector",FATAL);
        !           723:                                          yyval = Rotate(yypvt[-1],yypvt[-0]);
        !           724:                                          if(output == NOPLOT)
        !           725:                                              Free(((transform *) yypvt[-0])->TransString);
        !           726:                                          Free(yypvt[-1]);  FreeTransform(yypvt[-0]);   } break;
        !           727: case 81:
        !           728: # line 354 "parser.y"
        !           729: { yyval = MakeTransform();             } break;
        !           730: case 82:
        !           731: # line 359 "parser.y"
        !           732: { yyval = AddPath(yypvt[-2],yypvt[-0]);
        !           733:                                          Free(yypvt[-0]);              } break;
        !           734: case 83:
        !           735: # line 362 "parser.y"
        !           736: { yyval = MakePath(yypvt[-0]);         } break;
        !           737: case 84:
        !           738: # line 367 "parser.y"
        !           739: { yyval = MakePoint(SCALE(yypvt[-2]),SCALE(yypvt[-0]));        } break;
        !           740: case 85:
        !           741: # line 369 "parser.y"
        !           742: { Error("Odd number of values encountered",
        !           743:                                                        FATAL); 
        !           744:                                          yyval = MakePoint(SCALE(yypvt[-1]),0.0);} break;
        !           745: case 86:
        !           746: # line 376 "parser.y"
        !           747: { yyval = yypvt[-0]; } break;
        !           748: case 87:
        !           749: # line 378 "parser.y"
        !           750: { yyval = - yypvt[-0];         } break;
        !           751: case 88:
        !           752: # line 383 "parser.y"
        !           753: { yyval = yypvt[-0]; } break;
        !           754: case 89:
        !           755: # line 385 "parser.y"
        !           756: { Error("Expected Positive Integer",FATAL);
        !           757:                                          yyval = yypvt[-0];                    } break;
        !           758: case 90:
        !           759: # line 391 "parser.y"
        !           760: { if (yypvt[-1] > (0x800000 / 10)) {
        !           761:                                                Error("Integers may not exceed 2**24",
        !           762:                                                                FATAL);
        !           763:                                                yyval = 0;
        !           764:                                                }
        !           765:                                            else
        !           766:                                                yyval = (yypvt[-1]*10)+yypvt[-0]-'0';   } break;
        !           767: case 91:
        !           768: # line 399 "parser.y"
        !           769: { yyval = yypvt[-0] - '0';     } break;
        !           770: case 93:
        !           771: # line 405 "parser.y"
        !           772: { yyval = Concat(yypvt[-1],yypvt[-0],0);
        !           773:                                          Free(yypvt[-1]); Free(yypvt[-0]);              } break;
        !           774: case 94:
        !           775: # line 408 "parser.y"
        !           776: { yyval = Concat(yypvt[-2],yypvt[-1],yypvt[-0],0);
        !           777:                                          Free(yypvt[-2]); Free(yypvt[-1]); Free(yypvt[-0]);    } break;
        !           778: case 95:
        !           779: # line 411 "parser.y"
        !           780: { yyval = Concat(yypvt[-3],yypvt[-2],yypvt[-1],yypvt[-0],0);
        !           781:                                          Free(yypvt[-3]); Free(yypvt[-2]);
        !           782:                                          Free(yypvt[-1]); Free(yypvt[-0]);             } break;
        !           783: case 96:
        !           784: # line 418 "parser.y"
        !           785: { yyval = MakeString(yypvt[-0]); } break;
        !           786: case 97:
        !           787: # line 420 "parser.y"
        !           788: { yyval = MakeString(yypvt[-0]); } break;
        !           789: case 139:
        !           790: # line 448 "parser.y"
        !           791: { yyval = Concat(yypvt[-1],yypvt[-0],0);
        !           792:                                          Free(yypvt[-1]); Free(yypvt[-0]);             } break;
        !           793: case 142:
        !           794: # line 456 "parser.y"
        !           795: { yyval = MakeString('"'); } break;
        !           796: case 143:
        !           797: # line 461 "parser.y"
        !           798: { yyval = Concat(yypvt[-1],yypvt[-0],0);
        !           799:                                          Free(yypvt[-1]); Free(yypvt[-0]);             } break;
        !           800: case 144:
        !           801: # line 464 "parser.y"
        !           802: { yyval = null;                } break;
        !           803: case 145:
        !           804: # line 469 "parser.y"
        !           805: { yyval = MakeString(yypvt[-0]); } break;
        !           806: case 147:
        !           807: # line 475 "parser.y"
        !           808: { yyval = Concat(yypvt[-1],yypvt[-0],0);
        !           809:                                          Free(yypvt[-1]); Free(yypvt[-0]);             } break;
        !           810: case 148:
        !           811: # line 478 "parser.y"
        !           812: { yyval = null;                } break;
        !           813: case 149:
        !           814: # line 483 "parser.y"
        !           815: { yyval = MakeString(yypvt[-0]); } break;
        !           816: case 151:
        !           817: # line 486 "parser.y"
        !           818: { yyval = MakeString('"'); } break;
        !           819: case 152:
        !           820: # line 491 "parser.y"
        !           821: { yyval = MakeString(yypvt[-0]); } break;
        !           822: case 153:
        !           823: # line 493 "parser.y"
        !           824: { yyval = MakeString(yypvt[-0]); } break;
        !           825: case 154:
        !           826: # line 495 "parser.y"
        !           827: { yyval = MakeString(yypvt[-0]); } break;
        !           828: case 155:
        !           829: # line 497 "parser.y"
        !           830: { yyval = MakeString('('); } break;
        !           831: case 156:
        !           832: # line 499 "parser.y"
        !           833: { yyval = MakeString(')'); } break;
        !           834: case 157:
        !           835: # line 501 "parser.y"
        !           836: { yyval = MakeString('-'); } break;
        !           837:                }
        !           838:                goto yystack;  /* stack new state and value */
        !           839: 
        !           840:        }

unix.superglobalmegacorp.com

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