diff --git a/MANIFEST b/MANIFEST index 3b20666b2113..10be69ed18fc 100644 --- a/MANIFEST +++ b/MANIFEST @@ -6331,6 +6331,7 @@ t/op/dor.t See if defined-or (//) works t/op/dump.t See if dump works. t/op/each.t See if hash iterators work t/op/each_array.t See if array iterators work +t/op/equ.t See if the equ operator works t/op/eval.t See if eval operator works t/op/evalbytes.t See if evalbytes operator works t/op/exec.t See if exec, system and qx work diff --git a/embed.fnc b/embed.fnc index 2123d01ffad0..e0b7693a847e 100644 --- a/embed.fnc +++ b/embed.fnc @@ -717,6 +717,8 @@ Apx |void |apply_attrs_string \ Adp |OP * |apply_builtin_cv_attributes \ |NN CV *cv \ |NULLOK OP *attrlist +Xp |U32 |apply_opflags |U32 optype \ + |NULLOK char *flagstr CTp |void |atfork_child CTp |void |atfork_lock CTp |void |atfork_unlock diff --git a/embed.h b/embed.h index 8ac7210a5d76..6f1aadec234b 100644 --- a/embed.h +++ b/embed.h @@ -954,6 +954,7 @@ # define amagic_applies(a,b,c) Perl_amagic_applies(aTHX_ a,b,c) # define amagic_is_enabled(a) Perl_amagic_is_enabled(aTHX_ a) # define apply(a,b,c) Perl_apply(aTHX_ a,b,c) +# define apply_opflags(a,b) Perl_apply_opflags(aTHX_ a,b) # define av_extend_guts(a,b,c,d,e) Perl_av_extend_guts(aTHX_ a,b,c,d,e) # define av_nonelem(a,b) Perl_av_nonelem(aTHX_ a,b) # define av_remove_offset(a) Perl_av_remove_offset(aTHX_ a) diff --git a/gv.c b/gv.c index 9856e03a2b7a..4731f3f78cfe 100644 --- a/gv.c +++ b/gv.c @@ -619,7 +619,7 @@ S_maybe_add_coresub(pTHX_ HV * const stash, GV *gv, case KEY_catch : case KEY_class : case KEY_cmp : case KEY_default : case KEY_defer : case KEY_do : case KEY_dump : case KEY_else : case KEY_elsif : - case KEY_eq : case KEY_eval : case KEY_field : + case KEY_eq : case KEY_equ : case KEY_eval : case KEY_field : case KEY_finally: case KEY_for : case KEY_foreach: case KEY_format: case KEY_ge : case KEY_given : case KEY_goto : case KEY_grep : case KEY_gt : diff --git a/keywords.c b/keywords.c index 12135184cf64..4de1a8e036a1 100644 --- a/keywords.c +++ b/keywords.c @@ -203,7 +203,7 @@ Perl_keyword (pTHX_ const char *name, I32 len, bool all_keywords) goto unknown; } - case 3: /* 32 tokens of length 3 */ + case 3: /* 33 tokens of length 3 */ switch (name[0]) { case 'E': @@ -306,6 +306,14 @@ Perl_keyword (pTHX_ const char *name, I32 len, bool all_keywords) goto unknown; + case 'q': + if (name[2] == 'u') + { /* equ */ + return -KEY_equ; + } + + goto unknown; + case 'x': if (name[2] == 'p') { /* exp */ @@ -3590,5 +3598,5 @@ Perl_keyword (pTHX_ const char *name, I32 len, bool all_keywords) } /* Generated from: - * bdfd5529dba8257e060f7e4ed712f683cd6a533285abf8ce7ee78c4d0677ff38 regen/keywords.pl + * 8f8a327f47421bc1866e1c67565f488e6defda1b90436908025313a4feb3e268 regen/keywords.pl * ex: set ro ft=c: */ diff --git a/keywords.h b/keywords.h index 9e480508372b..433344866dc8 100644 --- a/keywords.h +++ b/keywords.h @@ -77,210 +77,211 @@ #define KEY_endservent 61 #define KEY_eof 62 #define KEY_eq 63 -#define KEY_eval 64 -#define KEY_evalbytes 65 -#define KEY_exec 66 -#define KEY_exists 67 -#define KEY_exit 68 -#define KEY_exp 69 -#define KEY_fc 70 -#define KEY_fcntl 71 -#define KEY_field 72 -#define KEY_fileno 73 -#define KEY_finally 74 -#define KEY_flock 75 -#define KEY_for 76 -#define KEY_foreach 77 -#define KEY_fork 78 -#define KEY_format 79 -#define KEY_formline 80 -#define KEY_ge 81 -#define KEY_getc 82 -#define KEY_getgrent 83 -#define KEY_getgrgid 84 -#define KEY_getgrnam 85 -#define KEY_gethostbyaddr 86 -#define KEY_gethostbyname 87 -#define KEY_gethostent 88 -#define KEY_getlogin 89 -#define KEY_getnetbyaddr 90 -#define KEY_getnetbyname 91 -#define KEY_getnetent 92 -#define KEY_getpeername 93 -#define KEY_getpgrp 94 -#define KEY_getppid 95 -#define KEY_getpriority 96 -#define KEY_getprotobyname 97 -#define KEY_getprotobynumber 98 -#define KEY_getprotoent 99 -#define KEY_getpwent 100 -#define KEY_getpwnam 101 -#define KEY_getpwuid 102 -#define KEY_getservbyname 103 -#define KEY_getservbyport 104 -#define KEY_getservent 105 -#define KEY_getsockname 106 -#define KEY_getsockopt 107 -#define KEY_given 108 -#define KEY_glob 109 -#define KEY_gmtime 110 -#define KEY_goto 111 -#define KEY_grep 112 -#define KEY_gt 113 -#define KEY_hex 114 -#define KEY_if 115 -#define KEY_index 116 -#define KEY_int 117 -#define KEY_ioctl 118 -#define KEY_isa 119 -#define KEY_join 120 -#define KEY_keys 121 -#define KEY_kill 122 -#define KEY_last 123 -#define KEY_lc 124 -#define KEY_lcfirst 125 -#define KEY_le 126 -#define KEY_length 127 -#define KEY_link 128 -#define KEY_listen 129 -#define KEY_local 130 -#define KEY_localtime 131 -#define KEY_lock 132 -#define KEY_log 133 -#define KEY_lstat 134 -#define KEY_lt 135 -#define KEY_m 136 -#define KEY_map 137 -#define KEY_method 138 -#define KEY_mkdir 139 -#define KEY_msgctl 140 -#define KEY_msgget 141 -#define KEY_msgrcv 142 -#define KEY_msgsnd 143 -#define KEY_my 144 -#define KEY_ne 145 -#define KEY_next 146 -#define KEY_no 147 -#define KEY_not 148 -#define KEY_oct 149 -#define KEY_open 150 -#define KEY_opendir 151 -#define KEY_or 152 -#define KEY_ord 153 -#define KEY_our 154 -#define KEY_pack 155 -#define KEY_package 156 -#define KEY_pipe 157 -#define KEY_pop 158 -#define KEY_pos 159 -#define KEY_print 160 -#define KEY_printf 161 -#define KEY_prototype 162 -#define KEY_push 163 -#define KEY_q 164 -#define KEY_qq 165 -#define KEY_qr 166 -#define KEY_quotemeta 167 -#define KEY_qw 168 -#define KEY_qx 169 -#define KEY_rand 170 -#define KEY_read 171 -#define KEY_readdir 172 -#define KEY_readline 173 -#define KEY_readlink 174 -#define KEY_readpipe 175 -#define KEY_recv 176 -#define KEY_redo 177 -#define KEY_ref 178 -#define KEY_rename 179 -#define KEY_require 180 -#define KEY_reset 181 -#define KEY_return 182 -#define KEY_reverse 183 -#define KEY_rewinddir 184 -#define KEY_rindex 185 -#define KEY_rmdir 186 -#define KEY_s 187 -#define KEY_say 188 -#define KEY_scalar 189 -#define KEY_seek 190 -#define KEY_seekdir 191 -#define KEY_select 192 -#define KEY_semctl 193 -#define KEY_semget 194 -#define KEY_semop 195 -#define KEY_send 196 -#define KEY_setgrent 197 -#define KEY_sethostent 198 -#define KEY_setnetent 199 -#define KEY_setpgrp 200 -#define KEY_setpriority 201 -#define KEY_setprotoent 202 -#define KEY_setpwent 203 -#define KEY_setservent 204 -#define KEY_setsockopt 205 -#define KEY_shift 206 -#define KEY_shmctl 207 -#define KEY_shmget 208 -#define KEY_shmread 209 -#define KEY_shmwrite 210 -#define KEY_shutdown 211 -#define KEY_sin 212 -#define KEY_sleep 213 -#define KEY_socket 214 -#define KEY_socketpair 215 -#define KEY_sort 216 -#define KEY_splice 217 -#define KEY_split 218 -#define KEY_sprintf 219 -#define KEY_sqrt 220 -#define KEY_srand 221 -#define KEY_stat 222 -#define KEY_state 223 -#define KEY_study 224 -#define KEY_sub 225 -#define KEY_substr 226 -#define KEY_symlink 227 -#define KEY_syscall 228 -#define KEY_sysopen 229 -#define KEY_sysread 230 -#define KEY_sysseek 231 -#define KEY_system 232 -#define KEY_syswrite 233 -#define KEY_tell 234 -#define KEY_telldir 235 -#define KEY_tie 236 -#define KEY_tied 237 -#define KEY_time 238 -#define KEY_times 239 -#define KEY_tr 240 -#define KEY_truncate 241 -#define KEY_try 242 -#define KEY_uc 243 -#define KEY_ucfirst 244 -#define KEY_umask 245 -#define KEY_undef 246 -#define KEY_unless 247 -#define KEY_unlink 248 -#define KEY_unpack 249 -#define KEY_unshift 250 -#define KEY_untie 251 -#define KEY_until 252 -#define KEY_use 253 -#define KEY_utime 254 -#define KEY_values 255 -#define KEY_vec 256 -#define KEY_wait 257 -#define KEY_waitpid 258 -#define KEY_wantarray 259 -#define KEY_warn 260 -#define KEY_when 261 -#define KEY_while 262 -#define KEY_write 263 -#define KEY_x 264 -#define KEY_xor 265 -#define KEY_y 266 +#define KEY_equ 64 +#define KEY_eval 65 +#define KEY_evalbytes 66 +#define KEY_exec 67 +#define KEY_exists 68 +#define KEY_exit 69 +#define KEY_exp 70 +#define KEY_fc 71 +#define KEY_fcntl 72 +#define KEY_field 73 +#define KEY_fileno 74 +#define KEY_finally 75 +#define KEY_flock 76 +#define KEY_for 77 +#define KEY_foreach 78 +#define KEY_fork 79 +#define KEY_format 80 +#define KEY_formline 81 +#define KEY_ge 82 +#define KEY_getc 83 +#define KEY_getgrent 84 +#define KEY_getgrgid 85 +#define KEY_getgrnam 86 +#define KEY_gethostbyaddr 87 +#define KEY_gethostbyname 88 +#define KEY_gethostent 89 +#define KEY_getlogin 90 +#define KEY_getnetbyaddr 91 +#define KEY_getnetbyname 92 +#define KEY_getnetent 93 +#define KEY_getpeername 94 +#define KEY_getpgrp 95 +#define KEY_getppid 96 +#define KEY_getpriority 97 +#define KEY_getprotobyname 98 +#define KEY_getprotobynumber 99 +#define KEY_getprotoent 100 +#define KEY_getpwent 101 +#define KEY_getpwnam 102 +#define KEY_getpwuid 103 +#define KEY_getservbyname 104 +#define KEY_getservbyport 105 +#define KEY_getservent 106 +#define KEY_getsockname 107 +#define KEY_getsockopt 108 +#define KEY_given 109 +#define KEY_glob 110 +#define KEY_gmtime 111 +#define KEY_goto 112 +#define KEY_grep 113 +#define KEY_gt 114 +#define KEY_hex 115 +#define KEY_if 116 +#define KEY_index 117 +#define KEY_int 118 +#define KEY_ioctl 119 +#define KEY_isa 120 +#define KEY_join 121 +#define KEY_keys 122 +#define KEY_kill 123 +#define KEY_last 124 +#define KEY_lc 125 +#define KEY_lcfirst 126 +#define KEY_le 127 +#define KEY_length 128 +#define KEY_link 129 +#define KEY_listen 130 +#define KEY_local 131 +#define KEY_localtime 132 +#define KEY_lock 133 +#define KEY_log 134 +#define KEY_lstat 135 +#define KEY_lt 136 +#define KEY_m 137 +#define KEY_map 138 +#define KEY_method 139 +#define KEY_mkdir 140 +#define KEY_msgctl 141 +#define KEY_msgget 142 +#define KEY_msgrcv 143 +#define KEY_msgsnd 144 +#define KEY_my 145 +#define KEY_ne 146 +#define KEY_next 147 +#define KEY_no 148 +#define KEY_not 149 +#define KEY_oct 150 +#define KEY_open 151 +#define KEY_opendir 152 +#define KEY_or 153 +#define KEY_ord 154 +#define KEY_our 155 +#define KEY_pack 156 +#define KEY_package 157 +#define KEY_pipe 158 +#define KEY_pop 159 +#define KEY_pos 160 +#define KEY_print 161 +#define KEY_printf 162 +#define KEY_prototype 163 +#define KEY_push 164 +#define KEY_q 165 +#define KEY_qq 166 +#define KEY_qr 167 +#define KEY_quotemeta 168 +#define KEY_qw 169 +#define KEY_qx 170 +#define KEY_rand 171 +#define KEY_read 172 +#define KEY_readdir 173 +#define KEY_readline 174 +#define KEY_readlink 175 +#define KEY_readpipe 176 +#define KEY_recv 177 +#define KEY_redo 178 +#define KEY_ref 179 +#define KEY_rename 180 +#define KEY_require 181 +#define KEY_reset 182 +#define KEY_return 183 +#define KEY_reverse 184 +#define KEY_rewinddir 185 +#define KEY_rindex 186 +#define KEY_rmdir 187 +#define KEY_s 188 +#define KEY_say 189 +#define KEY_scalar 190 +#define KEY_seek 191 +#define KEY_seekdir 192 +#define KEY_select 193 +#define KEY_semctl 194 +#define KEY_semget 195 +#define KEY_semop 196 +#define KEY_send 197 +#define KEY_setgrent 198 +#define KEY_sethostent 199 +#define KEY_setnetent 200 +#define KEY_setpgrp 201 +#define KEY_setpriority 202 +#define KEY_setprotoent 203 +#define KEY_setpwent 204 +#define KEY_setservent 205 +#define KEY_setsockopt 206 +#define KEY_shift 207 +#define KEY_shmctl 208 +#define KEY_shmget 209 +#define KEY_shmread 210 +#define KEY_shmwrite 211 +#define KEY_shutdown 212 +#define KEY_sin 213 +#define KEY_sleep 214 +#define KEY_socket 215 +#define KEY_socketpair 216 +#define KEY_sort 217 +#define KEY_splice 218 +#define KEY_split 219 +#define KEY_sprintf 220 +#define KEY_sqrt 221 +#define KEY_srand 222 +#define KEY_stat 223 +#define KEY_state 224 +#define KEY_study 225 +#define KEY_sub 226 +#define KEY_substr 227 +#define KEY_symlink 228 +#define KEY_syscall 229 +#define KEY_sysopen 230 +#define KEY_sysread 231 +#define KEY_sysseek 232 +#define KEY_system 233 +#define KEY_syswrite 234 +#define KEY_tell 235 +#define KEY_telldir 236 +#define KEY_tie 237 +#define KEY_tied 238 +#define KEY_time 239 +#define KEY_times 240 +#define KEY_tr 241 +#define KEY_truncate 242 +#define KEY_try 243 +#define KEY_uc 244 +#define KEY_ucfirst 245 +#define KEY_umask 246 +#define KEY_undef 247 +#define KEY_unless 248 +#define KEY_unlink 249 +#define KEY_unpack 250 +#define KEY_unshift 251 +#define KEY_untie 252 +#define KEY_until 253 +#define KEY_use 254 +#define KEY_utime 255 +#define KEY_values 256 +#define KEY_vec 257 +#define KEY_wait 258 +#define KEY_waitpid 259 +#define KEY_wantarray 260 +#define KEY_warn 261 +#define KEY_when 262 +#define KEY_while 263 +#define KEY_write 264 +#define KEY_x 265 +#define KEY_xor 266 +#define KEY_y 267 /* Generated from: - * bdfd5529dba8257e060f7e4ed712f683cd6a533285abf8ce7ee78c4d0677ff38 regen/keywords.pl + * 8f8a327f47421bc1866e1c67565f488e6defda1b90436908025313a4feb3e268 regen/keywords.pl * ex: set ro ft=c: */ diff --git a/lib/B/Deparse-core.t b/lib/B/Deparse-core.t index 7fcb7d8d9ef4..0c2404517557 100644 --- a/lib/B/Deparse-core.t +++ b/lib/B/Deparse-core.t @@ -508,6 +508,7 @@ endpwent 0 - endservent 0 - eof 01 - # also tested specially eq B - +equ B - eval 01 $+ evalbytes 01 $ exec @ p1 # also tested specially diff --git a/lib/B/Deparse.pm b/lib/B/Deparse.pm index 6b52d6757be3..fd146f3c626f 100644 --- a/lib/B/Deparse.pm +++ b/lib/B/Deparse.pm @@ -7,7 +7,7 @@ # This is based on the module of the same name by Malcolm Beattie, # but essentially none of his code remains. -package B::Deparse 1.87; +package B::Deparse 1.88; use strict; use Carp; use B qw(class main_root main_start main_cv svref_2object opnumber perlstring @@ -17,6 +17,7 @@ use B qw(class main_root main_start main_cv svref_2object opnumber perlstring OPpCONST_BARE OPpEMPTYAVHV_IS_HV OPpCONST_TOKEN_MASK OPpCONST_TOKEN_LINE OPpCONST_TOKEN_FILE OPpCONST_TOKEN_PACKAGE + OPpEQ_UNDEF OPpTRANS_SQUASH OPpTRANS_DELETE OPpTRANS_COMPLEMENT OPpTARGET_MY OPpEXISTS_SUB OPpSORT_NUMERIC OPpSORT_INTEGER OPpREPEAT_DOLIST OPpSORT_REVERSE OPpMULTIDEREF_EXISTS OPpMULTIDEREF_DELETE @@ -3271,7 +3272,7 @@ sub pp_i_ge { binop(@_, ">=", 15) } sub pp_i_le { binop(@_, "<=", 15) } sub pp_i_ncmp { maybe_targmy(@_, \&binop, "<=>", 14) } -sub pp_seq { binop(@_, "eq", 14) } +sub pp_seq { my $priv = $_[1]->private; binop(@_, $priv & OPpEQ_UNDEF ? "equ" : "eq", 14) } sub pp_sne { binop(@_, "ne", 14) } sub pp_slt { binop(@_, "lt", 15) } sub pp_sgt { binop(@_, "gt", 15) } diff --git a/lib/B/Op_private.pm b/lib/B/Op_private.pm index e7d1cf92883a..3cbb723fe806 100644 --- a/lib/B/Op_private.pm +++ b/lib/B/Op_private.pm @@ -123,6 +123,7 @@ our $VERSION = "5.043004"; $bits{$_}{3} = 'OPpENTERSUB_AMPER' for qw(entersub rv2cv); $bits{$_}{6} = 'OPpENTERSUB_DB' for qw(entersub rv2cv); $bits{$_}{2} = 'OPpENTERSUB_HASTARG' for qw(ceil entersub floor goto refaddr reftype rv2cv); +$bits{$_}{7} = 'OPpEQ_UNDEF' for qw(eq ne seq sne); $bits{$_}{6} = 'OPpFLIP_LINENUM' for qw(flip flop); $bits{$_}{1} = 'OPpFT_ACCESS' for qw(fteexec fteread ftewrite ftrexec ftrread ftrwrite); $bits{$_}{4} = 'OPpFT_AFTER_t' for qw(ftatime ftbinary ftblk ftchr ftctime ftdir fteexec fteowned fteread ftewrite ftfile ftis ftlink ftmtime ftpipe ftrexec ftrowned ftrread ftrwrite ftsgid ftsize ftsock ftsuid ftsvtx fttext fttty ftzero); @@ -676,6 +677,7 @@ our %defines = ( OPpENTERSUB_HASTARG => 4, OPpENTERSUB_INARGS => 1, OPpENTERSUB_NOPAREN => 128, + OPpEQ_UNDEF => 128, OPpEVAL_BYTES => 8, OPpEVAL_COPHH => 16, OPpEVAL_EVALSV => 64, @@ -803,6 +805,7 @@ our %labels = ( OPpENTERSUB_HASTARG => 'TARG', OPpENTERSUB_INARGS => 'INARGS', OPpENTERSUB_NOPAREN => 'NO()', + OPpEQ_UNDEF => 'UNDEF', OPpEVAL_BYTES => 'BYTES', OPpEVAL_COPHH => 'COPHH', OPpEVAL_EVALSV => 'EVALSV', @@ -902,6 +905,7 @@ our %ops_using = ( OPpENTERSUB_HASTARG => [qw(ceil entersub floor goto refaddr reftype rv2cv)], OPpENTERSUB_INARGS => [qw(entersub)], OPpENTERSUB_NOPAREN => [qw(rv2cv)], + OPpEQ_UNDEF => [qw(eq ne seq sne)], OPpEVAL_BYTES => [qw(entereval)], OPpEXISTS_SUB => [qw(exists)], OPpFLIP_LINENUM => [qw(flip flop)], diff --git a/op.c b/op.c index 43e07ac89be1..70166e3be96a 100644 --- a/op.c +++ b/op.c @@ -4399,6 +4399,9 @@ Perl_cmpchain_start(pTHX_ I32 type, OP *left, OP *right) BINOP *bop; OP *op; + U8 priv = 2 | (type >> 16); + type &= 0xFFFF; + if (!left) left = newOP(OP_NULL, 0); else @@ -4412,7 +4415,7 @@ Perl_cmpchain_start(pTHX_ I32 type, OP *left, OP *right) ASSUME((PL_opargs[type] & OA_CLASS_MASK) == OA_BINOP); OpTYPE_set(op, type); cBINOPx(op)->op_flags = OPf_KIDS; - cBINOPx(op)->op_private = 2; + cBINOPx(op)->op_private = priv; cBINOPx(op)->op_first = left; cBINOPx(op)->op_last = right; OpMORESIB_set(left, right); @@ -4426,6 +4429,9 @@ Perl_cmpchain_extend(pTHX_ I32 type, OP *ch, OP *right) BINOP *bop; OP *op; + U8 priv = 2 | (type >> 16); + type &= 0xFFFF; + PERL_ARGS_ASSERT_CMPCHAIN_EXTEND; if (!right) right = newOP(OP_NULL, 0); @@ -4445,7 +4451,7 @@ Perl_cmpchain_extend(pTHX_ I32 type, OP *ch, OP *right) cright = cBINOPx(ch)->op_last; cBINOPx(ch)->op_first = NULL; cBINOPx(ch)->op_last = NULL; - cBINOPx(ch)->op_private = 0; + cBINOPx(ch)->op_private = priv; cBINOPx(ch)->op_flags = 0; cUNOPx(nch)->op_first = cright; OpMORESIB_set(cright, ch); @@ -17072,6 +17078,30 @@ Perl_subsignature_finish(pTHX) return ret; } +U32 +Perl_apply_opflags(pTHX_ U32 opcode, char *flagstr) +{ + U16 opcode_base = opcode & 0xFFFF; + U8 priv = (opcode_base >> 16) & 0xFF; + + for(char flag; (flag = *flagstr); flagstr++) { + switch(opcode_base) { + case OP_SEQ: /* eq */ + case OP_SNE: /* ne */ + case OP_EQ: /* == */ + case OP_NE: /* != */ + switch(flag) { + case 'u': + priv |= OPpEQ_UNDEF; + continue; + } + } + croak("Unrecognized flag '%c' for %s", flag, PL_op_desc[opcode_base]); + } + + return opcode_base | (priv << 16); +} + /* * ex: set ts=8 sts=4 sw=4 et: */ diff --git a/opcode.h b/opcode.h index e28266519ed7..cdf2c96057fc 100644 --- a/opcode.h +++ b/opcode.h @@ -2460,6 +2460,7 @@ END_EXTERN_C #define OPpCOREARGS_PUSHMARK 0x80 #define OPpDEFER_FINALLY 0x80 #define OPpENTERSUB_NOPAREN 0x80 +#define OPpEQ_UNDEF 0x80 #define OPpHELEMEXISTSOR_DELETE 0x80 #define OPpINITFIELDS 0x80 #define OPpLVALUE 0x80 @@ -2598,6 +2599,7 @@ EXTCONST char PL_op_private_labels[] = { 'T','A','R','G','M','Y','\0', 'T','O','K','E','N','\0', 'T','R','A','N','S','\0', + 'U','N','D','E','F','\0', 'U','N','I','\0', 'U','S','E','I','N','T','\0', 'U','S','E','_','S','V','O','P','\0', @@ -2624,11 +2626,11 @@ EXTCONST I16 PL_op_private_bitfields[] = { 0, 8, -1, 0, 8, -1, 0, 727, 1, 554, 2, 71, 3, 298, -1, - 0, 761, -1, + 0, 767, -1, 0, 8, -1, 0, 8, -1, - 0, 768, -1, - 0, 757, -1, + 0, 774, -1, + 0, 763, -1, 1, -1, 0, 706, 1, 39, 2, 324, -1, 4, -1, 1, 185, 2, 192, 3, 199, -1, 4, -1, 0, 706, 1, 39, 2, 324, 3, 131, -1, @@ -2721,9 +2723,9 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 13, /* i_le */ 13, /* ge */ 13, /* i_ge */ - 13, /* eq */ + 105, /* eq */ 13, /* i_eq */ - 13, /* ne */ + 105, /* ne */ 13, /* i_ne */ 13, /* ncmp */ 13, /* i_ncmp */ @@ -2731,22 +2733,22 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 13, /* sgt */ 13, /* sle */ 13, /* sge */ - 13, /* seq */ - 13, /* sne */ + 105, /* seq */ + 105, /* sne */ 13, /* scmp */ - 105, /* bit_and */ - 105, /* bit_xor */ - 105, /* bit_or */ + 107, /* bit_and */ + 107, /* bit_xor */ + 107, /* bit_or */ 103, /* nbit_and */ 103, /* nbit_xor */ 103, /* nbit_or */ - 105, /* sbit_and */ - 105, /* sbit_xor */ - 105, /* sbit_or */ + 107, /* sbit_and */ + 107, /* sbit_xor */ + 107, /* sbit_or */ 78, /* negate */ 78, /* i_negate */ 0, /* not */ - 105, /* complement */ + 107, /* complement */ 103, /* ncomplement */ 78, /* scomplement */ 13, /* smartmatch */ @@ -2762,12 +2764,12 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 78, /* hex */ 78, /* oct */ 78, /* abs */ - 106, /* length */ - 109, /* substr */ - 112, /* substr_left */ - 114, /* vec */ - 116, /* index */ - 116, /* rindex */ + 108, /* length */ + 111, /* substr */ + 114, /* substr_left */ + 116, /* vec */ + 118, /* index */ + 118, /* rindex */ 56, /* sprintf */ 56, /* formline */ 78, /* ord */ @@ -2778,100 +2780,100 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 0, /* uc */ 0, /* lc */ 0, /* quotemeta */ - 120, /* rv2av */ - 127, /* aelemfast */ - 127, /* aelemfast_lex */ - 127, /* aelemfastlex_store */ - 128, /* aelem */ - 133, /* aslice */ - 136, /* kvaslice */ + 122, /* rv2av */ + 129, /* aelemfast */ + 129, /* aelemfast_lex */ + 129, /* aelemfastlex_store */ + 130, /* aelem */ + 135, /* aslice */ + 138, /* kvaslice */ 0, /* aeach */ 0, /* avalues */ 44, /* akeys */ 0, /* each */ 44, /* values */ 44, /* keys */ - 137, /* delete */ - 141, /* exists */ - 143, /* rv2hv */ - 128, /* helem */ - 133, /* hslice */ - 136, /* kvhslice */ - 151, /* multideref */ + 139, /* delete */ + 143, /* exists */ + 145, /* rv2hv */ + 130, /* helem */ + 135, /* hslice */ + 138, /* kvhslice */ + 153, /* multideref */ 56, /* unpack */ 56, /* pack */ - 158, /* split */ + 160, /* split */ 56, /* join */ - 163, /* list */ + 165, /* list */ 13, /* lslice */ 56, /* anonlist */ 56, /* anonhash */ - 165, /* emptyavhv */ + 167, /* emptyavhv */ 56, /* splice */ 101, /* push */ 0, /* pop */ 0, /* shift */ 101, /* unshift */ - 170, /* sort */ - 175, /* reverse */ + 172, /* sort */ + 177, /* reverse */ 0, /* grepstart */ - 177, /* grepwhile */ + 179, /* grepwhile */ -1, /* anystart */ -1, /* allstart */ 0, /* anywhile */ 0, /* mapstart */ 0, /* mapwhile */ 0, /* range */ - 179, /* flip */ - 179, /* flop */ + 181, /* flip */ + 181, /* flop */ 0, /* and */ 0, /* or */ 13, /* xor */ 0, /* dor */ - 181, /* cond_expr */ + 183, /* cond_expr */ 0, /* andassign */ 0, /* orassign */ 0, /* dorassign */ - 183, /* entersub */ - 190, /* leavesub */ - 190, /* leavesublv */ + 185, /* entersub */ + 192, /* leavesub */ + 192, /* leavesublv */ 0, /* argcheck */ - 192, /* argelem */ - 194, /* argdefelem */ - 197, /* caller */ + 194, /* argelem */ + 196, /* argdefelem */ + 199, /* caller */ 56, /* warn */ 56, /* die */ 56, /* reset */ -1, /* lineseq */ - 199, /* nextstate */ - 199, /* dbstate */ + 201, /* nextstate */ + 201, /* dbstate */ -1, /* unstack */ -1, /* enter */ - 200, /* leave */ + 202, /* leave */ -1, /* scope */ - 202, /* enteriter */ - 206, /* iter */ + 204, /* enteriter */ + 208, /* iter */ -1, /* enterloop */ - 208, /* leaveloop */ + 210, /* leaveloop */ -1, /* return */ - 210, /* last */ - 210, /* next */ - 210, /* redo */ - 210, /* dump */ - 212, /* goto */ + 212, /* last */ + 212, /* next */ + 212, /* redo */ + 212, /* dump */ + 214, /* goto */ 56, /* exit */ - 215, /* method */ - 215, /* method_named */ - 215, /* method_super */ - 215, /* method_redir */ - 215, /* method_redir_super */ + 217, /* method */ + 217, /* method_named */ + 217, /* method_super */ + 217, /* method_redir */ + 217, /* method_redir_super */ 0, /* entergiven */ 0, /* leavegiven */ 0, /* enterwhen */ 0, /* leavewhen */ -1, /* break */ -1, /* continue */ - 217, /* open */ + 219, /* open */ 56, /* close */ 56, /* pipe_op */ 56, /* fileno */ @@ -2887,7 +2889,7 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 56, /* getc */ 56, /* read */ 56, /* enterwrite */ - 190, /* leavewrite */ + 192, /* leavewrite */ -1, /* prtf */ -1, /* print */ -1, /* say */ @@ -2917,33 +2919,33 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 0, /* getpeername */ 0, /* lstat */ 0, /* stat */ - 222, /* ftrread */ - 222, /* ftrwrite */ - 222, /* ftrexec */ - 222, /* fteread */ - 222, /* ftewrite */ - 222, /* fteexec */ - 227, /* ftis */ - 227, /* ftsize */ - 227, /* ftmtime */ - 227, /* ftatime */ - 227, /* ftctime */ - 227, /* ftrowned */ - 227, /* fteowned */ - 227, /* ftzero */ - 227, /* ftsock */ - 227, /* ftchr */ - 227, /* ftblk */ - 227, /* ftfile */ - 227, /* ftdir */ - 227, /* ftpipe */ - 227, /* ftsuid */ - 227, /* ftsgid */ - 227, /* ftsvtx */ - 227, /* ftlink */ - 227, /* fttty */ - 227, /* fttext */ - 227, /* ftbinary */ + 224, /* ftrread */ + 224, /* ftrwrite */ + 224, /* ftrexec */ + 224, /* fteread */ + 224, /* ftewrite */ + 224, /* fteexec */ + 229, /* ftis */ + 229, /* ftsize */ + 229, /* ftmtime */ + 229, /* ftatime */ + 229, /* ftctime */ + 229, /* ftrowned */ + 229, /* fteowned */ + 229, /* ftzero */ + 229, /* ftsock */ + 229, /* ftchr */ + 229, /* ftblk */ + 229, /* ftfile */ + 229, /* ftdir */ + 229, /* ftpipe */ + 229, /* ftsuid */ + 229, /* ftsgid */ + 229, /* ftsvtx */ + 229, /* ftlink */ + 229, /* fttty */ + 229, /* fttext */ + 229, /* ftbinary */ 56, /* chdir */ 101, /* chown */ 78, /* chroot */ @@ -2963,17 +2965,17 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 0, /* rewinddir */ 0, /* closedir */ -1, /* fork */ - 231, /* wait */ + 233, /* wait */ 101, /* waitpid */ 101, /* system */ 101, /* exec */ 101, /* kill */ - 231, /* getppid */ + 233, /* getppid */ 101, /* getpgrp */ 101, /* setpgrp */ 101, /* getpriority */ 101, /* setpriority */ - 231, /* time */ + 233, /* time */ -1, /* tms */ 0, /* localtime */ 56, /* gmtime */ @@ -2993,8 +2995,8 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 0, /* require */ 0, /* dofile */ -1, /* hintseval */ - 232, /* entereval */ - 190, /* leaveeval */ + 234, /* entereval */ + 192, /* leaveeval */ 0, /* entertry */ -1, /* leavetry */ 0, /* ghbyname */ @@ -3032,17 +3034,17 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 0, /* lock */ 0, /* once */ -1, /* custom */ - 239, /* coreargs */ - 243, /* avhvswitch */ + 241, /* coreargs */ + 245, /* avhvswitch */ 3, /* runcv */ 0, /* fc */ -1, /* padcv */ -1, /* introcv */ -1, /* clonecv */ - 245, /* padrange */ - 247, /* refassign */ - 253, /* lvref */ - 259, /* lvrefslice */ + 247, /* padrange */ + 249, /* refassign */ + 255, /* lvref */ + 261, /* lvrefslice */ 17, /* lvavref */ 0, /* anonconst */ 13, /* isa */ @@ -3052,23 +3054,23 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { -1, /* leavetrycatch */ -1, /* poptry */ 0, /* catch */ - 260, /* pushdefer */ + 262, /* pushdefer */ 0, /* is_bool */ 0, /* is_weak */ 0, /* weaken */ 0, /* unweaken */ 53, /* blessed */ - 262, /* refaddr */ - 262, /* reftype */ - 262, /* ceil */ - 262, /* floor */ + 264, /* refaddr */ + 264, /* reftype */ + 264, /* ceil */ + 264, /* floor */ 0, /* is_tainted */ - 265, /* helemexistsor */ - 267, /* methstart */ - 270, /* initfield */ + 267, /* helemexistsor */ + 269, /* methstart */ + 272, /* initfield */ -1, /* classname */ 0, /* multiparam */ - 194, /* paramtest */ + 196, /* paramtest */ 0, /* paramstore */ }; @@ -3094,7 +3096,7 @@ EXTCONST U16 PL_op_private_bitdefs[] = { 0x077e, 0x0554, 0x1b70, 0x55ac, 0x5148, 0x4225, /* const */ 0x3cfc, 0x47f9, /* gvsv */ 0x19d5, /* gv */ - 0x0067, /* gelem, lt, i_lt, gt, i_gt, le, i_le, ge, i_ge, eq, i_eq, ne, i_ne, ncmp, i_ncmp, slt, sgt, sle, sge, seq, sne, scmp, smartmatch, lslice, xor, isa */ + 0x0067, /* gelem, lt, i_lt, gt, i_gt, le, i_le, ge, i_ge, i_eq, i_ne, ncmp, i_ncmp, slt, sgt, sle, sge, scmp, smartmatch, lslice, xor, isa */ 0x3cfc, 0x54f8, 0x04f7, /* padsv */ 0x3cfc, 0x54f8, 0x0003, /* padsv_store, lvavref */ 0x3cfc, 0x54f8, 0x06d4, 0x3dec, 0x52c9, /* padav */ @@ -3107,7 +3109,7 @@ EXTCONST U16 PL_op_private_bitdefs[] = { 0x02af, /* bless, glob, sprintf, formline, unpack, pack, join, anonlist, anonhash, splice, warn, die, reset, exit, close, pipe_op, fileno, umask, binmode, tie, dbmopen, sselect, select, getc, read, enterwrite, sysopen, sysseek, sysread, syswrite, eof, tell, seek, truncate, fcntl, ioctl, send, recv, socket, sockpair, bind, connect, listen, accept, shutdown, gsockopt, ssockopt, chdir, open_dir, seekdir, gmtime, shmget, shmctl, shmread, shmwrite, msgget, msgctl, msgsnd, msgrcv, semop, semget, semctl, ghbyaddr, gnbyaddr, gpbynumber, gsbyname, gsbyport, syscall */ 0x49dc, 0x48f8, 0x2e74, 0x2db0, 0x0003, /* backtick */ 0x06d5, /* subst */ - 0x129c, 0x5d18, 0x0ad4, 0x540c, 0x28e8, 0x00c7, /* trans, transr */ + 0x129c, 0x5dd8, 0x0ad4, 0x540c, 0x28e8, 0x00c7, /* trans, transr */ 0x10dc, 0x05f8, 0x0067, /* sassign */ 0x0d98, 0x0c94, 0x0b90, 0x3dec, 0x06c8, 0x0067, /* aassign */ 0x5950, 0x0003, /* chomp, schomp, negate, i_negate, scomplement, sin, cos, exp, log, sqrt, int, hex, oct, abs, ord, chr, chroot, rmdir */ @@ -3118,8 +3120,9 @@ EXTCONST U16 PL_op_private_bitdefs[] = { 0x3fd8, 0x5950, 0x0067, /* concat */ 0x3cfc, 0x0338, 0x1e34, 0x5950, 0x568c, 0x0003, /* multiconcat */ 0x5950, 0x02af, /* stringify, atan2, rand, srand, crypt, push, unshift, flock, chown, unlink, chmod, utime, rename, link, symlink, mkdir, waitpid, system, exec, kill, getpgrp, setpgrp, getpriority, setpriority, sleep */ - 0x5950, 0x5c29, /* left_shift, right_shift, nbit_and, nbit_xor, nbit_or, ncomplement */ - 0x5c29, /* bit_and, bit_xor, bit_or, sbit_and, sbit_xor, sbit_or, complement */ + 0x5950, 0x5ce9, /* left_shift, right_shift, nbit_and, nbit_xor, nbit_or, ncomplement */ + 0x5bbc, 0x0067, /* eq, ne, seq, sne */ + 0x5ce9, /* bit_and, bit_xor, bit_or, sbit_and, sbit_xor, sbit_or, complement */ 0x06d4, 0x5950, 0x0003, /* length */ 0x4d30, 0x3dec, 0x024b, /* substr */ 0x5950, 0x024b, /* substr_left */ @@ -3152,14 +3155,14 @@ EXTCONST U16 PL_op_private_bitdefs[] = { 0x3cfc, 0x47f8, 0x120c, 0x4ea5, /* enteriter */ 0x2f08, 0x4ea5, /* iter */ 0x3b9c, 0x0067, /* leaveloop */ - 0x5e3c, 0x0003, /* last, next, redo, dump */ - 0x5e3c, 0x58a8, 0x0003, /* goto */ + 0x5efc, 0x0003, /* last, next, redo, dump */ + 0x5efc, 0x58a8, 0x0003, /* goto */ 0x42e4, 0x0003, /* method, method_named, method_super, method_redir, method_redir_super */ 0x49dc, 0x48f8, 0x2e74, 0x2db0, 0x02af, /* open */ 0x2190, 0x23ec, 0x22a8, 0x2064, 0x0003, /* ftrread, ftrwrite, ftrexec, fteread, ftewrite, fteexec */ 0x2190, 0x23ec, 0x22a8, 0x0003, /* ftis, ftsize, ftmtime, ftatime, ftctime, ftrowned, fteowned, ftzero, ftsock, ftchr, ftblk, ftfile, ftdir, ftpipe, ftsuid, ftsgid, ftsvtx, ftlink, fttty, fttext, ftbinary */ 0x5951, /* wait, getppid, time */ - 0x1c78, 0x4c34, 0x0fb0, 0x082c, 0x5ba8, 0x2704, 0x0003, /* entereval */ + 0x1c78, 0x4c34, 0x0fb0, 0x082c, 0x5c68, 0x2704, 0x0003, /* entereval */ 0x3ebc, 0x0018, 0x14c4, 0x13e1, /* coreargs */ 0x3dec, 0x01e7, /* avhvswitch */ 0x3cfc, 0x031b, /* padrange */ @@ -3259,9 +3262,9 @@ EXTCONST U8 PL_op_private_valid[] = { /* I_LE */ (OPpARG2_MASK), /* GE */ (OPpARG2_MASK), /* I_GE */ (OPpARG2_MASK), - /* EQ */ (OPpARG2_MASK), + /* EQ */ (OPpARG2_MASK|OPpEQ_UNDEF), /* I_EQ */ (OPpARG2_MASK), - /* NE */ (OPpARG2_MASK), + /* NE */ (OPpARG2_MASK|OPpEQ_UNDEF), /* I_NE */ (OPpARG2_MASK), /* NCMP */ (OPpARG2_MASK), /* I_NCMP */ (OPpARG2_MASK), @@ -3269,8 +3272,8 @@ EXTCONST U8 PL_op_private_valid[] = { /* SGT */ (OPpARG2_MASK), /* SLE */ (OPpARG2_MASK), /* SGE */ (OPpARG2_MASK), - /* SEQ */ (OPpARG2_MASK), - /* SNE */ (OPpARG2_MASK), + /* SEQ */ (OPpARG2_MASK|OPpEQ_UNDEF), + /* SNE */ (OPpARG2_MASK|OPpEQ_UNDEF), /* SCMP */ (OPpARG2_MASK), /* BIT_AND */ (OPpUSEINT), /* BIT_XOR */ (OPpUSEINT), diff --git a/perl.h b/perl.h index a8d9667b1231..ff08354d4ad1 100644 --- a/perl.h +++ b/perl.h @@ -6045,7 +6045,8 @@ typedef enum { XTERMBLOCK, XBLOCKTERM, XPOSTDEREF, - XTERMORDORDOR /* evil hack */ + XTERMORDORDOR, /* evil hack */ + XOPFLAGSTERM, /* next token should be opflags or a term */ /* update exp_name[] in toke.c if adding to this enum */ } expectation; diff --git a/perly.act b/perly.act index e052adcce1e1..be05fa2beba0 100644 --- a/perly.act +++ b/perly.act @@ -5,7 +5,7 @@ */ case 2: /* @1: %empty */ -#line 161 "perly.y" +#line 164 "perly.y" { parser->expect = XSTATE; (yyval.ival) = 0; @@ -14,7 +14,7 @@ case 2: /* @1: %empty */ break; case 3: /* grammar: GRAMPROG @1 remember stmtseq */ -#line 166 "perly.y" +#line 169 "perly.y" { newPROG(block_end((ps[-1].val.ival),(ps[0].val.opval))); PL_compiling.cop_seq = 0; @@ -24,7 +24,7 @@ case 2: /* @1: %empty */ break; case 4: /* @2: %empty */ -#line 172 "perly.y" +#line 175 "perly.y" { parser->expect = XTERM; (yyval.ival) = 0; @@ -33,7 +33,7 @@ case 2: /* @1: %empty */ break; case 5: /* grammar: GRAMEXPR @2 optexpr */ -#line 177 "perly.y" +#line 180 "perly.y" { PL_eval_root = (ps[0].val.opval); (yyval.ival) = 0; @@ -42,7 +42,7 @@ case 2: /* @1: %empty */ break; case 6: /* @3: %empty */ -#line 182 "perly.y" +#line 185 "perly.y" { parser->expect = XBLOCK; (yyval.ival) = 0; @@ -51,7 +51,7 @@ case 2: /* @1: %empty */ break; case 7: /* grammar: GRAMBLOCK @3 block */ -#line 187 "perly.y" +#line 190 "perly.y" { PL_pad_reset_pending = TRUE; PL_eval_root = (ps[0].val.opval); @@ -63,7 +63,7 @@ case 2: /* @1: %empty */ break; case 8: /* @4: %empty */ -#line 195 "perly.y" +#line 198 "perly.y" { parser->expect = XSTATE; (yyval.ival) = 0; @@ -72,7 +72,7 @@ case 2: /* @1: %empty */ break; case 9: /* grammar: GRAMBARESTMT @4 barestmt */ -#line 200 "perly.y" +#line 203 "perly.y" { PL_pad_reset_pending = TRUE; PL_eval_root = (ps[0].val.opval); @@ -84,7 +84,7 @@ case 2: /* @1: %empty */ break; case 10: /* @5: %empty */ -#line 208 "perly.y" +#line 211 "perly.y" { parser->expect = XSTATE; (yyval.ival) = 0; @@ -93,7 +93,7 @@ case 2: /* @1: %empty */ break; case 11: /* grammar: GRAMFULLSTMT @5 fullstmt */ -#line 213 "perly.y" +#line 216 "perly.y" { PL_pad_reset_pending = TRUE; PL_eval_root = (ps[0].val.opval); @@ -105,7 +105,7 @@ case 2: /* @1: %empty */ break; case 12: /* @6: %empty */ -#line 221 "perly.y" +#line 224 "perly.y" { parser->expect = XSTATE; (yyval.ival) = 0; @@ -114,7 +114,7 @@ case 2: /* @1: %empty */ break; case 13: /* grammar: GRAMSTMTSEQ @6 stmtseq */ -#line 226 "perly.y" +#line 229 "perly.y" { PL_eval_root = (ps[0].val.opval); (yyval.ival) = 0; @@ -123,7 +123,7 @@ case 2: /* @1: %empty */ break; case 14: /* @7: %empty */ -#line 231 "perly.y" +#line 234 "perly.y" { parser->expect = XSTATE; (yyval.ival) = 0; @@ -132,7 +132,7 @@ case 2: /* @1: %empty */ break; case 15: /* grammar: GRAMSUBSIGNATURE @7 subsigguts */ -#line 236 "perly.y" +#line 239 "perly.y" { PL_eval_root = (ps[0].val.opval); (yyval.ival) = 0; @@ -141,19 +141,19 @@ case 2: /* @1: %empty */ break; case 16: /* sigsub_or_method_named: KW_SUB_named_sig */ -#line 245 "perly.y" +#line 248 "perly.y" { (yyval.ival) = KW_SUB_named_sig; } break; case 17: /* sigsub_or_method_named: KW_METHOD_named */ -#line 247 "perly.y" +#line 250 "perly.y" { (yyval.ival) = KW_METHOD_named; } break; case 18: /* block: PERLY_BRACE_OPEN remember stmtseq PERLY_BRACE_CLOSE */ -#line 252 "perly.y" +#line 255 "perly.y" { if (parser->copline > (line_t)(ps[-3].val.ival)) parser->copline = (line_t)(ps[-3].val.ival); (yyval.opval) = block_end((ps[-2].val.ival), (ps[-1].val.opval)); @@ -162,13 +162,13 @@ case 2: /* @1: %empty */ break; case 19: /* empty: %empty */ -#line 259 "perly.y" +#line 262 "perly.y" { (yyval.opval) = NULL; } break; case 20: /* formblock: PERLY_EQUAL_SIGN remember PERLY_SEMICOLON FORMRBRACK formstmtseq PERLY_SEMICOLON PERLY_DOT */ -#line 264 "perly.y" +#line 267 "perly.y" { if (parser->copline > (line_t)(ps[-6].val.ival)) parser->copline = (line_t)(ps[-6].val.ival); (yyval.opval) = block_end((ps[-5].val.ival), (ps[-2].val.opval)); @@ -177,14 +177,14 @@ case 2: /* @1: %empty */ break; case 21: /* remember: %empty */ -#line 271 "perly.y" +#line 274 "perly.y" { (yyval.ival) = block_start(TRUE); parser->parsed_sub = 0; } break; case 22: /* mblock: PERLY_BRACE_OPEN mremember stmtseq PERLY_BRACE_CLOSE */ -#line 276 "perly.y" +#line 279 "perly.y" { if (parser->copline > (line_t)(ps[-3].val.ival)) parser->copline = (line_t)(ps[-3].val.ival); (yyval.opval) = block_end((ps[-2].val.ival), (ps[-1].val.opval)); @@ -193,32 +193,32 @@ case 2: /* @1: %empty */ break; case 23: /* mremember: %empty */ -#line 283 "perly.y" +#line 286 "perly.y" { (yyval.ival) = block_start(FALSE); parser->parsed_sub = 0; } break; case 25: /* $@8: %empty */ -#line 292 "perly.y" +#line 295 "perly.y" { parser->in_my = KEY_catch; } break; case 26: /* $@9: %empty */ -#line 294 "perly.y" +#line 297 "perly.y" { parser->in_my = 0; intro_my(); } break; case 27: /* catch_paren: PERLY_PAREN_OPEN $@8 scalar $@9 PERLY_PAREN_CLOSE */ -#line 296 "perly.y" +#line 299 "perly.y" { (yyval.opval) = (ps[-2].val.opval); } break; case 29: /* stmtseq: stmtseq fullstmt */ -#line 303 "perly.y" +#line 306 "perly.y" { (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-1].val.opval), (ps[0].val.opval)); PL_pad_reset_pending = TRUE; if ((ps[-1].val.opval) && (ps[0].val.opval)) @@ -228,7 +228,7 @@ case 2: /* @1: %empty */ break; case 31: /* formstmtseq: formstmtseq formline */ -#line 314 "perly.y" +#line 317 "perly.y" { (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-1].val.opval), (ps[0].val.opval)); PL_pad_reset_pending = TRUE; if ((ps[-1].val.opval) && (ps[0].val.opval)) @@ -238,7 +238,7 @@ case 2: /* @1: %empty */ break; case 32: /* fullstmt: barestmt */ -#line 323 "perly.y" +#line 326 "perly.y" { (yyval.opval) = (ps[0].val.opval) ? newSTATEOP(0, NULL, (ps[0].val.opval)) : NULL; } @@ -246,13 +246,13 @@ case 2: /* @1: %empty */ break; case 33: /* fullstmt: labfullstmt */ -#line 327 "perly.y" +#line 330 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; case 34: /* labfullstmt: LABEL barestmt */ -#line 331 "perly.y" +#line 334 "perly.y" { SV *label = cSVOPx_sv((ps[-1].val.opval)); (yyval.opval) = newSTATEOP(SvFLAGS(label) & SVf_UTF8, @@ -263,7 +263,7 @@ case 2: /* @1: %empty */ break; case 35: /* labfullstmt: LABEL labfullstmt */ -#line 338 "perly.y" +#line 341 "perly.y" { SV *label = cSVOPx_sv((ps[-1].val.opval)); (yyval.opval) = newSTATEOP(SvFLAGS(label) & SVf_UTF8, @@ -274,13 +274,13 @@ case 2: /* @1: %empty */ break; case 36: /* barestmt: PLUGSTMT */ -#line 348 "perly.y" +#line 351 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; case 37: /* barestmt: KW_FORMAT startformsub formname formblock */ -#line 350 "perly.y" +#line 353 "perly.y" { CV *fmtcv = PL_compcv; newFORM((ps[-2].val.ival), (ps[-1].val.opval), (ps[0].val.opval)); @@ -294,7 +294,7 @@ case 2: /* @1: %empty */ break; case 38: /* $@10: %empty */ -#line 362 "perly.y" +#line 365 "perly.y" { init_named_cv(PL_compcv, (ps[-1].val.opval)); parser->in_my = 0; @@ -304,7 +304,7 @@ case 2: /* @1: %empty */ break; case 39: /* barestmt: KW_SUB_named subname startsub $@10 proto subattrlist optsubbody */ -#line 368 "perly.y" +#line 371 "perly.y" { SvREFCNT_inc_simple_void(PL_compcv); (ps[-5].val.opval)->op_type == OP_CONST @@ -319,7 +319,7 @@ case 2: /* @1: %empty */ break; case 40: /* $@11: %empty */ -#line 383 "perly.y" +#line 386 "perly.y" { init_named_cv(PL_compcv, (ps[-1].val.opval)); if((ps[-2].val.ival) == KW_METHOD_named) { @@ -333,7 +333,7 @@ case 2: /* @1: %empty */ break; case 41: /* barestmt: sigsub_or_method_named subname startsub $@11 subattrlist optsigsubbody */ -#line 393 "perly.y" +#line 396 "perly.y" { OP *body = (ps[0].val.opval); @@ -350,7 +350,7 @@ case 2: /* @1: %empty */ break; case 42: /* $@12: %empty */ -#line 406 "perly.y" +#line 409 "perly.y" { switch((ps[-1].val.ival)) { case KEY_ADJUST: @@ -365,7 +365,7 @@ case 2: /* @1: %empty */ break; case 43: /* barestmt: PHASER startsub $@12 optsubbody */ -#line 417 "perly.y" +#line 420 "perly.y" { OP *body = (ps[0].val.opval); SvREFCNT_inc_simple_void(PL_compcv); @@ -384,7 +384,7 @@ case 2: /* @1: %empty */ break; case 44: /* barestmt: KW_PACKAGE BAREWORD BAREWORD PERLY_SEMICOLON */ -#line 436 "perly.y" +#line 439 "perly.y" { package((ps[-1].val.opval)); if ((ps[-2].val.opval)) @@ -395,7 +395,7 @@ case 2: /* @1: %empty */ break; case 45: /* barestmt: KW_CLASS BAREWORD BAREWORD subattrlist PERLY_SEMICOLON */ -#line 443 "perly.y" +#line 446 "perly.y" { package((ps[-2].val.opval)); if ((ps[-3].val.opval)) @@ -410,13 +410,13 @@ case 2: /* @1: %empty */ break; case 46: /* $@13: %empty */ -#line 454 "perly.y" +#line 457 "perly.y" { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ } break; case 47: /* barestmt: KW_USE_or_NO startsub $@13 BAREWORD BAREWORD optlistexpr PERLY_SEMICOLON */ -#line 458 "perly.y" +#line 461 "perly.y" { SvREFCNT_inc_simple_void(PL_compcv); utilize((ps[-6].val.ival), (ps[-5].val.ival), (ps[-3].val.opval), (ps[-2].val.opval), (ps[-1].val.opval)); @@ -427,7 +427,7 @@ case 2: /* @1: %empty */ break; case 48: /* barestmt: KW_IF PERLY_PAREN_OPEN remember mexpr PERLY_PAREN_CLOSE mblock else */ -#line 465 "perly.y" +#line 468 "perly.y" { (yyval.opval) = block_end((ps[-4].val.ival), newCONDOP(0, (ps[-3].val.opval), op_scope((ps[-1].val.opval)), (ps[0].val.opval))); @@ -437,7 +437,7 @@ case 2: /* @1: %empty */ break; case 49: /* barestmt: KW_UNLESS PERLY_PAREN_OPEN remember mexpr PERLY_PAREN_CLOSE mblock else */ -#line 471 "perly.y" +#line 474 "perly.y" { (yyval.opval) = block_end((ps[-4].val.ival), newCONDOP(0, (ps[-3].val.opval), (ps[0].val.opval), op_scope((ps[-1].val.opval)))); @@ -447,7 +447,7 @@ case 2: /* @1: %empty */ break; case 50: /* barestmt: KW_GIVEN PERLY_PAREN_OPEN remember mexpr PERLY_PAREN_CLOSE mblock */ -#line 477 "perly.y" +#line 480 "perly.y" { (yyval.opval) = block_end((ps[-3].val.ival), newGIVENOP((ps[-2].val.opval), op_scope((ps[0].val.opval)), 0)); parser->copline = (line_t)(ps[-5].val.ival); @@ -456,19 +456,19 @@ case 2: /* @1: %empty */ break; case 51: /* barestmt: KW_WHEN PERLY_PAREN_OPEN remember mexpr PERLY_PAREN_CLOSE mblock */ -#line 482 "perly.y" +#line 485 "perly.y" { (yyval.opval) = block_end((ps[-3].val.ival), newWHENOP((ps[-2].val.opval), op_scope((ps[0].val.opval)))); } break; case 52: /* barestmt: KW_DEFAULT block */ -#line 484 "perly.y" +#line 487 "perly.y" { (yyval.opval) = newWHENOP(0, op_scope((ps[0].val.opval))); } break; case 53: /* barestmt: KW_WHILE PERLY_PAREN_OPEN remember texpr PERLY_PAREN_CLOSE mintro mblock cont */ -#line 486 "perly.y" +#line 489 "perly.y" { (yyval.opval) = block_end((ps[-5].val.ival), newWHILEOP(0, 1, NULL, @@ -479,7 +479,7 @@ case 2: /* @1: %empty */ break; case 54: /* barestmt: KW_UNTIL PERLY_PAREN_OPEN remember iexpr PERLY_PAREN_CLOSE mintro mblock cont */ -#line 493 "perly.y" +#line 496 "perly.y" { (yyval.opval) = block_end((ps[-5].val.ival), newWHILEOP(0, 1, NULL, @@ -490,19 +490,19 @@ case 2: /* @1: %empty */ break; case 55: /* $@14: %empty */ -#line 500 "perly.y" +#line 503 "perly.y" { parser->expect = XTERM; } break; case 56: /* $@15: %empty */ -#line 502 "perly.y" +#line 505 "perly.y" { parser->expect = XTERM; } break; case 57: /* barestmt: KW_FOR PERLY_PAREN_OPEN remember mnexpr PERLY_SEMICOLON $@14 texpr PERLY_SEMICOLON $@15 mintro mnexpr PERLY_PAREN_CLOSE mblock */ -#line 505 "perly.y" +#line 508 "perly.y" { OP *initop = (ps[-9].val.opval); OP *forop = newWHILEOP(0, 1, NULL, @@ -521,7 +521,7 @@ case 2: /* @1: %empty */ break; case 58: /* barestmt: KW_FOR KW_MY remember my_scalar PERLY_PAREN_OPEN mexpr PERLY_PAREN_CLOSE mblock cont */ -#line 520 "perly.y" +#line 523 "perly.y" { (yyval.opval) = block_end((ps[-6].val.ival), newFOROP(0, (ps[-5].val.opval), (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval))); parser->copline = (line_t)(ps[-8].val.ival); @@ -530,7 +530,7 @@ case 2: /* @1: %empty */ break; case 59: /* barestmt: KW_FOR KW_MY remember PERLY_PAREN_OPEN my_list_of_scalars PERLY_PAREN_CLOSE PERLY_PAREN_OPEN mexpr PERLY_PAREN_CLOSE mblock cont */ -#line 525 "perly.y" +#line 528 "perly.y" { if ((ps[-6].val.opval)->op_type == OP_PADSV) /* degenerate case of 1 var: for my ($x) .... @@ -543,7 +543,7 @@ case 2: /* @1: %empty */ break; case 60: /* barestmt: KW_FOR scalar PERLY_PAREN_OPEN remember mexpr PERLY_PAREN_CLOSE mblock cont */ -#line 534 "perly.y" +#line 537 "perly.y" { (yyval.opval) = block_end((ps[-4].val.ival), newFOROP(0, op_lvalue((ps[-6].val.opval), OP_ENTERLOOP), (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval))); @@ -553,13 +553,13 @@ case 2: /* @1: %empty */ break; case 61: /* @16: %empty */ -#line 540 "perly.y" +#line 543 "perly.y" { parser->in_my = 0; (yyval.opval) = my((ps[0].val.opval)); } break; case 62: /* barestmt: KW_FOR my_refgen remember my_var @16 PERLY_PAREN_OPEN mexpr PERLY_PAREN_CLOSE mblock cont */ -#line 542 "perly.y" +#line 545 "perly.y" { (yyval.opval) = block_end( (ps[-7].val.ival), @@ -576,7 +576,7 @@ case 2: /* @1: %empty */ break; case 63: /* barestmt: KW_FOR REFGEN refgen_topic PERLY_PAREN_OPEN remember mexpr PERLY_PAREN_CLOSE mblock cont */ -#line 555 "perly.y" +#line 558 "perly.y" { (yyval.opval) = block_end((ps[-4].val.ival), newFOROP( 0, op_lvalue(newUNOP(OP_REFGEN, 0, @@ -588,7 +588,7 @@ case 2: /* @1: %empty */ break; case 64: /* barestmt: KW_FOR PERLY_PAREN_OPEN remember mexpr PERLY_PAREN_CLOSE mblock cont */ -#line 563 "perly.y" +#line 566 "perly.y" { (yyval.opval) = block_end((ps[-4].val.ival), newFOROP(0, NULL, (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval))); @@ -598,7 +598,7 @@ case 2: /* @1: %empty */ break; case 65: /* $@17: %empty */ -#line 569 "perly.y" +#line 572 "perly.y" { if(!(ps[0].val.opval)) { yyerror("catch block requires a (VAR)"); @@ -609,7 +609,7 @@ case 2: /* @1: %empty */ break; case 66: /* barestmt: KW_TRY mblock KW_CATCH remember catch_paren $@17 mblock finally */ -#line 576 "perly.y" +#line 579 "perly.y" { (yyval.opval) = newTRYCATCHOP(0, (ps[-6].val.opval), (ps[-3].val.opval), block_end((ps[-4].val.ival), op_scope((ps[-1].val.opval)))); @@ -621,7 +621,7 @@ case 2: /* @1: %empty */ break; case 67: /* barestmt: block cont */ -#line 584 "perly.y" +#line 587 "perly.y" { /* a block is a loop that happens once */ (yyval.opval) = newWHILEOP(0, 1, NULL, @@ -631,7 +631,7 @@ case 2: /* @1: %empty */ break; case 68: /* $@18: %empty */ -#line 590 "perly.y" +#line 593 "perly.y" { package((ps[-2].val.opval)); if ((ps[-3].val.opval)) { @@ -642,7 +642,7 @@ case 2: /* @1: %empty */ break; case 69: /* barestmt: KW_PACKAGE BAREWORD BAREWORD PERLY_BRACE_OPEN remember $@18 stmtseq PERLY_BRACE_CLOSE */ -#line 597 "perly.y" +#line 600 "perly.y" { /* a block is a loop that happens once */ (yyval.opval) = newWHILEOP(0, 1, NULL, @@ -654,7 +654,7 @@ case 2: /* @1: %empty */ break; case 70: /* $@19: %empty */ -#line 605 "perly.y" +#line 608 "perly.y" { package((ps[-3].val.opval)); @@ -670,7 +670,7 @@ case 2: /* @1: %empty */ break; case 71: /* barestmt: KW_CLASS BAREWORD BAREWORD subattrlist PERLY_BRACE_OPEN remember $@19 stmtseq PERLY_BRACE_CLOSE */ -#line 617 "perly.y" +#line 620 "perly.y" { /* a block is a loop that happens once */ (yyval.opval) = newWHILEOP(0, 1, NULL, @@ -682,7 +682,7 @@ case 2: /* @1: %empty */ break; case 72: /* barestmt: fielddecl PERLY_SEMICOLON */ -#line 625 "perly.y" +#line 628 "perly.y" { (yyval.opval) = (ps[-1].val.opval); } @@ -690,7 +690,7 @@ case 2: /* @1: %empty */ break; case 73: /* barestmt: sideff PERLY_SEMICOLON */ -#line 629 "perly.y" +#line 632 "perly.y" { (yyval.opval) = (ps[-1].val.opval); } @@ -698,7 +698,7 @@ case 2: /* @1: %empty */ break; case 74: /* barestmt: KW_DEFER mblock */ -#line 633 "perly.y" +#line 636 "perly.y" { (yyval.opval) = newDEFEROP(0, op_scope((ps[0].val.opval))); } @@ -706,7 +706,7 @@ case 2: /* @1: %empty */ break; case 75: /* barestmt: YADAYADA PERLY_SEMICOLON */ -#line 637 "perly.y" +#line 640 "perly.y" { /* diag_listed_as: Unimplemented */ (yyval.opval) = newLISTOP(OP_DIE, 0, newOP(OP_PUSHMARK, 0), @@ -716,7 +716,7 @@ case 2: /* @1: %empty */ break; case 76: /* barestmt: PERLY_SEMICOLON */ -#line 643 "perly.y" +#line 646 "perly.y" { (yyval.opval) = NULL; parser->copline = NOLINE; @@ -725,7 +725,7 @@ case 2: /* @1: %empty */ break; case 77: /* formline: THING formarg */ -#line 651 "perly.y" +#line 654 "perly.y" { OP *list; if ((ps[0].val.opval)) { OP *term = (ps[0].val.opval); @@ -744,62 +744,62 @@ case 2: /* @1: %empty */ break; case 79: /* formarg: FORMLBRACK stmtseq FORMRBRACK */ -#line 670 "perly.y" +#line 673 "perly.y" { (yyval.opval) = op_unscope((ps[-1].val.opval)); } break; case 81: /* sideff: error */ -#line 678 "perly.y" +#line 681 "perly.y" { (yyval.opval) = NULL; } break; case 82: /* sideff: expr */ -#line 680 "perly.y" +#line 683 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; case 83: /* sideff: expr KW_IF condition */ -#line 682 "perly.y" +#line 685 "perly.y" { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[0].val.opval), (ps[-2].val.opval)); } break; case 84: /* sideff: expr KW_UNLESS condition */ -#line 684 "perly.y" +#line 687 "perly.y" { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[0].val.opval), (ps[-2].val.opval)); } break; case 85: /* sideff: expr KW_WHILE condition */ -#line 686 "perly.y" +#line 689 "perly.y" { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, scalar((ps[0].val.opval)), (ps[-2].val.opval)); } break; case 86: /* sideff: expr KW_UNTIL iexpr */ -#line 688 "perly.y" +#line 691 "perly.y" { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, (ps[0].val.opval), (ps[-2].val.opval)); } break; case 87: /* sideff: expr KW_FOR condition */ -#line 690 "perly.y" +#line 693 "perly.y" { (yyval.opval) = newFOROP(0, NULL, (ps[0].val.opval), (ps[-2].val.opval), NULL); parser->copline = (line_t)(ps[-1].val.ival); } break; case 88: /* sideff: expr KW_WHEN condition */ -#line 693 "perly.y" +#line 696 "perly.y" { (yyval.opval) = newWHENOP((ps[0].val.opval), op_scope((ps[-2].val.opval))); } break; case 90: /* else: KW_ELSE mblock */ -#line 700 "perly.y" +#line 703 "perly.y" { ((ps[0].val.opval))->op_flags |= OPf_PARENS; (yyval.opval) = op_scope((ps[0].val.opval)); @@ -808,7 +808,7 @@ case 2: /* @1: %empty */ break; case 91: /* else: KW_ELSIF PERLY_PAREN_OPEN mexpr PERLY_PAREN_CLOSE mblock else */ -#line 705 "perly.y" +#line 708 "perly.y" { parser->copline = (line_t)(ps[-5].val.ival); (yyval.opval) = newCONDOP(0, newSTATEOP(OPf_SPECIAL,NULL,(ps[-3].val.opval)), @@ -819,25 +819,25 @@ case 2: /* @1: %empty */ break; case 93: /* cont: KW_CONTINUE block */ -#line 717 "perly.y" +#line 720 "perly.y" { (yyval.opval) = op_scope((ps[0].val.opval)); } break; case 94: /* finally: %empty */ -#line 722 "perly.y" +#line 725 "perly.y" { (yyval.opval) = NULL; } break; case 95: /* finally: KW_FINALLY block */ -#line 724 "perly.y" +#line 727 "perly.y" { (yyval.opval) = op_scope((ps[0].val.opval)); } break; case 96: /* mintro: %empty */ -#line 729 "perly.y" +#line 732 "perly.y" { (yyval.ival) = (PL_min_intro_pending && PL_max_intro_pending >= PL_min_intro_pending); intro_my(); } @@ -845,7 +845,7 @@ case 2: /* @1: %empty */ break; case 99: /* texpr: %empty */ -#line 741 "perly.y" +#line 744 "perly.y" { YYSTYPE tmplval; (void)scan_num("1", &tmplval); (yyval.opval) = tmplval.opval; } @@ -853,59 +853,59 @@ case 2: /* @1: %empty */ break; case 101: /* iexpr: expr */ -#line 749 "perly.y" +#line 752 "perly.y" { (yyval.opval) = invert(scalar((ps[0].val.opval))); } break; case 102: /* mexpr: expr */ -#line 754 "perly.y" +#line 757 "perly.y" { (yyval.opval) = (ps[0].val.opval); intro_my(); } break; case 103: /* mnexpr: nexpr */ -#line 758 "perly.y" +#line 761 "perly.y" { (yyval.opval) = (ps[0].val.opval); intro_my(); } break; case 104: /* formname: BAREWORD */ -#line 761 "perly.y" +#line 764 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; case 106: /* startsub: %empty */ -#line 766 "perly.y" +#line 769 "perly.y" { (yyval.ival) = start_subparse(FALSE, 0); SAVEFREESV(PL_compcv); } break; case 107: /* startanonsub: %empty */ -#line 772 "perly.y" +#line 775 "perly.y" { (yyval.ival) = start_subparse(FALSE, CVf_ANON); SAVEFREESV(PL_compcv); } break; case 108: /* startanonmethod: %empty */ -#line 777 "perly.y" +#line 780 "perly.y" { (yyval.ival) = start_subparse(FALSE, CVf_ANON|CVf_IsMETHOD); SAVEFREESV(PL_compcv); } break; case 109: /* startformsub: %empty */ -#line 782 "perly.y" +#line 785 "perly.y" { (yyval.ival) = start_subparse(TRUE, 0); SAVEFREESV(PL_compcv); } break; case 115: /* subattrlist: COLONATTR THING */ -#line 801 "perly.y" +#line 804 "perly.y" { OP *attrlist = (ps[0].val.opval); if(attrlist && !PL_parser->sig_seen) @@ -916,49 +916,49 @@ case 2: /* @1: %empty */ break; case 116: /* subattrlist: COLONATTR */ -#line 808 "perly.y" +#line 811 "perly.y" { (yyval.opval) = NULL; } break; case 117: /* myattrlist: COLONATTR THING */ -#line 813 "perly.y" +#line 816 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; case 118: /* myattrlist: COLONATTR */ -#line 815 "perly.y" +#line 818 "perly.y" { (yyval.opval) = NULL; } break; case 119: /* sigvar: %empty */ -#line 826 "perly.y" +#line 829 "perly.y" { parser->in_my = 0; (yyval.ival) = 0; } break; case 120: /* sigvar: PRIVATEREF */ -#line 828 "perly.y" +#line 831 "perly.y" { parser->in_my = 0; (yyval.ival) = (ps[0].val.opval)->op_targ; op_free((ps[0].val.opval)); } break; case 121: /* sigslurpsigil: PERLY_SNAIL */ -#line 833 "perly.y" +#line 836 "perly.y" { (yyval.ival) = '@'; } break; case 122: /* sigslurpsigil: PERLY_PERCENT_SIGN */ -#line 835 "perly.y" +#line 838 "perly.y" { (yyval.ival) = '%'; } break; case 123: /* sigslurpelem: sigslurpsigil sigvar */ -#line 839 "perly.y" +#line 842 "perly.y" { subsignature_append_slurpy((ps[-1].val.ival), (ps[0].val.ival)); (yyval.opval) = NULL; @@ -967,7 +967,7 @@ case 2: /* @1: %empty */ break; case 124: /* sigslurpelem: sigslurpsigil sigvar ASSIGNOP */ -#line 844 "perly.y" +#line 847 "perly.y" { yyerror("A slurpy parameter may not have a default value"); } @@ -975,7 +975,7 @@ case 2: /* @1: %empty */ break; case 125: /* sigslurpelem: sigslurpsigil sigvar ASSIGNOP term */ -#line 848 "perly.y" +#line 851 "perly.y" { yyerror("A slurpy parameter may not have a default value"); } @@ -983,7 +983,7 @@ case 2: /* @1: %empty */ break; case 126: /* sigscalarelem: PERLY_DOLLAR sigvar */ -#line 856 "perly.y" +#line 859 "perly.y" { subsignature_append_positional((ps[0].val.ival), 0, NULL); (yyval.opval) = NULL; @@ -992,7 +992,7 @@ case 2: /* @1: %empty */ break; case 127: /* sigscalarelem: PERLY_DOLLAR sigvar ASSIGNOP optsigscalardefault */ -#line 861 "perly.y" +#line 864 "perly.y" { subsignature_append_positional((ps[-2].val.ival), (ps[-1].val.ival), (ps[0].val.opval)); (yyval.opval) = NULL; @@ -1001,31 +1001,31 @@ case 2: /* @1: %empty */ break; case 128: /* optsigscalardefault: %empty */ -#line 869 "perly.y" +#line 872 "perly.y" { (yyval.opval) = newOP(OP_NULL, 0); } break; case 130: /* sigelem: sigscalarelem */ -#line 876 "perly.y" +#line 879 "perly.y" { parser->in_my = KEY_sigvar; (yyval.opval) = (ps[0].val.opval); } break; case 131: /* sigelem: sigslurpelem */ -#line 878 "perly.y" +#line 881 "perly.y" { parser->in_my = KEY_sigvar; (yyval.opval) = (ps[0].val.opval); } break; case 139: /* subsignature: PERLY_PAREN_OPEN subsigguts PERLY_PAREN_CLOSE */ -#line 904 "perly.y" +#line 907 "perly.y" { (yyval.opval) = (ps[-1].val.opval); } break; case 140: /* $@20: %empty */ -#line 907 "perly.y" +#line 910 "perly.y" { ENTER; subsignature_start(); @@ -1035,7 +1035,7 @@ case 2: /* @1: %empty */ break; case 141: /* subsigguts: $@20 optsiglist */ -#line 913 "perly.y" +#line 916 "perly.y" { if (!FEATURE_SIGNATURES_IS_ENABLED && !CvIsMETHOD(PL_compcv)) croak("Experimental " @@ -1063,13 +1063,13 @@ case 2: /* @1: %empty */ break; case 143: /* optsubbody: PERLY_SEMICOLON */ -#line 941 "perly.y" +#line 944 "perly.y" { (yyval.opval) = NULL; } break; case 144: /* subbody: remember PERLY_BRACE_OPEN stmtseq PERLY_BRACE_CLOSE */ -#line 947 "perly.y" +#line 950 "perly.y" { if (parser->copline > (line_t)(ps[-2].val.ival)) parser->copline = (line_t)(ps[-2].val.ival); @@ -1079,19 +1079,19 @@ case 2: /* @1: %empty */ break; case 146: /* optsigsubbody: PERLY_SEMICOLON */ -#line 959 "perly.y" +#line 962 "perly.y" { (yyval.opval) = NULL; } break; case 147: /* $@21: %empty */ -#line 964 "perly.y" +#line 967 "perly.y" { PL_parser->sig_seen = FALSE; } break; case 148: /* sigsubbody: remember optsubsignature PERLY_BRACE_OPEN $@21 stmtseq PERLY_BRACE_CLOSE */ -#line 966 "perly.y" +#line 969 "perly.y" { if (parser->copline > (line_t)(ps[-3].val.ival)) parser->copline = (line_t)(ps[-3].val.ival); @@ -1102,37 +1102,37 @@ case 2: /* @1: %empty */ break; case 149: /* expr: expr ANDOP expr */ -#line 977 "perly.y" +#line 980 "perly.y" { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); } break; case 150: /* expr: expr PLUGIN_LOGICAL_AND_LOW_OP expr */ -#line 979 "perly.y" +#line 982 "perly.y" { (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); } break; case 151: /* expr: expr OROP expr */ -#line 981 "perly.y" +#line 984 "perly.y" { (yyval.opval) = newLOGOP((ps[-1].val.ival), 0, (ps[-2].val.opval), (ps[0].val.opval)); } break; case 152: /* expr: expr PLUGIN_LOGICAL_OR_LOW_OP expr */ -#line 983 "perly.y" +#line 986 "perly.y" { (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); } break; case 154: /* listexpr: listexpr PERLY_COMMA */ -#line 989 "perly.y" +#line 992 "perly.y" { (yyval.opval) = (ps[-1].val.opval); } break; case 155: /* listexpr: listexpr PERLY_COMMA term */ -#line 991 "perly.y" +#line 994 "perly.y" { OP* term = (ps[0].val.opval); (yyval.opval) = op_append_elem(OP_LIST, (ps[-2].val.opval), term); @@ -1141,7 +1141,7 @@ case 2: /* @1: %empty */ break; case 157: /* listop: LSTOP indirob listexpr */ -#line 1000 "perly.y" +#line 1003 "perly.y" { (yyval.opval) = op_convert_list((ps[-2].val.ival), OPf_STACKED, op_prepend_elem(OP_LIST, newGVREF((ps[-2].val.ival),(ps[-1].val.opval)), (ps[0].val.opval)) ); } @@ -1149,7 +1149,7 @@ case 2: /* @1: %empty */ break; case 158: /* listop: BLKLSTOP block listexpr */ -#line 1004 "perly.y" +#line 1007 "perly.y" { (yyval.opval) = op_convert_list((ps[-2].val.ival), OPf_STACKED, op_prepend_elem(OP_LIST, newUNOP(OP_NULL, 0, op_scope((ps[-1].val.opval))), (ps[0].val.opval)) ); } @@ -1157,7 +1157,7 @@ case 2: /* @1: %empty */ break; case 159: /* listop: FUNC PERLY_PAREN_OPEN indirob expr PERLY_PAREN_CLOSE */ -#line 1008 "perly.y" +#line 1011 "perly.y" { (yyval.opval) = op_convert_list((ps[-4].val.ival), OPf_STACKED, op_prepend_elem(OP_LIST, newGVREF((ps[-4].val.ival),(ps[-2].val.opval)), (ps[-1].val.opval)) ); } @@ -1165,7 +1165,7 @@ case 2: /* @1: %empty */ break; case 160: /* listop: term ARROW methodname PERLY_PAREN_OPEN optexpr PERLY_PAREN_CLOSE */ -#line 1012 "perly.y" +#line 1015 "perly.y" { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, op_prepend_elem(OP_LIST, scalar((ps[-5].val.opval)), (ps[-1].val.opval)), @@ -1175,7 +1175,7 @@ case 2: /* @1: %empty */ break; case 161: /* listop: term ARROW methodname */ -#line 1018 "perly.y" +#line 1021 "perly.y" { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, scalar((ps[-2].val.opval)), newMETHOP(OP_METHOD, 0, (ps[0].val.opval)))); @@ -1184,7 +1184,7 @@ case 2: /* @1: %empty */ break; case 162: /* listop: term ARROW PERLY_AMPERSAND subname PERLY_PAREN_OPEN optexpr PERLY_PAREN_CLOSE */ -#line 1023 "perly.y" +#line 1026 "perly.y" { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, op_prepend_elem(OP_LIST, scalar((ps[-6].val.opval)), (ps[-1].val.opval)), @@ -1194,7 +1194,7 @@ case 2: /* @1: %empty */ break; case 163: /* listop: term ARROW PERLY_AMPERSAND subname */ -#line 1029 "perly.y" +#line 1032 "perly.y" { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, scalar((ps[-3].val.opval)), @@ -1204,7 +1204,7 @@ case 2: /* @1: %empty */ break; case 164: /* listop: METHCALL0 indirob optlistexpr */ -#line 1035 "perly.y" +#line 1038 "perly.y" { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, op_prepend_elem(OP_LIST, (ps[-1].val.opval), (ps[0].val.opval)), @@ -1214,7 +1214,7 @@ case 2: /* @1: %empty */ break; case 165: /* listop: METHCALL indirob PERLY_PAREN_OPEN optexpr PERLY_PAREN_CLOSE */ -#line 1041 "perly.y" +#line 1044 "perly.y" { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, op_prepend_elem(OP_LIST, (ps[-3].val.opval), (ps[-1].val.opval)), @@ -1224,25 +1224,25 @@ case 2: /* @1: %empty */ break; case 166: /* listop: LSTOP optlistexpr */ -#line 1047 "perly.y" +#line 1050 "perly.y" { (yyval.opval) = op_convert_list((ps[-1].val.ival), 0, (ps[0].val.opval)); } break; case 167: /* listop: FUNC PERLY_PAREN_OPEN optexpr PERLY_PAREN_CLOSE */ -#line 1049 "perly.y" +#line 1052 "perly.y" { (yyval.opval) = op_convert_list((ps[-3].val.ival), 0, (ps[-1].val.opval)); } break; case 168: /* listop: FUNC SUBLEXSTART optexpr SUBLEXEND */ -#line 1051 "perly.y" +#line 1054 "perly.y" { (yyval.opval) = op_convert_list((ps[-3].val.ival), 0, (ps[-1].val.opval)); } break; case 169: /* @22: %empty */ -#line 1053 "perly.y" +#line 1056 "perly.y" { SvREFCNT_inc_simple_void(PL_compcv); (yyval.opval) = newANONATTRSUB((ps[-1].val.ival), 0, NULL, (ps[0].val.opval)); /* prevent double op_free() if the following fails to parse */ @@ -1252,7 +1252,7 @@ case 2: /* @1: %empty */ break; case 170: /* listop: LSTOPSUB startanonsub block @22 optlistexpr */ -#line 1059 "perly.y" +#line 1062 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, op_prepend_elem(OP_LIST, (ps[-1].val.opval), (ps[0].val.opval)), (ps[-4].val.opval))); @@ -1261,20 +1261,20 @@ case 2: /* @1: %empty */ break; case 173: /* subscripted: gelem PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE */ -#line 1074 "perly.y" +#line 1077 "perly.y" { (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[-4].val.opval), scalar((ps[-2].val.opval))); } break; case 174: /* subscripted: scalar PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ -#line 1076 "perly.y" +#line 1079 "perly.y" { (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((ps[-3].val.opval)), scalar((ps[-1].val.opval))); } break; case 175: /* subscripted: term ARROW PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ -#line 1079 "perly.y" +#line 1082 "perly.y" { (yyval.opval) = newBINOP(OP_AELEM, 0, ref(newAVREF((ps[-4].val.opval)),OP_RV2AV), scalar((ps[-1].val.opval))); @@ -1283,7 +1283,7 @@ case 2: /* @1: %empty */ break; case 176: /* subscripted: subscripted PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ -#line 1084 "perly.y" +#line 1087 "perly.y" { (yyval.opval) = newBINOP(OP_AELEM, 0, ref(newAVREF((ps[-3].val.opval)),OP_RV2AV), scalar((ps[-1].val.opval))); @@ -1292,14 +1292,14 @@ case 2: /* @1: %empty */ break; case 177: /* subscripted: scalar PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE */ -#line 1089 "perly.y" +#line 1092 "perly.y" { (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((ps[-4].val.opval)), jmaybe((ps[-2].val.opval))); } break; case 178: /* subscripted: term ARROW PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE */ -#line 1092 "perly.y" +#line 1095 "perly.y" { (yyval.opval) = newBINOP(OP_HELEM, 0, ref(newHVREF((ps[-5].val.opval)),OP_RV2HV), jmaybe((ps[-2].val.opval))); } @@ -1307,7 +1307,7 @@ case 2: /* @1: %empty */ break; case 179: /* subscripted: subscripted PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE */ -#line 1096 "perly.y" +#line 1099 "perly.y" { (yyval.opval) = newBINOP(OP_HELEM, 0, ref(newHVREF((ps[-4].val.opval)),OP_RV2HV), jmaybe((ps[-2].val.opval))); } @@ -1315,7 +1315,7 @@ case 2: /* @1: %empty */ break; case 180: /* subscripted: term ARROW PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ -#line 1100 "perly.y" +#line 1103 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, newCVREF(0, scalar((ps[-3].val.opval)))); if (parser->expect == XBLOCK) @@ -1325,7 +1325,7 @@ case 2: /* @1: %empty */ break; case 181: /* subscripted: term ARROW PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */ -#line 1106 "perly.y" +#line 1109 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, (ps[-1].val.opval), newCVREF(0, scalar((ps[-4].val.opval))))); @@ -1336,7 +1336,7 @@ case 2: /* @1: %empty */ break; case 182: /* subscripted: subscripted PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */ -#line 1114 "perly.y" +#line 1117 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, (ps[-1].val.opval), newCVREF(0, scalar((ps[-3].val.opval))))); @@ -1347,7 +1347,7 @@ case 2: /* @1: %empty */ break; case 183: /* subscripted: subscripted PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ -#line 1121 "perly.y" +#line 1124 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, newCVREF(0, scalar((ps[-2].val.opval)))); if (parser->expect == XBLOCK) @@ -1357,55 +1357,55 @@ case 2: /* @1: %empty */ break; case 184: /* subscripted: PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ -#line 1127 "perly.y" +#line 1130 "perly.y" { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-4].val.opval)); } break; case 185: /* subscripted: QWLIST PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ -#line 1129 "perly.y" +#line 1132 "perly.y" { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-3].val.opval)); } break; case 186: /* subscripted: PERLY_PAREN_OPEN PERLY_PAREN_CLOSE PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ -#line 1131 "perly.y" +#line 1134 "perly.y" { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), NULL); } break; case 187: /* termbinop: term PLUGIN_HIGH_OP term */ -#line 1136 "perly.y" +#line 1139 "perly.y" { (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); } break; case 188: /* termbinop: term ASSIGNOP term */ -#line 1138 "perly.y" +#line 1141 "perly.y" { (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[-2].val.opval), (ps[-1].val.ival), (ps[0].val.opval)); } break; case 189: /* termbinop: term PLUGIN_ASSIGN_OP term */ -#line 1140 "perly.y" +#line 1143 "perly.y" { (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); } break; case 190: /* termbinop: term POWOP term */ -#line 1142 "perly.y" +#line 1145 "perly.y" { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; case 191: /* termbinop: term PLUGIN_POW_OP term */ -#line 1144 "perly.y" +#line 1147 "perly.y" { (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); } break; case 192: /* termbinop: term MULOP term */ -#line 1146 "perly.y" +#line 1149 "perly.y" { if ((ps[-1].val.ival) != OP_REPEAT) scalar((ps[-2].val.opval)); (yyval.opval) = newBINOP((ps[-1].val.ival), 0, (ps[-2].val.opval), scalar((ps[0].val.opval))); @@ -1414,219 +1414,235 @@ case 2: /* @1: %empty */ break; case 193: /* termbinop: term PLUGIN_MUL_OP term */ -#line 1151 "perly.y" +#line 1154 "perly.y" { (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); } break; case 194: /* termbinop: term ADDOP term */ -#line 1153 "perly.y" +#line 1156 "perly.y" { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; case 195: /* termbinop: term PLUGIN_ADD_OP term */ -#line 1155 "perly.y" +#line 1158 "perly.y" { (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); } break; case 196: /* termbinop: term SHIFTOP term */ -#line 1157 "perly.y" +#line 1160 "perly.y" { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; case 197: /* termbinop: termrelop */ -#line 1159 "perly.y" +#line 1162 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; case 198: /* termbinop: termeqop */ -#line 1161 "perly.y" +#line 1164 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; case 199: /* termbinop: term BITANDOP term */ -#line 1163 "perly.y" +#line 1166 "perly.y" { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; case 200: /* termbinop: term BITOROP term */ -#line 1165 "perly.y" +#line 1168 "perly.y" { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; case 201: /* termbinop: term DOTDOT term */ -#line 1167 "perly.y" +#line 1170 "perly.y" { (yyval.opval) = newRANGE((ps[-1].val.ival), scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; case 202: /* termbinop: term ANDAND term */ -#line 1169 "perly.y" +#line 1172 "perly.y" { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); } break; case 203: /* termbinop: term PLUGIN_LOGICAL_AND_OP term */ -#line 1171 "perly.y" +#line 1174 "perly.y" { (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); } break; case 204: /* termbinop: term OROR term */ -#line 1173 "perly.y" +#line 1176 "perly.y" { (yyval.opval) = newLOGOP((ps[-1].val.ival), 0, (ps[-2].val.opval), (ps[0].val.opval)); } break; case 205: /* termbinop: term PLUGIN_LOGICAL_OR_OP term */ -#line 1175 "perly.y" +#line 1178 "perly.y" { (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); } break; case 206: /* termbinop: term DORDOR term */ -#line 1177 "perly.y" +#line 1180 "perly.y" { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[-2].val.opval), (ps[0].val.opval)); } break; case 207: /* termbinop: term MATCHOP term */ -#line 1179 "perly.y" +#line 1182 "perly.y" { (yyval.opval) = bind_match((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); } break; case 208: /* termbinop: term PLUGIN_LOW_OP term */ -#line 1181 "perly.y" +#line 1184 "perly.y" { (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); } break; case 209: /* termrelop: relopchain */ -#line 1185 "perly.y" +#line 1188 "perly.y" { (yyval.opval) = cmpchain_finish((ps[0].val.opval)); } break; case 210: /* termrelop: term NCRELOP term */ -#line 1187 "perly.y" +#line 1190 "perly.y" { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; case 211: /* termrelop: termrelop NCRELOP */ -#line 1189 "perly.y" +#line 1192 "perly.y" { yyerror("syntax error"); YYERROR; } break; case 212: /* termrelop: termrelop CHRELOP */ -#line 1191 "perly.y" +#line 1194 "perly.y" { yyerror("syntax error"); YYERROR; } break; case 213: /* termrelop: term PLUGIN_REL_OP term */ -#line 1193 "perly.y" +#line 1196 "perly.y" { (yyval.opval) = build_infix_plugin((ps[-2].val.opval), (ps[0].val.opval), (ps[-1].val.pval)); } break; case 214: /* relopchain: term CHRELOP term */ -#line 1197 "perly.y" +#line 1200 "perly.y" { (yyval.opval) = cmpchain_start((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); } break; case 215: /* relopchain: relopchain CHRELOP term */ -#line 1199 "perly.y" +#line 1202 "perly.y" { (yyval.opval) = cmpchain_extend((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); } break; case 216: /* termeqop: eqopchain */ -#line 1203 "perly.y" +#line 1206 "perly.y" { (yyval.opval) = cmpchain_finish((ps[0].val.opval)); } break; case 217: /* termeqop: term NCEQOP term */ -#line 1205 "perly.y" +#line 1208 "perly.y" { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; case 218: /* termeqop: termeqop NCEQOP */ -#line 1207 "perly.y" +#line 1210 "perly.y" { yyerror("syntax error"); YYERROR; } break; case 219: /* termeqop: termeqop CHEQOP */ -#line 1209 "perly.y" +#line 1212 "perly.y" { yyerror("syntax error"); YYERROR; } break; - case 220: /* eqopchain: term CHEQOP term */ -#line 1213 "perly.y" - { (yyval.opval) = cmpchain_start((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); } + case 220: /* optopflags: %empty */ +#line 1216 "perly.y" + { (yyval.svval) = NULL; } break; - case 221: /* eqopchain: eqopchain CHEQOP term */ -#line 1215 "perly.y" - { (yyval.opval) = cmpchain_extend((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); } + case 222: /* eqopchain: term CHEQOP optopflags term */ +#line 1221 "perly.y" + { U32 opcode = (ps[-2].val.ival); + if((ps[-1].val.svval)) { + SAVEFREESV((ps[-1].val.svval)); + opcode = apply_opflags(opcode, SvPV_nolen((ps[-1].val.svval))); + } + (yyval.opval) = cmpchain_start(opcode, (ps[-3].val.opval), (ps[0].val.opval)); } break; - case 222: /* termunop: PERLY_MINUS term */ -#line 1220 "perly.y" + case 223: /* eqopchain: eqopchain CHEQOP optopflags term */ +#line 1228 "perly.y" + { U32 opcode = (ps[-2].val.ival); + if((ps[-1].val.svval)) { + SAVEFREESV((ps[-1].val.svval)); + opcode = apply_opflags(opcode, SvPV_nolen((ps[-1].val.svval))); + } + (yyval.opval) = cmpchain_extend(opcode, (ps[-3].val.opval), (ps[0].val.opval)); } + + break; + + case 224: /* termunop: PERLY_MINUS term */ +#line 1238 "perly.y" { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[0].val.opval))); } break; - case 223: /* termunop: PERLY_PLUS term */ -#line 1222 "perly.y" + case 225: /* termunop: PERLY_PLUS term */ +#line 1240 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 224: /* termunop: PERLY_EXCLAMATION_MARK term */ -#line 1225 "perly.y" + case 226: /* termunop: PERLY_EXCLAMATION_MARK term */ +#line 1243 "perly.y" { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); } break; - case 225: /* termunop: PERLY_TILDE term */ -#line 1227 "perly.y" + case 227: /* termunop: PERLY_TILDE term */ +#line 1245 "perly.y" { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, scalar((ps[0].val.opval))); } break; - case 226: /* termunop: term POSTINC */ -#line 1229 "perly.y" + case 228: /* termunop: term POSTINC */ +#line 1247 "perly.y" { (yyval.opval) = newUNOP(OP_POSTINC, 0, op_lvalue(scalar((ps[-1].val.opval)), OP_POSTINC)); } break; - case 227: /* termunop: term POSTDEC */ -#line 1232 "perly.y" + case 229: /* termunop: term POSTDEC */ +#line 1250 "perly.y" { (yyval.opval) = newUNOP(OP_POSTDEC, 0, op_lvalue(scalar((ps[-1].val.opval)), OP_POSTDEC));} break; - case 228: /* termunop: term POSTJOIN */ -#line 1235 "perly.y" + case 230: /* termunop: term POSTJOIN */ +#line 1253 "perly.y" { (yyval.opval) = op_convert_list(OP_JOIN, 0, op_append_elem( OP_LIST, @@ -1640,60 +1656,60 @@ case 2: /* @1: %empty */ break; - case 229: /* termunop: PREINC term */ -#line 1246 "perly.y" + case 231: /* termunop: PREINC term */ +#line 1264 "perly.y" { (yyval.opval) = newUNOP(OP_PREINC, 0, op_lvalue(scalar((ps[0].val.opval)), OP_PREINC)); } break; - case 230: /* termunop: PREDEC term */ -#line 1249 "perly.y" + case 232: /* termunop: PREDEC term */ +#line 1267 "perly.y" { (yyval.opval) = newUNOP(OP_PREDEC, 0, op_lvalue(scalar((ps[0].val.opval)), OP_PREDEC)); } break; - case 231: /* anonymous: PERLY_BRACKET_OPEN optexpr PERLY_BRACKET_CLOSE */ -#line 1257 "perly.y" + case 233: /* anonymous: PERLY_BRACKET_OPEN optexpr PERLY_BRACKET_CLOSE */ +#line 1275 "perly.y" { (yyval.opval) = newANONLIST((ps[-1].val.opval)); } break; - case 232: /* anonymous: HASHBRACK optexpr PERLY_SEMICOLON PERLY_BRACE_CLOSE */ -#line 1259 "perly.y" + case 234: /* anonymous: HASHBRACK optexpr PERLY_SEMICOLON PERLY_BRACE_CLOSE */ +#line 1277 "perly.y" { (yyval.opval) = newANONHASH((ps[-2].val.opval)); } break; - case 233: /* anonymous: KW_SUB_anon startanonsub proto subattrlist subbody */ -#line 1261 "perly.y" + case 235: /* anonymous: KW_SUB_anon startanonsub proto subattrlist subbody */ +#line 1279 "perly.y" { SvREFCNT_inc_simple_void(PL_compcv); (yyval.opval) = newANONATTRSUB((ps[-3].val.ival), (ps[-2].val.opval), (ps[-1].val.opval), (ps[0].val.opval)); } break; - case 234: /* anonymous: KW_SUB_anon startanonsub proto subattrlist */ -#line 1264 "perly.y" + case 236: /* anonymous: KW_SUB_anon startanonsub proto subattrlist */ +#line 1282 "perly.y" { yyerror("Illegal declaration of anonymous subroutine"); YYERROR; } break; - case 235: /* anonymous: KW_SUB_anon_sig startanonsub subattrlist sigsubbody */ -#line 1266 "perly.y" + case 237: /* anonymous: KW_SUB_anon_sig startanonsub subattrlist sigsubbody */ +#line 1284 "perly.y" { SvREFCNT_inc_simple_void(PL_compcv); (yyval.opval) = newANONATTRSUB((ps[-2].val.ival), NULL, (ps[-1].val.opval), (ps[0].val.opval)); } break; - case 236: /* anonymous: KW_SUB_anon_sig startanonsub subattrlist */ -#line 1269 "perly.y" + case 238: /* anonymous: KW_SUB_anon_sig startanonsub subattrlist */ +#line 1287 "perly.y" { yyerror("Illegal declaration of anonymous subroutine"); YYERROR; } break; - case 237: /* anonymous: KW_METHOD_anon startanonmethod subattrlist sigsubbody */ -#line 1271 "perly.y" + case 239: /* anonymous: KW_METHOD_anon startanonmethod subattrlist sigsubbody */ +#line 1289 "perly.y" { SvREFCNT_inc_simple_void(PL_compcv); (yyval.opval) = newANONATTRSUB((ps[-2].val.ival), NULL, (ps[-1].val.opval), (ps[0].val.opval)); @@ -1701,104 +1717,104 @@ case 2: /* @1: %empty */ break; - case 238: /* anonymous: KW_METHOD_anon startanonmethod subattrlist */ -#line 1276 "perly.y" + case 240: /* anonymous: KW_METHOD_anon startanonmethod subattrlist */ +#line 1294 "perly.y" { yyerror("Illegal declaration of anonymous subroutine"); YYERROR; } break; - case 239: /* termdo: KW_DO term */ -#line 1281 "perly.y" + case 241: /* termdo: KW_DO term */ +#line 1299 "perly.y" { (yyval.opval) = dofile((ps[0].val.opval), (ps[-1].val.ival));} break; - case 240: /* termdo: KW_DO block */ -#line 1283 "perly.y" + case 242: /* termdo: KW_DO block */ +#line 1301 "perly.y" { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, op_scope((ps[0].val.opval)));} break; - case 245: /* term: term PERLY_QUESTION_MARK term PERLY_COLON term */ -#line 1291 "perly.y" + case 247: /* term: term PERLY_QUESTION_MARK term PERLY_COLON term */ +#line 1309 "perly.y" { (yyval.opval) = newCONDOP(0, (ps[-4].val.opval), (ps[-2].val.opval), (ps[0].val.opval)); } break; - case 246: /* term: REFGEN term */ -#line 1293 "perly.y" + case 248: /* term: REFGEN term */ +#line 1311 "perly.y" { (yyval.opval) = newUNOP(OP_REFGEN, 0, (ps[0].val.opval)); } break; - case 247: /* term: myattrterm */ -#line 1295 "perly.y" + case 249: /* term: myattrterm */ +#line 1313 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 248: /* term: KW_LOCAL term */ -#line 1297 "perly.y" + case 250: /* term: KW_LOCAL term */ +#line 1315 "perly.y" { (yyval.opval) = localize((ps[0].val.opval),0); } break; - case 249: /* term: PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */ -#line 1299 "perly.y" + case 251: /* term: PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */ +#line 1317 "perly.y" { (yyval.opval) = sawparens((ps[-1].val.opval)); } break; - case 250: /* term: QWLIST */ -#line 1301 "perly.y" + case 252: /* term: QWLIST */ +#line 1319 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 251: /* term: PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ -#line 1303 "perly.y" + case 253: /* term: PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ +#line 1321 "perly.y" { (yyval.opval) = sawparens(newNULLLIST()); } break; - case 252: /* term: scalar */ -#line 1305 "perly.y" + case 254: /* term: scalar */ +#line 1323 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 253: /* term: star */ -#line 1307 "perly.y" + case 255: /* term: star */ +#line 1325 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 254: /* term: hsh */ -#line 1309 "perly.y" + case 256: /* term: hsh */ +#line 1327 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 255: /* term: ary */ -#line 1311 "perly.y" + case 257: /* term: ary */ +#line 1329 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 256: /* term: arylen */ -#line 1313 "perly.y" + case 258: /* term: arylen */ +#line 1331 "perly.y" { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[0].val.opval), OP_AV2ARYLEN));} break; - case 257: /* term: subscripted */ -#line 1315 "perly.y" + case 259: /* term: subscripted */ +#line 1333 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 258: /* term: sliceme PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ -#line 1317 "perly.y" + case 260: /* term: sliceme PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ +#line 1335 "perly.y" { (yyval.opval) = op_prepend_elem(OP_ASLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_ASLICE, 0, @@ -1811,8 +1827,8 @@ case 2: /* @1: %empty */ break; - case 259: /* term: kvslice PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ -#line 1327 "perly.y" + case 261: /* term: kvslice PERLY_BRACKET_OPEN expr PERLY_BRACKET_CLOSE */ +#line 1345 "perly.y" { (yyval.opval) = op_prepend_elem(OP_KVASLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_KVASLICE, 0, @@ -1825,8 +1841,8 @@ case 2: /* @1: %empty */ break; - case 260: /* term: sliceme PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE */ -#line 1337 "perly.y" + case 262: /* term: sliceme PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE */ +#line 1355 "perly.y" { (yyval.opval) = op_prepend_elem(OP_HSLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_HSLICE, 0, @@ -1839,8 +1855,8 @@ case 2: /* @1: %empty */ break; - case 261: /* term: kvslice PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE */ -#line 1347 "perly.y" + case 263: /* term: kvslice PERLY_BRACE_OPEN expr PERLY_SEMICOLON PERLY_BRACE_CLOSE */ +#line 1365 "perly.y" { (yyval.opval) = op_prepend_elem(OP_KVHSLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_KVHSLICE, 0, @@ -1853,27 +1869,27 @@ case 2: /* @1: %empty */ break; - case 262: /* term: THING */ -#line 1357 "perly.y" + case 264: /* term: THING */ +#line 1375 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 263: /* term: amper */ -#line 1359 "perly.y" + case 265: /* term: amper */ +#line 1377 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[0].val.opval))); } break; - case 264: /* term: amper PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ -#line 1361 "perly.y" + case 266: /* term: amper PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ +#line 1379 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[-2].val.opval))); } break; - case 265: /* term: amper PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */ -#line 1364 "perly.y" + case 267: /* term: amper PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */ +#line 1382 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, (ps[-1].val.opval), scalar((ps[-3].val.opval)))); @@ -1881,153 +1897,153 @@ case 2: /* @1: %empty */ break; - case 266: /* term: NOAMP subname optlistexpr */ -#line 1369 "perly.y" + case 268: /* term: NOAMP subname optlistexpr */ +#line 1387 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, (ps[0].val.opval), scalar((ps[-1].val.opval)))); } break; - case 267: /* term: term ARROW PERLY_DOLLAR PERLY_STAR */ -#line 1373 "perly.y" + case 269: /* term: term ARROW PERLY_DOLLAR PERLY_STAR */ +#line 1391 "perly.y" { (yyval.opval) = newSVREF((ps[-3].val.opval)); } break; - case 268: /* term: term ARROW PERLY_SNAIL PERLY_STAR */ -#line 1375 "perly.y" + case 270: /* term: term ARROW PERLY_SNAIL PERLY_STAR */ +#line 1393 "perly.y" { (yyval.opval) = newAVREF((ps[-3].val.opval)); } break; - case 269: /* term: term ARROW PERLY_PERCENT_SIGN PERLY_STAR */ -#line 1377 "perly.y" + case 271: /* term: term ARROW PERLY_PERCENT_SIGN PERLY_STAR */ +#line 1395 "perly.y" { (yyval.opval) = newHVREF((ps[-3].val.opval)); } break; - case 270: /* term: term ARROW PERLY_AMPERSAND PERLY_STAR */ -#line 1379 "perly.y" + case 272: /* term: term ARROW PERLY_AMPERSAND PERLY_STAR */ +#line 1397 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar(newCVREF((ps[-1].val.ival),(ps[-3].val.opval)))); } break; - case 271: /* term: term ARROW PERLY_STAR PERLY_STAR */ -#line 1382 "perly.y" + case 273: /* term: term ARROW PERLY_STAR PERLY_STAR */ +#line 1400 "perly.y" { (yyval.opval) = newGVREF(0,(ps[-3].val.opval)); } break; - case 272: /* term: LOOPEX */ -#line 1384 "perly.y" + case 274: /* term: LOOPEX */ +#line 1402 "perly.y" { (yyval.opval) = newOP((ps[0].val.ival), OPf_SPECIAL); PL_hints |= HINT_BLOCK_SCOPE; } break; - case 273: /* term: LOOPEX term */ -#line 1387 "perly.y" + case 275: /* term: LOOPEX term */ +#line 1405 "perly.y" { (yyval.opval) = newLOOPEX((ps[-1].val.ival),(ps[0].val.opval)); } break; - case 274: /* term: NOTOP listexpr */ -#line 1389 "perly.y" + case 276: /* term: NOTOP listexpr */ +#line 1407 "perly.y" { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); } break; - case 275: /* term: UNIOP */ -#line 1391 "perly.y" + case 277: /* term: UNIOP */ +#line 1409 "perly.y" { (yyval.opval) = newOP((ps[0].val.ival), 0); } break; - case 276: /* term: UNIOP block */ -#line 1393 "perly.y" + case 278: /* term: UNIOP block */ +#line 1411 "perly.y" { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, (ps[0].val.opval)); } break; - case 277: /* term: UNIOP term */ -#line 1395 "perly.y" + case 279: /* term: UNIOP term */ +#line 1413 "perly.y" { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, (ps[0].val.opval)); } break; - case 278: /* term: KW_REQUIRE */ -#line 1397 "perly.y" + case 280: /* term: KW_REQUIRE */ +#line 1415 "perly.y" { (yyval.opval) = newOP(OP_REQUIRE, (ps[0].val.ival) ? OPf_SPECIAL : 0); } break; - case 279: /* term: KW_REQUIRE term */ -#line 1399 "perly.y" + case 281: /* term: KW_REQUIRE term */ +#line 1417 "perly.y" { (yyval.opval) = newUNOP(OP_REQUIRE, (ps[-1].val.ival) ? OPf_SPECIAL : 0, (ps[0].val.opval)); } break; - case 280: /* term: UNIOPSUB */ -#line 1401 "perly.y" + case 282: /* term: UNIOPSUB */ +#line 1419 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); } break; - case 281: /* term: UNIOPSUB term */ -#line 1403 "perly.y" + case 283: /* term: UNIOPSUB term */ +#line 1421 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, (ps[0].val.opval), scalar((ps[-1].val.opval)))); } break; - case 282: /* term: FUNC0 */ -#line 1406 "perly.y" + case 284: /* term: FUNC0 */ +#line 1424 "perly.y" { (yyval.opval) = newOP((ps[0].val.ival), 0); } break; - case 283: /* term: FUNC0 PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ -#line 1408 "perly.y" + case 285: /* term: FUNC0 PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ +#line 1426 "perly.y" { (yyval.opval) = newOP((ps[-2].val.ival), 0);} break; - case 284: /* term: FUNC0OP */ -#line 1410 "perly.y" + case 286: /* term: FUNC0OP */ +#line 1428 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 285: /* term: FUNC0OP PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ -#line 1412 "perly.y" + case 287: /* term: FUNC0OP PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ +#line 1430 "perly.y" { (yyval.opval) = (ps[-2].val.opval); } break; - case 286: /* term: FUNC0SUB */ -#line 1414 "perly.y" + case 288: /* term: FUNC0SUB */ +#line 1432 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); } break; - case 287: /* term: FUNC1 PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ -#line 1416 "perly.y" + case 289: /* term: FUNC1 PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ +#line 1434 "perly.y" { (yyval.opval) = ((ps[-2].val.ival) == OP_NOT) ? newUNOP((ps[-2].val.ival), 0, newSVOP(OP_CONST, 0, newSViv(0))) : newOP((ps[-2].val.ival), OPf_SPECIAL); } break; - case 288: /* term: FUNC1 PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */ -#line 1420 "perly.y" + case 290: /* term: FUNC1 PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */ +#line 1438 "perly.y" { (yyval.opval) = newUNOP((ps[-3].val.ival), 0, (ps[-1].val.opval)); } break; - case 289: /* @23: %empty */ -#line 1422 "perly.y" + case 291: /* @23: %empty */ +#line 1440 "perly.y" { if ( (ps[0].val.opval)->op_type != OP_TRANS && (ps[0].val.opval)->op_type != OP_TRANSR @@ -2041,68 +2057,68 @@ case 2: /* @1: %empty */ break; - case 290: /* term: PMFUNC @23 SUBLEXSTART listexpr optrepl SUBLEXEND */ -#line 1433 "perly.y" + case 292: /* term: PMFUNC @23 SUBLEXSTART listexpr optrepl SUBLEXEND */ +#line 1451 "perly.y" { (yyval.opval) = pmruntime((ps[-5].val.opval), (ps[-2].val.opval), (ps[-1].val.opval), 1, (ps[-4].val.ival)); } break; - case 294: /* myattrterm: KW_MY myterm myattrlist */ -#line 1442 "perly.y" + case 296: /* myattrterm: KW_MY myterm myattrlist */ +#line 1460 "perly.y" { (yyval.opval) = my_attrs((ps[-1].val.opval),(ps[0].val.opval)); } break; - case 295: /* myattrterm: KW_MY myterm */ -#line 1444 "perly.y" + case 297: /* myattrterm: KW_MY myterm */ +#line 1462 "perly.y" { (yyval.opval) = localize((ps[0].val.opval),1); } break; - case 296: /* myattrterm: KW_MY REFGEN myterm myattrlist */ -#line 1446 "perly.y" + case 298: /* myattrterm: KW_MY REFGEN myterm myattrlist */ +#line 1464 "perly.y" { (yyval.opval) = newUNOP(OP_REFGEN, 0, my_attrs((ps[-1].val.opval),(ps[0].val.opval))); } break; - case 297: /* myattrterm: KW_MY REFGEN term */ -#line 1448 "perly.y" + case 299: /* myattrterm: KW_MY REFGEN term */ +#line 1466 "perly.y" { (yyval.opval) = newUNOP(OP_REFGEN, 0, localize((ps[0].val.opval),1)); } break; - case 298: /* myterm: PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */ -#line 1453 "perly.y" + case 300: /* myterm: PERLY_PAREN_OPEN expr PERLY_PAREN_CLOSE */ +#line 1471 "perly.y" { (yyval.opval) = sawparens((ps[-1].val.opval)); } break; - case 299: /* myterm: PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ -#line 1455 "perly.y" + case 301: /* myterm: PERLY_PAREN_OPEN PERLY_PAREN_CLOSE */ +#line 1473 "perly.y" { (yyval.opval) = sawparens(newNULLLIST()); } break; - case 300: /* myterm: scalar */ -#line 1458 "perly.y" + case 302: /* myterm: scalar */ +#line 1476 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 301: /* myterm: hsh */ -#line 1460 "perly.y" + case 303: /* myterm: hsh */ +#line 1478 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 302: /* myterm: ary */ -#line 1462 "perly.y" + case 304: /* myterm: ary */ +#line 1480 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 303: /* fieldvar: scalar */ -#line 1467 "perly.y" + case 305: /* fieldvar: scalar */ +#line 1485 "perly.y" { (yyval.pval) = PadnamelistARRAY(PL_comppad_name)[(ps[0].val.opval)->op_targ]; op_free((ps[0].val.opval)); @@ -2110,8 +2126,8 @@ case 2: /* @1: %empty */ break; - case 304: /* fieldvar: hsh */ -#line 1472 "perly.y" + case 306: /* fieldvar: hsh */ +#line 1490 "perly.y" { (yyval.pval) = PadnamelistARRAY(PL_comppad_name)[(ps[0].val.opval)->op_targ]; op_free((ps[0].val.opval)); @@ -2119,8 +2135,8 @@ case 2: /* @1: %empty */ break; - case 305: /* fieldvar: ary */ -#line 1477 "perly.y" + case 307: /* fieldvar: ary */ +#line 1495 "perly.y" { (yyval.pval) = PadnamelistARRAY(PL_comppad_name)[(ps[0].val.opval)->op_targ]; op_free((ps[0].val.opval)); @@ -2128,20 +2144,20 @@ case 2: /* @1: %empty */ break; - case 306: /* optfieldattrlist: COLONATTR THING */ -#line 1485 "perly.y" + case 308: /* optfieldattrlist: COLONATTR THING */ +#line 1503 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 307: /* optfieldattrlist: COLONATTR */ -#line 1487 "perly.y" + case 309: /* optfieldattrlist: COLONATTR */ +#line 1505 "perly.y" { (yyval.opval) = NULL; } break; - case 309: /* fielddecl: KW_FIELD fieldvar optfieldattrlist */ -#line 1493 "perly.y" + case 311: /* fielddecl: KW_FIELD fieldvar optfieldattrlist */ +#line 1511 "perly.y" { parser->in_my = 0; if((ps[0].val.opval)) @@ -2151,8 +2167,8 @@ case 2: /* @1: %empty */ break; - case 310: /* $@24: %empty */ -#line 1500 "perly.y" + case 312: /* $@24: %empty */ +#line 1518 "perly.y" { parser->in_my = 0; if((ps[-1].val.opval)) @@ -2163,8 +2179,8 @@ case 2: /* @1: %empty */ break; - case 311: /* fielddecl: KW_FIELD fieldvar optfieldattrlist ASSIGNOP $@24 term */ -#line 1508 "perly.y" + case 313: /* fielddecl: KW_FIELD fieldvar optfieldattrlist ASSIGNOP $@24 term */ +#line 1526 "perly.y" { class_set_field_defop((PADNAME *)(ps[-4].val.pval), (ps[-2].val.ival), (ps[0].val.opval)); LEAVE; @@ -2173,122 +2189,122 @@ case 2: /* @1: %empty */ break; - case 317: /* optrepl: PERLY_SLASH expr */ -#line 1528 "perly.y" + case 319: /* optrepl: PERLY_SLASH expr */ +#line 1546 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; - case 318: /* my_scalar: scalar */ -#line 1534 "perly.y" + case 320: /* my_scalar: scalar */ +#line 1552 "perly.y" { parser->in_my = 0; (yyval.opval) = my((ps[0].val.opval)); } break; - case 319: /* list_of_scalars: list_of_scalars PERLY_COMMA */ -#line 1539 "perly.y" + case 321: /* list_of_scalars: list_of_scalars PERLY_COMMA */ +#line 1557 "perly.y" { (yyval.opval) = (ps[-1].val.opval); } break; - case 320: /* list_of_scalars: list_of_scalars PERLY_COMMA scalar */ -#line 1541 "perly.y" + case 322: /* list_of_scalars: list_of_scalars PERLY_COMMA scalar */ +#line 1559 "perly.y" { (yyval.opval) = op_append_elem(OP_LIST, (ps[-2].val.opval), (ps[0].val.opval)); } break; - case 322: /* my_list_of_scalars: list_of_scalars */ -#line 1548 "perly.y" + case 324: /* my_list_of_scalars: list_of_scalars */ +#line 1566 "perly.y" { parser->in_my = 0; (yyval.opval) = (ps[0].val.opval); } break; - case 330: /* amper: PERLY_AMPERSAND indirob */ -#line 1565 "perly.y" + case 332: /* amper: PERLY_AMPERSAND indirob */ +#line 1583 "perly.y" { (yyval.opval) = newCVREF((ps[-1].val.ival),(ps[0].val.opval)); } break; - case 331: /* scalar: PERLY_DOLLAR indirob */ -#line 1569 "perly.y" + case 333: /* scalar: PERLY_DOLLAR indirob */ +#line 1587 "perly.y" { (yyval.opval) = newSVREF((ps[0].val.opval)); } break; - case 332: /* ary: PERLY_SNAIL indirob */ -#line 1573 "perly.y" + case 334: /* ary: PERLY_SNAIL indirob */ +#line 1591 "perly.y" { (yyval.opval) = newAVREF((ps[0].val.opval)); if ((yyval.opval)) (yyval.opval)->op_private |= (ps[-1].val.ival); } break; - case 333: /* hsh: PERLY_PERCENT_SIGN indirob */ -#line 1579 "perly.y" + case 335: /* hsh: PERLY_PERCENT_SIGN indirob */ +#line 1597 "perly.y" { (yyval.opval) = newHVREF((ps[0].val.opval)); if ((yyval.opval)) (yyval.opval)->op_private |= (ps[-1].val.ival); } break; - case 334: /* arylen: DOLSHARP indirob */ -#line 1585 "perly.y" + case 336: /* arylen: DOLSHARP indirob */ +#line 1603 "perly.y" { (yyval.opval) = newAVREF((ps[0].val.opval)); } break; - case 335: /* arylen: term ARROW DOLSHARP PERLY_STAR */ -#line 1587 "perly.y" + case 337: /* arylen: term ARROW DOLSHARP PERLY_STAR */ +#line 1605 "perly.y" { (yyval.opval) = newAVREF((ps[-3].val.opval)); } break; - case 336: /* star: PERLY_STAR indirob */ -#line 1591 "perly.y" + case 338: /* star: PERLY_STAR indirob */ +#line 1609 "perly.y" { (yyval.opval) = newGVREF(0,(ps[0].val.opval)); } break; - case 338: /* sliceme: term ARROW PERLY_SNAIL */ -#line 1596 "perly.y" + case 340: /* sliceme: term ARROW PERLY_SNAIL */ +#line 1614 "perly.y" { (yyval.opval) = newAVREF((ps[-2].val.opval)); } break; - case 340: /* kvslice: term ARROW PERLY_PERCENT_SIGN */ -#line 1601 "perly.y" + case 342: /* kvslice: term ARROW PERLY_PERCENT_SIGN */ +#line 1619 "perly.y" { (yyval.opval) = newHVREF((ps[-2].val.opval)); } break; - case 342: /* gelem: term ARROW PERLY_STAR */ -#line 1606 "perly.y" + case 344: /* gelem: term ARROW PERLY_STAR */ +#line 1624 "perly.y" { (yyval.opval) = newGVREF(0,(ps[-2].val.opval)); } break; - case 343: /* indirob: BAREWORD */ -#line 1611 "perly.y" + case 345: /* indirob: BAREWORD */ +#line 1629 "perly.y" { (yyval.opval) = scalar((ps[0].val.opval)); } break; - case 344: /* indirob: scalar */ -#line 1613 "perly.y" + case 346: /* indirob: scalar */ +#line 1631 "perly.y" { (yyval.opval) = scalar((ps[0].val.opval)); } break; - case 345: /* indirob: block */ -#line 1615 "perly.y" + case 347: /* indirob: block */ +#line 1633 "perly.y" { (yyval.opval) = op_scope((ps[0].val.opval)); } break; - case 346: /* indirob: PRIVATEREF */ -#line 1618 "perly.y" + case 348: /* indirob: PRIVATEREF */ +#line 1636 "perly.y" { (yyval.opval) = (ps[0].val.opval); } break; @@ -2300,6 +2316,6 @@ case 2: /* @1: %empty */ /* Generated from: - * c36bc8f06e0d028fe375ec5042a868f1249c42d01a2da5b7be104611f300ff06 perly.y - * f13e9c08cea6302f0c1d1f467405bd0e0880d0ea92d0669901017a7f7e94ab28 regen_perly.pl + * 1d9e721bda634afa2864ec0da6c61f3f2cf3b3e1796b079d426c2b8f9c2db62c perly.y + * 6353b7a4fdf3e67f2196c3ed55c684ba252625686c4f21c9ff7e67a312925e3b regen_perly.pl * ex: set ro ft=c: */ diff --git a/perly.c b/perly.c index a81618146d5a..54fdac502ef0 100644 --- a/perly.c +++ b/perly.c @@ -166,6 +166,9 @@ yy_stack_print (pTHX_ const yy_parser *parser) case toketype_ival: PerlIO_printf(Perl_debug_log, " %8" IVdf, (IV)ps->val.ival); break; + case toketype_svval: + PerlIO_printf(Perl_debug_log, " 0x%" UVxf, PTR2UV(ps->val.svval)); + break; default: PerlIO_printf(Perl_debug_log, " %8" UVxf, (UV)ps->val.ival); } @@ -242,8 +245,8 @@ S_clear_yystack(pTHX_ void *arg) while (ps > parser->stack) { LEAVE_SCOPE(ps->savestack_ix); - if (yy_type_tab[yystos[ps->state]] == toketype_opval - && ps->val.opval) + toketypes toketype = yy_type_tab[yystos[ps->state]]; + if (toketype == toketype_opval && ps->val.opval) { if (ps->compcv && (ps->compcv != PL_compcv)) { PL_compcv = ps->compcv; @@ -253,6 +256,10 @@ S_clear_yystack(pTHX_ void *arg) YYDPRINTF ((Perl_debug_log, "(freeing op)\n")); op_free(ps->val.opval); } + else if (toketype == toketype_svval && ps->val.svval) { + YYDPRINTF ((Perl_debug_log, "(freeing SV)\n")); + SvREFCNT_dec(ps->val.svval); + } SvREFCNT_dec(ps->compcv); ps--; } diff --git a/perly.h b/perly.h index 330a5c5dce46..9656367d498e 100644 --- a/perly.h +++ b/perly.h @@ -150,47 +150,48 @@ extern int yydebug; SUBLEXSTART = 344, /* SUBLEXSTART */ SUBLEXEND = 345, /* SUBLEXEND */ PHASER = 346, /* PHASER */ - PREC_LOW = 347, /* PREC_LOW */ - PLUGIN_LOW_OP = 348, /* PLUGIN_LOW_OP */ - OROP = 349, /* OROP */ - PLUGIN_LOGICAL_OR_LOW_OP = 350, /* PLUGIN_LOGICAL_OR_LOW_OP */ - ANDOP = 351, /* ANDOP */ - PLUGIN_LOGICAL_AND_LOW_OP = 352, /* PLUGIN_LOGICAL_AND_LOW_OP */ - NOTOP = 353, /* NOTOP */ - ASSIGNOP = 354, /* ASSIGNOP */ - PLUGIN_ASSIGN_OP = 355, /* PLUGIN_ASSIGN_OP */ - PERLY_QUESTION_MARK = 356, /* PERLY_QUESTION_MARK */ - PERLY_COLON = 357, /* PERLY_COLON */ - OROR = 358, /* OROR */ - DORDOR = 359, /* DORDOR */ - PLUGIN_LOGICAL_OR_OP = 360, /* PLUGIN_LOGICAL_OR_OP */ - ANDAND = 361, /* ANDAND */ - PLUGIN_LOGICAL_AND_OP = 362, /* PLUGIN_LOGICAL_AND_OP */ - BITOROP = 363, /* BITOROP */ - BITANDOP = 364, /* BITANDOP */ - CHEQOP = 365, /* CHEQOP */ - NCEQOP = 366, /* NCEQOP */ - CHRELOP = 367, /* CHRELOP */ - NCRELOP = 368, /* NCRELOP */ - PLUGIN_REL_OP = 369, /* PLUGIN_REL_OP */ - SHIFTOP = 370, /* SHIFTOP */ - PLUGIN_ADD_OP = 371, /* PLUGIN_ADD_OP */ - PLUGIN_MUL_OP = 372, /* PLUGIN_MUL_OP */ - MATCHOP = 373, /* MATCHOP */ - PERLY_EXCLAMATION_MARK = 374, /* PERLY_EXCLAMATION_MARK */ - PERLY_TILDE = 375, /* PERLY_TILDE */ - UMINUS = 376, /* UMINUS */ - REFGEN = 377, /* REFGEN */ - PLUGIN_POW_OP = 378, /* PLUGIN_POW_OP */ - PREINC = 379, /* PREINC */ - PREDEC = 380, /* PREDEC */ - POSTINC = 381, /* POSTINC */ - POSTDEC = 382, /* POSTDEC */ - POSTJOIN = 383, /* POSTJOIN */ - PLUGIN_HIGH_OP = 384, /* PLUGIN_HIGH_OP */ - ARROW = 385, /* ARROW */ - PERLY_PAREN_CLOSE = 386, /* PERLY_PAREN_CLOSE */ - PERLY_PAREN_OPEN = 387 /* PERLY_PAREN_OPEN */ + OPFLAGS = 347, /* OPFLAGS */ + PREC_LOW = 348, /* PREC_LOW */ + PLUGIN_LOW_OP = 349, /* PLUGIN_LOW_OP */ + OROP = 350, /* OROP */ + PLUGIN_LOGICAL_OR_LOW_OP = 351, /* PLUGIN_LOGICAL_OR_LOW_OP */ + ANDOP = 352, /* ANDOP */ + PLUGIN_LOGICAL_AND_LOW_OP = 353, /* PLUGIN_LOGICAL_AND_LOW_OP */ + NOTOP = 354, /* NOTOP */ + ASSIGNOP = 355, /* ASSIGNOP */ + PLUGIN_ASSIGN_OP = 356, /* PLUGIN_ASSIGN_OP */ + PERLY_QUESTION_MARK = 357, /* PERLY_QUESTION_MARK */ + PERLY_COLON = 358, /* PERLY_COLON */ + OROR = 359, /* OROR */ + DORDOR = 360, /* DORDOR */ + PLUGIN_LOGICAL_OR_OP = 361, /* PLUGIN_LOGICAL_OR_OP */ + ANDAND = 362, /* ANDAND */ + PLUGIN_LOGICAL_AND_OP = 363, /* PLUGIN_LOGICAL_AND_OP */ + BITOROP = 364, /* BITOROP */ + BITANDOP = 365, /* BITANDOP */ + CHEQOP = 366, /* CHEQOP */ + NCEQOP = 367, /* NCEQOP */ + CHRELOP = 368, /* CHRELOP */ + NCRELOP = 369, /* NCRELOP */ + PLUGIN_REL_OP = 370, /* PLUGIN_REL_OP */ + SHIFTOP = 371, /* SHIFTOP */ + PLUGIN_ADD_OP = 372, /* PLUGIN_ADD_OP */ + PLUGIN_MUL_OP = 373, /* PLUGIN_MUL_OP */ + MATCHOP = 374, /* MATCHOP */ + PERLY_EXCLAMATION_MARK = 375, /* PERLY_EXCLAMATION_MARK */ + PERLY_TILDE = 376, /* PERLY_TILDE */ + UMINUS = 377, /* UMINUS */ + REFGEN = 378, /* REFGEN */ + PLUGIN_POW_OP = 379, /* PLUGIN_POW_OP */ + PREINC = 380, /* PREINC */ + PREDEC = 381, /* PREDEC */ + POSTINC = 382, /* POSTINC */ + POSTDEC = 383, /* POSTDEC */ + POSTJOIN = 384, /* POSTJOIN */ + PLUGIN_HIGH_OP = 385, /* PLUGIN_HIGH_OP */ + ARROW = 386, /* ARROW */ + PERLY_PAREN_CLOSE = 387, /* PERLY_PAREN_CLOSE */ + PERLY_PAREN_OPEN = 388 /* PERLY_PAREN_OPEN */ }; typedef enum yytokentype yytoken_kind_t; #endif @@ -230,6 +231,7 @@ union YYSTYPE void *pval; OP *opval; GV *gvval; + SV *svval; }; @@ -246,6 +248,6 @@ int yyparse (void); /* Generated from: - * c36bc8f06e0d028fe375ec5042a868f1249c42d01a2da5b7be104611f300ff06 perly.y - * f13e9c08cea6302f0c1d1f467405bd0e0880d0ea92d0669901017a7f7e94ab28 regen_perly.pl + * 1d9e721bda634afa2864ec0da6c61f3f2cf3b3e1796b079d426c2b8f9c2db62c perly.y + * 6353b7a4fdf3e67f2196c3ed55c684ba252625686c4f21c9ff7e67a312925e3b regen_perly.pl * ex: set ro ft=c: */ diff --git a/perly.tab b/perly.tab index 2d2de6914fc3..78af67e721d3 100644 --- a/perly.tab +++ b/perly.tab @@ -100,161 +100,163 @@ enum yysymbol_kind_t YYSYMBOL_SUBLEXSTART = 89, /* SUBLEXSTART */ YYSYMBOL_SUBLEXEND = 90, /* SUBLEXEND */ YYSYMBOL_PHASER = 91, /* PHASER */ - YYSYMBOL_PREC_LOW = 92, /* PREC_LOW */ - YYSYMBOL_PLUGIN_LOW_OP = 93, /* PLUGIN_LOW_OP */ - YYSYMBOL_OROP = 94, /* OROP */ - YYSYMBOL_PLUGIN_LOGICAL_OR_LOW_OP = 95, /* PLUGIN_LOGICAL_OR_LOW_OP */ - YYSYMBOL_ANDOP = 96, /* ANDOP */ - YYSYMBOL_PLUGIN_LOGICAL_AND_LOW_OP = 97, /* PLUGIN_LOGICAL_AND_LOW_OP */ - YYSYMBOL_NOTOP = 98, /* NOTOP */ - YYSYMBOL_ASSIGNOP = 99, /* ASSIGNOP */ - YYSYMBOL_PLUGIN_ASSIGN_OP = 100, /* PLUGIN_ASSIGN_OP */ - YYSYMBOL_PERLY_QUESTION_MARK = 101, /* PERLY_QUESTION_MARK */ - YYSYMBOL_PERLY_COLON = 102, /* PERLY_COLON */ - YYSYMBOL_OROR = 103, /* OROR */ - YYSYMBOL_DORDOR = 104, /* DORDOR */ - YYSYMBOL_PLUGIN_LOGICAL_OR_OP = 105, /* PLUGIN_LOGICAL_OR_OP */ - YYSYMBOL_ANDAND = 106, /* ANDAND */ - YYSYMBOL_PLUGIN_LOGICAL_AND_OP = 107, /* PLUGIN_LOGICAL_AND_OP */ - YYSYMBOL_BITOROP = 108, /* BITOROP */ - YYSYMBOL_BITANDOP = 109, /* BITANDOP */ - YYSYMBOL_CHEQOP = 110, /* CHEQOP */ - YYSYMBOL_NCEQOP = 111, /* NCEQOP */ - YYSYMBOL_CHRELOP = 112, /* CHRELOP */ - YYSYMBOL_NCRELOP = 113, /* NCRELOP */ - YYSYMBOL_PLUGIN_REL_OP = 114, /* PLUGIN_REL_OP */ - YYSYMBOL_SHIFTOP = 115, /* SHIFTOP */ - YYSYMBOL_PLUGIN_ADD_OP = 116, /* PLUGIN_ADD_OP */ - YYSYMBOL_PLUGIN_MUL_OP = 117, /* PLUGIN_MUL_OP */ - YYSYMBOL_MATCHOP = 118, /* MATCHOP */ - YYSYMBOL_PERLY_EXCLAMATION_MARK = 119, /* PERLY_EXCLAMATION_MARK */ - YYSYMBOL_PERLY_TILDE = 120, /* PERLY_TILDE */ - YYSYMBOL_UMINUS = 121, /* UMINUS */ - YYSYMBOL_REFGEN = 122, /* REFGEN */ - YYSYMBOL_PLUGIN_POW_OP = 123, /* PLUGIN_POW_OP */ - YYSYMBOL_PREINC = 124, /* PREINC */ - YYSYMBOL_PREDEC = 125, /* PREDEC */ - YYSYMBOL_POSTINC = 126, /* POSTINC */ - YYSYMBOL_POSTDEC = 127, /* POSTDEC */ - YYSYMBOL_POSTJOIN = 128, /* POSTJOIN */ - YYSYMBOL_PLUGIN_HIGH_OP = 129, /* PLUGIN_HIGH_OP */ - YYSYMBOL_ARROW = 130, /* ARROW */ - YYSYMBOL_PERLY_PAREN_CLOSE = 131, /* PERLY_PAREN_CLOSE */ - YYSYMBOL_PERLY_PAREN_OPEN = 132, /* PERLY_PAREN_OPEN */ - YYSYMBOL_YYACCEPT = 133, /* $accept */ - YYSYMBOL_grammar = 134, /* grammar */ - YYSYMBOL_135_1 = 135, /* @1 */ - YYSYMBOL_136_2 = 136, /* @2 */ - YYSYMBOL_137_3 = 137, /* @3 */ - YYSYMBOL_138_4 = 138, /* @4 */ - YYSYMBOL_139_5 = 139, /* @5 */ - YYSYMBOL_140_6 = 140, /* @6 */ - YYSYMBOL_141_7 = 141, /* @7 */ - YYSYMBOL_sigsub_or_method_named = 142, /* sigsub_or_method_named */ - YYSYMBOL_block = 143, /* block */ - YYSYMBOL_empty = 144, /* empty */ - YYSYMBOL_formblock = 145, /* formblock */ - YYSYMBOL_remember = 146, /* remember */ - YYSYMBOL_mblock = 147, /* mblock */ - YYSYMBOL_mremember = 148, /* mremember */ - YYSYMBOL_catch_paren = 149, /* catch_paren */ - YYSYMBOL_150_8 = 150, /* $@8 */ - YYSYMBOL_151_9 = 151, /* $@9 */ - YYSYMBOL_stmtseq = 152, /* stmtseq */ - YYSYMBOL_formstmtseq = 153, /* formstmtseq */ - YYSYMBOL_fullstmt = 154, /* fullstmt */ - YYSYMBOL_labfullstmt = 155, /* labfullstmt */ - YYSYMBOL_barestmt = 156, /* barestmt */ - YYSYMBOL_157_10 = 157, /* $@10 */ - YYSYMBOL_158_11 = 158, /* $@11 */ - YYSYMBOL_159_12 = 159, /* $@12 */ - YYSYMBOL_160_13 = 160, /* $@13 */ - YYSYMBOL_161_14 = 161, /* $@14 */ - YYSYMBOL_162_15 = 162, /* $@15 */ - YYSYMBOL_163_16 = 163, /* @16 */ - YYSYMBOL_164_17 = 164, /* $@17 */ - YYSYMBOL_165_18 = 165, /* $@18 */ - YYSYMBOL_166_19 = 166, /* $@19 */ - YYSYMBOL_formline = 167, /* formline */ - YYSYMBOL_formarg = 168, /* formarg */ - YYSYMBOL_condition = 169, /* condition */ - YYSYMBOL_sideff = 170, /* sideff */ - YYSYMBOL_else = 171, /* else */ - YYSYMBOL_cont = 172, /* cont */ - YYSYMBOL_finally = 173, /* finally */ - YYSYMBOL_mintro = 174, /* mintro */ - YYSYMBOL_nexpr = 175, /* nexpr */ - YYSYMBOL_texpr = 176, /* texpr */ - YYSYMBOL_iexpr = 177, /* iexpr */ - YYSYMBOL_mexpr = 178, /* mexpr */ - YYSYMBOL_mnexpr = 179, /* mnexpr */ - YYSYMBOL_formname = 180, /* formname */ - YYSYMBOL_startsub = 181, /* startsub */ - YYSYMBOL_startanonsub = 182, /* startanonsub */ - YYSYMBOL_startanonmethod = 183, /* startanonmethod */ - YYSYMBOL_startformsub = 184, /* startformsub */ - YYSYMBOL_subname = 185, /* subname */ - YYSYMBOL_proto = 186, /* proto */ - YYSYMBOL_subattrlist = 187, /* subattrlist */ - YYSYMBOL_myattrlist = 188, /* myattrlist */ - YYSYMBOL_sigvar = 189, /* sigvar */ - YYSYMBOL_sigslurpsigil = 190, /* sigslurpsigil */ - YYSYMBOL_sigslurpelem = 191, /* sigslurpelem */ - YYSYMBOL_sigscalarelem = 192, /* sigscalarelem */ - YYSYMBOL_optsigscalardefault = 193, /* optsigscalardefault */ - YYSYMBOL_sigelem = 194, /* sigelem */ - YYSYMBOL_siglist = 195, /* siglist */ - YYSYMBOL_optsiglist = 196, /* optsiglist */ - YYSYMBOL_optsubsignature = 197, /* optsubsignature */ - YYSYMBOL_subsignature = 198, /* subsignature */ - YYSYMBOL_subsigguts = 199, /* subsigguts */ - YYSYMBOL_200_20 = 200, /* $@20 */ - YYSYMBOL_optsubbody = 201, /* optsubbody */ - YYSYMBOL_subbody = 202, /* subbody */ - YYSYMBOL_optsigsubbody = 203, /* optsigsubbody */ - YYSYMBOL_sigsubbody = 204, /* sigsubbody */ - YYSYMBOL_205_21 = 205, /* $@21 */ - YYSYMBOL_expr = 206, /* expr */ - YYSYMBOL_listexpr = 207, /* listexpr */ - YYSYMBOL_listop = 208, /* listop */ - YYSYMBOL_209_22 = 209, /* @22 */ - YYSYMBOL_methodname = 210, /* methodname */ - YYSYMBOL_subscripted = 211, /* subscripted */ - YYSYMBOL_termbinop = 212, /* termbinop */ - YYSYMBOL_termrelop = 213, /* termrelop */ - YYSYMBOL_relopchain = 214, /* relopchain */ - YYSYMBOL_termeqop = 215, /* termeqop */ - YYSYMBOL_eqopchain = 216, /* eqopchain */ - YYSYMBOL_termunop = 217, /* termunop */ - YYSYMBOL_anonymous = 218, /* anonymous */ - YYSYMBOL_termdo = 219, /* termdo */ - YYSYMBOL_term = 220, /* term */ - YYSYMBOL_221_23 = 221, /* @23 */ - YYSYMBOL_myattrterm = 222, /* myattrterm */ - YYSYMBOL_myterm = 223, /* myterm */ - YYSYMBOL_fieldvar = 224, /* fieldvar */ - YYSYMBOL_optfieldattrlist = 225, /* optfieldattrlist */ - YYSYMBOL_fielddecl = 226, /* fielddecl */ - YYSYMBOL_227_24 = 227, /* $@24 */ - YYSYMBOL_optlistexpr = 228, /* optlistexpr */ - YYSYMBOL_optexpr = 229, /* optexpr */ - YYSYMBOL_optrepl = 230, /* optrepl */ - YYSYMBOL_my_scalar = 231, /* my_scalar */ - YYSYMBOL_list_of_scalars = 232, /* list_of_scalars */ - YYSYMBOL_my_list_of_scalars = 233, /* my_list_of_scalars */ - YYSYMBOL_my_var = 234, /* my_var */ - YYSYMBOL_refgen_topic = 235, /* refgen_topic */ - YYSYMBOL_my_refgen = 236, /* my_refgen */ - YYSYMBOL_amper = 237, /* amper */ - YYSYMBOL_scalar = 238, /* scalar */ - YYSYMBOL_ary = 239, /* ary */ - YYSYMBOL_hsh = 240, /* hsh */ - YYSYMBOL_arylen = 241, /* arylen */ - YYSYMBOL_star = 242, /* star */ - YYSYMBOL_sliceme = 243, /* sliceme */ - YYSYMBOL_kvslice = 244, /* kvslice */ - YYSYMBOL_gelem = 245, /* gelem */ - YYSYMBOL_indirob = 246 /* indirob */ + YYSYMBOL_OPFLAGS = 92, /* OPFLAGS */ + YYSYMBOL_PREC_LOW = 93, /* PREC_LOW */ + YYSYMBOL_PLUGIN_LOW_OP = 94, /* PLUGIN_LOW_OP */ + YYSYMBOL_OROP = 95, /* OROP */ + YYSYMBOL_PLUGIN_LOGICAL_OR_LOW_OP = 96, /* PLUGIN_LOGICAL_OR_LOW_OP */ + YYSYMBOL_ANDOP = 97, /* ANDOP */ + YYSYMBOL_PLUGIN_LOGICAL_AND_LOW_OP = 98, /* PLUGIN_LOGICAL_AND_LOW_OP */ + YYSYMBOL_NOTOP = 99, /* NOTOP */ + YYSYMBOL_ASSIGNOP = 100, /* ASSIGNOP */ + YYSYMBOL_PLUGIN_ASSIGN_OP = 101, /* PLUGIN_ASSIGN_OP */ + YYSYMBOL_PERLY_QUESTION_MARK = 102, /* PERLY_QUESTION_MARK */ + YYSYMBOL_PERLY_COLON = 103, /* PERLY_COLON */ + YYSYMBOL_OROR = 104, /* OROR */ + YYSYMBOL_DORDOR = 105, /* DORDOR */ + YYSYMBOL_PLUGIN_LOGICAL_OR_OP = 106, /* PLUGIN_LOGICAL_OR_OP */ + YYSYMBOL_ANDAND = 107, /* ANDAND */ + YYSYMBOL_PLUGIN_LOGICAL_AND_OP = 108, /* PLUGIN_LOGICAL_AND_OP */ + YYSYMBOL_BITOROP = 109, /* BITOROP */ + YYSYMBOL_BITANDOP = 110, /* BITANDOP */ + YYSYMBOL_CHEQOP = 111, /* CHEQOP */ + YYSYMBOL_NCEQOP = 112, /* NCEQOP */ + YYSYMBOL_CHRELOP = 113, /* CHRELOP */ + YYSYMBOL_NCRELOP = 114, /* NCRELOP */ + YYSYMBOL_PLUGIN_REL_OP = 115, /* PLUGIN_REL_OP */ + YYSYMBOL_SHIFTOP = 116, /* SHIFTOP */ + YYSYMBOL_PLUGIN_ADD_OP = 117, /* PLUGIN_ADD_OP */ + YYSYMBOL_PLUGIN_MUL_OP = 118, /* PLUGIN_MUL_OP */ + YYSYMBOL_MATCHOP = 119, /* MATCHOP */ + YYSYMBOL_PERLY_EXCLAMATION_MARK = 120, /* PERLY_EXCLAMATION_MARK */ + YYSYMBOL_PERLY_TILDE = 121, /* PERLY_TILDE */ + YYSYMBOL_UMINUS = 122, /* UMINUS */ + YYSYMBOL_REFGEN = 123, /* REFGEN */ + YYSYMBOL_PLUGIN_POW_OP = 124, /* PLUGIN_POW_OP */ + YYSYMBOL_PREINC = 125, /* PREINC */ + YYSYMBOL_PREDEC = 126, /* PREDEC */ + YYSYMBOL_POSTINC = 127, /* POSTINC */ + YYSYMBOL_POSTDEC = 128, /* POSTDEC */ + YYSYMBOL_POSTJOIN = 129, /* POSTJOIN */ + YYSYMBOL_PLUGIN_HIGH_OP = 130, /* PLUGIN_HIGH_OP */ + YYSYMBOL_ARROW = 131, /* ARROW */ + YYSYMBOL_PERLY_PAREN_CLOSE = 132, /* PERLY_PAREN_CLOSE */ + YYSYMBOL_PERLY_PAREN_OPEN = 133, /* PERLY_PAREN_OPEN */ + YYSYMBOL_YYACCEPT = 134, /* $accept */ + YYSYMBOL_grammar = 135, /* grammar */ + YYSYMBOL_136_1 = 136, /* @1 */ + YYSYMBOL_137_2 = 137, /* @2 */ + YYSYMBOL_138_3 = 138, /* @3 */ + YYSYMBOL_139_4 = 139, /* @4 */ + YYSYMBOL_140_5 = 140, /* @5 */ + YYSYMBOL_141_6 = 141, /* @6 */ + YYSYMBOL_142_7 = 142, /* @7 */ + YYSYMBOL_sigsub_or_method_named = 143, /* sigsub_or_method_named */ + YYSYMBOL_block = 144, /* block */ + YYSYMBOL_empty = 145, /* empty */ + YYSYMBOL_formblock = 146, /* formblock */ + YYSYMBOL_remember = 147, /* remember */ + YYSYMBOL_mblock = 148, /* mblock */ + YYSYMBOL_mremember = 149, /* mremember */ + YYSYMBOL_catch_paren = 150, /* catch_paren */ + YYSYMBOL_151_8 = 151, /* $@8 */ + YYSYMBOL_152_9 = 152, /* $@9 */ + YYSYMBOL_stmtseq = 153, /* stmtseq */ + YYSYMBOL_formstmtseq = 154, /* formstmtseq */ + YYSYMBOL_fullstmt = 155, /* fullstmt */ + YYSYMBOL_labfullstmt = 156, /* labfullstmt */ + YYSYMBOL_barestmt = 157, /* barestmt */ + YYSYMBOL_158_10 = 158, /* $@10 */ + YYSYMBOL_159_11 = 159, /* $@11 */ + YYSYMBOL_160_12 = 160, /* $@12 */ + YYSYMBOL_161_13 = 161, /* $@13 */ + YYSYMBOL_162_14 = 162, /* $@14 */ + YYSYMBOL_163_15 = 163, /* $@15 */ + YYSYMBOL_164_16 = 164, /* @16 */ + YYSYMBOL_165_17 = 165, /* $@17 */ + YYSYMBOL_166_18 = 166, /* $@18 */ + YYSYMBOL_167_19 = 167, /* $@19 */ + YYSYMBOL_formline = 168, /* formline */ + YYSYMBOL_formarg = 169, /* formarg */ + YYSYMBOL_condition = 170, /* condition */ + YYSYMBOL_sideff = 171, /* sideff */ + YYSYMBOL_else = 172, /* else */ + YYSYMBOL_cont = 173, /* cont */ + YYSYMBOL_finally = 174, /* finally */ + YYSYMBOL_mintro = 175, /* mintro */ + YYSYMBOL_nexpr = 176, /* nexpr */ + YYSYMBOL_texpr = 177, /* texpr */ + YYSYMBOL_iexpr = 178, /* iexpr */ + YYSYMBOL_mexpr = 179, /* mexpr */ + YYSYMBOL_mnexpr = 180, /* mnexpr */ + YYSYMBOL_formname = 181, /* formname */ + YYSYMBOL_startsub = 182, /* startsub */ + YYSYMBOL_startanonsub = 183, /* startanonsub */ + YYSYMBOL_startanonmethod = 184, /* startanonmethod */ + YYSYMBOL_startformsub = 185, /* startformsub */ + YYSYMBOL_subname = 186, /* subname */ + YYSYMBOL_proto = 187, /* proto */ + YYSYMBOL_subattrlist = 188, /* subattrlist */ + YYSYMBOL_myattrlist = 189, /* myattrlist */ + YYSYMBOL_sigvar = 190, /* sigvar */ + YYSYMBOL_sigslurpsigil = 191, /* sigslurpsigil */ + YYSYMBOL_sigslurpelem = 192, /* sigslurpelem */ + YYSYMBOL_sigscalarelem = 193, /* sigscalarelem */ + YYSYMBOL_optsigscalardefault = 194, /* optsigscalardefault */ + YYSYMBOL_sigelem = 195, /* sigelem */ + YYSYMBOL_siglist = 196, /* siglist */ + YYSYMBOL_optsiglist = 197, /* optsiglist */ + YYSYMBOL_optsubsignature = 198, /* optsubsignature */ + YYSYMBOL_subsignature = 199, /* subsignature */ + YYSYMBOL_subsigguts = 200, /* subsigguts */ + YYSYMBOL_201_20 = 201, /* $@20 */ + YYSYMBOL_optsubbody = 202, /* optsubbody */ + YYSYMBOL_subbody = 203, /* subbody */ + YYSYMBOL_optsigsubbody = 204, /* optsigsubbody */ + YYSYMBOL_sigsubbody = 205, /* sigsubbody */ + YYSYMBOL_206_21 = 206, /* $@21 */ + YYSYMBOL_expr = 207, /* expr */ + YYSYMBOL_listexpr = 208, /* listexpr */ + YYSYMBOL_listop = 209, /* listop */ + YYSYMBOL_210_22 = 210, /* @22 */ + YYSYMBOL_methodname = 211, /* methodname */ + YYSYMBOL_subscripted = 212, /* subscripted */ + YYSYMBOL_termbinop = 213, /* termbinop */ + YYSYMBOL_termrelop = 214, /* termrelop */ + YYSYMBOL_relopchain = 215, /* relopchain */ + YYSYMBOL_termeqop = 216, /* termeqop */ + YYSYMBOL_optopflags = 217, /* optopflags */ + YYSYMBOL_eqopchain = 218, /* eqopchain */ + YYSYMBOL_termunop = 219, /* termunop */ + YYSYMBOL_anonymous = 220, /* anonymous */ + YYSYMBOL_termdo = 221, /* termdo */ + YYSYMBOL_term = 222, /* term */ + YYSYMBOL_223_23 = 223, /* @23 */ + YYSYMBOL_myattrterm = 224, /* myattrterm */ + YYSYMBOL_myterm = 225, /* myterm */ + YYSYMBOL_fieldvar = 226, /* fieldvar */ + YYSYMBOL_optfieldattrlist = 227, /* optfieldattrlist */ + YYSYMBOL_fielddecl = 228, /* fielddecl */ + YYSYMBOL_229_24 = 229, /* $@24 */ + YYSYMBOL_optlistexpr = 230, /* optlistexpr */ + YYSYMBOL_optexpr = 231, /* optexpr */ + YYSYMBOL_optrepl = 232, /* optrepl */ + YYSYMBOL_my_scalar = 233, /* my_scalar */ + YYSYMBOL_list_of_scalars = 234, /* list_of_scalars */ + YYSYMBOL_my_list_of_scalars = 235, /* my_list_of_scalars */ + YYSYMBOL_my_var = 236, /* my_var */ + YYSYMBOL_refgen_topic = 237, /* refgen_topic */ + YYSYMBOL_my_refgen = 238, /* my_refgen */ + YYSYMBOL_amper = 239, /* amper */ + YYSYMBOL_scalar = 240, /* scalar */ + YYSYMBOL_ary = 241, /* ary */ + YYSYMBOL_hsh = 242, /* hsh */ + YYSYMBOL_arylen = 243, /* arylen */ + YYSYMBOL_star = 244, /* star */ + YYSYMBOL_sliceme = 245, /* sliceme */ + YYSYMBOL_kvslice = 246, /* kvslice */ + YYSYMBOL_gelem = 247, /* gelem */ + YYSYMBOL_indirob = 248 /* indirob */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -263,19 +265,19 @@ typedef enum yysymbol_kind_t yysymbol_kind_t; #define YYFINAL 16 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 3753 +#define YYLAST 3777 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 133 +#define YYNTOKENS 134 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 114 +#define YYNNTS 115 /* YYNRULES -- Number of rules. */ -#define YYNRULES 346 +#define YYNRULES 348 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 677 +#define YYNSTATES 680 /* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 387 +#define YYMAXUTOK 388 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -327,48 +329,48 @@ static const yytype_uint8 yytranslate[] = 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132 + 125, 126, 127, 128, 129, 130, 131, 132, 133 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 161, 161, 160, 172, 171, 182, 181, 195, 194, - 208, 207, 221, 220, 231, 230, 244, 246, 251, 259, - 263, 270, 275, 282, 288, 292, 294, 291, 301, 302, - 312, 313, 322, 326, 330, 337, 347, 349, 362, 359, - 383, 378, 406, 405, 431, 442, 454, 453, 464, 470, - 476, 481, 483, 485, 492, 500, 502, 499, 519, 524, - 533, 540, 539, 554, 562, 569, 568, 583, 590, 589, - 605, 604, 624, 628, 632, 636, 642, 650, 668, 669, - 673, 677, 679, 681, 683, 685, 687, 689, 692, 698, - 699, 704, 715, 716, 721, 723, 728, 735, 736, 740, - 744, 748, 753, 757, 761, 762, 765, 771, 776, 781, - 787, 788, 793, 794, 799, 800, 807, 812, 814, 825, - 827, 832, 834, 838, 843, 847, 855, 860, 868, 870, - 875, 877, 885, 886, 887, 892, 893, 898, 899, 903, - 907, 907, 940, 941, 946, 958, 959, 964, 963, 976, - 978, 980, 982, 984, 988, 990, 995, 999, 1003, 1007, - 1011, 1017, 1022, 1028, 1034, 1040, 1046, 1048, 1050, 1053, - 1052, 1066, 1067, 1071, 1075, 1078, 1083, 1088, 1091, 1095, - 1099, 1105, 1113, 1120, 1126, 1128, 1130, 1135, 1137, 1139, - 1141, 1143, 1145, 1150, 1152, 1154, 1156, 1158, 1160, 1162, - 1164, 1166, 1168, 1170, 1172, 1174, 1176, 1178, 1180, 1184, - 1186, 1188, 1190, 1192, 1196, 1198, 1202, 1204, 1206, 1208, - 1212, 1214, 1219, 1221, 1224, 1226, 1228, 1231, 1234, 1245, - 1248, 1256, 1258, 1260, 1263, 1265, 1268, 1270, 1275, 1280, - 1282, 1286, 1287, 1288, 1289, 1290, 1292, 1294, 1296, 1298, - 1300, 1302, 1304, 1306, 1308, 1310, 1312, 1314, 1316, 1326, - 1336, 1346, 1356, 1358, 1360, 1363, 1368, 1372, 1374, 1376, - 1378, 1381, 1383, 1386, 1388, 1390, 1392, 1394, 1396, 1398, - 1400, 1402, 1405, 1407, 1409, 1411, 1413, 1415, 1419, 1422, - 1421, 1434, 1435, 1436, 1441, 1443, 1445, 1447, 1452, 1454, - 1457, 1459, 1461, 1466, 1471, 1476, 1484, 1486, 1488, 1492, - 1500, 1499, 1517, 1518, 1522, 1523, 1527, 1528, 1533, 1538, - 1540, 1544, 1547, 1551, 1552, 1553, 1556, 1557, 1560, 1561, - 1564, 1568, 1572, 1578, 1584, 1586, 1590, 1594, 1595, 1599, - 1600, 1604, 1605, 1610, 1612, 1614, 1617 + 0, 164, 164, 163, 175, 174, 185, 184, 198, 197, + 211, 210, 224, 223, 234, 233, 247, 249, 254, 262, + 266, 273, 278, 285, 291, 295, 297, 294, 304, 305, + 315, 316, 325, 329, 333, 340, 350, 352, 365, 362, + 386, 381, 409, 408, 434, 445, 457, 456, 467, 473, + 479, 484, 486, 488, 495, 503, 505, 502, 522, 527, + 536, 543, 542, 557, 565, 572, 571, 586, 593, 592, + 608, 607, 627, 631, 635, 639, 645, 653, 671, 672, + 676, 680, 682, 684, 686, 688, 690, 692, 695, 701, + 702, 707, 718, 719, 724, 726, 731, 738, 739, 743, + 747, 751, 756, 760, 764, 765, 768, 774, 779, 784, + 790, 791, 796, 797, 802, 803, 810, 815, 817, 828, + 830, 835, 837, 841, 846, 850, 858, 863, 871, 873, + 878, 880, 888, 889, 890, 895, 896, 901, 902, 906, + 910, 910, 943, 944, 949, 961, 962, 967, 966, 979, + 981, 983, 985, 987, 991, 993, 998, 1002, 1006, 1010, + 1014, 1020, 1025, 1031, 1037, 1043, 1049, 1051, 1053, 1056, + 1055, 1069, 1070, 1074, 1078, 1081, 1086, 1091, 1094, 1098, + 1102, 1108, 1116, 1123, 1129, 1131, 1133, 1138, 1140, 1142, + 1144, 1146, 1148, 1153, 1155, 1157, 1159, 1161, 1163, 1165, + 1167, 1169, 1171, 1173, 1175, 1177, 1179, 1181, 1183, 1187, + 1189, 1191, 1193, 1195, 1199, 1201, 1205, 1207, 1209, 1211, + 1215, 1217, 1220, 1227, 1237, 1239, 1242, 1244, 1246, 1249, + 1252, 1263, 1266, 1274, 1276, 1278, 1281, 1283, 1286, 1288, + 1293, 1298, 1300, 1304, 1305, 1306, 1307, 1308, 1310, 1312, + 1314, 1316, 1318, 1320, 1322, 1324, 1326, 1328, 1330, 1332, + 1334, 1344, 1354, 1364, 1374, 1376, 1378, 1381, 1386, 1390, + 1392, 1394, 1396, 1399, 1401, 1404, 1406, 1408, 1410, 1412, + 1414, 1416, 1418, 1420, 1423, 1425, 1427, 1429, 1431, 1433, + 1437, 1440, 1439, 1452, 1453, 1454, 1459, 1461, 1463, 1465, + 1470, 1472, 1475, 1477, 1479, 1484, 1489, 1494, 1502, 1504, + 1506, 1510, 1518, 1517, 1535, 1536, 1540, 1541, 1545, 1546, + 1551, 1556, 1558, 1562, 1565, 1569, 1570, 1571, 1574, 1575, + 1578, 1579, 1582, 1586, 1590, 1596, 1602, 1604, 1608, 1612, + 1613, 1617, 1618, 1622, 1623, 1628, 1630, 1632, 1635 }; #endif @@ -402,20 +404,20 @@ static const char *const yytname[] = "YADAYADA", "FUNC0", "FUNC1", "FUNC", "UNIOP", "LSTOP", "BLKLSTOP", "POWOP", "MULOP", "ADDOP", "DOLSHARP", "HASHBRACK", "NOAMP", "COLONATTR", "FORMLBRACK", "FORMRBRACK", "SUBLEXSTART", "SUBLEXEND", "PHASER", - "PREC_LOW", "PLUGIN_LOW_OP", "OROP", "PLUGIN_LOGICAL_OR_LOW_OP", "ANDOP", - "PLUGIN_LOGICAL_AND_LOW_OP", "NOTOP", "ASSIGNOP", "PLUGIN_ASSIGN_OP", - "PERLY_QUESTION_MARK", "PERLY_COLON", "OROR", "DORDOR", - "PLUGIN_LOGICAL_OR_OP", "ANDAND", "PLUGIN_LOGICAL_AND_OP", "BITOROP", - "BITANDOP", "CHEQOP", "NCEQOP", "CHRELOP", "NCRELOP", "PLUGIN_REL_OP", - "SHIFTOP", "PLUGIN_ADD_OP", "PLUGIN_MUL_OP", "MATCHOP", - "PERLY_EXCLAMATION_MARK", "PERLY_TILDE", "UMINUS", "REFGEN", - "PLUGIN_POW_OP", "PREINC", "PREDEC", "POSTINC", "POSTDEC", "POSTJOIN", - "PLUGIN_HIGH_OP", "ARROW", "PERLY_PAREN_CLOSE", "PERLY_PAREN_OPEN", - "$accept", "grammar", "@1", "@2", "@3", "@4", "@5", "@6", "@7", - "sigsub_or_method_named", "block", "empty", "formblock", "remember", - "mblock", "mremember", "catch_paren", "$@8", "$@9", "stmtseq", - "formstmtseq", "fullstmt", "labfullstmt", "barestmt", "$@10", "$@11", - "$@12", "$@13", "$@14", "$@15", "@16", "$@17", "$@18", "$@19", + "OPFLAGS", "PREC_LOW", "PLUGIN_LOW_OP", "OROP", + "PLUGIN_LOGICAL_OR_LOW_OP", "ANDOP", "PLUGIN_LOGICAL_AND_LOW_OP", + "NOTOP", "ASSIGNOP", "PLUGIN_ASSIGN_OP", "PERLY_QUESTION_MARK", + "PERLY_COLON", "OROR", "DORDOR", "PLUGIN_LOGICAL_OR_OP", "ANDAND", + "PLUGIN_LOGICAL_AND_OP", "BITOROP", "BITANDOP", "CHEQOP", "NCEQOP", + "CHRELOP", "NCRELOP", "PLUGIN_REL_OP", "SHIFTOP", "PLUGIN_ADD_OP", + "PLUGIN_MUL_OP", "MATCHOP", "PERLY_EXCLAMATION_MARK", "PERLY_TILDE", + "UMINUS", "REFGEN", "PLUGIN_POW_OP", "PREINC", "PREDEC", "POSTINC", + "POSTDEC", "POSTJOIN", "PLUGIN_HIGH_OP", "ARROW", "PERLY_PAREN_CLOSE", + "PERLY_PAREN_OPEN", "$accept", "grammar", "@1", "@2", "@3", "@4", "@5", + "@6", "@7", "sigsub_or_method_named", "block", "empty", "formblock", + "remember", "mblock", "mremember", "catch_paren", "$@8", "$@9", + "stmtseq", "formstmtseq", "fullstmt", "labfullstmt", "barestmt", "$@10", + "$@11", "$@12", "$@13", "$@14", "$@15", "@16", "$@17", "$@18", "$@19", "formline", "formarg", "condition", "sideff", "else", "cont", "finally", "mintro", "nexpr", "texpr", "iexpr", "mexpr", "mnexpr", "formname", "startsub", "startanonsub", "startanonmethod", "startformsub", "subname", @@ -424,13 +426,13 @@ static const char *const yytname[] = "siglist", "optsiglist", "optsubsignature", "subsignature", "subsigguts", "$@20", "optsubbody", "subbody", "optsigsubbody", "sigsubbody", "$@21", "expr", "listexpr", "listop", "@22", "methodname", "subscripted", - "termbinop", "termrelop", "relopchain", "termeqop", "eqopchain", - "termunop", "anonymous", "termdo", "term", "@23", "myattrterm", "myterm", - "fieldvar", "optfieldattrlist", "fielddecl", "$@24", "optlistexpr", - "optexpr", "optrepl", "my_scalar", "list_of_scalars", - "my_list_of_scalars", "my_var", "refgen_topic", "my_refgen", "amper", - "scalar", "ary", "hsh", "arylen", "star", "sliceme", "kvslice", "gelem", - "indirob", YY_NULLPTR + "termbinop", "termrelop", "relopchain", "termeqop", "optopflags", + "eqopchain", "termunop", "anonymous", "termdo", "term", "@23", + "myattrterm", "myterm", "fieldvar", "optfieldattrlist", "fielddecl", + "$@24", "optlistexpr", "optexpr", "optrepl", "my_scalar", + "list_of_scalars", "my_list_of_scalars", "my_var", "refgen_topic", + "my_refgen", "amper", "scalar", "ary", "hsh", "arylen", "star", + "sliceme", "kvslice", "gelem", "indirob", YY_NULLPTR }; static const char * @@ -440,12 +442,12 @@ yysymbol_name (yysymbol_kind_t yysymbol) } #endif -#define YYPACT_NINF (-548) +#define YYPACT_NINF (-558) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-345) +#define YYTABLE_NINF (-347) #define yytable_value_is_error(Yyn) \ ((Yyn) == YYTABLE_NINF) @@ -454,74 +456,74 @@ yysymbol_name (yysymbol_kind_t yysymbol) STATE-NUM. */ static const yytype_int16 yypact[] = { - 784, -548, -548, -548, -548, -548, -548, -548, 37, -548, - 3019, 55, 1961, 1844, -548, -548, -548, -548, 126, 3019, - 126, 3019, 126, 3019, 126, 126, 3019, 32, 3019, 2290, - -548, -548, -548, -548, 126, 126, -548, -548, 60, -56, - -548, 3019, -548, -548, 3019, -28, -3, -55, 2290, 2209, - 55, 126, 3019, 39, 3019, 3019, 3019, 3019, 3019, 3019, - 2371, -548, 386, 146, -548, 11, -548, -14, 76, -61, - 79, -548, -548, -548, 3267, -548, -548, 66, 46, 68, - 115, -548, 208, 211, 219, 212, -548, -548, -548, -548, - -548, 177, 180, 300, 105, 114, 25, 119, 125, 130, - 132, 55, 236, 236, -548, 39, -548, -548, -548, 244, - -548, 39, 228, -548, 250, 372, 267, 1844, -548, -548, - -548, -548, 688, -548, 302, 862, -548, -548, -548, -548, - -548, 279, -548, 546, -548, 546, -548, -548, 3603, 3100, - 2452, 214, -548, -548, -548, 3603, -548, 3603, 233, 220, - 220, 3019, 173, 230, 3019, 192, 3603, 55, 3267, 203, - 2533, 3019, 2209, -548, 3603, 3181, -548, 146, -548, 2614, - 3019, 3019, -548, 313, -548, -548, 3019, 146, 546, 546, - 546, 493, 493, 323, 303, 3019, 3019, 3019, 3019, 3019, - 3019, 3019, 2695, -548, -548, 3019, -548, -548, 3019, 3019, - 3019, 3019, 3019, 3019, 3019, 3019, 3019, 3019, 3019, 3019, - 3019, 3019, 3019, 3019, 3019, 3019, 3019, 3019, 3019, 3019, - 3019, 3019, 3019, 3019, -548, -548, -548, 3019, 193, 2776, - 3019, 3019, 3019, 3019, 3019, 3019, 3019, -548, 284, 287, - 310, 285, -548, -548, -548, -548, -548, 257, 571, -548, - -548, 253, -548, -548, -548, -548, -548, -548, 347, -548, - -548, -548, -548, -548, -548, 55, -548, -548, -548, 3019, - 3019, 3019, 3019, 3019, 3019, -548, -548, -548, -548, 331, - -548, -548, -548, 331, -548, -548, -548, 371, -548, -548, - 2857, 546, 214, 69, 73, 74, -548, 325, 336, -548, - -548, -548, 220, 364, -548, 18, 18, -548, 3019, 3019, - 13, -548, -548, -548, -548, 342, 316, 283, 3019, 146, - 146, 415, -548, 3019, 416, 15, 15, -548, -548, 3371, - 96, 78, -548, 355, 361, 3564, 3423, 546, 405, 381, - 3319, 3371, 3371, 3215, 3462, 3462, 3462, 3485, 3485, 3524, - 3545, 3564, 3564, 361, 361, 3584, 3623, 381, 405, 546, - 546, 5, 7, 3019, 3019, 204, 403, 406, 408, -548, - 420, 2938, 308, -548, -548, 446, 190, 89, 234, 200, - 268, 213, 280, 979, -548, -548, 428, 61, 220, 388, - -548, 354, 3019, 3019, -548, 24, -548, -548, 322, -548, - -548, -548, -548, 2047, 300, -548, 3019, 3019, 3019, 3019, - -548, -548, 401, -548, 437, -548, -548, -548, 386, -548, - -548, -548, 386, -548, -548, -548, 365, 366, 302, 20, - 451, -548, -548, -548, 449, -548, 338, -548, -548, 332, - 28, -548, 3019, -548, -548, -548, 510, -548, 255, 3019, - 459, -548, -548, 3019, -548, 340, 293, 259, -548, -548, - -548, -548, -548, -548, 521, 3019, -548, 480, -548, 482, - -548, 484, -548, 489, -548, -548, -548, -548, -548, 154, - -548, -548, 383, 386, 384, 486, 380, -548, -548, -548, - -548, -548, 385, 496, 217, -548, 3019, 390, 391, 386, - 393, 396, 1142, 387, 473, 233, -548, 525, -548, -548, - 220, 3019, 3019, -548, 41, -548, -548, -548, 541, -548, - -548, 3019, -548, 465, -548, -548, -548, 263, -548, 1012, - 3019, 544, -548, -548, 426, -548, -548, -548, -548, 538, - -548, -548, -548, 3019, 236, 236, 547, 430, -548, 3019, - 3019, 236, -548, 432, 434, -548, -548, 236, 236, -548, - -548, -548, -548, 3019, 220, -548, 548, -548, 3267, 3267, - 435, -548, 386, -548, -548, 440, -548, -548, 487, -548, - -548, 3267, 134, 134, 486, 436, 443, 445, 228, 3019, - 3019, 236, 236, 236, -548, -548, 486, 236, 557, 437, - 1259, -548, -548, -548, -548, -548, -548, -548, 1376, -548, - 236, 456, -548, -548, -548, -548, 3019, 236, 236, -548, - 561, 461, 228, 228, 228, -548, 549, -548, -548, -548, - 1493, -548, 31, -548, 1610, -548, 3019, 469, 228, 228, - -548, 236, -548, -548, -548, 471, 55, -548, -548, 579, - 522, -548, -548, 477, 236, -548, -548, -548, 228, -548, - -548, -548, -548, -548, -548, 236, 228, 2128, -548, 1727, - 134, -548, 499, -548, -548, 236, -548 + 783, -558, -558, -558, -558, -558, -558, -558, 38, -558, + 3081, 30, 2092, 1974, -558, -558, -558, -558, 151, 3081, + 151, 3081, 151, 3081, 151, 151, 3081, 32, 3081, 2343, + -558, -558, -558, -558, 151, 151, -558, -558, 50, -82, + -558, 3081, -558, -558, 3081, -67, -60, -57, 2343, 2261, + 30, 151, 3081, -2, 3081, 3081, 3081, 3081, 3081, 3081, + 2425, -558, 404, 63, -558, 2, -558, 6, -23, 81, + -17, -558, -558, -558, 3332, -558, -558, -33, 102, 118, + 143, -558, 97, 197, 209, 126, -558, -558, -558, -558, + -558, 86, 92, 337, 35, 44, 27, 72, 96, 103, + 113, 30, 208, 208, -558, -2, -558, -558, -558, 226, + -558, -2, 213, -558, 240, 414, 244, 1974, -558, -558, + -558, -558, 865, -558, 339, 994, -558, -558, -558, -558, + -558, 216, -558, 280, -558, 280, -558, -558, 362, 3163, + 2507, 181, -558, -558, -558, 362, -558, 362, 219, 204, + 204, 3081, 163, 202, 3081, 165, 362, 30, 3332, 168, + 2589, 3081, 2261, -558, 362, 3245, -558, 63, -558, 2671, + 3081, 3081, -558, 273, -558, -558, 3081, 63, 280, 280, + 280, 604, 604, 288, 343, 3081, 3081, 3081, 3081, 3081, + 3081, 3081, 2753, -558, -558, 3081, -558, -558, 211, 3081, + 3081, 3081, 3081, 3081, 3081, 3081, 3081, 3081, 3081, 3081, + 3081, 3081, 3081, 3081, 211, 3081, 3081, 3081, 3081, 3081, + 3081, 3081, 3081, 3081, -558, -558, -558, 3081, 193, 2835, + 3081, 3081, 3081, 3081, 3081, 3081, 3081, -558, 251, 277, + 278, 256, -558, -558, -558, -558, -558, 214, 446, -558, + -558, 210, -558, -558, -558, -558, -558, -558, 308, -558, + -558, -558, -558, -558, -558, 30, -558, -558, -558, 3081, + 3081, 3081, 3081, 3081, 3081, -558, -558, -558, -558, 293, + -558, -558, -558, 293, -558, -558, -558, 349, -558, -558, + 2917, 280, 181, 23, 42, 71, -558, 387, 299, -558, + -558, -558, 204, 312, -558, 11, 11, -558, 3081, 3081, + 85, -558, -558, -558, -558, 419, 282, 245, 3081, 63, + 63, 364, -558, 3081, 365, 117, 117, -558, -558, 3438, + 137, 89, -558, 482, 506, -558, 3081, 3544, 280, 417, + 441, 3385, 3438, 3438, 3279, 1023, 1023, 1023, 3584, 3584, + 3606, 3646, 3081, 688, 506, 506, 3624, 3510, 441, 417, + 280, 280, 43, 45, 3081, 3081, 412, 355, 357, 361, + -558, 363, 2999, 254, -558, -558, 512, 176, 93, 189, + 158, 227, 162, 272, 1148, -558, -558, 378, 70, 204, + 346, -558, 314, 3081, 3081, -558, 10, -558, -558, 279, + -558, -558, -558, -558, 700, 337, -558, 3081, 3081, 3081, + 3081, -558, -558, 359, -558, 398, -558, -558, -558, 404, + -558, -558, -558, 404, -558, -558, -558, 321, 322, 339, + 36, 577, -558, -558, -558, 413, -558, 297, -558, -558, + 300, 65, -558, 3081, -558, -558, -558, 595, -558, 223, + 3081, 422, -558, -558, 688, 3081, 688, -558, 315, 294, + 233, -558, -558, -558, -558, -558, -558, 608, 3081, -558, + 435, -558, 442, -558, 445, -558, 455, -558, -558, -558, + -558, -558, 76, -558, -558, 340, 404, 356, 410, 336, + -558, -558, -558, -558, -558, 372, 465, 303, -558, 3081, + 373, 374, 404, 375, 381, 1266, 391, 439, 219, -558, + 514, -558, -558, 204, 3081, 3081, -558, 37, -558, -558, + -558, 515, -558, -558, 3081, -558, 437, -558, -558, -558, + 250, -558, 3491, 3081, 517, -558, -558, 399, -558, -558, + -558, -558, 508, -558, -558, -558, 3081, 208, 208, 519, + 400, -558, 3081, 3081, 208, -558, 402, 406, -558, -558, + 208, 208, -558, -558, -558, -558, 3081, 204, -558, 518, + -558, 3332, 3332, 411, -558, 404, -558, -558, 421, -558, + -558, 461, -558, -558, 3332, 191, 191, 410, 425, 423, + 431, 213, 3081, 3081, 208, 208, 208, -558, -558, 410, + 208, 532, 398, 1384, -558, -558, -558, -558, -558, -558, + -558, 1502, -558, 208, 434, -558, -558, -558, -558, 3081, + 208, 208, -558, 542, 450, 213, 213, 213, -558, 528, + -558, -558, -558, 1620, -558, 18, -558, 1738, -558, 3081, + 451, 213, 213, -558, 208, -558, -558, -558, 452, 30, + -558, -558, 557, 498, -558, -558, 457, 208, -558, -558, + -558, 213, -558, -558, -558, -558, -558, -558, 208, 213, + 2179, -558, 1856, 191, -558, 458, -558, -558, 208, -558 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -531,106 +533,106 @@ static const yytype_int16 yydefact[] = { 0, 2, 4, 6, 8, 10, 12, 14, 0, 21, 19, 0, 0, 0, 19, 140, 1, 19, 0, 19, - 0, 0, 0, 0, 0, 0, 0, 0, 278, 0, - 107, 107, 108, 291, 0, 0, 262, 289, 250, 284, - 286, 280, 107, 293, 272, 282, 0, 0, 275, 19, + 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, + 107, 107, 108, 293, 0, 0, 264, 291, 252, 286, + 288, 282, 107, 295, 274, 284, 0, 0, 277, 19, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, - 0, 314, 315, 153, 292, 257, 241, 197, 209, 198, - 216, 242, 243, 244, 156, 247, 5, 263, 252, 255, - 254, 256, 253, 0, 0, 0, 21, 7, 81, 76, + 0, 316, 317, 153, 294, 259, 243, 197, 209, 198, + 216, 244, 245, 246, 156, 249, 5, 265, 254, 257, + 256, 258, 255, 0, 0, 0, 21, 7, 81, 76, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 16, 17, 36, 0, 106, 0, 19, 9, 0, 82, 0, 0, 11, 33, - 32, 28, 0, 15, 19, 0, 343, 346, 345, 344, - 330, 0, 331, 222, 333, 223, 332, 336, 248, 0, - 0, 295, 300, 302, 301, 279, 240, 239, 19, 19, - 19, 19, 0, 0, 0, 0, 281, 0, 273, 0, - 0, 19, 19, 276, 277, 291, 312, 313, 166, 252, - 0, 0, 334, 0, 110, 111, 19, 274, 224, 225, - 246, 229, 230, 251, 0, 0, 0, 0, 0, 154, - 0, 0, 0, 212, 211, 0, 219, 218, 0, 0, + 32, 28, 0, 15, 19, 0, 345, 348, 347, 346, + 332, 0, 333, 224, 335, 225, 334, 338, 250, 0, + 0, 297, 302, 304, 303, 281, 242, 241, 19, 19, + 19, 19, 0, 0, 0, 0, 283, 0, 275, 0, + 0, 19, 19, 278, 279, 293, 314, 315, 166, 254, + 0, 0, 336, 0, 110, 111, 19, 276, 226, 227, + 248, 231, 232, 253, 0, 0, 0, 0, 0, 154, + 0, 0, 0, 212, 211, 0, 219, 218, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 226, 227, 228, 0, 0, 0, + 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 228, 229, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 0, - 0, 19, 303, 305, 304, 21, 21, 21, 0, 21, + 0, 19, 305, 307, 306, 21, 21, 21, 0, 21, 21, 0, 21, 21, 21, 21, 52, 23, 0, 74, 46, 106, 75, 42, 106, 0, 92, 67, 73, 0, 0, 0, 0, 0, 0, 72, 35, 34, 29, 119, - 122, 121, 135, 119, 131, 130, 134, 136, 141, 231, - 0, 297, 0, 252, 255, 254, 299, 0, 118, 294, - 113, 112, 19, 116, 114, 236, 238, 164, 19, 0, - 0, 285, 169, 283, 287, 0, 0, 0, 0, 157, - 158, 0, 266, 0, 249, 151, 152, 149, 150, 155, - 0, 0, 183, 0, 215, 221, 201, 190, 192, 194, - 208, 188, 189, 0, 204, 206, 205, 202, 203, 200, - 199, 220, 217, 214, 210, 213, 196, 195, 193, 207, - 191, 187, 0, 0, 0, 0, 340, 338, 342, 171, - 0, 0, 161, 172, 264, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 104, 105, 0, 0, 19, 307, - 308, 309, 0, 0, 328, 0, 329, 326, 0, 327, - 323, 324, 325, 0, 0, 21, 0, 99, 0, 0, - 19, 21, 0, 38, 21, 40, 93, 83, 80, 84, - 87, 86, 101, 85, 88, 120, 126, 123, 132, 251, - 0, 296, 298, 117, 234, 115, 19, 235, 237, 0, - 19, 185, 19, 288, 168, 167, 0, 232, 0, 0, - 0, 176, 182, 0, 270, 163, 0, 0, 267, 269, - 268, 271, 335, 180, 0, 19, 265, 0, 174, 0, - 258, 0, 259, 0, 18, 21, 37, 21, 44, 0, - 306, 310, 0, 102, 0, 0, 0, 318, 21, 97, - 98, 103, 0, 0, 82, 61, 0, 0, 0, 100, - 0, 0, 0, 19, 0, 19, 143, 0, 43, 142, - 19, 128, 124, 133, 249, 233, 140, 137, 0, 138, - 165, 0, 316, 0, 170, 159, 186, 0, 179, 245, - 19, 0, 175, 181, 0, 177, 260, 261, 173, 0, - 68, 21, 45, 0, 0, 0, 322, 0, 321, 0, - 0, 0, 55, 0, 0, 96, 96, 0, 0, 22, - 25, 24, 65, 19, 19, 19, 21, 127, 129, 125, - 0, 147, 317, 290, 184, 0, 178, 160, 0, 19, - 70, 311, 19, 19, 319, 0, 0, 0, 19, 99, - 0, 0, 0, 0, 50, 51, 0, 0, 0, 21, - 0, 146, 41, 145, 139, 19, 162, 19, 0, 19, - 0, 0, 89, 48, 49, 320, 0, 0, 0, 64, - 0, 0, 19, 19, 19, 26, 94, 47, 39, 144, - 0, 30, 0, 69, 0, 90, 0, 0, 19, 19, - 56, 0, 60, 54, 53, 0, 0, 66, 148, 0, - 19, 31, 71, 0, 0, 58, 63, 96, 19, 27, - 95, 20, 19, 78, 77, 0, 19, 0, 62, 0, - 19, 59, 0, 79, 91, 0, 57 + 122, 121, 135, 119, 131, 130, 134, 136, 141, 233, + 0, 299, 0, 254, 257, 256, 301, 0, 118, 296, + 113, 112, 19, 116, 114, 238, 240, 164, 19, 0, + 0, 287, 169, 285, 289, 0, 0, 0, 0, 157, + 158, 0, 268, 0, 251, 151, 152, 149, 150, 155, + 0, 0, 183, 0, 215, 221, 0, 201, 190, 192, + 194, 208, 188, 189, 0, 204, 206, 205, 202, 203, + 200, 199, 0, 217, 214, 210, 213, 196, 195, 193, + 207, 191, 187, 0, 0, 0, 0, 342, 340, 344, + 171, 0, 0, 161, 172, 266, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 104, 105, 0, 0, 19, + 309, 310, 311, 0, 0, 330, 0, 331, 328, 0, + 329, 325, 326, 327, 0, 0, 21, 0, 99, 0, + 0, 19, 21, 0, 38, 21, 40, 93, 83, 80, + 84, 87, 86, 101, 85, 88, 120, 126, 123, 132, + 253, 0, 298, 300, 117, 236, 115, 19, 237, 239, + 0, 19, 185, 19, 290, 168, 167, 0, 234, 0, + 0, 0, 176, 182, 223, 0, 222, 272, 163, 0, + 0, 269, 271, 270, 273, 337, 180, 0, 19, 267, + 0, 174, 0, 260, 0, 261, 0, 18, 21, 37, + 21, 44, 0, 308, 312, 0, 102, 0, 0, 0, + 320, 21, 97, 98, 103, 0, 0, 82, 61, 0, + 0, 0, 100, 0, 0, 0, 19, 0, 19, 143, + 0, 43, 142, 19, 128, 124, 133, 251, 235, 140, + 137, 0, 138, 165, 0, 318, 0, 170, 159, 186, + 0, 179, 247, 19, 0, 175, 181, 0, 177, 262, + 263, 173, 0, 68, 21, 45, 0, 0, 0, 324, + 0, 323, 0, 0, 0, 55, 0, 0, 96, 96, + 0, 0, 22, 25, 24, 65, 19, 19, 19, 21, + 127, 129, 125, 0, 147, 319, 292, 184, 0, 178, + 160, 0, 19, 70, 313, 19, 19, 321, 0, 0, + 0, 19, 99, 0, 0, 0, 0, 50, 51, 0, + 0, 0, 21, 0, 146, 41, 145, 139, 19, 162, + 19, 0, 19, 0, 0, 89, 48, 49, 322, 0, + 0, 0, 64, 0, 0, 19, 19, 19, 26, 94, + 47, 39, 144, 0, 30, 0, 69, 0, 90, 0, + 0, 19, 19, 56, 0, 60, 54, 53, 0, 0, + 66, 148, 0, 19, 31, 71, 0, 0, 58, 63, + 96, 19, 27, 95, 20, 19, 78, 77, 0, 19, + 0, 62, 0, 19, 59, 0, 79, 91, 0, 57 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -548, -548, -548, -548, -548, -548, -548, -548, -548, -548, - -4, -10, -548, 92, -7, -548, -548, -548, -548, -16, - -548, 614, 514, 3, -548, -548, -548, -548, -548, -548, - -548, -548, -548, -548, -548, -548, -63, -397, -547, -255, - -548, -544, -548, 43, 229, -315, -30, -548, -84, 174, - -548, -548, -88, 133, -140, 351, 356, -548, -548, -548, - -548, 216, -548, -548, -548, -548, 135, -548, 50, 221, - -548, -295, -548, 9, -46, -548, -548, -548, -548, -548, - -548, -548, -548, -548, -548, -548, -548, 638, -548, -548, - 511, -548, -548, -548, -548, -138, -17, -548, -548, -548, - -548, 249, -548, -548, 414, 40, -23, -22, -548, -548, - -548, -548, -548, 97 + -558, -558, -558, -558, -558, -558, -558, -558, -558, -558, + -4, -10, -558, 59, 58, -558, -558, -558, -558, -16, + -558, 578, 476, 15, -558, -558, -558, -558, -558, -558, + -558, -558, -558, -558, -558, -558, 190, -393, -557, -276, + -558, -526, -558, 3, 187, -283, -73, -558, -86, 62, + -558, -558, -88, 90, -138, 307, 328, -558, -558, -558, + -558, 175, -558, -558, -558, -558, 94, -558, 24, 185, + -558, -304, -558, 9, -46, -558, -558, -558, -558, -558, + -558, -558, -558, 415, -558, -558, -558, -558, 641, -558, + -558, 499, -558, -558, -558, -558, -141, -15, -558, -558, + -558, -558, 235, -558, -558, 393, 40, -22, -21, -558, + -558, -558, -558, -558, 61 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { 0, 8, 9, 10, 11, 12, 13, 14, 15, 111, - 112, 121, 476, 436, 258, 410, 562, 596, 645, 122, - 632, 278, 119, 120, 505, 510, 414, 412, 589, 657, - 553, 597, 579, 609, 651, 664, 417, 114, 613, 267, - 647, 592, 491, 498, 421, 482, 493, 386, 260, 148, - 150, 238, 176, 302, 305, 299, 426, 283, 284, 285, - 567, 286, 287, 288, 518, 519, 123, 124, 508, 509, - 602, 437, 605, 115, 63, 64, 442, 372, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 153, 75, - 141, 241, 391, 116, 543, 168, 76, 523, 486, 546, - 547, 397, 398, 250, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 132 + 112, 121, 479, 437, 258, 411, 565, 599, 648, 122, + 635, 278, 119, 120, 508, 513, 415, 413, 592, 660, + 556, 600, 582, 612, 654, 667, 418, 114, 616, 267, + 650, 595, 494, 501, 422, 485, 496, 387, 260, 148, + 150, 238, 176, 302, 305, 299, 427, 283, 284, 285, + 570, 286, 287, 288, 521, 522, 123, 124, 511, 512, + 605, 438, 608, 115, 63, 64, 443, 373, 65, 66, + 67, 68, 69, 336, 70, 71, 72, 73, 74, 153, + 75, 141, 241, 392, 116, 546, 168, 76, 526, 489, + 549, 550, 398, 399, 250, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 132 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -638,145 +640,134 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 61, 125, 131, 167, 143, 144, 490, 87, 177, 61, - 306, 438, 593, 307, 128, 113, 128, 261, 128, 62, - 128, 128, 190, 264, 191, 146, 263, 441, 62, -21, - 128, 128, 454, 323, 161, 173, 614, 16, 322, 166, - 20, 20, 61, 189, 163, 128, 171, 128, 20, 196, - 197, 521, 22, 649, 449, 247, 24, 230, 129, 231, - 129, 62, 129, 174, 129, 129, 86, 142, 175, 184, - 243, 244, 477, 154, 129, 129, 155, 162, 484, -337, - 230, -337, 231, 478, -337, -339, -337, -339, 492, 169, - 650, 129, 451, 500, 501, 174, 259, 256, 193, 194, - 175, 17, 266, 468, 159, 167, -299, 185, 186, 187, - 188, 187, 188, 667, 282, 130, 294, 295, 450, 134, - 277, 136, 137, 674, 319, 320, -339, -298, -339, 160, - 167, 151, 152, 242, -345, 228, 251, 86, 301, 304, - 304, 166, 20, 192, 316, 317, 170, 248, 172, 297, - -21, 61, 61, 312, 139, -300, 485, 249, 128, -302, - -301, 189, 434, 310, 140, 541, 166, 610, 611, 315, - 62, 62, 185, 186, 187, 188, 542, 413, 237, 293, - 415, 554, 126, 185, 186, 187, 188, 127, 195, 198, - 185, 186, 187, 188, 325, 326, 327, 328, 229, 330, - 331, 333, 169, 362, 363, 149, 364, 419, 420, 365, - 423, 424, 467, 366, 470, 86, 157, 367, 368, -341, - 20, 383, 232, 236, 233, 401, 402, 472, 385, 458, - 234, 390, 235, 239, 586, 587, 240, 245, 375, 376, - 377, 378, 379, 380, 381, 382, 246, 257, 479, 269, - 369, 252, 270, 271, 272, 273, 469, 253, 274, 318, - 126, 416, 254, 440, 255, 127, 262, 265, 373, 526, - 490, 603, 268, 532, 455, 621, 370, 574, 418, 418, - 418, 422, 418, 418, 185, 186, 187, 188, 400, 275, - 471, 439, 304, 289, 185, 186, 187, 188, 61, 430, - 298, 637, 473, 300, 524, 308, 303, 185, 186, 187, - 188, 185, 186, 187, 188, 531, 20, 62, 279, 309, - 22, 653, 280, 311, 24, 371, 281, 446, 185, 186, - 187, 188, 448, 619, 313, 321, 323, 392, 393, 395, - 384, 403, 404, 387, 406, 407, 408, 409, -102, 185, - 186, 187, 188, 185, 186, 187, 188, 185, 186, 187, - 188, 128, 185, 186, 187, 188, 388, 642, 643, 644, - 566, 389, 456, 457, 185, 186, 187, 188, 304, 394, - 464, 401, 402, 655, 656, 405, 428, 185, 186, 187, - 188, 411, 425, 489, 502, 433, 167, 185, 186, 187, - 188, 483, 483, 668, 269, 129, 444, 270, 271, 272, - 273, 671, 494, 274, 445, 422, 499, 483, 483, 185, - 186, 187, 188, 435, 599, 598, 517, 447, 459, 449, - 522, 460, 166, 461, 324, 487, 185, 186, 187, 188, - 465, 200, 201, 202, 400, 462, 475, 480, 534, 185, - 186, 187, 188, 481, 488, 61, 432, 504, 527, 506, - -21, 200, 201, 520, 511, 512, 185, 186, 187, 188, - 516, 528, 530, 443, 62, 218, 219, 220, 221, 222, - 185, 186, 187, 188, 223, 200, 452, 224, 225, 226, - 227, 228, 535, 561, 536, 301, 537, 496, 221, 222, - 304, 538, 20, 503, 223, 483, 507, 224, 225, 226, - 227, 228, 549, 575, 544, 545, 551, 167, 552, 560, - 61, 555, 556, 222, 557, 548, 507, 558, 223, 563, - 572, 224, 225, 226, 227, 228, 565, 582, 583, 62, - 185, 186, 187, 188, 588, 185, 186, 187, 188, 600, - 594, 595, 571, 166, 304, 573, 576, 577, 483, 483, - 578, 585, 584, 608, 590, 591, 604, 539, 616, 540, - 601, 606, 612, 612, 617, 607, 618, 466, 266, 627, - 550, 18, 514, 640, 622, 623, 624, 20, 636, 630, - 626, 22, 641, 634, 646, 24, 661, 631, 499, 483, - 654, 396, 659, 635, 185, 186, 187, 188, 665, 662, - 638, 639, 266, 266, 266, 185, 186, 187, 188, -345, - -345, -345, 227, 228, 615, 483, 200, 118, 266, 266, - 675, 276, 620, 580, 658, 497, 625, 672, 564, 427, - 663, 525, 660, 431, 513, 483, 669, 666, 266, 628, - 292, 570, 533, 495, 0, 515, 266, 489, 670, 133, - 612, 135, 399, 0, 138, 0, 145, 147, 676, 223, - 0, 0, 224, 225, 226, 227, 228, 0, 0, 156, - 0, 0, 158, 0, 0, 0, 164, 0, -13, 88, - 0, 507, 0, 178, 179, 180, 181, 182, 18, 86, - 0, 19, 0, 0, 20, 0, 0, 21, 22, 23, + 61, 125, 439, 167, 131, 143, 144, 87, 177, 61, + 307, 493, 306, 190, 128, 191, 128, 261, 128, 62, + 128, 128, -21, 264, 263, 146, 20, 113, 62, 617, + 128, 128, 161, 596, 230, 322, 231, 173, 16, 166, + 652, 86, 61, 20, 163, 128, 171, 128, 20, 323, + 450, 155, 22, -339, 174, -339, 24, 247, 129, 175, + 129, 62, 129, 154, 129, 129, 159, 142, 17, 184, + 457, 243, 244, 160, 129, 129, 162, 653, 189, 130, + 189, 480, -341, 134, -341, 136, 137, 544, 524, 169, + 195, 129, 481, 149, 198, 151, 152, 256, 545, 442, + 229, 174, 266, 452, 157, 167, 175, 471, -343, -302, + 170, 487, 172, 230, 282, 231, 677, 294, 295, 193, + 194, 495, -301, -300, 319, 320, 503, 504, -304, -339, + 167, -339, 277, 242, 670, 192, 251, 236, 301, 304, + 304, 166, 239, 488, -21, 237, 316, 317, 240, 297, + 248, 61, 61, 312, -341, 139, -341, -303, 128, 451, + 249, 259, 86, 310, 435, 140, 166, 20, 245, 315, + 62, 62, 473, -347, 228, 414, 475, 246, 416, 293, + 185, 186, 187, 188, 185, 186, 187, 188, 185, 186, + 187, 188, 196, 197, 325, 326, 327, 328, 470, 330, + 331, 333, 169, 363, 364, 252, 365, 126, 232, 366, + 233, 472, 127, 367, 187, 188, 557, 368, 369, 257, + 234, 384, 235, 318, 613, 614, 402, 403, 386, 253, + 289, 391, 185, 186, 187, 188, 254, 529, 376, 377, + 378, 379, 380, 381, 382, 383, 255, 535, 262, 474, + 370, 482, 265, 185, 186, 187, 188, 185, 186, 187, + 188, 417, 268, 441, 577, 606, 275, 298, 374, 589, + 590, 185, 186, 187, 188, 458, 371, 493, 419, 419, + 419, 423, 419, 419, 185, 186, 187, 188, 401, 300, + 303, 309, 304, 440, 476, 321, 308, 311, 61, 431, + 313, 323, 527, 335, 393, 394, 396, 385, 404, 405, + 624, 407, 408, 409, 410, 622, 534, 62, 185, 186, + 187, 188, 185, 186, 187, 188, 372, 447, 185, 186, + 187, 188, 449, 388, 389, 269, 640, 395, 270, 271, + 272, 273, 390, 406, 274, 185, 186, 187, 188, 645, + 646, 647, 412, 20, 426, 279, 656, 22, 434, 280, + 200, 24, 128, 281, 429, 658, 659, 185, 186, 187, + 188, 436, 445, 459, 460, 569, 448, 446, 450, 304, + 462, 467, 463, 402, 403, 671, 464, 468, 465, 185, + 186, 187, 188, 674, 492, 505, 478, 167, 185, 186, + 187, 188, 486, 486, 223, 483, 129, 224, 225, 226, + 227, 228, 491, 497, 484, 507, 423, 502, 486, 486, + 509, 514, 515, 86, -21, 601, 20, 520, 20, 602, + 519, 525, 523, 166, 531, -102, 490, 461, 185, 186, + 187, 188, 200, 201, 202, 401, 269, 538, 533, 270, + 271, 272, 273, 537, 539, 274, 18, 540, 61, 530, + 420, 421, 20, 424, 425, 499, 22, 541, 126, 552, + 24, 506, 547, 127, 510, 324, 397, 62, 219, 220, + 221, 222, 185, 186, 187, 188, 223, 555, 548, 224, + 225, 226, 227, 228, 510, 566, 564, 200, 301, 185, + 186, 187, 188, 304, 554, 558, 559, 560, 486, 185, + 186, 187, 188, 561, 185, 186, 187, 188, 578, 433, + 167, 200, 201, 61, 563, 568, 574, 576, 551, 579, + 581, 580, 588, 575, 587, 593, 222, 542, 594, 543, + 604, 223, 62, 607, 224, 225, 226, 227, 228, 610, + 553, 444, 603, 609, 630, 620, 166, 304, 619, 221, + 222, 486, 486, 621, 643, 223, 611, 639, 224, 225, + 226, 227, 228, 649, 664, 615, 615, 185, 186, 187, + 188, 266, 644, 657, 662, 665, 200, 201, 202, 668, + 678, 118, 633, 276, 500, 623, 637, 675, 567, 432, + 634, 502, 486, 583, 516, 585, 586, 185, 186, 187, + 188, 428, 591, 573, 453, 266, 266, 266, 597, 598, + 518, 218, 219, 220, 221, 222, 631, 618, 486, 352, + 223, 266, 266, 224, 225, 226, 227, 228, 292, 628, + 498, 400, 0, 666, 469, 663, 0, 0, 486, 672, + 0, 266, 625, 626, 627, 0, 0, 0, 629, 266, + 492, 510, 133, 615, 135, 0, 0, 138, 0, 145, + 147, 638, 185, 186, 187, 188, 0, 0, 641, 642, + 0, 0, 156, 0, 0, 158, 0, 0, 0, 164, + 185, 186, 187, 188, 0, 0, 178, 179, 180, 181, + 182, 88, 661, 185, 186, 187, 188, 0, 0, 517, + 18, 0, 0, 19, 0, 669, 20, 0, 0, 21, + 22, 23, -19, 0, 24, 25, 673, 528, 0, 26, + 27, -347, -347, -347, 227, 228, 679, 0, 0, 0, + 536, 0, 0, 0, 0, 0, 0, 28, 29, 0, + 0, 0, 30, 31, 0, 32, 33, 34, 35, 36, + 37, 0, 38, 39, 40, 41, 42, 43, 200, 201, + 202, 44, 0, 0, 45, 46, 47, 48, 49, 50, + 291, 0, 0, 51, 52, 53, 1, 2, 3, 4, + 5, 6, 7, 0, 0, 0, 0, 0, 0, 54, + 0, 216, 217, 218, 219, 220, 221, 222, 0, 0, + 0, 0, 223, 0, 0, 224, 225, 226, 227, 228, + 55, 56, 0, 57, 0, 58, 59, 0, 0, 0, + 329, 0, 0, 60, 0, 0, 334, 0, 0, 0, + 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 0, 353, 354, 355, 356, + 357, 358, 359, 360, 361, -13, 88, 0, 362, 0, + 0, 0, 0, 0, 0, 18, 86, 0, 19, 0, + 0, 20, 0, 0, 21, 22, 23, 89, 0, 24, + 25, 90, 91, 92, 26, 27, 93, 94, 0, 0, + 95, 96, 97, 98, 0, 99, 100, 101, 102, 0, + 0, 103, 28, 29, 104, 105, 106, 30, 31, 107, + 32, 33, 34, 35, 36, 37, 0, 38, 39, 40, + 41, 42, 43, 108, 117, 0, 44, 0, 109, 45, + 46, 47, 48, 49, 50, 0, 0, 0, 51, 52, + 53, 0, 0, 0, 0, 0, 110, 0, 0, 0, + 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 454, 0, 0, + 0, 0, 0, 0, 0, 55, 56, 0, 57, 0, + 58, 59, 0, 456, -3, 88, 0, 0, 60, 0, + 0, 0, 0, 0, 18, 86, 0, 19, 0, 0, + 20, 0, 0, 21, 22, 23, 89, 0, 24, 25, + 90, 91, 92, 26, 27, 93, 94, 0, 0, 95, + 96, 97, 98, 0, 99, 100, 101, 102, 0, 0, + 103, 28, 29, 104, 105, 106, 30, 31, 107, 32, + 33, 34, 35, 36, 37, 0, 38, 39, 40, 41, + 42, 43, 108, 117, 0, 44, 0, 109, 45, 46, + 47, 48, 49, 50, 0, 0, 0, 51, 52, 53, + 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, + 0, 0, 0, 54, 0, 0, 532, 0, 0, 0, + 0, 0, 0, 200, 201, 202, 0, 0, 0, 0, + 0, 0, 0, 0, 55, 56, 0, 57, 0, 58, + 59, 0, 0, 0, 0, 0, 0, 60, 0, 0, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 0, 0, 0, 0, 223, 0, 88, + 224, 225, 226, 227, 228, 571, 572, 0, 18, 86, + 477, 19, 0, 0, 20, 0, 0, 21, 22, 23, 89, 0, 24, 25, 90, 91, 92, 26, 27, 93, - 94, 0, 0, 95, 96, 97, 98, 0, 99, 100, + 94, 0, 0, 95, 96, 97, 98, 584, 99, 100, 101, 102, 0, 0, 103, 28, 29, 104, 105, 106, 30, 31, 107, 32, 33, 34, 35, 36, 37, 0, 38, 39, 40, 41, 42, 43, 108, 117, 0, 44, 0, 109, 45, 46, 47, 48, 49, 50, 0, 0, - 0, 51, 52, 53, 0, 0, 0, 291, 0, 110, - 0, 0, 0, 0, 0, 0, 54, 1, 2, 3, - 4, 5, 6, 7, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 55, 56, 0, - 57, 0, 58, 59, 0, 0, 0, 0, 0, 0, - 60, 0, 0, 0, 0, 0, 0, 329, 0, 0, - 0, 0, 0, 334, 0, 0, 335, 336, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, -3, 88, 0, 361, 0, 0, 0, 0, - 0, 0, 18, 86, 0, 19, 0, 0, 20, 0, - 0, 21, 22, 23, 89, 0, 24, 25, 90, 91, - 92, 26, 27, 93, 94, 0, 0, 95, 96, 97, - 98, 0, 99, 100, 101, 102, 0, 0, 103, 28, - 29, 104, 105, 106, 30, 31, 107, 32, 33, 34, - 35, 36, 37, 0, 38, 39, 40, 41, 42, 43, - 108, 117, 0, 44, 0, 109, 45, 46, 47, 48, - 49, 50, 0, 0, 0, 51, 52, 53, 0, 0, - 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, - 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 88, 55, 56, 0, 57, 0, 58, 59, 0, 18, - 86, 474, 19, 0, 60, 20, 0, 0, 21, 22, - 23, 89, 0, 24, 25, 90, 91, 92, 26, 27, - 93, 94, 0, 0, 95, 96, 97, 98, 0, 99, - 100, 101, 102, 0, 0, 103, 28, 29, 104, 105, - 106, 30, 31, 107, 32, 33, 34, 35, 36, 37, - 0, 38, 39, 40, 41, 42, 43, 108, 117, 0, - 44, 0, 109, 45, 46, 47, 48, 49, 50, 0, - 0, 0, 51, 52, 53, 0, 0, 0, 0, 0, - 110, 0, 0, 0, 0, 0, 0, 54, 0, 0, - 0, 0, 0, 0, 199, 0, 0, 0, 0, 0, - 0, 529, 200, 201, 202, 0, 0, 0, 55, 56, - 0, 57, 0, 58, 59, 0, 0, 0, 0, 0, - 0, 60, 0, 206, 0, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 0, 0, 0, 0, 223, 0, 0, 224, 225, - 226, 227, 228, 88, 0, 0, 0, 0, 0, 568, - 569, 0, 18, 86, 559, 19, 0, 0, 20, 0, - 0, 21, 22, 23, 89, 0, 24, 25, 90, 91, - 92, 26, 27, 93, 94, 0, 0, 95, 96, 97, - 98, 581, 99, 100, 101, 102, 0, 0, 103, 28, - 29, 104, 105, 106, 30, 31, 107, 32, 33, 34, - 35, 36, 37, 0, 38, 39, 40, 41, 42, 43, - 108, 117, 0, 44, 0, 109, 45, 46, 47, 48, - 49, 50, 0, 0, 0, 51, 52, 53, 0, 0, - 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, - 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 88, 55, 56, 0, 57, 0, 58, 59, 0, 18, - 86, 629, 19, 0, 60, 20, 0, 0, 21, 22, - 23, 89, 0, 24, 25, 90, 91, 92, 26, 27, - 93, 94, 0, 0, 95, 96, 97, 98, 0, 99, - 100, 101, 102, 0, 0, 103, 28, 29, 104, 105, - 106, 30, 31, 107, 32, 33, 34, 35, 36, 37, - 0, 38, 39, 40, 41, 42, 43, 108, 117, 0, - 44, 0, 109, 45, 46, 47, 48, 49, 50, 0, - 0, 0, 51, 52, 53, 0, 0, 0, 0, 0, - 110, 0, 0, 0, 0, 0, 0, 54, 0, 0, + 0, 51, 52, 53, 0, 0, 0, 0, 0, 110, + 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 55, 56, - 0, 57, 0, 58, 59, 0, 18, 86, 633, 19, + 0, 57, 0, 58, 59, 0, 18, 86, 562, 19, 0, 60, 20, 0, 0, 21, 22, 23, 89, 0, 24, 25, 90, 91, 92, 26, 27, 93, 94, 0, 0, 95, 96, 97, 98, 0, 99, 100, 101, 102, @@ -785,22 +776,34 @@ static const yytype_int16 yytable[] = 40, 41, 42, 43, 108, 117, 0, 44, 0, 109, 45, 46, 47, 48, 49, 50, 0, 0, 0, 51, 52, 53, 0, 0, 0, 0, 0, 110, 0, 0, - 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 88, 55, 56, 0, 57, 0, - 58, 59, 0, 18, 86, 648, 19, 0, 60, 20, - 0, 0, 21, 22, 23, 89, 0, 24, 25, 90, - 91, 92, 26, 27, 93, 94, 0, 0, 95, 96, - 97, 98, 0, 99, 100, 101, 102, 0, 0, 103, - 28, 29, 104, 105, 106, 30, 31, 107, 32, 33, - 34, 35, 36, 37, 0, 38, 39, 40, 41, 42, - 43, 108, 117, 0, 44, 0, 109, 45, 46, 47, - 48, 49, 50, 0, 0, 0, 51, 52, 53, 0, - 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 88, 55, 56, 0, 57, + 0, 58, 59, 0, 18, 86, 632, 19, 0, 60, + 20, 0, 0, 21, 22, 23, 89, 0, 24, 25, + 90, 91, 92, 26, 27, 93, 94, 0, 0, 95, + 96, 97, 98, 0, 99, 100, 101, 102, 0, 0, + 103, 28, 29, 104, 105, 106, 30, 31, 107, 32, + 33, 34, 35, 36, 37, 0, 38, 39, 40, 41, + 42, 43, 108, 117, 0, 44, 0, 109, 45, 46, + 47, 48, 49, 50, 0, 0, 0, 51, 52, 53, + 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, + 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 88, 55, 56, 0, 57, 0, 58, + 59, 0, 18, 86, 636, 19, 0, 60, 20, 0, + 0, 21, 22, 23, 89, 0, 24, 25, 90, 91, + 92, 26, 27, 93, 94, 0, 0, 95, 96, 97, + 98, 0, 99, 100, 101, 102, 0, 0, 103, 28, + 29, 104, 105, 106, 30, 31, 107, 32, 33, 34, + 35, 36, 37, 0, 38, 39, 40, 41, 42, 43, + 108, 117, 0, 44, 0, 109, 45, 46, 47, 48, + 49, 50, 0, 0, 0, 51, 52, 53, 0, 0, + 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 55, 56, 0, 57, 0, 58, 59, 0, - 18, 86, 652, 19, 0, 60, 20, 0, 0, 21, + 18, 86, 651, 19, 0, 60, 20, 0, 0, 21, 22, 23, 89, 0, 24, 25, 90, 91, 92, 26, 27, 93, 94, 0, 0, 95, 96, 97, 98, 0, 99, 100, 101, 102, 0, 0, 103, 28, 29, 104, @@ -808,18 +811,30 @@ static const yytype_int16 yytable[] = 37, 0, 38, 39, 40, 41, 42, 43, 108, 117, 0, 44, 0, 109, 45, 46, 47, 48, 49, 50, 0, 0, 0, 51, 52, 53, 0, 0, 0, 0, - 0, 110, 0, 0, 0, 0, 0, 0, 54, 0, + 0, 110, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88, 55, - 56, 0, 57, 0, 58, 59, 0, 18, 86, 0, - 19, 0, 60, 20, 0, 0, 21, 22, 23, 89, - 0, 24, 25, 90, 91, 92, 26, 27, 93, 94, - 0, 0, 95, 96, 97, 98, 0, 99, 100, 101, - 102, 0, 0, 103, 28, 29, 104, 105, 106, 30, - 31, 107, 32, 33, 34, 35, 36, 37, 0, 38, - 39, 40, 41, 42, 43, 108, 117, 0, 44, 0, - 109, 45, 46, 47, 48, 49, 50, 0, 0, 0, - 51, 52, 53, 0, 0, 673, 0, 0, 110, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, + 55, 56, 0, 57, 0, 58, 59, 0, 18, 86, + 655, 19, 0, 60, 20, 0, 0, 21, 22, 23, + 89, 0, 24, 25, 90, 91, 92, 26, 27, 93, + 94, 0, 0, 95, 96, 97, 98, 0, 99, 100, + 101, 102, 0, 0, 103, 28, 29, 104, 105, 106, + 30, 31, 107, 32, 33, 34, 35, 36, 37, 0, + 38, 39, 40, 41, 42, 43, 108, 117, 0, 44, + 0, 109, 45, 46, 47, 48, 49, 50, 0, 0, + 0, 51, 52, 53, 0, 0, 0, 0, 0, 110, + 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 88, 55, 56, + 0, 57, 0, 58, 59, 0, 18, 86, 0, 19, + 0, 60, 20, 0, 0, 21, 22, 23, 89, 0, + 24, 25, 90, 91, 92, 26, 27, 93, 94, 0, + 0, 95, 96, 97, 98, 0, 99, 100, 101, 102, + 0, 0, 103, 28, 29, 104, 105, 106, 30, 31, + 107, 32, 33, 34, 35, 36, 37, 0, 38, 39, + 40, 41, 42, 43, 108, 117, 0, 44, 0, 109, + 45, 46, 47, 48, 49, 50, 0, 0, 0, 51, + 52, 53, 0, 0, 676, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 55, 56, 0, 57, @@ -832,332 +847,310 @@ static const yytype_int16 yytable[] = 42, 43, 108, 117, 0, 44, 0, 109, 45, 46, 47, 48, 49, 50, 0, 0, 0, 51, 52, 53, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, - 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 88, 55, 56, 0, 57, 0, 58, 59, - 0, 18, 86, 0, 19, 0, 60, 20, 0, 0, - 21, 22, 23, 89, 0, 24, 25, 90, 91, 92, - 26, 27, 93, 94, 0, 0, 95, 96, 97, 98, - 0, 99, 100, 101, 102, 0, 0, 103, 28, 29, - 104, 105, 106, 30, 31, 107, 32, 33, 34, 35, - 36, 37, 0, 38, 39, 40, 41, 42, 43, 108, - 0, 0, 44, 0, 109, 45, 46, 47, 48, 49, - 50, 0, 0, 0, 51, 52, 53, 0, 88, 0, - 0, 0, 110, 0, 0, 0, 0, 18, 0, 54, - 19, 0, 0, 20, 0, 0, 21, 22, 23, -19, - 0, 24, 25, 0, 0, 0, 26, 27, 0, 0, - 55, 56, 0, 57, 0, 58, 59, 0, 0, 0, - 0, 0, 0, 60, 28, 29, 0, 0, 0, 30, - 31, 0, 32, 33, 34, 35, 36, 37, 0, 38, - 39, 40, 41, 42, 43, 0, 0, 0, 44, 0, - 0, 45, 46, 47, 48, 49, 50, 0, 0, 88, - 51, 52, 53, 0, 0, 0, 0, 0, 18, 0, - 0, 19, 0, 0, 20, 54, 0, 21, 22, 23, - 0, 0, 24, 25, 0, 0, 0, 26, 27, 0, - 0, 0, 0, 0, 0, 0, 55, 56, 0, 57, - 0, 58, 59, 0, 0, 28, 29, 0, 0, 60, - 30, 31, 0, 32, 33, 34, 35, 36, 37, 0, - 38, 39, 40, 41, 42, 43, 0, 0, 0, 44, - 0, 0, 45, 46, 47, 48, 49, 50, 0, 0, - 0, 51, 52, 53, 0, 0, 0, 0, 0, 18, - 86, 0, 19, 0, 0, 20, 54, 0, 21, 22, + 0, 0, 0, 88, 55, 56, 0, 57, 0, 58, + 59, 0, 18, 86, 0, 19, 0, 60, 20, 0, + 0, 21, 22, 23, 89, 0, 24, 25, 90, 91, + 92, 26, 27, 93, 94, 0, 0, 95, 96, 97, + 98, 0, 99, 100, 101, 102, 0, 0, 103, 28, + 29, 104, 105, 106, 30, 31, 107, 32, 33, 34, + 35, 36, 37, 0, 38, 39, 40, 41, 42, 43, + 108, 0, 0, 44, 0, 109, 45, 46, 47, 48, + 49, 50, 0, 0, 0, 51, 52, 53, 0, 0, + 88, 0, 0, 110, 0, 0, 0, 0, 0, 18, + 0, 54, 19, 0, 0, 20, 0, 0, 21, 22, 23, 0, 0, 24, 25, 0, 0, 0, 26, 27, - 0, 0, 0, 0, 0, 0, 0, 55, 56, 0, - 57, 0, 58, 59, 0, 0, 28, 29, 0, -19, - 60, 30, 31, 0, 32, 165, 34, 35, 36, 37, - 127, 38, 39, 40, 41, 42, 43, 0, 0, 0, + 0, 0, 55, 56, 0, 57, 0, 58, 59, 0, + 0, 0, 0, 0, 0, 60, 28, 29, 0, 0, + 0, 30, 31, 0, 32, 33, 34, 35, 36, 37, + 0, 38, 39, 40, 41, 42, 43, 0, 0, 0, 44, 0, 0, 45, 46, 47, 48, 49, 50, 0, 0, 0, 51, 52, 53, 0, 0, 0, 0, 0, - 18, 86, 0, 19, 0, 0, 20, 54, 0, 21, - 22, 23, 0, 0, 24, 25, 0, 0, 0, 26, - 27, 0, 0, 0, 0, 0, 0, 0, 55, 56, - 0, 57, 0, 58, 59, 0, 0, 28, 29, 0, - 0, 60, 30, 31, 0, 32, 33, 34, 35, 36, - 37, 0, 38, 39, 40, 41, 42, 43, 0, 0, - 0, 44, 0, 0, 45, 46, 47, 48, 49, 50, - 0, 0, 0, 51, 52, 53, 0, 0, 0, 0, - 0, 18, 0, 0, 19, 0, 0, 20, 54, 0, + 0, 18, 86, 0, 19, 0, 0, 20, 54, 0, 21, 22, 23, 0, 0, 24, 25, 0, 0, 0, 26, 27, 0, 0, 0, 0, 0, 0, 0, 55, 56, 0, 57, 0, 58, 59, 0, 0, 28, 29, - 0, 0, 60, 30, 31, 0, 32, 33, 34, 35, - 36, 37, 0, 38, 39, 40, 41, 42, 43, 0, + 0, -19, 60, 30, 31, 0, 32, 165, 34, 35, + 36, 37, 127, 38, 39, 40, 41, 42, 43, 0, 0, 0, 44, 0, 0, 45, 46, 47, 48, 49, 50, 0, 0, 0, 51, 52, 53, 0, 0, 0, - 0, 0, 18, 0, 0, 19, 0, 0, 20, 54, - 0, 21, 22, 23, 0, 0, 24, 25, 0, 0, - 0, 26, 27, 0, 0, 0, 0, 0, 0, 0, - 55, 56, 0, 57, 0, 58, 59, 0, 0, 28, - 29, 0, 183, 60, 30, 31, 0, 32, 33, 34, - 35, 36, 37, 0, 38, 39, 40, 41, 42, 43, - 0, 0, 0, 44, 0, 0, 45, 46, 47, 48, - 49, 50, 0, 0, 0, 51, 52, 53, 0, 0, - 0, 0, 0, 18, 0, 0, 19, 0, 0, 20, + 0, 0, 0, 18, 86, 0, 19, 0, 0, 20, 54, 0, 21, 22, 23, 0, 0, 24, 25, 0, 0, 0, 26, 27, 0, 0, 0, 0, 0, 0, 0, 55, 56, 0, 57, 0, 58, 59, 0, 0, - 28, 29, 0, 296, 60, 30, 31, 0, 32, 33, + 28, 29, 0, 0, 60, 30, 31, 0, 32, 33, 34, 35, 36, 37, 0, 38, 39, 40, 41, 42, 43, 0, 0, 0, 44, 0, 0, 45, 46, 47, 48, 49, 50, 0, 0, 0, 51, 52, 53, 0, - 0, 0, 0, 0, -344, 230, 0, 231, 0, 0, - -344, 54, 0, -344, -344, -344, 0, 0, -344, -344, - 0, 0, 0, -344, -344, 0, 0, 0, 0, 0, - 0, 0, 55, 56, 0, 57, 0, 58, 59, 0, - 0, -344, -344, 0, 314, 60, -344, -344, 0, -344, - -344, -344, -344, -344, -344, 0, -344, -344, -344, -344, - -344, -344, 0, 0, 0, -344, 0, 0, -344, -344, - -344, -344, -344, -344, 0, 0, 0, -344, -344, -344, 0, 0, 0, 0, 0, 18, 0, 0, 19, 0, - 0, 20, -344, 0, 21, 22, 23, 0, 0, 24, + 0, 20, 54, 0, 21, 22, 23, 0, 0, 24, 25, 0, 0, 0, 26, 27, 0, 0, 0, 0, - 0, 0, 0, -344, -344, 0, -344, 0, -344, -344, - 0, 0, 28, 29, 0, 0, -344, 30, 31, 0, + 0, 0, 0, 55, 56, 0, 57, 0, 58, 59, + 0, 0, 28, 29, 0, 0, 60, 30, 31, 0, 32, 33, 34, 35, 36, 37, 0, 38, 39, 40, 41, 42, 43, 0, 0, 0, 44, 0, 0, 45, 46, 47, 48, 49, 50, 0, 0, 0, 51, 52, - 53, 0, 0, 0, 0, 0, 18, 0, 0, 19, - 0, 0, 20, 54, 0, 21, 22, 23, 0, 0, - 24, 25, 0, 0, 0, 26, 27, 0, 0, 0, - 0, 0, 0, 0, 55, 56, 0, 57, 0, 58, - 59, 0, 0, 28, 29, 0, 332, 60, 30, 31, - 0, 32, 33, 34, 35, 36, 37, 0, 38, 39, - 40, 41, 42, 43, 0, 0, 0, 44, 0, 0, - 45, 46, 47, 48, 49, 50, 0, 0, 0, 51, - 52, 53, 0, 0, 0, 0, 0, 18, 0, 0, + 53, 0, 0, 0, 0, 0, 0, 18, 0, 0, 19, 0, 0, 20, 54, 0, 21, 22, 23, 0, 0, 24, 25, 0, 0, 0, 26, 27, 0, 0, 0, 0, 0, 0, 0, 55, 56, 0, 57, 0, - 58, 59, 0, 0, 28, 29, 0, 374, 60, 30, + 58, 59, 0, 0, 28, 29, 0, 183, 60, 30, 31, 0, 32, 33, 34, 35, 36, 37, 0, 38, 39, 40, 41, 42, 43, 0, 0, 0, 44, 0, 0, 45, 46, 47, 48, 49, 50, 0, 0, 0, - 51, 52, 53, 0, 0, 0, 0, 0, 18, 0, - 0, 19, 0, 0, 20, 54, 0, 21, 22, 23, - 0, 0, 24, 25, 0, 0, 0, 26, 27, 0, - 0, 0, 0, 0, 0, 0, 55, 56, 0, 57, - 0, 58, 59, 0, 0, 28, 29, 0, 429, 60, - 30, 31, 0, 32, 33, 34, 35, 36, 37, 0, - 38, 39, 40, 41, 42, 43, 0, 0, 0, 44, - 0, 0, 45, 46, 47, 48, 49, 50, 0, 0, - 0, 51, 52, 53, 0, 0, 0, 0, 0, 18, + 51, 52, 53, 0, 0, 0, 0, 0, 0, 18, 0, 0, 19, 0, 0, 20, 54, 0, 21, 22, 23, 0, 0, 24, 25, 0, 0, 0, 26, 27, 0, 0, 0, 0, 0, 0, 0, 55, 56, 0, - 57, 0, 58, 59, 0, 0, 28, 29, 0, 463, + 57, 0, 58, 59, 0, 0, 28, 29, 0, 296, 60, 30, 31, 0, 32, 33, 34, 35, 36, 37, 0, 38, 39, 40, 41, 42, 43, 0, 0, 0, 44, 0, 0, 45, 46, 47, 48, 49, 50, 0, 0, 0, 51, 52, 53, 0, 0, 0, 0, 0, - 18, 0, 0, 19, 0, 0, 20, 54, 0, 21, - 22, 23, 0, 0, 24, 25, 0, 0, 0, 26, - 27, 0, 0, 0, 0, 0, 0, 0, 55, 56, - 0, 57, 0, 58, 59, 0, 0, 28, 29, 0, - 0, 60, 30, 31, 0, 32, 33, 34, 35, 36, - 37, 0, 38, 39, 40, 41, 42, 43, 0, 0, - 0, 44, 0, 0, 45, 46, 47, 48, 49, 50, - 0, 0, 0, 51, 52, 53, 0, 0, 0, 0, - 0, -343, 0, 0, -343, 0, 0, -343, 54, 0, - -343, -343, -343, 0, 0, -343, -343, 0, 0, 0, - -343, -343, 0, 0, 0, 0, 0, 0, 0, 55, - 56, 0, 57, 0, 58, 59, 0, 0, -343, -343, - 0, 0, 290, -343, -343, 0, -343, -343, -343, -343, - -343, -343, 0, -343, -343, -343, -343, -343, -343, 0, - 0, 0, -343, 0, 0, -343, -343, -343, -343, -343, - -343, 0, 0, 0, -343, -343, -343, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -343, - 0, 0, 0, 0, 0, 0, 0, 199, 0, 0, - 0, 0, 0, 0, 0, 200, 201, 202, 0, 0, - -343, -343, 0, -343, 0, -343, -343, 0, 203, 0, - 0, 0, 0, -343, 204, 205, 206, 453, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 0, 0, 0, 0, 223, 199, - 0, 224, 225, 226, 227, 228, 0, 200, 201, 202, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 203, 0, 0, 0, 0, 0, 204, 205, 206, 0, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 0, 0, 0, 0, - 223, 199, 0, 224, 225, 226, 227, 228, 0, 200, - 201, 202, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -345, 0, 0, 0, 0, 0, 204, 205, + 0, -346, 230, 0, 231, 0, 0, -346, 54, 0, + -346, -346, -346, 0, 0, -346, -346, 0, 0, 0, + -346, -346, 0, 0, 0, 0, 0, 0, 0, 55, + 56, 0, 57, 0, 58, 59, 0, 0, -346, -346, + 0, 314, 60, -346, -346, 0, -346, -346, -346, -346, + -346, -346, 0, -346, -346, -346, -346, -346, -346, 0, + 0, 0, -346, 0, 0, -346, -346, -346, -346, -346, + -346, 0, 0, 0, -346, -346, -346, 0, 0, 0, + 0, 0, 0, 18, 0, 0, 19, 0, 0, 20, + -346, 0, 21, 22, 23, 0, 0, 24, 25, 0, + 0, 0, 26, 27, 0, 0, 0, 0, 0, 0, + 0, -346, -346, 0, -346, 0, -346, -346, 0, 0, + 28, 29, 0, 0, -346, 30, 31, 0, 32, 33, + 34, 35, 36, 37, 0, 38, 39, 40, 41, 42, + 43, 0, 0, 0, 44, 0, 0, 45, 46, 47, + 48, 49, 50, 0, 0, 0, 51, 52, 53, 0, + 0, 0, 0, 0, 0, 18, 0, 0, 19, 0, + 0, 20, 54, 0, 21, 22, 23, 0, 0, 24, + 25, 0, 0, 0, 26, 27, 0, 0, 0, 0, + 0, 0, 0, 55, 56, 0, 57, 0, 58, 59, + 0, 0, 28, 29, 0, 332, 60, 30, 31, 0, + 32, 33, 34, 35, 36, 37, 0, 38, 39, 40, + 41, 42, 43, 0, 0, 0, 44, 0, 0, 45, + 46, 47, 48, 49, 50, 0, 0, 0, 51, 52, + 53, 0, 0, 0, 0, 0, 0, 18, 0, 0, + 19, 0, 0, 20, 54, 0, 21, 22, 23, 0, + 0, 24, 25, 0, 0, 0, 26, 27, 0, 0, + 0, 0, 0, 0, 0, 55, 56, 0, 57, 0, + 58, 59, 0, 0, 28, 29, 0, 375, 60, 30, + 31, 0, 32, 33, 34, 35, 36, 37, 0, 38, + 39, 40, 41, 42, 43, 0, 0, 0, 44, 0, + 0, 45, 46, 47, 48, 49, 50, 0, 0, 0, + 51, 52, 53, 0, 0, 0, 0, 0, 0, 18, + 0, 0, 19, 0, 0, 20, 54, 0, 21, 22, + 23, 0, 0, 24, 25, 0, 0, 0, 26, 27, + 0, 0, 0, 0, 0, 0, 0, 55, 56, 0, + 57, 0, 58, 59, 0, 0, 28, 29, 0, 430, + 60, 30, 31, 0, 32, 33, 34, 35, 36, 37, + 0, 38, 39, 40, 41, 42, 43, 0, 0, 0, + 44, 0, 0, 45, 46, 47, 48, 49, 50, 0, + 0, 0, 51, 52, 53, 0, 0, 0, 0, 0, + 0, 18, 0, 0, 19, 0, 0, 20, 54, 0, + 21, 22, 23, 0, 0, 24, 25, 0, 0, 0, + 26, 27, 0, 0, 0, 0, 0, 0, 0, 55, + 56, 0, 57, 0, 58, 59, 0, 0, 28, 29, + 0, 466, 60, 30, 31, 0, 32, 33, 34, 35, + 36, 37, 0, 38, 39, 40, 41, 42, 43, 0, + 0, 0, 44, 0, 0, 45, 46, 47, 48, 49, + 50, 0, 0, 0, 51, 52, 53, 0, 0, 0, + 0, 0, 0, 18, 0, 0, 19, 0, 0, 20, + 54, 0, 21, 22, 23, 0, 0, 24, 25, 0, + 0, 0, 26, 27, 0, 0, 0, 0, 0, 0, + 0, 55, 56, 0, 57, 0, 58, 59, 0, 0, + 28, 29, 0, 0, 60, 30, 31, 0, 32, 33, + 34, 35, 36, 37, 0, 38, 39, 40, 41, 42, + 43, 0, 0, 0, 44, 0, 0, 45, 46, 47, + 48, 49, 50, 0, 0, 0, 51, 52, 53, 0, + 0, 0, 0, 0, 0, -345, 0, 0, -345, 0, + 0, -345, 54, 0, -345, -345, -345, 0, 0, -345, + -345, 0, 0, 0, -345, -345, 0, 0, 0, 0, + 0, 0, 0, 55, 56, 0, 57, 0, 58, 59, + 0, 0, -345, -345, 0, 0, 290, -345, -345, 0, + -345, -345, -345, -345, -345, -345, 0, -345, -345, -345, + -345, -345, -345, 0, 0, 0, -345, 0, 0, -345, + -345, -345, -345, -345, -345, 0, 0, 0, -345, -345, + -345, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -345, 0, 0, 0, 0, 0, + 0, 199, 0, 0, 0, 0, 0, 0, 0, 200, + 201, 202, 0, 0, 0, -345, -345, 0, -345, 0, + -345, -345, 0, 203, 0, 0, 0, 0, -345, 204, + 205, 206, 455, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 0, + 0, 0, 0, 223, 199, 0, 224, 225, 226, 227, + 228, 0, 200, 201, 202, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 203, 0, 0, 0, + 0, 0, 204, 205, 206, 0, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 0, 0, 0, 0, 223, 199, 0, 224, + 225, 226, 227, 228, 0, 200, 201, 202, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -347, + 0, 0, 0, 0, 0, 204, 205, 206, 0, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 0, 0, 0, 0, 223, + 199, 0, 224, 225, 226, 227, 228, 0, 200, 201, + 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 204, 205, 206, 0, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 0, 0, 0, 0, 223, 199, 0, 224, 225, 226, 227, 228, 0, 200, 201, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 204, 205, 206, 0, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 0, 0, 0, 0, 223, -345, 0, 224, 225, 226, - 227, 228, 0, 200, 201, 202, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 200, 201, 202, 0, 223, 0, 0, 224, - 225, 226, 227, 228, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 200, 201, 202, 210, 211, + 200, 201, 202, 206, 0, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 0, 0, 0, 0, 223, 0, 0, 224, 225, - 226, 227, 228, 212, 213, 214, 215, 216, 217, 218, + 222, 0, 0, 0, 0, 223, -347, 0, 224, 225, + 226, 227, 228, 0, 200, 201, 202, 220, 221, 222, + 0, 0, 0, 0, 223, 0, 0, 224, 225, 226, + 227, 228, 0, 0, 0, 0, 0, 0, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 200, 201, 202, 0, 223, 0, 0, 224, 225, 226, 227, 228, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 200, 201, 202, 0, 0, - 0, 0, 0, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 0, 200, 201, 202, 223, 0, 0, - 224, 225, 226, 227, 228, 214, 215, 216, 217, 218, + 0, 0, 0, 0, 0, 0, 200, 201, 202, 0, + 0, 0, 0, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 200, 201, 202, 0, 223, 0, - 0, 224, 225, 226, 227, 228, 216, 217, 218, 219, - 220, 221, 222, 200, 201, 202, 0, 223, 0, 0, - 224, 225, 226, 227, 228, 0, 0, 0, -345, 219, - 220, 221, 222, 200, 201, 202, 0, 223, 0, 0, - 224, 225, 226, 227, 228, 0, 0, 0, 219, 220, - 221, 222, 0, 0, 0, 0, 223, 0, 0, 224, - 225, 226, 227, 228, 0, 0, 0, 0, 0, 220, - 221, 222, 0, 0, 0, 0, 223, 0, 0, 224, - 225, 226, 227, 228 + 0, 224, 225, 226, 227, 228, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 200, 201, 202, 0, + 223, 0, 0, 224, 225, 226, 227, 228, 0, -347, + 219, 220, 221, 222, 0, 0, 0, 0, 223, 0, + 0, 224, 225, 226, 227, 228, 0, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 0, 0, 0, 0, + 223, 0, 0, 224, 225, 226, 227, 228 }; static const yytype_int16 yycheck[] = { - 10, 17, 19, 49, 27, 27, 403, 11, 54, 19, - 150, 306, 556, 151, 18, 12, 20, 105, 22, 10, - 24, 25, 11, 111, 13, 29, 110, 14, 19, 11, - 34, 35, 25, 13, 89, 52, 583, 0, 176, 49, - 16, 16, 52, 15, 48, 49, 50, 51, 16, 110, - 111, 23, 20, 22, 13, 30, 24, 11, 18, 13, - 20, 52, 22, 56, 24, 25, 11, 27, 61, 60, - 93, 93, 11, 13, 34, 35, 132, 132, 393, 11, - 11, 13, 13, 22, 11, 11, 13, 13, 403, 49, - 59, 51, 14, 408, 409, 56, 103, 101, 112, 113, - 61, 9, 112, 14, 132, 151, 86, 94, 95, 96, - 97, 96, 97, 657, 124, 18, 139, 139, 22, 22, - 117, 24, 25, 670, 170, 171, 11, 86, 13, 132, - 176, 34, 35, 93, 129, 130, 96, 11, 148, 149, - 150, 151, 16, 132, 161, 162, 49, 122, 51, 140, - 132, 161, 162, 157, 122, 86, 132, 132, 162, 86, - 86, 15, 302, 154, 132, 11, 176, 33, 34, 160, - 161, 162, 94, 95, 96, 97, 22, 261, 86, 139, - 264, 496, 56, 94, 95, 96, 97, 61, 112, 110, - 94, 95, 96, 97, 185, 186, 187, 188, 132, 190, - 191, 192, 162, 10, 11, 31, 13, 270, 271, 16, - 273, 274, 22, 20, 14, 11, 42, 24, 25, 11, - 16, 237, 11, 11, 13, 248, 248, 14, 238, 25, - 11, 241, 13, 56, 549, 550, 56, 132, 229, 230, - 231, 232, 233, 234, 235, 236, 132, 11, 388, 32, - 57, 132, 35, 36, 37, 38, 22, 132, 41, 162, - 56, 265, 132, 309, 132, 61, 22, 39, 228, 14, - 667, 566, 22, 14, 362, 590, 83, 14, 269, 270, - 271, 272, 273, 274, 94, 95, 96, 97, 248, 22, - 22, 308, 302, 14, 94, 95, 96, 97, 308, 290, - 86, 616, 22, 70, 442, 132, 86, 94, 95, 96, - 97, 94, 95, 96, 97, 22, 16, 308, 16, 89, - 20, 636, 20, 131, 24, 132, 24, 318, 94, 95, - 96, 97, 323, 588, 131, 22, 13, 245, 246, 247, - 56, 249, 250, 56, 252, 253, 254, 255, 131, 94, - 95, 96, 97, 94, 95, 96, 97, 94, 95, 96, - 97, 365, 94, 95, 96, 97, 56, 622, 623, 624, - 510, 86, 363, 364, 94, 95, 96, 97, 388, 122, - 371, 404, 404, 638, 639, 132, 15, 94, 95, 96, - 97, 44, 61, 403, 410, 59, 442, 94, 95, 96, - 97, 392, 393, 658, 32, 365, 90, 35, 36, 37, - 38, 666, 403, 41, 131, 406, 407, 408, 409, 94, - 95, 96, 97, 59, 564, 563, 436, 12, 25, 13, - 440, 25, 442, 25, 131, 395, 94, 95, 96, 97, - 132, 80, 81, 82, 404, 25, 18, 59, 465, 94, - 95, 96, 97, 99, 132, 465, 131, 56, 449, 22, - 11, 80, 81, 131, 99, 99, 94, 95, 96, 97, - 132, 12, 132, 131, 465, 114, 115, 116, 117, 118, - 94, 95, 96, 97, 123, 80, 131, 126, 127, 128, - 129, 130, 12, 503, 12, 505, 12, 405, 117, 118, - 510, 12, 16, 411, 123, 496, 414, 126, 127, 128, - 129, 130, 132, 530, 131, 131, 131, 563, 22, 132, - 530, 131, 131, 118, 131, 485, 434, 131, 123, 56, - 521, 126, 127, 128, 129, 130, 11, 544, 545, 530, - 94, 95, 96, 97, 551, 94, 95, 96, 97, 565, - 557, 558, 11, 563, 564, 90, 12, 131, 549, 550, - 22, 131, 15, 579, 132, 131, 131, 475, 132, 477, - 22, 131, 582, 583, 131, 88, 131, 131, 588, 22, - 488, 10, 131, 22, 591, 592, 593, 16, 132, 605, - 597, 20, 131, 609, 45, 24, 17, 607, 589, 590, - 131, 30, 131, 610, 94, 95, 96, 97, 131, 87, - 617, 618, 622, 623, 624, 94, 95, 96, 97, 126, - 127, 128, 129, 130, 584, 616, 80, 13, 638, 639, - 131, 117, 589, 541, 641, 406, 596, 667, 505, 283, - 650, 131, 646, 292, 428, 636, 662, 654, 658, 599, - 139, 516, 131, 404, -1, 434, 666, 667, 665, 21, - 670, 23, 248, -1, 26, -1, 28, 29, 675, 123, - -1, -1, 126, 127, 128, 129, 130, -1, -1, 41, - -1, -1, 44, -1, -1, -1, 48, -1, 0, 1, - -1, 599, -1, 55, 56, 57, 58, 59, 10, 11, - -1, 13, -1, -1, 16, -1, -1, 19, 20, 21, + 10, 17, 306, 49, 19, 27, 27, 11, 54, 19, + 151, 404, 150, 11, 18, 13, 20, 105, 22, 10, + 24, 25, 11, 111, 110, 29, 16, 12, 19, 586, + 34, 35, 89, 559, 11, 176, 13, 52, 0, 49, + 22, 11, 52, 16, 48, 49, 50, 51, 16, 13, + 13, 133, 20, 11, 56, 13, 24, 30, 18, 61, + 20, 52, 22, 13, 24, 25, 133, 27, 9, 60, + 25, 93, 93, 133, 34, 35, 133, 59, 15, 18, + 15, 11, 11, 22, 13, 24, 25, 11, 23, 49, + 113, 51, 22, 31, 111, 34, 35, 101, 22, 14, + 133, 56, 112, 14, 42, 151, 61, 14, 11, 86, + 49, 394, 51, 11, 124, 13, 673, 139, 139, 113, + 114, 404, 86, 86, 170, 171, 409, 410, 86, 11, + 176, 13, 117, 93, 660, 133, 96, 11, 148, 149, + 150, 151, 56, 133, 133, 86, 161, 162, 56, 140, + 123, 161, 162, 157, 11, 123, 13, 86, 162, 22, + 133, 103, 11, 154, 302, 133, 176, 16, 133, 160, + 161, 162, 14, 130, 131, 261, 14, 133, 264, 139, + 95, 96, 97, 98, 95, 96, 97, 98, 95, 96, + 97, 98, 111, 112, 185, 186, 187, 188, 22, 190, + 191, 192, 162, 10, 11, 133, 13, 56, 11, 16, + 13, 22, 61, 20, 97, 98, 499, 24, 25, 11, + 11, 237, 13, 162, 33, 34, 248, 248, 238, 133, + 14, 241, 95, 96, 97, 98, 133, 14, 229, 230, + 231, 232, 233, 234, 235, 236, 133, 14, 22, 22, + 57, 389, 39, 95, 96, 97, 98, 95, 96, 97, + 98, 265, 22, 309, 14, 569, 22, 86, 228, 552, + 553, 95, 96, 97, 98, 363, 83, 670, 269, 270, + 271, 272, 273, 274, 95, 96, 97, 98, 248, 70, + 86, 89, 302, 308, 22, 22, 133, 132, 308, 290, + 132, 13, 443, 92, 245, 246, 247, 56, 249, 250, + 593, 252, 253, 254, 255, 591, 22, 308, 95, 96, + 97, 98, 95, 96, 97, 98, 133, 318, 95, 96, + 97, 98, 323, 56, 56, 32, 619, 123, 35, 36, + 37, 38, 86, 133, 41, 95, 96, 97, 98, 625, + 626, 627, 44, 16, 61, 16, 639, 20, 59, 20, + 80, 24, 366, 24, 15, 641, 642, 95, 96, 97, + 98, 59, 90, 364, 365, 513, 12, 132, 13, 389, + 25, 372, 25, 405, 405, 661, 25, 133, 25, 95, + 96, 97, 98, 669, 404, 411, 18, 443, 95, 96, + 97, 98, 393, 394, 124, 59, 366, 127, 128, 129, + 130, 131, 133, 404, 100, 56, 407, 408, 409, 410, + 22, 100, 100, 11, 11, 566, 16, 437, 16, 567, + 133, 441, 132, 443, 12, 132, 396, 25, 95, 96, + 97, 98, 80, 81, 82, 405, 32, 12, 133, 35, + 36, 37, 38, 468, 12, 41, 10, 12, 468, 450, + 270, 271, 16, 273, 274, 406, 20, 12, 56, 133, + 24, 412, 132, 61, 415, 132, 30, 468, 116, 117, + 118, 119, 95, 96, 97, 98, 124, 22, 132, 127, + 128, 129, 130, 131, 435, 56, 506, 80, 508, 95, + 96, 97, 98, 513, 132, 132, 132, 132, 499, 95, + 96, 97, 98, 132, 95, 96, 97, 98, 533, 132, + 566, 80, 81, 533, 133, 11, 11, 90, 488, 12, + 22, 132, 132, 524, 15, 133, 119, 478, 132, 480, + 22, 124, 533, 132, 127, 128, 129, 130, 131, 88, + 491, 132, 568, 132, 22, 132, 566, 567, 133, 118, + 119, 552, 553, 132, 22, 124, 582, 133, 127, 128, + 129, 130, 131, 45, 17, 585, 586, 95, 96, 97, + 98, 591, 132, 132, 132, 87, 80, 81, 82, 132, + 132, 13, 608, 117, 407, 592, 612, 670, 508, 292, + 610, 592, 593, 544, 429, 547, 548, 95, 96, 97, + 98, 283, 554, 519, 132, 625, 626, 627, 560, 561, + 435, 115, 116, 117, 118, 119, 602, 587, 619, 214, + 124, 641, 642, 127, 128, 129, 130, 131, 139, 599, + 405, 248, -1, 653, 132, 649, -1, -1, 639, 665, + -1, 661, 594, 595, 596, -1, -1, -1, 600, 669, + 670, 602, 21, 673, 23, -1, -1, 26, -1, 28, + 29, 613, 95, 96, 97, 98, -1, -1, 620, 621, + -1, -1, 41, -1, -1, 44, -1, -1, -1, 48, + 95, 96, 97, 98, -1, -1, 55, 56, 57, 58, + 59, 1, 644, 95, 96, 97, 98, -1, -1, 132, + 10, -1, -1, 13, -1, 657, 16, -1, -1, 19, + 20, 21, 22, -1, 24, 25, 668, 132, -1, 29, + 30, 127, 128, 129, 130, 131, 678, -1, -1, -1, + 132, -1, -1, -1, -1, -1, -1, 47, 48, -1, + -1, -1, 52, 53, -1, 55, 56, 57, 58, 59, + 60, -1, 62, 63, 64, 65, 66, 67, 80, 81, + 82, 71, -1, -1, 74, 75, 76, 77, 78, 79, + 139, -1, -1, 83, 84, 85, 3, 4, 5, 6, + 7, 8, 9, -1, -1, -1, -1, -1, -1, 99, + -1, 113, 114, 115, 116, 117, 118, 119, -1, -1, + -1, -1, 124, -1, -1, 127, 128, 129, 130, 131, + 120, 121, -1, 123, -1, 125, 126, -1, -1, -1, + 189, -1, -1, 133, -1, -1, 195, -1, -1, -1, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, -1, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 0, 1, -1, 227, -1, + -1, -1, -1, -1, -1, 10, 11, -1, 13, -1, + -1, 16, -1, -1, 19, 20, 21, 22, -1, 24, + 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, + 35, 36, 37, 38, -1, 40, 41, 42, 43, -1, + -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, -1, 62, 63, 64, + 65, 66, 67, 68, 69, -1, 71, -1, 73, 74, + 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, + 85, -1, -1, -1, -1, -1, 91, -1, -1, -1, + -1, -1, -1, -1, 99, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 336, -1, -1, + -1, -1, -1, -1, -1, 120, 121, -1, 123, -1, + 125, 126, -1, 352, 0, 1, -1, -1, 133, -1, + -1, -1, -1, -1, 10, 11, -1, 13, -1, -1, + 16, -1, -1, 19, 20, 21, 22, -1, 24, 25, + 26, 27, 28, 29, 30, 31, 32, -1, -1, 35, + 36, 37, 38, -1, 40, 41, 42, 43, -1, -1, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, -1, 62, 63, 64, 65, + 66, 67, 68, 69, -1, 71, -1, 73, 74, 75, + 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, + -1, -1, -1, -1, -1, 91, -1, -1, -1, -1, + -1, -1, -1, 99, -1, -1, 455, -1, -1, -1, + -1, -1, -1, 80, 81, 82, -1, -1, -1, -1, + -1, -1, -1, -1, 120, 121, -1, 123, -1, 125, + 126, -1, -1, -1, -1, -1, -1, 133, -1, -1, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, -1, -1, -1, -1, 124, -1, 1, + 127, 128, 129, 130, 131, 514, 515, -1, 10, 11, + 12, 13, -1, -1, 16, -1, -1, 19, 20, 21, 22, -1, 24, 25, 26, 27, 28, 29, 30, 31, - 32, -1, -1, 35, 36, 37, 38, -1, 40, 41, + 32, -1, -1, 35, 36, 37, 38, 546, 40, 41, 42, 43, -1, -1, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, -1, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, -1, 73, 74, 75, 76, 77, 78, 79, -1, -1, - -1, 83, 84, 85, -1, -1, -1, 139, -1, 91, - -1, -1, -1, -1, -1, -1, 98, 3, 4, 5, - 6, 7, 8, 9, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 119, 120, -1, - 122, -1, 124, 125, -1, -1, -1, -1, -1, -1, - 132, -1, -1, -1, -1, -1, -1, 189, -1, -1, - -1, -1, -1, 195, -1, -1, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 0, 1, -1, 227, -1, -1, -1, -1, - -1, -1, 10, 11, -1, 13, -1, -1, 16, -1, - -1, 19, 20, 21, 22, -1, 24, 25, 26, 27, - 28, 29, 30, 31, 32, -1, -1, 35, 36, 37, - 38, -1, 40, 41, 42, 43, -1, -1, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, -1, 62, 63, 64, 65, 66, 67, - 68, 69, -1, 71, -1, 73, 74, 75, 76, 77, - 78, 79, -1, -1, -1, 83, 84, 85, -1, -1, - -1, -1, -1, 91, -1, -1, -1, -1, -1, -1, - 98, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 83, 84, 85, -1, -1, -1, -1, -1, 91, + -1, -1, -1, -1, -1, -1, -1, 99, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1, 119, 120, -1, 122, -1, 124, 125, -1, 10, - 11, 12, 13, -1, 132, 16, -1, -1, 19, 20, - 21, 22, -1, 24, 25, 26, 27, 28, 29, 30, - 31, 32, -1, -1, 35, 36, 37, 38, -1, 40, - 41, 42, 43, -1, -1, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - -1, 62, 63, 64, 65, 66, 67, 68, 69, -1, - 71, -1, 73, 74, 75, 76, 77, 78, 79, -1, - -1, -1, 83, 84, 85, -1, -1, -1, -1, -1, - 91, -1, -1, -1, -1, -1, -1, 98, -1, -1, - -1, -1, -1, -1, 72, -1, -1, -1, -1, -1, - -1, 453, 80, 81, 82, -1, -1, -1, 119, 120, - -1, 122, -1, 124, 125, -1, -1, -1, -1, -1, - -1, 132, -1, 101, -1, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, -1, -1, -1, -1, 123, -1, -1, 126, 127, - 128, 129, 130, 1, -1, -1, -1, -1, -1, 511, - 512, -1, 10, 11, 12, 13, -1, -1, 16, -1, - -1, 19, 20, 21, 22, -1, 24, 25, 26, 27, - 28, 29, 30, 31, 32, -1, -1, 35, 36, 37, - 38, 543, 40, 41, 42, 43, -1, -1, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, -1, 62, 63, 64, 65, 66, 67, - 68, 69, -1, 71, -1, 73, 74, 75, 76, 77, - 78, 79, -1, -1, -1, 83, 84, 85, -1, -1, - -1, -1, -1, 91, -1, -1, -1, -1, -1, -1, - 98, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1, 119, 120, -1, 122, -1, 124, 125, -1, 10, - 11, 12, 13, -1, 132, 16, -1, -1, 19, 20, - 21, 22, -1, 24, 25, 26, 27, 28, 29, 30, - 31, 32, -1, -1, 35, 36, 37, 38, -1, 40, - 41, 42, 43, -1, -1, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - -1, 62, 63, 64, 65, 66, 67, 68, 69, -1, - 71, -1, 73, 74, 75, 76, 77, 78, 79, -1, - -1, -1, 83, 84, 85, -1, -1, -1, -1, -1, - 91, -1, -1, -1, -1, -1, -1, 98, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1, 119, 120, - -1, 122, -1, 124, 125, -1, 10, 11, 12, 13, - -1, 132, 16, -1, -1, 19, 20, 21, 22, -1, + -1, -1, -1, -1, -1, -1, -1, 1, 120, 121, + -1, 123, -1, 125, 126, -1, 10, 11, 12, 13, + -1, 133, 16, -1, -1, 19, 20, 21, 22, -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, 35, 36, 37, 38, -1, 40, 41, 42, 43, -1, -1, 46, 47, 48, 49, 50, 51, 52, 53, @@ -1165,22 +1158,34 @@ static const yytype_int16 yycheck[] = 64, 65, 66, 67, 68, 69, -1, 71, -1, 73, 74, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, -1, -1, -1, -1, -1, 91, -1, -1, - -1, -1, -1, -1, 98, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 99, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1, 119, 120, -1, 122, -1, - 124, 125, -1, 10, 11, 12, 13, -1, 132, 16, - -1, -1, 19, 20, 21, 22, -1, 24, 25, 26, - 27, 28, 29, 30, 31, 32, -1, -1, 35, 36, - 37, 38, -1, 40, 41, 42, 43, -1, -1, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, -1, 62, 63, 64, 65, 66, - 67, 68, 69, -1, 71, -1, 73, 74, 75, 76, - 77, 78, 79, -1, -1, -1, 83, 84, 85, -1, - -1, -1, -1, -1, 91, -1, -1, -1, -1, -1, - -1, 98, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1, 120, 121, -1, 123, + -1, 125, 126, -1, 10, 11, 12, 13, -1, 133, + 16, -1, -1, 19, 20, 21, 22, -1, 24, 25, + 26, 27, 28, 29, 30, 31, 32, -1, -1, 35, + 36, 37, 38, -1, 40, 41, 42, 43, -1, -1, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, -1, 62, 63, 64, 65, + 66, 67, 68, 69, -1, 71, -1, 73, 74, 75, + 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, + -1, -1, -1, -1, -1, 91, -1, -1, -1, -1, + -1, -1, -1, 99, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1, 120, 121, -1, 123, -1, 125, + 126, -1, 10, 11, 12, 13, -1, 133, 16, -1, + -1, 19, 20, 21, 22, -1, 24, 25, 26, 27, + 28, 29, 30, 31, 32, -1, -1, 35, 36, 37, + 38, -1, 40, 41, 42, 43, -1, -1, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, -1, 62, 63, 64, 65, 66, 67, + 68, 69, -1, 71, -1, 73, 74, 75, 76, 77, + 78, 79, -1, -1, -1, 83, 84, 85, -1, -1, + -1, -1, -1, 91, -1, -1, -1, -1, -1, -1, + -1, 99, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1, 119, 120, -1, 122, -1, 124, 125, -1, - 10, 11, 12, 13, -1, 132, 16, -1, -1, 19, + -1, 1, 120, 121, -1, 123, -1, 125, 126, -1, + 10, 11, 12, 13, -1, 133, 16, -1, -1, 19, 20, 21, 22, -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, 35, 36, 37, 38, -1, 40, 41, 42, 43, -1, -1, 46, 47, 48, 49, @@ -1188,22 +1193,34 @@ static const yytype_int16 yycheck[] = 60, -1, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, -1, 73, 74, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, -1, -1, -1, -1, - -1, 91, -1, -1, -1, -1, -1, -1, 98, -1, + -1, 91, -1, -1, -1, -1, -1, -1, -1, 99, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1, 119, - 120, -1, 122, -1, 124, 125, -1, 10, 11, -1, - 13, -1, 132, 16, -1, -1, 19, 20, 21, 22, - -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, - -1, -1, 35, 36, 37, 38, -1, 40, 41, 42, - 43, -1, -1, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, -1, 62, - 63, 64, 65, 66, 67, 68, 69, -1, 71, -1, - 73, 74, 75, 76, 77, 78, 79, -1, -1, -1, - 83, 84, 85, -1, -1, 88, -1, -1, 91, -1, - -1, -1, -1, -1, -1, 98, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, + 120, 121, -1, 123, -1, 125, 126, -1, 10, 11, + 12, 13, -1, 133, 16, -1, -1, 19, 20, 21, + 22, -1, 24, 25, 26, 27, 28, 29, 30, 31, + 32, -1, -1, 35, 36, 37, 38, -1, 40, 41, + 42, 43, -1, -1, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, -1, + 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, + -1, 73, 74, 75, 76, 77, 78, 79, -1, -1, + -1, 83, 84, 85, -1, -1, -1, -1, -1, 91, + -1, -1, -1, -1, -1, -1, -1, 99, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1, 119, 120, -1, 122, - -1, 124, 125, -1, 10, 11, -1, 13, -1, 132, + -1, -1, -1, -1, -1, -1, -1, 1, 120, 121, + -1, 123, -1, 125, 126, -1, 10, 11, -1, 13, + -1, 133, 16, -1, -1, 19, 20, 21, 22, -1, + 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, + -1, 35, 36, 37, 38, -1, 40, 41, 42, 43, + -1, -1, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, -1, 62, 63, + 64, 65, 66, 67, 68, 69, -1, 71, -1, 73, + 74, 75, 76, 77, 78, 79, -1, -1, -1, 83, + 84, 85, -1, -1, 88, -1, -1, 91, -1, -1, + -1, -1, -1, -1, -1, 99, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1, 120, 121, -1, 123, + -1, 125, 126, -1, 10, 11, -1, 13, -1, 133, 16, -1, -1, 19, 20, 21, 22, -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, 35, 36, 37, 38, -1, 40, 41, 42, 43, -1, -1, @@ -1212,302 +1229,291 @@ static const yytype_int16 yycheck[] = 66, 67, 68, 69, -1, 71, -1, 73, 74, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, -1, -1, -1, -1, -1, 91, -1, -1, -1, -1, - -1, -1, 98, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 99, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1, 119, 120, -1, 122, -1, 124, 125, - -1, 10, 11, -1, 13, -1, 132, 16, -1, -1, - 19, 20, 21, 22, -1, 24, 25, 26, 27, 28, - 29, 30, 31, 32, -1, -1, 35, 36, 37, 38, - -1, 40, 41, 42, 43, -1, -1, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, -1, 62, 63, 64, 65, 66, 67, 68, - -1, -1, 71, -1, 73, 74, 75, 76, 77, 78, - 79, -1, -1, -1, 83, 84, 85, -1, 1, -1, - -1, -1, 91, -1, -1, -1, -1, 10, -1, 98, - 13, -1, -1, 16, -1, -1, 19, 20, 21, 22, + -1, -1, -1, 1, 120, 121, -1, 123, -1, 125, + 126, -1, 10, 11, -1, 13, -1, 133, 16, -1, + -1, 19, 20, 21, 22, -1, 24, 25, 26, 27, + 28, 29, 30, 31, 32, -1, -1, 35, 36, 37, + 38, -1, 40, 41, 42, 43, -1, -1, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, -1, 62, 63, 64, 65, 66, 67, + 68, -1, -1, 71, -1, 73, 74, 75, 76, 77, + 78, 79, -1, -1, -1, 83, 84, 85, -1, -1, + 1, -1, -1, 91, -1, -1, -1, -1, -1, 10, + -1, 99, 13, -1, -1, 16, -1, -1, 19, 20, + 21, -1, -1, 24, 25, -1, -1, -1, 29, 30, + -1, -1, 120, 121, -1, 123, -1, 125, 126, -1, + -1, -1, -1, -1, -1, 133, 47, 48, -1, -1, + -1, 52, 53, -1, 55, 56, 57, 58, 59, 60, + -1, 62, 63, 64, 65, 66, 67, -1, -1, -1, + 71, -1, -1, 74, 75, 76, 77, 78, 79, -1, + -1, -1, 83, 84, 85, -1, -1, -1, -1, -1, + -1, 10, 11, -1, 13, -1, -1, 16, 99, -1, + 19, 20, 21, -1, -1, 24, 25, -1, -1, -1, + 29, 30, -1, -1, -1, -1, -1, -1, -1, 120, + 121, -1, 123, -1, 125, 126, -1, -1, 47, 48, + -1, 132, 133, 52, 53, -1, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, + -1, -1, 71, -1, -1, 74, 75, 76, 77, 78, + 79, -1, -1, -1, 83, 84, 85, -1, -1, -1, + -1, -1, -1, 10, 11, -1, 13, -1, -1, 16, + 99, -1, 19, 20, 21, -1, -1, 24, 25, -1, + -1, -1, 29, 30, -1, -1, -1, -1, -1, -1, + -1, 120, 121, -1, 123, -1, 125, 126, -1, -1, + 47, 48, -1, -1, 133, 52, 53, -1, 55, 56, + 57, 58, 59, 60, -1, 62, 63, 64, 65, 66, + 67, -1, -1, -1, 71, -1, -1, 74, 75, 76, + 77, 78, 79, -1, -1, -1, 83, 84, 85, -1, + -1, -1, -1, -1, -1, 10, -1, -1, 13, -1, + -1, 16, 99, -1, 19, 20, 21, -1, -1, 24, + 25, -1, -1, -1, 29, 30, -1, -1, -1, -1, + -1, -1, -1, 120, 121, -1, 123, -1, 125, 126, + -1, -1, 47, 48, -1, -1, 133, 52, 53, -1, + 55, 56, 57, 58, 59, 60, -1, 62, 63, 64, + 65, 66, 67, -1, -1, -1, 71, -1, -1, 74, + 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, + 85, -1, -1, -1, -1, -1, -1, 10, -1, -1, + 13, -1, -1, 16, 99, -1, 19, 20, 21, -1, -1, 24, 25, -1, -1, -1, 29, 30, -1, -1, - 119, 120, -1, 122, -1, 124, 125, -1, -1, -1, - -1, -1, -1, 132, 47, 48, -1, -1, -1, 52, + -1, -1, -1, -1, -1, 120, 121, -1, 123, -1, + 125, 126, -1, -1, 47, 48, -1, 132, 133, 52, 53, -1, 55, 56, 57, 58, 59, 60, -1, 62, 63, 64, 65, 66, 67, -1, -1, -1, 71, -1, - -1, 74, 75, 76, 77, 78, 79, -1, -1, 1, - 83, 84, 85, -1, -1, -1, -1, -1, 10, -1, - -1, 13, -1, -1, 16, 98, -1, 19, 20, 21, - -1, -1, 24, 25, -1, -1, -1, 29, 30, -1, - -1, -1, -1, -1, -1, -1, 119, 120, -1, 122, - -1, 124, 125, -1, -1, 47, 48, -1, -1, 132, - 52, 53, -1, 55, 56, 57, 58, 59, 60, -1, - 62, 63, 64, 65, 66, 67, -1, -1, -1, 71, - -1, -1, 74, 75, 76, 77, 78, 79, -1, -1, - -1, 83, 84, 85, -1, -1, -1, -1, -1, 10, - 11, -1, 13, -1, -1, 16, 98, -1, 19, 20, + -1, 74, 75, 76, 77, 78, 79, -1, -1, -1, + 83, 84, 85, -1, -1, -1, -1, -1, -1, 10, + -1, -1, 13, -1, -1, 16, 99, -1, 19, 20, 21, -1, -1, 24, 25, -1, -1, -1, 29, 30, - -1, -1, -1, -1, -1, -1, -1, 119, 120, -1, - 122, -1, 124, 125, -1, -1, 47, 48, -1, 131, - 132, 52, 53, -1, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 120, 121, -1, + 123, -1, 125, 126, -1, -1, 47, 48, -1, 132, + 133, 52, 53, -1, 55, 56, 57, 58, 59, 60, + -1, 62, 63, 64, 65, 66, 67, -1, -1, -1, 71, -1, -1, 74, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, -1, -1, -1, -1, -1, - 10, 11, -1, 13, -1, -1, 16, 98, -1, 19, - 20, 21, -1, -1, 24, 25, -1, -1, -1, 29, - 30, -1, -1, -1, -1, -1, -1, -1, 119, 120, - -1, 122, -1, 124, 125, -1, -1, 47, 48, -1, - -1, 132, 52, 53, -1, 55, 56, 57, 58, 59, - 60, -1, 62, 63, 64, 65, 66, 67, -1, -1, - -1, 71, -1, -1, 74, 75, 76, 77, 78, 79, - -1, -1, -1, 83, 84, 85, -1, -1, -1, -1, - -1, 10, -1, -1, 13, -1, -1, 16, 98, -1, + -1, 10, 11, -1, 13, -1, -1, 16, 99, -1, 19, 20, 21, -1, -1, 24, 25, -1, -1, -1, - 29, 30, -1, -1, -1, -1, -1, -1, -1, 119, - 120, -1, 122, -1, 124, 125, -1, -1, 47, 48, - -1, -1, 132, 52, 53, -1, 55, 56, 57, 58, + 29, 30, -1, -1, -1, -1, -1, -1, -1, 120, + 121, -1, 123, -1, 125, 126, -1, -1, 47, 48, + -1, 132, 133, 52, 53, -1, 55, 56, 57, 58, 59, 60, -1, 62, 63, 64, 65, 66, 67, -1, -1, -1, 71, -1, -1, 74, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, -1, -1, -1, - -1, -1, 10, -1, -1, 13, -1, -1, 16, 98, - -1, 19, 20, 21, -1, -1, 24, 25, -1, -1, - -1, 29, 30, -1, -1, -1, -1, -1, -1, -1, - 119, 120, -1, 122, -1, 124, 125, -1, -1, 47, - 48, -1, 131, 132, 52, 53, -1, 55, 56, 57, - 58, 59, 60, -1, 62, 63, 64, 65, 66, 67, - -1, -1, -1, 71, -1, -1, 74, 75, 76, 77, - 78, 79, -1, -1, -1, 83, 84, 85, -1, -1, -1, -1, -1, 10, -1, -1, 13, -1, -1, 16, - 98, -1, 19, 20, 21, -1, -1, 24, 25, -1, + 99, -1, 19, 20, 21, -1, -1, 24, 25, -1, -1, -1, 29, 30, -1, -1, -1, -1, -1, -1, - -1, 119, 120, -1, 122, -1, 124, 125, -1, -1, - 47, 48, -1, 131, 132, 52, 53, -1, 55, 56, + -1, 120, 121, -1, 123, -1, 125, 126, -1, -1, + 47, 48, -1, -1, 133, 52, 53, -1, 55, 56, 57, 58, 59, 60, -1, 62, 63, 64, 65, 66, 67, -1, -1, -1, 71, -1, -1, 74, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, -1, - -1, -1, -1, -1, 10, 11, -1, 13, -1, -1, - 16, 98, -1, 19, 20, 21, -1, -1, 24, 25, - -1, -1, -1, 29, 30, -1, -1, -1, -1, -1, - -1, -1, 119, 120, -1, 122, -1, 124, 125, -1, - -1, 47, 48, -1, 131, 132, 52, 53, -1, 55, - 56, 57, 58, 59, 60, -1, 62, 63, 64, 65, - 66, 67, -1, -1, -1, 71, -1, -1, 74, 75, - 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, -1, -1, -1, -1, -1, 10, -1, -1, 13, -1, - -1, 16, 98, -1, 19, 20, 21, -1, -1, 24, + -1, 16, 99, -1, 19, 20, 21, -1, -1, 24, 25, -1, -1, -1, 29, 30, -1, -1, -1, -1, - -1, -1, -1, 119, 120, -1, 122, -1, 124, 125, - -1, -1, 47, 48, -1, -1, 132, 52, 53, -1, + -1, -1, -1, 120, 121, -1, 123, -1, 125, 126, + -1, -1, 47, 48, -1, 132, 133, 52, 53, -1, 55, 56, 57, 58, 59, 60, -1, 62, 63, 64, 65, 66, 67, -1, -1, -1, 71, -1, -1, 74, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, - 85, -1, -1, -1, -1, -1, 10, -1, -1, 13, - -1, -1, 16, 98, -1, 19, 20, 21, -1, -1, - 24, 25, -1, -1, -1, 29, 30, -1, -1, -1, - -1, -1, -1, -1, 119, 120, -1, 122, -1, 124, - 125, -1, -1, 47, 48, -1, 131, 132, 52, 53, - -1, 55, 56, 57, 58, 59, 60, -1, 62, 63, - 64, 65, 66, 67, -1, -1, -1, 71, -1, -1, - 74, 75, 76, 77, 78, 79, -1, -1, -1, 83, - 84, 85, -1, -1, -1, -1, -1, 10, -1, -1, - 13, -1, -1, 16, 98, -1, 19, 20, 21, -1, + 85, -1, -1, -1, -1, -1, -1, 10, -1, -1, + 13, -1, -1, 16, 99, -1, 19, 20, 21, -1, -1, 24, 25, -1, -1, -1, 29, 30, -1, -1, - -1, -1, -1, -1, -1, 119, 120, -1, 122, -1, - 124, 125, -1, -1, 47, 48, -1, 131, 132, 52, + -1, -1, -1, -1, -1, 120, 121, -1, 123, -1, + 125, 126, -1, -1, 47, 48, -1, 132, 133, 52, 53, -1, 55, 56, 57, 58, 59, 60, -1, 62, 63, 64, 65, 66, 67, -1, -1, -1, 71, -1, -1, 74, 75, 76, 77, 78, 79, -1, -1, -1, - 83, 84, 85, -1, -1, -1, -1, -1, 10, -1, - -1, 13, -1, -1, 16, 98, -1, 19, 20, 21, - -1, -1, 24, 25, -1, -1, -1, 29, 30, -1, - -1, -1, -1, -1, -1, -1, 119, 120, -1, 122, - -1, 124, 125, -1, -1, 47, 48, -1, 131, 132, - 52, 53, -1, 55, 56, 57, 58, 59, 60, -1, - 62, 63, 64, 65, 66, 67, -1, -1, -1, 71, - -1, -1, 74, 75, 76, 77, 78, 79, -1, -1, - -1, 83, 84, 85, -1, -1, -1, -1, -1, 10, - -1, -1, 13, -1, -1, 16, 98, -1, 19, 20, + 83, 84, 85, -1, -1, -1, -1, -1, -1, 10, + -1, -1, 13, -1, -1, 16, 99, -1, 19, 20, 21, -1, -1, 24, 25, -1, -1, -1, 29, 30, - -1, -1, -1, -1, -1, -1, -1, 119, 120, -1, - 122, -1, 124, 125, -1, -1, 47, 48, -1, 131, - 132, 52, 53, -1, 55, 56, 57, 58, 59, 60, + -1, -1, -1, -1, -1, -1, -1, 120, 121, -1, + 123, -1, 125, 126, -1, -1, 47, 48, -1, 132, + 133, 52, 53, -1, 55, 56, 57, 58, 59, 60, -1, 62, 63, 64, 65, 66, 67, -1, -1, -1, 71, -1, -1, 74, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, -1, -1, -1, -1, -1, - 10, -1, -1, 13, -1, -1, 16, 98, -1, 19, - 20, 21, -1, -1, 24, 25, -1, -1, -1, 29, - 30, -1, -1, -1, -1, -1, -1, -1, 119, 120, - -1, 122, -1, 124, 125, -1, -1, 47, 48, -1, - -1, 132, 52, 53, -1, 55, 56, 57, 58, 59, - 60, -1, 62, 63, 64, 65, 66, 67, -1, -1, - -1, 71, -1, -1, 74, 75, 76, 77, 78, 79, - -1, -1, -1, 83, 84, 85, -1, -1, -1, -1, - -1, 10, -1, -1, 13, -1, -1, 16, 98, -1, + -1, 10, -1, -1, 13, -1, -1, 16, 99, -1, 19, 20, 21, -1, -1, 24, 25, -1, -1, -1, - 29, 30, -1, -1, -1, -1, -1, -1, -1, 119, - 120, -1, 122, -1, 124, 125, -1, -1, 47, 48, - -1, -1, 132, 52, 53, -1, 55, 56, 57, 58, + 29, 30, -1, -1, -1, -1, -1, -1, -1, 120, + 121, -1, 123, -1, 125, 126, -1, -1, 47, 48, + -1, 132, 133, 52, 53, -1, 55, 56, 57, 58, 59, 60, -1, 62, 63, 64, 65, 66, 67, -1, -1, -1, 71, -1, -1, 74, 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, 85, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 98, - -1, -1, -1, -1, -1, -1, -1, 72, -1, -1, - -1, -1, -1, -1, -1, 80, 81, 82, -1, -1, - 119, 120, -1, 122, -1, 124, 125, -1, 93, -1, - -1, -1, -1, 132, 99, 100, 101, 102, 103, 104, + -1, -1, -1, 10, -1, -1, 13, -1, -1, 16, + 99, -1, 19, 20, 21, -1, -1, 24, 25, -1, + -1, -1, 29, 30, -1, -1, -1, -1, -1, -1, + -1, 120, 121, -1, 123, -1, 125, 126, -1, -1, + 47, 48, -1, -1, 133, 52, 53, -1, 55, 56, + 57, 58, 59, 60, -1, 62, 63, 64, 65, 66, + 67, -1, -1, -1, 71, -1, -1, 74, 75, 76, + 77, 78, 79, -1, -1, -1, 83, 84, 85, -1, + -1, -1, -1, -1, -1, 10, -1, -1, 13, -1, + -1, 16, 99, -1, 19, 20, 21, -1, -1, 24, + 25, -1, -1, -1, 29, 30, -1, -1, -1, -1, + -1, -1, -1, 120, 121, -1, 123, -1, 125, 126, + -1, -1, 47, 48, -1, -1, 133, 52, 53, -1, + 55, 56, 57, 58, 59, 60, -1, 62, 63, 64, + 65, 66, 67, -1, -1, -1, 71, -1, -1, 74, + 75, 76, 77, 78, 79, -1, -1, -1, 83, 84, + 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 99, -1, -1, -1, -1, -1, + -1, 72, -1, -1, -1, -1, -1, -1, -1, 80, + 81, 82, -1, -1, -1, 120, 121, -1, 123, -1, + 125, 126, -1, 94, -1, -1, -1, -1, 133, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, + -1, -1, -1, 124, 72, -1, 127, 128, 129, 130, + 131, -1, 80, 81, 82, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 94, -1, -1, -1, + -1, -1, 100, 101, 102, -1, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, -1, -1, -1, -1, 124, 72, -1, 127, + 128, 129, 130, 131, -1, 80, 81, 82, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 94, + -1, -1, -1, -1, -1, 100, 101, 102, -1, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, -1, -1, -1, -1, 123, 72, - -1, 126, 127, 128, 129, 130, -1, 80, 81, 82, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 93, -1, -1, -1, -1, -1, 99, 100, 101, -1, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, -1, -1, -1, -1, - 123, 72, -1, 126, 127, 128, 129, 130, -1, 80, - 81, 82, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 93, -1, -1, -1, -1, -1, 99, 100, - 101, -1, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, -1, -1, - -1, -1, 123, 72, -1, 126, 127, 128, 129, 130, + 115, 116, 117, 118, 119, -1, -1, -1, -1, 124, + 72, -1, 127, 128, 129, 130, 131, -1, 80, 81, + 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 100, 101, + 102, -1, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, -1, -1, + -1, -1, 124, 72, -1, 127, 128, 129, 130, 131, -1, 80, 81, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 99, 100, 101, -1, 103, 104, 105, 106, 107, 108, + 80, 81, 82, 102, -1, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - -1, -1, -1, -1, 123, 72, -1, 126, 127, 128, - 129, 130, -1, 80, 81, 82, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 80, 81, 82, -1, 123, -1, -1, 126, - 127, 128, 129, 130, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 80, 81, 82, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, -1, -1, -1, -1, 123, -1, -1, 126, 127, - 128, 129, 130, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 80, 81, 82, -1, 123, -1, - -1, 126, 127, 128, 129, 130, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 80, 81, 82, -1, -1, + 119, -1, -1, -1, -1, 124, 72, -1, 127, 128, + 129, 130, 131, -1, 80, 81, 82, 117, 118, 119, + -1, -1, -1, -1, 124, -1, -1, 127, 128, 129, + 130, 131, -1, -1, -1, -1, -1, -1, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 80, 81, 82, -1, 124, -1, + -1, 127, 128, 129, 130, 131, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 80, 81, 82, -1, -1, -1, -1, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, -1, 80, 81, 82, 123, -1, -1, - 126, 127, 128, 129, 130, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 80, 81, 82, -1, 123, -1, - -1, 126, 127, 128, 129, 130, 112, 113, 114, 115, - 116, 117, 118, 80, 81, 82, -1, 123, -1, -1, - 126, 127, 128, 129, 130, -1, -1, -1, 114, 115, - 116, 117, 118, 80, 81, 82, -1, 123, -1, -1, - 126, 127, 128, 129, 130, -1, -1, -1, 115, 116, - 117, 118, -1, -1, -1, -1, 123, -1, -1, 126, - 127, 128, 129, 130, -1, -1, -1, -1, -1, 116, - 117, 118, -1, -1, -1, -1, 123, -1, -1, 126, - 127, 128, 129, 130 + 116, 117, 118, 119, 80, 81, 82, -1, 124, -1, + -1, 127, 128, 129, 130, 131, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 80, 81, 82, -1, + 124, -1, -1, 127, 128, 129, 130, 131, -1, 115, + 116, 117, 118, 119, -1, -1, -1, -1, 124, -1, + -1, 127, 128, 129, 130, 131, -1, 111, 112, 113, + 114, 115, 116, 117, 118, 119, -1, -1, -1, -1, + 124, -1, -1, 127, 128, 129, 130, 131 }; /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 3, 4, 5, 6, 7, 8, 9, 134, 135, - 136, 137, 138, 139, 140, 141, 0, 146, 10, 13, + 0, 3, 4, 5, 6, 7, 8, 9, 135, 136, + 137, 138, 139, 140, 141, 142, 0, 147, 10, 13, 16, 19, 20, 21, 24, 25, 29, 30, 47, 48, 52, 53, 55, 56, 57, 58, 59, 60, 62, 63, 64, 65, 66, 67, 71, 74, 75, 76, 77, 78, - 79, 83, 84, 85, 98, 119, 120, 122, 124, 125, - 132, 144, 206, 207, 208, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 222, 229, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 11, 143, 1, 22, + 79, 83, 84, 85, 99, 120, 121, 123, 125, 126, + 133, 145, 207, 208, 209, 212, 213, 214, 215, 216, + 218, 219, 220, 221, 222, 224, 231, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 11, 144, 1, 22, 26, 27, 28, 31, 32, 35, 36, 37, 38, 40, 41, 42, 43, 46, 49, 50, 51, 54, 68, 73, - 91, 142, 143, 156, 170, 206, 226, 69, 154, 155, - 156, 144, 152, 199, 200, 152, 56, 61, 143, 238, - 246, 229, 246, 220, 246, 220, 246, 246, 220, 122, - 132, 223, 238, 239, 240, 220, 143, 220, 182, 182, - 183, 246, 246, 221, 13, 132, 220, 182, 220, 132, - 132, 89, 132, 143, 220, 56, 144, 207, 228, 238, - 246, 143, 246, 229, 56, 61, 185, 207, 220, 220, - 220, 220, 220, 131, 206, 94, 95, 96, 97, 15, - 11, 13, 132, 112, 113, 112, 110, 111, 110, 72, - 80, 81, 82, 93, 99, 100, 101, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 123, 126, 127, 128, 129, 130, 132, - 11, 13, 11, 13, 11, 13, 11, 146, 184, 56, - 56, 224, 238, 239, 240, 132, 132, 30, 122, 132, - 236, 238, 132, 132, 132, 132, 143, 11, 147, 147, - 181, 185, 22, 181, 185, 39, 144, 172, 22, 32, - 35, 36, 37, 38, 41, 22, 155, 156, 154, 16, - 20, 24, 144, 190, 191, 192, 194, 195, 196, 14, - 132, 220, 223, 238, 239, 240, 131, 206, 86, 188, - 70, 144, 186, 86, 144, 187, 187, 228, 132, 89, - 206, 131, 143, 131, 131, 206, 229, 229, 246, 207, - 207, 22, 228, 13, 131, 206, 206, 206, 206, 220, - 206, 206, 131, 206, 220, 220, 220, 220, 220, 220, - 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, - 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, - 220, 220, 10, 11, 13, 16, 20, 24, 25, 57, - 83, 132, 210, 238, 131, 206, 206, 206, 206, 206, - 206, 206, 206, 152, 56, 144, 180, 56, 56, 86, - 144, 225, 146, 146, 122, 146, 30, 234, 235, 237, - 238, 239, 240, 146, 146, 132, 146, 146, 146, 146, - 148, 44, 160, 181, 159, 181, 143, 169, 206, 169, - 169, 177, 206, 169, 169, 61, 189, 189, 15, 131, - 206, 188, 131, 59, 187, 59, 146, 204, 204, 229, - 207, 14, 209, 131, 90, 131, 206, 12, 206, 13, - 22, 14, 131, 102, 25, 185, 206, 206, 25, 25, - 25, 25, 25, 131, 206, 132, 131, 22, 14, 22, - 14, 22, 14, 22, 12, 18, 145, 11, 22, 187, - 59, 99, 178, 206, 178, 132, 231, 238, 132, 144, - 170, 175, 178, 179, 206, 234, 146, 177, 176, 206, - 178, 178, 152, 146, 56, 157, 22, 146, 201, 202, - 158, 99, 99, 194, 131, 202, 132, 144, 197, 198, - 131, 23, 144, 230, 228, 131, 14, 206, 12, 220, - 132, 22, 14, 131, 229, 12, 12, 12, 12, 146, - 146, 11, 22, 227, 131, 131, 232, 233, 238, 132, - 146, 131, 22, 163, 178, 131, 131, 131, 131, 12, - 132, 144, 149, 56, 186, 11, 187, 193, 220, 220, - 199, 11, 206, 90, 14, 229, 12, 131, 22, 165, - 146, 220, 147, 147, 15, 131, 178, 178, 147, 161, - 132, 131, 174, 174, 147, 147, 150, 164, 228, 187, - 152, 22, 203, 204, 131, 205, 131, 88, 152, 166, - 33, 34, 144, 171, 171, 238, 132, 131, 131, 172, - 176, 178, 147, 147, 147, 238, 147, 22, 201, 12, - 152, 144, 153, 12, 152, 147, 132, 178, 147, 147, - 22, 131, 172, 172, 172, 151, 45, 173, 12, 22, - 59, 167, 12, 178, 131, 172, 172, 162, 147, 131, - 143, 17, 87, 144, 168, 131, 147, 174, 172, 152, - 147, 172, 179, 88, 171, 131, 147 + 91, 143, 144, 157, 171, 207, 228, 69, 155, 156, + 157, 145, 153, 200, 201, 153, 56, 61, 144, 240, + 248, 231, 248, 222, 248, 222, 248, 248, 222, 123, + 133, 225, 240, 241, 242, 222, 144, 222, 183, 183, + 184, 248, 248, 223, 13, 133, 222, 183, 222, 133, + 133, 89, 133, 144, 222, 56, 145, 208, 230, 240, + 248, 144, 248, 231, 56, 61, 186, 208, 222, 222, + 222, 222, 222, 132, 207, 95, 96, 97, 98, 15, + 11, 13, 133, 113, 114, 113, 111, 112, 111, 72, + 80, 81, 82, 94, 100, 101, 102, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 124, 127, 128, 129, 130, 131, 133, + 11, 13, 11, 13, 11, 13, 11, 147, 185, 56, + 56, 226, 240, 241, 242, 133, 133, 30, 123, 133, + 238, 240, 133, 133, 133, 133, 144, 11, 148, 148, + 182, 186, 22, 182, 186, 39, 145, 173, 22, 32, + 35, 36, 37, 38, 41, 22, 156, 157, 155, 16, + 20, 24, 145, 191, 192, 193, 195, 196, 197, 14, + 133, 222, 225, 240, 241, 242, 132, 207, 86, 189, + 70, 145, 187, 86, 145, 188, 188, 230, 133, 89, + 207, 132, 144, 132, 132, 207, 231, 231, 248, 208, + 208, 22, 230, 13, 132, 207, 207, 207, 207, 222, + 207, 207, 132, 207, 222, 92, 217, 222, 222, 222, + 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, + 222, 222, 217, 222, 222, 222, 222, 222, 222, 222, + 222, 222, 222, 10, 11, 13, 16, 20, 24, 25, + 57, 83, 133, 211, 240, 132, 207, 207, 207, 207, + 207, 207, 207, 207, 153, 56, 145, 181, 56, 56, + 86, 145, 227, 147, 147, 123, 147, 30, 236, 237, + 239, 240, 241, 242, 147, 147, 133, 147, 147, 147, + 147, 149, 44, 161, 182, 160, 182, 144, 170, 207, + 170, 170, 178, 207, 170, 170, 61, 190, 190, 15, + 132, 207, 189, 132, 59, 188, 59, 147, 205, 205, + 231, 208, 14, 210, 132, 90, 132, 207, 12, 207, + 13, 22, 14, 132, 222, 103, 222, 25, 186, 207, + 207, 25, 25, 25, 25, 25, 132, 207, 133, 132, + 22, 14, 22, 14, 22, 14, 22, 12, 18, 146, + 11, 22, 188, 59, 100, 179, 207, 179, 133, 233, + 240, 133, 145, 171, 176, 179, 180, 207, 236, 147, + 178, 177, 207, 179, 179, 153, 147, 56, 158, 22, + 147, 202, 203, 159, 100, 100, 195, 132, 203, 133, + 145, 198, 199, 132, 23, 145, 232, 230, 132, 14, + 207, 12, 222, 133, 22, 14, 132, 231, 12, 12, + 12, 12, 147, 147, 11, 22, 229, 132, 132, 234, + 235, 240, 133, 147, 132, 22, 164, 179, 132, 132, + 132, 132, 12, 133, 145, 150, 56, 187, 11, 188, + 194, 222, 222, 200, 11, 207, 90, 14, 231, 12, + 132, 22, 166, 147, 222, 148, 148, 15, 132, 179, + 179, 148, 162, 133, 132, 175, 175, 148, 148, 151, + 165, 230, 188, 153, 22, 204, 205, 132, 206, 132, + 88, 153, 167, 33, 34, 145, 172, 172, 240, 133, + 132, 132, 173, 177, 179, 148, 148, 148, 240, 148, + 22, 202, 12, 153, 145, 154, 12, 153, 148, 133, + 179, 148, 148, 22, 132, 173, 173, 173, 152, 45, + 174, 12, 22, 59, 168, 12, 179, 132, 173, 173, + 163, 148, 132, 144, 17, 87, 145, 169, 132, 148, + 175, 173, 153, 148, 173, 180, 88, 172, 132, 148 }; /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ static const yytype_uint8 yyr1[] = { - 0, 133, 135, 134, 136, 134, 137, 134, 138, 134, - 139, 134, 140, 134, 141, 134, 142, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 149, 152, 152, - 153, 153, 154, 154, 155, 155, 156, 156, 157, 156, - 158, 156, 159, 156, 156, 156, 160, 156, 156, 156, - 156, 156, 156, 156, 156, 161, 162, 156, 156, 156, - 156, 163, 156, 156, 156, 164, 156, 156, 165, 156, - 166, 156, 156, 156, 156, 156, 156, 167, 168, 168, - 169, 170, 170, 170, 170, 170, 170, 170, 170, 171, - 171, 171, 172, 172, 173, 173, 174, 175, 175, 176, - 176, 177, 178, 179, 180, 180, 181, 182, 183, 184, - 185, 185, 186, 186, 187, 187, 187, 188, 188, 189, - 189, 190, 190, 191, 191, 191, 192, 192, 193, 193, - 194, 194, 195, 195, 195, 196, 196, 197, 197, 198, - 200, 199, 201, 201, 202, 203, 203, 205, 204, 206, - 206, 206, 206, 206, 207, 207, 207, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 208, 208, 209, - 208, 210, 210, 211, 211, 211, 211, 211, 211, 211, - 211, 211, 211, 211, 211, 211, 211, 212, 212, 212, - 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, - 212, 212, 212, 212, 212, 212, 212, 212, 212, 213, - 213, 213, 213, 213, 214, 214, 215, 215, 215, 215, - 216, 216, 217, 217, 217, 217, 217, 217, 217, 217, - 217, 218, 218, 218, 218, 218, 218, 218, 218, 219, - 219, 220, 220, 220, 220, 220, 220, 220, 220, 220, - 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, - 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, - 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, - 220, 220, 220, 220, 220, 220, 220, 220, 220, 221, - 220, 220, 220, 220, 222, 222, 222, 222, 223, 223, - 223, 223, 223, 224, 224, 224, 225, 225, 225, 226, - 227, 226, 228, 228, 229, 229, 230, 230, 231, 232, - 232, 232, 233, 234, 234, 234, 235, 235, 236, 236, - 237, 238, 239, 240, 241, 241, 242, 243, 243, 244, - 244, 245, 245, 246, 246, 246, 246 + 0, 134, 136, 135, 137, 135, 138, 135, 139, 135, + 140, 135, 141, 135, 142, 135, 143, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 150, 153, 153, + 154, 154, 155, 155, 156, 156, 157, 157, 158, 157, + 159, 157, 160, 157, 157, 157, 161, 157, 157, 157, + 157, 157, 157, 157, 157, 162, 163, 157, 157, 157, + 157, 164, 157, 157, 157, 165, 157, 157, 166, 157, + 167, 157, 157, 157, 157, 157, 157, 168, 169, 169, + 170, 171, 171, 171, 171, 171, 171, 171, 171, 172, + 172, 172, 173, 173, 174, 174, 175, 176, 176, 177, + 177, 178, 179, 180, 181, 181, 182, 183, 184, 185, + 186, 186, 187, 187, 188, 188, 188, 189, 189, 190, + 190, 191, 191, 192, 192, 192, 193, 193, 194, 194, + 195, 195, 196, 196, 196, 197, 197, 198, 198, 199, + 201, 200, 202, 202, 203, 204, 204, 206, 205, 207, + 207, 207, 207, 207, 208, 208, 208, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, 209, 210, + 209, 211, 211, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 213, 213, 213, + 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, + 213, 213, 213, 213, 213, 213, 213, 213, 213, 214, + 214, 214, 214, 214, 215, 215, 216, 216, 216, 216, + 217, 217, 218, 218, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 220, 220, 220, 220, 220, 220, 220, + 220, 221, 221, 222, 222, 222, 222, 222, 222, 222, + 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, + 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, + 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, + 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, + 222, 223, 222, 222, 222, 222, 224, 224, 224, 224, + 225, 225, 225, 225, 225, 226, 226, 226, 227, 227, + 227, 228, 229, 228, 230, 230, 231, 231, 232, 232, + 233, 234, 234, 234, 235, 236, 236, 236, 237, 237, + 238, 238, 239, 240, 241, 242, 243, 243, 244, 245, + 245, 246, 246, 247, 247, 248, 248, 248, 248 }; /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ @@ -1535,23 +1541,23 @@ static const yytype_int8 yyr2[] = 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 2, 2, 3, 3, 3, 1, 3, 2, 2, - 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 3, 4, 5, 4, 4, 3, 4, 3, 2, - 2, 1, 1, 1, 1, 5, 2, 1, 2, 3, - 1, 2, 1, 1, 1, 1, 1, 1, 4, 4, - 5, 5, 1, 1, 3, 4, 3, 4, 4, 4, - 4, 4, 1, 2, 2, 1, 2, 2, 1, 2, - 1, 2, 1, 3, 1, 3, 1, 3, 4, 0, - 6, 1, 1, 1, 3, 2, 4, 3, 3, 2, - 1, 1, 1, 1, 1, 1, 2, 1, 1, 3, - 0, 6, 1, 1, 1, 1, 1, 2, 1, 2, - 3, 1, 1, 1, 1, 1, 1, 1, 2, 2, - 2, 2, 2, 2, 2, 4, 2, 1, 3, 1, - 3, 1, 3, 1, 1, 1, 1 + 0, 1, 4, 4, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 3, 4, 5, 4, 4, 3, 4, + 3, 2, 2, 1, 1, 1, 1, 5, 2, 1, + 2, 3, 1, 2, 1, 1, 1, 1, 1, 1, + 4, 4, 5, 5, 1, 1, 3, 4, 3, 4, + 4, 4, 4, 4, 1, 2, 2, 1, 2, 2, + 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, + 4, 0, 6, 1, 1, 1, 3, 2, 4, 3, + 3, 2, 1, 1, 1, 1, 1, 1, 2, 1, + 1, 3, 0, 6, 1, 1, 1, 1, 1, 2, + 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 4, 2, 1, + 3, 1, 3, 1, 3, 1, 1, 1, 1 }; typedef enum { - toketype_ival, toketype_opval, toketype_pval + toketype_ival, toketype_opval, toketype_pval, toketype_svval } toketypes; /* type of each token/terminal */ @@ -1575,20 +1581,20 @@ static const toketypes yy_type_tab[] = toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, - toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, - toketype_ival, toketype_ival, toketype_ival, toketype_ival, - toketype_ival, toketype_ival, toketype_ival, toketype_ival, - toketype_ival, toketype_ival, toketype_ival, toketype_ival, - toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, + toketype_svval, toketype_ival, toketype_ival, toketype_ival, + toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, + toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, + toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, + toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, - toketype_ival, toketype_ival, toketype_ival, toketype_ival, - toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, - toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_ival, - toketype_opval, toketype_ival, toketype_opval, toketype_ival, toketype_ival, toketype_opval, - toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_ival, toketype_ival, + toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, + toketype_ival, toketype_ival, toketype_ival, toketype_opval, toketype_opval, toketype_opval, + toketype_ival, toketype_opval, toketype_ival, toketype_opval, toketype_ival, toketype_ival, + toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_ival, + toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_opval, @@ -1597,16 +1603,16 @@ static const toketypes yy_type_tab[] = toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_ival, toketype_opval, toketype_opval, - toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, - toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_ival, toketype_opval, toketype_opval, - toketype_pval, toketype_opval, toketype_opval, toketype_ival, toketype_opval, + toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_svval, + toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_ival, + toketype_opval, toketype_opval, toketype_pval, toketype_opval, toketype_opval, + toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, - toketype_opval, toketype_opval, toketype_opval, toketype_ival, toketype_opval, - toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, - toketype_opval + toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, + toketype_opval, toketype_opval, toketype_opval, toketype_opval }; /* Generated from: - * c36bc8f06e0d028fe375ec5042a868f1249c42d01a2da5b7be104611f300ff06 perly.y - * f13e9c08cea6302f0c1d1f467405bd0e0880d0ea92d0669901017a7f7e94ab28 regen_perly.pl + * 1d9e721bda634afa2864ec0da6c61f3f2cf3b3e1796b079d426c2b8f9c2db62c perly.y + * 6353b7a4fdf3e67f2196c3ed55c684ba252625686c4f21c9ff7e67a312925e3b regen_perly.pl * ex: set ro ft=c: */ diff --git a/perly.y b/perly.y index 5af726410676..33f8401c7537 100644 --- a/perly.y +++ b/perly.y @@ -41,6 +41,7 @@ void *pval; OP *opval; GV *gvval; + SV *svval; } %token GRAMPROG GRAMEXPR GRAMBLOCK GRAMBARESTMT GRAMFULLSTMT GRAMSTMTSEQ GRAMSUBSIGNATURE @@ -92,6 +93,7 @@ %token COLONATTR FORMLBRACK FORMRBRACK %token SUBLEXSTART SUBLEXEND %token PHASER +%token OPFLAGS %type grammar remember mremember %type startsub startanonsub startanonmethod startformsub @@ -113,6 +115,7 @@ %type fieldvar /* pval is PADNAME */ %type optfieldattrlist fielddecl %type termbinop termunop anonymous termdo +%type optopflags %type termrelop relopchain termeqop eqopchain %type sigslurpsigil sigvar %type sigscalarelem optsigscalardefault sigslurpelem @@ -1209,10 +1212,25 @@ termeqop: eqopchain %prec PREC_LOW { yyerror("syntax error"); YYERROR; } ; -eqopchain: term[lhs] CHEQOP term[rhs] - { $$ = cmpchain_start($CHEQOP, $lhs, $rhs); } - | eqopchain[lhs] CHEQOP term[rhs] - { $$ = cmpchain_extend($CHEQOP, $lhs, $rhs); } +optopflags: %empty + { $$ = NULL; } + | OPFLAGS + ; + +eqopchain: term[lhs] CHEQOP optopflags term[rhs] + { U32 opcode = $CHEQOP; + if($optopflags) { + SAVEFREESV($optopflags); + opcode = apply_opflags(opcode, SvPV_nolen($optopflags)); + } + $$ = cmpchain_start(opcode, $lhs, $rhs); } + | eqopchain[lhs] CHEQOP optopflags term[rhs] + { U32 opcode = $CHEQOP; + if($optopflags) { + SAVEFREESV($optopflags); + opcode = apply_opflags(opcode, SvPV_nolen($optopflags)); + } + $$ = cmpchain_extend(opcode, $lhs, $rhs); } ; /* Unary operators and terms */ diff --git a/pod/perldiag.pod b/pod/perldiag.pod index 5bd5ee048c0d..52b22286ed5c 100644 --- a/pod/perldiag.pod +++ b/pod/perldiag.pod @@ -7466,6 +7466,15 @@ whereabouts in the regular expression the escape was discovered. (F) You attempted to add a named attribute to a C definition, but perl does not recognise the name of the requested attribute. +=item Unrecognized flag '%c' for %s + +(F) You attempted to use an operator flag on an operator (by using the +C notation), but the particular operator does not recognise that +particular flag. + +If this is unexpected, it could be a stray colon confusing the parser into +thinking that the following bareword is a set of operator flags. + =item Unrecognised parameters for "%s" constructor: %s (F) You called new on a class but supplied a parameter name that diff --git a/pp.c b/pp.c index ed6155f8810b..593cbbdf1785 100644 --- a/pp.c +++ b/pp.c @@ -2221,6 +2221,15 @@ PP(pp_ne) SV *right = PL_stack_sp[0]; SV *left = PL_stack_sp[-1]; + if(UNLIKELY(PL_op->op_private & OPpEQ_UNDEF)) { + bool lundef = !SvOK(left), rundef = !SvOK(right); + + if(lundef || rundef) { + rpp_replace_2_IMM_NN(boolSV(!(lundef && rundef))); + return NORMAL; + } + } + U32 flags_and = SvFLAGS(left) & SvFLAGS(right); U32 flags_or = SvFLAGS(left) | SvFLAGS(right); @@ -2382,6 +2391,15 @@ PP(pp_seq) SV *right = PL_stack_sp[0]; SV *left = PL_stack_sp[-1]; + if(UNLIKELY(PL_op->op_private & OPpEQ_UNDEF)) { + bool lundef = !SvOK(left), rundef = !SvOK(right); + + if(lundef || rundef) { + rpp_replace_2_IMM_NN(boolSV(lundef && rundef)); + return NORMAL; + } + } + rpp_replace_2_IMM_NN(boolSV(sv_eq_flags(left, right, 0)));; return NORMAL; } @@ -2395,6 +2413,15 @@ PP(pp_sne) SV *right = PL_stack_sp[0]; SV *left = PL_stack_sp[-1]; + if(UNLIKELY(PL_op->op_private & OPpEQ_UNDEF)) { + bool lundef = !SvOK(left), rundef = !SvOK(right); + + if(lundef || rundef) { + rpp_replace_2_IMM_NN(boolSV(!(lundef && rundef))); + return NORMAL; + } + } + rpp_replace_2_IMM_NN(boolSV(!sv_eq_flags(left, right, 0))); return NORMAL; } diff --git a/pp_hot.c b/pp_hot.c index 57d53286c756..7054b6a648cd 100644 --- a/pp_hot.c +++ b/pp_hot.c @@ -1674,6 +1674,15 @@ PP(pp_eq) SV *right = PL_stack_sp[0]; SV *left = PL_stack_sp[-1]; + if(UNLIKELY(PL_op->op_private & OPpEQ_UNDEF)) { + bool lundef = !SvOK(left), rundef = !SvOK(right); + + if(lundef || rundef) { + rpp_replace_2_IMM_NN(boolSV(lundef && rundef)); + return NORMAL; + } + } + U32 flags_and = SvFLAGS(left) & SvFLAGS(right); U32 flags_or = SvFLAGS(left) | SvFLAGS(right); diff --git a/proto.h b/proto.h index 922ada10d42d..a54049d0b9cc 100644 --- a/proto.h +++ b/proto.h @@ -144,6 +144,10 @@ Perl_apply_builtin_cv_attributes(pTHX_ CV *cv, OP *attrlist); #define PERL_ARGS_ASSERT_APPLY_BUILTIN_CV_ATTRIBUTES \ assert(cv); assert(SvTYPE(cv) == SVt_PVCV || SvTYPE(cv) == SVt_PVFM) +PERL_CALLCONV U32 +Perl_apply_opflags(pTHX_ U32 optype, char *flagstr); +#define PERL_ARGS_ASSERT_APPLY_OPFLAGS + PERL_CALLCONV void Perl_atfork_child(void); #define PERL_ARGS_ASSERT_ATFORK_CHILD diff --git a/regen/keywords.pl b/regen/keywords.pl index fcbdb34b2676..7abf7eff3856 100755 --- a/regen/keywords.pl +++ b/regen/keywords.pl @@ -181,6 +181,7 @@ END -endservent -eof -eq +-equ +eval -evalbytes -exec diff --git a/regen/op_private b/regen/op_private index 704fb1d79198..0363537f520f 100644 --- a/regen/op_private +++ b/regen/op_private @@ -920,6 +920,10 @@ addbits('emptyavhv', # 4 OPpTARGET_MY ); +addbits($_, + 7 => qw(OPpEQ_UNDEF UNDEF), +) for qw( eq ne seq sne ); + addbits('argdefelem', 7 => qw(OPpARG_IF_UNDEF IF_UNDEF), 6 => qw(OPpARG_IF_FALSE IF_FALSE), diff --git a/regen_perly.pl b/regen_perly.pl index cb6feacab777..c69f0b930f8d 100644 --- a/regen_perly.pl +++ b/regen_perly.pl @@ -29,21 +29,20 @@ # it may work elsewhere but no specific attempt has been made to make it # portable. -use 5.006; -sub usage { die "usage: $0 [ -b bison_executable ] [ file.y ]\n" } - +use v5.10; use warnings; -use strict; +sub usage { die "usage: $0 [ -b bison_executable ] [ file.y ]\n" } our $Verbose; BEGIN { require './regen/regen_lib.pl'; } -my $bison = 'bison'; +use Getopt::Long; +Getopt::Long::Configure(qw( bundling bundling_values no_ignore_case )); -if (@ARGV >= 2 and $ARGV[0] eq '-b') { - shift; - $bison = shift; -} +GetOptions( + 'b|bison=s' => \(my $bison = 'bison'), + 'W=s' => \my @bison_warnings, +) or usage; my $y_file = shift || 'perly.y'; @@ -90,7 +89,8 @@ $version = $1; # creates $tmpc_file and $tmph_file -my_system("$bison -d -o $tmpc_file $y_file"); +my_system("$bison -d -o $tmpc_file $y_file " . + join(" ", map { "-W$_" } @bison_warnings)); open my $ctmp_fh, '<', $tmpc_file or die "Can't open $tmpc_file: $!\n"; my $clines; diff --git a/t/op/coreamp.t b/t/op/coreamp.t index 82a6fd88b59b..b73fcdb9e6f7 100644 --- a/t/op/coreamp.t +++ b/t/op/coreamp.t @@ -1190,7 +1190,7 @@ like $@, qr'^Undefined format "STDOUT" called', ADJUST AUTOLOAD BEGIN CHECK CORE DESTROY END INIT UNITCHECK __DATA__ __END__ all and any catch class cmp default defer do dump else elsif - eq eval field finally + eq equ eval field finally for foreach format ge given goto grep gt if isa last le local lt m map method my ne next no or our package print printf q qq qr qw qx redo require return s say sort state sub tr try unless until use when while x xor y diff --git a/t/op/coresubs.t b/t/op/coresubs.t index 2d49711c8af7..b8a5968e4455 100644 --- a/t/op/coresubs.t +++ b/t/op/coresubs.t @@ -18,8 +18,8 @@ use B; my %unsupported = map +($_=>1), qw ( __DATA__ __END__ ADJUST AUTOLOAD BEGIN UNITCHECK CORE DESTROY END INIT CHECK - all and any catch class cmp default defer do dump else elsif eq eval field - finally for foreach format ge given goto grep gt if isa last le local + all and any catch class cmp default defer do dump else elsif eq equ eval + field finally for foreach format ge given goto grep gt if isa last le local lt m map method my ne next no or our package print printf q qq qr qw qx redo require return s say sort state sub tr try unless until use when while x xor y diff --git a/t/op/equ.t b/t/op/equ.t new file mode 100644 index 000000000000..eb7f1145d44c --- /dev/null +++ b/t/op/equ.t @@ -0,0 +1,92 @@ +#!./perl + +use strict; +use warnings; + +BEGIN { + chdir 't' if -d 't'; + require './test.pl'; + set_up_inc('../lib'); +} + +### PPC0030-style `equ` operator +# does not test the numerical version because there are still discussions +# about its spelling; `===` is considered problematic. + +# equ behaves like eq on defined strings +ok("abc" equ "abc", 'equ on identical values'); +ok("" equ "", 'equ on empty/empty'); +ok(not("abc" equ "def"), 'equ on different values'); + +# equ treats undef as distinct, equal to itself, with no warnings +{ + my $warnings = 0; + local $SIG{__WARN__} = sub { $warnings++; }; + + ok(undef equ undef, 'equ on undef/undef'); + ok(not(undef equ ""), 'equ on undef/empty'); + + is($warnings, 0, 'no warnings were produced by use of undef'); +} + +# performs GETMAGIC +{ + "abc" =~ m/(\d+)/; + # $1 should now be undef + "abc" =~ m/(\w+)/; + ok($1 equ "abc", 'equ performs GETMAGIC'); +} + +### PPC0031-style `eq:u` flag on operator + +# eq:u behaves like eq on defined strings +ok("abc" eq:u "abc", 'eq:u on identical values'); +ok("" eq:u "", 'eq:u on empty/empty'); +ok(not("abc" eq:u "def"), 'eq:u on different values'); + +# ==:u behaves like == on defined numbers +ok(123 ==:u 123, '==:u on identical values'); +ok(0 ==:u 0, '==:u on zero/zero'); +ok(not(123 ==:u 456), '==:u on different values'); + +# eq:u treats undef as distinct, equal to itself, with no warnings +{ + my $warnings = 0; + local $SIG{__WARN__} = sub { $warnings++; }; + + ok(undef eq:u undef, 'eq:u on undef/undef'); + ok(not(undef eq:u ""), 'eq:u on undef/empty'); + + is($warnings, 0, 'no warnings were produced by use of undef'); +} + +foreach (["abc", "abc"], ["abc", "def"], ["", undef], [undef, undef]) { + my ($left, $right) = @$_; + is(not($left ne:u $right), ($left eq:u $right), 'ne:u is a synonym for not(eq:u)'); +} + +# ==:u treats undef as distinct, equal to itself, with no warnings +{ + my $warnings = 0; + local $SIG{__WARN__} = sub { $warnings++; }; + + ok(undef ==:u undef, 'eq:u on undef/undef'); + ok(not(undef ==:u 0), 'eq:u on undef/zero'); + + is($warnings, 0, 'no warnings were produced by use of undef'); +} + +foreach ([123, 123], [123, 456], [0, undef], [undef, undef]) { + my ($left, $right) = @$_; + is(not($left !=:u $right), ($left ==:u $right), '!=:u is a synonym for not(==:u)'); +} + +# performs GETMAGIC +{ + "abc" =~ m/(\d+)/; + # $1 should now be undef + "abc" =~ m/(\w+)/; + ok($1 eq:u "abc", 'eq:u performs GETMAGIC'); +} + +done_testing(); diff --git a/toke.c b/toke.c index 90a36f6882d9..5eed0eae20bc 100644 --- a/toke.c +++ b/toke.c @@ -256,7 +256,7 @@ static const char* const lex_state_names[] = { #define Aop(f) return ao((pl_yylval.ival=f, PL_expect=XTERM, PL_bufptr=s, (int)ADDOP)) #define AopNOASSIGN(f) return (pl_yylval.ival=f, PL_bufptr=s, REPORT((int)ADDOP)) #define Mop(f) return ao((pl_yylval.ival=f, PL_expect=XTERM, PL_bufptr=s, (int)MULOP)) -#define ChEop(f) return (pl_yylval.ival=f, PL_expect=XTERM, PL_bufptr=s, REPORT((int)CHEQOP)) +#define ChEop(f) return (pl_yylval.ival=f, PL_expect=XOPFLAGSTERM, PL_bufptr=s, REPORT((int)CHEQOP)) #define NCEop(f) return (pl_yylval.ival=f, PL_expect=XTERM, PL_bufptr=s, REPORT((int)NCEQOP)) #define ChRop(f) return (pl_yylval.ival=f, PL_expect=XTERM, PL_bufptr=s, REPORT((int)CHRELOP)) #define NCRop(f) return (pl_yylval.ival=f, PL_expect=XTERM, PL_bufptr=s, REPORT((int)NCRELOP)) @@ -5170,7 +5170,7 @@ S_tokenize_use(pTHX_ int is_use, char *s) { static const char* const exp_name[] = { "OPERATOR", "TERM", "REF", "STATE", "BLOCK", "ATTRBLOCK", "ATTRTERM", "TERMBLOCK", "XBLOCKTERM", "POSTDEREF", - "SIGVAR", "TERMORDORDOR" + "SIGVAR", "TERMORDORDOR", "XOPFLAGSTERM" }; #endif @@ -6250,6 +6250,26 @@ yyl_colon(pTHX_ char *s) force_next(THING); } TOKEN(COLONATTR); + + case XOPFLAGSTERM: + { + s = skipspace(s); + + /* We don't know what the operator is to which these flags are + * being applied. We'll just accept any sequence of lower- or + * upper-case letters and let apply_opflags() complain if any are + * bad. + */ + char *flags = s; + while (isALPHA(*s)) + s++; + + SV *flagsbuf = newSV_type(SVt_PV); + sv_setpvn_fresh(flagsbuf, flags, s - flags); + + pl_yylval.svval = flagsbuf; + OPERATOR(OPFLAGS); + } } if (!PL_lex_allbrackets && PL_lex_fakeeof >= LEX_FAKEEOF_CLOSING) { @@ -6327,6 +6347,7 @@ yyl_leftcurly(pTHX_ char *s, const U8 formbrack) switch (PL_expect) { case XTERM: case XTERMORDORDOR: + case XOPFLAGSTERM: PL_lex_brackstack[PL_lex_brackets++] = XOPERATOR; PL_lex_allbrackets++; OPERATOR(HASHBRACK); @@ -8155,6 +8176,12 @@ yyl_word_or_keyword(pTHX_ char *s, STRLEN len, I32 key, I32 orig_keyword, struct return REPORT(0); ChEop(OP_SEQ); + case KEY_equ: + /* TODO: feature guard? */ + if (!PL_lex_allbrackets && PL_lex_fakeeof >= LEX_FAKEEOF_COMPARE) + return REPORT(0); + ChEop(OP_SEQ | (OPpEQ_UNDEF << 16)); + case KEY_exists: UNI(OP_EXISTS); @@ -9575,7 +9602,8 @@ yyl_try(pTHX_ char *s) /* avoid v123abc() or $h{v1}, allow C */ if (!isALPHA(*start) && (PL_expect == XTERM || PL_expect == XREF || PL_expect == XSTATE - || PL_expect == XTERMORDORDOR)) { + || PL_expect == XTERMORDORDOR + || PL_expect == XOPFLAGSTERM)) { GV *const gv = gv_fetchpvn_flags(s, start - s, UTF ? SVf_UTF8 : 0, SVt_PVCV); if (!gv) {