CLanguage by praeclarum

<PackageReference Include="CLanguage" Version="0.2.12" />

 CParser

public class CParser
using CLanguage.Parser.yyParser; using CLanguage.Syntax; using CLanguage.Types; using System; using System.Collections.Generic; using System.IO; namespace CLanguage.Parser { public class CParser { public TextWriter ErrorOutput = Console.Out; public int eof_token; protected const int yyFinal = 27; protected static readonly string[] yyNames = new string[321] { "end-of-file", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "'!'", null, null, null, "'%'", "'&'", null, "'('", "')'", "'*'", "'+'", "','", "'-'", "'.'", "'/'", null, null, null, null, null, null, null, null, null, null, "':'", "';'", "'<'", "'='", "'>'", "'?'", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "'['", null, "']'", "'^'", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "'{'", "'|'", "'}'", "'~'", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "IDENTIFIER", "CONSTANT", "STRING_LITERAL", "SIZEOF", "PTR_OP", "INC_OP", "DEC_OP", "LEFT_OP", "RIGHT_OP", "LE_OP", "GE_OP", "EQ_OP", "NE_OP", "AND_OP", "OR_OP", "MUL_ASSIGN", "DIV_ASSIGN", "MOD_ASSIGN", "ADD_ASSIGN", "SUB_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN", "TYPE_NAME", "TYPEDEF", "EXTERN", "STATIC", "AUTO", "REGISTER", "INLINE", "RESTRICT", "CHAR", "SHORT", "INT", "LONG", "SIGNED", "UNSIGNED", "FLOAT", "DOUBLE", "CONST", "VOLATILE", "VOID", "BOOL", "COMPLEX", "IMAGINARY", "STRUCT", "CLASS", "UNION", "ENUM", "ELLIPSIS", "CASE", "DEFAULT", "IF", "ELSE", "SWITCH", "WHILE", "DO", "FOR", "GOTO", "CONTINUE", "BREAK", "RETURN" }; private int yyExpectingState; protected int yyMax; private static int[] global_yyStates; private static object[] global_yyVals; protected bool use_global_stacks; private object[] yyVals; private object yyVal; private int yyToken; private int yyTop; private static readonly short[] yyLhs = new short[231] { -1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8, 10, 10, 10, 10, 9, 9, 11, 11, 11, 11, 12, 12, 12, 13, 13, 13, 14, 14, 14, 14, 14, 15, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 7, 7, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 2, 2, 23, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 31, 31, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 34, 34, 34, 36, 36, 36, 38, 38, 38, 38, 35, 35, 35, 35, 35, 39, 39, 40, 40, 30, 32, 32, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 41, 41, 41, 43, 43, 29, 29, 29, 44, 44, 46, 46, 47, 47, 47, 45, 45, 5, 5, 48, 48, 48, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 33, 33, 33, 6, 6, 6, 6, 50, 51, 51, 52, 52, 53, 53, 53, 53, 53, 53, 54, 54, 54, 37, 37, 59, 59, 60, 60, 55, 55, 56, 56, 56, 57, 57, 57, 57, 57, 57, 58, 58, 58, 58, 58, 0, 0, 61, 61, 62, 62, 63, 63 }; private static readonly short[] yyLen = new short[231] { 2, 1, 1, 1, 3, 1, 4, 3, 4, 3, 3, 2, 2, 6, 7, 1, 3, 1, 2, 2, 2, 2, 2, 2, 4, 1, 1, 1, 1, 1, 4, 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2, 1, 1, 1, 2, 1, 2, 1, 4, 5, 5, 6, 2, 1, 3, 1, 3, 1, 2, 1, 1, 3, 5, 4, 4, 6, 6, 5, 4, 3, 4, 4, 3, 1, 2, 2, 3, 1, 2, 1, 1, 1, 1, 3, 1, 3, 2, 2, 1, 1, 3, 1, 2, 1, 1, 2, 3, 2, 3, 3, 4, 3, 4, 2, 3, 3, 4, 1, 3, 4, 1, 2, 3, 4, 2, 1, 2, 3, 2, 1, 1, 1, 1, 1, 1, 3, 4, 3, 2, 3, 1, 2, 1, 1, 1, 2, 5, 7, 5, 5, 7, 6, 7, 6, 7, 3, 2, 2, 2, 3, 1, 2, 1, 1, 4, 3, 1, 2 }; private static readonly short[] yyDefRed = new short[385] { 0, 110, 91, 92, 93, 94, 95, 130, 153, 97, 98, 99, 100, 103, 104, 101, 102, 152, 154, 96, 105, 106, 107, 114, 115, 116, 0, 0, 226, 0, 0, 0, 0, 0, 108, 109, 0, 223, 225, 0, 0, 224, 133, 0, 0, 77, 0, 87, 0, 0, 0, 80, 82, 84, 86, 0, 0, 112, 0, 0, 0, 126, 0, 150, 148, 0, 0, 78, 0, 229, 0, 228, 0, 0, 0, 0, 111, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 201, 0, 0, 25, 26, 27, 28, 207, 5, 0, 0, 74, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 205, 193, 206, 192, 194, 195, 196, 197, 0, 203, 0, 0, 121, 0, 134, 151, 149, 88, 0, 1, 0, 180, 90, 230, 227, 162, 145, 0, 0, 0, 0, 157, 0, 142, 0, 0, 0, 0, 0, 23, 0, 18, 19, 29, 76, 0, 0, 0, 0, 0, 0, 0, 0, 219, 220, 221, 0, 0, 0, 0, 0, 0, 20, 21, 0, 208, 0, 11, 12, 0, 0, 0, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 63, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, 204, 122, 0, 129, 123, 127, 0, 0, 0, 183, 0, 0, 188, 0, 0, 159, 0, 160, 0, 143, 144, 0, 0, 0, 141, 137, 0, 136, 0, 0, 198, 0, 0, 0, 200, 0, 0, 0, 0, 0, 0, 218, 222, 4, 0, 117, 119, 0, 0, 165, 75, 10, 7, 0, 15, 0, 9, 62, 32, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 0, 191, 181, 0, 184, 187, 189, 176, 0, 0, 170, 0, 0, 0, 0, 0, 163, 156, 158, 0, 0, 140, 135, 0, 0, 199, 0, 0, 0, 0, 0, 0, 0, 30, 8, 0, 6, 0, 190, 182, 185, 0, 177, 169, 174, 171, 178, 0, 172, 0, 0, 138, 139, 0, 211, 212, 0, 0, 0, 0, 0, 0, 16, 60, 186, 179, 175, 173, 0, 0, 216, 0, 214, 0, 13, 0, 210, 213, 217, 215, 14 }; protected static readonly short[] yyDgoto = new short[64] { 27, 103, 104, 105, 279, 179, 234, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 204, 166, 28, 70, 46, 30, 31, 32, 33, 47, 62, 235, 34, 35, 36, 122, 182, 60, 61, 49, 50, 65, 312, 150, 151, 152, 313, 244, 236, 237, 238, 123, 124, 125, 126, 127, 128, 129, 130, 37, 38, 72 }; protected static readonly short[] yySindex = new short[385] { 2462, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -83, 2462, 0, -24, 2462, 2462, 2462, 2462, 0, 0, -64, 0, 0, -76, -196, 0, 0, -13, -17, 0, 96, 0, 970, 16, 2, 0, 0, 0, 0, -35, 64, 0, -196, 7, 6, 0, 53, 0, 0, -17, -13, 0, -28, 0, -24, 0, 2357, 2, 344, 3, 0, 47, 0, 0, 2228, 2261, 2261, 2295, 99, 165, 170, 184, 493, 202, 49, 261, 270, 956, 433, 0, 2295, 2295, 0, 0, 0, 0, 0, 0, 160, 137, 0, 130, 0, 2295, 164, 242, 148, 66, 216, 255, 231, 210, 106, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 0, 9, 2295, 0, -101, 0, 0, 0, 0, 327, 0, 2033, 0, 0, 0, 0, 0, 0, -36, 356, 97, 357, 0, 5, 0, 2056, 321, 621, 493, 433, 0, 433, 0, 0, 0, 0, 383, 493, 2295, 2295, 2295, 131, 532, 397, 0, 0, 0, 163, 110, 419, 2285, 2285, 34, 0, 0, 2295, 0, 213, 0, 0, 2064, 2295, 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2295, 0, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 0, 0, 0, -88, 0, 0, 0, 2295, 220, 21, 0, -28, 251, 0, 756, 2087, 0, -37, 0, 61, 0, 0, 256, 2409, 1045, 0, 0, 2295, 0, 2098, 441, 0, 496, 501, 493, 0, 173, 234, 239, 505, 2112, 2112, 0, 0, 0, 2134, 0, 0, 893, 109, 0, 0, 0, 0, 266, 0, 18, 0, 0, 0, 0, 0, 164, 164, 242, 242, 148, 148, 148, 148, 66, 66, 216, 255, 231, 210, 106, 27, 0, 460, 0, 0, 1791, 0, 0, 0, 0, 513, 514, 0, 2156, 463, 61, 476, 2172, 0, 0, 0, 464, 465, 0, 0, 437, 437, 0, 493, 493, 493, 2295, 2185, 2199, 2033, 0, 0, 2295, 0, 2295, 0, 0, 0, -28, 0, 0, 0, 0, 0, 520, 0, 2236, 469, 0, 0, 252, 0, 0, 273, 493, 274, 493, 413, 22, 0, 0, 0, 0, 0, 0, 493, 507, 0, 493, 0, 493, 0, 1993, 0, 0, 0, 0, 0 }; protected static readonly short[] yyRindex = new short[385] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -21, 488, 527, 629, 0, 0, 0, 0, 0, 657, 0, 0, 0, 0, 39, 0, 0, 0, 232, 0, 863, 0, 0, 0, 0, 832, 0, 0, 0, 23, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 944, 0, 0, 0, 1251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1278, 0, 1346, 0, 0, 1356, 1369, 1657, 1794, 19, 2344, 74, 2448, 28, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 0, 0, 0, 0, 0, 0, 0, 0, 414, 0, 0, 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 295, 537, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 428, 0, 438, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 539, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1414, 1441, 1603, 1629, 1680, 1703, 1726, 1754, 1817, 1894, 1917, 2408, 2419, 2472, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 442, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; protected static readonly short[] yyGindex = new short[64] { 0, 0, 517, 0, 0, 228, 237, -68, 760, -45, 0, 331, 332, 125, 333, 362, 363, 361, 365, 366, 0, -74, 0, -93, 36, 1, 0, 0, 300, 2389, 0, 518, 157, -66, 0, 0, 0, 491, 368, 530, -104, 70, -27, -26, -61, 0, 0, 337, 31, -62, -263, 0, 353, -77, 0, -146, 0, 0, 0, 0, 466, 565, 0, 0 }; protected static readonly short[] yyTable = new short[2770] { 142, 29, 143, 239, 239, 101, 44, 156, 224, 165, 96, 171, 94, 149, 97, 98, 43, 99, 44, 79, 79, 79, 73, 79, 230, 44, 266, 43, 29, 44, 231, 51, 52, 53, 54, 45, 101, 303, 79, 229, 40, 96, 74, 94, 345, 155, 98, 58, 99, 157, 134, 183, 184, 228, 240, 240, 43, 49, 165, 56, 49, 59, 185, 49, 205, 307, 379, 128, 132, 57, 79, 185, 57, 142, 273, 148, 44, 49, 49, 146, 146, 256, 49, 146, 69, 341, 57, 57, 56, 255, 260, 57, 121, 75, 135, 141, 154, 101, 100, 147, 147, 318, 96, 147, 94, 158, 97, 98, 144, 99, 184, 340, 49, 49, 64, 53, 345, 276, 53, 334, 335, 57, 280, 102, 231, 240, 215, 249, 216, 100, 146, 133, 53, 53, 227, 137, 283, 53, 246, 304, 66, 247, 58, 49, 49, 58, 306, 378, 128, 273, 147, 269, 319, 57, 185, 67, 59, 167, 165, 58, 58, 284, 285, 286, 58, 121, 101, 53, 142, 59, 308, 96, 316, 94, 39, 97, 98, 190, 99, 243, 317, 323, 329, 192, 324, 59, 48, 56, 59, 95, 100, 203, 102, 55, 58, 118, 118, 118, 53, 53, 240, 208, 59, 59, 185, 168, 206, 185, 265, 184, 169, 207, 317, 275, 330, 73, 223, 185, 242, 186, 42, 42, 268, 139, 170, 337, 58, 139, 191, 140, 78, 79, 80, 42, 81, 82, 79, 59, 209, 142, 148, 344, 172, 209, 42, 209, 118, 209, 209, 148, 209, 354, 274, 357, 358, 359, 56, 351, 225, 100, 140, 78, 79, 80, 209, 81, 82, 367, 142, 59, 184, 366, 8, 42, 148, 331, 89, 142, 185, 368, 332, 17, 18, 185, 374, 209, 376, 210, 153, 49, 49, 89, 8, 219, 8, 380, 146, 233, 382, 57, 383, 17, 18, 17, 18, 241, 173, 338, 184, 242, 339, 142, 309, 344, 373, 375, 147, 185, 185, 148, 174, 77, 78, 79, 80, 220, 81, 82, 209, 175, 209, 209, 213, 214, 221, 120, 120, 120, 291, 292, 293, 294, 232, 274, 53, 53, 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, 58, 83, 84, 85, 222, 86, 87, 88, 89, 90, 91, 92, 93, 147, 120, 257, 68, 258, 77, 78, 79, 80, 180, 81, 82, 245, 187, 188, 189, 248, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 211, 212, 251, 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, 259, 83, 84, 85, 264, 86, 87, 88, 89, 90, 91, 92, 93, 377, 161, 267, 185, 161, 180, 270, 180, 209, 209, 209, 209, 101, 209, 209, 166, 277, 96, 166, 94, 282, 97, 98, 305, 99, 167, 180, 180, 167, 168, 217, 218, 168, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 320, 209, 209, 209, 350, 209, 209, 209, 209, 209, 209, 209, 209, 101, 57, 81, 81, 81, 96, 81, 94, 326, 97, 98, 327, 99, 71, 287, 288, 328, 289, 290, 333, 76, 81, 271, 272, 295, 296, 102, 342, 346, 347, 349, 355, 356, 100, 336, 369, 371, 145, 372, 101, 381, 83, 83, 83, 96, 83, 94, 365, 97, 98, 155, 99, 164, 81, 166, 297, 299, 298, 138, 322, 83, 300, 131, 301, 310, 102, 41, 0, 0, 226, 0, 0, 0, 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 177, 178, 0, 0, 0, 0, 56, 0, 83, 100, 0, 0, 0, 0, 0, 0, 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, 0, 0, 101, 0, 0, 0, 100, 96, 0, 94, 0, 254, 98, 0, 99, 0, 0, 85, 85, 85, 0, 85, 0, 0, 178, 0, 178, 0, 0, 0, 0, 0, 0, 261, 262, 263, 85, 0, 140, 78, 79, 80, 0, 81, 82, 125, 125, 125, 0, 125, 0, 0, 0, 0, 0, 0, 281, 0, 0, 0, 0, 0, 253, 1, 125, 0, 0, 0, 85, 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 302, 0, 0, 0, 81, 0, 100, 125, 0, 77, 78, 79, 80, 0, 81, 82, 0, 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, 83, 0, 0, 0, 0, 140, 78, 79, 80, 0, 81, 82, 239, 311, 44, 0, 0, 0, 83, 84, 85, 0, 86, 87, 88, 89, 90, 91, 92, 93, 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, 160, 162, 163, 164, 0, 0, 0, 240, 0, 0, 360, 362, 364, 0, 0, 0, 164, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 0, 0, 113, 113, 113, 0, 113, 0, 140, 78, 79, 80, 0, 81, 82, 0, 85, 0, 0, 0, 0, 113, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 0, 252, 132, 0, 0, 8, 0, 0, 0, 125, 164, 0, 0, 0, 17, 18, 0, 132, 113, 132, 0, 0, 0, 0, 0, 0, 0, 0, 273, 311, 44, 0, 0, 0, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 0, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 240, 131, 132, 0, 131, 101, 0, 0, 164, 0, 96, 0, 94, 0, 97, 98, 0, 99, 0, 131, 0, 131, 0, 0, 0, 0, 0, 0, 0, 42, 164, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 68, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 164, 0, 0, 101, 0, 0, 0, 100, 96, 0, 94, 0, 97, 98, 113, 99, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 0, 0, 0, 0, 0, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 100, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 78, 79, 80, 0, 81, 82, 0, 0, 0, 0, 0, 0, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 140, 78, 79, 80, 0, 81, 82, 0, 1, 1, 1, 1, 1, 17, 17, 0, 0, 17, 17, 17, 17, 17, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 17, 17, 17, 17, 17, 17, 1, 17, 18, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 0, 0, 24, 24, 24, 24, 24, 0, 24, 0, 0, 0, 0, 0, 17, 17, 0, 0, 1, 24, 24, 24, 24, 24, 24, 0, 29, 29, 0, 0, 29, 29, 29, 29, 29, 0, 29, 35, 0, 0, 35, 0, 35, 35, 35, 17, 17, 29, 29, 29, 38, 29, 29, 38, 24, 24, 38, 35, 35, 35, 0, 35, 35, 0, 0, 0, 0, 0, 0, 0, 38, 38, 38, 0, 38, 38, 0, 0, 0, 0, 0, 0, 29, 29, 0, 24, 24, 0, 0, 0, 0, 0, 35, 35, 0, 36, 0, 0, 36, 0, 36, 36, 36, 0, 0, 38, 38, 0, 0, 0, 0, 0, 0, 29, 29, 36, 36, 36, 0, 36, 36, 0, 37, 35, 35, 37, 0, 37, 37, 37, 0, 0, 0, 0, 0, 0, 38, 38, 0, 0, 0, 0, 37, 37, 37, 0, 37, 37, 0, 0, 36, 36, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 37, 37, 0, 0, 36, 36, 0, 0, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 0, 0, 0, 0, 0, 37, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 29, 29, 29, 29, 29, 29, 29, 0, 0, 35, 35, 35, 35, 35, 35, 35, 35, 0, 0, 0, 0, 0, 38, 38, 38, 38, 38, 38, 38, 38, 39, 0, 0, 39, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 39, 39, 0, 39, 39, 40, 0, 0, 40, 0, 0, 40, 0, 0, 0, 0, 36, 36, 36, 36, 36, 36, 36, 36, 0, 40, 40, 40, 0, 40, 40, 0, 0, 41, 39, 39, 41, 0, 0, 41, 0, 0, 0, 37, 37, 37, 37, 37, 37, 37, 37, 0, 0, 41, 41, 41, 44, 41, 41, 44, 40, 40, 44, 0, 0, 39, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 44, 44, 45, 44, 44, 45, 0, 0, 45, 0, 0, 41, 41, 0, 40, 40, 0, 0, 0, 0, 0, 0, 45, 45, 45, 42, 45, 45, 42, 0, 0, 42, 0, 0, 44, 44, 0, 0, 0, 0, 0, 0, 41, 41, 0, 42, 42, 42, 0, 42, 42, 0, 0, 43, 0, 0, 43, 45, 45, 43, 0, 0, 0, 0, 0, 44, 44, 0, 0, 0, 0, 0, 0, 43, 43, 43, 0, 43, 43, 0, 42, 42, 0, 0, 0, 101, 0, 0, 45, 45, 96, 0, 94, 46, 97, 98, 46, 99, 233, 46, 0, 0, 0, 0, 0, 0, 0, 0, 43, 43, 0, 42, 42, 46, 46, 0, 47, 0, 46, 47, 0, 0, 47, 0, 0, 0, 0, 0, 39, 39, 39, 39, 39, 39, 39, 39, 47, 47, 0, 43, 43, 47, 0, 232, 0, 0, 0, 0, 46, 46, 0, 0, 0, 0, 40, 40, 40, 40, 40, 40, 40, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 141, 0, 343, 100, 46, 46, 0, 0, 0, 41, 41, 41, 41, 41, 41, 0, 0, 0, 48, 0, 0, 48, 0, 0, 48, 0, 0, 47, 47, 0, 0, 0, 44, 44, 44, 44, 44, 44, 48, 48, 0, 50, 0, 48, 50, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 50, 50, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 48, 48, 0, 0, 0, 42, 42, 42, 42, 42, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 0, 0, 0, 0, 0, 0, 48, 48, 43, 43, 43, 43, 43, 43, 101, 0, 0, 0, 0, 96, 0, 94, 0, 97, 98, 0, 99, 233, 0, 50, 50, 0, 0, 0, 0, 0, 140, 78, 79, 80, 0, 81, 82, 0, 0, 0, 0, 0, 0, 0, 46, 46, 46, 46, 101, 0, 0, 0, 0, 96, 0, 94, 0, 97, 98, 0, 99, 233, 0, 0, 0, 0, 232, 47, 47, 47, 47, 101, 0, 0, 0, 0, 96, 0, 94, 101, 97, 98, 0, 99, 96, 0, 94, 278, 97, 98, 0, 99, 0, 0, 0, 0, 0, 0, 141, 0, 384, 100, 101, 0, 0, 0, 232, 96, 0, 94, 0, 315, 98, 101, 99, 0, 0, 0, 96, 0, 94, 0, 97, 98, 0, 99, 0, 101, 0, 0, 0, 250, 96, 0, 94, 0, 97, 98, 141, 99, 0, 100, 0, 0, 48, 48, 48, 48, 0, 101, 0, 0, 0, 102, 96, 0, 94, 0, 97, 98, 0, 99, 314, 0, 100, 0, 0, 0, 0, 50, 50, 101, 100, 325, 0, 0, 96, 0, 94, 0, 97, 98, 0, 99, 0, 0, 0, 101, 0, 0, 0, 0, 96, 0, 94, 100, 353, 98, 0, 99, 101, 0, 0, 0, 0, 96, 100, 94, 361, 97, 98, 0, 99, 0, 101, 0, 0, 0, 0, 96, 100, 94, 363, 97, 98, 0, 99, 0, 0, 0, 0, 348, 140, 78, 79, 80, 0, 81, 82, 336, 0, 0, 100, 101, 0, 0, 0, 352, 96, 0, 159, 101, 97, 98, 0, 99, 96, 0, 94, 0, 97, 98, 0, 99, 100, 0, 0, 0, 0, 0, 0, 0, 140, 78, 79, 80, 101, 81, 82, 0, 100, 96, 0, 161, 0, 97, 98, 0, 99, 0, 0, 0, 0, 100, 0, 140, 78, 79, 80, 0, 81, 82, 0, 140, 78, 79, 80, 100, 81, 82, 101, 370, 0, 0, 0, 96, 0, 94, 0, 97, 98, 0, 99, 0, 0, 0, 140, 78, 79, 80, 0, 81, 82, 0, 0, 0, 100, 140, 78, 79, 80, 0, 81, 82, 100, 0, 0, 0, 0, 0, 0, 140, 78, 79, 80, 0, 81, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 100, 51, 0, 0, 140, 78, 79, 80, 0, 81, 82, 0, 0, 0, 0, 51, 51, 0, 0, 0, 51, 0, 0, 0, 0, 0, 140, 78, 79, 80, 0, 81, 82, 0, 100, 0, 0, 0, 0, 0, 0, 0, 140, 78, 79, 80, 63, 81, 82, 0, 51, 51, 0, 0, 0, 140, 78, 79, 80, 0, 81, 82, 52, 0, 0, 52, 0, 136, 0, 140, 78, 79, 80, 54, 81, 82, 54, 63, 0, 52, 52, 51, 51, 0, 52, 0, 0, 0, 0, 0, 54, 54, 0, 56, 0, 54, 181, 0, 140, 78, 79, 80, 55, 81, 82, 55, 140, 78, 79, 80, 0, 81, 82, 0, 52, 52, 0, 0, 0, 55, 55, 0, 0, 0, 55, 54, 56, 0, 0, 56, 0, 140, 78, 79, 80, 0, 81, 82, 0, 0, 0, 0, 0, 56, 56, 52, 52, 0, 56, 0, 0, 0, 0, 0, 55, 63, 54, 54, 0, 136, 0, 181, 0, 181, 0, 140, 78, 79, 80, 0, 81, 82, 0, 0, 0, 0, 0, 0, 56, 0, 1, 0, 181, 181, 0, 0, 55, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 54, 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, 321, 55, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 56, 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 }; protected static readonly short[] yyCheck = new short[2770] { 68, 0, 68, 40, 40, 33, 42, 75, 63, 83, 38, 88, 40, 74, 42, 43, 40, 45, 42, 40, 41, 42, 49, 44, 125, 42, 172, 40, 27, 42, 134, 30, 31, 32, 33, 59, 33, 125, 59, 132, 123, 38, 40, 40, 307, 42, 43, 123, 45, 75, 44, 96, 97, 44, 91, 91, 40, 38, 132, 123, 41, 257, 44, 44, 109, 44, 44, 44, 61, 41, 91, 44, 44, 141, 40, 74, 42, 58, 59, 40, 41, 158, 63, 44, 48, 58, 58, 59, 123, 157, 167, 63, 56, 91, 41, 123, 93, 33, 126, 40, 41, 40, 38, 44, 40, 58, 42, 43, 72, 45, 155, 93, 93, 94, 44, 41, 379, 185, 44, 265, 266, 93, 190, 59, 228, 91, 60, 153, 62, 126, 91, 125, 58, 59, 125, 65, 204, 63, 41, 232, 44, 44, 41, 124, 125, 44, 125, 125, 125, 40, 91, 41, 91, 125, 44, 59, 257, 58, 232, 58, 59, 206, 207, 208, 63, 129, 33, 93, 236, 257, 236, 38, 240, 40, 257, 42, 43, 40, 45, 148, 242, 249, 259, 46, 252, 41, 29, 123, 44, 125, 126, 61, 59, 257, 93, 40, 41, 42, 124, 125, 91, 37, 58, 59, 44, 40, 42, 44, 172, 254, 40, 47, 274, 182, 41, 242, 271, 44, 148, 59, 257, 257, 59, 66, 40, 270, 125, 70, 91, 257, 258, 259, 260, 257, 262, 263, 257, 93, 33, 307, 239, 307, 40, 38, 257, 40, 91, 42, 43, 248, 45, 319, 182, 330, 331, 332, 123, 318, 125, 126, 257, 258, 259, 260, 59, 262, 263, 341, 336, 125, 315, 339, 289, 257, 273, 41, 44, 345, 44, 345, 41, 298, 299, 44, 361, 43, 363, 45, 285, 270, 271, 59, 289, 38, 289, 372, 257, 46, 375, 271, 377, 298, 299, 298, 299, 148, 257, 41, 353, 239, 44, 379, 61, 379, 41, 41, 257, 44, 44, 318, 59, 257, 258, 259, 260, 94, 262, 263, 123, 59, 125, 126, 266, 267, 124, 40, 41, 42, 213, 214, 215, 216, 91, 273, 270, 271, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 271, 309, 310, 311, 270, 313, 314, 315, 316, 317, 318, 319, 320, 41, 91, 159, 61, 161, 257, 258, 259, 260, 94, 262, 263, 41, 261, 262, 263, 44, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 264, 265, 93, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 58, 309, 310, 311, 314, 313, 314, 315, 316, 317, 318, 319, 320, 41, 41, 59, 44, 44, 159, 41, 161, 257, 258, 259, 260, 33, 262, 263, 41, 257, 38, 44, 40, 257, 42, 43, 257, 45, 41, 180, 181, 44, 41, 268, 269, 44, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 257, 309, 310, 311, 41, 313, 314, 315, 316, 317, 318, 319, 320, 33, 36, 40, 41, 42, 38, 44, 40, 93, 42, 43, 41, 45, 48, 209, 210, 41, 211, 212, 40, 55, 59, 180, 181, 217, 218, 59, 93, 41, 41, 93, 93, 93, 126, 123, 41, 93, 72, 312, 33, 59, 40, 41, 42, 38, 44, 40, 336, 42, 43, 41, 45, 41, 91, 41, 219, 221, 220, 66, 248, 59, 222, 58, 223, 237, 59, 27, -1, -1, 129, -1, -1, -1, -1, -1, 257, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, -1, -1, -1, 123, -1, 91, 126, -1, -1, -1, -1, -1, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, -1, -1, 33, -1, -1, -1, 126, 38, -1, 40, -1, 42, 43, -1, 45, -1, -1, 40, 41, 42, -1, 44, -1, -1, 159, -1, 161, -1, -1, -1, -1, -1, -1, 168, 169, 170, 59, -1, 257, 258, 259, 260, -1, 262, 263, 40, 41, 42, -1, 44, -1, -1, -1, -1, -1, -1, 191, -1, -1, -1, -1, -1, 93, 282, 59, -1, -1, -1, 91, -1, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 224, -1, -1, -1, 257, -1, 126, 91, -1, 257, 258, 259, 260, -1, 262, 263, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 257, -1, -1, -1, -1, 257, 258, 259, 260, -1, 262, 263, 40, 41, 42, -1, -1, -1, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 80, 81, 82, 83, -1, -1, -1, 91, -1, -1, 333, 334, 335, -1, -1, -1, 96, 97, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 109, -1, -1, 40, 41, 42, -1, 44, -1, 257, 258, 259, 260, -1, 262, 263, -1, 257, -1, -1, -1, -1, 59, 132, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, 285, 44, -1, -1, 289, -1, -1, -1, 257, 155, -1, -1, -1, 298, 299, -1, 59, 91, 61, -1, -1, -1, -1, -1, -1, -1, -1, 40, 41, 42, -1, -1, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, -1, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 91, 41, 123, -1, 44, 33, -1, -1, 232, -1, 38, -1, 40, -1, 42, 43, -1, 45, -1, 59, -1, 61, -1, -1, -1, -1, -1, -1, -1, 257, 254, 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 270, 61, -1, -1, -1, -1, -1, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, -1, -1, -1, 123, -1, -1, -1, -1, -1, -1, -1, 315, -1, -1, 33, -1, -1, -1, 126, 38, -1, 40, -1, 42, 43, 257, 45, -1, -1, 123, -1, -1, -1, -1, -1, -1, -1, 341, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 353, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, -1, -1, -1, -1, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 126, -1, -1, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, -1, 262, 263, -1, -1, -1, -1, -1, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, -1, 42, 43, 44, 45, 46, 47, -1, -1, -1, 257, 258, 259, 260, -1, 262, 263, -1, 59, 60, 61, 62, 63, 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, 289, -1, 58, 59, 60, 61, 62, 63, 91, 298, 299, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, -1, -1, 93, 94, -1, -1, 124, 58, 59, 60, 61, 62, 63, -1, 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, 38, -1, -1, 41, -1, 43, 44, 45, 124, 125, 58, 59, 60, 38, 62, 63, 41, 93, 94, 44, 58, 59, 60, -1, 62, 63, -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, -1, 62, 63, -1, -1, -1, -1, -1, -1, 93, 94, -1, 124, 125, -1, -1, -1, -1, -1, 93, 94, -1, 38, -1, -1, 41, -1, 43, 44, 45, -1, -1, 93, 94, -1, -1, -1, -1, -1, -1, 124, 125, 58, 59, 60, -1, 62, 63, -1, 38, 124, 125, 41, -1, 43, 44, 45, -1, -1, -1, -1, -1, -1, 124, 125, -1, -1, -1, -1, 58, 59, 60, -1, 62, 63, -1, -1, 93, 94, -1, -1, -1, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, -1, 93, 94, -1, -1, 124, 125, -1, -1, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, -1, -1, -1, -1, -1, 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 264, 265, 266, 267, 268, 269, 270, 271, -1, -1, 264, 265, 266, 267, 268, 269, 270, 271, -1, -1, -1, -1, -1, 264, 265, 266, 267, 268, 269, 270, 271, 38, -1, -1, 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, -1, 62, 63, 38, -1, -1, 41, -1, -1, 44, -1, -1, -1, -1, 264, 265, 266, 267, 268, 269, 270, 271, -1, 58, 59, 60, -1, 62, 63, -1, -1, 38, 93, 94, 41, -1, -1, 44, -1, -1, -1, 264, 265, 266, 267, 268, 269, 270, 271, -1, -1, 58, 59, 60, 38, 62, 63, 41, 93, 94, 44, -1, -1, 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, 38, 62, 63, 41, -1, -1, 44, -1, -1, 93, 94, -1, 124, 125, -1, -1, -1, -1, -1, -1, 58, 59, 60, 38, 62, 63, 41, -1, -1, 44, -1, -1, 93, 94, -1, -1, -1, -1, -1, -1, 124, 125, -1, 58, 59, 60, -1, 62, 63, -1, -1, 38, -1, -1, 41, 93, 94, 44, -1, -1, -1, -1, -1, 124, 125, -1, -1, -1, -1, -1, -1, 58, 59, 60, -1, 62, 63, -1, 93, 94, -1, -1, -1, 33, -1, -1, 124, 125, 38, -1, 40, 38, 42, 43, 41, 45, 46, 44, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, 124, 125, 58, 59, -1, 38, -1, 63, 41, -1, -1, 44, -1, -1, -1, -1, -1, 264, 265, 266, 267, 268, 269, 270, 271, 58, 59, -1, 124, 125, 63, -1, 91, -1, -1, -1, -1, 93, 94, -1, -1, -1, -1, 264, 265, 266, 267, 268, 269, 270, 271, -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, -1, 123, -1, 125, 126, 124, 125, -1, -1, -1, 266, 267, 268, 269, 270, 271, -1, -1, -1, 38, -1, -1, 41, -1, -1, 44, -1, -1, 124, 125, -1, -1, -1, 266, 267, 268, 269, 270, 271, 58, 59, -1, 38, -1, 63, 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, 266, 267, 268, 269, 270, 271, 58, 59, -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, 93, 94, -1, -1, -1, 266, 267, 268, 269, 270, 271, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, -1, -1, -1, -1, -1, 124, 125, 266, 267, 268, 269, 270, 271, 33, -1, -1, -1, -1, 38, -1, 40, -1, 42, 43, -1, 45, 46, -1, 124, 125, -1, -1, -1, -1, -1, 257, 258, 259, 260, -1, 262, 263, -1, -1, -1, -1, -1, -1, -1, 268, 269, 270, 271, 33, -1, -1, -1, -1, 38, -1, 40, -1, 42, 43, -1, 45, 46, -1, -1, -1, -1, 91, 268, 269, 270, 271, 33, -1, -1, -1, -1, 38, -1, 40, 33, 42, 43, -1, 45, 38, -1, 40, 41, 42, 43, -1, 45, -1, -1, -1, -1, -1, -1, 123, -1, 125, 126, 33, -1, -1, -1, 91, 38, -1, 40, -1, 42, 43, 33, 45, -1, -1, -1, 38, -1, 40, -1, 42, 43, -1, 45, -1, 33, -1, -1, -1, 93, 38, -1, 40, -1, 42, 43, 123, 45, -1, 126, -1, -1, 268, 269, 270, 271, -1, 33, -1, -1, -1, 59, 38, -1, 40, -1, 42, 43, -1, 45, 93, -1, 126, -1, -1, -1, -1, 270, 271, 33, 126, 93, -1, -1, 38, -1, 40, -1, 42, 43, -1, 45, -1, -1, -1, 33, -1, -1, -1, -1, 38, -1, 40, 126, 42, 43, -1, 45, 33, -1, -1, -1, -1, 38, 126, 40, 41, 42, 43, -1, 45, -1, 33, -1, -1, -1, -1, 38, 126, 40, 41, 42, 43, -1, 45, -1, -1, -1, -1, 93, 257, 258, 259, 260, -1, 262, 263, 123, -1, -1, 126, 33, -1, -1, -1, 93, 38, -1, 40, 33, 42, 43, -1, 45, 38, -1, 40, -1, 42, 43, -1, 45, 126, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 33, 262, 263, -1, 126, 38, -1, 40, -1, 42, 43, -1, 45, -1, -1, -1, -1, 126, -1, 257, 258, 259, 260, -1, 262, 263, -1, 257, 258, 259, 260, 126, 262, 263, 33, 93, -1, -1, -1, 38, -1, 40, -1, 42, 43, -1, 45, -1, -1, -1, 257, 258, 259, 260, -1, 262, 263, -1, -1, -1, 126, 257, 258, 259, 260, -1, 262, 263, 126, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, -1, 262, 263, -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, 126, 44, -1, -1, 257, 258, 259, 260, -1, 262, 263, -1, -1, -1, -1, 58, 59, -1, -1, -1, 63, -1, -1, -1, -1, -1, 257, 258, 259, 260, -1, 262, 263, -1, 126, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 44, 262, 263, -1, 93, 94, -1, -1, -1, 257, 258, 259, 260, -1, 262, 263, 41, -1, -1, 44, -1, 65, -1, 257, 258, 259, 260, 41, 262, 263, 44, 75, -1, 58, 59, 124, 125, -1, 63, -1, -1, -1, -1, -1, 58, 59, -1, 123, -1, 63, 94, -1, 257, 258, 259, 260, 41, 262, 263, 44, 257, 258, 259, 260, -1, 262, 263, -1, 93, 94, -1, -1, -1, 58, 59, -1, -1, -1, 63, 93, 41, -1, -1, 44, -1, 257, 258, 259, 260, -1, 262, 263, -1, -1, -1, -1, -1, 58, 59, 124, 125, -1, 63, -1, -1, -1, -1, -1, 93, 153, 124, 125, -1, 157, -1, 159, -1, 161, -1, 257, 258, 259, 260, -1, 262, 263, -1, -1, -1, -1, -1, -1, 93, -1, 282, -1, 180, 181, -1, -1, 125, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, -1, -1, -1, -1, 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 270, 271, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 249, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 270, 271, -1, -1, -1, -1, -1, -1, -1, -1, -1, 270, 271, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 270, 271, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 270, 271, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307 }; public static int yacc_verbose_flag; private TranslationUnit _tu; public void yyerror(string message) { yyerror(message, null); } public void yyerror(string message, string[] expected) { if (yacc_verbose_flag > 0 && expected != null && expected.Length != 0) { ErrorOutput.Write(message + ", expecting"); for (int i = 0; i < expected.Length; i++) { ErrorOutput.Write(" " + expected[i]); } ErrorOutput.WriteLine(); } else ErrorOutput.WriteLine(message); } protected int[] yyExpectingTokens(int state) { int num = 0; bool[] array = new bool[yyNames.Length]; int num2; int i; if ((num2 = yySindex[state]) != 0) { for (i = ((num2 < 0) ? (-num2) : 0); i < yyNames.Length && num2 + i < yyTable.Length; i++) { if (yyCheck[num2 + i] == i && !array[i] && yyNames[i] != null) { num++; array[i] = true; } } } if ((num2 = yyRindex[state]) != 0) { for (i = ((num2 < 0) ? (-num2) : 0); i < yyNames.Length && num2 + i < yyTable.Length; i++) { if (yyCheck[num2 + i] == i && !array[i] && yyNames[i] != null) { num++; array[i] = true; } } } int[] array2 = new int[num]; num2 = (i = 0); while (num2 < num) { if (array[i]) array2[num2++] = i; i++; } return array2; } protected string[] yyExpecting(int state) { int[] array = yyExpectingTokens(state); string[] array2 = new string[array.Length]; for (int i = 0; i < array.Length; i++) { array2[i++] = yyNames[array[i]]; } return array2; } internal object yyparse(yyInput yyLex, object yyd) { return yyparse(yyLex); } protected object yyDefault(object first) { return first; } internal object yyparse(yyInput yyLex) { if (yyMax <= 0) yyMax = 256; int num = 0; yyVal = null; yyToken = -1; int num2 = 0; int[] array; if (use_global_stacks && global_yyStates != null) { yyVals = global_yyVals; array = global_yyStates; } else { yyVals = new object[yyMax]; array = new int[yyMax]; if (use_global_stacks) { global_yyVals = yyVals; global_yyStates = array; } } yyTop = 0; while (true) { if (yyTop >= array.Length) { Array.Resize(ref array, array.Length + yyMax); Array.Resize(ref yyVals, yyVals.Length + yyMax); } array[yyTop] = num; yyVals[yyTop] = yyVal; while (true) { int num3; if ((num3 = yyDefRed[num]) == 0) { if (yyToken < 0) yyToken = (yyLex.advance() ? yyLex.token() : 0); if ((num3 = yySindex[num]) != 0 && (num3 += yyToken) >= 0 && num3 < yyTable.Length && yyCheck[num3] == yyToken) { num = yyTable[num3]; yyVal = yyLex.value(); yyToken = -1; if (num2 > 0) num2--; break; } if ((num3 = yyRindex[num]) == 0 || (num3 += yyToken) < 0 || num3 >= yyTable.Length || yyCheck[num3] != yyToken) { switch (num2) { case 0: yyExpectingState = num; if (yyToken == 0 || yyToken == eof_token) throw new yyUnexpectedEof(); break; case 1: case 2: break; case 3: goto IL_0250; default: goto IL_026f; } num2 = 3; while ((num3 = yySindex[array[yyTop]]) == 0 || (num3 += 256) < 0 || num3 >= yyTable.Length || yyCheck[num3] != 256) { if (--yyTop < 0) throw new yyException("irrecoverable syntax error"); } num = yyTable[num3]; yyVal = yyLex.value(); break; } num3 = yyTable[num3]; } goto IL_026f; IL_026f: int num4 = yyTop + 1 - yyLen[num3]; yyVal = ((num4 > yyTop) ? null : yyVals[num4]); switch (num3) { case 1: yyVal = new VariableExpression(yyVals[yyTop].ToString()); break; case 2: yyVal = new ConstantExpression(yyVals[yyTop]); break; case 3: yyVal = new ConstantExpression(yyVals[yyTop]); break; case 4: yyVal = yyVals[-1 + yyTop]; break; case 5: yyVal = yyVals[yyTop]; break; case 6: yyVal = new ArrayElementExpression((Expression)yyVals[-3 + yyTop], (Expression)yyVals[-1 + yyTop]); break; case 7: yyVal = new FuncallExpression((Expression)yyVals[-2 + yyTop]); break; case 8: yyVal = new FuncallExpression((Expression)yyVals[-3 + yyTop], (List<Expression>)yyVals[-1 + yyTop]); break; case 9: yyVal = new MemberFromReferenceExpression((Expression)yyVals[-2 + yyTop], yyVals[yyTop].ToString()); break; case 10: throw new NotSupportedException("Syntax: postfix_expression PTR_OP IDENTIFIER"); case 11: yyVal = new UnaryExpression(Unop.PostIncrement, (Expression)yyVals[-1 + yyTop]); break; case 12: yyVal = new UnaryExpression(Unop.PostDecrement, (Expression)yyVals[-1 + yyTop]); break; case 13: throw new NotSupportedException("Syntax: '(' type_name ')' '{' initializer_list '}'"); case 14: throw new NotSupportedException("Syntax: '(' type_name ')' '{' initializer_list ',' '}'"); case 15: case_15(); break; case 16: case_16(); break; case 17: yyVal = yyVals[yyTop]; break; case 18: yyVal = new UnaryExpression(Unop.PreIncrement, (Expression)yyVals[yyTop]); break; case 19: yyVal = new UnaryExpression(Unop.PreDecrement, (Expression)yyVals[yyTop]); break; case 20: throw new NotSupportedException("Syntax: '&' cast_expression"); case 21: throw new NotSupportedException("Syntax: '*' cast_expression"); case 22: yyVal = new UnaryExpression((Unop)yyVals[-1 + yyTop], (Expression)yyVals[yyTop]); break; case 23: throw new NotSupportedException("Syntax: SIZEOF unary_expression"); case 24: throw new NotSupportedException("Syntax: SIZEOF '(' type_name ')'"); case 25: yyVal = Unop.None; break; case 26: yyVal = Unop.Negate; break; case 27: yyVal = Unop.BinaryComplement; break; case 28: yyVal = Unop.Not; break; case 29: yyVal = yyVals[yyTop]; break; case 30: yyVal = yyVals[yyTop]; break; case 31: yyVal = yyVals[yyTop]; break; case 32: yyVal = new BinaryExpression((Expression)yyVals[-2 + yyTop], Binop.Multiply, (Expression)yyVals[yyTop]); break; case 33: yyVal = new BinaryExpression((Expression)yyVals[-2 + yyTop], Binop.Divide, (Expression)yyVals[yyTop]); break; case 34: yyVal = new BinaryExpression((Expression)yyVals[-2 + yyTop], Binop.Mod, (Expression)yyVals[yyTop]); break; case 36: yyVal = new BinaryExpression((Expression)yyVals[-2 + yyTop], Binop.Add, (Expression)yyVals[yyTop]); break; case 37: yyVal = new BinaryExpression((Expression)yyVals[-2 + yyTop], Binop.Subtract, (Expression)yyVals[yyTop]); break; case 39: yyVal = new BinaryExpression((Expression)yyVals[-2 + yyTop], Binop.ShiftLeft, (Expression)yyVals[yyTop]); break; case 40: yyVal = new BinaryExpression((Expression)yyVals[-2 + yyTop], Binop.ShiftRight, (Expression)yyVals[yyTop]); break; case 42: yyVal = new RelationalExpression((Expression)yyVals[-2 + yyTop], RelationalOp.LessThan, (Expression)yyVals[yyTop]); break; case 43: yyVal = new RelationalExpression((Expression)yyVals[-2 + yyTop], RelationalOp.GreaterThan, (Expression)yyVals[yyTop]); break; case 44: yyVal = new RelationalExpression((Expression)yyVals[-2 + yyTop], RelationalOp.LessThanOrEqual, (Expression)yyVals[yyTop]); break; case 45: yyVal = new RelationalExpression((Expression)yyVals[-2 + yyTop], RelationalOp.GreaterThanOrEqual, (Expression)yyVals[yyTop]); break; case 47: yyVal = new RelationalExpression((Expression)yyVals[-2 + yyTop], RelationalOp.Equals, (Expression)yyVals[yyTop]); break; case 48: yyVal = new RelationalExpression((Expression)yyVals[-2 + yyTop], RelationalOp.NotEquals, (Expression)yyVals[yyTop]); break; case 50: yyVal = new BinaryExpression((Expression)yyVals[-2 + yyTop], Binop.BinaryAnd, (Expression)yyVals[yyTop]); break; case 52: yyVal = new BinaryExpression((Expression)yyVals[-2 + yyTop], Binop.BinaryXor, (Expression)yyVals[yyTop]); break; case 54: yyVal = new BinaryExpression((Expression)yyVals[-2 + yyTop], Binop.BinaryOr, (Expression)yyVals[yyTop]); break; case 56: yyVal = new LogicExpression((Expression)yyVals[-2 + yyTop], LogicOp.And, (Expression)yyVals[yyTop]); break; case 58: yyVal = new LogicExpression((Expression)yyVals[-2 + yyTop], LogicOp.Or, (Expression)yyVals[yyTop]); break; case 59: yyVal = yyVals[yyTop]; break; case 60: yyVal = new ConditionalExpression((Expression)yyVals[-4 + yyTop], (Expression)yyVals[-2 + yyTop], (Expression)yyVals[yyTop]); break; case 62: case_62(); break; case 63: yyVal = RelationalOp.Equals; break; case 64: yyVal = Binop.Multiply; break; case 65: yyVal = Binop.Divide; break; case 66: yyVal = Binop.Mod; break; case 67: yyVal = Binop.Add; break; case 68: yyVal = Binop.Subtract; break; case 69: yyVal = Binop.ShiftLeft; break; case 70: yyVal = Binop.ShiftRight; break; case 71: yyVal = Binop.BinaryAnd; break; case 72: yyVal = Binop.BinaryXor; break; case 73: yyVal = Binop.BinaryOr; break; case 74: yyVal = yyVals[yyTop]; break; case 75: yyVal = new SequenceExpression((Expression)yyVals[-2 + yyTop], (Expression)yyVals[yyTop]); break; case 77: case_77(); break; case 78: case_78(); break; case 79: case_79(); break; case 80: case_80(); break; case 81: case_81(); break; case 82: case_82(); break; case 83: case_83(); break; case 84: case_84(); break; case 85: case_85(); break; case 86: case_86(); break; case 87: case_87(); break; case 88: case_88(); break; case 89: case_89(); break; case 90: case_90(); break; case 91: yyVal = StorageClassSpecifier.Typedef; break; case 92: yyVal = StorageClassSpecifier.Extern; break; case 93: yyVal = StorageClassSpecifier.Static; break; case 94: yyVal = StorageClassSpecifier.Auto; break; case 95: yyVal = StorageClassSpecifier.Register; break; case 96: yyVal = new TypeSpecifier(TypeSpecifierKind.Builtin, "void", null); break; case 97: yyVal = new TypeSpecifier(TypeSpecifierKind.Builtin, "char", null); break; case 98: yyVal = new TypeSpecifier(TypeSpecifierKind.Builtin, "short", null); break; case 99: yyVal = new TypeSpecifier(TypeSpecifierKind.Builtin, "int", null); break; case 100: yyVal = new TypeSpecifier(TypeSpecifierKind.Builtin, "long", null); break; case 101: yyVal = new TypeSpecifier(TypeSpecifierKind.Builtin, "float", null); break; case 102: yyVal = new TypeSpecifier(TypeSpecifierKind.Builtin, "double", null); break; case 103: yyVal = new TypeSpecifier(TypeSpecifierKind.Builtin, "signed", null); break; case 104: yyVal = new TypeSpecifier(TypeSpecifierKind.Builtin, "unsigned", null); break; case 105: yyVal = new TypeSpecifier(TypeSpecifierKind.Builtin, "bool", null); break; case 106: yyVal = new TypeSpecifier(TypeSpecifierKind.Builtin, "complex", null); break; case 107: yyVal = new TypeSpecifier(TypeSpecifierKind.Builtin, "imaginary", null); break; case 110: yyVal = new TypeSpecifier(TypeSpecifierKind.Typename, yyVals[yyTop].ToString(), null); break; case 111: yyVal = new TypeSpecifier((TypeSpecifierKind)yyVals[-2 + yyTop], yyVals[-1 + yyTop].ToString(), (Block)yyVals[yyTop]); break; case 112: yyVal = new TypeSpecifier((TypeSpecifierKind)yyVals[-1 + yyTop], "", (Block)yyVals[yyTop]); break; case 113: yyVal = new TypeSpecifier((TypeSpecifierKind)yyVals[-1 + yyTop], yyVals[yyTop].ToString(), null); break; case 114: yyVal = TypeSpecifierKind.Struct; break; case 115: yyVal = TypeSpecifierKind.Class; break; case 116: yyVal = TypeSpecifierKind.Union; break; case 121: yyVal = new TypeSpecifier(TypeSpecifierKind.Enum, "", null); break; case 122: yyVal = new TypeSpecifier(TypeSpecifierKind.Enum, yyVals[-3 + yyTop].ToString(), null); break; case 123: yyVal = new TypeSpecifier(TypeSpecifierKind.Enum, "", null); break; case 124: yyVal = new TypeSpecifier(TypeSpecifierKind.Enum, yyVals[-4 + yyTop].ToString(), null); break; case 125: yyVal = new TypeSpecifier(TypeSpecifierKind.Enum, yyVals[yyTop].ToString(), null); break; case 130: yyVal = FunctionSpecifier.Inline; break; case 131: yyVal = new PointerDeclarator((Pointer)yyVals[-1 + yyTop], (Declarator)yyVals[yyTop]); break; case 132: yyVal = yyVals[yyTop]; break; case 133: yyVal = new IdentifierDeclarator(yyVals[yyTop].ToString()); break; case 134: case_134(); break; case 135: yyVal = MakeArrayDeclarator((Declarator)yyVals[-4 + yyTop], (TypeQualifiers)yyVals[-2 + yyTop], (Expression)yyVals[-1 + yyTop], false); break; case 136: yyVal = MakeArrayDeclarator((Declarator)yyVals[-3 + yyTop], TypeQualifiers.None, null, false); break; case 137: yyVal = MakeArrayDeclarator((Declarator)yyVals[-3 + yyTop], TypeQualifiers.None, (Expression)yyVals[-1 + yyTop], false); break; case 138: yyVal = MakeArrayDeclarator((Declarator)yyVals[-5 + yyTop], (TypeQualifiers)yyVals[-2 + yyTop], (Expression)yyVals[-1 + yyTop], true); break; case 139: yyVal = MakeArrayDeclarator((Declarator)yyVals[-5 + yyTop], (TypeQualifiers)yyVals[-3 + yyTop], (Expression)yyVals[-1 + yyTop], true); break; case 140: yyVal = MakeArrayDeclarator((Declarator)yyVals[-4 + yyTop], (TypeQualifiers)yyVals[-2 + yyTop], null, false); break; case 141: yyVal = MakeArrayDeclarator((Declarator)yyVals[-3 + yyTop], TypeQualifiers.None, null, false); break; case 142: yyVal = MakeArrayDeclarator((Declarator)yyVals[-2 + yyTop], TypeQualifiers.None, null, false); break; case 143: case_143(); break; case 144: case_144(); break; case 145: case_145(); break; case 146: yyVal = new Pointer(TypeQualifiers.None); break; case 147: yyVal = new Pointer((TypeQualifiers)yyVals[yyTop]); break; case 148: yyVal = new Pointer(TypeQualifiers.None, (Pointer)yyVals[yyTop]); break; case 149: yyVal = new Pointer((TypeQualifiers)yyVals[-1 + yyTop], (Pointer)yyVals[yyTop]); break; case 150: yyVal = yyVals[yyTop]; break; case 151: yyVal = ((TypeQualifiers)yyVals[-1 + yyTop] | (TypeQualifiers)yyVals[yyTop]); break; case 152: yyVal = TypeQualifiers.Const; break; case 153: yyVal = TypeQualifiers.Restrict; break; case 154: yyVal = TypeQualifiers.Volatile; break; case 155: yyVal = yyVals[yyTop]; break; case 156: case_156(); break; case 157: case_157(); break; case 158: case_158(); break; case 159: case_159(); break; case 160: case_160(); break; case 161: case_161(); break; case 162: case_162(); break; case 163: case_163(); break; case 169: case_169(); break; case 170: yyVal = MakeArrayDeclarator(null, TypeQualifiers.None, null, false); break; case 171: yyVal = MakeArrayDeclarator(null, TypeQualifiers.None, (Expression)yyVals[-1 + yyTop], false); break; case 172: yyVal = MakeArrayDeclarator((Declarator)yyVals[-2 + yyTop], TypeQualifiers.None, null, false); break; case 173: yyVal = MakeArrayDeclarator((Declarator)yyVals[-3 + yyTop], TypeQualifiers.None, (Expression)yyVals[-1 + yyTop], false); break; case 174: yyVal = MakeArrayDeclarator(null, TypeQualifiers.None, null, false); break; case 175: yyVal = MakeArrayDeclarator((Declarator)yyVals[-3 + yyTop], TypeQualifiers.None, null, false); break; case 176: case_176(); break; case 177: case_177(); break; case 178: case_178(); break; case 179: case_179(); break; case 180: yyVal = new ExpressionInitializer((Expression)yyVals[yyTop]); break; case 181: yyVal = yyVals[-1 + yyTop]; break; case 182: yyVal = yyVals[-2 + yyTop]; break; case 183: case_183(); break; case 184: case_184(); break; case 185: case_185(); break; case 186: case_186(); break; case 187: yyVal = new InitializerDesignation((List<InitializerDesignator>)yyVals[-1 + yyTop]); break; case 201: yyVal = new Block(GetLocation(yyVals[-1 + yyTop]), GetLocation(yyVals[yyTop])); break; case 202: yyVal = new Block(GetLocation(yyVals[-2 + yyTop]), (List<Statement>)yyVals[-1 + yyTop], GetLocation(yyVals[yyTop])); break; case 203: yyVal = new List<Statement>(1) { (Statement)yyVals[yyTop] }; break; case 204: ((List<Statement>)yyVals[-1 + yyTop]).Add((Statement)yyVals[yyTop]); yyVal = yyVals[-1 + yyTop]; break; case 207: yyVal = null; break; case 208: yyVal = new ExpressionStatement((Expression)yyVals[-1 + yyTop]); break; case 209: yyVal = new IfStatement((Expression)yyVals[-2 + yyTop], (Statement)yyVals[yyTop], GetLocation(yyVals[-4 + yyTop])); break; case 210: yyVal = new IfStatement((Expression)yyVals[-4 + yyTop], (Statement)yyVals[-2 + yyTop], (Statement)yyVals[yyTop], GetLocation(yyVals[-6 + yyTop])); break; case 212: yyVal = new WhileStatement(false, (Expression)yyVals[-2 + yyTop], (Statement)yyVals[yyTop]); break; case 213: yyVal = new WhileStatement(true, (Expression)yyVals[-2 + yyTop], (Statement)yyVals[-5 + yyTop]); break; case 214: yyVal = new ForStatement((Statement)yyVals[-3 + yyTop], ((ExpressionStatement)yyVals[-2 + yyTop]).Expression, (Statement)yyVals[yyTop], null, GetLocation(yyVals[-5 + yyTop]), GetLocation(yyVals[yyTop])); break; case 215: yyVal = new ForStatement((Statement)yyVals[-4 + yyTop], ((ExpressionStatement)yyVals[-3 + yyTop]).Expression, (Expression)yyVals[-2 + yyTop], (Statement)yyVals[yyTop], null, GetLocation(yyVals[-6 + yyTop]), GetLocation(yyVals[yyTop])); break; case 216: yyVal = new ForStatement((Statement)yyVals[-3 + yyTop], ((ExpressionStatement)yyVals[-2 + yyTop]).Expression, (Statement)yyVals[yyTop]); break; case 217: yyVal = new ForStatement((Statement)yyVals[-4 + yyTop], ((ExpressionStatement)yyVals[-3 + yyTop]).Expression, (Expression)yyVals[-2 + yyTop], (Statement)yyVals[yyTop]); break; case 221: yyVal = new ReturnStatement(); break; case 222: yyVal = new ReturnStatement((Expression)yyVals[-1 + yyTop]); break; case 223: case_223(); break; case 224: case_224(); break; case 227: case_227(); break; case 228: case_228(); break; case 229: case_229(); break; case 230: case_230(); break; } yyTop -= yyLen[num3]; num = array[yyTop]; int num5 = yyLhs[num3]; if (num != 0 || num5 != 0) { num = (((num3 = yyGindex[num5]) == 0 || (num3 += num) < 0 || num3 >= yyTable.Length || yyCheck[num3] != num) ? yyDgoto[num5] : yyTable[num3]); break; } num = 27; if (yyToken < 0) yyToken = (yyLex.advance() ? yyLex.token() : 0); if (yyToken != 0) break; return yyVal; IL_0250: if (yyToken == 0) throw new yyException("irrecoverable syntax error at end-of-file"); yyToken = -1; } yyTop++; } } private void case_15() { List<Expression> list = new List<Expression>(); list.Add((Expression)yyVals[yyTop]); yyVal = list; } private void case_16() { List<Expression> list = (List<Expression>)yyVals[-2 + yyTop]; list.Add((Expression)yyVals[yyTop]); yyVal = list; } private void case_62() { if (yyVals[-1 + yyTop] is RelationalOp && (RelationalOp)yyVals[-1 + yyTop] == RelationalOp.Equals) yyVal = new AssignExpression((Expression)yyVals[-2 + yyTop], (Expression)yyVals[yyTop]); else { Expression left = (Expression)yyVals[-2 + yyTop]; yyVal = new AssignExpression(left, new BinaryExpression(left, (Binop)yyVals[-1 + yyTop], (Expression)yyVals[yyTop])); } } private void case_77() { MultiDeclaratorStatement multiDeclaratorStatement = new MultiDeclaratorStatement(); multiDeclaratorStatement.Specifiers = (DeclarationSpecifiers)yyVals[-1 + yyTop]; yyVal = multiDeclaratorStatement; } private void case_78() { MultiDeclaratorStatement multiDeclaratorStatement = new MultiDeclaratorStatement(); multiDeclaratorStatement.Specifiers = (DeclarationSpecifiers)yyVals[-2 + yyTop]; multiDeclaratorStatement.InitDeclarators = (List<InitDeclarator>)yyVals[-1 + yyTop]; yyVal = multiDeclaratorStatement; } private void case_79() { DeclarationSpecifiers declarationSpecifiers = new DeclarationSpecifiers(); declarationSpecifiers.StorageClassSpecifier = (StorageClassSpecifier)yyVals[yyTop]; yyVal = declarationSpecifiers; } private void case_80() { DeclarationSpecifiers declarationSpecifiers = (DeclarationSpecifiers)yyVals[yyTop]; declarationSpecifiers.StorageClassSpecifier |= (StorageClassSpecifier)yyVals[-1 + yyTop]; yyVal = declarationSpecifiers; } private void case_81() { DeclarationSpecifiers declarationSpecifiers = new DeclarationSpecifiers(); declarationSpecifiers.TypeSpecifiers.Add((TypeSpecifier)yyVals[yyTop]); yyVal = declarationSpecifiers; } private void case_82() { DeclarationSpecifiers declarationSpecifiers = (DeclarationSpecifiers)yyVals[yyTop]; declarationSpecifiers.TypeSpecifiers.Add((TypeSpecifier)yyVals[-1 + yyTop]); yyVal = declarationSpecifiers; } private void case_83() { DeclarationSpecifiers declarationSpecifiers = new DeclarationSpecifiers(); declarationSpecifiers.TypeQualifiers = (TypeQualifiers)yyVals[yyTop]; yyVal = declarationSpecifiers; } private void case_84() { DeclarationSpecifiers declarationSpecifiers = (DeclarationSpecifiers)yyVals[yyTop]; declarationSpecifiers.TypeQualifiers = (TypeQualifiers)yyVals[-1 + yyTop]; yyVal = declarationSpecifiers; } private void case_85() { DeclarationSpecifiers declarationSpecifiers = new DeclarationSpecifiers(); declarationSpecifiers.FunctionSpecifier = (FunctionSpecifier)yyVals[yyTop]; yyVal = declarationSpecifiers; } private void case_86() { DeclarationSpecifiers declarationSpecifiers = (DeclarationSpecifiers)yyVals[yyTop]; declarationSpecifiers.FunctionSpecifier = (FunctionSpecifier)yyVals[-1 + yyTop]; yyVal = declarationSpecifiers; } private void case_87() { List<InitDeclarator> list = new List<InitDeclarator>(); list.Add((InitDeclarator)yyVals[yyTop]); yyVal = list; } private void case_88() { List<InitDeclarator> list = (List<InitDeclarator>)yyVals[-2 + yyTop]; list.Add((InitDeclarator)yyVals[yyTop]); yyVal = list; } private void case_89() { InitDeclarator initDeclarator = new InitDeclarator(); initDeclarator.Declarator = (Declarator)yyVals[yyTop]; yyVal = initDeclarator; } private void case_90() { InitDeclarator initDeclarator = new InitDeclarator(); initDeclarator.Declarator = (Declarator)yyVals[-2 + yyTop]; initDeclarator.Initializer = (Initializer)yyVals[yyTop]; yyVal = initDeclarator; } private void case_134() { Declarator declarator = (Declarator)yyVals[-1 + yyTop]; Declarator declarator2 = FixPointerAndArrayPrecedence(declarator); if (declarator2 != null) yyVal = declarator2; else { declarator.StrongBinding = true; yyVal = declarator; } } private void case_143() { FunctionDeclarator functionDeclarator = new FunctionDeclarator(); functionDeclarator.InnerDeclarator = (Declarator)yyVals[-3 + yyTop]; functionDeclarator.Parameters = (List<ParameterDeclaration>)yyVals[-1 + yyTop]; yyVal = functionDeclarator; } private void case_144() { FunctionDeclarator functionDeclarator = new FunctionDeclarator(); functionDeclarator.InnerDeclarator = (Declarator)yyVals[-3 + yyTop]; functionDeclarator.Parameters = new List<ParameterDeclaration>(); foreach (string item in (List<string>)yyVals[-1 + yyTop]) { functionDeclarator.Parameters.Add(new ParameterDeclaration(item)); } yyVal = functionDeclarator; } private void case_145() { FunctionDeclarator functionDeclarator = new FunctionDeclarator(); functionDeclarator.InnerDeclarator = (Declarator)yyVals[-2 + yyTop]; functionDeclarator.Parameters = new List<ParameterDeclaration>(); yyVal = functionDeclarator; } private void case_156() { List<ParameterDeclaration> list = (List<ParameterDeclaration>)yyVals[-2 + yyTop]; list.Add(new VarParameter()); yyVal = list; } private void case_157() { List<ParameterDeclaration> list = new List<ParameterDeclaration>(); list.Add((ParameterDeclaration)yyVals[yyTop]); yyVal = list; } private void case_158() { List<ParameterDeclaration> list = (List<ParameterDeclaration>)yyVals[-2 + yyTop]; list.Add((ParameterDeclaration)yyVals[yyTop]); yyVal = list; } private void case_159() { ParameterDeclaration parameterDeclaration = (ParameterDeclaration)(yyVal = new ParameterDeclaration((DeclarationSpecifiers)yyVals[-1 + yyTop], (Declarator)yyVals[yyTop])); } private void case_160() { ParameterDeclaration parameterDeclaration = (ParameterDeclaration)(yyVal = new ParameterDeclaration((DeclarationSpecifiers)yyVals[-1 + yyTop], (Declarator)yyVals[yyTop])); } private void case_161() { ParameterDeclaration parameterDeclaration = (ParameterDeclaration)(yyVal = new ParameterDeclaration((DeclarationSpecifiers)yyVals[yyTop])); } private void case_162() { List<string> list = new List<string>(); list.Add(yyVals[yyTop].ToString()); yyVal = list; } private void case_163() { List<string> list = (List<string>)yyVals[-2 + yyTop]; list.Add(yyVals[yyTop].ToString()); yyVal = list; } private void case_169() { Declarator declarator = (Declarator)yyVals[-1 + yyTop]; Declarator declarator2 = FixPointerAndArrayPrecedence(declarator); if (declarator2 != null) yyVal = declarator2; else { declarator.StrongBinding = true; yyVal = declarator; } } private void case_176() { FunctionDeclarator functionDeclarator = new FunctionDeclarator(); functionDeclarator.InnerDeclarator = (Declarator)yyVals[-1 + yyTop]; functionDeclarator.Parameters = new List<ParameterDeclaration>(); yyVal = functionDeclarator; } private void case_177() { FunctionDeclarator functionDeclarator = new FunctionDeclarator(); functionDeclarator.Parameters = (List<ParameterDeclaration>)yyVals[-1 + yyTop]; yyVal = functionDeclarator; } private void case_178() { FunctionDeclarator functionDeclarator = new FunctionDeclarator(); functionDeclarator.InnerDeclarator = (Declarator)yyVals[-2 + yyTop]; functionDeclarator.Parameters = new List<ParameterDeclaration>(); yyVal = functionDeclarator; } private void case_179() { FunctionDeclarator functionDeclarator = new FunctionDeclarator(); functionDeclarator.InnerDeclarator = (Declarator)yyVals[-3 + yyTop]; functionDeclarator.Parameters = (List<ParameterDeclaration>)yyVals[-1 + yyTop]; yyVal = functionDeclarator; } private void case_183() { StructuredInitializer structuredInitializer = new StructuredInitializer(); Initializer init = (Initializer)yyVals[yyTop]; structuredInitializer.Add(init); yyVal = structuredInitializer; } private void case_184() { StructuredInitializer structuredInitializer = new StructuredInitializer(); Initializer initializer = (Initializer)yyVals[yyTop]; initializer.Designation = (InitializerDesignation)yyVals[-1 + yyTop]; structuredInitializer.Add(initializer); yyVal = structuredInitializer; } private void case_185() { StructuredInitializer structuredInitializer = (StructuredInitializer)yyVals[-2 + yyTop]; Initializer init = (Initializer)yyVals[yyTop]; structuredInitializer.Add(init); yyVal = structuredInitializer; } private void case_186() { StructuredInitializer structuredInitializer = (StructuredInitializer)yyVals[-3 + yyTop]; Initializer initializer = (Initializer)yyVals[yyTop]; initializer.Designation = (InitializerDesignation)yyVals[-1 + yyTop]; structuredInitializer.Add(initializer); yyVal = structuredInitializer; } private void case_223() { AddDeclaration(yyVals[yyTop]); yyVal = _tu; } private void case_224() { AddDeclaration(yyVals[yyTop]); yyVal = _tu; } private void case_227() { FunctionDefinition functionDefinition = new FunctionDefinition(); functionDefinition.Specifiers = (DeclarationSpecifiers)yyVals[-3 + yyTop]; functionDefinition.Declarator = (Declarator)yyVals[-2 + yyTop]; functionDefinition.ParameterDeclarations = (List<Declaration>)yyVals[-1 + yyTop]; functionDefinition.Body = (Block)yyVals[yyTop]; yyVal = functionDefinition; } private void case_228() { FunctionDefinition functionDefinition = new FunctionDefinition(); functionDefinition.Specifiers = (DeclarationSpecifiers)yyVals[-2 + yyTop]; functionDefinition.Declarator = (Declarator)yyVals[-1 + yyTop]; functionDefinition.Body = (Block)yyVals[yyTop]; yyVal = functionDefinition; } private void case_229() { List<Declaration> list = new List<Declaration>(); list.Add((Declaration)yyVals[yyTop]); yyVal = list; } private void case_230() { List<Declaration> list = (List<Declaration>)yyVals[-1 + yyTop]; list.Add((Declaration)yyVals[yyTop]); yyVal = list; } public TranslationUnit ParseTranslationUnit(string name, string code, Report report = null) { Lexer lexer = new Lexer(name, code, report); return ParseTranslationUnit(lexer); } public TranslationUnit ParseTranslationUnit(Lexer lexer) { Report report = lexer.Report; _tu = new TranslationUnit(); Dictionary<string, CType> typedefs = _tu.Typedefs; lexer.IsTypedef = typedefs.ContainsKey; try { yyparse(lexer); } catch (NotImplementedException ex) { report.Error(9003, "Feature not implemented: " + ex.Message); } catch (NotSupportedException ex2) { report.Error(9002, "Feature not supported: " + ex2.Message); } catch (Exception ex3) { report.Error(9001, "Internal compiler error: " + ex3.Message); } lexer.IsTypedef = null; return _tu; } private void AddDeclaration(object a) { _tu.AddStatement((Statement)a); } private Declarator FixPointerAndArrayPrecedence(Declarator d) { if (d is PointerDeclarator && d.InnerDeclarator != null && d.InnerDeclarator is ArrayDeclarator) { Declarator innerDeclarator = d.InnerDeclarator; Declarator innerDeclarator2 = innerDeclarator.InnerDeclarator; innerDeclarator.InnerDeclarator = d; d.InnerDeclarator = innerDeclarator2; return innerDeclarator; } return null; } private Declarator MakeArrayDeclarator(Declarator left, TypeQualifiers tq, Expression len, bool isStatic) { ArrayDeclarator arrayDeclarator = new ArrayDeclarator(); arrayDeclarator.LengthExpression = len; if (left.StrongBinding) { Declarator declarator = arrayDeclarator.InnerDeclarator = left.InnerDeclarator; left.InnerDeclarator = arrayDeclarator; return left; } arrayDeclarator.InnerDeclarator = left; return arrayDeclarator; } private Location GetLocation(object obj) { return null; } } }