|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.