Annotation of 41BSD/cmd/cifplot/parser.c, revision 1.1.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.