diff options
author | Chris Lattner <sabre@nondot.org> | 2001-07-15 00:17:01 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2001-07-15 00:17:01 +0000 |
commit | 3d52b2fdcc07ce26c61adf99822adfa8251696cc (patch) | |
tree | 320de2cd2d6927e91cddfc37685bdfc3259f6c8d /lib/AsmParser/llvmAsmParser.cpp | |
parent | 2e35bedc825ab1e125d1173a69faca784e2b5a2f (diff) |
Add support to the parser to recognize floating point constants
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AsmParser/llvmAsmParser.cpp')
-rw-r--r-- | lib/AsmParser/llvmAsmParser.cpp | 1032 |
1 files changed, 535 insertions, 497 deletions
diff --git a/lib/AsmParser/llvmAsmParser.cpp b/lib/AsmParser/llvmAsmParser.cpp index 330e8a58ac..f0a5767774 100644 --- a/lib/AsmParser/llvmAsmParser.cpp +++ b/lib/AsmParser/llvmAsmParser.cpp @@ -15,57 +15,58 @@ #define EUINT64VAL 258 #define SINTVAL 259 #define UINTVAL 260 -#define VOID 261 -#define BOOL 262 -#define SBYTE 263 -#define UBYTE 264 -#define SHORT 265 -#define USHORT 266 -#define INT 267 -#define UINT 268 -#define LONG 269 -#define ULONG 270 -#define FLOAT 271 -#define DOUBLE 272 -#define STRING 273 -#define TYPE 274 -#define LABEL 275 -#define VAR_ID 276 -#define LABELSTR 277 -#define STRINGCONSTANT 278 -#define IMPLEMENTATION 279 -#define TRUE 280 -#define FALSE 281 -#define BEGINTOK 282 -#define END 283 -#define DECLARE 284 -#define TO 285 -#define RET 286 -#define BR 287 -#define SWITCH 288 -#define NOT 289 -#define ADD 290 -#define SUB 291 -#define MUL 292 -#define DIV 293 -#define REM 294 -#define SETLE 295 -#define SETGE 296 -#define SETLT 297 -#define SETGT 298 -#define SETEQ 299 -#define SETNE 300 -#define MALLOC 301 -#define ALLOCA 302 -#define FREE 303 -#define LOAD 304 -#define STORE 305 -#define GETELEMENTPTR 306 -#define PHI 307 -#define CALL 308 -#define CAST 309 -#define SHL 310 -#define SHR 311 +#define FPVAL 261 +#define VOID 262 +#define BOOL 263 +#define SBYTE 264 +#define UBYTE 265 +#define SHORT 266 +#define USHORT 267 +#define INT 268 +#define UINT 269 +#define LONG 270 +#define ULONG 271 +#define FLOAT 272 +#define DOUBLE 273 +#define STRING 274 +#define TYPE 275 +#define LABEL 276 +#define VAR_ID 277 +#define LABELSTR 278 +#define STRINGCONSTANT 279 +#define IMPLEMENTATION 280 +#define TRUE 281 +#define FALSE 282 +#define BEGINTOK 283 +#define END 284 +#define DECLARE 285 +#define TO 286 +#define RET 287 +#define BR 288 +#define SWITCH 289 +#define NOT 290 +#define ADD 291 +#define SUB 292 +#define MUL 293 +#define DIV 294 +#define REM 295 +#define SETLE 296 +#define SETGE 297 +#define SETLT 298 +#define SETGT 299 +#define SETEQ 300 +#define SETNE 301 +#define MALLOC 302 +#define ALLOCA 303 +#define FREE 304 +#define LOAD 305 +#define STORE 306 +#define GETELEMENTPTR 307 +#define PHI 308 +#define CALL 309 +#define CAST 310 +#define SHL 311 +#define SHR 312 #line 13 "llvmAsmParser.y" @@ -199,7 +200,8 @@ static Value *getVal(const Type *Type, ValID &D, case 2: // Is it a constant pool reference?? case 3: // Is it an unsigned const pool reference? - case 4:{ // Is it a string const pool reference? + case 4: // Is it a string const pool reference? + case 5:{ // Is it a floating point const pool reference? ConstPoolVal *CPV = 0; // Check to make sure that "Type" is an integral type, and that our @@ -210,14 +212,16 @@ static Value *getVal(const Type *Type, ValID &D, CPV = new ConstPoolBool(D.ConstPool64 != 0); } else { if (!ConstPoolSInt::isValueValidForType(Type, D.ConstPool64)) - ThrowException("Symbolic constant pool reference is invalid!"); + ThrowException("Symbolic constant pool value '" + + itostr(D.ConstPool64) + "' is invalid for type '" + + Type->getName() + "'!"); CPV = new ConstPoolSInt(Type, D.ConstPool64); } break; case 3: if (!ConstPoolUInt::isValueValidForType(Type, D.UConstPool64)) { if (!ConstPoolSInt::isValueValidForType(Type, D.ConstPool64)) { - ThrowException("Symbolic constant pool reference is invalid!"); + ThrowException("Integral constant pool reference is invalid!"); } else { // This is really a signed reference. Transmogrify. CPV = new ConstPoolSInt(Type, D.ConstPool64); } @@ -231,6 +235,12 @@ static Value *getVal(const Type *Type, ValID &D, //CPV = new ConstPoolString(D.Name); D.destroy(); // Free the string memory break; + case 5: + if (!ConstPoolFP::isValueValidForType(Type, D.ConstPoolFP)) + ThrowException("FP constant invalid for type!!"); + else + CPV = new ConstPoolFP(Type, D.ConstPoolFP); + break; } assert(CPV && "How did we escape creating a constant??"); @@ -427,7 +437,7 @@ Module *RunVMAsmParser(const ToolCommandLine &Opts, FILE *F) { } -#line 373 "llvmAsmParser.y" +#line 382 "llvmAsmParser.y" typedef union { Module *ModuleVal; Method *MethodVal; @@ -449,6 +459,7 @@ typedef union { uint64_t UInt64Val; int SIntVal; unsigned UIntVal; + double FPVal; char *StrVal; // This memory is allocated by strdup! ValID ValIDVal; // May contain memory allocated by strdup @@ -469,26 +480,26 @@ typedef union { -#define YYFINAL 260 +#define YYFINAL 265 #define YYFLAG -32768 -#define YYNTBASE 68 +#define YYNTBASE 69 -#define YYTRANSLATE(x) ((unsigned)(x) <= 311 ? yytranslate[x] : 106) +#define YYTRANSLATE(x) ((unsigned)(x) <= 312 ? yytranslate[x] : 108) 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, 65, - 66, 67, 2, 64, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 66, + 67, 68, 2, 65, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 58, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 59, 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, - 59, 2, 60, 2, 2, 2, 2, 2, 2, 2, + 60, 2, 61, 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, 61, - 2, 2, 62, 2, 63, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 62, + 2, 2, 63, 2, 64, 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, @@ -507,7 +518,7 @@ static const char yytranslate[] = { 0, 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 + 57, 58 }; #if YYDEBUG != 0 @@ -516,79 +527,82 @@ static const short yyprhs[] = { 0, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, - 80, 82, 84, 86, 88, 91, 92, 95, 98, 101, - 104, 107, 110, 117, 123, 132, 140, 147, 152, 156, - 158, 162, 163, 165, 168, 171, 173, 174, 177, 181, - 183, 185, 186, 192, 196, 199, 201, 203, 205, 207, - 209, 211, 213, 215, 217, 222, 226, 230, 236, 240, - 243, 246, 248, 252, 255, 258, 261, 265, 268, 269, - 273, 276, 280, 290, 300, 307, 313, 316, 323, 331, - 334, 339, 341, 342, 348, 352, 359, 365, 368, 375, - 377, 380, 381, 384, 390, 393, 399, 403, 408, 416 + 80, 82, 84, 86, 88, 90, 92, 95, 96, 99, + 102, 105, 108, 111, 114, 117, 124, 130, 139, 147, + 154, 159, 163, 165, 169, 170, 172, 175, 178, 180, + 181, 184, 188, 190, 192, 193, 199, 203, 206, 208, + 210, 212, 214, 216, 218, 220, 222, 224, 226, 231, + 235, 239, 245, 249, 252, 255, 257, 261, 264, 267, + 270, 274, 277, 278, 282, 285, 289, 299, 309, 316, + 322, 325, 332, 340, 343, 348, 350, 351, 357, 361, + 368, 374, 377, 384, 386, 389, 390, 393, 399, 402, + 408, 412, 417, 425 }; static const short yyrhs[] = { 5, - 0, 6, 0, 3, 0, 4, 0, 8, 0, 9, - 0, 10, 0, 11, 0, 12, 0, 13, 0, 14, - 0, 15, 0, 16, 0, 17, 0, 18, 0, 19, - 0, 20, 0, 21, 0, 70, 0, 7, 0, 35, - 0, 36, 0, 37, 0, 38, 0, 39, 0, 40, - 0, 41, 0, 42, 0, 43, 0, 44, 0, 45, - 0, 46, 0, 56, 0, 57, 0, 15, 0, 13, - 0, 11, 0, 9, 0, 16, 0, 14, 0, 12, - 0, 10, 0, 75, 0, 76, 0, 22, 58, 0, - 0, 75, 69, 0, 76, 4, 0, 8, 26, 0, - 8, 27, 0, 19, 24, 0, 20, 70, 0, 59, - 70, 60, 59, 80, 60, 0, 59, 70, 60, 59, - 60, 0, 59, 4, 61, 70, 60, 59, 80, 60, - 0, 59, 4, 61, 70, 60, 59, 60, 0, 62, - 93, 63, 62, 80, 63, 0, 62, 63, 62, 63, - 0, 80, 64, 79, 0, 79, 0, 81, 78, 79, - 0, 0, 83, 0, 83, 90, 0, 81, 25, 0, - 22, 0, 0, 70, 84, 0, 85, 64, 86, 0, - 85, 0, 86, 0, 0, 71, 24, 65, 87, 66, - 0, 88, 81, 28, 0, 94, 29, 0, 3, 0, - 4, 0, 26, 0, 27, 0, 24, 0, 68, 0, - 22, 0, 91, 0, 92, 0, 71, 65, 93, 66, - 0, 71, 65, 66, 0, 59, 70, 60, 0, 59, - 4, 61, 70, 60, 0, 62, 93, 63, 0, 62, - 63, 0, 70, 67, 0, 70, 0, 93, 64, 70, - 0, 94, 95, 0, 89, 95, 0, 96, 97, 0, - 23, 96, 97, 0, 96, 99, 0, 0, 32, 70, - 92, 0, 32, 7, 0, 33, 21, 92, 0, 33, - 8, 92, 64, 21, 92, 64, 21, 92, 0, 34, - 77, 92, 64, 21, 92, 59, 98, 60, 0, 98, - 77, 91, 64, 21, 92, 0, 77, 91, 64, 21, - 92, 0, 78, 103, 0, 70, 59, 92, 64, 92, - 60, 0, 100, 64, 59, 92, 64, 92, 60, 0, - 70, 92, 0, 101, 64, 70, 92, 0, 101, 0, - 0, 73, 70, 92, 64, 92, 0, 72, 70, 92, - 0, 74, 70, 92, 64, 70, 92, 0, 55, 70, - 92, 31, 70, 0, 53, 100, 0, 54, 70, 92, - 65, 102, 66, 0, 105, 0, 64, 80, 0, 0, - 47, 70, 0, 47, 70, 64, 14, 92, 0, 48, - 70, 0, 48, 70, 64, 14, 92, 0, 49, 70, - 92, 0, 50, 70, 92, 104, 0, 51, 70, 92, - 64, 70, 92, 104, 0, 52, 70, 92, 104, 0 + 0, 6, 0, 3, 0, 4, 0, 9, 0, 10, + 0, 11, 0, 12, 0, 13, 0, 14, 0, 15, + 0, 16, 0, 17, 0, 18, 0, 19, 0, 20, + 0, 21, 0, 22, 0, 71, 0, 8, 0, 36, + 0, 37, 0, 38, 0, 39, 0, 40, 0, 41, + 0, 42, 0, 43, 0, 44, 0, 45, 0, 46, + 0, 47, 0, 57, 0, 58, 0, 16, 0, 14, + 0, 12, 0, 10, 0, 17, 0, 15, 0, 13, + 0, 11, 0, 76, 0, 77, 0, 18, 0, 19, + 0, 23, 59, 0, 0, 76, 70, 0, 77, 4, + 0, 9, 27, 0, 9, 28, 0, 79, 7, 0, + 20, 25, 0, 21, 71, 0, 60, 71, 61, 60, + 82, 61, 0, 60, 71, 61, 60, 61, 0, 60, + 4, 62, 71, 61, 60, 82, 61, 0, 60, 4, + 62, 71, 61, 60, 61, 0, 63, 95, 64, 63, + 82, 64, 0, 63, 64, 63, 64, 0, 82, 65, + 81, 0, 81, 0, 83, 80, 81, 0, 0, 85, + 0, 85, 92, 0, 83, 26, 0, 23, 0, 0, + 71, 86, 0, 87, 65, 88, 0, 87, 0, 88, + 0, 0, 72, 25, 66, 89, 67, 0, 90, 83, + 29, 0, 96, 30, 0, 3, 0, 4, 0, 7, + 0, 27, 0, 28, 0, 25, 0, 69, 0, 23, + 0, 93, 0, 94, 0, 72, 66, 95, 67, 0, + 72, 66, 67, 0, 60, 71, 61, 0, 60, 4, + 62, 71, 61, 0, 63, 95, 64, 0, 63, 64, + 0, 71, 68, 0, 71, 0, 95, 65, 71, 0, + 96, 97, 0, 91, 97, 0, 98, 99, 0, 24, + 98, 99, 0, 98, 101, 0, 0, 33, 71, 94, + 0, 33, 8, 0, 34, 22, 94, 0, 34, 9, + 94, 65, 22, 94, 65, 22, 94, 0, 35, 78, + 94, 65, 22, 94, 60, 100, 61, 0, 100, 78, + 93, 65, 22, 94, 0, 78, 93, 65, 22, 94, + 0, 80, 105, 0, 71, 60, 94, 65, 94, 61, + 0, 102, 65, 60, 94, 65, 94, 61, 0, 71, + 94, 0, 103, 65, 71, 94, 0, 103, 0, 0, + 74, 71, 94, 65, 94, 0, 73, 71, 94, 0, + 75, 71, 94, 65, 71, 94, 0, 56, 71, 94, + 32, 71, 0, 54, 102, 0, 55, 71, 94, 66, + 104, 67, 0, 107, 0, 65, 82, 0, 0, 48, + 71, 0, 48, 71, 65, 15, 94, 0, 49, 71, + 0, 49, 71, 65, 15, 94, 0, 50, 71, 94, + 0, 51, 71, 94, 106, 0, 52, 71, 94, 65, + 71, 94, 106, 0, 53, 71, 94, 106, 0 }; #endif #if YYDEBUG != 0 static const short yyrline[] = { 0, - 470, 471, 478, 479, 490, 490, 490, 490, 490, 490, - 490, 491, 491, 491, 491, 491, 491, 491, 494, 494, - 499, 500, 500, 500, 500, 500, 501, 501, 501, 501, - 501, 501, 502, 502, 506, 506, 506, 506, 507, 507, - 507, 507, 508, 508, 511, 514, 521, 526, 531, 534, - 537, 543, 546, 559, 563, 581, 588, 596, 610, 613, - 623, 640, 651, 658, 663, 672, 672, 674, 682, 686, - 691, 694, 698, 725, 729, 738, 741, 744, 747, 750, - 755, 758, 761, 768, 776, 781, 785, 788, 791, 796, - 799, 804, 808, 813, 817, 826, 831, 840, 844, 848, - 851, 854, 857, 862, 873, 881, 891, 899, 904, 911, - 915, 921, 921, 923, 928, 933, 937, 940, 951, 988, - 993, 995, 999, 1002, 1009, 1012, 1020, 1026, 1035, 1047 + 481, 482, 489, 490, 501, 501, 501, 501, 501, 501, + 501, 502, 502, 502, 502, 502, 502, 502, 505, 505, + 510, 511, 511, 511, 511, 511, 512, 512, 512, 512, + 512, 512, 513, 513, 517, 517, 517, 517, 518, 518, + 518, 518, 519, 519, 520, 520, 523, 526, 533, 538, + 543, 546, 549, 552, 558, 561, 574, 578, 596, 603, + 611, 625, 628, 638, 655, 666, 673, 678, 687, 687, + 689, 697, 701, 706, 709, 713, 740, 744, 753, 756, + 759, 762, 765, 768, 773, 776, 779, 786, 794, 799, + 803, 806, 809, 814, 817, 822, 826, 831, 835, 844, + 849, 858, 862, 866, 869, 872, 875, 880, 891, 899, + 909, 917, 922, 929, 933, 939, 939, 941, 946, 951, + 955, 958, 969, 1006, 1011, 1013, 1017, 1020, 1027, 1030, + 1038, 1044, 1053, 1065 }; #endif @@ -596,36 +610,37 @@ static const short yyrline[] = { 0, #if YYDEBUG != 0 || defined (YYERROR_VERBOSE) static const char * const yytname[] = { "$","error","$undefined.","ESINT64VAL", -"EUINT64VAL","SINTVAL","UINTVAL","VOID","BOOL","SBYTE","UBYTE","SHORT","USHORT", -"INT","UINT","LONG","ULONG","FLOAT","DOUBLE","STRING","TYPE","LABEL","VAR_ID", -"LABELSTR","STRINGCONSTANT","IMPLEMENTATION","TRUE","FALSE","BEGINTOK","END", -"DECLARE","TO","RET","BR","SWITCH","NOT","ADD","SUB","MUL","DIV","REM","SETLE", -"SETGE","SETLT","SETGT","SETEQ","SETNE","MALLOC","ALLOCA","FREE","LOAD","STORE", -"GETELEMENTPTR","PHI","CALL","CAST","SHL","SHR","'='","'['","']'","'x'","'{'", -"'}'","','","'('","')'","'*'","INTVAL","EINT64VAL","Types","TypesV","UnaryOps", -"BinaryOps","ShiftOps","SIntType","UIntType","IntType","OptAssign","ConstVal", -"ConstVector","ConstPool","Module","MethodList","OptVAR_ID","ArgVal","ArgListH", -"ArgList","MethodHeaderH","MethodHeader","Method","ConstValueRef","ValueRef", -"TypeList","BasicBlockList","BasicBlock","InstructionList","BBTerminatorInst", +"EUINT64VAL","SINTVAL","UINTVAL","FPVAL","VOID","BOOL","SBYTE","UBYTE","SHORT", +"USHORT","INT","UINT","LONG","ULONG","FLOAT","DOUBLE","STRING","TYPE","LABEL", +"VAR_ID","LABELSTR","STRINGCONSTANT","IMPLEMENTATION","TRUE","FALSE","BEGINTOK", +"END","DECLARE","TO","RET","BR","SWITCH","NOT","ADD","SUB","MUL","DIV","REM", +"SETLE","SETGE","SETLT","SETGT","SETEQ","SETNE","MALLOC","ALLOCA","FREE","LOAD", +"STORE","GETELEMENTPTR","PHI","CALL","CAST","SHL","SHR","'='","'['","']'","'x'", +"'{'","'}'","','","'('","')'","'*'","INTVAL","EINT64VAL","Types","TypesV","UnaryOps", +"BinaryOps","ShiftOps","SIntType","UIntType","IntType","FPType","OptAssign", +"ConstVal","ConstVector","ConstPool","Module","MethodList","OptVAR_ID","ArgVal", +"ArgListH","ArgList","MethodHeaderH","MethodHeader","Method","ConstValueRef", +"ValueRef","TypeList","BasicBlockList","BasicBlock","InstructionList","BBTerminatorInst", "JumpTable","Inst","PHIList","ValueRefList","ValueRefListE","InstVal","UByteList", "MemoryInst", NULL }; #endif static const short yyr1[] = { 0, - 68, 68, 69, 69, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 71, 71, - 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 74, 74, 75, 75, 75, 75, 76, 76, - 76, 76, 77, 77, 78, 78, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 80, 80, - 81, 81, 82, 83, 83, 84, 84, 85, 86, 86, - 87, 87, 88, 89, 90, 91, 91, 91, 91, 91, - 92, 92, 92, 70, 70, 70, 70, 70, 70, 70, - 70, 93, 93, 94, 94, 95, 95, 96, 96, 97, - 97, 97, 97, 97, 98, 98, 99, 100, 100, 101, - 101, 102, 102, 103, 103, 103, 103, 103, 103, 103, - 104, 104, 105, 105, 105, 105, 105, 105, 105, 105 + 69, 69, 70, 70, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 72, 72, + 73, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 75, 75, 76, 76, 76, 76, 77, 77, + 77, 77, 78, 78, 79, 79, 80, 80, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, + 81, 82, 82, 83, 83, 84, 85, 85, 86, 86, + 87, 88, 88, 89, 89, 90, 91, 92, 93, 93, + 93, 93, 93, 93, 94, 94, 94, 71, 71, 71, + 71, 71, 71, 71, 71, 95, 95, 96, 96, 97, + 97, 98, 98, 99, 99, 99, 99, 99, 100, 100, + 101, 102, 102, 103, 103, 104, 104, 105, 105, 105, + 105, 105, 105, 105, 106, 106, 107, 107, 107, 107, + 107, 107, 107, 107 }; static const short yyr2[] = { 0, @@ -633,203 +648,214 @@ static const short yyr2[] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 0, 2, 2, 2, 2, - 2, 2, 6, 5, 8, 7, 6, 4, 3, 1, - 3, 0, 1, 2, 2, 1, 0, 2, 3, 1, - 1, 0, 5, 3, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 4, 3, 3, 5, 3, 2, - 2, 1, 3, 2, 2, 2, 3, 2, 0, 3, - 2, 3, 9, 9, 6, 5, 2, 6, 7, 2, - 4, 1, 0, 5, 3, 6, 5, 2, 6, 1, - 2, 0, 2, 5, 2, 5, 3, 4, 7, 4 + 1, 1, 1, 1, 1, 1, 2, 0, 2, 2, + 2, 2, 2, 2, 2, 6, 5, 8, 7, 6, + 4, 3, 1, 3, 0, 1, 2, 2, 1, 0, + 2, 3, 1, 1, 0, 5, 3, 2, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 4, 3, + 3, 5, 3, 2, 2, 1, 3, 2, 2, 2, + 3, 2, 0, 3, 2, 3, 9, 9, 6, 5, + 2, 6, 7, 2, 4, 1, 0, 5, 3, 6, + 5, 2, 6, 1, 2, 0, 2, 5, 2, 5, + 3, 4, 7, 4 }; -static const short yydefact[] = { 62, - 46, 63, 0, 65, 0, 76, 77, 1, 2, 20, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 82, 80, 78, 79, 0, 0, - 81, 19, 0, 62, 99, 64, 83, 84, 99, 45, - 0, 38, 42, 37, 41, 36, 40, 35, 39, 0, - 0, 0, 0, 0, 0, 61, 77, 19, 0, 90, - 92, 0, 91, 0, 0, 46, 99, 95, 46, 75, - 94, 49, 50, 51, 52, 77, 19, 0, 0, 3, - 4, 47, 48, 0, 87, 89, 0, 72, 86, 0, - 74, 46, 0, 0, 0, 0, 96, 98, 0, 0, - 0, 0, 19, 93, 67, 70, 71, 0, 85, 97, - 101, 19, 0, 0, 43, 44, 0, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, - 0, 0, 0, 107, 120, 19, 0, 58, 0, 88, - 66, 68, 0, 73, 100, 0, 102, 0, 123, 125, - 19, 19, 19, 19, 19, 118, 19, 19, 19, 19, - 19, 0, 54, 60, 0, 0, 69, 0, 0, 0, - 0, 127, 122, 0, 122, 0, 0, 0, 0, 115, - 0, 0, 0, 53, 0, 57, 0, 0, 0, 0, - 0, 128, 0, 130, 0, 0, 113, 0, 0, 0, - 56, 0, 59, 0, 0, 124, 126, 121, 19, 0, - 0, 19, 112, 0, 117, 114, 19, 55, 0, 0, - 122, 0, 0, 110, 0, 119, 116, 0, 0, 0, - 129, 108, 0, 19, 103, 0, 104, 0, 109, 111, - 0, 0, 0, 0, 106, 0, 105, 0, 0, 0 +static const short yydefact[] = { 65, + 48, 66, 0, 68, 0, 79, 80, 1, 2, 81, + 20, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 86, 84, 82, 83, 0, + 0, 85, 19, 0, 65, 103, 67, 87, 88, 103, + 47, 0, 38, 42, 37, 41, 36, 40, 35, 39, + 45, 46, 0, 0, 0, 0, 0, 0, 0, 64, + 80, 19, 0, 94, 96, 0, 95, 0, 0, 48, + 103, 99, 48, 78, 98, 51, 52, 54, 55, 80, + 19, 0, 0, 3, 4, 49, 50, 53, 0, 91, + 93, 0, 75, 90, 0, 77, 48, 0, 0, 0, + 0, 100, 102, 0, 0, 0, 0, 19, 97, 70, + 73, 74, 0, 89, 101, 105, 19, 0, 0, 43, + 44, 0, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 33, 34, 0, 0, 0, 111, 124, + 19, 0, 61, 0, 92, 69, 71, 0, 76, 104, + 0, 106, 0, 127, 129, 19, 19, 19, 19, 19, + 122, 19, 19, 19, 19, 19, 0, 57, 63, 0, + 0, 72, 0, 0, 0, 0, 131, 126, 0, 126, + 0, 0, 0, 0, 119, 0, 0, 0, 56, 0, + 60, 0, 0, 0, 0, 0, 132, 0, 134, 0, + 0, 117, 0, 0, 0, 59, 0, 62, 0, 0, + 128, 130, 125, 19, 0, 0, 19, 116, 0, 121, + 118, 19, 58, 0, 0, 126, 0, 0, 114, 0, + 123, 120, 0, 0, 0, 133, 112, 0, 19, 107, + 0, 108, 0, 113, 115, 0, 0, 0, 0, 110, + 0, 109, 0, 0, 0 }; -static const short yydefgoto[] = { 31, - 82, 61, 59, 141, 142, 143, 54, 55, 117, 5, - 174, 175, 1, 258, 2, 152, 106, 107, 108, 34, - 35, 36, 37, 38, 62, 39, 68, 69, 97, 240, - 98, 166, 223, 224, 144, 202, 145 +static const short yydefgoto[] = { 32, + 86, 65, 63, 146, 147, 148, 57, 58, 122, 59, + 5, 179, 180, 1, 263, 2, 157, 111, 112, 113, + 35, 36, 37, 38, 39, 66, 40, 72, 73, 102, + 245, 103, 171, 228, 229, 149, 207, 150 }; static const short yypact[] = {-32768, - 70, 321, -6,-32768, 90,-32768,-32768,-32768,-32768,-32768, + 181, 350, -36,-32768, 94,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 381, 235, --32768, 45, -20,-32768, 98,-32768,-32768,-32768, 93,-32768, - 67,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 56, - 321, 406, 296, 181, 142,-32768, 97, -14, 96,-32768, - 46, 123,-32768, 101, 210, 122,-32768,-32768, 135,-32768, --32768,-32768,-32768,-32768, 46, 111, 29, 112, 129,-32768, --32768,-32768,-32768, 321,-32768,-32768, 321, 321,-32768, 79, --32768, 135, 466, 13, 268, 461,-32768,-32768, 321, 118, - 125, 119, 47, 46, 10, 126,-32768, 131,-32768,-32768, - 133, 4, 52, 52,-32768,-32768, 52,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 321, - 321, 321, 321, 321, 321, 321, 321, 321,-32768,-32768, - 321, 321, 321,-32768,-32768, 48, 3,-32768, 90,-32768, --32768,-32768, 321,-32768,-32768, 138,-32768, 139, 106, 115, - 4, 4, 4, 4, 0, 140, 4, 4, 4, 4, - 4, 148,-32768,-32768, 99, 132,-32768, 178, 189, 197, - 221,-32768, 194, 196, 194, 52, 204, 199, 234,-32768, - 202, 203, 28,-32768, 90,-32768, 52, 52, 52, 52, - 90,-32768, 321,-32768, 206, 52, 321, 321, 52, 321, --32768, 100,-32768, 207, 209,-32768,-32768, 211, 4, 52, - 222, 4, 223, 208, 46,-32768, 4,-32768, 252, 268, - 194, 225, 52,-32768, 321,-32768,-32768, 52, 57, 435, --32768,-32768, 228, 4,-32768, 226,-32768, 57,-32768,-32768, - 270, 229, 52, 271,-32768, 52,-32768, 289, 295,-32768 +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 411, + 262,-32768, 14, 29,-32768, 42,-32768,-32768,-32768, 70, +-32768, 141,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768, 73, 350, 437, 324, 205, 146, 178,-32768, + 133, 24, 136,-32768, 50, 155,-32768, 162, 236, 169, +-32768,-32768, 156,-32768,-32768,-32768,-32768,-32768, 50, 164, + 58, 149, 157,-32768,-32768,-32768,-32768,-32768, 350,-32768, +-32768, 350, 350,-32768, 84,-32768, 156, 498, 48, 161, + 491,-32768,-32768, 350, 163, 165, 167, 59, 50, 33, + 166,-32768, 168,-32768,-32768, 170, -1, 159, 159,-32768, +-32768, 159,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768, 350, 350, 350, 350, 350, 350, + 350, 350, 350,-32768,-32768, 350, 350, 350,-32768,-32768, + 87, 0,-32768, 94,-32768,-32768,-32768, 350,-32768,-32768, + 172,-32768, 195, 135, 150, -1, -1, -1, -1, 16, + 197, -1, -1, -1, -1, -1, 173,-32768,-32768, 56, + 160,-32768, 210, 212, 271, 273,-32768, 226, 227, 226, + 159, 233, 228, 263,-32768, 232, 235, 20,-32768, 94, +-32768, 159, 159, 159, 159, 94,-32768, 350,-32768, 237, + 159, 350, 350, 159, 350,-32768, 132,-32768, 239, 238, +-32768,-32768, 240, -1, 159, 241, -1, 242, 234, 50, +-32768, -1,-32768, 286, 161, 226, 248, 159,-32768, 350, +-32768,-32768, 159, 61, 32,-32768,-32768, 249, -1,-32768, + 246,-32768, 61,-32768,-32768, 290, 250, 159, 291,-32768, + 159,-32768, 314, 316,-32768 }; static const short yypgoto[] = {-32768, --32768, -2, 294,-32768,-32768,-32768, -93, -92, -205, -63, - -4, -129, 285,-32768,-32768,-32768,-32768, 168,-32768,-32768, --32768,-32768, -215, -44, 1,-32768, 305, 279, 257,-32768, --32768,-32768,-32768,-32768,-32768, -180,-32768 +-32768, -2, 225,-32768,-32768,-32768, -93, -92, -173,-32768, + -18, -4, -129, 282,-32768,-32768,-32768,-32768, 190,-32768, +-32768,-32768,-32768, -194, -44, 2,-32768, 278, 252, 222, +-32768,-32768,-32768,-32768,-32768,-32768, -139,-32768 }; -#define YYLAST 528 - - -static const short yytable[] = { 32, - 56, 115, 116, 64, 204, 96, 6, 7, 8, 9, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 176, - 113, 50, 51, 246, 239, 25, 58, 26, 96, 27, - 28, 151, 252, 114, 248, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 65, 85, 50, 51, 75, 77, - 241, 40, 63, 79, 6, 7, 8, 9, 186, 6, - 7, 52, 173, 212, 53, 90, 63, 155, 156, 157, - 63, 218, 158, 25, -19, 26, 63, 27, 28, 74, - 26, 103, 27, 28, 104, 105, 52, 211, 100, 53, - 112, 3, 72, 73, 4, 63, 146, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 150, 172, 50, 51, - -19, 63, 63, 63, 63, 67, 182, 183, 184, 185, - 67, 70, 188, 189, 190, 191, 192, 159, 160, 161, - 162, 163, 164, 165, 167, 168, 115, 116, 169, 170, - 171, 205, 87, 3, 109, 83, 115, 116, 52, 91, - 105, 53, 214, 215, 216, 217, 3, 84, 194, 228, - 65, 221, 195, 195, 226, 88, 93, 94, 95, 180, - -19, 99, 63, 101, 231, 232, 147, 234, 181, -19, - 149, 63, 237, 80, 81, 86, 87, 148, 243, 153, - 213, 102, 87, 245, 196, 195, 154, -20, 197, 250, - 219, 178, 179, 187, 222, 225, 193, 227, 255, 198, - 199, 257, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 244, 26, 200, 27, 28, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 201, 26, 203, - 27, 28, 206, 207, 208, 209, 210, 230, 29, 220, - 229, 30, 238, 236, 195, 89, 42, 43, 44, 45, - 46, 47, 48, 49, 242, 233, 235, 249, 259, 251, - 253, 256, 254, 29, 260, 33, 30, 60, 6, 7, +#define YYLAST 561 + + +static const short yytable[] = { 33, + 60, 6, 7, 8, 9, 10, 120, 121, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 26, 41, 27, 181, 28, 29, 62, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 43, 44, 45, 46, 47, 48, 49, 50, 251, + 209, 79, 81, 68, 101, 156, 118, 83, 257, 55, + 178, 244, 56, 6, 7, 71, 67, 10, 217, 119, + 95, 253, 160, 161, 162, 191, 223, 163, 101, 55, + 216, 67, 56, 67, 90, 27, 108, 28, 29, 109, + 110, 67, 252, 71, 69, 117, 246, 78, -19, 74, + 67, 151, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, -19, 199, 67, 105, 155, + 200, 187, 188, 189, 190, 67, 67, 193, 194, 195, + 196, 197, 164, 165, 166, 167, 168, 169, 170, 172, + 173, 120, 121, 174, 175, 176, 210, 177, 92, 87, + 114, 120, 121, 55, 67, 110, 56, 219, 220, 221, + 222, 6, 7, 8, 9, 10, 226, 76, 77, 231, + 43, 44, 45, 46, 47, 48, 49, 50, 3, 236, + 237, 26, 239, 27, 88, 28, 29, 242, 98, 99, + 100, 3, 233, 248, 89, 218, 200, 96, 250, 185, + -19, 69, 67, 3, 255, 224, 4, 84, 85, 227, + 230, 106, 232, 260, 186, -19, 262, 67, 91, 92, + 107, 92, 152, 201, 200, 104, 34, 93, 153, 154, + 158, 202, 198, 203, 159, -20, 183, 249, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 66, 26, - 177, 27, 28, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 71, 26, 92, 27, 28, 110, 0, - 0, 0, 0, 0, 29, 0, 0, 30, 78, 0, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 184, + 27, 192, 28, 29, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 204, 27, 205, 28, 29, + 206, 208, 211, 212, 213, 30, 214, 235, 31, 215, + 241, 225, 94, 234, 200, 238, 240, 243, 247, 254, + 256, 258, 261, 264, 259, 265, 70, 75, 115, 0, + 0, 30, 97, 0, 31, 64, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 182, 27, 0, + 28, 29, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 0, 27, 0, 28, 29, 0, 0, + 0, 0, 0, 30, 0, 0, 31, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, - 0, 0, 30, 6, 57, 8, 9, 10, 11, 12, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, + 0, 0, 31, 6, 61, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 0, 26, 0, 27, 28, 6, 76, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 0, 26, - 0, 27, 28, 0, 0, 0, 0, 0, 0, 29, - 0, 0, 30, 42, 43, 44, 45, 46, 47, 48, - 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 29, 0, 0, 30, 6, 7, - 8, 9, 111, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 0, 26, - 0, 27, 28, 0, 247, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 0, 0, - 0, 0, 0, 0, 29, 0, 0, 30 + 23, 24, 25, 26, 0, 27, 0, 28, 29, 6, + 80, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 0, 27, 0, 28, 29, 0, 0, 0, 0, 0, + 30, 0, 0, 31, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 30, 0, 0, 31, + 6, 7, 8, 9, 10, 116, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 0, 27, 0, 28, 29, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, + 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, + 31 }; static const short yycheck[] = { 2, - 5, 95, 95, 24, 185, 69, 3, 4, 5, 6, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 149, - 8, 19, 20, 239, 230, 22, 29, 24, 92, 26, - 27, 22, 248, 21, 240, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 65, 60, 19, 20, 51, 52, - 231, 58, 67, 53, 3, 4, 5, 6, 59, 3, - 4, 59, 60, 193, 62, 65, 67, 112, 113, 114, - 67, 201, 117, 22, 65, 24, 67, 26, 27, 24, - 24, 84, 26, 27, 87, 88, 59, 60, 60, 62, - 93, 22, 26, 27, 25, 67, 99, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 60, 60, 19, 20, - 65, 67, 67, 67, 67, 23, 161, 162, 163, 164, - 23, 29, 167, 168, 169, 170, 171, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 230, 230, 141, 142, - 143, 186, 64, 22, 66, 4, 240, 240, 59, 28, - 153, 62, 197, 198, 199, 200, 22, 61, 60, 60, - 65, 206, 64, 64, 209, 65, 32, 33, 34, 64, - 65, 61, 67, 62, 219, 220, 59, 222, 64, 65, - 62, 67, 227, 3, 4, 63, 64, 63, 233, 64, - 195, 63, 64, 238, 63, 64, 66, 65, 21, 244, - 203, 64, 64, 64, 207, 208, 59, 210, 253, 21, - 14, 256, 3, 4, 5, 6, 7, 8, 9, 10, + 5, 3, 4, 5, 6, 7, 100, 100, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 235, 24, 14, 26, 27, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 64, 24, 64, - 26, 27, 59, 65, 31, 64, |