// This may look like C code, but it is really -*- C++ -*- // A Bison++ parser, made from vhdl_par.y #line 1 "vhdl_par.y" /**** System Include Files ****/ #ifdef ESKIT #include "esk_base.h" #include "utils.h" #else #include #include #include #include #endif /**** Other Include Files ****/ #include "defines.h" #include "data_struct.h" /* declarations for local variables used by the parser */ int YY_count; #ifndef ESKIT #include #endif #include "vhdl_par.tab.h" #define YYFINAL 429 #define YYFLAG -32768 #define YYNTBASE 82 #define YYTRANSLATE(x) ((unsigned)(x) <= 336 ? yytranslate[x] : 205) static const char yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81 }; static const short yyrline[] = { 0, 73, 75, 76, 78, 79, 80, 81, 82, 84, 86, 88, 92, 94, 95, 97, 98, 99, 101, 104, 107, 108, 110, 114, 117, 118, 120, 125, 126, 127, 128, 130, 131, 133, 135, 136, 138, 140, 141, 143, 146, 147, 150, 153, 155, 158, 160, 161, 164, 165, 166, 167, 168, 170, 173, 176, 179, 180, 182, 183, 185, 190, 191, 193, 194, 196, 198, 199, 201, 202, 204, 205, 208, 209, 216, 217, 219, 220, 222, 223, 225, 228, 229, 230, 232, 234, 236, 237, 240, 243, 245, 246, 248, 249, 254, 255, 257, 259, 260, 263, 264, 265, 266, 268, 272, 274, 275, 278, 279, 280, 281, 282, 283, 284, 285, 287, 288, 290, 293, 297, 298, 300, 302, 304, 305, 308, 309, 310, 311, 312, 313, 315, 316, 317, 320, 321, 322, 324, 325, 326, 328, 331, 332, 333, 334, 335, 337, 338, 339, 340, 343, 345, 348, 350, 352, 353, 354, 355, 357, 358, 359, 361, 363, 365, 366, 367, 369, 370, 372, 375, 379, 382, 386, 390, 390, 391, 393, 395, 396, 398, 399, 402, 405, 407, 412, 413, 414, 415, 417, 419, 420, 423, 423, 424, 425, 427, 428, 431, 435, 440, 443, 446, 447, 449, 450, 452, 454, 455, 457, 459, 460, 462, 463, 465, 466, 468, 470, 472, 473, 475, 476, 478, 480, 481, 483, 484, 485 }; static const char * const yytname[] = { 0, "error","$illegal.","ENTITY","IS","FINISH","PORT","OPENBR","CLOSEBR","COLON","IN", "OUT","INOUT","BIT","BIT_VECTOR","INTEGER","TO","COMMA","SEMI","DOWNTO","SIGNAL", "VARIABLE","AND","OR","NOT","PLUS","MINUS","MULT","DIV","GT","LT", "EQ","PROCESS","BEG","ARCHITECTURE","OF","IF","THEN","ELSE","LOOP","WHILE", "ARRAY","ELSIF","ALIAS","UNTIL","ON","FOR","WAIT","QUOTE","PACKAGE","USE", "TYPE","FUNCTION","SUBTYPE","RSHIFT","LSHIFT","AFTER","QUIET","STABLE","LIBRARY","CONCAT", "XOR","XNOR","NAND","NOR","BIN","HEX","OCT","DEC","TRANSPORT","BLCK", "CASE","WHEN","OTHERS","PIPE","PROCEDURE","PROC_CALL","Identifier","Const","ZERO","ONE", "OTHER","vhdl_src" }; static const short yyr1[] = { 0, 82, 83, 83, 84, 84, 84, 84, 84, 85, 86, 87, 88, 89, 89, 90, 90, 90, 92, 91, 93, 93, 94, 95, 96, 96, 97, 98, 98, 98, 98, 99, 99, 99, 100, 100, 100, 101, 101, 102, 103, 103, 105, 106, 104, 107, 108, 108, 109, 109, 109, 109, 109, 110, 111, 112, 113, 113, 114, 114, 115, 116, 116, 117, 117, 118, 119, 119, 120, 120, 121, 121, 123, 122, 124, 124, 125, 125, 126, 126, 127, 128, 128, 128, 129, 130, 131, 131, 133, 132, 134, 134, 135, 135, 136, 136, 137, 138, 138, 139, 139, 139, 139, 140, 141, 142, 142, 143, 143, 143, 143, 143, 143, 143, 143, 144, 144, 145, 146, 147, 147, 147, 147, 147, 147, 148, 148, 148, 148, 148, 148, 149, 149, 149, 150, 150, 150, 151, 151, 151, 151, 152, 152, 152, 152, 152, 153, 153, 153, 153, 154, 154, 155, 156, 157, 157, 157, 157, 158, 158, 158, 159, 159, 160, 160, 160, 161, 161, 162, 163, 165, 164, 167, 166, 168, 168, 169, 170, 170, 171, 171, 173, 174, 172, 175, 176, 177, 178, 175, 179, 180, 179, 182, 183, 181, 184, 181, 186, 185, 187, 188, 189, 189, 190, 190, 191, 192, 192, 193, 194, 194, 195, 195, 196, 196, 197, 198, 200, 199, 201, 201, 202, 203, 203, 204, 204, 204 }; static const short yyr2[] = { 0, 1, 0, 2, 1, 1, 1, 1, 1, 3, 3, 7, 2, 0, 2, 1, 1, 1, 0, 8, 0, 1, 5, 2, 0, 3, 4, 0, 1, 1, 1, 1, 8, 1, 1, 6, 1, 1, 1, 2, 0, 3, 0, 0, 13, 1, 0, 2, 1, 1, 1, 1, 1, 5, 5, 6, 1, 1, 2, 2, 10, 0, 3, 3, 1, 2, 0, 3, 1, 1, 1, 3, 0, 11, 0, 3, 0, 2, 0, 3, 5, 0, 1, 1, 1, 1, 0, 2, 0, 4, 0, 1, 1, 7, 0, 2, 1, 0, 2, 1, 1, 1, 1, 6, 1, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 9, 1, 3, 3, 2, 3, 3, 1, 1, 1, 1, 1, 1, 1, 3, 3, 1, 1, 1, 1, 3, 3, 2, 1, 1, 1, 1, 1, 1, 1, 4, 4, 1, 1, 1, 3, 1, 1, 1, 1, 1, 2, 2, 5, 3, 1, 1, 4, 1, 1, 5, 8, 0, 9, 0, 6, 0, 2, 2, 1, 1, 0, 3, 0, 0, 11, 0, 0, 0, 0, 8, 0, 0, 3, 0, 0, 10, 0, 7, 0, 7, 3, 5, 1, 1, 0, 3, 2, 0, 3, 1, 0, 1, 0, 1, 0, 1, 2, 2, 0, 3, 0, 1, 3, 0, 1, 0, 1, 1 }; static const short yydefact[] = { 2, 0, 0, 0, 0, 0, 1, 2, 6, 7, 8, 4, 5, 0, 0, 0, 0, 0, 3, 18, 0, 0, 10, 9, 20, 0, 0, 0, 0, 0, 13, 15, 16, 17, 0, 0, 21, 42, 0, 0, 72, 0, 12, 13, 0, 0, 46, 0, 0, 74, 0, 14, 40, 0, 24, 0, 0, 0, 45, 34, 0, 36, 0, 33, 0, 31, 0, 76, 0, 11, 0, 39, 0, 23, 27, 19, 43, 0, 0, 47, 50, 51, 48, 49, 52, 0, 0, 53, 54, 82, 83, 0, 78, 0, 97, 40, 22, 0, 28, 29, 30, 0, 94, 0, 0, 0, 0, 152, 158, 0, 0, 75, 81, 77, 0, 0, 84, 96, 41, 25, 26, 0, 0, 85, 94, 90, 0, 0, 160, 159, 37, 38, 0, 0, 78, 27, 94, 0, 101, 100, 102, 98, 99, 95, 0, 87, 91, 88, 0, 33, 56, 61, 57, 0, 0, 0, 79, 0, 0, 209, 201, 202, 0, 203, 0, 0, 0, 104, 105, 107, 115, 116, 108, 166, 167, 110, 109, 111, 112, 113, 114, 0, 0, 0, 97, 59, 58, 0, 0, 0, 35, 0, 80, 0, 0, 154, 0, 155, 156, 157, 146, 181, 119, 131, 137, 147, 150, 151, 0, 0, 197, 210, 0, 0, 0, 0, 95, 0, 195, 192, 224, 106, 0, 0, 44, 0, 89, 0, 92, 0, 55, 0, 0, 0, 119, 131, 122, 0, 0, 125, 126, 0, 127, 128, 129, 130, 0, 0, 135, 134, 136, 0, 0, 141, 142, 143, 144, 145, 0, 140, 0, 215, 211, 170, 208, 0, 206, 199, 0, 163, 164, 0, 0, 0, 94, 0, 226, 225, 0, 0, 61, 0, 94, 0, 62, 64, 69, 68, 0, 32, 123, 132, 138, 0, 0, 0, 121, 120, 124, 182, 0, 133, 0, 139, 153, 0, 213, 212, 0, 204, 0, 205, 0, 0, 0, 219, 0, 193, 73, 0, 0, 0, 0, 0, 66, 0, 70, 0, 148, 149, 105, 0, 162, 0, 216, 217, 222, 214, 0, 174, 206, 0, 0, 0, 168, 0, 0, 220, 0, 0, 200, 103, 0, 0, 63, 0, 65, 0, 0, 184, 0, 0, 223, 0, 178, 177, 0, 179, 174, 0, 207, 165, 0, 0, 0, 117, 0, 94, 94, 66, 60, 71, 185, 189, 161, 218, 198, 0, 0, 176, 175, 0, 0, 219, 221, 196, 0, 0, 67, 0, 190, 0, 172, 179, 0, 169, 0, 0, 93, 186, 94, 0, 94, 180, 171, 118, 0, 0, 191, 0, 173, 194, 187, 183, 105, 184, 188, 0, 0, 0 }; static const short yydefgoto[] = { 427, 6, 7, 8, 9, 10, 29, 42, 43, 11, 24, 35, 36, 53, 73, 54, 101, 64, 65, 132, 55, 71, 12, 46, 102, 57, 58, 79, 31, 32, 82, 151, 152, 83, 188, 284, 323, 356, 285, 325, 33, 49, 68, 91, 113, 92, 93, 115, 122, 123, 124, 184, 147, 226, 165, 116, 117, 141, 142, 166, 167, 168, 169, 170, 171, 201, 246, 202, 251, 203, 258, 204, 205, 206, 207, 208, 287, 259, 271, 172, 173, 174, 175, 308, 368, 412, 369, 366, 367, 389, 176, 247, 330, 383, 399, 417, 424, 401, 410, 177, 275, 349, 274, 178, 262, 179, 180, 181, 214, 265, 311, 266, 210, 306, 336, 211, 307, 337, 361, 346, 347, 363, 278 }; static const short yypact[] = { 105, -51, -25, -23, -18, 9,-32768, 105,-32768,-32768,-32768, -32768,-32768, 89, 64, 107, 96, 102,-32768,-32768, 40, -20,-32768,-32768, 120, 128, 58, 70, 81, 154, -20, -32768,-32768,-32768, 155, 160,-32768,-32768, 174, 182,-32768, 114,-32768, -20, 117, 118,-32768, 26, 26, 185, 179, -32768, 190, 200,-32768, 205, 199, 188, 159,-32768, 216, -32768, 222,-32768, 214,-32768, 215, 8, 232,-32768, 163, -32768, 219, 223, 178,-32768,-32768, 117, 168,-32768,-32768, -32768,-32768,-32768,-32768, 20, 20,-32768,-32768,-32768,-32768, 238, 234, 117,-32768, 190,-32768, 117,-32768,-32768,-32768, 26, 6, 247, 252, 184, 184,-32768,-32768, 19, 19, -32768, 49,-32768, 262, 241,-32768, 86,-32768,-32768,-32768, 263, 276,-32768, 6, 254, 170, 26,-32768,-32768,-32768, -32768, 20, 20, 234, 178, 95, 117,-32768,-32768,-32768, -32768,-32768,-32768, 246,-32768,-32768,-32768, 26, 26,-32768, 306,-32768, 314, 316, 317,-32768, 26, 10, 286,-32768, -32768, 10, 326, 307, 4, 333,-32768, 348,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 332, 334, 324, 267,-32768,-32768, 315, 330, 270,-32768, 320,-32768, 10, 10,-32768, 342,-32768,-32768,-32768, 343, 335, 228, 294,-32768,-32768,-32768,-32768, 275, 117,-32768, -32768, 221, 356, 338, 99, 328, 331,-32768,-32768, 5, -32768, 356, 26,-32768, 12,-32768, 336,-32768, 115,-32768, 357, 253, 227, 144, 272, 46, 153, 99,-32768,-32768, 47,-32768,-32768,-32768,-32768, 10, 341,-32768,-32768,-32768, 161, 20,-32768,-32768,-32768,-32768,-32768, 153,-32768, 319, -32768, 321,-32768,-32768, 355, 351,-32768, 363,-32768,-32768, 364, 10, 10, 95, 10,-32768,-32768, 353, 378, 306, 99, 95, 239,-32768,-32768,-32768,-32768, 20,-32768,-32768, -32768,-32768, 153, 285, 381,-32768,-32768, 335,-32768, 161, 228, 41, 294,-32768, 10, 354,-32768, 322,-32768, 356, -32768, 153, 23, 312, 329, 396, 335,-32768, 387, 388, 399, 404, 402, 394, 405, 19, 272,-32768,-32768, 348, 144,-32768, 20, 335,-32768, 337,-32768, 229, 322, 351, 301, 384, 385,-32768, 20, 400,-32768, 373, 389,-32768, -32768, 390, 395,-32768, 239,-32768, 408, 20, 375, 421, 10,-32768, 412,-32768,-32768, 401, 361, 322, 426,-32768, -32768, 10, 10, 359,-32768, 419, 95, 362, 394,-32768, -32768,-32768, 403,-32768, 335,-32768, 409, 239,-32768,-32768, 369, 318, 329,-32768,-32768, 437, 425,-32768, 10,-32768, 439,-32768, 361, 427,-32768, 428, 410,-32768, 335, 95, 411, 25,-32768,-32768,-32768, 430, 413,-32768, 433,-32768, -32768,-32768,-32768, 348, 375,-32768, 452, 453,-32768 }; static const short yypgoto[] = {-32768, 447,-32768,-32768,-32768,-32768,-32768, 414, 434,-32768,-32768, -32768,-32768,-32768,-32768, 365, 323, -36, 224, -102, -71, 366,-32768,-32768,-32768,-32768,-32768,-32768, -44, 406,-32768, -32768,-32768, 346, 180,-32768,-32768, 80, -260,-32768, -33, -32768,-32768,-32768, 339, 358,-32768,-32768,-32768, 344,-32768, -32768,-32768,-32768, -100, 281,-32768,-32768,-32768, -267, 298, -32768, 283,-32768,-32768, -157,-32768, -177,-32768, -166,-32768, -204,-32768, -85, -219,-32768, -82,-32768, -225,-32768,-32768, -32768,-32768,-32768, 164,-32768, 101,-32768,-32768, 68,-32768, -32768,-32768, 50,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 134, 166,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 84,-32768, -32768,-32768 }; #define YYLAST 477 static const short yytable[] = { 108, 108, 125, 109, 110, 212, 103, 316, 133, 264, 286, -86, 66, 295, 80, 322, 234, 193, 279, 281, 128, 129, 114, 324, 125, 84, 13, 235, 89, 90, -105, 26, 342, 27, 194, 130, 233, 236, 131, 59, 60, 61, 217, 218, 219, 105, 106, 108, 108, 332, 154, 155, 14, 343, 15, 28, 321, 130, 195, 16, 131, 158, 196, 359, 286, 120, 182, 62, 239, 89, 90, 294, 159, 138, 301, 197, 198, 199, 365, 160, 161, 276, 277, 121, 140, -81, 17, 200, 107, 298, 150, 153, 303, 19, 241, 379, 162, -105, 107, 20, -105, 163, 164, 63, 296, 297, 264, 137, 1, 244, 396, 21, 185, 186, 22, 314, 315, 25, 317, 286, 23, 192, 283, 331, 105, 106, 34, 327, 403, 78, 108, 158, 37, 270, 235, 38, 286, 26, 261, 2, 105, 106, 159, 418, 108, 420, 341, 39, 334, 160, 161, 268, 291, 108, 3, 4, 270, 425, 40, 41, 293, 28, 44, 195, 5, 45, 162, 108, 300, 286, 302, 163, 164, 248, 249, 250, 269, 107, 47, 77, 197, 198, 199, 59, 60, 61, 48, 280, 98, 99, 100, 50, 67, 107, 52, 56, 108, 69, 108, 270, 333, 195, 78, 108, 385, 196, 326, 70, 72, 195, 26, 62, 27, 196, 74, 392, 393, 75, 197, 198, 199, 76, 148, 85, 358, 263, 197, 198, 199, 86, 200, 107, 87, 88, 28, 290, 94, 96, 200, 107, 95, 97, 409, 239, 240, 104, 111, 149, 108, 239, 240, 360, 112, 108, 105, 106, 126, 248, 249, 250, 108, 127, 107, 374, 105, 106, 59, 60, 61, 241, 108, 135, 143, 108, 136, 241, 381, 195, 397, 252, 292, 144, 242, 243, 244, 245, 146, 195, 242, 243, 244, 245, 252, 328, 197, 198, 199, 253, 254, 255, 256, 252, 364, 108, 197, 198, 199, 107, 252, 371, 253, 254, 255, 256, 215, 187, 216, 107, 189, 253, 254, 255, 256, 183, 190, 191, 253, 254, 255, 256, 344, 209, 257, 213, 239, 240, 405, 217, 220, 222, 239, 240, 224, 223, 225, 257, 229, 231, 230, 237, 238, 239, 240, 260, 257, 232, 267, 239, 240, 272, 241, 257, 273, 309, 288, 305, 241, 304, 310, 282, 312, 318, 313, 242, 243, 244, 245, 241, 299, 242, 243, 244, 245, 241, 158, 345, 319, -94, -94, 329, 242, 243, 244, 245, 338, 159, 242, 243, 244, 245, 335, 348, 160, 161, 195, 350, 351, 352, 196, 353, 354, 355, 376, 357, 362, 372, 373, 382, 375, 162, 343, 197, 198, 199, 163, 164, 380, 378, 377, 384, 386, 391, 387, 200, 107, 388, 394, 395, 402, 121, 404, 400, 407, 408, 411, 414, 415, 419, 421, 416, 422, 423, 428, 429, 18, 30, 289, 51, 157, 398, 320, 118, 119, 139, 81, 227, 221, 228, 145, 390, 134, 413, 339, 156, 370, 426, 340, 406 }; static const short yycheck[] = { 85, 86, 102, 85, 86, 162, 77, 274, 110, 213, 229, 5, 48, 238, 58, 282, 193, 7, 222, 7, 105, 106, 93, 283, 124, 58, 77, 193, 20, 21, 5, 51, 9, 53, 24, 16, 193, 194, 19, 13, 14, 15, 30, 39, 40, 25, 26, 132, 133, 8, 132, 133, 77, 30, 77, 75, 281, 16, 48, 77, 19, 36, 52, 330, 283, 101, 137, 41, 22, 20, 21, 237, 47, 117, 251, 65, 66, 67, 338, 54, 55, 76, 77, 77, 117, 77, 77, 77, 78, 246, 126, 127, 258, 4, 48, 355, 71, 72, 78, 35, 5, 76, 77, 77, 57, 58, 310, 21, 3, 63, 377, 4, 148, 149, 18, 272, 273, 77, 275, 338, 18, 157, 7, 300, 25, 26, 6, 293, 388, 43, 215, 36, 4, 215, 300, 77, 355, 51, 209, 34, 25, 26, 47, 410, 229, 412, 312, 77, 305, 54, 55, 52, 8, 238, 49, 50, 238, 424, 77, 5, 7, 75, 7, 48, 59, 5, 71, 252, 7, 388, 252, 76, 77, 29, 30, 31, 77, 78, 4, 20, 65, 66, 67, 13, 14, 15, 4, 223, 10, 11, 12, 77, 7, 78, 77, 77, 281, 18, 283, 281, 302, 48, 43, 288, 361, 52, 288, 17, 8, 48, 51, 41, 53, 52, 9, 372, 373, 18, 65, 66, 67, 33, 52, 7, 326, 4, 65, 66, 67, 7, 77, 78, 18, 18, 75, 8, 4, 18, 77, 78, 77, 18, 399, 22, 23, 77, 8, 77, 333, 22, 23, 333, 18, 338, 25, 26, 9, 29, 30, 31, 345, 9, 78, 345, 25, 26, 13, 14, 15, 48, 355, 9, 9, 358, 33, 48, 358, 48, 378, 7, 8, 5, 61, 62, 63, 64, 32, 48, 61, 62, 63, 64, 7, 8, 65, 66, 67, 25, 26, 27, 28, 7, 73, 388, 65, 66, 67, 78, 7, 8, 25, 26, 27, 28, 7, 9, 9, 78, 4, 25, 26, 27, 28, 77, 8, 8, 25, 26, 27, 28, 18, 45, 60, 7, 22, 23, 18, 30, 5, 7, 22, 23, 18, 9, 77, 60, 31, 77, 18, 7, 7, 22, 23, 78, 60, 35, 18, 22, 23, 31, 48, 60, 31, 8, 7, 44, 48, 48, 17, 33, 7, 18, 8, 61, 62, 63, 64, 48, 37, 61, 62, 63, 64, 48, 36, 56, 8, 39, 40, 8, 61, 62, 63, 64, 72, 47, 61, 62, 63, 64, 46, 5, 54, 55, 48, 18, 18, 8, 52, 5, 8, 17, 39, 8, 77, 31, 31, 42, 18, 71, 30, 65, 66, 67, 76, 77, 18, 32, 39, 8, 18, 5, 31, 77, 78, 74, 77, 18, 29, 77, 71, 38, 5, 18, 5, 18, 18, 36, 18, 39, 37, 18, 0, 0, 7, 21, 232, 43, 135, 379, 280, 95, 97, 117, 58, 184, 168, 184, 124, 368, 112, 403, 308, 134, 340, 425, 310, 393 }; #define YYPURE 1 // This may look like C code, but it is really -*- C++ -*- /* Skeleton output parser for bison++, Copyright (C) 1984 Bob Corbett and Richard Stallman Copyright (C) 1989 Larry M. Augustin Adapted from the original for C++ by Larry M. Augustin. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* This is the parser code that is written into each bison parser when the %semantic_parser declaration is not specified in the grammar. It was written by Richard Stallman by simplifying the hairy parser used when %semantic_parser is specified. */ /* Note: there must be only one dollar sign in this file. It is replaced by the list of actions, each action as one case of the switch. */ #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYEMPTY -2 #define YYEOF 0 #define YYFAIL goto yyerrlab; #ifdef PARENT #define YYACCEPT {this->yyterminator();INT_RETURN(0);} #else #define YYACCEPT INT_RETURN(0) #endif #ifdef ESKIT #define YYABORT {this->yyterminator();INT_RETURN(1);} #else #define YYABORT INT_RETURN(1) #endif #define YYERROR goto yyerrlab #define YYTERROR 1 #define YYERRCODE 256 #ifndef YYIMPURE #define YYLEX this->yylex() #endif #ifndef YYPURE #define YYLEX this->yylex(&yylval, &yylloc) #endif /* YYMAXDEPTH indicates the initial size of the parser's stacks */ #ifndef YYMAXDEPTH #define YYMAXDEPTH 200 #endif /* YYMAXLIMIT is the maximum size the stacks can grow to (effective only if the built-in stack extension method is used). */ #ifndef YYMAXLIMIT #define YYMAXLIMIT 10000 #endif /* Creator for vhdl_par */ #ifdef ESKIT vhdl_par :: vhdl_par() : Cout(this) #else vhdl_par :: vhdl_par() #endif { int esk_flt_result=0; char in_file_name[80]; #ifdef ESKIT while (! esk_flt_result){ Cout << "Name of the file to be parsed : "; Cout >> in_file_name; yyin = (fileBase*) new {local} issd_File(); /* used by yylex */ esk_flt_result = yyin->fopen(in_file_name,"r"); if (! esk_flt_result) Cout << "\nBad File Name : " << in_file_name << "\n"; } yyout = (fileBase*) APPL_TABLE->get_family_handle(my_appl_id(),STD_OUT); stderr = (fileBase*) new {local} issd_File(); /* used by yylex */ esk_flt_result = stderr->fopen("/tmp/stderr","r"); #else while (! esk_flt_result){ Cout << "Name of the file to be parsed : "; cin >> in_file_name; yyin=fopen(in_file_name,"r"); esk_flt_result=1; if (!yyin){ Cout << "\nBad File Name : " << in_file_name << "\n"; esk_flt_result=0; } } #endif #ifdef PARENT esk_flt_result=this->yyparse(); exit(esk_flt_result); #endif CONS_RETURN; }; vhdl_par :: ~vhdl_par() {;} /* destructor for vhdl_par */ #ifdef ESKIT void vhdl_par :: yyterminator() { Cout << "\n\nEntered %class_name terminator\n"; app_mgt* am=(app_mgt*) APPL_TABLE->get_family_handle(my_appl_id(),APP_MGR); am->delete_app(my_appl_id()); VOID_RETURN; }; #else void vhdl_par :: yyterminator(){} #endif #ifndef ESKIT #ifdef PARENT main(){ vhdl_par object;} #endif #endif int vhdl_par::yyparse() { register int yystate; register int yyn; register short *yyssp; register vhdl_par_YYSTYPE *yyvsp; vhdl_par_YYLTYPE *yylsp; int yyerrstatus; // number of tokens to shift before error messages enabled int yychar1; // lookahead token as an internal (translated) token number short yyssa[YYMAXDEPTH]; // the state stack vhdl_par_YYSTYPE yyvsa[YYMAXDEPTH]; // the semantic value stack vhdl_par_YYLTYPE yylsa[YYMAXDEPTH]; // the location stack short *yyss = yyssa; // refer to the stacks thru separate pointers vhdl_par_YYSTYPE *yyvs = yyvsa; // to allow yyoverflow to reallocate them elsewhere vhdl_par_YYLTYPE *yyls = yylsa; int yymaxdepth = YYMAXDEPTH; #ifndef YYPURE int yychar; vhdl_par_YYSTYPE yylval; vhdl_par_YYLTYPE yylloc; int yynerrs; #endif vhdl_par_YYSTYPE yyval; /* the variable used to return */ /* semantic values from the action */ /* routines */ int yylen; #if YYDEBUG != 0 if (yydebug) #ifdef ESKIT *stderr << "Starting parse\n"; #else fprintf(stderr, "Starting parse\n"); #endif #endif yystate = 0; yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ /* Initialize stack pointers. Waste one element of value and location stack so that they stay on the same level as the state stack. */ yyssp = yyss - 1; yyvsp = yyvs; yylsp = yyls; /* Push a new state, which is found in yystate . */ /* In all cases, when you get here, the value and location stacks have just been pushed. so pushing a state here evens the stacks. */ yynewstate: *++yyssp = yystate; if (yyssp >= yyss + yymaxdepth - 1) { /* Give user a chance to reallocate the stack */ /* Use copies of these so that the &'s don't force the real ones into memory. */ vhdl_par_YYSTYPE *yyvs1 = yyvs; vhdl_par_YYLTYPE *yyls1 = yyls; short *yyss1 = yyss; /* Get the current used size of the three stacks, in elements. */ int size = yyssp - yyss + 1; #ifdef yyoverflow /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. */ this->yyoverflow("parser stack overflow", &yyss1, size * sizeof (*yyssp), &yyvs1, size * sizeof (*yyvsp), &yyls1, size * sizeof (*yylsp), &yymaxdepth); yyss = yyss1; yyvs = yyvs1; yyls = yyls1; #else /* no yyoverflow */ /* Extend the stack our own way. */ if (yymaxdepth >= YYMAXLIMIT) this->yyerror("parser stack overflow"); yymaxdepth *= 2; if (yymaxdepth > YYMAXLIMIT) yymaxdepth = YYMAXLIMIT; yyss = (short *) new short[yymaxdepth * sizeof (*yyssp)]; bcopy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp)); yyvs = (vhdl_par_YYSTYPE *) new vhdl_par_YYSTYPE[yymaxdepth * sizeof (*yyvsp)]; bcopy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp)); #ifdef YYLSP_NEEDED yyls = (vhdl_par_YYLTYPE *) new vhdl_par_YYLTYPE[yymaxdepth * sizeof (*yylsp)]; bcopy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp)); #endif // YYLSP_NEEDED #endif /* no yyoverflow */ yyssp = yyss + size - 1; yyvsp = yyvs + size - 1; #ifdef YYLSP_NEEDED yylsp = yyls + size - 1; #endif #if YYDEBUG != 0 if (yydebug) #ifdef ESKIT {*stderr << "Stack size increased to "; *stderr << yymaxdepth; *stderr << "\n";} #else fprintf(stderr, "Stack size increased to %d\n", yymaxdepth); #endif #endif if (yyssp >= yyss + yymaxdepth - 1) YYABORT; } #if YYDEBUG != 0 if (yydebug) #ifdef ESKIT {*stderr << "Entering state "; *stderr << yystate; *stderr << "\n";} #else fprintf(stderr, "Entering state %d\n", yystate); #endif #endif /* Do appropriate processing given the current state. */ /* Read a lookahead token if we need one and don't already have one. */ yyresume: /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; if (yyn == YYFLAG) goto yydefault; /* Not known => get a lookahead token if don't already have one. */ /* yychar is either YYEMPTY or YYEOF or a valid token in external form. */ if (yychar == YYEMPTY) { #if YYDEBUG != 0 if (yydebug) #ifdef ESKIT *stderr << "Reading a token: "; #else fprintf(stderr, "Reading a token: "); #endif #endif yychar = YYLEX; } /* Convert token to internal form (in yychar1) for indexing tables with */ if (yychar <= 0) /* This means end of input. */ { yychar1 = 0; yychar = YYEOF; /* Don't call YYLEX any more */ #if YYDEBUG != 0 if (yydebug) #ifdef ESKIT *stderr << "Now at end of input.\n"; #else fprintf(stderr, "Now at end of input.\n"); #endif #endif } else { yychar1 = YYTRANSLATE(yychar); #if YYDEBUG != 0 if (yydebug) #ifdef ESKIT {*stderr << "Next token is "; *stderr << yychar; *stderr << (char*) yytname[yychar1];} #else fprintf(stderr, "Next token is %d (%s)\n", yychar, yytname[yychar1]); #endif #endif } yyn += yychar1; if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1) goto yydefault; yyn = yytable[yyn]; /* yyn is what to do for this token type in this state. Negative => reduce, -yyn is rule number. Positive => shift, yyn is new state. New state is final state => don't bother to shift, just return success. 0, or most negative number => error. */ if (yyn < 0) { if (yyn == YYFLAG) goto yyerrlab; yyn = -yyn; goto yyreduce; } else if (yyn == 0) goto yyerrlab; if (yyn == YYFINAL) YYACCEPT; /* Shift the lookahead token. */ #if YYDEBUG != 0 if (yydebug) #ifdef ESKIT {*stderr << "Shifting token "; *stderr << yychar; *stderr << (char*) yytname[yychar1];} #else fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]); #endif #endif /* Discard the token being shifted unless it is eof. */ if (yychar != YYEOF) yychar = YYEMPTY; *++yyvsp = yylval; #ifdef YYLSP_NEEDED *++yylsp = yylloc; #endif /* count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; yystate = yyn; goto yynewstate; /* Do the default action for the current state. */ yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; /* Do a reduction. yyn is the number of a rule to reduce with. */ yyreduce: yylen = yyr2[yyn]; yyval = yyvsp[1-yylen]; /* implement default value of the action */ #if YYDEBUG != 0 if (yydebug) { if (yylen == 1) #ifdef ESKIT {*stderr << "Reducing 1 value via line "; *stderr << yyrline[yyn];} #else fprintf (stderr, "Reducing 1 value via line %d, ", #endif yyrline[yyn]); else #ifdef ESKIT {*stderr << "Reducing "; *stderr << yylen; *stderr << " values via line "; *stderr << yyrline[yyn];} #else fprintf (stderr, "Reducing %d values via line %d, ", #endif yylen, yyrline[yyn]); } #endif switch (yyn) { case 18: #line 102 "vhdl_par.y" {this->mk_entity(yyvsp[-1].name);; break;} case 26: #line 123 "vhdl_par.y" {this->mk_interface(yyvsp[-3].id_rec_ptr,yyvsp[-1].value,yyvsp[0].type_mark_ptr);; break;} case 27: #line 125 "vhdl_par.y" {yyval.value = IN;; break;} case 28: #line 126 "vhdl_par.y" {yyval.value = IN;; break;} case 29: #line 127 "vhdl_par.y" {yyval.value = OUT;; break;} case 30: #line 128 "vhdl_par.y" {yyval.value = INOUT;; break;} case 31: #line 130 "vhdl_par.y" {yyval.type_mark_ptr=this->typemark(SIMPLE,0,0,yyvsp[0].type_mark_ptr);; break;} case 32: #line 132 "vhdl_par.y" {yyval.type_mark_ptr = this->typemark(ARRAY,yyvsp[-5].CR_ptr->value,yyvsp[-3].CR_ptr->value,yyvsp[0].type_mark_ptr);; break;} case 33: #line 133 "vhdl_par.y" {yyval.type_mark_ptr=this->get_type_mark(yyvsp[0].name);; break;} case 34: #line 135 "vhdl_par.y" {yyval.type_mark_ptr = this->basetype(0,0);; break;} case 35: #line 137 "vhdl_par.y" { yyval.type_mark_ptr = this->basetype(yyvsp[-3].CR_ptr->value,yyvsp[-1].CR_ptr->value);; break;} case 36: #line 138 "vhdl_par.y" {yyval.type_mark_ptr = this->basetype(INT_WIDTH - 1,0);; break;} case 37: #line 140 "vhdl_par.y" {yyval.value=TO;; break;} case 38: #line 141 "vhdl_par.y" {yyval.value=DOWNTO;; break;} case 39: #line 144 "vhdl_par.y" {yyval.id_rec_ptr = this->identifier_list(yyvsp[-1].name,yyvsp[0].id_rec_ptr);; break;} case 40: #line 146 "vhdl_par.y" {yyval.id_rec_ptr = NULL;; break;} case 41: #line 148 "vhdl_par.y" {yyval.id_rec_ptr = this->identifier_list(yyvsp[-1].name,yyvsp[0].id_rec_ptr);; break;} case 42: #line 151 "vhdl_par.y" {this->mk_arch_module(yyvsp[-3].name,yyvsp[-1].name);; break;} case 43: #line 153 "vhdl_par.y" {this->st_arch_stmnt_part();; break;} case 44: #line 156 "vhdl_par.y" {this->cl_arch_module();; break;} case 53: #line 171 "vhdl_par.y" {this->mk_type_decl(yyvsp[-3].name,yyvsp[-1].type_mark_ptr);; break;} case 54: #line 174 "vhdl_par.y" {this->mk_type_decl(yyvsp[-3].name,yyvsp[-1].type_mark_ptr);; break;} case 55: #line 177 "vhdl_par.y" {this->mk_reg(yyvsp[-4].id_rec_ptr,yyvsp[-2].type_mark_ptr,yyvsp[-1].CR_ptr,SIGNAL);; break;} case 56: #line 179 "vhdl_par.y" {yyval.type_mark_ptr=yyvsp[0].type_mark_ptr;; break;} case 57: #line 180 "vhdl_par.y" {yyval.type_mark_ptr=yyvsp[0].type_mark_ptr;; break;} case 58: #line 182 "vhdl_par.y" {yyval.type_mark_ptr=this->resolved_type(yyvsp[-1].name,yyvsp[0].type_mark_ptr);; break;} case 59: #line 183 "vhdl_par.y" {yyval.type_mark_ptr=yyvsp[0].type_mark_ptr;; break;} case 60: #line 188 "vhdl_par.y" {this->mk_alias(yyvsp[-8].name,yyvsp[-6].type_mark_ptr,yyvsp[-4].name,yyvsp[-2].value);; break;} case 61: #line 190 "vhdl_par.y" {yyval.CR_ptr=NULL;; break;} case 62: #line 191 "vhdl_par.y" {yyval.CR_ptr=yyvsp[0].CR_ptr;; break;} case 63: #line 193 "vhdl_par.y" {yyval.CR_ptr=yyvsp[-1].CR_ptr;; break;} case 64: #line 194 "vhdl_par.y" {yyval.CR_ptr=yyvsp[0].CR_ptr;; break;} case 65: #line 196 "vhdl_par.y" {yyval.CR_ptr=this->append_cr(yyvsp[-1].CR_ptr,yyvsp[0].CR_ptr);; break;} case 66: #line 198 "vhdl_par.y" {yyval.CR_ptr=NULL;; break;} case 67: #line 199 "vhdl_par.y" {yyval.CR_ptr=this->append_cr(yyvsp[-1].CR_ptr,yyvsp[0].CR_ptr);; break;} case 68: #line 201 "vhdl_par.y" {yyval.CR_ptr=yyvsp[0].CR_ptr;; break;} case 69: #line 202 "vhdl_par.y" {yyval.CR_ptr=yyvsp[0].CR_ptr;; break;} case 70: #line 204 "vhdl_par.y" {yyval.value = yyvsp[0].CR_ptr->value;; break;} case 71: #line 206 "vhdl_par.y" {yyval.value = this->_index(yyvsp[-2].CR_ptr->value,yyvsp[-1].value,yyvsp[0].CR_ptr->value);; break;} case 72: #line 208 "vhdl_par.y" {this->mk_procedure_module(yyvsp[0].name);; break;} case 73: #line 214 "vhdl_par.y" {this->cl_module();; break;} case 80: #line 226 "vhdl_par.y" {this->mk_formal_param(yyvsp[-4].value,yyvsp[-3].id_rec_ptr,yyvsp[-1].value,yyvsp[0].type_mark_ptr);; break;} case 81: #line 228 "vhdl_par.y" {yyval.value=UNDEFINED;; break;} case 82: #line 229 "vhdl_par.y" {yyval.value=SIGNAL;; break;} case 83: #line 230 "vhdl_par.y" {yyval.value=VARIABLE;; break;} case 88: #line 241 "vhdl_par.y" {this->mk_conc_stmnt_module(yyvsp[-1].name,yyvsp[0].value);; break;} case 89: #line 243 "vhdl_par.y" {this->conc_stmnt(this->cl_module());; break;} case 90: #line 245 "vhdl_par.y" {yyval.value=CONC_SA;; break;} case 91: #line 246 "vhdl_par.y" {yyval.value=PROCESS;; break;} case 94: #line 254 "vhdl_par.y" {yyval.name=NULL;; break;} case 95: #line 255 "vhdl_par.y" {yyval.name=yyvsp[-1].name;; break;} case 103: #line 270 "vhdl_par.y" {this->mk_reg(yyvsp[-4].id_rec_ptr,yyvsp[-2].type_mark_ptr,yyvsp[-1].CR_ptr,VARIABLE);; break;} case 111: #line 282 "vhdl_par.y" {this->loop_or_wait_stmnt(yyvsp[0].MR_ptr);; break;} case 112: #line 283 "vhdl_par.y" {this->loop_or_wait_stmnt(yyvsp[0].MR_ptr);; break;} case 117: #line 291 "vhdl_par.y" {this->simple_assignment(SIGNAL,yyvsp[-5].name,yyvsp[-2].input_ptr);; break;} case 118: #line 295 "vhdl_par.y" {this->array_assignment(SIGNAL,yyvsp[-8].name,yyvsp[-6].input_ptr,yyvsp[-2].input_ptr);; break;} case 119: #line 297 "vhdl_par.y" {yyval.input_ptr=yyvsp[0].input_ptr;; break;} case 120: #line 299 "vhdl_par.y" {yyval.input_ptr=((log_exp_env==NORMAL) ? this->mk_operator(STABLE,yyvsp[-2].input_ptr,0) : NULL);; break;} case 121: #line 301 "vhdl_par.y" {yyval.input_ptr=((log_exp_env==NORMAL) ? this->mk_operator(QUIET,yyvsp[-2].input_ptr,0) : NULL);; break;} case 122: #line 303 "vhdl_par.y" {yyval.input_ptr=((log_exp_env==NORMAL) ? this->mk_operator(NOT,yyvsp[0].input_ptr,0) : NULL);; break;} case 123: #line 304 "vhdl_par.y" {yyval.input_ptr=yyvsp[-1].input_ptr;; break;} case 124: #line 306 "vhdl_par.y" {yyval.input_ptr=((log_exp_env==NORMAL) ? this->mk_operator(yyvsp[-1].value,yyvsp[-2].input_ptr,yyvsp[0].input_ptr) : NULL);; break;} case 125: #line 308 "vhdl_par.y" {yyval.value=AND;; break;} case 126: #line 309 "vhdl_par.y" {yyval.value=OR;; break;} case 127: #line 310 "vhdl_par.y" {yyval.value=XOR;; break;} case 128: #line 311 "vhdl_par.y" {yyval.value=XNOR;; break;} case 129: #line 312 "vhdl_par.y" {yyval.value=NAND;; break;} case 130: #line 313 "vhdl_par.y" {yyval.value=NOR;; break;} case 131: #line 315 "vhdl_par.y" {yyval.input_ptr=yyvsp[0].input_ptr;; break;} case 132: #line 316 "vhdl_par.y" {yyval.input_ptr=yyvsp[-1].input_ptr;; break;} case 133: #line 318 "vhdl_par.y" {yyval.input_ptr=((log_exp_env==NORMAL) ? this->mk_operator(yyvsp[-1].value,yyvsp[-2].input_ptr,yyvsp[0].input_ptr) : NULL);; break;} case 134: #line 320 "vhdl_par.y" {yyval.value=LT;; break;} case 135: #line 321 "vhdl_par.y" {yyval.value=GT;; break;} case 136: #line 322 "vhdl_par.y" {yyval.value=EQ;; break;} case 137: #line 324 "vhdl_par.y" {yyval.input_ptr=yyvsp[0].input_ptr;; break;} case 138: #line 325 "vhdl_par.y" {yyval.input_ptr=yyvsp[-1].input_ptr;; break;} case 139: #line 327 "vhdl_par.y" {yyval.input_ptr=((log_exp_env==NORMAL) ? this->mk_operator(yyvsp[-1].value,yyvsp[-2].input_ptr,yyvsp[0].input_ptr) : NULL);; break;} case 140: #line 329 "vhdl_par.y" {yyval.input_ptr=((log_exp_env==NORMAL) ? this->range_spec(yyvsp[-1].input_ptr,yyvsp[0].RR_ptr) : NULL);; break;} case 141: #line 331 "vhdl_par.y" {yyval.value=PLUS;; break;} case 142: #line 332 "vhdl_par.y" {yyval.value=MINUS;; break;} case 143: #line 333 "vhdl_par.y" {yyval.value=MULT;; break;} case 144: #line 334 "vhdl_par.y" {yyval.value=DIV;; break;} case 145: #line 335 "vhdl_par.y" {yyval.value=CONCAT;; break;} case 146: #line 337 "vhdl_par.y" {yyval.input_ptr=((log_exp_env==NORMAL) ? this->source_id(yyvsp[0].name) : NULL);; break;} case 147: #line 338 "vhdl_par.y" {yyval.input_ptr=yyvsp[0].input_ptr;; break;} case 148: #line 339 "vhdl_par.y" {yyval.input_ptr=yyvsp[-1].input_ptr;; break;} case 149: #line 341 "vhdl_par.y" {yyval.input_ptr=((log_exp_env==NORMAL) ? this->source_arr(yyvsp[-3].name,yyvsp[-1].input_ptr) : NULL);; break;} case 150: #line 344 "vhdl_par.y" {yyval.input_ptr=((log_exp_env==NORMAL) ? this->source_int(yyvsp[0].CR_ptr->value) : NULL);; break;} case 151: #line 346 "vhdl_par.y" {yyval.input_ptr=((log_exp_env==NORMAL) ? this->source_bit(yyvsp[0].CR_ptr->width,yyvsp[0].CR_ptr->value) : NULL);; break;} case 152: #line 348 "vhdl_par.y" {yyval.CR_ptr=this->str2num(DEC,yyvsp[0].name);; break;} case 153: #line 350 "vhdl_par.y" {yyval.CR_ptr=this->str2num(yyvsp[-2].value,yyvsp[-1].name);; break;} case 154: #line 352 "vhdl_par.y" {yyval.value=BIN;; break;} case 155: #line 353 "vhdl_par.y" {yyval.value=BIN;; break;} case 156: #line 354 "vhdl_par.y" {yyval.value=HEX;; break;} case 157: #line 355 "vhdl_par.y" {yyval.value=OCT;; break;} case 158: #line 357 "vhdl_par.y" {yyval.CR_ptr=yyvsp[0].CR_ptr;; break;} case 159: #line 358 "vhdl_par.y" {yyvsp[0].CR_ptr->value=-yyvsp[0].CR_ptr->value;yyval.CR_ptr=yyvsp[0].CR_ptr;; break;} case 160: #line 359 "vhdl_par.y" {yyval.CR_ptr=yyvsp[0].CR_ptr;; break;} case 161: #line 362 "vhdl_par.y" {yyval.RR_ptr=this->mk_range_rec(yyvsp[-3].CR_ptr->value,yyvsp[-1].CR_ptr->value);; break;} case 162: #line 363 "vhdl_par.y" {yyval.RR_ptr=this->mk_range_rec(yyvsp[-1].CR_ptr->value,yyvsp[-1].CR_ptr->value);; break;} case 163: #line 365 "vhdl_par.y" {yyval.input_ptr = this->source_id(yyvsp[0].name);; break;} case 164: #line 366 "vhdl_par.y" {yyval.input_ptr = this->source_int(yyvsp[0].CR_ptr->value);; break;} case 165: #line 367 "vhdl_par.y" {yyval.input_ptr=yyvsp[-1].input_ptr;; break;} case 168: #line 373 "vhdl_par.y" {this->simple_assignment(VARIABLE,yyvsp[-4].name,yyvsp[-1].input_ptr);; break;} case 169: #line 376 "vhdl_par.y" {this->array_assignment(VARIABLE,yyvsp[-7].name,yyvsp[-5].input_ptr,yyvsp[-1].input_ptr);; break;} case 170: #line 380 "vhdl_par.y" {yyval.SSR_ptr=this->mk_select_op(yyvsp[-1].input_ptr);; break;} case 171: #line 384 "vhdl_par.y" {this->cl_select_op(yyvsp[-5].SSR_ptr);; break;} case 172: #line 387 "vhdl_par.y" {this->mk_branch(yyvsp[-2].BVR_ptr);; break;} case 176: #line 393 "vhdl_par.y" {yyval.BVR_ptr=this->add_case_value(yyvsp[-1].value,yyvsp[0].BVR_ptr);; break;} case 177: #line 395 "vhdl_par.y" {yyval.value=yyvsp[0].CR_ptr->value;; break;} case 178: #line 396 "vhdl_par.y" {yyval.value=FALSE;; break;} case 179: #line 398 "vhdl_par.y" {yyval.BVR_ptr=NULL;; break;} case 180: #line 400 "vhdl_par.y" {yyval.BVR_ptr=this->add_case_value(yyvsp[-1].CR_ptr->value,yyvsp[0].BVR_ptr);; break;} case 181: #line 404 "vhdl_par.y" {yyval.SSR_ptr=this->mk_select_op(yyvsp[0].input_ptr);; break;} case 182: #line 405 "vhdl_par.y" {this->mk_if_branch(TRUE);; break;} case 183: #line 410 "vhdl_par.y" {this->cl_select_op(yyvsp[-8].SSR_ptr);; break;} case 185: #line 413 "vhdl_par.y" {this->mk_if_branch(FALSE);; break;} case 186: #line 414 "vhdl_par.y" {this->mk_select_op(yyvsp[0].input_ptr);; break;} case 187: #line 415 "vhdl_par.y" {this->mk_if_branch(TRUE);; break;} case 190: #line 420 "vhdl_par.y" {this->mk_if_branch(FALSE);; break;} case 192: #line 423 "vhdl_par.y" {this->mk_loop_module(yyvsp[-1].name);; break;} case 193: #line 424 "vhdl_par.y" {this->mk_while_condition(yyvsp[0].input_ptr);; break;} case 194: #line 426 "vhdl_par.y" {yyval.MR_ptr=this->cl_module();; break;} case 195: #line 427 "vhdl_par.y" {this->mk_loop_module(yyvsp[-1].name);; break;} case 196: #line 429 "vhdl_par.y" {yyval.MR_ptr=this->cl_module();; break;} case 197: #line 433 "vhdl_par.y" {this->mk_wait_module(yyvsp[0].id_rec_ptr);; break;} case 198: #line 438 "vhdl_par.y" {yyval.MR_ptr=this->cl_module();; break;} case 199: #line 441 "vhdl_par.y" {this->procedure_call(yyvsp[-2].MR_ptr,yyvsp[-1].input_ptr);; break;} case 200: #line 444 "vhdl_par.y" {this->mk_operator(yyvsp[-4].value,yyvsp[-2].input_ptr,0);; break;} case 201: #line 446 "vhdl_par.y" {yyval.value=RSHIFT;; break;} case 202: #line 447 "vhdl_par.y" {yyval.value=LSHIFT;; break;} case 203: #line 449 "vhdl_par.y" {yyval.input_ptr=NULL;; break;} case 204: #line 450 "vhdl_par.y" {yyval.input_ptr=yyvsp[-1].input_ptr;; break;} case 205: #line 452 "vhdl_par.y" {yyval.input_ptr=this->add_actual(yyvsp[-1].input_ptr,yyvsp[0].input_ptr);; break;} case 206: #line 454 "vhdl_par.y" {yyval.input_ptr=NULL;; break;} case 207: #line 455 "vhdl_par.y" {yyval.input_ptr=this->add_actual(yyvsp[-1].input_ptr,yyvsp[0].input_ptr);; break;} case 208: #line 457 "vhdl_par.y" {yyval.input_ptr=yyvsp[0].input_ptr;; break;} case 209: #line 459 "vhdl_par.y" {yyval.id_rec_ptr=NULL;; break;} case 210: #line 460 "vhdl_par.y" {yyval.id_rec_ptr=yyvsp[0].id_rec_ptr;; break;} case 211: #line 462 "vhdl_par.y" {yyval.input_ptr=NULL;; break;} case 212: #line 463 "vhdl_par.y" {yyval.input_ptr=yyvsp[0].input_ptr;; break;} case 213: #line 465 "vhdl_par.y" {yyval.input_ptr=NULL;; break;} case 214: #line 466 "vhdl_par.y" {yyval.input_ptr=yyvsp[0].input_ptr;; break;} case 215: #line 468 "vhdl_par.y" {yyval.id_rec_ptr=yyvsp[0].id_rec_ptr;; break;} case 216: #line 470 "vhdl_par.y" {yyval.input_ptr=yyvsp[0].input_ptr;; break;} case 217: #line 472 "vhdl_par.y" {log_exp_env=WAIT_FOR;; break;} case 218: #line 473 "vhdl_par.y" {log_exp_env=NORMAL;yyval.input_ptr=yyvsp[0].input_ptr;; break;} case 222: #line 480 "vhdl_par.y" {yyval.name=NULL;; break;} case 223: #line 481 "vhdl_par.y" {yyval.name=yyvsp[0].name;; break;} case 224: #line 483 "vhdl_par.y" {yyval.name=NULL;; break;} case 225: #line 484 "vhdl_par.y" {yyval.name=yyvsp[0].name;; break;} case 226: #line 485 "vhdl_par.y" {yyval.name=yyvsp[0].MR_ptr->str_ptr->name;; break;} } /* the action file gets copied in in place of this dollarsign */ yyvsp -= yylen; yyssp -= yylen; #ifdef YYLSP_NEEDED yylsp -= yylen; #endif #if YYDEBUG != 0 if (yydebug) { short *ssp1 = yyss - 1; #ifdef ESKIT *stderr << "state stack now"; #else fprintf (stderr, "state stack now"); #endif while (ssp1 != yyssp) #ifdef ESKIT {*stderr << " "; *stderr << *++ssp1;} #else fprintf (stderr, " %d", *++ssp1); #endif #ifdef ESKIT *stderr << "\n"; #else fprintf (stderr, "\n"); #endif } #endif *++yyvsp = yyval; #ifdef YYLSP_NEEDED yylsp++; if (yylen == 0) { yylsp->first_line = yylloc.first_line; yylsp->first_column = yylloc.first_column; yylsp->last_line = (yylsp-1)->last_line; yylsp->last_column = (yylsp-1)->last_column; yylsp->text = 0; } else { yylsp->last_line = (yylsp+yylen-1)->last_line; yylsp->last_column = (yylsp+yylen-1)->last_column; } #endif /* Now "shift" the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ yyn = yyr1[yyn]; yystate = yypgoto[yyn - YYNTBASE] + *yyssp; if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp) yystate = yytable[yystate]; else yystate = yydefgoto[yyn - YYNTBASE]; goto yynewstate; yyerrlab: /* here on detecting error */ if (! yyerrstatus) /* If not already recovering from an error, report this error. */ { ++yynerrs; this->yyerror("parse error"); } if (yyerrstatus == 3) { /* if just tried and failed to reuse lookahead token after an error, discard it. */ /* return failure if at end of input */ if (yychar == YYEOF) YYABORT; #if YYDEBUG != 0 if (yydebug) #ifdef ESKIT {*stderr << "Discarding token "; *stderr << yychar; *stderr << (char *) yytname[yychar1];} #else fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]); #endif #endif yychar = YYEMPTY; } /* Else will try to reuse lookahead token after shifting the error token. */ yyerrstatus = 3; /* Each real token shifted decrements this */ goto yyerrhandle; yyerrdefault: /* current state does not do anything special for the error token. */ #if 0 /* This is wrong; only states that explicitly want error tokens should shift them. */ yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/ if (yyn) goto yydefault; #endif yyerrpop: /* pop the current state because it cannot handle the error token */ if (yyssp == yyss) YYABORT; yyvsp--; yystate = *--yyssp; #ifdef YYLSP_NEEDED yylsp--; #endif #if YYDEBUG != 0 if (yydebug) { short *ssp1 = yyss - 1; #ifdef ESKIT *stderr << "Error: state stack now"; #else fprintf (stderr, "Error: state stack now"); #endif while (ssp1 != yyssp) #ifdef ESKIT *stderr << *++ssp1; #else fprintf (stderr, " %d", *++ssp1); #endif #ifdef ESKIT *stderr << "\n"; #else fprintf (stderr, "\n"); #endif } #endif yyerrhandle: yyn = yypact[yystate]; if (yyn == YYFLAG) goto yyerrdefault; yyn += YYTERROR; if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR) goto yyerrdefault; yyn = yytable[yyn]; if (yyn < 0) { if (yyn == YYFLAG) goto yyerrpop; yyn = -yyn; goto yyreduce; } else if (yyn == 0) goto yyerrpop; if (yyn == YYFINAL) YYACCEPT; #if YYDEBUG != 0 if (yydebug) #ifdef ESKIT *stderr << "Shifting error token, "; #else fprintf(stderr, "Shifting error token, "); #endif #endif *++yyvsp = yylval; #ifdef YYLSP_NEEDED *++yylsp = yylloc; #endif yystate = yyn; goto yynewstate; } #line 486 "vhdl_par.y" #include "lex.yy.cc" #include "routines.cc"