From 6dd3e0f2449b60948d1ae2a8377afcea1fb88000 Mon Sep 17 00:00:00 2001 From: Ruslan Zakirov Date: Sat, 2 Mar 2013 16:57:41 +0400 Subject: [PATCH] index/value array slice operation kvaslice operator that imlements %a[0,2,4] syntax which result in list of index/value pairs. Implemented in consistency with "key/value hash slice" operator. --- dist/B-Deparse/Deparse.pm | 1 + op.c | 11 +- opcode.h | 5 + opnames.h | 495 ++++++++-------- perly.act | 206 ++++--- perly.h | 2 +- perly.tab | 1427 +++++++++++++++++++++++---------------------- perly.y | 9 + pp.c | 44 ++ pp_proto.h | 1 + regen/opcodes | 1 + toke.c | 3 + 12 files changed, 1151 insertions(+), 1054 deletions(-) diff --git a/dist/B-Deparse/Deparse.pm b/dist/B-Deparse/Deparse.pm index 6aa8847..7816b9d 100644 --- a/dist/B-Deparse/Deparse.pm +++ b/dist/B-Deparse/Deparse.pm @@ -3573,6 +3573,7 @@ sub slice { } sub pp_aslice { maybe_local(@_, slice(@_, "[", "]", "rv2av", "padav")) } +sub pp_kvaslice { slice(@_, "[", "]", "rv2av", "padav") } sub pp_hslice { maybe_local(@_, slice(@_, "{", "}", "rv2hv", "padhv")) } sub pp_kvhslice { slice(@_, "{", "}", "rv2hv", "padhv") } diff --git a/op.c b/op.c index d457d43..aa6c50d 100644 --- a/op.c +++ b/op.c @@ -1276,6 +1276,7 @@ Perl_scalarvoid(pTHX_ OP *o) case OP_AELEMFAST: case OP_AELEMFAST_LEX: case OP_ASLICE: + case OP_KVASLICE: case OP_HELEM: case OP_HSLICE: case OP_KVHSLICE: @@ -2063,6 +2064,7 @@ Perl_op_lvalue_flags(pTHX_ OP *o, I32 type, U32 flags) PL_modcount = RETURN_UNLIMITED_NUMBER; break; case OP_KVHSLICE: + case OP_KVASLICE: if (type == OP_LEAVESUBLV) o->op_private |= OPpMAYBE_LVSUB; goto nomod; @@ -5354,7 +5356,8 @@ S_is_list_assignment(pTHX_ const OP *o) if (type == OP_LIST || flags & OPf_PARENS || type == OP_RV2AV || type == OP_RV2HV || - type == OP_ASLICE || type == OP_HSLICE || type == OP_KVHSLICE) + type == OP_ASLICE || type == OP_HSLICE || + type == OP_KVASLICE || type == OP_KVHSLICE) return TRUE; if (type == OP_PADAV || type == OP_PADHV) @@ -6562,6 +6565,7 @@ S_ref_array_or_hash(pTHX_ OP *cond) else if(cond && (cond->op_type == OP_ASLICE + || cond->op_type == OP_KVASLICE || cond->op_type == OP_HSLICE || cond->op_type == OP_KVHSLICE)) { @@ -8044,11 +8048,13 @@ Perl_oopsAV(pTHX_ OP *o) switch (o->op_type) { case OP_PADSV: + case OP_PADHV: o->op_type = OP_PADAV; o->op_ppaddr = PL_ppaddr[OP_PADAV]; return ref(o, OP_RV2AV); case OP_RV2SV: + case OP_RV2HV: o->op_type = OP_RV2AV; o->op_ppaddr = PL_ppaddr[OP_RV2AV]; ref(o, OP_RV2AV); @@ -8302,6 +8308,9 @@ Perl_ck_delete(pTHX_ OP *o) /* FALL THROUGH */ case OP_HELEM: break; + case OP_KVASLICE: + Perl_croak(aTHX_ "%s argument is index/value array slice, use array slice", + OP_DESC(o)); case OP_KVHSLICE: Perl_croak(aTHX_ "%s argument is key/value hash slice, use hash slice", OP_DESC(o)); diff --git a/opcode.h b/opcode.h index b91e7ad..0770646 100644 --- a/opcode.h +++ b/opcode.h @@ -280,6 +280,7 @@ EXTCONST char* const PL_op_name[] = { "aelemfast_lex", "aelem", "aslice", + "kvaslice", "aeach", "akeys", "avalues", @@ -666,6 +667,7 @@ EXTCONST char* const PL_op_desc[] = { "constant lexical array element", "array element", "array slice", + "index/value array slice", "each on array", "keys on array", "values on array", @@ -1066,6 +1068,7 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */ Perl_pp_aelemfast_lex, /* implemented by Perl_pp_aelemfast */ Perl_pp_aelem, Perl_pp_aslice, + Perl_pp_kvaslice, Perl_pp_aeach, Perl_pp_akeys, Perl_pp_avalues, /* implemented by Perl_pp_akeys */ @@ -1462,6 +1465,7 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */ Perl_ck_null, /* aelemfast_lex */ Perl_ck_null, /* aelem */ Perl_ck_null, /* aslice */ + Perl_ck_null, /* kvaslice */ Perl_ck_each, /* aeach */ Perl_ck_each, /* akeys */ Perl_ck_each, /* avalues */ @@ -1852,6 +1856,7 @@ EXTCONST U32 PL_opargs[] = { 0x00013040, /* aelemfast_lex */ 0x00013204, /* aelem */ 0x00023401, /* aslice */ + 0x00023401, /* kvaslice */ 0x00003b00, /* aeach */ 0x00003b08, /* akeys */ 0x00003b08, /* avalues */ diff --git a/opnames.h b/opnames.h index d64a333..68ce927 100644 --- a/opnames.h +++ b/opnames.h @@ -146,256 +146,257 @@ typedef enum opcode { OP_AELEMFAST_LEX = 129, OP_AELEM = 130, OP_ASLICE = 131, - OP_AEACH = 132, - OP_AKEYS = 133, - OP_AVALUES = 134, - OP_EACH = 135, - OP_VALUES = 136, - OP_KEYS = 137, - OP_DELETE = 138, - OP_EXISTS = 139, - OP_RV2HV = 140, - OP_HELEM = 141, - OP_HSLICE = 142, - OP_KVHSLICE = 143, - OP_UNPACK = 144, - OP_PACK = 145, - OP_SPLIT = 146, - OP_JOIN = 147, - OP_LIST = 148, - OP_LSLICE = 149, - OP_ANONLIST = 150, - OP_ANONHASH = 151, - OP_SPLICE = 152, - OP_PUSH = 153, - OP_POP = 154, - OP_SHIFT = 155, - OP_UNSHIFT = 156, - OP_SORT = 157, - OP_REVERSE = 158, - OP_GREPSTART = 159, - OP_GREPWHILE = 160, - OP_MAPSTART = 161, - OP_MAPWHILE = 162, - OP_RANGE = 163, - OP_FLIP = 164, - OP_FLOP = 165, - OP_AND = 166, - OP_OR = 167, - OP_XOR = 168, - OP_DOR = 169, - OP_COND_EXPR = 170, - OP_ANDASSIGN = 171, - OP_ORASSIGN = 172, - OP_DORASSIGN = 173, - OP_METHOD = 174, - OP_ENTERSUB = 175, - OP_LEAVESUB = 176, - OP_LEAVESUBLV = 177, - OP_CALLER = 178, - OP_WARN = 179, - OP_DIE = 180, - OP_RESET = 181, - OP_LINESEQ = 182, - OP_NEXTSTATE = 183, - OP_DBSTATE = 184, - OP_UNSTACK = 185, - OP_ENTER = 186, - OP_LEAVE = 187, - OP_SCOPE = 188, - OP_ENTERITER = 189, - OP_ITER = 190, - OP_ENTERLOOP = 191, - OP_LEAVELOOP = 192, - OP_RETURN = 193, - OP_LAST = 194, - OP_NEXT = 195, - OP_REDO = 196, - OP_DUMP = 197, - OP_GOTO = 198, - OP_EXIT = 199, - OP_METHOD_NAMED = 200, - OP_ENTERGIVEN = 201, - OP_LEAVEGIVEN = 202, - OP_ENTERWHEN = 203, - OP_LEAVEWHEN = 204, - OP_BREAK = 205, - OP_CONTINUE = 206, - OP_OPEN = 207, - OP_CLOSE = 208, - OP_PIPE_OP = 209, - OP_FILENO = 210, - OP_UMASK = 211, - OP_BINMODE = 212, - OP_TIE = 213, - OP_UNTIE = 214, - OP_TIED = 215, - OP_DBMOPEN = 216, - OP_DBMCLOSE = 217, - OP_SSELECT = 218, - OP_SELECT = 219, - OP_GETC = 220, - OP_READ = 221, - OP_ENTERWRITE = 222, - OP_LEAVEWRITE = 223, - OP_PRTF = 224, - OP_PRINT = 225, - OP_SAY = 226, - OP_SYSOPEN = 227, - OP_SYSSEEK = 228, - OP_SYSREAD = 229, - OP_SYSWRITE = 230, - OP_EOF = 231, - OP_TELL = 232, - OP_SEEK = 233, - OP_TRUNCATE = 234, - OP_FCNTL = 235, - OP_IOCTL = 236, - OP_FLOCK = 237, - OP_SEND = 238, - OP_RECV = 239, - OP_SOCKET = 240, - OP_SOCKPAIR = 241, - OP_BIND = 242, - OP_CONNECT = 243, - OP_LISTEN = 244, - OP_ACCEPT = 245, - OP_SHUTDOWN = 246, - OP_GSOCKOPT = 247, - OP_SSOCKOPT = 248, - OP_GETSOCKNAME = 249, - OP_GETPEERNAME = 250, - OP_LSTAT = 251, - OP_STAT = 252, - OP_FTRREAD = 253, - OP_FTRWRITE = 254, - OP_FTREXEC = 255, - OP_FTEREAD = 256, - OP_FTEWRITE = 257, - OP_FTEEXEC = 258, - OP_FTIS = 259, - OP_FTSIZE = 260, - OP_FTMTIME = 261, - OP_FTATIME = 262, - OP_FTCTIME = 263, - OP_FTROWNED = 264, - OP_FTEOWNED = 265, - OP_FTZERO = 266, - OP_FTSOCK = 267, - OP_FTCHR = 268, - OP_FTBLK = 269, - OP_FTFILE = 270, - OP_FTDIR = 271, - OP_FTPIPE = 272, - OP_FTSUID = 273, - OP_FTSGID = 274, - OP_FTSVTX = 275, - OP_FTLINK = 276, - OP_FTTTY = 277, - OP_FTTEXT = 278, - OP_FTBINARY = 279, - OP_CHDIR = 280, - OP_CHOWN = 281, - OP_CHROOT = 282, - OP_UNLINK = 283, - OP_CHMOD = 284, - OP_UTIME = 285, - OP_RENAME = 286, - OP_LINK = 287, - OP_SYMLINK = 288, - OP_READLINK = 289, - OP_MKDIR = 290, - OP_RMDIR = 291, - OP_OPEN_DIR = 292, - OP_READDIR = 293, - OP_TELLDIR = 294, - OP_SEEKDIR = 295, - OP_REWINDDIR = 296, - OP_CLOSEDIR = 297, - OP_FORK = 298, - OP_WAIT = 299, - OP_WAITPID = 300, - OP_SYSTEM = 301, - OP_EXEC = 302, - OP_KILL = 303, - OP_GETPPID = 304, - OP_GETPGRP = 305, - OP_SETPGRP = 306, - OP_GETPRIORITY = 307, - OP_SETPRIORITY = 308, - OP_TIME = 309, - OP_TMS = 310, - OP_LOCALTIME = 311, - OP_GMTIME = 312, - OP_ALARM = 313, - OP_SLEEP = 314, - OP_SHMGET = 315, - OP_SHMCTL = 316, - OP_SHMREAD = 317, - OP_SHMWRITE = 318, - OP_MSGGET = 319, - OP_MSGCTL = 320, - OP_MSGSND = 321, - OP_MSGRCV = 322, - OP_SEMOP = 323, - OP_SEMGET = 324, - OP_SEMCTL = 325, - OP_REQUIRE = 326, - OP_DOFILE = 327, - OP_HINTSEVAL = 328, - OP_ENTEREVAL = 329, - OP_LEAVEEVAL = 330, - OP_ENTERTRY = 331, - OP_LEAVETRY = 332, - OP_GHBYNAME = 333, - OP_GHBYADDR = 334, - OP_GHOSTENT = 335, - OP_GNBYNAME = 336, - OP_GNBYADDR = 337, - OP_GNETENT = 338, - OP_GPBYNAME = 339, - OP_GPBYNUMBER = 340, - OP_GPROTOENT = 341, - OP_GSBYNAME = 342, - OP_GSBYPORT = 343, - OP_GSERVENT = 344, - OP_SHOSTENT = 345, - OP_SNETENT = 346, - OP_SPROTOENT = 347, - OP_SSERVENT = 348, - OP_EHOSTENT = 349, - OP_ENETENT = 350, - OP_EPROTOENT = 351, - OP_ESERVENT = 352, - OP_GPWNAM = 353, - OP_GPWUID = 354, - OP_GPWENT = 355, - OP_SPWENT = 356, - OP_EPWENT = 357, - OP_GGRNAM = 358, - OP_GGRGID = 359, - OP_GGRENT = 360, - OP_SGRENT = 361, - OP_EGRENT = 362, - OP_GETLOGIN = 363, - OP_SYSCALL = 364, - OP_LOCK = 365, - OP_ONCE = 366, - OP_CUSTOM = 367, - OP_REACH = 368, - OP_RKEYS = 369, - OP_RVALUES = 370, - OP_COREARGS = 371, - OP_RUNCV = 372, - OP_FC = 373, - OP_PADCV = 374, - OP_INTROCV = 375, - OP_CLONECV = 376, - OP_PADRANGE = 377, + OP_KVASLICE = 132, + OP_AEACH = 133, + OP_AKEYS = 134, + OP_AVALUES = 135, + OP_EACH = 136, + OP_VALUES = 137, + OP_KEYS = 138, + OP_DELETE = 139, + OP_EXISTS = 140, + OP_RV2HV = 141, + OP_HELEM = 142, + OP_HSLICE = 143, + OP_KVHSLICE = 144, + OP_UNPACK = 145, + OP_PACK = 146, + OP_SPLIT = 147, + OP_JOIN = 148, + OP_LIST = 149, + OP_LSLICE = 150, + OP_ANONLIST = 151, + OP_ANONHASH = 152, + OP_SPLICE = 153, + OP_PUSH = 154, + OP_POP = 155, + OP_SHIFT = 156, + OP_UNSHIFT = 157, + OP_SORT = 158, + OP_REVERSE = 159, + OP_GREPSTART = 160, + OP_GREPWHILE = 161, + OP_MAPSTART = 162, + OP_MAPWHILE = 163, + OP_RANGE = 164, + OP_FLIP = 165, + OP_FLOP = 166, + OP_AND = 167, + OP_OR = 168, + OP_XOR = 169, + OP_DOR = 170, + OP_COND_EXPR = 171, + OP_ANDASSIGN = 172, + OP_ORASSIGN = 173, + OP_DORASSIGN = 174, + OP_METHOD = 175, + OP_ENTERSUB = 176, + OP_LEAVESUB = 177, + OP_LEAVESUBLV = 178, + OP_CALLER = 179, + OP_WARN = 180, + OP_DIE = 181, + OP_RESET = 182, + OP_LINESEQ = 183, + OP_NEXTSTATE = 184, + OP_DBSTATE = 185, + OP_UNSTACK = 186, + OP_ENTER = 187, + OP_LEAVE = 188, + OP_SCOPE = 189, + OP_ENTERITER = 190, + OP_ITER = 191, + OP_ENTERLOOP = 192, + OP_LEAVELOOP = 193, + OP_RETURN = 194, + OP_LAST = 195, + OP_NEXT = 196, + OP_REDO = 197, + OP_DUMP = 198, + OP_GOTO = 199, + OP_EXIT = 200, + OP_METHOD_NAMED = 201, + OP_ENTERGIVEN = 202, + OP_LEAVEGIVEN = 203, + OP_ENTERWHEN = 204, + OP_LEAVEWHEN = 205, + OP_BREAK = 206, + OP_CONTINUE = 207, + OP_OPEN = 208, + OP_CLOSE = 209, + OP_PIPE_OP = 210, + OP_FILENO = 211, + OP_UMASK = 212, + OP_BINMODE = 213, + OP_TIE = 214, + OP_UNTIE = 215, + OP_TIED = 216, + OP_DBMOPEN = 217, + OP_DBMCLOSE = 218, + OP_SSELECT = 219, + OP_SELECT = 220, + OP_GETC = 221, + OP_READ = 222, + OP_ENTERWRITE = 223, + OP_LEAVEWRITE = 224, + OP_PRTF = 225, + OP_PRINT = 226, + OP_SAY = 227, + OP_SYSOPEN = 228, + OP_SYSSEEK = 229, + OP_SYSREAD = 230, + OP_SYSWRITE = 231, + OP_EOF = 232, + OP_TELL = 233, + OP_SEEK = 234, + OP_TRUNCATE = 235, + OP_FCNTL = 236, + OP_IOCTL = 237, + OP_FLOCK = 238, + OP_SEND = 239, + OP_RECV = 240, + OP_SOCKET = 241, + OP_SOCKPAIR = 242, + OP_BIND = 243, + OP_CONNECT = 244, + OP_LISTEN = 245, + OP_ACCEPT = 246, + OP_SHUTDOWN = 247, + OP_GSOCKOPT = 248, + OP_SSOCKOPT = 249, + OP_GETSOCKNAME = 250, + OP_GETPEERNAME = 251, + OP_LSTAT = 252, + OP_STAT = 253, + OP_FTRREAD = 254, + OP_FTRWRITE = 255, + OP_FTREXEC = 256, + OP_FTEREAD = 257, + OP_FTEWRITE = 258, + OP_FTEEXEC = 259, + OP_FTIS = 260, + OP_FTSIZE = 261, + OP_FTMTIME = 262, + OP_FTATIME = 263, + OP_FTCTIME = 264, + OP_FTROWNED = 265, + OP_FTEOWNED = 266, + OP_FTZERO = 267, + OP_FTSOCK = 268, + OP_FTCHR = 269, + OP_FTBLK = 270, + OP_FTFILE = 271, + OP_FTDIR = 272, + OP_FTPIPE = 273, + OP_FTSUID = 274, + OP_FTSGID = 275, + OP_FTSVTX = 276, + OP_FTLINK = 277, + OP_FTTTY = 278, + OP_FTTEXT = 279, + OP_FTBINARY = 280, + OP_CHDIR = 281, + OP_CHOWN = 282, + OP_CHROOT = 283, + OP_UNLINK = 284, + OP_CHMOD = 285, + OP_UTIME = 286, + OP_RENAME = 287, + OP_LINK = 288, + OP_SYMLINK = 289, + OP_READLINK = 290, + OP_MKDIR = 291, + OP_RMDIR = 292, + OP_OPEN_DIR = 293, + OP_READDIR = 294, + OP_TELLDIR = 295, + OP_SEEKDIR = 296, + OP_REWINDDIR = 297, + OP_CLOSEDIR = 298, + OP_FORK = 299, + OP_WAIT = 300, + OP_WAITPID = 301, + OP_SYSTEM = 302, + OP_EXEC = 303, + OP_KILL = 304, + OP_GETPPID = 305, + OP_GETPGRP = 306, + OP_SETPGRP = 307, + OP_GETPRIORITY = 308, + OP_SETPRIORITY = 309, + OP_TIME = 310, + OP_TMS = 311, + OP_LOCALTIME = 312, + OP_GMTIME = 313, + OP_ALARM = 314, + OP_SLEEP = 315, + OP_SHMGET = 316, + OP_SHMCTL = 317, + OP_SHMREAD = 318, + OP_SHMWRITE = 319, + OP_MSGGET = 320, + OP_MSGCTL = 321, + OP_MSGSND = 322, + OP_MSGRCV = 323, + OP_SEMOP = 324, + OP_SEMGET = 325, + OP_SEMCTL = 326, + OP_REQUIRE = 327, + OP_DOFILE = 328, + OP_HINTSEVAL = 329, + OP_ENTEREVAL = 330, + OP_LEAVEEVAL = 331, + OP_ENTERTRY = 332, + OP_LEAVETRY = 333, + OP_GHBYNAME = 334, + OP_GHBYADDR = 335, + OP_GHOSTENT = 336, + OP_GNBYNAME = 337, + OP_GNBYADDR = 338, + OP_GNETENT = 339, + OP_GPBYNAME = 340, + OP_GPBYNUMBER = 341, + OP_GPROTOENT = 342, + OP_GSBYNAME = 343, + OP_GSBYPORT = 344, + OP_GSERVENT = 345, + OP_SHOSTENT = 346, + OP_SNETENT = 347, + OP_SPROTOENT = 348, + OP_SSERVENT = 349, + OP_EHOSTENT = 350, + OP_ENETENT = 351, + OP_EPROTOENT = 352, + OP_ESERVENT = 353, + OP_GPWNAM = 354, + OP_GPWUID = 355, + OP_GPWENT = 356, + OP_SPWENT = 357, + OP_EPWENT = 358, + OP_GGRNAM = 359, + OP_GGRGID = 360, + OP_GGRENT = 361, + OP_SGRENT = 362, + OP_EGRENT = 363, + OP_GETLOGIN = 364, + OP_SYSCALL = 365, + OP_LOCK = 366, + OP_ONCE = 367, + OP_CUSTOM = 368, + OP_REACH = 369, + OP_RKEYS = 370, + OP_RVALUES = 371, + OP_COREARGS = 372, + OP_RUNCV = 373, + OP_FC = 374, + OP_PADCV = 375, + OP_INTROCV = 376, + OP_CLONECV = 377, + OP_PADRANGE = 378, OP_max } opcode; -#define MAXO 378 +#define MAXO 379 #define OP_FREED MAXO /* the OP_IS_* macros are optimized to a simple range check because diff --git a/perly.act b/perly.act index ef82bc9..5033bfc 100644 --- a/perly.act +++ b/perly.act @@ -1429,6 +1429,18 @@ case 2: case 176: #line 1208 "perly.y" + { (yyval.opval) = op_prepend_elem(OP_KVASLICE, + newOP(OP_PUSHMARK, 0), + newLISTOP(OP_KVASLICE, 0, + list((ps[(3) - (4)].val.opval)), + ref(oopsAV((ps[(1) - (4)].val.opval)), OP_KVASLICE))); + TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'['); + TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),']'); + } + break; + + case 177: +#line 1217 "perly.y" { (yyval.opval) = op_prepend_elem(OP_HSLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_HSLICE, 0, @@ -1441,8 +1453,8 @@ case 2: } break; - case 177: -#line 1219 "perly.y" + case 178: +#line 1228 "perly.y" { (yyval.opval) = op_prepend_elem(OP_KVHSLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_KVHSLICE, 0, @@ -1455,26 +1467,26 @@ case 2: } break; - case 178: -#line 1230 "perly.y" + case 179: +#line 1239 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); } break; - case 179: -#line 1232 "perly.y" + case 180: +#line 1241 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[(1) - (1)].val.opval))); } break; - case 180: -#line 1234 "perly.y" + case 181: +#line 1243 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (3)].val.opval))); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'('); TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')'); } break; - case 181: -#line 1239 "perly.y" + case 182: +#line 1248 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, (ps[(3) - (4)].val.opval), scalar((ps[(1) - (4)].val.opval)))); @@ -1489,91 +1501,91 @@ case 2: } break; - case 182: -#line 1252 "perly.y" + case 183: +#line 1261 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, (ps[(3) - (3)].val.opval), scalar((ps[(2) - (3)].val.opval)))); TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o'); } break; - case 183: -#line 1257 "perly.y" + case 184: +#line 1266 "perly.y" { (yyval.opval) = newOP(IVAL((ps[(1) - (1)].val.i_tkval)), OPf_SPECIAL); PL_hints |= HINT_BLOCK_SCOPE; TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o'); } break; - case 184: -#line 1262 "perly.y" + case 185: +#line 1271 "perly.y" { (yyval.opval) = newLOOPEX(IVAL((ps[(1) - (2)].val.i_tkval)),(ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o'); } break; - case 185: -#line 1266 "perly.y" + case 186: +#line 1275 "perly.y" { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval))); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o'); } break; - case 186: -#line 1270 "perly.y" + case 187: +#line 1279 "perly.y" { (yyval.opval) = newOP(IVAL((ps[(1) - (1)].val.i_tkval)), 0); TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o'); } break; - case 187: -#line 1274 "perly.y" + case 188: +#line 1283 "perly.y" { (yyval.opval) = newUNOP(IVAL((ps[(1) - (2)].val.i_tkval)), 0, (ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o'); } break; - case 188: -#line 1278 "perly.y" + case 189: +#line 1287 "perly.y" { (yyval.opval) = newUNOP(IVAL((ps[(1) - (2)].val.i_tkval)), 0, (ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o'); } break; - case 189: -#line 1282 "perly.y" + case 190: +#line 1291 "perly.y" { (yyval.opval) = newOP(OP_REQUIRE, (ps[(1) - (1)].val.i_tkval) ? OPf_SPECIAL : 0); TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o'); } break; - case 190: -#line 1286 "perly.y" + case 191: +#line 1295 "perly.y" { (yyval.opval) = newUNOP(OP_REQUIRE, (ps[(1) - (2)].val.i_tkval) ? OPf_SPECIAL : 0, (ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o'); } break; - case 191: -#line 1290 "perly.y" + case 192: +#line 1299 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (1)].val.opval))); } break; - case 192: -#line 1292 "perly.y" + case 193: +#line 1301 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, (ps[(2) - (2)].val.opval), scalar((ps[(1) - (2)].val.opval)))); } break; - case 193: -#line 1295 "perly.y" + case 194: +#line 1304 "perly.y" { (yyval.opval) = newOP(IVAL((ps[(1) - (1)].val.i_tkval)), 0); TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o'); } break; - case 194: -#line 1299 "perly.y" + case 195: +#line 1308 "perly.y" { (yyval.opval) = newOP(IVAL((ps[(1) - (3)].val.i_tkval)), 0); TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o'); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'('); @@ -1581,27 +1593,27 @@ case 2: } break; - case 195: -#line 1305 "perly.y" + case 196: +#line 1314 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); } break; - case 196: -#line 1307 "perly.y" + case 197: +#line 1316 "perly.y" { (yyval.opval) = (ps[(1) - (3)].val.opval); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'('); TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')'); } break; - case 197: -#line 1312 "perly.y" + case 198: +#line 1321 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (1)].val.opval))); } break; - case 198: -#line 1315 "perly.y" + case 199: +#line 1324 "perly.y" { (yyval.opval) = (IVAL((ps[(1) - (3)].val.i_tkval)) == OP_NOT) ? newUNOP(IVAL((ps[(1) - (3)].val.i_tkval)), 0, newSVOP(OP_CONST, 0, newSViv(0))) : newOP(IVAL((ps[(1) - (3)].val.i_tkval)), OPf_SPECIAL); @@ -1612,8 +1624,8 @@ case 2: } break; - case 199: -#line 1324 "perly.y" + case 200: +#line 1333 "perly.y" { (yyval.opval) = newUNOP(IVAL((ps[(1) - (4)].val.i_tkval)), 0, (ps[(3) - (4)].val.opval)); TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'o'); TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'('); @@ -1621,8 +1633,8 @@ case 2: } break; - case 200: -#line 1330 "perly.y" + case 201: +#line 1339 "perly.y" { if ( (ps[(1) - (1)].val.opval)->op_type != OP_TRANS && (ps[(1) - (1)].val.opval)->op_type != OP_TRANSR @@ -1635,16 +1647,16 @@ case 2: } break; - case 201: -#line 1341 "perly.y" + case 202: +#line 1350 "perly.y" { (yyval.opval) = pmruntime((ps[(1) - (5)].val.opval), (ps[(4) - (5)].val.opval), 1, (ps[(2) - (5)].val.ival)); TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'('); TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')'); } break; - case 204: -#line 1348 "perly.y" + case 205: +#line 1357 "perly.y" { (yyval.opval) = newLISTOP(OP_DIE, 0, newOP(OP_PUSHMARK, 0), newSVOP(OP_CONST, 0, newSVpvs("Unimplemented"))); @@ -1652,8 +1664,8 @@ case 2: } break; - case 206: -#line 1358 "perly.y" + case 207: +#line 1367 "perly.y" { (yyval.opval) = my_attrs((ps[(2) - (3)].val.opval),(ps[(3) - (3)].val.opval)); DO_MAD( token_getmad((ps[(1) - (3)].val.i_tkval),(yyval.opval),'d'); @@ -1663,128 +1675,128 @@ case 2: } break; - case 207: -#line 1366 "perly.y" + case 208: +#line 1375 "perly.y" { (yyval.opval) = localize((ps[(2) - (2)].val.opval),IVAL((ps[(1) - (2)].val.i_tkval))); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'d'); } break; - case 208: -#line 1373 "perly.y" + case 209: +#line 1382 "perly.y" { (yyval.opval) = sawparens((ps[(2) - (3)].val.opval)); TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'('); TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')'); } break; - case 209: -#line 1378 "perly.y" + case 210: +#line 1387 "perly.y" { (yyval.opval) = sawparens(newNULLLIST()); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'('); TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),')'); } break; - case 210: -#line 1383 "perly.y" - { (yyval.opval) = (ps[(1) - (1)].val.opval); } - break; - case 211: -#line 1385 "perly.y" +#line 1392 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); } break; case 212: -#line 1387 "perly.y" +#line 1394 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); } break; case 213: -#line 1392 "perly.y" - { (yyval.opval) = (OP*)NULL; } +#line 1396 "perly.y" + { (yyval.opval) = (ps[(1) - (1)].val.opval); } break; case 214: -#line 1394 "perly.y" - { (yyval.opval) = (ps[(1) - (1)].val.opval); } +#line 1401 "perly.y" + { (yyval.opval) = (OP*)NULL; } break; case 215: -#line 1398 "perly.y" - { (yyval.opval) = (OP*)NULL; } +#line 1403 "perly.y" + { (yyval.opval) = (ps[(1) - (1)].val.opval); } break; case 216: -#line 1400 "perly.y" - { (yyval.opval) = (ps[(1) - (1)].val.opval); } +#line 1407 "perly.y" + { (yyval.opval) = (OP*)NULL; } break; case 217: -#line 1406 "perly.y" - { PL_parser->in_my = 0; (yyval.opval) = my((ps[(1) - (1)].val.opval)); } +#line 1409 "perly.y" + { (yyval.opval) = (ps[(1) - (1)].val.opval); } break; case 218: -#line 1410 "perly.y" +#line 1415 "perly.y" + { PL_parser->in_my = 0; (yyval.opval) = my((ps[(1) - (1)].val.opval)); } + break; + + case 219: +#line 1419 "perly.y" { (yyval.opval) = newCVREF(IVAL((ps[(1) - (2)].val.i_tkval)),(ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'&'); } break; - case 219: -#line 1416 "perly.y" + case 220: +#line 1425 "perly.y" { (yyval.opval) = newSVREF((ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'$'); } break; - case 220: -#line 1422 "perly.y" + case 221: +#line 1431 "perly.y" { (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'@'); } break; - case 221: -#line 1428 "perly.y" + case 222: +#line 1437 "perly.y" { (yyval.opval) = newHVREF((ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'%'); } break; - case 222: -#line 1434 "perly.y" + case 223: +#line 1443 "perly.y" { (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'l'); } break; - case 223: -#line 1440 "perly.y" + case 224: +#line 1449 "perly.y" { (yyval.opval) = newGVREF(0,(ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'*'); } break; - case 224: -#line 1447 "perly.y" + case 225: +#line 1456 "perly.y" { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); } break; - case 225: -#line 1449 "perly.y" + case 226: +#line 1458 "perly.y" { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); } break; - case 226: -#line 1451 "perly.y" + case 227: +#line 1460 "perly.y" { (yyval.opval) = op_scope((ps[(1) - (1)].val.opval)); } break; - case 227: -#line 1454 "perly.y" + case 228: +#line 1463 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); } break; @@ -1792,6 +1804,6 @@ case 2: /* Generated from: - * 48446ab3e028756e1df8ac7ff4e2967381f754ac8cf39430af8bf83b446076e0 perly.y + * 1c6010b3d1651d4fc7cbfc329723c507767b4230ac920ae0ffde8f344f4a0ab4 perly.y * 5c9d2a0262457fe9b70073fc8ad6c188f812f38ad57712b7e2f53daa01b297cc regen_perly.pl * ex: set ro: */ diff --git a/perly.h b/perly.h index c570d60..dcf67d9 100644 --- a/perly.h +++ b/perly.h @@ -286,6 +286,6 @@ int yyparse (); /* Generated from: - * 48446ab3e028756e1df8ac7ff4e2967381f754ac8cf39430af8bf83b446076e0 perly.y + * 1c6010b3d1651d4fc7cbfc329723c507767b4230ac920ae0ffde8f344f4a0ab4 perly.y * 5c9d2a0262457fe9b70073fc8ad6c188f812f38ad57712b7e2f53daa01b297cc regen_perly.pl * ex: set ro: */ diff --git a/perly.tab b/perly.tab index 52cf54d..3a1d620 100644 --- a/perly.tab +++ b/perly.tab @@ -6,16 +6,16 @@ #define YYFINAL 14 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 2833 +#define YYLAST 2872 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 104 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 66 /* YYNRULES -- Number of rules. */ -#define YYNRULES 227 +#define YYNRULES 228 /* YYNRULES -- Number of states. */ -#define YYNSTATES 459 +#define YYNSTATES 462 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -85,12 +85,12 @@ static const yytype_uint16 yyprhs[] = 517, 520, 523, 526, 529, 532, 535, 538, 542, 545, 550, 554, 560, 563, 566, 571, 577, 582, 588, 590, 592, 594, 596, 602, 605, 607, 610, 614, 616, 619, - 621, 623, 625, 627, 629, 631, 636, 642, 648, 650, - 652, 656, 661, 665, 667, 670, 673, 675, 678, 681, - 683, 686, 688, 691, 693, 697, 699, 703, 705, 709, - 714, 715, 721, 723, 725, 727, 729, 733, 736, 740, - 743, 745, 747, 749, 750, 752, 753, 755, 757, 760, - 763, 766, 769, 772, 775, 777, 779, 781 + 621, 623, 625, 627, 629, 631, 636, 641, 647, 653, + 655, 657, 661, 666, 670, 672, 675, 678, 680, 683, + 686, 688, 691, 693, 696, 698, 702, 704, 708, 710, + 714, 719, 720, 726, 728, 730, 732, 734, 738, 741, + 745, 748, 750, 752, 754, 755, 757, 758, 760, 762, + 765, 768, 771, 774, 777, 780, 782, 784, 786 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ @@ -159,22 +159,22 @@ static const yytype_int16 yyrhs[] = 156, -1, 93, 156, -1, 158, -1, 69, 156, -1, 102, 146, 101, -1, 29, -1, 102, 101, -1, 164, -1, 168, -1, 166, -1, 165, -1, 167, -1, 151, - -1, 165, 11, 146, 12, -1, 165, 9, 146, 20, - 10, -1, 166, 9, 146, 20, 10, -1, 26, -1, - 163, -1, 163, 102, 101, -1, 163, 102, 146, 101, - -1, 68, 141, 160, -1, 53, -1, 53, 156, -1, - 79, 147, -1, 59, -1, 59, 112, -1, 59, 156, - -1, 71, -1, 71, 156, -1, 32, -1, 32, 156, - -1, 56, -1, 56, 102, 101, -1, 30, -1, 30, - 102, 101, -1, 31, -1, 57, 102, 101, -1, 57, - 102, 146, 101, -1, -1, 27, 157, 102, 147, 101, - -1, 23, -1, 148, -1, 55, -1, 34, -1, 70, - 159, 144, -1, 70, 159, -1, 102, 146, 101, -1, - 102, 101, -1, 164, -1, 166, -1, 165, -1, -1, - 147, -1, -1, 146, -1, 164, -1, 19, 169, -1, - 15, 169, -1, 16, 169, -1, 17, 169, -1, 65, - 169, -1, 18, 169, -1, 23, -1, 164, -1, 112, - -1, 28, -1 + -1, 165, 11, 146, 12, -1, 166, 11, 146, 12, + -1, 165, 9, 146, 20, 10, -1, 166, 9, 146, + 20, 10, -1, 26, -1, 163, -1, 163, 102, 101, + -1, 163, 102, 146, 101, -1, 68, 141, 160, -1, + 53, -1, 53, 156, -1, 79, 147, -1, 59, -1, + 59, 112, -1, 59, 156, -1, 71, -1, 71, 156, + -1, 32, -1, 32, 156, -1, 56, -1, 56, 102, + 101, -1, 30, -1, 30, 102, 101, -1, 31, -1, + 57, 102, 101, -1, 57, 102, 146, 101, -1, -1, + 27, 157, 102, 147, 101, -1, 23, -1, 148, -1, + 55, -1, 34, -1, 70, 159, 144, -1, 70, 159, + -1, 102, 146, 101, -1, 102, 101, -1, 164, -1, + 166, -1, 165, -1, -1, 147, -1, -1, 146, -1, + 164, -1, 19, 169, -1, 15, 169, -1, 16, 169, + -1, 17, 169, -1, 65, 169, -1, 18, 169, -1, + 23, -1, 164, -1, 112, -1, 28, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ @@ -197,12 +197,12 @@ static const yytype_uint16 yyrline[] = 1030, 1037, 1041, 1045, 1050, 1055, 1060, 1069, 1074, 1079, 1085, 1091, 1102, 1106, 1110, 1122, 1135, 1143, 1155, 1156, 1157, 1158, 1159, 1164, 1168, 1170, 1174, 1179, 1181, 1186, - 1188, 1190, 1192, 1194, 1196, 1198, 1207, 1218, 1229, 1231, - 1233, 1238, 1251, 1256, 1261, 1265, 1269, 1273, 1277, 1281, - 1285, 1289, 1291, 1294, 1298, 1304, 1306, 1311, 1314, 1323, - 1330, 1329, 1345, 1346, 1347, 1353, 1357, 1365, 1372, 1377, - 1382, 1384, 1386, 1391, 1393, 1398, 1399, 1405, 1409, 1415, - 1421, 1427, 1433, 1439, 1446, 1448, 1450, 1453 + 1188, 1190, 1192, 1194, 1196, 1198, 1207, 1216, 1227, 1238, + 1240, 1242, 1247, 1260, 1265, 1270, 1274, 1278, 1282, 1286, + 1290, 1294, 1298, 1300, 1303, 1307, 1313, 1315, 1320, 1323, + 1332, 1339, 1338, 1354, 1355, 1356, 1362, 1366, 1374, 1381, + 1386, 1391, 1393, 1395, 1400, 1402, 1407, 1408, 1414, 1418, + 1424, 1430, 1436, 1442, 1448, 1455, 1457, 1459, 1462 }; #endif @@ -281,9 +281,9 @@ static const yytype_uint8 yyr1[] = 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 157, 156, 156, 156, 156, 156, 158, 158, 159, 159, - 159, 159, 159, 160, 160, 161, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 169, 169, 169 + 156, 157, 156, 156, 156, 156, 156, 158, 158, 159, + 159, 159, 159, 159, 160, 160, 161, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 169, 169, 169 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -306,12 +306,12 @@ static const yytype_uint8 yyr2[] = 2, 2, 2, 2, 2, 2, 2, 3, 2, 4, 3, 5, 2, 2, 4, 5, 4, 5, 1, 1, 1, 1, 5, 2, 1, 2, 3, 1, 2, 1, - 1, 1, 1, 1, 1, 4, 5, 5, 1, 1, - 3, 4, 3, 1, 2, 2, 1, 2, 2, 1, - 2, 1, 2, 1, 3, 1, 3, 1, 3, 4, - 0, 5, 1, 1, 1, 1, 3, 2, 3, 2, - 1, 1, 1, 0, 1, 0, 1, 1, 2, 2, - 2, 2, 2, 2, 1, 1, 1, 1 + 1, 1, 1, 1, 1, 4, 4, 5, 5, 1, + 1, 3, 4, 3, 1, 2, 2, 1, 2, 2, + 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, + 4, 0, 5, 1, 1, 1, 1, 3, 2, 3, + 2, 1, 1, 1, 0, 1, 0, 1, 1, 2, + 2, 2, 2, 2, 2, 1, 1, 1, 1 }; /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. @@ -319,715 +319,725 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 0, 2, 4, 6, 8, 10, 12, 0, 16, 215, + 0, 2, 4, 6, 8, 10, 12, 0, 16, 216, 0, 0, 0, 19, 1, 19, 0, 0, 0, 0, - 0, 0, 0, 0, 202, 0, 0, 178, 200, 167, - 195, 197, 191, 79, 205, 79, 183, 204, 193, 0, - 0, 186, 213, 0, 0, 0, 0, 0, 0, 189, - 0, 0, 0, 0, 0, 0, 0, 216, 95, 203, - 174, 158, 159, 160, 161, 98, 164, 5, 179, 169, + 0, 0, 0, 0, 203, 0, 0, 179, 201, 167, + 196, 198, 192, 79, 206, 79, 184, 205, 194, 0, + 0, 187, 214, 0, 0, 0, 0, 0, 0, 190, + 0, 0, 0, 0, 0, 0, 0, 217, 95, 204, + 174, 158, 159, 160, 161, 98, 164, 5, 180, 169, 172, 171, 173, 170, 16, 7, 54, 50, 27, 80, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 28, 65, 9, 0, 55, 0, 11, 24, 23, - 0, 0, 148, 0, 139, 140, 224, 227, 226, 225, - 219, 220, 221, 223, 218, 213, 0, 0, 0, 0, - 192, 0, 83, 184, 0, 0, 215, 187, 188, 224, - 214, 105, 225, 0, 222, 202, 82, 153, 0, 152, - 169, 0, 0, 81, 213, 165, 0, 207, 210, 212, - 211, 190, 185, 141, 142, 163, 146, 145, 168, 0, + 0, 0, 148, 0, 139, 140, 225, 228, 227, 226, + 220, 221, 222, 224, 219, 214, 0, 0, 0, 0, + 193, 0, 83, 185, 0, 0, 216, 188, 189, 225, + 215, 105, 226, 0, 223, 203, 82, 153, 0, 152, + 169, 0, 0, 81, 214, 165, 0, 208, 211, 213, + 212, 191, 186, 141, 142, 163, 146, 145, 168, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 143, 0, 0, 0, 0, 0, 0, - 0, 0, 19, 77, 78, 0, 33, 16, 16, 16, - 16, 16, 16, 0, 16, 16, 39, 0, 46, 49, - 0, 0, 0, 0, 0, 0, 26, 25, 20, 147, - 103, 215, 0, 0, 196, 107, 84, 85, 194, 198, - 0, 0, 0, 99, 0, 0, 150, 0, 182, 209, - 0, 89, 206, 0, 166, 94, 93, 92, 97, 0, - 0, 121, 0, 134, 130, 131, 127, 128, 125, 0, - 137, 136, 135, 133, 132, 129, 138, 126, 0, 0, - 109, 0, 102, 110, 180, 0, 0, 0, 0, 0, - 0, 0, 0, 76, 0, 30, 0, 0, 70, 0, - 0, 0, 0, 0, 16, 0, 0, 66, 58, 59, - 72, 56, 57, 60, 61, 0, 0, 123, 213, 87, - 0, 199, 106, 0, 154, 0, 156, 0, 149, 208, - 88, 0, 0, 0, 114, 120, 0, 0, 0, 118, - 0, 215, 181, 0, 112, 0, 175, 0, 0, 14, - 16, 29, 83, 16, 32, 0, 0, 71, 0, 0, - 73, 75, 0, 0, 217, 69, 74, 0, 0, 55, - 0, 0, 0, 104, 201, 108, 86, 151, 100, 155, - 157, 124, 0, 117, 162, 0, 113, 119, 0, 115, - 176, 177, 111, 0, 85, 47, 213, 67, 67, 0, - 0, 0, 0, 70, 0, 0, 0, 122, 116, 101, - 0, 0, 19, 0, 0, 0, 18, 62, 62, 0, - 65, 0, 0, 37, 38, 21, 91, 90, 31, 0, - 34, 65, 65, 19, 0, 0, 35, 36, 0, 45, - 67, 65, 0, 48, 40, 41, 0, 63, 0, 65, - 0, 44, 0, 52, 22, 17, 0, 43, 0, 15, - 19, 51, 0, 0, 0, 62, 42, 53, 64 + 0, 0, 0, 19, 77, 78, 0, 33, 16, 16, + 16, 16, 16, 16, 0, 16, 16, 39, 0, 46, + 49, 0, 0, 0, 0, 0, 0, 26, 25, 20, + 147, 103, 216, 0, 0, 197, 107, 84, 85, 195, + 199, 0, 0, 0, 99, 0, 0, 150, 0, 183, + 210, 0, 89, 207, 0, 166, 94, 93, 92, 97, + 0, 0, 121, 0, 134, 130, 131, 127, 128, 125, + 0, 137, 136, 135, 133, 132, 129, 138, 126, 0, + 0, 109, 0, 102, 110, 181, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 76, 0, 30, 0, 0, + 70, 0, 0, 0, 0, 0, 16, 0, 0, 66, + 58, 59, 72, 56, 57, 60, 61, 0, 0, 123, + 214, 87, 0, 200, 106, 0, 154, 0, 156, 0, + 149, 209, 88, 0, 0, 0, 114, 120, 0, 0, + 0, 118, 0, 216, 182, 0, 112, 0, 175, 0, + 176, 0, 14, 16, 29, 83, 16, 32, 0, 0, + 71, 0, 0, 73, 75, 0, 0, 218, 69, 74, + 0, 0, 55, 0, 0, 0, 104, 202, 108, 86, + 151, 100, 155, 157, 124, 0, 117, 162, 0, 113, + 119, 0, 115, 177, 178, 111, 0, 85, 47, 214, + 67, 67, 0, 0, 0, 0, 70, 0, 0, 0, + 122, 116, 101, 0, 0, 19, 0, 0, 0, 18, + 62, 62, 0, 65, 0, 0, 37, 38, 21, 91, + 90, 31, 0, 34, 65, 65, 19, 0, 0, 35, + 36, 0, 45, 67, 65, 0, 48, 40, 41, 0, + 63, 0, 65, 0, 44, 0, 52, 22, 17, 0, + 43, 0, 15, 19, 51, 0, 0, 0, 62, 42, + 53, 64 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 7, 8, 9, 10, 11, 12, 13, 108, 341, - 15, 407, 423, 100, 432, 218, 98, 99, 342, 287, - 402, 444, 451, 94, 426, 208, 404, 356, 346, 299, - 349, 358, 352, 284, 196, 121, 193, 138, 227, 310, - 242, 418, 95, 58, 59, 308, 272, 60, 61, 62, - 63, 64, 65, 117, 66, 147, 131, 67, 353, 68, + -1, 7, 8, 9, 10, 11, 12, 13, 108, 344, + 15, 410, 426, 100, 435, 219, 98, 99, 345, 289, + 405, 447, 454, 94, 429, 209, 407, 359, 349, 301, + 352, 361, 355, 286, 197, 121, 194, 138, 228, 312, + 243, 421, 95, 58, 59, 310, 273, 60, 61, 62, + 63, 64, 65, 117, 66, 147, 131, 67, 356, 68, 69, 70, 71, 72, 73, 110 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -399 +#define YYPACT_NINF -387 static const yytype_int16 yypact[] = { - 695, -399, -399, -399, -399, -399, -399, 76, -399, 2714, - 84, 1101, 1006, -399, -399, -399, 1798, 2714, 2714, 204, - 204, 204, 204, 204, -399, 204, 204, -399, -399, 101, - 6, -399, 2714, -399, -399, -399, 2714, -399, 43, 52, - 53, 1706, 1522, 204, 1614, 1888, 56, 2714, 48, 2714, - 2714, 2714, 2714, 2714, 2714, 2714, 1978, 20, 79, -399, - 2, -399, -399, -399, -399, 332, -399, -399, 64, 96, - 114, 156, -399, 170, -399, -399, -399, -399, -399, -399, - 56, 166, -399, 88, 90, 102, 103, -1, 119, 141, - 84, -399, 148, -399, 178, 1976, 1006, -399, -399, -399, - 436, 531, -399, -3, 306, 306, -399, -399, -399, -399, - -399, -399, -399, -399, -399, 2714, 143, 145, 2714, 115, - 1873, 84, 229, 332, 155, 2070, 1522, -399, 1873, 1429, - 79, -399, 1350, 2714, -399, 160, -399, -399, 161, 1873, - 13, 247, 63, -399, 2714, 1873, 2162, 194, -399, -399, - -399, 1873, 79, 306, 306, 306, 140, 140, 257, -31, - 2714, 2714, 2714, 2714, 2714, 2714, 2254, 2714, 2714, 2714, - 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, 2714, - 2714, 2714, -399, -399, 47, 2346, 2714, 2714, 2714, 2714, - 2714, 2714, -399, 246, -399, 253, -399, -399, -399, -399, - -399, -399, -399, 169, -399, -399, -399, 84, -399, -399, - 2714, 2714, 2714, 2714, 2714, 2714, -399, -399, -399, -399, - -399, 2714, 2714, 11, -399, -399, -399, 206, -399, -399, - 117, 174, 2714, 79, 2438, 2530, -399, 278, -399, -399, - 230, 264, -399, 2714, 282, 220, 220, -399, 332, 75, - 41, -399, 243, 1182, 1783, 1599, 519, 421, 332, 251, - 1320, 1320, 1399, 1507, 1691, 1358, 306, 306, 2714, 2714, - -399, 2622, 200, -399, -399, 248, 100, 60, 124, 70, - 183, 203, 626, -399, 283, -399, 16, 293, 2714, 2714, - 2714, 2714, 302, 1194, -399, 2714, 2714, -399, 20, -399, - 20, 20, 20, 20, 20, 221, 12, -399, 2714, 297, - 84, -399, -399, 281, -399, 303, -399, 307, -399, -399, - -399, 91, 2714, 333, -399, -399, 2714, 233, 94, -399, - 322, 2714, -399, 335, -399, 340, -399, 344, 345, -399, - -399, -399, 229, -399, -399, 319, 260, 20, 261, 262, - 20, -399, 287, 290, -399, -399, -399, 296, 385, 252, - 2714, 309, 311, -399, -399, -399, -399, -399, -399, -399, - -399, -399, 97, -399, 2733, 397, -399, -399, 314, -399, - -399, -399, -399, 404, 206, -399, 2714, -399, -399, 416, - 416, 2714, 416, 2714, 329, 416, 416, -399, -399, -399, - 357, 57, -399, 413, 416, 416, -399, 21, 21, 334, - 148, 419, 416, -399, -399, -399, -399, -399, -399, 721, - -399, 148, 148, -399, 416, 338, -399, -399, 416, -399, - -399, 148, 28, -399, -399, -399, 816, -399, 2714, 148, - 1287, -399, 420, 368, -399, -399, 342, -399, 347, -399, - -399, -399, 416, 416, 911, 21, -399, -399, -399 + 235, -387, -387, -387, -387, -387, -387, 15, -387, 2713, + 34, 1100, 1005, -387, -387, -387, 1797, 2713, 2713, 93, + 93, 93, 93, 93, -387, 93, 93, -387, -387, 58, + -27, -387, 2713, -387, -387, -387, 2713, -387, -21, -9, + -6, 1705, 1521, 93, 1613, 1887, 24, 2713, 46, 2713, + 2713, 2713, 2713, 2713, 2713, 2713, 1977, 79, 17, -387, + 10, -387, -387, -387, -387, 2732, -387, -387, -1, 19, + 56, 190, -387, 95, -387, -387, -387, -387, -387, -387, + 24, 97, -387, 21, 22, 27, 38, 8, 39, 72, + 34, -387, 129, -387, 174, 1885, 1005, -387, -387, -387, + 435, 530, -387, 6, 222, 222, -387, -387, -387, -387, + -387, -387, -387, -387, -387, 2713, 103, 116, 2713, 120, + 1782, 34, 201, 2732, 131, 2069, 1521, -387, 1782, 1428, + 17, -387, 1349, 2713, -387, 133, -387, -387, 144, 1782, + 13, 237, 126, -387, 2713, 1782, 2161, 212, -387, -387, + -387, 1782, 17, 222, 222, 222, 278, 278, 275, 132, + 2713, 2713, 2713, 2713, 2713, 2713, 2253, 2713, 2713, 2713, + 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, + 2713, 2713, -387, -387, 5, 2345, 2713, 2713, 2713, 2713, + 2713, 2713, 2713, -387, 267, -387, 272, -387, -387, -387, + -387, -387, -387, -387, 195, -387, -387, -387, 34, -387, + -387, 2713, 2713, 2713, 2713, 2713, 2713, -387, -387, -387, + -387, -387, 2713, 2713, 61, -387, -387, -387, 228, -387, + -387, 295, 200, 2713, 17, 2437, 2529, -387, 297, -387, + -387, 312, 283, -387, 2713, 315, 245, 245, -387, 2732, + 187, 67, -387, 329, 1181, 266, 1598, 423, 287, 2732, + 337, 1319, 1319, 1398, 1506, 1690, 241, 222, 222, 2713, + 2713, -387, 2621, 231, -387, -387, 339, 191, 73, 199, + 82, 202, 102, 205, 625, -387, 314, -387, 36, 316, + 2713, 2713, 2713, 2713, 327, 1193, -387, 2713, 2713, -387, + 79, -387, 79, 79, 79, 79, 79, 242, -25, -387, + 2713, 323, 34, -387, -387, 420, -387, 431, -387, 434, + -387, -387, -387, 106, 2713, 343, -387, -387, 2713, 211, + 119, -387, 439, 2713, -387, 347, -387, 348, -387, 349, + -387, 350, -387, -387, -387, 201, -387, -387, 342, 269, + 79, 284, 285, 79, -387, 291, 265, -387, -387, -387, + 301, 356, 303, 2713, 302, 307, -387, -387, -387, -387, + -387, -387, -387, -387, -387, 152, -387, 2772, 400, -387, + -387, 310, -387, -387, -387, -387, 408, 228, -387, 2713, + -387, -387, 422, 422, 2713, 422, 2713, 338, 422, 422, + -387, -387, -387, 364, 80, -387, 425, 422, 422, -387, + 41, 41, 355, 129, 437, 422, -387, -387, -387, -387, + -387, -387, 720, -387, 129, 129, -387, 422, 341, -387, + -387, 422, -387, -387, 129, 7, -387, -387, -387, 815, + -387, 2713, 129, 1286, -387, 441, 409, -387, -387, 380, + -387, 382, -387, -387, -387, 422, 422, 910, 41, -387, + -387, -387 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -399, -399, -399, -399, -399, -399, -399, -399, -10, -399, - -70, -170, -399, -12, -399, 434, 361, 4, -399, -399, - -399, -399, -399, -276, -398, 182, -369, -399, 65, -165, - -275, 24, -399, -399, 288, 448, -399, -2, 157, 106, - -399, -399, -4, -34, -399, -399, -399, -399, -399, -399, - -399, -399, 197, -399, -399, -399, -109, -119, -399, -399, - 7, 449, 450, -399, -399, 17 + -387, -387, -387, -387, -387, -387, -387, -387, -10, -387, + -30, -87, -387, -12, -387, 477, 403, -4, -387, -387, + -387, -387, -387, -290, -386, -110, -365, -387, 128, -67, + -289, 86, -387, -387, 330, 487, -387, -14, 197, 149, + -387, -387, 1, -38, -387, -387, -387, -387, -387, -387, + -387, -387, 81, -387, -387, -387, -104, -113, -387, -387, + 16, 503, 504, -387, -387, 28 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -203 +#define YYTABLE_NINF -204 static const yytype_int16 yytable[] = { - 75, 92, 92, 101, 192, 57, 220, 231, 130, 219, - 427, 164, 103, 165, 19, 93, 152, 355, 357, 405, - 361, 362, 186, 307, 187, 343, 109, 109, 109, 109, - 109, 127, 109, 109, 137, 238, 344, 111, 112, 113, - 114, 142, 115, 116, 144, 160, 161, 162, 442, 132, - 109, 140, 159, 324, 443, 148, 268, 458, 269, 133, - 134, 440, 19, 19, 20, 21, 74, 424, 425, 201, - 244, 270, 334, 160, 161, 162, 14, 416, 194, 143, - 206, 130, 336, 237, 136, 394, 92, 160, 161, 162, - 92, 92, 163, 74, 203, 323, 160, 161, 162, 233, - 217, 202, 305, 371, 166, 186, 376, 187, 119, 397, - 130, 225, 118, 364, 223, 235, 409, 160, 161, 162, - 333, 230, 57, 188, 348, 189, 351, 288, 289, 290, - 291, 292, 293, 132, 295, 296, 160, 161, 162, 160, - 161, 162, 240, 232, 335, 124, 160, 161, 162, 271, - 146, 160, 161, 162, 125, 126, 245, 246, 247, 163, - 249, 250, 252, 446, 355, 190, 185, 160, 161, 162, - 160, 161, 162, 160, 161, 162, 160, 161, 162, 191, - 282, 275, 276, 277, 278, 279, 280, 281, 306, 195, - 197, 273, 198, 160, 161, 162, 207, 297, 209, 365, - 160, 161, 162, 337, 199, 200, 298, 300, 301, 302, - 303, 304, 378, 74, 104, 105, 224, 57, 311, 19, - 408, 204, 410, 338, 360, 413, 414, 106, 313, 120, - 315, 317, 107, 123, 421, 422, -203, -203, 128, 321, - 184, 139, 431, 205, 145, 221, 151, 222, 153, 154, - 155, 156, 157, 375, 437, 226, 228, 236, 439, 160, - 161, 162, -81, 234, 327, 328, 241, 330, 243, 283, - 383, 294, 92, 385, 130, 312, 286, 403, 309, 160, - 161, 162, 455, 456, 347, 300, 350, 300, 318, 359, - 320, 350, 350, 322, 210, 211, 212, 213, 162, 354, - 367, 214, 331, 215, 340, 167, 160, 161, 162, 160, - 161, 162, 168, 169, 170, 171, 345, 19, 372, 160, - 161, 162, 363, 366, 160, 161, 162, 57, 160, 161, - 162, 319, 172, 173, 326, 174, 175, 176, 177, 178, - 179, 180, 386, 373, 325, 379, 181, 182, 183, 332, - 380, 184, 130, -73, 381, 382, 350, 160, 161, 162, - 248, 387, 388, 389, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 160, - 161, 162, 368, 160, 161, 162, 167, 350, 390, 347, - 419, 417, 391, 168, 169, 170, 171, 392, 160, 161, - 162, 181, 182, 183, 369, 393, 184, 398, 370, 92, - 395, 436, 396, 172, 173, 399, 174, 175, 176, 177, - 178, 179, 180, 377, 400, 406, 92, 181, 182, 183, - 412, 415, 184, 420, 350, 428, -13, 76, 454, 430, - 438, 450, 449, 452, 92, 74, 97, 16, 453, 17, - 18, 19, 20, 21, 22, 23, 77, 216, 411, 24, - 25, 26, 27, 28, 448, 29, 30, 31, 32, 33, - 34, 78, 96, 79, 80, 35, 81, 82, 83, 84, - 85, 86, 285, 122, 170, 87, 88, 89, 90, 36, - 401, 37, 38, 39, 40, 41, 42, 149, 150, 384, - 0, 43, 44, 45, 46, 47, 48, 49, 0, 0, - 0, 180, 0, 0, 0, 50, 181, 182, 183, 0, - 0, 184, 0, 374, 0, 0, 0, 51, 52, 53, - 0, -3, 76, 0, 54, 55, 0, 0, 56, 91, - 74, 0, 16, 0, 17, 18, 19, 20, 21, 22, - 23, 77, 0, 0, 24, 25, 26, 27, 28, 0, - 29, 30, 31, 32, 33, 34, 78, 96, 79, 80, - 35, 81, 82, 83, 84, 85, 86, 0, 0, 0, - 87, 88, 89, 90, 36, 0, 37, 38, 39, 40, - 41, 42, 429, 0, 0, 0, 43, 44, 45, 46, - 47, 48, 49, 434, 435, 0, 0, 0, 0, 180, - 50, 0, 0, 441, 181, 182, 183, 0, 0, 184, - 0, 447, 51, 52, 53, 0, 0, 76, 0, 54, - 55, 0, 0, 56, 91, 74, 339, 16, 0, 17, - 18, 19, 20, 21, 22, 23, 77, 0, 0, 24, - 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, - 34, 78, 96, 79, 80, 35, 81, 82, 83, 84, - 85, 86, 0, 0, 0, 87, 88, 89, 90, 36, - 0, 37, 38, 39, 40, 41, 42, 0, 0, 0, - 0, 43, 44, 45, 46, 47, 48, 49, 1, 2, - 3, 4, 5, 6, 0, 50, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 51, 52, 53, - 0, 0, 76, 0, 54, 55, 0, 0, 56, 91, - 74, 433, 16, 0, 17, 18, 19, 20, 21, 22, - 23, 77, 0, 0, 24, 25, 26, 27, 28, 0, - 29, 30, 31, 32, 33, 34, 78, 96, 79, 80, - 35, 81, 82, 83, 84, 85, 86, 0, 0, 0, - 87, 88, 89, 90, 36, 0, 37, 38, 39, 40, - 41, 42, 0, 0, 0, 0, 43, 44, 45, 46, - 47, 48, 49, 0, 0, 0, 0, 0, 0, 0, - 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 51, 52, 53, 0, 0, 76, 0, 54, - 55, 0, 0, 56, 91, 74, 445, 16, 0, 17, - 18, 19, 20, 21, 22, 23, 77, 0, 0, 24, + 75, 92, 92, 101, 130, 358, 360, 93, 364, 365, + 57, 221, 152, 232, 269, 14, 270, 103, 220, 164, + 19, 165, 186, 19, 187, 430, 408, 445, 186, 271, + 187, 127, 144, 446, 137, 109, 109, 109, 109, 109, + 239, 109, 109, 74, 193, 346, 142, 143, 111, 112, + 113, 114, 136, 115, 116, 163, 347, 159, 132, 109, + 140, 19, 20, 21, 148, 188, 195, 189, 443, 118, + 133, 134, 461, 309, 397, 119, 367, 130, 202, 326, + 207, 124, 160, 161, 162, 336, 92, 427, 428, 74, + 92, 92, 218, 125, 338, 234, 126, 163, 104, 105, + 419, 185, 74, 204, 192, 412, 130, 272, 19, 307, + 203, 226, 166, 120, 340, 236, 106, 123, 374, 224, + 196, 107, 128, 198, 199, 139, 231, 57, 145, 200, + 151, 379, 153, 154, 155, 156, 157, 160, 161, 162, + 201, 205, 132, 160, 161, 162, 238, 241, 146, 160, + 161, 162, 449, 358, 233, 160, 161, 162, 160, 161, + 162, 246, 247, 248, 400, 250, 251, 253, 290, 291, + 292, 293, 294, 295, 206, 297, 298, 208, 160, 161, + 162, 284, 160, 161, 162, 308, 276, 277, 278, 279, + 280, 281, 282, 283, 210, 160, 161, 162, 299, 190, + 274, 191, 160, 161, 162, 222, 368, 325, 160, 161, + 162, 335, 300, 302, 303, 304, 305, 306, 223, 337, + 381, 225, 339, 57, 351, 341, 354, 227, 160, 161, + 162, 378, 229, 245, 315, -81, 317, 319, 1, 2, + 3, 4, 5, 6, 249, 323, 235, 237, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 160, 161, 162, 363, 160, 161, 162, + 329, 330, 130, 332, 92, 160, 161, 162, 160, 161, + 162, 160, 161, 162, 242, 406, 244, 160, 161, 162, + 285, 350, 302, 353, 302, 288, 362, 296, 353, 353, + 311, 314, 370, 432, 170, 171, 411, 320, 413, 322, + 357, 416, 417, 386, 437, 438, 388, 181, 182, 183, + 424, 425, 184, 162, 444, 375, 324, -204, 434, 170, + 171, 180, 450, 333, 57, 343, 181, 182, 183, 348, + 440, 184, 19, 366, 442, 211, 212, 213, 214, 369, + 170, 130, 215, 376, 216, 179, 180, 382, 383, 384, + 385, 181, 182, 183, 353, 389, 184, 394, 458, 459, + 390, 160, 161, 162, -204, -204, 396, 180, 184, 160, + 161, 162, 181, 182, 183, 391, 392, 184, 160, 161, + 162, 167, 393, 422, 420, 353, 313, 350, 168, 169, + 170, 171, 395, 398, -73, 160, 161, 162, 399, 377, + 401, 402, 92, 321, 439, 160, 161, 162, 172, 173, + 328, 174, 175, 176, 177, 178, 179, 180, 403, 92, + 327, 409, 181, 182, 183, -13, 76, 184, 418, 415, + 334, 457, 353, 441, 74, 423, 16, 92, 17, 18, + 19, 20, 21, 22, 23, 77, 431, 433, 24, 25, + 26, 27, 28, 452, 29, 30, 31, 32, 33, 34, + 78, 96, 79, 80, 35, 81, 82, 83, 84, 85, + 86, 455, 453, 456, 87, 88, 89, 90, 36, 97, + 37, 38, 39, 40, 41, 42, 160, 161, 162, 217, + 43, 44, 45, 46, 47, 48, 49, 160, 161, 162, + 160, 161, 162, 180, 50, 160, 161, 162, 181, 182, + 183, 371, 122, 184, 414, 287, 51, 52, 53, 451, + -3, 76, 372, 54, 55, 373, 404, 56, 91, 74, + 380, 16, 387, 17, 18, 19, 20, 21, 22, 23, + 77, 149, 150, 24, 25, 26, 27, 28, 0, 29, + 30, 31, 32, 33, 34, 78, 96, 79, 80, 35, + 81, 82, 83, 84, 85, 86, 0, 0, 0, 87, + 88, 89, 90, 36, 0, 37, 38, 39, 40, 41, + 42, 0, 0, 0, 0, 43, 44, 45, 46, 47, + 48, 49, 0, 0, 0, 0, 0, 0, 0, 50, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 51, 52, 53, 0, 0, 76, 0, 54, 55, + 0, 0, 56, 91, 74, 342, 16, 0, 17, 18, + 19, 20, 21, 22, 23, 77, 0, 0, 24, 25, + 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, + 78, 96, 79, 80, 35, 81, 82, 83, 84, 85, + 86, 0, 0, 0, 87, 88, 89, 90, 36, 0, + 37, 38, 39, 40, 41, 42, 0, 0, 0, 0, + 43, 44, 45, 46, 47, 48, 49, 0, 0, 0, + 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 51, 52, 53, 0, + 0, 76, 0, 54, 55, 0, 0, 56, 91, 74, + 436, 16, 0, 17, 18, 19, 20, 21, 22, 23, + 77, 0, 0, 24, 25, 26, 27, 28, 0, 29, + 30, 31, 32, 33, 34, 78, 96, 79, 80, 35, + 81, 82, 83, 84, 85, 86, 0, 0, 0, 87, + 88, 89, 90, 36, 0, 37, 38, 39, 40, 41, + 42, 0, 0, 0, 0, 43, 44, 45, 46, 47, + 48, 49, 0, 0, 0, 0, 0, 0, 0, 50, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 51, 52, 53, 0, 0, 76, 0, 54, 55, + 0, 0, 56, 91, 74, 448, 16, 0, 17, 18, + 19, 20, 21, 22, 23, 77, 0, 0, 24, 25, + 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, + 78, 96, 79, 80, 35, 81, 82, 83, 84, 85, + 86, 0, 0, 0, 87, 88, 89, 90, 36, 0, + 37, 38, 39, 40, 41, 42, 0, 0, 0, 0, + 43, 44, 45, 46, 47, 48, 49, 0, 0, 0, + 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 51, 52, 53, 0, + 0, 76, 0, 54, 55, 0, 0, 56, 91, 74, + 0, 16, 0, 17, 18, 19, 20, 21, 22, 23, + 77, 0, 0, 24, 25, 26, 27, 28, 0, 29, + 30, 31, 32, 33, 34, 78, 96, 79, 80, 35, + 81, 82, 83, 84, 85, 86, 0, 0, 0, 87, + 88, 89, 90, 36, 0, 37, 38, 39, 40, 41, + 42, 0, 0, 0, 0, 43, 44, 45, 46, 47, + 48, 49, 0, 0, 460, 0, 0, 0, 0, 50, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 51, 52, 53, 0, 0, 76, 0, 54, 55, + 0, 0, 56, 91, 74, 0, 16, 0, 17, 18, + 19, 20, 21, 22, 23, 77, 0, 0, 24, 25, + 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, + 78, 96, 79, 80, 35, 81, 82, 83, 84, 85, + 86, 0, 0, 0, 87, 88, 89, 90, 36, 0, + 37, 38, 39, 40, 41, 42, 0, 0, 0, 0, + 43, 44, 45, 46, 47, 48, 49, 0, 0, 0, + 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 51, 52, 53, 0, + 0, 76, 0, 54, 55, 0, 0, 56, 91, 74, + 0, 16, 0, 17, 18, 19, 20, 21, 22, 23, + 77, 0, 0, 24, 25, 26, 27, 28, 0, 29, + 30, 31, 32, 33, 34, 78, 0, 79, 80, 35, + 81, 82, 83, 84, 85, 86, 0, 0, 0, 87, + 88, 89, 90, 36, 0, 37, 38, 39, 40, 41, + 42, 0, 0, 0, 0, 43, 44, 45, 46, 47, + 48, 49, 0, 0, 0, 0, 0, 0, 0, 50, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 51, 52, 53, 76, 0, 0, 0, 54, 55, + 0, 0, 56, 91, 16, 0, 17, 18, 19, 20, + 21, 22, 23, -68, 0, 0, 24, 25, 26, 27, + 28, 0, 29, 30, 31, 32, 33, 34, 0, 0, + 0, 0, 35, 0, 0, -204, 0, 0, 0, 0, + 0, 0, 168, 169, 170, 171, 36, 0, 37, 38, + 39, 40, 41, 42, 0, 0, 0, 0, 43, 44, + 45, 46, 47, 48, 49, 174, 175, 176, 177, 178, + 179, 180, 50, 0, 0, 0, 181, 182, 183, 0, + 0, 184, 0, 0, 51, 52, 53, 76, 0, 0, + 0, 54, 55, 0, 0, 56, 0, 16, 0, 17, + 18, 19, 20, 21, 22, 23, 0, 0, 0, 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, - 34, 78, 96, 79, 80, 35, 81, 82, 83, 84, - 85, 86, 0, 0, 0, 87, 88, 89, 90, 36, - 0, 37, 38, 39, 40, 41, 42, 0, 0, 0, - 0, 43, 44, 45, 46, 47, 48, 49, 0, 0, - 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, + 34, 0, 0, 0, 0, 35, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, + 0, 37, 38, 39, 40, 41, 42, 0, 0, -169, + 0, 43, 44, 45, 46, 47, 48, 49, 186, 0, + 187, -169, 0, 0, 0, 50, 0, 0, 0, -169, 0, 0, 0, 0, 0, 0, 0, 51, 52, 53, - 0, 0, 76, 0, 54, 55, 0, 0, 56, 91, + 168, 169, 170, 171, 54, 55, 0, -68, 56, 0, + 0, -169, -169, -169, -169, 0, 0, 0, -169, 0, + -169, 0, 0, -169, 0, 176, 177, 178, 179, 180, + -169, -169, -169, -169, 181, 182, 183, 0, 0, 184, + 0, 0, 0, 0, 0, -169, -169, -169, -203, -169, + -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, + -203, 0, 0, 0, -169, -169, -169, 0, -203, -169, + -169, 0, 0, 0, 0, 0, 0, 0, 0, 168, + 169, 170, 171, 0, 0, 0, 0, 0, 0, 0, + -203, -203, -203, -203, 0, 0, 0, -203, 0, -203, + 0, 0, -203, 0, 0, 177, 178, 179, 180, -203, + -203, -203, -203, 181, 182, 183, 0, 0, 184, 0, + 0, 0, 0, 0, -203, -203, -203, 0, -203, -203, + -203, -203, -203, -203, -203, -203, -203, -203, -203, 0, + 0, 0, 0, -203, -203, -203, 0, 0, -203, -203, 74, 0, 16, 0, 17, 18, 19, 20, 21, 22, - 23, 77, 0, 0, 24, 25, 26, 27, 28, 0, - 29, 30, 31, 32, 33, 34, 78, 96, 79, 80, - 35, 81, 82, 83, 84, 85, 86, 0, 0, 0, - 87, 88, 89, 90, 36, 0, 37, 38, 39, 40, + 23, 0, 0, 0, 129, 25, 26, 27, 28, 107, + 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, + 35, 0, 0, 0, 0, 0, 0, 168, 169, 170, + 171, 0, 0, 0, 36, 0, 37, 38, 39, 40, 41, 42, 0, 0, 0, 0, 43, 44, 45, 46, - 47, 48, 49, 0, 0, 457, 0, 0, 0, 0, - 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 51, 52, 53, 0, 0, 76, 0, 54, - 55, 0, 0, 56, 91, 74, 0, 16, 0, 17, - 18, 19, 20, 21, 22, 23, 77, 0, 0, 24, - 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, - 34, 78, 96, 79, 80, 35, 81, 82, 83, 84, - 85, 86, 0, 0, 0, 87, 88, 89, 90, 36, - 0, 37, 38, 39, 40, 41, 42, 0, 0, 0, - 0, 43, 44, 45, 46, 47, 48, 49, 0, 0, - 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 51, 52, 53, - 0, 0, 76, 0, 54, 55, 0, 0, 56, 91, - 74, 0, 16, 0, 17, 18, 19, 20, 21, 22, - 23, 77, 0, 0, 24, 25, 26, 27, 28, 0, - 29, 30, 31, 32, 33, 34, 78, 0, 79, 80, - 35, 81, 82, 83, 84, 85, 86, 0, 0, 0, - 87, 88, 89, 90, 36, 0, 37, 38, 39, 40, + 47, 48, 49, 0, 178, 179, 180, 0, 0, 0, + 50, 181, 182, 183, 0, 0, 184, 0, 0, 0, + 0, 0, 51, 52, 53, 0, 0, 0, 0, 54, + 55, 0, 74, 56, 16, 0, 17, 18, 19, 20, + 21, 22, 23, 0, 0, 0, 135, 25, 26, 27, + 28, 136, 29, 30, 31, 32, 33, 34, 0, 0, + 0, 0, 35, 0, 0, 0, 0, 0, 0, 168, + -204, 170, 171, 0, 0, 0, 36, 0, 37, 38, + 39, 40, 41, 42, 0, 0, 0, 0, 43, 44, + 45, 46, 47, 48, 49, 0, 0, 179, 180, 0, + 0, 0, 50, 181, 182, 183, 0, 0, 184, 0, + 0, 0, 0, 0, 51, 52, 53, 0, 0, 0, + 0, 54, 55, 0, 74, 56, 16, 0, 17, 18, + 19, 20, 21, 22, 23, 0, 0, 0, 24, 25, + 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, + 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, + 0, 168, 169, 170, 171, 0, 0, 0, 36, 0, + 37, 38, 39, 40, 41, 42, 0, 0, 0, 0, + 43, 44, 45, 46, 47, 48, 49, 0, 0, 179, + 180, 0, 0, 0, 50, 181, 182, 183, 0, 0, + 184, 0, 0, 0, 0, 0, 51, 52, 53, 0, + 0, 0, 0, 54, 55, 0, 0, 56, 16, 102, + 17, 18, 19, 20, 21, 22, 23, 0, 0, 0, + 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, + 33, 34, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 0, 0, 0, 0, 170, 171, 0, 0, 0, + 36, 0, 37, 38, 39, 40, 41, 42, 0, 0, + 0, 0, 43, 44, 45, 46, 47, 48, 49, 0, + 0, 179, 180, 0, 0, 0, 50, 181, 182, 183, + 0, 0, 184, 0, 0, 0, 0, 0, 51, 52, + 53, 0, 0, 0, 0, 54, 55, 0, 16, 56, + 17, 18, 19, 20, 21, 22, 23, 141, 0, 0, + 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, + 33, 34, 0, 0, 0, 0, 35, 211, 212, 213, + 214, 0, 0, 0, 215, 0, 216, 0, 0, 0, + 36, 0, 37, 38, 39, 40, 41, 42, 0, 0, + 0, 0, 43, 44, 45, 46, 47, 48, 49, 0, + 0, 160, 161, 162, 0, 0, 50, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, + 53, 0, 0, 0, 0, 54, 55, 0, 16, 56, + 17, 18, 19, 20, 21, 22, 23, 0, 0, 0, + 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, + 33, 34, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 37, 38, 39, 40, 41, 42, 0, 0, + 0, 0, 43, 44, 45, 46, 47, 48, 49, 0, + 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, + 53, 0, 0, 0, 0, 54, 55, 0, 158, 56, + 16, 0, 17, 18, 19, 20, 21, 22, 23, 0, + 0, 0, 24, 25, 26, 27, 28, 0, 29, 30, + 31, 32, 33, 34, 0, 0, 0, 0, 35, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 36, 0, 37, 38, 39, 40, 41, 42, + 0, 0, 0, 0, 43, 44, 45, 46, 47, 48, + 49, 0, 0, 0, 0, 0, 0, 0, 50, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 51, 52, 53, 0, 0, 0, 0, 54, 55, 0, + 230, 56, 16, 0, 17, 18, 19, 20, 21, 22, + 23, 0, 0, 0, 24, 25, 26, 27, 28, 0, + 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, + 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 36, 0, 37, 38, 39, 40, 41, 42, 0, 0, 0, 0, 43, 44, 45, 46, 47, 48, 49, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 51, 52, 53, 76, 0, 0, 0, 54, - 55, 0, 0, 56, 91, 16, 0, 17, 18, 19, - 20, 21, 22, 23, -68, 0, 0, 24, 25, 26, - 27, 28, 0, 29, 30, 31, 32, 33, 34, 0, - 0, 0, 0, 35, 0, 0, -203, 0, 0, 0, - 0, 0, 0, 168, 169, 170, 171, 36, 0, 37, - 38, 39, 40, 41, 42, 0, 0, 0, 0, 43, - 44, 45, 46, 47, 48, 49, 174, 175, 176, 177, - 178, 179, 180, 50, 0, 0, 0, 181, 182, 183, - 0, 0, 184, 0, 0, 51, 52, 53, 76, 0, - 0, 0, 54, 55, 0, 0, 56, 0, 16, 0, + 0, 0, 51, 52, 53, 0, 0, 0, 0, 54, + 55, 0, 240, 56, 16, 0, 17, 18, 19, 20, + 21, 22, 23, 0, 0, 0, 24, 25, 26, 27, + 28, 0, 29, 30, 31, 32, 33, 34, 0, 0, + 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 36, 0, 37, 38, + 39, 40, 41, 42, 0, 0, 0, 0, 43, 44, + 45, 46, 47, 48, 49, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 51, 52, 53, 0, 0, 0, + 0, 54, 55, 0, 252, 56, 16, 0, 17, 18, + 19, 20, 21, 22, 23, 0, 0, 0, 24, 25, + 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, + 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, + 37, 38, 39, 40, 41, 42, 0, 0, 0, 0, + 43, 44, 45, 46, 47, 48, 49, 0, 0, 0, + 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 51, 52, 53, 0, + 0, 0, 0, 54, 55, 0, 275, 56, 16, 0, 17, 18, 19, 20, 21, 22, 23, 0, 0, 0, 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 37, 38, 39, 40, 41, 42, 0, 0, - -169, 0, 43, 44, 45, 46, 47, 48, 49, 186, - 0, 187, -169, 0, 0, 0, 50, 0, 0, 0, - -169, 0, 0, 0, 0, 0, 0, 0, 51, 52, - 53, 168, 169, 170, 171, 54, 55, 0, -68, 56, - 0, 0, -169, -169, -169, -169, 0, 0, 0, -169, - 0, -169, 0, 0, -169, 0, 176, 177, 178, 179, - 180, -169, -169, -169, -169, 181, 182, 183, 0, 0, - 184, 170, 171, 0, 0, 0, -169, -169, -169, -202, - -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, - -169, -202, 0, 0, 0, -169, -169, -169, 180, -202, - -169, -169, 0, 181, 182, 183, 0, 0, 184, 0, - 168, 169, 170, 171, 0, 0, 0, 0, 0, 0, - 0, -202, -202, -202, -202, 0, 0, 0, -202, 0, - -202, 0, 0, -202, 0, 0, 177, 178, 179, 180, - -202, -202, -202, -202, 181, 182, 183, 0, 0, 184, - 0, 0, 0, 0, 0, -202, -202, -202, 0, -202, - -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, - 0, 0, 0, 0, -202, -202, -202, 0, 0, -202, - -202, 74, 0, 16, 0, 17, 18, 19, 20, 21, - 22, 23, 0, 0, 0, 129, 25, 26, 27, 28, - 107, 29, 30, 31, 32, 33, 34, 0, 0, 0, - 0, 35, 0, 0, 0, 0, 0, 0, 168, 169, - 170, 171, 0, 0, 0, 36, 0, 37, 38, 39, - 40, 41, 42, 0, 0, 0, 0, 43, 44, 45, - 46, 47, 48, 49, 0, 178, 179, 180, 0, 0, - 0, 50, 181, 182, 183, 0, 0, 184, 0, 0, - 0, 0, 0, 51, 52, 53, 0, 0, 0, 0, - 54, 55, 0, 74, 56, 16, 0, 17, 18, 19, - 20, 21, 22, 23, 0, 0, 0, 135, 25, 26, - 27, 28, 136, 29, 30, 31, 32, 33, 34, 0, - 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, - 168, -203, 170, 171, 0, 0, 0, 36, 0, 37, - 38, 39, 40, 41, 42, 0, 0, 0, 0, 43, - 44, 45, 46, 47, 48, 49, 0, 0, 179, 180, - 0, 0, 0, 50, 181, 182, 183, 0, 0, 184, - 0, 0, 0, 0, 0, 51, 52, 53, 0, 0, - 0, 0, 54, 55, 0, 74, 56, 16, 0, 17, - 18, 19, 20, 21, 22, 23, 0, 0, 0, 24, - 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, - 34, 0, 0, 0, 0, 35, 0, 0, 0, 0, - 0, 0, 168, 169, 170, 171, 0, 0, 0, 36, - 0, 37, 38, 39, 40, 41, 42, 0, 0, 0, - 0, 43, 44, 45, 46, 47, 48, 49, 0, 0, - 179, 180, 0, 0, 0, 50, 181, 182, 183, 0, - 0, 184, 0, 0, 0, 0, 0, 51, 52, 53, - 0, 0, 0, 0, 54, 55, 0, 0, 56, 16, - 102, 17, 18, 19, 20, 21, 22, 23, 0, 0, - 0, 24, 25, 26, 27, 28, 0, 29, 30, 31, - 32, 33, 34, 0, 0, 0, 0, 35, 0, 0, - 0, 0, 0, 0, -203, 0, 170, 171, 0, 0, - 0, 36, 0, 37, 38, 39, 40, 41, 42, 0, - 0, 0, 0, 43, 44, 45, 46, 47, 48, 49, - 0, 0, 179, 180, 0, 0, 0, 50, 181, 182, - 183, 0, 0, 184, 0, 0, 0, 0, 0, 51, - 52, 53, 0, 0, 0, 0, 54, 55, 0, 16, - 56, 17, 18, 19, 20, 21, 22, 23, 141, 0, - 0, 24, 25, 26, 27, 28, 0, 29, 30, 31, - 32, 33, 34, 0, 0, 0, 0, 35, 0, 0, - 0, 0, 0, 0, 0, 0, 170, 171, 0, 0, - 0, 36, 0, 37, 38, 39, 40, 41, 42, 0, - 0, 0, 0, 43, 44, 45, 46, 47, 48, 49, - 0, 0, 179, 180, 0, 0, 0, 50, 181, 182, - 183, 0, 0, 184, 0, 0, 0, 0, 0, 51, - 52, 53, 0, 0, 0, 0, 54, 55, 0, 16, - 56, 17, 18, 19, 20, 21, 22, 23, 0, 0, - 0, 24, 25, 26, 27, 28, 0, 29, 30, 31, - 32, 33, 34, 0, 0, 0, 0, 35, 210, 211, - 212, 213, 0, 0, 0, 214, 0, 215, 0, 0, - 0, 36, 0, 37, 38, 39, 40, 41, 42, 0, - 0, 0, 0, 43, 44, 45, 46, 47, 48, 49, - 0, 0, 160, 161, 162, 0, 0, 50, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, - 52, 53, 0, 0, 0, 0, 54, 55, 0, 158, - 56, 16, 0, 17, 18, 19, 20, 21, 22, 23, - 0, 0, 0, 24, 25, 26, 27, 28, 0, 29, - 30, 31, 32, 33, 34, 0, 0, 0, 0, 35, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 36, 0, 37, 38, 39, 40, 41, - 42, 0, 0, 0, 0, 43, 44, 45, 46, 47, - 48, 49, 0, 0, 0, 0, 0, 0, 0, 50, + 0, 0, 43, 44, 45, 46, 47, 48, 49, 0, + 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, + 53, 0, 0, 0, 0, 54, 55, 0, 316, 56, + 16, 0, 17, 18, 19, 20, 21, 22, 23, 0, + 0, 0, 24, 25, 26, 27, 28, 0, 29, 30, + 31, 32, 33, 34, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 51, 52, 53, 0, 0, 0, 0, 54, 55, - 0, 229, 56, 16, 0, 17, 18, 19, 20, 21, - 22, 23, 0, 0, 0, 24, 25, 26, 27, 28, - 0, 29, 30, 31, 32, 33, 34, 0, 0, 0, - 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 36, 0, 37, 38, 39, - 40, 41, 42, 0, 0, 0, 0, 43, 44, 45, - 46, 47, 48, 49, 0, 0, 0, 0, 0, 0, - 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 51, 52, 53, 0, 0, 0, 0, - 54, 55, 0, 239, 56, 16, 0, 17, 18, 19, - 20, 21, 22, 23, 0, 0, 0, 24, 25, 26, - 27, 28, 0, 29, 30, 31, 32, 33, 34, 0, - 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 36, 0, 37, - 38, 39, 40, 41, 42, 0, 0, 0, 0, 43, - 44, 45, 46, 47, 48, 49, 0, 0, 0, 0, - 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 51, 52, 53, 0, 0, - 0, 0, 54, 55, 0, 251, 56, 16, 0, 17, - 18, 19, 20, 21, 22, 23, 0, 0, 0, 24, - 25, 26, 27, 28, 0, 29, 30, 31, 32, 33, - 34, 0, 0, 0, 0, 35, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, - 0, 37, 38, 39, 40, 41, 42, 0, 0, 0, - 0, 43, 44, 45, 46, 47, 48, 49, 0, 0, - 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 51, 52, 53, - 0, 0, 0, 0, 54, 55, 0, 274, 56, 16, - 0, 17, 18, 19, 20, 21, 22, 23, 0, 0, - 0, 24, 25, 26, 27, 28, 0, 29, 30, 31, - 32, 33, 34, 0, 0, 0, 0, 35, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 36, 0, 37, 38, 39, 40, 41, 42, 0, - 0, 0, 0, 43, 44, 45, 46, 47, 48, 49, - 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, - 52, 53, 0, 0, 0, 0, 54, 55, 0, 314, - 56, 16, 0, 17, 18, 19, 20, 21, 22, 23, - 0, 0, 0, 24, 25, 26, 27, 28, 0, 29, - 30, 31, 32, 33, 34, 0, 0, 0, 0, 35, + 0, 0, 36, 0, 37, 38, 39, 40, 41, 42, + 0, 0, 0, 0, 43, 44, 45, 46, 47, 48, + 49, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 36, 0, 37, 38, 39, 40, 41, - 42, 0, 0, 0, 0, 43, 44, 45, 46, 47, - 48, 49, 0, 0, 0, 0, 0, 0, 0, 50, + 51, 52, 53, 0, 0, 0, 0, 54, 55, 0, + 318, 56, 16, 0, 17, 18, 19, 20, 21, 22, + 23, 0, 0, 0, 24, 25, 26, 27, 28, 0, + 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, + 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 36, 0, 37, 38, 39, 40, + 41, 42, 0, 0, 0, 0, 43, 44, 45, 46, + 47, 48, 49, 0, 0, 0, 0, 0, 0, 0, + 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 51, 52, 53, 0, 0, 0, 0, 54, + 55, 0, 331, 56, 16, 0, 17, 18, 19, 20, + 21, 22, 23, 0, 0, 0, 24, 25, 26, 27, + 28, 0, 29, 30, 31, 32, 33, 34, 0, 0, + 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 36, 0, 37, 38, + 39, 40, 41, 42, 0, 0, 0, 0, 43, 44, + 45, 46, 47, 48, 49, 0, 167, 0, 0, 0, + 0, 0, 50, 168, 169, 170, 171, 0, 0, 0, + 0, 0, 0, 0, 51, 52, 53, 0, 0, 0, + 0, 54, 55, 172, 173, 56, 174, 175, 176, 177, + 178, 179, 180, 0, 0, 0, 167, 181, 182, 183, + 0, 0, 184, 168, 169, 170, 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 51, 52, 53, 0, 0, 0, 0, 54, 55, - 0, 316, 56, 16, 0, 17, 18, 19, 20, 21, - 22, 23, 0, 0, 0, 24, 25, 26, 27, 28, - 0, 29, 30, 31, 32, 33, 34, 0, 0, 0, - 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 36, 0, 37, 38, 39, - 40, 41, 42, 0, 0, 0, 0, 43, 44, 45, - 46, 47, 48, 49, 0, 0, 0, 0, 0, 0, - 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 51, 52, 53, 0, 0, 0, 0, - 54, 55, 0, 329, 56, 16, 0, 17, 18, 19, - 20, 21, 22, 23, 0, 0, 0, 24, 25, 26, - 27, 28, 0, 29, 30, 31, 32, 33, 34, 0, - 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 36, 0, 37, - 38, 39, 40, 41, 42, 0, 0, 0, 0, 43, - 44, 45, 46, 47, 48, 49, 0, 167, 0, 0, - 0, 0, 0, 50, 168, 169, 170, 171, 0, 0, - 0, 0, 0, 0, 0, 51, 52, 53, 0, 0, - 0, 0, 54, 55, 0, 173, 56, 174, 175, 176, - 177, 178, 179, 180, 0, 0, 0, 0, 181, 182, - 183, 0, 0, 184 + 0, 0, 0, 0, 173, 0, 174, 175, 176, 177, + 178, 179, 180, 0, 0, 0, 0, 181, 182, 183, + 0, 0, 184 }; #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-399))) + (!!((Yystate) == (-387))) #define yytable_value_is_error(Yytable_value) \ - (!!((Yytable_value) == (-203))) + (!!((Yytable_value) == (-204))) static const yytype_int16 yycheck[] = { - 10, 11, 12, 15, 74, 9, 115, 126, 42, 12, - 408, 9, 16, 11, 15, 11, 50, 293, 293, 388, - 295, 296, 9, 12, 11, 9, 19, 20, 21, 22, - 23, 41, 25, 26, 44, 144, 20, 20, 21, 22, - 23, 45, 25, 26, 46, 76, 77, 78, 20, 42, - 43, 44, 56, 12, 26, 48, 9, 455, 11, 42, - 43, 430, 15, 15, 16, 17, 9, 46, 47, 70, - 101, 24, 12, 76, 77, 78, 0, 20, 80, 23, - 90, 115, 12, 20, 28, 360, 96, 76, 77, 78, - 100, 101, 80, 9, 87, 20, 76, 77, 78, 133, - 96, 102, 221, 12, 102, 9, 12, 11, 102, 12, - 144, 121, 11, 101, 118, 102, 391, 76, 77, 78, - 20, 125, 126, 9, 289, 11, 291, 197, 198, 199, - 200, 201, 202, 126, 204, 205, 76, 77, 78, 76, - 77, 78, 146, 126, 20, 102, 76, 77, 78, 102, - 102, 76, 77, 78, 102, 102, 160, 161, 162, 80, - 164, 165, 166, 438, 440, 9, 102, 76, 77, 78, - 76, 77, 78, 76, 77, 78, 76, 77, 78, 9, - 192, 185, 186, 187, 188, 189, 190, 191, 222, 23, - 102, 184, 102, 76, 77, 78, 48, 207, 20, 308, - 76, 77, 78, 20, 102, 102, 210, 211, 212, 213, - 214, 215, 331, 9, 17, 18, 101, 221, 101, 15, - 390, 102, 392, 20, 294, 395, 396, 23, 232, 32, - 234, 235, 28, 36, 404, 405, 96, 97, 41, 243, - 100, 44, 412, 102, 47, 102, 49, 102, 51, 52, - 53, 54, 55, 20, 424, 26, 101, 10, 428, 76, - 77, 78, 102, 102, 268, 269, 72, 271, 11, 23, - 340, 102, 282, 343, 308, 101, 23, 386, 72, 76, - 77, 78, 452, 453, 288, 289, 290, 291, 10, 293, - 26, 295, 296, 11, 42, 43, 44, 45, 78, 292, - 310, 49, 102, 51, 21, 54, 76, 77, 78, 76, - 77, 78, 61, 62, 63, 64, 23, 15, 322, 76, - 77, 78, 101, 26, 76, 77, 78, 331, 76, 77, - 78, 101, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 23, 10, 101, 10, 95, 96, 97, 101, - 10, 100, 386, 101, 10, 10, 360, 76, 77, 78, - 163, 101, 101, 101, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 76, - 77, 78, 101, 76, 77, 78, 54, 391, 101, 393, - 402, 401, 102, 61, 62, 63, 64, 101, 76, 77, - 78, 95, 96, 97, 101, 20, 100, 10, 101, 419, - 101, 423, 101, 81, 82, 101, 84, 85, 86, 87, - 88, 89, 90, 101, 20, 9, 436, 95, 96, 97, - 101, 74, 100, 20, 438, 101, 0, 1, 450, 20, - 102, 73, 22, 101, 454, 9, 12, 11, 101, 13, - 14, 15, 16, 17, 18, 19, 20, 96, 393, 23, - 24, 25, 26, 27, 440, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 194, 35, 63, 49, 50, 51, 52, 53, - 384, 55, 56, 57, 58, 59, 60, 48, 48, 342, - -1, 65, 66, 67, 68, 69, 70, 71, -1, -1, - -1, 90, -1, -1, -1, 79, 95, 96, 97, -1, - -1, 100, -1, 326, -1, -1, -1, 91, 92, 93, - -1, 0, 1, -1, 98, 99, -1, -1, 102, 103, - 9, -1, 11, -1, 13, 14, 15, 16, 17, 18, - 19, 20, -1, -1, 23, 24, 25, 26, 27, -1, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, -1, -1, -1, - 49, 50, 51, 52, 53, -1, 55, 56, 57, 58, - 59, 60, 410, -1, -1, -1, 65, 66, 67, 68, - 69, 70, 71, 421, 422, -1, -1, -1, -1, 90, - 79, -1, -1, 431, 95, 96, 97, -1, -1, 100, - -1, 439, 91, 92, 93, -1, -1, 1, -1, 98, - 99, -1, -1, 102, 103, 9, 10, 11, -1, 13, - 14, 15, 16, 17, 18, 19, 20, -1, -1, 23, - 24, 25, 26, 27, -1, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, -1, -1, -1, 49, 50, 51, 52, 53, - -1, 55, 56, 57, 58, 59, 60, -1, -1, -1, - -1, 65, 66, 67, 68, 69, 70, 71, 3, 4, - 5, 6, 7, 8, -1, 79, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 91, 92, 93, - -1, -1, 1, -1, 98, 99, -1, -1, 102, 103, - 9, 10, 11, -1, 13, 14, 15, 16, 17, 18, - 19, 20, -1, -1, 23, 24, 25, 26, 27, -1, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, -1, -1, -1, - 49, 50, 51, 52, 53, -1, 55, 56, 57, 58, - 59, 60, -1, -1, -1, -1, 65, 66, 67, 68, - 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, - 79, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 91, 92, 93, -1, -1, 1, -1, 98, - 99, -1, -1, 102, 103, 9, 10, 11, -1, 13, - 14, 15, 16, 17, 18, 19, 20, -1, -1, 23, + 10, 11, 12, 15, 42, 295, 295, 11, 297, 298, + 9, 115, 50, 126, 9, 0, 11, 16, 12, 9, + 15, 11, 9, 15, 11, 411, 391, 20, 9, 24, + 11, 41, 46, 26, 44, 19, 20, 21, 22, 23, + 144, 25, 26, 9, 74, 9, 45, 23, 20, 21, + 22, 23, 28, 25, 26, 80, 20, 56, 42, 43, + 44, 15, 16, 17, 48, 9, 80, 11, 433, 11, + 42, 43, 458, 12, 363, 102, 101, 115, 70, 12, + 90, 102, 76, 77, 78, 12, 96, 46, 47, 9, + 100, 101, 96, 102, 12, 133, 102, 80, 17, 18, + 20, 102, 9, 87, 9, 394, 144, 102, 15, 222, + 102, 121, 102, 32, 12, 102, 23, 36, 12, 118, + 23, 28, 41, 102, 102, 44, 125, 126, 47, 102, + 49, 12, 51, 52, 53, 54, 55, 76, 77, 78, + 102, 102, 126, 76, 77, 78, 20, 146, 102, 76, + 77, 78, 441, 443, 126, 76, 77, 78, 76, 77, + 78, 160, 161, 162, 12, 164, 165, 166, 198, 199, + 200, 201, 202, 203, 102, 205, 206, 48, 76, 77, + 78, 193, 76, 77, 78, 223, 185, 186, 187, 188, + 189, 190, 191, 192, 20, 76, 77, 78, 208, 9, + 184, 11, 76, 77, 78, 102, 310, 20, 76, 77, + 78, 20, 211, 212, 213, 214, 215, 216, 102, 20, + 333, 101, 20, 222, 291, 20, 293, 26, 76, 77, + 78, 20, 101, 101, 233, 102, 235, 236, 3, 4, + 5, 6, 7, 8, 163, 244, 102, 10, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 76, 77, 78, 296, 76, 77, 78, + 269, 270, 310, 272, 284, 76, 77, 78, 76, 77, + 78, 76, 77, 78, 72, 389, 11, 76, 77, 78, + 23, 290, 291, 292, 293, 23, 295, 102, 297, 298, + 72, 101, 312, 413, 63, 64, 393, 10, 395, 26, + 294, 398, 399, 343, 424, 425, 346, 95, 96, 97, + 407, 408, 100, 78, 434, 324, 11, 61, 415, 63, + 64, 90, 442, 102, 333, 21, 95, 96, 97, 23, + 427, 100, 15, 101, 431, 42, 43, 44, 45, 26, + 63, 389, 49, 10, 51, 89, 90, 10, 10, 10, + 10, 95, 96, 97, 363, 23, 100, 102, 455, 456, + 101, 76, 77, 78, 96, 97, 20, 90, 100, 76, + 77, 78, 95, 96, 97, 101, 101, 100, 76, 77, + 78, 54, 101, 405, 404, 394, 101, 396, 61, 62, + 63, 64, 101, 101, 101, 76, 77, 78, 101, 328, + 10, 101, 422, 101, 426, 76, 77, 78, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 20, 439, + 101, 9, 95, 96, 97, 0, 1, 100, 74, 101, + 101, 453, 441, 102, 9, 20, 11, 457, 13, 14, + 15, 16, 17, 18, 19, 20, 101, 20, 23, 24, + 25, 26, 27, 22, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 101, 73, 101, 49, 50, 51, 52, 53, 12, + 55, 56, 57, 58, 59, 60, 76, 77, 78, 96, + 65, 66, 67, 68, 69, 70, 71, 76, 77, 78, + 76, 77, 78, 90, 79, 76, 77, 78, 95, 96, + 97, 101, 35, 100, 396, 195, 91, 92, 93, 443, + 0, 1, 101, 98, 99, 101, 387, 102, 103, 9, + 101, 11, 345, 13, 14, 15, 16, 17, 18, 19, + 20, 48, 48, 23, 24, 25, 26, 27, -1, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, -1, -1, -1, 49, + 50, 51, 52, 53, -1, 55, 56, 57, 58, 59, + 60, -1, -1, -1, -1, 65, 66, 67, 68, 69, + 70, 71, -1, -1, -1, -1, -1, -1, -1, 79, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 91, 92, 93, -1, -1, 1, -1, 98, 99, + -1, -1, 102, 103, 9, 10, 11, -1, 13, 14, + 15, 16, 17, 18, 19, 20, -1, -1, 23, 24, + 25, 26, 27, -1, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, -1, -1, -1, 49, 50, 51, 52, 53, -1, + 55, 56, 57, 58, 59, 60, -1, -1, -1, -1, + 65, 66, 67, 68, 69, 70, 71, -1, -1, -1, + -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 91, 92, 93, -1, + -1, 1, -1, 98, 99, -1, -1, 102, 103, 9, + 10, 11, -1, 13, 14, 15, 16, 17, 18, 19, + 20, -1, -1, 23, 24, 25, 26, 27, -1, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, -1, -1, -1, 49, + 50, 51, 52, 53, -1, 55, 56, 57, 58, 59, + 60, -1, -1, -1, -1, 65, 66, 67, 68, 69, + 70, 71, -1, -1, -1, -1, -1, -1, -1, 79, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 91, 92, 93, -1, -1, 1, -1, 98, 99, + -1, -1, 102, 103, 9, 10, 11, -1, 13, 14, + 15, 16, 17, 18, 19, 20, -1, -1, 23, 24, + 25, 26, 27, -1, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, -1, -1, -1, 49, 50, 51, 52, 53, -1, + 55, 56, 57, 58, 59, 60, -1, -1, -1, -1, + 65, 66, 67, 68, 69, 70, 71, -1, -1, -1, + -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 91, 92, 93, -1, + -1, 1, -1, 98, 99, -1, -1, 102, 103, 9, + -1, 11, -1, 13, 14, 15, 16, 17, 18, 19, + 20, -1, -1, 23, 24, 25, 26, 27, -1, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, -1, -1, -1, 49, + 50, 51, 52, 53, -1, 55, 56, 57, 58, 59, + 60, -1, -1, -1, -1, 65, 66, 67, 68, 69, + 70, 71, -1, -1, 74, -1, -1, -1, -1, 79, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 91, 92, 93, -1, -1, 1, -1, 98, 99, + -1, -1, 102, 103, 9, -1, 11, -1, 13, 14, + 15, 16, 17, 18, 19, 20, -1, -1, 23, 24, + 25, 26, 27, -1, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, -1, -1, -1, 49, 50, 51, 52, 53, -1, + 55, 56, 57, 58, 59, 60, -1, -1, -1, -1, + 65, 66, 67, 68, 69, 70, 71, -1, -1, -1, + -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 91, 92, 93, -1, + -1, 1, -1, 98, 99, -1, -1, 102, 103, 9, + -1, 11, -1, 13, 14, 15, 16, 17, 18, 19, + 20, -1, -1, 23, 24, 25, 26, 27, -1, 29, + 30, 31, 32, 33, 34, 35, -1, 37, 38, 39, + 40, 41, 42, 43, 44, 45, -1, -1, -1, 49, + 50, 51, 52, 53, -1, 55, 56, 57, 58, 59, + 60, -1, -1, -1, -1, 65, 66, 67, 68, 69, + 70, 71, -1, -1, -1, -1, -1, -1, -1, 79, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 91, 92, 93, 1, -1, -1, -1, 98, 99, + -1, -1, 102, 103, 11, -1, 13, 14, 15, 16, + 17, 18, 19, 20, -1, -1, 23, 24, 25, 26, + 27, -1, 29, 30, 31, 32, 33, 34, -1, -1, + -1, -1, 39, -1, -1, 54, -1, -1, -1, -1, + -1, -1, 61, 62, 63, 64, 53, -1, 55, 56, + 57, 58, 59, 60, -1, -1, -1, -1, 65, 66, + 67, 68, 69, 70, 71, 84, 85, 86, 87, 88, + 89, 90, 79, -1, -1, -1, 95, 96, 97, -1, + -1, 100, -1, -1, 91, 92, 93, 1, -1, -1, + -1, 98, 99, -1, -1, 102, -1, 11, -1, 13, + 14, 15, 16, 17, 18, 19, -1, -1, -1, 23, 24, 25, 26, 27, -1, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, -1, -1, -1, 49, 50, 51, 52, 53, - -1, 55, 56, 57, 58, 59, 60, -1, -1, -1, - -1, 65, 66, 67, 68, 69, 70, 71, -1, -1, - -1, -1, -1, -1, -1, 79, -1, -1, -1, -1, + 34, -1, -1, -1, -1, 39, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 53, + -1, 55, 56, 57, 58, 59, 60, -1, -1, 0, + -1, 65, 66, 67, 68, 69, 70, 71, 9, -1, + 11, 12, -1, -1, -1, 79, -1, -1, -1, 20, -1, -1, -1, -1, -1, -1, -1, 91, 92, 93, - -1, -1, 1, -1, 98, 99, -1, -1, 102, 103, + 61, 62, 63, 64, 98, 99, -1, 101, 102, -1, + -1, 42, 43, 44, 45, -1, -1, -1, 49, -1, + 51, -1, -1, 54, -1, 86, 87, 88, 89, 90, + 61, 62, 63, 64, 95, 96, 97, -1, -1, 100, + -1, -1, -1, -1, -1, 76, 77, 78, 0, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 12, -1, -1, -1, 95, 96, 97, -1, 20, 100, + 101, -1, -1, -1, -1, -1, -1, -1, -1, 61, + 62, 63, 64, -1, -1, -1, -1, -1, -1, -1, + 42, 43, 44, 45, -1, -1, -1, 49, -1, 51, + -1, -1, 54, -1, -1, 87, 88, 89, 90, 61, + 62, 63, 64, 95, 96, 97, -1, -1, 100, -1, + -1, -1, -1, -1, 76, 77, 78, -1, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, -1, + -1, -1, -1, 95, 96, 97, -1, -1, 100, 101, 9, -1, 11, -1, 13, 14, 15, 16, 17, 18, - 19, 20, -1, -1, 23, 24, 25, 26, 27, -1, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, -1, -1, -1, - 49, 50, 51, 52, 53, -1, 55, 56, 57, 58, + 19, -1, -1, -1, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, + 39, -1, -1, -1, -1, -1, -1, 61, 62, 63, + 64, -1, -1, -1, 53, -1, 55, 56, 57, 58, 59, 60, -1, -1, -1, -1, 65, 66, 67, 68, - 69, 70, 71, -1, -1, 74, -1, -1, -1, -1, - 79, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 91, 92, 93, -1, -1, 1, -1, 98, - 99, -1, -1, 102, 103, 9, -1, 11, -1, 13, - 14, 15, 16, 17, 18, 19, 20, -1, -1, 23, - 24, 25, 26, 27, -1, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, -1, -1, -1, 49, 50, 51, 52, 53, - -1, 55, 56, 57, 58, 59, 60, -1, -1, -1, - -1, 65, 66, 67, 68, 69, 70, 71, -1, -1, - -1, -1, -1, -1, -1, 79, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 91, 92, 93, - -1, -1, 1, -1, 98, 99, -1, -1, 102, 103, - 9, -1, 11, -1, 13, 14, 15, 16, 17, 18, - 19, 20, -1, -1, 23, 24, 25, 26, 27, -1, - 29, 30, 31, 32, 33, 34, 35, -1, 37, 38, - 39, 40, 41, 42, 43, 44, 45, -1, -1, -1, - 49, 50, 51, 52, 53, -1, 55, 56, 57, 58, + 69, 70, 71, -1, 88, 89, 90, -1, -1, -1, + 79, 95, 96, 97, -1, -1, 100, -1, -1, -1, + -1, -1, 91, 92, 93, -1, -1, -1, -1, 98, + 99, -1, 9, 102, 11, -1, 13, 14, 15, 16, + 17, 18, 19, -1, -1, -1, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, -1, -1, + -1, -1, 39, -1, -1, -1, -1, -1, -1, 61, + 62, 63, 64, -1, -1, -1, 53, -1, 55, 56, + 57, 58, 59, 60, -1, -1, -1, -1, 65, 66, + 67, 68, 69, 70, 71, -1, -1, 89, 90, -1, + -1, -1, 79, 95, 96, 97, -1, -1, 100, -1, + -1, -1, -1, -1, 91, 92, 93, -1, -1, -1, + -1, 98, 99, -1, 9, 102, 11, -1, 13, 14, + 15, 16, 17, 18, 19, -1, -1, -1, 23, 24, + 25, 26, 27, -1, 29, 30, 31, 32, 33, 34, + -1, -1, -1, -1, 39, -1, -1, -1, -1, -1, + -1, 61, 62, 63, 64, -1, -1, -1, 53, -1, + 55, 56, 57, 58, 59, 60, -1, -1, -1, -1, + 65, 66, 67, 68, 69, 70, 71, -1, -1, 89, + 90, -1, -1, -1, 79, 95, 96, 97, -1, -1, + 100, -1, -1, -1, -1, -1, 91, 92, 93, -1, + -1, -1, -1, 98, 99, -1, -1, 102, 11, 12, + 13, 14, 15, 16, 17, 18, 19, -1, -1, -1, + 23, 24, 25, 26, 27, -1, 29, 30, 31, 32, + 33, 34, -1, -1, -1, -1, 39, -1, -1, -1, + -1, -1, -1, -1, -1, 63, 64, -1, -1, -1, + 53, -1, 55, 56, 57, 58, 59, 60, -1, -1, + -1, -1, 65, 66, 67, 68, 69, 70, 71, -1, + -1, 89, 90, -1, -1, -1, 79, 95, 96, 97, + -1, -1, 100, -1, -1, -1, -1, -1, 91, 92, + 93, -1, -1, -1, -1, 98, 99, -1, 11, 102, + 13, 14, 15, 16, 17, 18, 19, 20, -1, -1, + 23, 24, 25, 26, 27, -1, 29, 30, 31, 32, + 33, 34, -1, -1, -1, -1, 39, 42, 43, 44, + 45, -1, -1, -1, 49, -1, 51, -1, -1, -1, + 53, -1, 55, 56, 57, 58, 59, 60, -1, -1, + -1, -1, 65, 66, 67, 68, 69, 70, 71, -1, + -1, 76, 77, 78, -1, -1, 79, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 91, 92, + 93, -1, -1, -1, -1, 98, 99, -1, 11, 102, + 13, 14, 15, 16, 17, 18, 19, -1, -1, -1, + 23, 24, 25, 26, 27, -1, 29, 30, 31, 32, + 33, 34, -1, -1, -1, -1, 39, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 53, -1, 55, 56, 57, 58, 59, 60, -1, -1, + -1, -1, 65, 66, 67, 68, 69, 70, 71, -1, + -1, -1, -1, -1, -1, -1, 79, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 91, 92, + 93, -1, -1, -1, -1, 98, 99, -1, 101, 102, + 11, -1, 13, 14, 15, 16, 17, 18, 19, -1, + -1, -1, 23, 24, 25, 26, 27, -1, 29, 30, + 31, 32, 33, 34, -1, -1, -1, -1, 39, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 53, -1, 55, 56, 57, 58, 59, 60, + -1, -1, -1, -1, 65, 66, 67, 68, 69, 70, + 71, -1, -1, -1, -1, -1, -1, -1, 79, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 91, 92, 93, -1, -1, -1, -1, 98, 99, -1, + 101, 102, 11, -1, 13, 14, 15, 16, 17, 18, + 19, -1, -1, -1, 23, 24, 25, 26, 27, -1, + 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, + 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 53, -1, 55, 56, 57, 58, 59, 60, -1, -1, -1, -1, 65, 66, 67, 68, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 91, 92, 93, 1, -1, -1, -1, 98, - 99, -1, -1, 102, 103, 11, -1, 13, 14, 15, - 16, 17, 18, 19, 20, -1, -1, 23, 24, 25, - 26, 27, -1, 29, 30, 31, 32, 33, 34, -1, - -1, -1, -1, 39, -1, -1, 54, -1, -1, -1, - -1, -1, -1, 61, 62, 63, 64, 53, -1, 55, - 56, 57, 58, 59, 60, -1, -1, -1, -1, 65, - 66, 67, 68, 69, 70, 71, 84, 85, 86, 87, - 88, 89, 90, 79, -1, -1, -1, 95, 96, 97, - -1, -1, 100, -1, -1, 91, 92, 93, 1, -1, - -1, -1, 98, 99, -1, -1, 102, -1, 11, -1, + -1, -1, 91, 92, 93, -1, -1, -1, -1, 98, + 99, -1, 101, 102, 11, -1, 13, 14, 15, 16, + 17, 18, 19, -1, -1, -1, 23, 24, 25, 26, + 27, -1, 29, 30, 31, 32, 33, 34, -1, -1, + -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 53, -1, 55, 56, + 57, 58, 59, 60, -1, -1, -1, -1, 65, 66, + 67, 68, 69, 70, 71, -1, -1, -1, -1, -1, + -1, -1, 79, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 91, 92, 93, -1, -1, -1, + -1, 98, 99, -1, 101, 102, 11, -1, 13, 14, + 15, 16, 17, 18, 19, -1, -1, -1, 23, 24, + 25, 26, 27, -1, 29, 30, 31, 32, 33, 34, + -1, -1, -1, -1, 39, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 53, -1, + 55, 56, 57, 58, 59, 60, -1, -1, -1, -1, + 65, 66, 67, 68, 69, 70, 71, -1, -1, -1, + -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 91, 92, 93, -1, + -1, -1, -1, 98, 99, -1, 101, 102, 11, -1, 13, 14, 15, 16, 17, 18, 19, -1, -1, -1, 23, 24, 25, 26, 27, -1, 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 53, -1, 55, 56, 57, 58, 59, 60, -1, -1, - 0, -1, 65, 66, 67, 68, 69, 70, 71, 9, - -1, 11, 12, -1, -1, -1, 79, -1, -1, -1, - 20, -1, -1, -1, -1, -1, -1, -1, 91, 92, - 93, 61, 62, 63, 64, 98, 99, -1, 101, 102, - -1, -1, 42, 43, 44, 45, -1, -1, -1, 49, - -1, 51, -1, -1, 54, -1, 86, 87, 88, 89, - 90, 61, 62, 63, 64, 95, 96, 97, -1, -1, - 100, 63, 64, -1, -1, -1, 76, 77, 78, 0, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 12, -1, -1, -1, 95, 96, 97, 90, 20, - 100, 101, -1, 95, 96, 97, -1, -1, 100, -1, - 61, 62, 63, 64, -1, -1, -1, -1, -1, -1, - -1, 42, 43, 44, 45, -1, -1, -1, 49, -1, - 51, -1, -1, 54, -1, -1, 87, 88, 89, 90, - 61, 62, 63, 64, 95, 96, 97, -1, -1, 100, - -1, -1, -1, -1, -1, 76, 77, 78, -1, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - -1, -1, -1, -1, 95, 96, 97, -1, -1, 100, - 101, 9, -1, 11, -1, 13, 14, 15, 16, 17, - 18, 19, -1, -1, -1, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, -1, -1, -1, - -1, 39, -1, -1, -1, -1, -1, -1, 61, 62, - 63, 64, -1, -1, -1, 53, -1, 55, 56, 57, - 58, 59, 60, -1, -1, -1, -1, 65, 66, 67, - 68, 69, 70, 71, -1, 88, 89, 90, -1, -1, - -1, 79, 95, 96, 97, -1, -1, 100, -1, -1, - -1, -1, -1, 91, 92, 93, -1, -1, -1, -1, - 98, 99, -1, 9, 102, 11, -1, 13, 14, 15, - 16, 17, 18, 19, -1, -1, -1, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, - -1, -1, -1, 39, -1, -1, -1, -1, -1, -1, - 61, 62, 63, 64, -1, -1, -1, 53, -1, 55, - 56, 57, 58, 59, 60, -1, -1, -1, -1, 65, - 66, 67, 68, 69, 70, 71, -1, -1, 89, 90, - -1, -1, -1, 79, 95, 96, 97, -1, -1, 100, - -1, -1, -1, -1, -1, 91, 92, 93, -1, -1, - -1, -1, 98, 99, -1, 9, 102, 11, -1, 13, - 14, 15, 16, 17, 18, 19, -1, -1, -1, 23, - 24, 25, 26, 27, -1, 29, 30, 31, 32, 33, - 34, -1, -1, -1, -1, 39, -1, -1, -1, -1, - -1, -1, 61, 62, 63, 64, -1, -1, -1, 53, - -1, 55, 56, 57, 58, 59, 60, -1, -1, -1, - -1, 65, 66, 67, 68, 69, 70, 71, -1, -1, - 89, 90, -1, -1, -1, 79, 95, 96, 97, -1, - -1, 100, -1, -1, -1, -1, -1, 91, 92, 93, - -1, -1, -1, -1, 98, 99, -1, -1, 102, 11, - 12, 13, 14, 15, 16, 17, 18, 19, -1, -1, - -1, 23, 24, 25, 26, 27, -1, 29, 30, 31, - 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, - -1, -1, -1, -1, 61, -1, 63, 64, -1, -1, - -1, 53, -1, 55, 56, 57, 58, 59, 60, -1, - -1, -1, -1, 65, 66, 67, 68, 69, 70, 71, - -1, -1, 89, 90, -1, -1, -1, 79, 95, 96, - 97, -1, -1, 100, -1, -1, -1, -1, -1, 91, - 92, 93, -1, -1, -1, -1, 98, 99, -1, 11, - 102, 13, 14, 15, 16, 17, 18, 19, 20, -1, - -1, 23, 24, 25, 26, 27, -1, 29, 30, 31, - 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, - -1, -1, -1, -1, -1, -1, 63, 64, -1, -1, - -1, 53, -1, 55, 56, 57, 58, 59, 60, -1, - -1, -1, -1, 65, 66, 67, 68, 69, 70, 71, - -1, -1, 89, 90, -1, -1, -1, 79, 95, 96, - 97, -1, -1, 100, -1, -1, -1, -1, -1, 91, - 92, 93, -1, -1, -1, -1, 98, 99, -1, 11, - 102, 13, 14, 15, 16, 17, 18, 19, -1, -1, - -1, 23, 24, 25, 26, 27, -1, 29, 30, 31, - 32, 33, 34, -1, -1, -1, -1, 39, 42, 43, - 44, 45, -1, -1, -1, 49, -1, 51, -1, -1, - -1, 53, -1, 55, 56, 57, 58, 59, 60, -1, - -1, -1, -1, 65, 66, 67, 68, 69, 70, 71, - -1, -1, 76, 77, 78, -1, -1, 79, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 91, - 92, 93, -1, -1, -1, -1, 98, 99, -1, 101, - 102, 11, -1, 13, 14, 15, 16, 17, 18, 19, - -1, -1, -1, 23, 24, 25, 26, 27, -1, 29, - 30, 31, 32, 33, 34, -1, -1, -1, -1, 39, + -1, -1, 65, 66, 67, 68, 69, 70, 71, -1, + -1, -1, -1, -1, -1, -1, 79, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 91, 92, + 93, -1, -1, -1, -1, 98, 99, -1, 101, 102, + 11, -1, 13, 14, 15, 16, 17, 18, 19, -1, + -1, -1, 23, 24, 25, 26, 27, -1, 29, 30, + 31, 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 53, -1, 55, 56, 57, 58, 59, - 60, -1, -1, -1, -1, 65, 66, 67, 68, 69, - 70, 71, -1, -1, -1, -1, -1, -1, -1, 79, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 91, 92, 93, -1, -1, -1, -1, 98, 99, - -1, 101, 102, 11, -1, 13, 14, 15, 16, 17, - 18, 19, -1, -1, -1, 23, 24, 25, 26, 27, - -1, 29, 30, 31, 32, 33, 34, -1, -1, -1, - -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 53, -1, 55, 56, 57, - 58, 59, 60, -1, -1, -1, -1, 65, 66, 67, - 68, 69, 70, 71, -1, -1, -1, -1, -1, -1, - -1, 79, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 91, 92, 93, -1, -1, -1, -1, - 98, 99, -1, 101, 102, 11, -1, 13, 14, 15, - 16, 17, 18, 19, -1, -1, -1, 23, 24, 25, - 26, 27, -1, 29, 30, 31, 32, 33, 34, -1, - -1, -1, -1, 39, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 53, -1, 55, - 56, 57, 58, 59, 60, -1, -1, -1, -1, 65, - 66, 67, 68, 69, 70, 71, -1, -1, -1, -1, - -1, -1, -1, 79, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 91, 92, 93, -1, -1, - -1, -1, 98, 99, -1, 101, 102, 11, -1, 13, - 14, 15, 16, 17, 18, 19, -1, -1, -1, 23, - 24, 25, 26, 27, -1, 29, 30, 31, 32, 33, - 34, -1, -1, -1, -1, 39, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 53, - -1, 55, 56, 57, 58, 59, 60, -1, -1, -1, - -1, 65, 66, 67, 68, 69, 70, 71, -1, -1, - -1, -1, -1, -1, -1, 79, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 91, 92, 93, - -1, -1, -1, -1, 98, 99, -1, 101, 102, 11, - -1, 13, 14, 15, 16, 17, 18, 19, -1, -1, - -1, 23, 24, 25, 26, 27, -1, 29, 30, 31, - 32, 33, 34, -1, -1, -1, -1, 39, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 53, -1, 55, 56, 57, 58, 59, 60, -1, - -1, -1, -1, 65, 66, 67, 68, 69, 70, 71, - -1, -1, -1, -1, -1, -1, -1, 79, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 91, - 92, 93, -1, -1, -1, -1, 98, 99, -1, 101, - 102, 11, -1, 13, 14, 15, 16, 17, 18, 19, - -1, -1, -1, 23, 24, 25, 26, 27, -1, 29, - 30, 31, 32, 33, 34, -1, -1, -1, -1, 39, + -1, -1, 53, -1, 55, 56, 57, 58, 59, 60, + -1, -1, -1, -1, 65, 66, 67, 68, 69, 70, + 71, -1, -1, -1, -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 53, -1, 55, 56, 57, 58, 59, - 60, -1, -1, -1, -1, 65, 66, 67, 68, 69, - 70, 71, -1, -1, -1, -1, -1, -1, -1, 79, + 91, 92, 93, -1, -1, -1, -1, 98, 99, -1, + 101, 102, 11, -1, 13, 14, 15, 16, 17, 18, + 19, -1, -1, -1, 23, 24, 25, 26, 27, -1, + 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, + 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 53, -1, 55, 56, 57, 58, + 59, 60, -1, -1, -1, -1, 65, 66, 67, 68, + 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, + 79, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 91, 92, 93, -1, -1, -1, -1, 98, + 99, -1, 101, 102, 11, -1, 13, 14, 15, 16, + 17, 18, 19, -1, -1, -1, 23, 24, 25, 26, + 27, -1, 29, 30, 31, 32, 33, 34, -1, -1, + -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 53, -1, 55, 56, + 57, 58, 59, 60, -1, -1, -1, -1, 65, 66, + 67, 68, 69, 70, 71, -1, 54, -1, -1, -1, + -1, -1, 79, 61, 62, 63, 64, -1, -1, -1, + -1, -1, -1, -1, 91, 92, 93, -1, -1, -1, + -1, 98, 99, 81, 82, 102, 84, 85, 86, 87, + 88, 89, 90, -1, -1, -1, 54, 95, 96, 97, + -1, -1, 100, 61, 62, 63, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 91, 92, 93, -1, -1, -1, -1, 98, 99, - -1, 101, 102, 11, -1, 13, 14, 15, 16, 17, - 18, 19, -1, -1, -1, 23, 24, 25, 26, 27, - -1, 29, 30, 31, 32, 33, 34, -1, -1, -1, - -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 53, -1, 55, 56, 57, - 58, 59, 60, -1, -1, -1, -1, 65, 66, 67, - 68, 69, 70, 71, -1, -1, -1, -1, -1, -1, - -1, 79, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 91, 92, 93, -1, -1, -1, -1, - 98, 99, -1, 101, 102, 11, -1, 13, 14, 15, - 16, 17, 18, 19, -1, -1, -1, 23, 24, 25, - 26, 27, -1, 29, 30, 31, 32, 33, 34, -1, - -1, -1, -1, 39, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 53, -1, 55, - 56, 57, 58, 59, 60, -1, -1, -1, -1, 65, - 66, 67, 68, 69, 70, 71, -1, 54, -1, -1, - -1, -1, -1, 79, 61, 62, 63, 64, -1, -1, - -1, -1, -1, -1, -1, 91, 92, 93, -1, -1, - -1, -1, 98, 99, -1, 82, 102, 84, 85, 86, - 87, 88, 89, 90, -1, -1, -1, -1, 95, 96, - 97, -1, -1, 100 + -1, -1, -1, -1, 82, -1, 84, 85, 86, 87, + 88, 89, 90, -1, -1, -1, -1, 95, 96, 97, + -1, -1, 100 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1053,33 +1063,34 @@ static const yytype_uint8 yystos[] = 76, 77, 78, 80, 9, 11, 102, 54, 61, 62, 63, 64, 81, 82, 84, 85, 86, 87, 88, 89, 90, 95, 96, 97, 100, 102, 9, 11, 9, 11, - 9, 9, 114, 140, 141, 23, 138, 102, 102, 102, - 102, 70, 102, 164, 102, 102, 112, 48, 129, 20, - 42, 43, 44, 45, 49, 51, 120, 121, 119, 12, - 160, 102, 102, 146, 101, 112, 26, 142, 101, 101, - 146, 161, 169, 147, 102, 102, 10, 20, 160, 101, - 146, 72, 144, 11, 101, 146, 146, 146, 156, 146, - 146, 101, 146, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 9, 11, - 24, 102, 150, 164, 101, 146, 146, 146, 146, 146, - 146, 146, 117, 23, 137, 138, 23, 123, 114, 114, - 114, 114, 114, 114, 102, 114, 114, 112, 146, 133, - 146, 146, 146, 146, 146, 161, 147, 12, 149, 72, - 143, 101, 101, 146, 101, 146, 101, 146, 10, 101, - 26, 146, 11, 20, 12, 101, 83, 146, 146, 101, - 146, 102, 101, 20, 12, 20, 12, 20, 20, 10, - 21, 113, 122, 9, 20, 23, 132, 146, 133, 134, - 146, 133, 136, 162, 164, 127, 131, 134, 135, 146, - 114, 134, 134, 101, 101, 160, 26, 112, 101, 101, - 101, 12, 146, 10, 156, 20, 12, 101, 161, 10, - 10, 10, 10, 114, 142, 114, 23, 101, 101, 101, - 101, 102, 101, 20, 134, 101, 101, 12, 10, 101, - 20, 143, 124, 160, 130, 130, 9, 115, 115, 134, - 115, 132, 101, 115, 115, 74, 20, 112, 145, 117, - 20, 115, 115, 116, 46, 47, 128, 128, 101, 129, - 20, 115, 118, 10, 129, 129, 117, 115, 102, 115, - 130, 129, 20, 26, 125, 10, 134, 129, 135, 22, - 73, 126, 101, 101, 117, 115, 115, 74, 128 + 9, 11, 9, 114, 140, 141, 23, 138, 102, 102, + 102, 102, 70, 102, 164, 102, 102, 112, 48, 129, + 20, 42, 43, 44, 45, 49, 51, 120, 121, 119, + 12, 160, 102, 102, 146, 101, 112, 26, 142, 101, + 101, 146, 161, 169, 147, 102, 102, 10, 20, 160, + 101, 146, 72, 144, 11, 101, 146, 146, 146, 156, + 146, 146, 101, 146, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 9, + 11, 24, 102, 150, 164, 101, 146, 146, 146, 146, + 146, 146, 146, 146, 117, 23, 137, 138, 23, 123, + 114, 114, 114, 114, 114, 114, 102, 114, 114, 112, + 146, 133, 146, 146, 146, 146, 146, 161, 147, 12, + 149, 72, 143, 101, 101, 146, 101, 146, 101, 146, + 10, 101, 26, 146, 11, 20, 12, 101, 83, 146, + 146, 101, 146, 102, 101, 20, 12, 20, 12, 20, + 12, 20, 10, 21, 113, 122, 9, 20, 23, 132, + 146, 133, 134, 146, 133, 136, 162, 164, 127, 131, + 134, 135, 146, 114, 134, 134, 101, 101, 160, 26, + 112, 101, 101, 101, 12, 146, 10, 156, 20, 12, + 101, 161, 10, 10, 10, 10, 114, 142, 114, 23, + 101, 101, 101, 101, 102, 101, 20, 134, 101, 101, + 12, 10, 101, 20, 143, 124, 160, 130, 130, 9, + 115, 115, 134, 115, 132, 101, 115, 115, 74, 20, + 112, 145, 117, 20, 115, 115, 116, 46, 47, 128, + 128, 101, 129, 20, 115, 118, 10, 129, 129, 117, + 115, 102, 115, 130, 129, 20, 26, 125, 10, 134, + 129, 135, 22, 73, 126, 101, 101, 117, 115, 115, + 74, 128 }; typedef enum { @@ -1117,6 +1128,6 @@ static const toketypes yy_type_tab[] = }; /* Generated from: - * 48446ab3e028756e1df8ac7ff4e2967381f754ac8cf39430af8bf83b446076e0 perly.y + * 1c6010b3d1651d4fc7cbfc329723c507767b4230ac920ae0ffde8f344f4a0ab4 perly.y * 5c9d2a0262457fe9b70073fc8ad6c188f812f38ad57712b7e2f53daa01b297cc regen_perly.pl * ex: set ro: */ diff --git a/perly.y b/perly.y index cf11a99..accc95d 100644 --- a/perly.y +++ b/perly.y @@ -1204,6 +1204,15 @@ term : termbinop TOKEN_GETMAD($2,$$,'['); TOKEN_GETMAD($4,$$,']'); } + | hsh '[' expr ']' /* array key/value slice */ + { $$ = op_prepend_elem(OP_KVASLICE, + newOP(OP_PUSHMARK, 0), + newLISTOP(OP_KVASLICE, 0, + list($3), + ref(oopsAV($1), OP_KVASLICE))); + TOKEN_GETMAD($2,$$,'['); + TOKEN_GETMAD($4,$$,']'); + } | ary '{' expr ';' '}' /* @hash{@keys} */ { $$ = op_prepend_elem(OP_HSLICE, newOP(OP_PUSHMARK, 0), diff --git a/pp.c b/pp.c index 470ebd1..2dd0fe8 100644 --- a/pp.c +++ b/pp.c @@ -4350,6 +4350,50 @@ PP(pp_aslice) RETURN; } +PP(pp_kvaslice) +{ + dVAR; dSP; dMARK; + AV *const av = MUTABLE_AV(POPs); + I32 lval = (PL_op->op_flags & OPf_MOD); + I32 items = SP - MARK; + + if (PL_op->op_private & OPpMAYBE_LVSUB) { + const I32 flags = is_lvalue_sub(); + if (flags) { + if (!(flags & OPpENTERSUB_INARGS)) + Perl_croak(aTHX_ "Can't modify index/value array slice in list assignment"); + lval = flags; + } + } + + MEXTEND(SP,items); + while (items > 1) { + *(MARK+items*2-1) = *(MARK+items); + items--; + } + items = SP-MARK; + SP += items; + + while (++MARK <= SP) { + SV **svp; + + svp = av_fetch(av, SvIV(*MARK), lval); + if (lval) { + if (!svp || !*svp || *svp == &PL_sv_undef) { + DIE(aTHX_ PL_no_aelem, SvIV(*MARK)); + } + *MARK = sv_mortalcopy(*MARK); + } + *++MARK = svp ? *svp : &PL_sv_undef; + } + if (GIMME != G_ARRAY) { + MARK = SP - items*2; + *++MARK = items > 0 ? *SP : &PL_sv_undef; + SP = MARK; + } + RETURN; +} + /* Smart dereferencing for keys, values and each */ PP(pp_rkeys) { diff --git a/pp_proto.h b/pp_proto.h index 1ede6ff..73ff532 100644 --- a/pp_proto.h +++ b/pp_proto.h @@ -123,6 +123,7 @@ PERL_CALLCONV OP *Perl_pp_introcv(pTHX); PERL_CALLCONV OP *Perl_pp_ioctl(pTHX); PERL_CALLCONV OP *Perl_pp_iter(pTHX); PERL_CALLCONV OP *Perl_pp_join(pTHX); +PERL_CALLCONV OP *Perl_pp_kvaslice(pTHX); PERL_CALLCONV OP *Perl_pp_kvhslice(pTHX); PERL_CALLCONV OP *Perl_pp_last(pTHX); PERL_CALLCONV OP *Perl_pp_lc(pTHX); diff --git a/regen/opcodes b/regen/opcodes index 61c0de5..84d9792 100644 --- a/regen/opcodes +++ b/regen/opcodes @@ -217,6 +217,7 @@ aelemfast constant array element ck_null s$ A S aelemfast_lex constant lexical array element ck_null d0 A S aelem array element ck_null s2 A S aslice array slice ck_null m@ A L +kvaslice index/value array slice ck_null m@ A L aeach each on array ck_each % A akeys keys on array ck_each t% A diff --git a/toke.c b/toke.c index a405e89..4690771 100644 --- a/toke.c +++ b/toke.c @@ -5815,6 +5815,9 @@ Perl_yylex(pTHX) PREREF('%'); } if ((PL_expect != XREF || PL_oldoldbufptr == PL_last_lop) && intuit_more(s)) { + if (*s == '[') + PL_tokenbuf[0] = '@'; + /* Warn about % where they meant $. */ if (*s == '[' || *s == '{') { if (ckWARN(WARN_SYNTAX)) { -- 1.8.3.1