summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul "LeoNerd" Evans <leonerd@leonerd.org.uk>2021-01-22 17:57:08 +0000
committerPaul "LeoNerd" Evans <leonerd@leonerd.org.uk>2021-02-04 14:20:53 +0000
commita1325b902d57aa7a99bed3d2ec0fa5ce42836207 (patch)
tree37ce967cbad3faa9d65d10d33aab6919ec353616
parent99dbf64538ee1c097b9f7e93df5a45dbf1fa3e22 (diff)
downloadperl-a1325b902d57aa7a99bed3d2ec0fa5ce42836207.tar.gz
Initial attempt at feature 'try'
* Add feature, experimental warning, keyword * Basic parsing * Basic implementation as optree fragment See also https://github.com/Perl/perl5/issues/18504
-rw-r--r--MANIFEST1
-rw-r--r--cop.h5
-rw-r--r--ext/Opcode/Opcode.pm4
-rw-r--r--feature.h19
-rw-r--r--gv.c4
-rw-r--r--keywords.c42
-rw-r--r--keywords.h468
-rw-r--r--lib/B/Deparse-core.t2
-rw-r--r--lib/B/Deparse.pm4
-rw-r--r--lib/B/Op_private.pm1
-rw-r--r--lib/feature.pm13
-rw-r--r--lib/warnings.pm15
-rw-r--r--op.c2
-rw-r--r--op.h1
-rw-r--r--opcode.h9
-rw-r--r--opnames.h3
-rw-r--r--perly.act1446
-rw-r--r--perly.h119
-rw-r--r--perly.tab1708
-rw-r--r--perly.y26
-rw-r--r--pod/perldelta.pod18
-rw-r--r--pod/perldiag.pod6
-rw-r--r--pod/perlsyn.pod40
-rw-r--r--pp_ctl.c66
-rw-r--r--pp_proto.h1
-rwxr-xr-xregen/feature.pl11
-rwxr-xr-xregen/keywords.pl4
-rw-r--r--regen/opcodes2
-rw-r--r--regen/warnings.pl2
-rw-r--r--t/op/coreamp.t8
-rw-r--r--t/op/coresubs.t4
-rw-r--r--t/op/try.t154
-rw-r--r--toke.c12
-rw-r--r--warnings.h5
34 files changed, 2341 insertions, 1884 deletions
diff --git a/MANIFEST b/MANIFEST
index aa3ff73cda..3ead9bd6c8 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -5961,6 +5961,7 @@ t/op/time.t See if time functions work
t/op/time_loop.t Test that very large values don't hang gmtime and localtime.
t/op/tr.t See if tr works
t/op/tr_latin1.t See if tr works, but file isn't encoded in UTF-8
+t/op/try.t See if try works
t/op/undef.t See if undef works
t/op/universal.t See if UNIVERSAL class works
t/op/unlink.t See if unlink works
diff --git a/cop.h b/cop.h
index 7a7e831c6a..7b8a14f0c8 100644
--- a/cop.h
+++ b/cop.h
@@ -940,7 +940,7 @@ struct context {
or plain block { ...; } */
#define CXt_SUB 9
#define CXt_FORMAT 10
-#define CXt_EVAL 11
+#define CXt_EVAL 11 /* eval'', eval{}, try{} */
#define CXt_SUBST 12
/* SUBST doesn't feature in all switch statements. */
@@ -954,6 +954,7 @@ struct context {
/* private flags for CXt_EVAL */
#define CXp_REAL 0x20 /* truly eval'', not a lookalike */
#define CXp_EVALBLOCK 0x40 /* eval{}, not eval'' or similar */
+#define CXp_TRY 0x80 /* try {} block */
/* private flags for CXt_LOOP */
@@ -977,6 +978,8 @@ struct context {
== (CXt_EVAL|CXp_REAL))
#define CxEVALBLOCK(c) (((c)->cx_type & (CXTYPEMASK|CXp_EVALBLOCK)) \
== (CXt_EVAL|CXp_EVALBLOCK))
+#define CxTRY(c) (((c)->cx_type & (CXTYPEMASK|CXp_TRY)) \
+ == (CXt_EVAL|CXp_TRY))
#define CxFOREACH(c) ( CxTYPE(cx) >= CXt_LOOP_ARY \
&& CxTYPE(cx) <= CXt_LOOP_LIST)
diff --git a/ext/Opcode/Opcode.pm b/ext/Opcode/Opcode.pm
index fd3fbee618..f1b2247b07 100644
--- a/ext/Opcode/Opcode.pm
+++ b/ext/Opcode/Opcode.pm
@@ -6,7 +6,7 @@ use strict;
our($VERSION, @ISA, @EXPORT_OK);
-$VERSION = "1.49";
+$VERSION = "1.50";
use Carp;
use Exporter ();
@@ -344,7 +344,7 @@ invert_opset function.
cond_expr flip flop andassign orassign dorassign and or dor xor
- warn die lineseq nextstate scope enter leave
+ warn die lineseq nextstate scope enter leave catch
rv2cv anoncode prototype coreargs avhvswitch anonconst
diff --git a/feature.h b/feature.h
index 173719f2b9..501bc3a3b1 100644
--- a/feature.h
+++ b/feature.h
@@ -27,8 +27,9 @@
#define FEATURE_SIGNATURES_BIT 0x1000
#define FEATURE_STATE_BIT 0x2000
#define FEATURE_SWITCH_BIT 0x4000
-#define FEATURE_UNIEVAL_BIT 0x8000
-#define FEATURE_UNICODE_BIT 0x10000
+#define FEATURE_TRY_BIT 0x8000
+#define FEATURE_UNIEVAL_BIT 0x10000
+#define FEATURE_UNICODE_BIT 0x20000
#define FEATURE_BUNDLE_DEFAULT 0
#define FEATURE_BUNDLE_510 1
@@ -72,6 +73,12 @@
FEATURE_IS_ENABLED_MASK(FEATURE_SAY_BIT)) \
)
+#define FEATURE_TRY_IS_ENABLED \
+ ( \
+ CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
+ FEATURE_IS_ENABLED_MASK(FEATURE_TRY_BIT) \
+ )
+
#define FEATURE_STATE_IS_ENABLED \
( \
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_510 && \
@@ -337,6 +344,14 @@ S_magic_sethint_feature(pTHX_ SV *keysv, const char *keypv, STRLEN keylen,
}
return;
+ case 't':
+ if (keylen == sizeof("feature_try")-1
+ && memcmp(subf+1, "ry", keylen - sizeof("feature_")) == 0) {
+ mask = FEATURE_TRY_BIT;
+ break;
+ }
+ return;
+
case 'u':
if (keylen == sizeof("feature_unicode")-1
&& memcmp(subf+1, "nicode", keylen - sizeof("feature_")) == 0) {
diff --git a/gv.c b/gv.c
index 92bada56b1..0795b7966d 100644
--- a/gv.c
+++ b/gv.c
@@ -544,7 +544,7 @@ S_maybe_add_coresub(pTHX_ HV * const stash, GV *gv,
/* no support for \&CORE::infix;
no support for funcs that do not parse like funcs */
case KEY___DATA__: case KEY___END__: case KEY_and: case KEY_AUTOLOAD:
- case KEY_BEGIN : case KEY_CHECK : case KEY_cmp:
+ case KEY_BEGIN : case KEY_CHECK : case KEY_catch : case KEY_cmp:
case KEY_default : case KEY_DESTROY:
case KEY_do : case KEY_dump : case KEY_else : case KEY_elsif :
case KEY_END : case KEY_eq : case KEY_eval :
@@ -559,7 +559,7 @@ S_maybe_add_coresub(pTHX_ HV * const stash, GV *gv,
case KEY_qx : case KEY_redo : case KEY_require: case KEY_return:
case KEY_s : case KEY_say : case KEY_sort :
case KEY_state: case KEY_sub :
- case KEY_tr : case KEY_UNITCHECK: case KEY_unless:
+ case KEY_tr : case KEY_try : case KEY_UNITCHECK: case KEY_unless:
case KEY_until: case KEY_use : case KEY_when : case KEY_while :
case KEY_x : case KEY_xor : case KEY_y :
return NULL;
diff --git a/keywords.c b/keywords.c
index b2dd655fdd..624debc80a 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: /* 29 tokens of length 3 */
+ case 3: /* 30 tokens of length 3 */
switch (name[0])
{
case 'E':
@@ -463,13 +463,27 @@ Perl_keyword (pTHX_ const char *name, I32 len, bool all_keywords)
}
case 't':
- if (name[1] == 'i' &&
- name[2] == 'e')
- { /* tie */
- return -KEY_tie;
- }
+ switch (name[1])
+ {
+ case 'i':
+ if (name[2] == 'e')
+ { /* tie */
+ return -KEY_tie;
+ }
- goto unknown;
+ goto unknown;
+
+ case 'r':
+ if (name[2] == 'y')
+ { /* try */
+ return (all_keywords || FEATURE_TRY_IS_ENABLED ? KEY_try : 0);
+ }
+
+ goto unknown;
+
+ default:
+ goto unknown;
+ }
case 'u':
if (name[1] == 's' &&
@@ -964,7 +978,7 @@ Perl_keyword (pTHX_ const char *name, I32 len, bool all_keywords)
goto unknown;
}
- case 5: /* 39 tokens of length 5 */
+ case 5: /* 40 tokens of length 5 */
switch (name[0])
{
case 'B':
@@ -1046,6 +1060,16 @@ Perl_keyword (pTHX_ const char *name, I32 len, bool all_keywords)
case 'c':
switch (name[1])
{
+ case 'a':
+ if (name[2] == 't' &&
+ name[3] == 'c' &&
+ name[4] == 'h')
+ { /* catch */
+ return (all_keywords || FEATURE_TRY_IS_ENABLED ? KEY_catch : 0);
+ }
+
+ goto unknown;
+
case 'h':
switch (name[2])
{
@@ -3451,5 +3475,5 @@ unknown:
}
/* Generated from:
- * dd384f0c948716414a93d758d89a38e3c8116acfdc48eb7e34fa6737887097d5 regen/keywords.pl
+ * 3a4f2004642b00b871c01cbdc018f6ca5ead6b4e0b2b184120c60b0b62a229dd regen/keywords.pl
* ex: set ro: */
diff --git a/keywords.h b/keywords.h
index 50dc717984..82694905cb 100644
--- a/keywords.h
+++ b/keywords.h
@@ -37,239 +37,241 @@
#define KEY_bless 21
#define KEY_break 22
#define KEY_caller 23
-#define KEY_chdir 24
-#define KEY_chmod 25
-#define KEY_chomp 26
-#define KEY_chop 27
-#define KEY_chown 28
-#define KEY_chr 29
-#define KEY_chroot 30
-#define KEY_close 31
-#define KEY_closedir 32
-#define KEY_cmp 33
-#define KEY_connect 34
-#define KEY_continue 35
-#define KEY_cos 36
-#define KEY_crypt 37
-#define KEY_dbmclose 38
-#define KEY_dbmopen 39
-#define KEY_default 40
-#define KEY_defined 41
-#define KEY_delete 42
-#define KEY_die 43
-#define KEY_do 44
-#define KEY_dump 45
-#define KEY_each 46
-#define KEY_else 47
-#define KEY_elsif 48
-#define KEY_endgrent 49
-#define KEY_endhostent 50
-#define KEY_endnetent 51
-#define KEY_endprotoent 52
-#define KEY_endpwent 53
-#define KEY_endservent 54
-#define KEY_eof 55
-#define KEY_eq 56
-#define KEY_eval 57
-#define KEY_evalbytes 58
-#define KEY_exec 59
-#define KEY_exists 60
-#define KEY_exit 61
-#define KEY_exp 62
-#define KEY_fc 63
-#define KEY_fcntl 64
-#define KEY_fileno 65
-#define KEY_flock 66
-#define KEY_for 67
-#define KEY_foreach 68
-#define KEY_fork 69
-#define KEY_format 70
-#define KEY_formline 71
-#define KEY_ge 72
-#define KEY_getc 73
-#define KEY_getgrent 74
-#define KEY_getgrgid 75
-#define KEY_getgrnam 76
-#define KEY_gethostbyaddr 77
-#define KEY_gethostbyname 78
-#define KEY_gethostent 79
-#define KEY_getlogin 80
-#define KEY_getnetbyaddr 81
-#define KEY_getnetbyname 82
-#define KEY_getnetent 83
-#define KEY_getpeername 84
-#define KEY_getpgrp 85
-#define KEY_getppid 86
-#define KEY_getpriority 87
-#define KEY_getprotobyname 88
-#define KEY_getprotobynumber 89
-#define KEY_getprotoent 90
-#define KEY_getpwent 91
-#define KEY_getpwnam 92
-#define KEY_getpwuid 93
-#define KEY_getservbyname 94
-#define KEY_getservbyport 95
-#define KEY_getservent 96
-#define KEY_getsockname 97
-#define KEY_getsockopt 98
-#define KEY_given 99
-#define KEY_glob 100
-#define KEY_gmtime 101
-#define KEY_goto 102
-#define KEY_grep 103
-#define KEY_gt 104
-#define KEY_hex 105
-#define KEY_if 106
-#define KEY_index 107
-#define KEY_int 108
-#define KEY_ioctl 109
-#define KEY_isa 110
-#define KEY_join 111
-#define KEY_keys 112
-#define KEY_kill 113
-#define KEY_last 114
-#define KEY_lc 115
-#define KEY_lcfirst 116
-#define KEY_le 117
-#define KEY_length 118
-#define KEY_link 119
-#define KEY_listen 120
-#define KEY_local 121
-#define KEY_localtime 122
-#define KEY_lock 123
-#define KEY_log 124
-#define KEY_lstat 125
-#define KEY_lt 126
-#define KEY_m 127
-#define KEY_map 128
-#define KEY_mkdir 129
-#define KEY_msgctl 130
-#define KEY_msgget 131
-#define KEY_msgrcv 132
-#define KEY_msgsnd 133
-#define KEY_my 134
-#define KEY_ne 135
-#define KEY_next 136
-#define KEY_no 137
-#define KEY_not 138
-#define KEY_oct 139
-#define KEY_open 140
-#define KEY_opendir 141
-#define KEY_or 142
-#define KEY_ord 143
-#define KEY_our 144
-#define KEY_pack 145
-#define KEY_package 146
-#define KEY_pipe 147
-#define KEY_pop 148
-#define KEY_pos 149
-#define KEY_print 150
-#define KEY_printf 151
-#define KEY_prototype 152
-#define KEY_push 153
-#define KEY_q 154
-#define KEY_qq 155
-#define KEY_qr 156
-#define KEY_quotemeta 157
-#define KEY_qw 158
-#define KEY_qx 159
-#define KEY_rand 160
-#define KEY_read 161
-#define KEY_readdir 162
-#define KEY_readline 163
-#define KEY_readlink 164
-#define KEY_readpipe 165
-#define KEY_recv 166
-#define KEY_redo 167
-#define KEY_ref 168
-#define KEY_rename 169
-#define KEY_require 170
-#define KEY_reset 171
-#define KEY_return 172
-#define KEY_reverse 173
-#define KEY_rewinddir 174
-#define KEY_rindex 175
-#define KEY_rmdir 176
-#define KEY_s 177
-#define KEY_say 178
-#define KEY_scalar 179
-#define KEY_seek 180
-#define KEY_seekdir 181
-#define KEY_select 182
-#define KEY_semctl 183
-#define KEY_semget 184
-#define KEY_semop 185
-#define KEY_send 186
-#define KEY_setgrent 187
-#define KEY_sethostent 188
-#define KEY_setnetent 189
-#define KEY_setpgrp 190
-#define KEY_setpriority 191
-#define KEY_setprotoent 192
-#define KEY_setpwent 193
-#define KEY_setservent 194
-#define KEY_setsockopt 195
-#define KEY_shift 196
-#define KEY_shmctl 197
-#define KEY_shmget 198
-#define KEY_shmread 199
-#define KEY_shmwrite 200
-#define KEY_shutdown 201
-#define KEY_sin 202
-#define KEY_sleep 203
-#define KEY_socket 204
-#define KEY_socketpair 205
-#define KEY_sort 206
-#define KEY_splice 207
-#define KEY_split 208
-#define KEY_sprintf 209
-#define KEY_sqrt 210
-#define KEY_srand 211
-#define KEY_stat 212
-#define KEY_state 213
-#define KEY_study 214
-#define KEY_sub 215
-#define KEY_substr 216
-#define KEY_symlink 217
-#define KEY_syscall 218
-#define KEY_sysopen 219
-#define KEY_sysread 220
-#define KEY_sysseek 221
-#define KEY_system 222
-#define KEY_syswrite 223
-#define KEY_tell 224
-#define KEY_telldir 225
-#define KEY_tie 226
-#define KEY_tied 227
-#define KEY_time 228
-#define KEY_times 229
-#define KEY_tr 230
-#define KEY_truncate 231
-#define KEY_uc 232
-#define KEY_ucfirst 233
-#define KEY_umask 234
-#define KEY_undef 235
-#define KEY_unless 236
-#define KEY_unlink 237
-#define KEY_unpack 238
-#define KEY_unshift 239
-#define KEY_untie 240
-#define KEY_until 241
-#define KEY_use 242
-#define KEY_utime 243
-#define KEY_values 244
-#define KEY_vec 245
-#define KEY_wait 246
-#define KEY_waitpid 247
-#define KEY_wantarray 248
-#define KEY_warn 249
-#define KEY_when 250
-#define KEY_while 251
-#define KEY_write 252
-#define KEY_x 253
-#define KEY_xor 254
-#define KEY_y 255
+#define KEY_catch 24
+#define KEY_chdir 25
+#define KEY_chmod 26
+#define KEY_chomp 27
+#define KEY_chop 28
+#define KEY_chown 29
+#define KEY_chr 30
+#define KEY_chroot 31
+#define KEY_close 32
+#define KEY_closedir 33
+#define KEY_cmp 34
+#define KEY_connect 35
+#define KEY_continue 36
+#define KEY_cos 37
+#define KEY_crypt 38
+#define KEY_dbmclose 39
+#define KEY_dbmopen 40
+#define KEY_default 41
+#define KEY_defined 42
+#define KEY_delete 43
+#define KEY_die 44
+#define KEY_do 45
+#define KEY_dump 46
+#define KEY_each 47
+#define KEY_else 48
+#define KEY_elsif 49
+#define KEY_endgrent 50
+#define KEY_endhostent 51
+#define KEY_endnetent 52
+#define KEY_endprotoent 53
+#define KEY_endpwent 54
+#define KEY_endservent 55
+#define KEY_eof 56
+#define KEY_eq 57
+#define KEY_eval 58
+#define KEY_evalbytes 59
+#define KEY_exec 60
+#define KEY_exists 61
+#define KEY_exit 62
+#define KEY_exp 63
+#define KEY_fc 64
+#define KEY_fcntl 65
+#define KEY_fileno 66
+#define KEY_flock 67
+#define KEY_for 68
+#define KEY_foreach 69
+#define KEY_fork 70
+#define KEY_format 71
+#define KEY_formline 72
+#define KEY_ge 73
+#define KEY_getc 74
+#define KEY_getgrent 75
+#define KEY_getgrgid 76
+#define KEY_getgrnam 77
+#define KEY_gethostbyaddr 78
+#define KEY_gethostbyname 79
+#define KEY_gethostent 80
+#define KEY_getlogin 81
+#define KEY_getnetbyaddr 82
+#define KEY_getnetbyname 83
+#define KEY_getnetent 84
+#define KEY_getpeername 85
+#define KEY_getpgrp 86
+#define KEY_getppid 87
+#define KEY_getpriority 88
+#define KEY_getprotobyname 89
+#define KEY_getprotobynumber 90
+#define KEY_getprotoent 91
+#define KEY_getpwent 92
+#define KEY_getpwnam 93
+#define KEY_getpwuid 94
+#define KEY_getservbyname 95
+#define KEY_getservbyport 96
+#define KEY_getservent 97
+#define KEY_getsockname 98
+#define KEY_getsockopt 99
+#define KEY_given 100
+#define KEY_glob 101
+#define KEY_gmtime 102
+#define KEY_goto 103
+#define KEY_grep 104
+#define KEY_gt 105
+#define KEY_hex 106
+#define KEY_if 107
+#define KEY_index 108
+#define KEY_int 109
+#define KEY_ioctl 110
+#define KEY_isa 111
+#define KEY_join 112
+#define KEY_keys 113
+#define KEY_kill 114
+#define KEY_last 115
+#define KEY_lc 116
+#define KEY_lcfirst 117
+#define KEY_le 118
+#define KEY_length 119
+#define KEY_link 120
+#define KEY_listen 121
+#define KEY_local 122
+#define KEY_localtime 123
+#define KEY_lock 124
+#define KEY_log 125
+#define KEY_lstat 126
+#define KEY_lt 127
+#define KEY_m 128
+#define KEY_map 129
+#define KEY_mkdir 130
+#define KEY_msgctl 131
+#define KEY_msgget 132
+#define KEY_msgrcv 133
+#define KEY_msgsnd 134
+#define KEY_my 135
+#define KEY_ne 136
+#define KEY_next 137
+#define KEY_no 138
+#define KEY_not 139
+#define KEY_oct 140
+#define KEY_open 141
+#define KEY_opendir 142
+#define KEY_or 143
+#define KEY_ord 144
+#define KEY_our 145
+#define KEY_pack 146
+#define KEY_package 147
+#define KEY_pipe 148
+#define KEY_pop 149
+#define KEY_pos 150
+#define KEY_print 151
+#define KEY_printf 152
+#define KEY_prototype 153
+#define KEY_push 154
+#define KEY_q 155
+#define KEY_qq 156
+#define KEY_qr 157
+#define KEY_quotemeta 158
+#define KEY_qw 159
+#define KEY_qx 160
+#define KEY_rand 161
+#define KEY_read 162
+#define KEY_readdir 163
+#define KEY_readline 164
+#define KEY_readlink 165
+#define KEY_readpipe 166
+#define KEY_recv 167
+#define KEY_redo 168
+#define KEY_ref 169
+#define KEY_rename 170
+#define KEY_require 171
+#define KEY_reset 172
+#define KEY_return 173
+#define KEY_reverse 174
+#define KEY_rewinddir 175
+#define KEY_rindex 176
+#define KEY_rmdir 177
+#define KEY_s 178
+#define KEY_say 179
+#define KEY_scalar 180
+#define KEY_seek 181
+#define KEY_seekdir 182
+#define KEY_select 183
+#define KEY_semctl 184
+#define KEY_semget 185
+#define KEY_semop 186
+#define KEY_send 187
+#define KEY_setgrent 188
+#define KEY_sethostent 189
+#define KEY_setnetent 190
+#define KEY_setpgrp 191
+#define KEY_setpriority 192
+#define KEY_setprotoent 193
+#define KEY_setpwent 194
+#define KEY_setservent 195
+#define KEY_setsockopt 196
+#define KEY_shift 197
+#define KEY_shmctl 198
+#define KEY_shmget 199
+#define KEY_shmread 200
+#define KEY_shmwrite 201
+#define KEY_shutdown 202
+#define KEY_sin 203
+#define KEY_sleep 204
+#define KEY_socket 205
+#define KEY_socketpair 206
+#define KEY_sort 207
+#define KEY_splice 208
+#define KEY_split 209
+#define KEY_sprintf 210
+#define KEY_sqrt 211
+#define KEY_srand 212
+#define KEY_stat 213
+#define KEY_state 214
+#define KEY_study 215
+#define KEY_sub 216
+#define KEY_substr 217
+#define KEY_symlink 218
+#define KEY_syscall 219
+#define KEY_sysopen 220
+#define KEY_sysread 221
+#define KEY_sysseek 222
+#define KEY_system 223
+#define KEY_syswrite 224
+#define KEY_tell 225
+#define KEY_telldir 226
+#define KEY_tie 227
+#define KEY_tied 228
+#define KEY_time 229
+#define KEY_times 230
+#define KEY_tr 231
+#define KEY_try 232
+#define KEY_truncate 233
+#define KEY_uc 234
+#define KEY_ucfirst 235
+#define KEY_umask 236
+#define KEY_undef 237
+#define KEY_unless 238
+#define KEY_unlink 239
+#define KEY_unpack 240
+#define KEY_unshift 241
+#define KEY_untie 242
+#define KEY_until 243
+#define KEY_use 244
+#define KEY_utime 245
+#define KEY_values 246
+#define KEY_vec 247
+#define KEY_wait 248
+#define KEY_waitpid 249
+#define KEY_wantarray 250
+#define KEY_warn 251
+#define KEY_when 252
+#define KEY_while 253
+#define KEY_write 254
+#define KEY_x 255
+#define KEY_xor 256
+#define KEY_y 257
/* Generated from:
- * dd384f0c948716414a93d758d89a38e3c8116acfdc48eb7e34fa6737887097d5 regen/keywords.pl
+ * 3a4f2004642b00b871c01cbdc018f6ca5ead6b4e0b2b184120c60b0b62a229dd regen/keywords.pl
* ex: set ro: */
diff --git a/lib/B/Deparse-core.t b/lib/B/Deparse-core.t
index cdbd27ce5e..9d891a7507 100644
--- a/lib/B/Deparse-core.t
+++ b/lib/B/Deparse-core.t
@@ -362,6 +362,7 @@ my %not_tested = map { $_ => 1} qw(
END
INIT
UNITCHECK
+ catch
default
else
elsif
@@ -381,6 +382,7 @@ my %not_tested = map { $_ => 1} qw(
require
s
tr
+ try
unless
until
use
diff --git a/lib/B/Deparse.pm b/lib/B/Deparse.pm
index 2317aa1498..96d569acb9 100644
--- a/lib/B/Deparse.pm
+++ b/lib/B/Deparse.pm
@@ -52,7 +52,7 @@ use B qw(class main_root main_start main_cv svref_2object opnumber perlstring
MDEREF_SHIFT
);
-$VERSION = '1.55';
+$VERSION = '1.56';
use strict;
our $AUTOLOAD;
use warnings ();
@@ -2304,6 +2304,8 @@ my %feature_keywords = (
evalbytes=>'evalbytes',
__SUB__ => '__SUB__',
fc => 'fc',
+ try => 'try',
+ catch => 'try',
);
# keywords that are strong and also have a prototype
diff --git a/lib/B/Op_private.pm b/lib/B/Op_private.pm
index a3666a7181..480dac69a0 100644
--- a/lib/B/Op_private.pm
+++ b/lib/B/Op_private.pm
@@ -275,6 +275,7 @@ $bits{backtick}{0} = $bf[0];
@{$bits{bit_xor}}{1,0} = ($bf[1], $bf[1]);
@{$bits{bless}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
@{$bits{caller}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+$bits{catch}{0} = $bf[0];
@{$bits{chdir}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
@{$bits{chmod}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
$bits{chomp}{0} = $bf[0];
diff --git a/lib/feature.pm b/lib/feature.pm
index a8e943a819..e6e0442582 100644
--- a/lib/feature.pm
+++ b/lib/feature.pm
@@ -5,12 +5,13 @@
package feature;
-our $VERSION = '1.62';
+our $VERSION = '1.63';
our %feature = (
fc => 'feature_fc',
isa => 'feature_isa',
say => 'feature_say',
+ try => 'feature_try',
state => 'feature_state',
switch => 'feature_switch',
bitwise => 'feature_bitwise',
@@ -33,7 +34,7 @@ our %feature_bundle = (
"5.15" => [qw(bareword_filehandles current_sub evalbytes fc indirect multidimensional say state switch unicode_eval unicode_strings)],
"5.23" => [qw(bareword_filehandles current_sub evalbytes fc indirect multidimensional postderef_qq say state switch unicode_eval unicode_strings)],
"5.27" => [qw(bareword_filehandles bitwise current_sub evalbytes fc indirect multidimensional postderef_qq say state switch unicode_eval unicode_strings)],
- "all" => [qw(bareword_filehandles bitwise current_sub declared_refs evalbytes fc indirect isa multidimensional postderef_qq refaliasing say signatures state switch unicode_eval unicode_strings)],
+ "all" => [qw(bareword_filehandles bitwise current_sub declared_refs evalbytes fc indirect isa multidimensional postderef_qq refaliasing say signatures state switch try unicode_eval unicode_strings)],
"default" => [qw(bareword_filehandles indirect multidimensional)],
);
@@ -409,6 +410,14 @@ previous versions it was simply on all the time.
You can use the L<bareword::filehandles> module on CPAN to disable
bareword filehandles for older versions of perl.
+=head2 The 'try' feature.
+
+This feature enables the C<try> and C<catch> syntax, which allows exception
+handling, where exceptions throwin from the body of the block introduced with
+C<try> are caught by executing the body of the C<catch> block.
+
+For more information, see L<perlsyn/"Try Catch Exception Handling">.
+
=head1 FEATURE BUNDLES
It's possible to load multiple features together, using
diff --git a/lib/warnings.pm b/lib/warnings.pm
index da1ca6caa4..a92d4904c2 100644
--- a/lib/warnings.pm
+++ b/lib/warnings.pm
@@ -109,6 +109,9 @@ our %Offsets = (
# Warnings Categories added in Perl 5.031
'experimental::isa' => 146,
+
+ # Warnings Categories added in Perl 5.033
+ 'experimental::try' => 148,
);
our %Bits = (
@@ -122,7 +125,7 @@ our %Bits = (
'digit' => "\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [31]
'exec' => "\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [7]
'exiting' => "\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [3]
- 'experimental' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x55\x51\x15\x50\x51\x05", # [51..56,58..62,66..68,70..73]
+ 'experimental' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x55\x51\x15\x50\x51\x15", # [51..56,58..62,66..68,70..74]
'experimental::alpha_assertions' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00", # [67]
'experimental::bitwise' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00", # [58]
'experimental::const_attr' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00", # [59]
@@ -137,6 +140,7 @@ our %Bits = (
'experimental::script_run' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00", # [68]
'experimental::signatures' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00", # [56]
'experimental::smartmatch' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00", # [54]
+ 'experimental::try' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10", # [74]
'experimental::uniprop_wildcards' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00", # [71]
'experimental::vlb' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01", # [72]
'experimental::win32_perlio' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00", # [62]
@@ -199,7 +203,7 @@ our %DeadBits = (
'digit' => "\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [31]
'exec' => "\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [7]
'exiting' => "\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [3]
- 'experimental' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xaa\xa2\x2a\xa0\xa2\x0a", # [51..56,58..62,66..68,70..73]
+ 'experimental' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xaa\xa2\x2a\xa0\xa2\x2a", # [51..56,58..62,66..68,70..74]
'experimental::alpha_assertions' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00", # [67]
'experimental::bitwise' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00", # [58]
'experimental::const_attr' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00", # [59]
@@ -214,6 +218,7 @@ our %DeadBits = (
'experimental::script_run' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00", # [68]
'experimental::signatures' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00", # [56]
'experimental::smartmatch' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00", # [54]
+ 'experimental::try' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20", # [74]
'experimental::uniprop_wildcards' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00", # [71]
'experimental::vlb' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02", # [72]
'experimental::win32_perlio' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00", # [62]
@@ -267,8 +272,8 @@ our %DeadBits = (
# These are used by various things, including our own tests
our $NONE = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
-our $DEFAULT = "\x10\x01\x00\x00\x00\x50\x04\x00\x00\x00\x00\x00\x00\x55\x51\x55\x50\x51\x05"; # [2,4,22,23,25,52..56,58..63,66..68,70..73]
-our $LAST_BIT = 148 ;
+our $DEFAULT = "\x10\x01\x00\x00\x00\x50\x04\x00\x00\x00\x00\x00\x00\x55\x51\x55\x50\x51\x15"; # [2,4,22,23,25,52..56,58..63,66..68,70..74]
+our $LAST_BIT = 150 ;
our $BYTES = 19 ;
sub Croaker
@@ -888,6 +893,8 @@ The current hierarchy is:
| |
| +- experimental::smartmatch
| |
+ | +- experimental::try
+ | |
| +- experimental::uniprop_wildcards
| |
| +- experimental::vlb
diff --git a/op.c b/op.c
index 4fb8c7199e..e507d32446 100644
--- a/op.c
+++ b/op.c
@@ -12753,6 +12753,8 @@ Perl_ck_eval(pTHX_ OP *o)
op_free(o);
enter = alloc_LOGOP(OP_ENTERTRY, NULL, NULL);
+ if(o->op_flags & OPf_SPECIAL)
+ enter->op_flags |= OPf_SPECIAL;
/* establish postfix order */
enter->op_next = (OP*)enter;
diff --git a/op.h b/op.h
index 189299ec64..6d8729680b 100644
--- a/op.h
+++ b/op.h
@@ -147,6 +147,7 @@ Deprecated. Use C<GIMME_V> instead.
/* On OP_DUMP, has no label */
/* On OP_UNSTACK, in a C-style for loop */
/* On OP_READLINE, it's for <<>>, not <> */
+ /* On OP_ENTERTRY, this is a real try {} block. */
/* There is no room in op_flags for this one, so it has its own bit-
field member (op_folded) instead. The flag is only used to tell
op_convert_list to set op_folded. */
diff --git a/opcode.h b/opcode.h
index 859b205750..dc4254cb4e 100644
--- a/opcode.h
+++ b/opcode.h
@@ -549,6 +549,7 @@ EXTCONST char* const PL_op_name[] = {
"isa",
"cmpchain_and",
"cmpchain_dup",
+ "catch",
"freed",
};
#endif
@@ -957,6 +958,7 @@ EXTCONST char* const PL_op_desc[] = {
"derived class test",
"comparison chaining",
"comparand shuffling",
+ "catch {} block",
"freed op",
};
#endif
@@ -1368,6 +1370,7 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */
Perl_pp_isa,
Perl_pp_cmpchain_and,
Perl_pp_cmpchain_dup,
+ Perl_pp_catch,
}
#endif
;
@@ -1775,6 +1778,7 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */
Perl_ck_isa, /* isa */
Perl_ck_null, /* cmpchain_and */
Perl_ck_null, /* cmpchain_dup */
+ Perl_ck_null, /* catch */
}
#endif
;
@@ -2183,6 +2187,7 @@ EXTCONST U32 PL_opargs[] = {
0x00000204, /* isa */
0x00000300, /* cmpchain_and */
0x00000100, /* cmpchain_dup */
+ 0x00000300, /* catch */
};
#endif
@@ -2850,6 +2855,7 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = {
12, /* isa */
0, /* cmpchain_and */
0, /* cmpchain_dup */
+ 0, /* catch */
};
@@ -2868,7 +2874,7 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = {
*/
EXTCONST U16 PL_op_private_bitdefs[] = {
- 0x0003, /* scalar, prototype, refgen, srefgen, readline, regcmaybe, regcreset, regcomp, substcont, chop, schop, defined, undef, study, preinc, i_preinc, predec, i_predec, postinc, i_postinc, postdec, i_postdec, negate, i_negate, not, complement, ucfirst, lcfirst, uc, lc, quotemeta, aeach, avalues, each, pop, shift, grepstart, mapstart, mapwhile, range, and, or, dor, andassign, orassign, dorassign, argcheck, argdefelem, method, method_named, method_super, method_redir, method_redir_super, entergiven, leavegiven, enterwhen, leavewhen, untie, tied, dbmclose, getsockname, getpeername, lstat, stat, readlink, readdir, telldir, rewinddir, closedir, localtime, alarm, require, dofile, entertry, ghbyname, gnbyname, gpbyname, shostent, snetent, sprotoent, sservent, gpwnam, gpwuid, ggrnam, ggrgid, lock, once, fc, anonconst, cmpchain_and, cmpchain_dup */
+ 0x0003, /* scalar, prototype, refgen, srefgen, readline, regcmaybe, regcreset, regcomp, substcont, chop, schop, defined, undef, study, preinc, i_preinc, predec, i_predec, postinc, i_postinc, postdec, i_postdec, negate, i_negate, not, complement, ucfirst, lcfirst, uc, lc, quotemeta, aeach, avalues, each, pop, shift, grepstart, mapstart, mapwhile, range, and, or, dor, andassign, orassign, dorassign, argcheck, argdefelem, method, method_named, method_super, method_redir, method_redir_super, entergiven, leavegiven, enterwhen, leavewhen, untie, tied, dbmclose, getsockname, getpeername, lstat, stat, readlink, readdir, telldir, rewinddir, closedir, localtime, alarm, require, dofile, entertry, ghbyname, gnbyname, gpbyname, shostent, snetent, sprotoent, sservent, gpwnam, gpwuid, ggrnam, ggrgid, lock, once, fc, anonconst, cmpchain_and, cmpchain_dup, catch */
0x2fdc, 0x41b9, /* pushmark */
0x00bd, /* wantarray, runcv */
0x0438, 0x1a50, 0x426c, 0x3d28, 0x3505, /* const */
@@ -3346,6 +3352,7 @@ EXTCONST U8 PL_op_private_valid[] = {
/* ISA */ (OPpARG2_MASK),
/* CMPCHAIN_AND */ (OPpARG1_MASK),
/* CMPCHAIN_DUP */ (OPpARG1_MASK),
+ /* CATCH */ (OPpARG1_MASK),
};
diff --git a/opnames.h b/opnames.h
index 0e325466d1..57d29583af 100644
--- a/opnames.h
+++ b/opnames.h
@@ -414,10 +414,11 @@ typedef enum opcode {
OP_ISA = 397,
OP_CMPCHAIN_AND = 398,
OP_CMPCHAIN_DUP = 399,
+ OP_CATCH = 400,
OP_max
} opcode;
-#define MAXO 400
+#define MAXO 401
#define OP_FREED MAXO
/* the OP_IS_* macros are optimized to a simple range check because
diff --git a/perly.act b/perly.act
index 16abe6eb6b..d623d04895 100644
--- a/perly.act
+++ b/perly.act
@@ -5,8 +5,8 @@
*/
case 2:
-#line 137 "perly.y"
- {
+#line 138 "perly.y"
+ {
parser->expect = XSTATE;
(yyval.ival) = 0;
}
@@ -14,8 +14,8 @@ case 2:
break;
case 3:
-#line 142 "perly.y"
- {
+#line 143 "perly.y"
+ {
newPROG(block_end((ps[-1].val.ival),(ps[0].val.opval)));
PL_compiling.cop_seq = 0;
(yyval.ival) = 0;
@@ -24,8 +24,8 @@ case 2:
break;
case 4:
-#line 148 "perly.y"
- {
+#line 149 "perly.y"
+ {
parser->expect = XTERM;
(yyval.ival) = 0;
}
@@ -33,8 +33,8 @@ case 2:
break;
case 5:
-#line 153 "perly.y"
- {
+#line 154 "perly.y"
+ {
PL_eval_root = (ps[0].val.opval);
(yyval.ival) = 0;
}
@@ -42,8 +42,8 @@ case 2:
break;
case 6:
-#line 158 "perly.y"
- {
+#line 159 "perly.y"
+ {
parser->expect = XBLOCK;
(yyval.ival) = 0;
}
@@ -51,8 +51,8 @@ case 2:
break;
case 7:
-#line 163 "perly.y"
- {
+#line 164 "perly.y"
+ {
PL_pad_reset_pending = TRUE;
PL_eval_root = (ps[0].val.opval);
(yyval.ival) = 0;
@@ -63,8 +63,8 @@ case 2:
break;
case 8:
-#line 171 "perly.y"
- {
+#line 172 "perly.y"
+ {
parser->expect = XSTATE;
(yyval.ival) = 0;
}
@@ -72,8 +72,8 @@ case 2:
break;
case 9:
-#line 176 "perly.y"
- {
+#line 177 "perly.y"
+ {
PL_pad_reset_pending = TRUE;
PL_eval_root = (ps[0].val.opval);
(yyval.ival) = 0;
@@ -84,8 +84,8 @@ case 2:
break;
case 10:
-#line 184 "perly.y"
- {
+#line 185 "perly.y"
+ {
parser->expect = XSTATE;
(yyval.ival) = 0;
}
@@ -93,8 +93,8 @@ case 2:
break;
case 11:
-#line 189 "perly.y"
- {
+#line 190 "perly.y"
+ {
PL_pad_reset_pending = TRUE;
PL_eval_root = (ps[0].val.opval);
(yyval.ival) = 0;
@@ -105,8 +105,8 @@ case 2:
break;
case 12:
-#line 197 "perly.y"
- {
+#line 198 "perly.y"
+ {
parser->expect = XSTATE;
(yyval.ival) = 0;
}
@@ -114,8 +114,8 @@ case 2:
break;
case 13:
-#line 202 "perly.y"
- {
+#line 203 "perly.y"
+ {
PL_eval_root = (ps[0].val.opval);
(yyval.ival) = 0;
}
@@ -123,8 +123,8 @@ case 2:
break;
case 14:
-#line 207 "perly.y"
- {
+#line 208 "perly.y"
+ {
parser->expect = XSTATE;
(yyval.ival) = 0;
}
@@ -132,8 +132,8 @@ case 2:
break;
case 15:
-#line 212 "perly.y"
- {
+#line 213 "perly.y"
+ {
PL_eval_root = (ps[0].val.opval);
(yyval.ival) = 0;
}
@@ -141,8 +141,8 @@ case 2:
break;
case 16:
-#line 220 "perly.y"
- { if (parser->copline > (line_t)(ps[-3].val.ival))
+#line 221 "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));
}
@@ -150,8 +150,8 @@ case 2:
break;
case 17:
-#line 228 "perly.y"
- { if (parser->copline > (line_t)(ps[-6].val.ival))
+#line 229 "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));
}
@@ -159,15 +159,15 @@ case 2:
break;
case 18:
-#line 235 "perly.y"
- { (yyval.ival) = block_start(TRUE);
+#line 236 "perly.y"
+ { (yyval.ival) = block_start(TRUE);
parser->parsed_sub = 0; }
break;
case 19:
-#line 240 "perly.y"
- { if (parser->copline > (line_t)(ps[-3].val.ival))
+#line 241 "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));
}
@@ -175,21 +175,21 @@ case 2:
break;
case 20:
-#line 247 "perly.y"
- { (yyval.ival) = block_start(FALSE);
+#line 248 "perly.y"
+ { (yyval.ival) = block_start(FALSE);
parser->parsed_sub = 0; }
break;
case 21:
-#line 253 "perly.y"
- { (yyval.opval) = NULL; }
+#line 254 "perly.y"
+ { (yyval.opval) = NULL; }
break;
case 22:
-#line 255 "perly.y"
- { (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-1].val.opval), (ps[0].val.opval));
+#line 256 "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))
PL_hints |= HINT_BLOCK_SCOPE;
@@ -198,14 +198,14 @@ case 2:
break;
case 23:
-#line 264 "perly.y"
- { (yyval.opval) = NULL; }
+#line 265 "perly.y"
+ { (yyval.opval) = NULL; }
break;
case 24:
-#line 266 "perly.y"
- { (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-1].val.opval), (ps[0].val.opval));
+#line 267 "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))
PL_hints |= HINT_BLOCK_SCOPE;
@@ -214,22 +214,22 @@ case 2:
break;
case 25:
-#line 275 "perly.y"
- {
+#line 276 "perly.y"
+ {
(yyval.opval) = (ps[0].val.opval) ? newSTATEOP(0, NULL, (ps[0].val.opval)) : NULL;
}
break;
case 26:
-#line 279 "perly.y"
- { (yyval.opval) = (ps[0].val.opval); }
+#line 280 "perly.y"
+ { (yyval.opval) = (ps[0].val.opval); }
break;
case 27:
-#line 283 "perly.y"
- {
+#line 284 "perly.y"
+ {
SV *label = cSVOPx_sv((ps[-1].val.opval));
(yyval.opval) = newSTATEOP(SvFLAGS(label) & SVf_UTF8,
savepv(SvPVX_const(label)), (ps[0].val.opval));
@@ -239,8 +239,8 @@ case 2:
break;
case 28:
-#line 290 "perly.y"
- {
+#line 291 "perly.y"
+ {
SV *label = cSVOPx_sv((ps[-1].val.opval));
(yyval.opval) = newSTATEOP(SvFLAGS(label) & SVf_UTF8,
savepv(SvPVX_const(label)), (ps[0].val.opval));
@@ -250,14 +250,14 @@ case 2:
break;
case 29:
-#line 300 "perly.y"
- { (yyval.opval) = (ps[0].val.opval); }
+#line 301 "perly.y"
+ { (yyval.opval) = (ps[0].val.opval); }
break;
case 30:
-#line 302 "perly.y"
- {
+#line 303 "perly.y"
+ {
CV *fmtcv = PL_compcv;
newFORM((ps[-2].val.ival), (ps[-1].val.opval), (ps[0].val.opval));
(yyval.opval) = NULL;
@@ -270,8 +270,8 @@ case 2:
break;
case 31:
-#line 314 "perly.y"
- {
+#line 315 "perly.y"
+ {
init_named_cv(PL_compcv, (ps[-1].val.opval));
parser->in_my = 0;
parser->in_my_stash = NULL;
@@ -280,8 +280,8 @@ case 2:
break;
case 32:
-#line 320 "perly.y"
- {
+#line 321 "perly.y"
+ {
SvREFCNT_inc_simple_void(PL_compcv);
(ps[-5].val.opval)->op_type == OP_CONST
? newATTRSUB((ps[-4].val.ival), (ps[-5].val.opval), (ps[-2].val.opval), (ps[-1].val.opval), (ps[0].val.opval))
@@ -295,8 +295,8 @@ case 2:
break;
case 33:
-#line 335 "perly.y"
- {
+#line 336 "perly.y"
+ {
init_named_cv(PL_compcv, (ps[-1].val.opval));
parser->in_my = 0;
parser->in_my_stash = NULL;
@@ -305,8 +305,8 @@ case 2:
break;
case 34:
-#line 341 "perly.y"
- {
+#line 342 "perly.y"
+ {
SvREFCNT_inc_simple_void(PL_compcv);
(ps[-4].val.opval)->op_type == OP_CONST
? newATTRSUB((ps[-3].val.ival), (ps[-4].val.opval), NULL, (ps[-1].val.opval), (ps[0].val.opval))
@@ -320,8 +320,8 @@ case 2:
break;
case 35:
-#line 352 "perly.y"
- {
+#line 353 "perly.y"
+ {
package((ps[-1].val.opval));
if ((ps[-2].val.opval))
package_version((ps[-2].val.opval));
@@ -331,14 +331,14 @@ case 2:
break;
case 36:
-#line 359 "perly.y"
- { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ }
+#line 360 "perly.y"
+ { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ }
break;
case 37:
-#line 361 "perly.y"
- {
+#line 362 "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));
parser->parsed_sub = 1;
@@ -348,8 +348,8 @@ case 2:
break;
case 38:
-#line 368 "perly.y"
- {
+#line 369 "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)));
parser->copline = (line_t)(ps[-6].val.ival);
@@ -358,8 +358,8 @@ case 2:
break;
case 39:
-#line 374 "perly.y"
- {
+#line 375 "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))));
parser->copline = (line_t)(ps[-6].val.ival);
@@ -368,8 +368,8 @@ case 2:
break;
case 40:
-#line 380 "perly.y"
- {
+#line 381 "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);
}
@@ -377,20 +377,20 @@ case 2:
break;
case 41:
-#line 385 "perly.y"
- { (yyval.opval) = block_end((ps[-3].val.ival), newWHENOP((ps[-2].val.opval), op_scope((ps[0].val.opval)))); }
+#line 386 "perly.y"
+ { (yyval.opval) = block_end((ps[-3].val.ival), newWHENOP((ps[-2].val.opval), op_scope((ps[0].val.opval)))); }
break;
case 42:
-#line 387 "perly.y"
- { (yyval.opval) = newWHENOP(0, op_scope((ps[0].val.opval))); }
+#line 388 "perly.y"
+ { (yyval.opval) = newWHENOP(0, op_scope((ps[0].val.opval))); }
break;
case 43:
-#line 389 "perly.y"
- {
+#line 390 "perly.y"
+ {
(yyval.opval) = block_end((ps[-5].val.ival),
newWHILEOP(0, 1, NULL,
(ps[-4].val.opval), (ps[-1].val.opval), (ps[0].val.opval), (ps[-2].val.ival)));
@@ -400,8 +400,8 @@ case 2:
break;
case 44:
-#line 396 "perly.y"
- {
+#line 397 "perly.y"
+ {
(yyval.opval) = block_end((ps[-5].val.ival),
newWHILEOP(0, 1, NULL,
(ps[-4].val.opval), (ps[-1].val.opval), (ps[0].val.opval), (ps[-2].val.ival)));
@@ -411,20 +411,20 @@ case 2:
break;
case 45:
-#line 403 "perly.y"
- { parser->expect = XTERM; }
+#line 404 "perly.y"
+ { parser->expect = XTERM; }
break;
case 46:
-#line 405 "perly.y"
- { parser->expect = XTERM; }
+#line 406 "perly.y"
+ { parser->expect = XTERM; }
break;
case 47:
-#line 408 "perly.y"
- {
+#line 409 "perly.y"
+ {
OP *initop = (ps[-9].val.opval);
OP *forop = newWHILEOP(0, 1, NULL,
scalar((ps[-6].val.opval)), (ps[0].val.opval), (ps[-2].val.opval), (ps[-3].val.ival));
@@ -442,8 +442,8 @@ case 2:
break;
case 48:
-#line 423 "perly.y"
- {
+#line 424 "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);
}
@@ -451,8 +451,8 @@ case 2:
break;
case 49:
-#line 428 "perly.y"
- {
+#line 429 "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)));
parser->copline = (line_t)(ps[-7].val.ival);
@@ -461,14 +461,14 @@ case 2:
break;
case 50:
-#line 434 "perly.y"
- { parser->in_my = 0; (yyval.opval) = my((ps[0].val.opval)); }
+#line 435 "perly.y"
+ { parser->in_my = 0; (yyval.opval) = my((ps[0].val.opval)); }
break;
case 51:
-#line 436 "perly.y"
- {
+#line 437 "perly.y"
+ {
(yyval.opval) = block_end(
(ps[-7].val.ival),
newFOROP(0,
@@ -484,8 +484,8 @@ case 2:
break;
case 52:
-#line 449 "perly.y"
- {
+#line 450 "perly.y"
+ {
(yyval.opval) = block_end((ps[-4].val.ival), newFOROP(
0, op_lvalue(newUNOP(OP_REFGEN, 0,
(ps[-6].val.opval)),
@@ -496,8 +496,8 @@ case 2:
break;
case 53:
-#line 457 "perly.y"
- {
+#line 458 "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)));
parser->copline = (line_t)(ps[-6].val.ival);
@@ -506,8 +506,45 @@ case 2:
break;
case 54:
-#line 463 "perly.y"
- {
+#line 464 "perly.y"
+ { parser->in_my = 1; }
+
+ break;
+
+ case 55:
+#line 466 "perly.y"
+ { parser->in_my = 0; intro_my(); }
+
+ break;
+
+ case 56:
+#line 468 "perly.y"
+ {
+ OP *tryblock, *catchblock;
+
+ tryblock = newUNOP(OP_ENTERTRY, OPf_SPECIAL, (ps[-8].val.opval));
+
+ catchblock = newLOGOP(OP_CATCH, 0,
+ newOP(OP_NULL, 0), /* LOGOP always needs an op_first */
+ block_end((ps[-4].val.ival), op_scope((ps[0].val.opval))));
+
+ /* catchblock itself is an OP_NULL; the real OP_CATCH is
+ * its op_first */
+ assert(cUNOPx(catchblock)->op_first->op_type == OP_CATCH);
+ cUNOPx(catchblock)->op_first->op_targ = (ps[-3].val.opval)->op_targ;
+ op_free((ps[-3].val.opval));
+
+ (yyval.opval) = op_append_list(OP_LEAVE,
+ newOP(OP_ENTER, 0),
+ op_append_list(OP_LINESEQ,
+ tryblock, catchblock));
+ }
+
+ break;
+
+ case 57:
+#line 489 "perly.y"
+ {
/* a block is a loop that happens once */
(yyval.opval) = newWHILEOP(0, 1, NULL,
NULL, (ps[-1].val.opval), (ps[0].val.opval), 0);
@@ -515,9 +552,9 @@ case 2:
break;
- case 55:
-#line 469 "perly.y"
- {
+ case 58:
+#line 495 "perly.y"
+ {
package((ps[-2].val.opval));
if ((ps[-3].val.opval)) {
package_version((ps[-3].val.opval));
@@ -526,9 +563,9 @@ case 2:
break;
- case 56:
-#line 476 "perly.y"
- {
+ case 59:
+#line 502 "perly.y"
+ {
/* a block is a loop that happens once */
(yyval.opval) = newWHILEOP(0, 1, NULL,
NULL, block_end((ps[-3].val.ival), (ps[-1].val.opval)), NULL, 0);
@@ -538,35 +575,35 @@ case 2:
break;
- case 57:
-#line 484 "perly.y"
- {
+ case 60:
+#line 510 "perly.y"
+ {
(yyval.opval) = (ps[-1].val.opval);
}
break;
- case 58:
-#line 488 "perly.y"
- {
+ case 61:
+#line 514 "perly.y"
+ {
(yyval.opval) = newLISTOP(OP_DIE, 0, newOP(OP_PUSHMARK, 0),
newSVOP(OP_CONST, 0, newSVpvs("Unimplemented")));
}
break;
- case 59:
-#line 493 "perly.y"
- {
+ case 62:
+#line 519 "perly.y"
+ {
(yyval.opval) = NULL;
parser->copline = NOLINE;
}
break;
- case 60:
-#line 501 "perly.y"
- { OP *list;
+ case 63:
+#line 527 "perly.y"
+ { OP *list;
if ((ps[0].val.opval)) {
OP *term = (ps[0].val.opval);
list = op_append_elem(OP_LIST, (ps[-1].val.opval), term);
@@ -583,241 +620,241 @@ case 2:
break;
- case 61:
-#line 518 "perly.y"
- { (yyval.opval) = NULL; }
-
- break;
-
- case 62:
-#line 520 "perly.y"
- { (yyval.opval) = op_unscope((ps[-1].val.opval)); }
-
- break;
-
case 64:
-#line 528 "perly.y"
- { (yyval.opval) = NULL; }
+#line 544 "perly.y"
+ { (yyval.opval) = NULL; }
break;
case 65:
-#line 530 "perly.y"
- { (yyval.opval) = (ps[0].val.opval); }
-
- break;
-
- case 66:
-#line 532 "perly.y"
- { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[0].val.opval), (ps[-2].val.opval)); }
+#line 546 "perly.y"
+ { (yyval.opval) = op_unscope((ps[-1].val.opval)); }
break;
case 67:
-#line 534 "perly.y"
- { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[0].val.opval), (ps[-2].val.opval)); }
+#line 554 "perly.y"
+ { (yyval.opval) = NULL; }
break;
case 68:
-#line 536 "perly.y"
- { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, scalar((ps[0].val.opval)), (ps[-2].val.opval)); }
+#line 556 "perly.y"
+ { (yyval.opval) = (ps[0].val.opval); }
break;
case 69:
-#line 538 "perly.y"
- { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, (ps[0].val.opval), (ps[-2].val.opval)); }
+#line 558 "perly.y"
+ { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[0].val.opval), (ps[-2].val.opval)); }
break;
case 70:
-#line 540 "perly.y"
- { (yyval.opval) = newFOROP(0, NULL, (ps[0].val.opval), (ps[-2].val.opval), NULL);
- parser->copline = (line_t)(ps[-1].val.ival); }
+#line 560 "perly.y"
+ { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[0].val.opval), (ps[-2].val.opval)); }
break;
case 71:
-#line 543 "perly.y"
- { (yyval.opval) = newWHENOP((ps[0].val.opval), op_scope((ps[-2].val.opval))); }
+#line 562 "perly.y"
+ { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, scalar((ps[0].val.opval)), (ps[-2].val.opval)); }
break;
case 72:
-#line 548 "perly.y"
- { (yyval.opval) = NULL; }
+#line 564 "perly.y"
+ { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, (ps[0].val.opval), (ps[-2].val.opval)); }
break;
case 73:
-#line 550 "perly.y"
- {
- ((ps[0].val.opval))->op_flags |= OPf_PARENS;
- (yyval.opval) = op_scope((ps[0].val.opval));
- }
+#line 566 "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 74:
-#line 555 "perly.y"
- { parser->copline = (line_t)(ps[-5].val.ival);
- (yyval.opval) = newCONDOP(0,
- newSTATEOP(OPf_SPECIAL,NULL,(ps[-3].val.opval)),
- op_scope((ps[-1].val.opval)), (ps[0].val.opval));
- PL_hints |= HINT_BLOCK_SCOPE;
- }
+#line 569 "perly.y"
+ { (yyval.opval) = newWHENOP((ps[0].val.opval), op_scope((ps[-2].val.opval))); }
break;
case 75:
-#line 565 "perly.y"
- { (yyval.opval) = NULL; }
+#line 574 "perly.y"
+ { (yyval.opval) = NULL; }
break;
case 76:
-#line 567 "perly.y"
- { (yyval.opval) = op_scope((ps[0].val.opval)); }
+#line 576 "perly.y"
+ {
+ ((ps[0].val.opval))->op_flags |= OPf_PARENS;
+ (yyval.opval) = op_scope((ps[0].val.opval));
+ }
break;
case 77:
-#line 572 "perly.y"
- { (yyval.ival) = (PL_min_intro_pending &&
- PL_max_intro_pending >= PL_min_intro_pending);
- intro_my(); }
+#line 581 "perly.y"
+ { parser->copline = (line_t)(ps[-5].val.ival);
+ (yyval.opval) = newCONDOP(0,
+ newSTATEOP(OPf_SPECIAL,NULL,(ps[-3].val.opval)),
+ op_scope((ps[-1].val.opval)), (ps[0].val.opval));
+ PL_hints |= HINT_BLOCK_SCOPE;
+ }
break;
case 78:
-#line 578 "perly.y"
- { (yyval.opval) = NULL; }
+#line 591 "perly.y"
+ { (yyval.opval) = NULL; }
break;
- case 80:
-#line 584 "perly.y"
- { YYSTYPE tmplval;
- (void)scan_num("1", &tmplval);
- (yyval.opval) = tmplval.opval; }
+ case 79:
+#line 593 "perly.y"
+ { (yyval.opval) = op_scope((ps[0].val.opval)); }
break;
- case 82:
-#line 592 "perly.y"
- { (yyval.opval) = invert(scalar((ps[0].val.opval))); }
+ case 80:
+#line 598 "perly.y"
+ { (yyval.ival) = (PL_min_intro_pending &&
+ PL_max_intro_pending >= PL_min_intro_pending);
+ intro_my(); }
break;
- case 83:
-#line 597 "perly.y"
- { (yyval.opval) = (ps[0].val.opval); intro_my(); }
+ case 81:
+#line 604 "perly.y"
+ { (yyval.opval) = NULL; }
break;
- case 84:
-#line 601 "perly.y"
- { (yyval.opval) = (ps[0].val.opval); intro_my(); }
+ case 83:
+#line 610 "perly.y"
+ { YYSTYPE tmplval;
+ (void)scan_num("1", &tmplval);
+ (yyval.opval) = tmplval.opval; }
break;
case 85:
-#line 604 "perly.y"
- { (yyval.opval) = (ps[0].val.opval); }
+#line 618 "perly.y"
+ { (yyval.opval) = invert(scalar((ps[0].val.opval))); }
break;
case 86:
-#line 605 "perly.y"
- { (yyval.opval) = NULL; }
+#line 623 "perly.y"
+ { (yyval.opval) = (ps[0].val.opval); intro_my(); }
break;
case 87:
-#line 609 "perly.y"
- { (yyval.ival) = start_subparse(FALSE, 0);
- SAVEFREESV(PL_compcv); }
+#line 627 "perly.y"
+ { (yyval.opval) = (ps[0].val.opval); intro_my(); }
break;
case 88:
-#line 615 "perly.y"
- { (yyval.ival) = start_subparse(FALSE, CVf_ANON);
- SAVEFREESV(PL_compcv); }
+#line 630 "perly.y"
+ { (yyval.opval) = (ps[0].val.opval); }
break;
case 89:
-#line 620 "perly.y"
- { (yyval.ival) = start_subparse(TRUE, 0);
- SAVEFREESV(PL_compcv); }
+#line 631 "perly.y"
+ { (yyval.opval) = NULL; }
break;
- case 92:
-#line 631 "perly.y"
- { (yyval.opval) = NULL; }
+ case 90:
+#line 635 "perly.y"
+ { (yyval.ival) = start_subparse(FALSE, 0);
+ SAVEFREESV(PL_compcv); }
break;
- case 94:
-#line 637 "perly.y"
- { (yyval.opval) = NULL; }
+ case 91:
+#line 641 "perly.y"
+ { (yyval.ival) = start_subparse(FALSE, CVf_ANON);
+ SAVEFREESV(PL_compcv); }
break;
- case 95:
-#line 639 "perly.y"
- { (yyval.opval) = (ps[0].val.opval); }
+ case 92:
+#line 646 "perly.y"
+ { (yyval.ival) = start_subparse(TRUE, 0);
+ SAVEFREESV(PL_compcv); }
break;
- case 96:
-#line 641 "perly.y"
- { (yyval.opval) = NULL; }
+ case 95:
+#line 657 "perly.y"
+ { (yyval.opval) = NULL; }
break;
case 97:
-#line 646 "perly.y"
- { (yyval.opval) = (ps[0].val.opval); }
+#line 663 "perly.y"
+ { (yyval.opval) = NULL; }
break;
case 98:
-#line 648 "perly.y"
- { (yyval.opval) = NULL; }
+#line 665 "perly.y"
+ { (yyval.opval) = (ps[0].val.opval); }
break;
case 99:
-#line 659 "perly.y"
- { parser->in_my = 0; (yyval.opval) = NULL; }
+#line 667 "perly.y"
+ { (yyval.opval) = NULL; }
break;
case 100:
-#line 661 "perly.y"
- { parser->in_my = 0; (yyval.opval) = (ps[0].val.opval); }
+#line 672 "perly.y"
+ { (yyval.opval) = (ps[0].val.opval); }
break;
case 101:
-#line 666 "perly.y"
- { (yyval.ival) = '@'; }
+#line 674 "perly.y"
+ { (yyval.opval) = NULL; }
break;
case 102:
-#line 668 "perly.y"
- { (yyval.ival) = '%'; }
+#line 685 "perly.y"
+ { parser->in_my = 0; (yyval.opval) = NULL; }
break;
case 103:
-#line 672 "perly.y"
- {
+#line 687 "perly.y"
+ { parser->in_my = 0; (yyval.opval) = (ps[0].val.opval); }
+
+ break;
+
+ case 104:
+#line 692 "perly.y"
+ { (yyval.ival) = '@'; }
+
+ break;
+
+ case 105:
+#line 694 "perly.y"
+ { (yyval.ival) = '%'; }
+
+ break;
+
+ case 106:
+#line 698 "perly.y"
+ {
I32 sigil = (ps[-2].val.ival);
OP *var = (ps[-1].val.opval);
OP *defexpr = (ps[0].val.opval);
@@ -835,27 +872,27 @@ case 2:
break;
- case 104:
-#line 691 "perly.y"
- { (yyval.opval) = NULL; }
+ case 107:
+#line 717 "perly.y"
+ { (yyval.opval) = NULL; }
break;
- case 105:
-#line 693 "perly.y"
- { (yyval.opval) = newOP(OP_NULL, 0); }
+ case 108:
+#line 719 "perly.y"
+ { (yyval.opval) = newOP(OP_NULL, 0); }
break;
- case 106:
-#line 695 "perly.y"
- { (yyval.opval) = (ps[0].val.opval); }
+ case 109:
+#line 721 "perly.y"
+ { (yyval.opval) = (ps[0].val.opval); }
break;
- case 107:
-#line 701 "perly.y"
- {
+ case 110:
+#line 727 "perly.y"
+ {
OP *var = (ps[-1].val.opval);
OP *defexpr = (ps[0].val.opval);
@@ -918,71 +955,71 @@ case 2:
break;
- case 108:
-#line 766 "perly.y"
- { parser->in_my = KEY_sigvar; (yyval.opval) = (ps[0].val.opval); }
+ case 111:
+#line 792 "perly.y"
+ { parser->in_my = KEY_sigvar; (yyval.opval) = (ps[0].val.opval); }
break;
- case 109:
-#line 768 "perly.y"
- { parser->in_my = KEY_sigvar; (yyval.opval) = (ps[0].val.opval); }
+ case 112:
+#line 794 "perly.y"
+ { parser->in_my = KEY_sigvar; (yyval.opval) = (ps[0].val.opval); }
break;
- case 110:
-#line 774 "perly.y"
- { (yyval.opval) = (ps[-1].val.opval); }
+ case 113:
+#line 800 "perly.y"
+ { (yyval.opval) = (ps[-1].val.opval); }
break;
- case 111:
-#line 776 "perly.y"
- {
+ case 114:
+#line 802 "perly.y"
+ {
(yyval.opval) = op_append_list(OP_LINESEQ, (ps[-2].val.opval), (ps[0].val.opval));
}
break;
- case 112:
-#line 780 "perly.y"
- { (yyval.opval) = (ps[0].val.opval); }
+ case 115:
+#line 806 "perly.y"
+ { (yyval.opval) = (ps[0].val.opval); }
break;
- case 113:
-#line 785 "perly.y"
- { (yyval.opval) = NULL; }
+ case 116:
+#line 811 "perly.y"
+ { (yyval.opval) = NULL; }
break;
- case 114:
-#line 787 "perly.y"
- { (yyval.opval) = (ps[0].val.opval); }
+ case 117:
+#line 813 "perly.y"
+ { (yyval.opval) = (ps[0].val.opval); }
break;
- case 115:
-#line 791 "perly.y"
- { (yyval.opval) = NULL; }
+ case 118:
+#line 817 "perly.y"
+ { (yyval.opval) = NULL; }
break;
- case 116:
-#line 793 "perly.y"
- { (yyval.opval) = (ps[0].val.opval); }
+ case 119:
+#line 819 "perly.y"
+ { (yyval.opval) = (ps[0].val.opval); }
break;
- case 117:
-#line 797 "perly.y"
- { (yyval.opval) = (ps[-1].val.opval); }
+ case 120:
+#line 823 "perly.y"
+ { (yyval.opval) = (ps[-1].val.opval); }
break;
- case 118:
-#line 800 "perly.y"
- {
+ case 121:
+#line 826 "perly.y"
+ {
ENTER;
SAVEIV(parser->sig_elems);
SAVEIV(parser->sig_optelems);
@@ -995,9 +1032,9 @@ case 2:
break;
- case 119:
-#line 811 "perly.y"
- {
+ case 122:
+#line 837 "perly.y"
+ {
OP *sigops = (ps[0].val.opval);
struct op_argcheck_aux *aux;
OP *check;
@@ -1054,21 +1091,21 @@ case 2:
break;
- case 120:
-#line 868 "perly.y"
- { (yyval.opval) = (ps[0].val.opval); }
+ case 123:
+#line 894 "perly.y"
+ { (yyval.opval) = (ps[0].val.opval); }
break;
- case 121:
-#line 869 "perly.y"
- { (yyval.opval) = NULL; }
+ case 124:
+#line 895 "perly.y"
+ { (yyval.opval) = NULL; }
break;
- case 122:
-#line 875 "perly.y"
- {
+ case 125:
+#line 901 "perly.y"
+ {
if (parser->copline > (line_t)(ps[-2].val.ival))
parser->copline = (line_t)(ps[-2].val.ival);
(yyval.opval) = block_end((ps[-3].val.ival), (ps[-1].val.opval));
@@ -1076,21 +1113,21 @@ case 2:
break;
- case 123:
-#line 885 "perly.y"
- { (yyval.opval) = (ps[0].val.opval); }
+ case 126:
+#line 911 "perly.y"
+ { (yyval.opval) = (ps[0].val.opval); }
break;
- case 124:
-#line 886 "perly.y"
- { (yyval.opval) = NULL; }
+ case 127:
+#line 912 "perly.y"
+ { (yyval.opval) = NULL; }
break;
- case 125:
-#line 890 "perly.y"
- {
+ case 128:
+#line 916 "perly.y"
+ {
if (parser->copline > (line_t)(ps[-2].val.ival))
parser->copline = (line_t)(ps[-2].val.ival);
(yyval.opval) = block_end((ps[-4].val.ival),
@@ -1099,52 +1136,52 @@ case 2:
break;
- case 126:
-#line 901 "perly.y"
- { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
+ case 129:
+#line 927 "perly.y"
+ { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
break;
- case 127:
-#line 903 "perly.y"
- { (yyval.opval) = newLOGOP((ps[-1].val.ival), 0, (ps[-2].val.opval), (ps[0].val.opval)); }
+ case 130:
+#line 929 "perly.y"
+ { (yyval.opval) = newLOGOP((ps[-1].val.ival), 0, (ps[-2].val.opval), (ps[0].val.opval)); }
break;
- case 129:
-#line 909 "perly.y"
- { (yyval.opval) = (ps[-1].val.opval); }
+ case 132:
+#line 935 "perly.y"
+ { (yyval.opval) = (ps[-1].val.opval); }
break;
- case 130:
-#line 911 "perly.y"
- {
+ case 133:
+#line 937 "perly.y"
+ {
OP* term = (ps[0].val.opval);
(yyval.opval) = op_append_elem(OP_LIST, (ps[-2].val.opval), term);
}
break;
- case 132:
-#line 920 "perly.y"
- { (yyval.opval) = op_convert_list((ps[-2].val.ival), OPf_STACKED,
+ case 135:
+#line 946 "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)) );
}
break;
- case 133:
-#line 924 "perly.y"
- { (yyval.opval) = op_convert_list((ps[-4].val.ival), OPf_STACKED,
+ case 136:
+#line 950 "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)) );
}
break;
- case 134:
-#line 928 "perly.y"
- { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
+ case 137:
+#line 954 "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)),
newMETHOP(OP_METHOD, 0, (ps[-3].val.opval))));
@@ -1152,18 +1189,18 @@ case 2:
break;
- case 135:
-#line 934 "perly.y"
- { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
+ case 138:
+#line 960 "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))));
}
break;
- case 136:
-#line 939 "perly.y"
- { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
+ case 139:
+#line 965 "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)),
newMETHOP(OP_METHOD, 0, (ps[-2].val.opval))));
@@ -1171,9 +1208,9 @@ case 2:
break;
- case 137:
-#line 945 "perly.y"
- { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
+ case 140:
+#line 971 "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)),
newMETHOP(OP_METHOD, 0, (ps[-4].val.opval))));
@@ -1181,97 +1218,97 @@ case 2:
break;
- case 138:
-#line 951 "perly.y"
- { (yyval.opval) = op_convert_list((ps[-1].val.ival), 0, (ps[0].val.opval)); }
+ case 141:
+#line 977 "perly.y"
+ { (yyval.opval) = op_convert_list((ps[-1].val.ival), 0, (ps[0].val.opval)); }
break;
- case 139:
-#line 953 "perly.y"
- { (yyval.opval) = op_convert_list((ps[-3].val.ival), 0, (ps[-1].val.opval)); }
+ case 142:
+#line 979 "perly.y"
+ { (yyval.opval) = op_convert_list((ps[-3].val.ival), 0, (ps[-1].val.opval)); }
break;
- case 140:
-#line 955 "perly.y"
- { (yyval.opval) = op_convert_list((ps[-3].val.ival), 0, (ps[-1].val.opval)); }
+ case 143:
+#line 981 "perly.y"
+ { (yyval.opval) = op_convert_list((ps[-3].val.ival), 0, (ps[-1].val.opval)); }
break;
- case 141:
-#line 957 "perly.y"
- { SvREFCNT_inc_simple_void(PL_compcv);
+ case 144:
+#line 983 "perly.y"
+ { SvREFCNT_inc_simple_void(PL_compcv);
(yyval.opval) = newANONATTRSUB((ps[-1].val.ival), 0, NULL, (ps[0].val.opval)); }
break;
- case 142:
-#line 960 "perly.y"
- { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
+ case 145:
+#line 986 "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)));
}
break;
- case 145:
-#line 975 "perly.y"
- { (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[-4].val.opval), scalar((ps[-2].val.opval))); }
+ case 148:
+#line 1001 "perly.y"
+ { (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[-4].val.opval), scalar((ps[-2].val.opval))); }
break;
- case 146:
-#line 977 "perly.y"
- { (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((ps[-3].val.opval)), scalar((ps[-1].val.opval)));
+ case 149:
+#line 1003 "perly.y"
+ { (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((ps[-3].val.opval)), scalar((ps[-1].val.opval)));
}
break;
- case 147:
-#line 980 "perly.y"
- { (yyval.opval) = newBINOP(OP_AELEM, 0,
+ case 150:
+#line 1006 "perly.y"
+ { (yyval.opval) = newBINOP(OP_AELEM, 0,
ref(newAVREF((ps[-4].val.opval)),OP_RV2AV),
scalar((ps[-1].val.opval)));
}
break;
- case 148:
-#line 985 "perly.y"
- { (yyval.opval) = newBINOP(OP_AELEM, 0,
+ case 151:
+#line 1011 "perly.y"
+ { (yyval.opval) = newBINOP(OP_AELEM, 0,
ref(newAVREF((ps[-3].val.opval)),OP_RV2AV),
scalar((ps[-1].val.opval)));
}
break;
- case 149:
-#line 990 "perly.y"
- { (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((ps[-4].val.opval)), jmaybe((ps[-2].val.opval)));
+ case 152:
+#line 1016 "perly.y"
+ { (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((ps[-4].val.opval)), jmaybe((ps[-2].val.opval)));
}
break;
- case 150:
-#line 993 "perly.y"
- { (yyval.opval) = newBINOP(OP_HELEM, 0,
+ case 153:
+#line 1019 "perly.y"
+ { (yyval.opval) = newBINOP(OP_HELEM, 0,
ref(newHVREF((ps[-5].val.opval)),OP_RV2HV),
jmaybe((ps[-2].val.opval))); }
break;
- case 151:
-#line 997 "perly.y"
- { (yyval.opval) = newBINOP(OP_HELEM, 0,
+ case 154:
+#line 1023 "perly.y"
+ { (yyval.opval) = newBINOP(OP_HELEM, 0,
ref(newHVREF((ps[-4].val.opval)),OP_RV2HV),
jmaybe((ps[-2].val.opval))); }
break;
- case 152:
-#line 1001 "perly.y"
- { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
+ case 155:
+#line 1027 "perly.y"
+ { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
newCVREF(0, scalar((ps[-3].val.opval))));
if (parser->expect == XBLOCK)
parser->expect = XOPERATOR;
@@ -1279,9 +1316,9 @@ case 2:
break;
- case 153:
-#line 1007 "perly.y"
- { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
+ case 156:
+#line 1033 "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)))));
if (parser->expect == XBLOCK)
@@ -1290,9 +1327,9 @@ case 2:
break;
- case 154:
-#line 1015 "perly.y"
- { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
+ case 157:
+#line 1041 "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)))));
if (parser->expect == XBLOCK)
@@ -1301,9 +1338,9 @@ case 2:
break;
- case 155:
-#line 1022 "perly.y"
- { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
+ case 158:
+#line 1048 "perly.y"
+ { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
newCVREF(0, scalar((ps[-2].val.opval))));
if (parser->expect == XBLOCK)
parser->expect = XOPERATOR;
@@ -1311,387 +1348,387 @@ case 2:
break;
- case 156:
-#line 1028 "perly.y"
- { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-4].val.opval)); }
-
- break;
-
- case 157:
-#line 1030 "perly.y"
- { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-3].val.opval)); }
-
- break;
-
- case 158:
-#line 1032 "perly.y"
- { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), NULL); }
-
- break;
-
case 159:
-#line 1037 "perly.y"
- { (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[-2].val.opval), (ps[-1].val.ival), (ps[0].val.opval)); }
+#line 1054 "perly.y"
+ { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-4].val.opval)); }
break;
case 160:
-#line 1039 "perly.y"
- { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
+#line 1056 "perly.y"
+ { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-3].val.opval)); }
break;
case 161:
-#line 1041 "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)));
- }
+#line 1058 "perly.y"
+ { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), NULL); }
break;
case 162:
-#line 1046 "perly.y"
- { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
+#line 1063 "perly.y"
+ { (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[-2].val.opval), (ps[-1].val.ival), (ps[0].val.opval)); }
break;
case 163:
-#line 1048 "perly.y"
- { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
+#line 1065 "perly.y"
+ { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
break;
case 164:
-#line 1050 "perly.y"
- { (yyval.opval) = (ps[0].val.opval); }
+#line 1067 "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)));
+ }
break;
case 165:
-#line 1052 "perly.y"
- { (yyval.opval) = (ps[0].val.opval); }
+#line 1072 "perly.y"
+ { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
break;
case 166:
-#line 1054 "perly.y"
- { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
+#line 1074 "perly.y"
+ { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
break;
case 167:
-#line 1056 "perly.y"
- { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
+#line 1076 "perly.y"
+ { (yyval.opval) = (ps[0].val.opval); }
break;
case 168:
-#line 1058 "perly.y"
- { (yyval.opval) = newRANGE((ps[-1].val.ival), scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
+#line 1078 "perly.y"
+ { (yyval.opval) = (ps[0].val.opval); }
break;
case 169:
-#line 1060 "perly.y"
- { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
+#line 1080 "perly.y"
+ { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
break;
case 170:
-#line 1062 "perly.y"
- { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
+#line 1082 "perly.y"
+ { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
break;
case 171:
-#line 1064 "perly.y"
- { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
+#line 1084 "perly.y"
+ { (yyval.opval) = newRANGE((ps[-1].val.ival), scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
break;
case 172:
-#line 1066 "perly.y"
- { (yyval.opval) = bind_match((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
+#line 1086 "perly.y"
+ { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
break;
case 173:
-#line 1070 "perly.y"
- { (yyval.opval) = cmpchain_finish((ps[0].val.opval)); }
+#line 1088 "perly.y"
+ { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
break;
case 174:
-#line 1072 "perly.y"
- { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
+#line 1090 "perly.y"
+ { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
break;
case 175:
-#line 1074 "perly.y"
- { yyerror("syntax error"); YYERROR; }
+#line 1092 "perly.y"
+ { (yyval.opval) = bind_match((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
break;
case 176:
-#line 1076 "perly.y"
- { yyerror("syntax error"); YYERROR; }
+#line 1096 "perly.y"
+ { (yyval.opval) = cmpchain_finish((ps[0].val.opval)); }
break;
case 177:
-#line 1080 "perly.y"
- { (yyval.opval) = cmpchain_start((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
+#line 1098 "perly.y"
+ { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
break;
case 178:
-#line 1082 "perly.y"
- { (yyval.opval) = cmpchain_extend((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
+#line 1100 "perly.y"
+ { yyerror("syntax error"); YYERROR; }
break;
case 179:
-#line 1086 "perly.y"
- { (yyval.opval) = cmpchain_finish((ps[0].val.opval)); }
+#line 1102 "perly.y"
+ { yyerror("syntax error"); YYERROR; }
break;
case 180:
-#line 1088 "perly.y"
- { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
+#line 1106 "perly.y"
+ { (yyval.opval) = cmpchain_start((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
break;
case 181:
-#line 1090 "perly.y"
- { yyerror("syntax error"); YYERROR; }
+#line 1108 "perly.y"
+ { (yyval.opval) = cmpchain_extend((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
break;
case 182:
-#line 1092 "perly.y"
- { yyerror("syntax error"); YYERROR; }
+#line 1112 "perly.y"
+ { (yyval.opval) = cmpchain_finish((ps[0].val.opval)); }
break;
case 183:
-#line 1096 "perly.y"
- { (yyval.opval) = cmpchain_start((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
+#line 1114 "perly.y"
+ { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
break;
case 184:
-#line 1098 "perly.y"
- { (yyval.opval) = cmpchain_extend((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
+#line 1116 "perly.y"
+ { yyerror("syntax error"); YYERROR; }
break;
case 185:
-#line 1103 "perly.y"
- { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[0].val.opval))); }
+#line 1118 "perly.y"
+ { yyerror("syntax error"); YYERROR; }
break;
case 186:
-#line 1105 "perly.y"
- { (yyval.opval) = (ps[0].val.opval); }
+#line 1122 "perly.y"
+ { (yyval.opval) = cmpchain_start((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
break;
case 187:
-#line 1108 "perly.y"
- { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); }
+#line 1124 "perly.y"
+ { (yyval.opval) = cmpchain_extend((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
break;
case 188:
-#line 1110 "perly.y"
- { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, scalar((ps[0].val.opval))); }
+#line 1129 "perly.y"
+ { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[0].val.opval))); }
break;
case 189:
-#line 1112 "perly.y"
- { (yyval.opval) = newUNOP(OP_POSTINC, 0,
- op_lvalue(scalar((ps[-1].val.opval)), OP_POSTINC)); }
+#line 1131 "perly.y"
+ { (yyval.opval) = (ps[0].val.opval); }
break;
case 190:
-#line 1115 "perly.y"
- { (yyval.opval) = newUNOP(OP_POSTDEC, 0,
- op_lvalue(scalar((ps[-1].val.opval)), OP_POSTDEC));}
+#line 1134 "perly.y"
+ { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); }
break;
case 191:
-#line 1118 "perly.y"
- { (yyval.opval) = op_convert_list(OP_JOIN, 0,
- op_append_elem(
- OP_LIST,
- newSVREF(scalar(
- newSVOP(OP_CONST,0,
- newSVpvs("\""))
- )),
- (ps[-1].val.opval)
- ));
- }
+#line 1136 "perly.y"
+ { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, scalar((ps[0].val.opval))); }
break;
case 192:
-#line 1129 "perly.y"
- { (yyval.opval) = newUNOP(OP_PREINC, 0,
- op_lvalue(scalar((ps[0].val.opval)), OP_PREINC)); }
+#line 1138 "perly.y"
+ { (yyval.opval) = newUNOP(OP_POSTINC, 0,
+ op_lvalue(scalar((ps[-1].val.opval)), OP_POSTINC)); }
break;
case 193:
-#line 1132 "perly.y"
- { (yyval.opval) = newUNOP(OP_PREDEC, 0,
- op_lvalue(scalar((ps[0].val.opval)), OP_PREDEC)); }
+#line 1141 "perly.y"
+ { (yyval.opval) = newUNOP(OP_POSTDEC, 0,
+ op_lvalue(scalar((ps[-1].val.opval)), OP_POSTDEC));}
break;
case 194:
-#line 1139 "perly.y"
- { (yyval.opval) = newANONLIST((ps[-1].val.opval)); }
+#line 1144 "perly.y"
+ { (yyval.opval) = op_convert_list(OP_JOIN, 0,
+ op_append_elem(
+ OP_LIST,
+ newSVREF(scalar(
+ newSVOP(OP_CONST,0,
+ newSVpvs("\""))
+ )),
+ (ps[-1].val.opval)
+ ));
+ }
break;
case 195:
-#line 1141 "perly.y"
- { (yyval.opval) = newANONLIST(NULL);}
+#line 1155 "perly.y"
+ { (yyval.opval) = newUNOP(OP_PREINC, 0,
+ op_lvalue(scalar((ps[0].val.opval)), OP_PREINC)); }
break;
case 196:
-#line 1143 "perly.y"
- { (yyval.opval) = newANONHASH((ps[-2].val.opval)); }
+#line 1158 "perly.y"
+ { (yyval.opval) = newUNOP(OP_PREDEC, 0,
+ op_lvalue(scalar((ps[0].val.opval)), OP_PREDEC)); }
break;
case 197:
-#line 1145 "perly.y"
- { (yyval.opval) = newANONHASH(NULL); }
+#line 1165 "perly.y"
+ { (yyval.opval) = newANONLIST((ps[-1].val.opval)); }
break;
case 198:
-#line 1147 "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)); }
+#line 1167 "perly.y"
+ { (yyval.opval) = newANONLIST(NULL);}
break;
case 199:
-#line 1150 "perly.y"
- { SvREFCNT_inc_simple_void(PL_compcv);
- (yyval.opval) = newANONATTRSUB((ps[-2].val.ival), NULL, (ps[-1].val.opval), (ps[0].val.opval)); }
+#line 1169 "perly.y"
+ { (yyval.opval) = newANONHASH((ps[-2].val.opval)); }
break;
case 200:
-#line 1156 "perly.y"
- { (yyval.opval) = dofile((ps[0].val.opval), (ps[-1].val.ival));}
+#line 1171 "perly.y"
+ { (yyval.opval) = newANONHASH(NULL); }
break;
case 201:
-#line 1158 "perly.y"
- { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, op_scope((ps[0].val.opval)));}
+#line 1173 "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 206:
-#line 1166 "perly.y"
- { (yyval.opval) = newCONDOP(0, (ps[-4].val.opval), (ps[-2].val.opval), (ps[0].val.opval)); }
+ case 202:
+#line 1176 "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 207:
-#line 1168 "perly.y"
- { (yyval.opval) = newUNOP(OP_REFGEN, 0, (ps[0].val.opval)); }
+ case 203:
+#line 1182 "perly.y"
+ { (yyval.opval) = dofile((ps[0].val.opval), (ps[-1].val.ival));}
break;
- case 208:
-#line 1170 "perly.y"
- { (yyval.opval) = newUNOP(OP_REFGEN, 0, localize((ps[0].val.opval),1)); }
+ case 204:
+#line 1184 "perly.y"
+ { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, op_scope((ps[0].val.opval)));}
break;
case 209:
-#line 1172 "perly.y"
- { (yyval.opval) = (ps[0].val.opval); }
+#line 1192 "perly.y"
+ { (yyval.opval) = newCONDOP(0, (ps[-4].val.opval), (ps[-2].val.opval), (ps[0].val.opval)); }
break;
case 210:
-#line 1174 "perly.y"
- { (yyval.opval) = localize((ps[0].val.opval),0); }
+#line 1194 "perly.y"
+ { (yyval.opval) = newUNOP(OP_REFGEN, 0, (ps[0].val.opval)); }
break;
case 211:
-#line 1176 "perly.y"
- { (yyval.opval) = sawparens((ps[-1].val.opval)); }
+#line 1196 "perly.y"
+ { (yyval.opval) = newUNOP(OP_REFGEN, 0, localize((ps[0].val.opval),1)); }
break;
case 212:
-#line 1178 "perly.y"
- { (yyval.opval) = (ps[0].val.opval); }
+#line 1198 "perly.y"
+ { (yyval.opval) = (ps[0].val.opval); }
break;
case 213:
-#line 1180 "perly.y"
- { (yyval.opval) = sawparens(newNULLLIST()); }
+#line 1200 "perly.y"
+ { (yyval.opval) = localize((ps[0].val.opval),0); }
break;
case 214:
-#line 1182 "perly.y"
- { (yyval.opval) = (ps[0].val.opval); }
+#line 1202 "perly.y"
+ { (yyval.opval) = sawparens((ps[-1].val.opval)); }
break;
case 215:
-#line 1184 "perly.y"
- { (yyval.opval) = (ps[0].val.opval); }
+#line 1204 "perly.y"
+ { (yyval.opval) = (ps[0].val.opval); }
break;
case 216:
-#line 1186 "perly.y"
- { (yyval.opval) = (ps[0].val.opval); }
+#line 1206 "perly.y"
+ { (yyval.opval) = sawparens(newNULLLIST()); }
break;
case 217:
-#line 1188 "perly.y"
- { (yyval.opval) = (ps[0].val.opval); }
+#line 1208 "perly.y"
+ { (yyval.opval) = (ps[0].val.opval); }
break;
case 218:
-#line 1190 "perly.y"
- { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[0].val.opval), OP_AV2ARYLEN));}
+#line 1210 "perly.y"
+ { (yyval.opval) = (ps[0].val.opval); }
break;
case 219:
-#line 1192 "perly.y"
- { (yyval.opval) = (ps[0].val.opval); }
+#line 1212 "perly.y"
+ { (yyval.opval) = (ps[0].val.opval); }
break;
case 220:
-#line 1194 "perly.y"
- { (yyval.opval) = op_prepend_elem(OP_ASLICE,
+#line 1214 "perly.y"
+ { (yyval.opval) = (ps[0].val.opval); }
+
+ break;
+
+ case 221:
+#line 1216 "perly.y"
+ { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[0].val.opval), OP_AV2ARYLEN));}
+
+ break;
+
+ case 222:
+#line 1218 "perly.y"
+ { (yyval.opval) = (ps[0].val.opval); }
+
+ break;
+
+ case 223:
+#line 1220 "perly.y"
+ { (yyval.opval) = op_prepend_elem(OP_ASLICE,
newOP(OP_PUSHMARK, 0),
newLISTOP(OP_ASLICE, 0,
list((ps[-1].val.opval)),
@@ -1703,9 +1740,9 @@ case 2:
break;
- case 221:
-#line 1204 "perly.y"
- { (yyval.opval) = op_prepend_elem(OP_KVASLICE,
+ case 224:
+#line 1230 "perly.y"
+ { (yyval.opval) = op_prepend_elem(OP_KVASLICE,
newOP(OP_PUSHMARK, 0),
newLISTOP(OP_KVASLICE, 0,
list((ps[-1].val.opval)),
@@ -1717,9 +1754,9 @@ case 2:
break;
- case 222:
-#line 1214 "perly.y"
- { (yyval.opval) = op_prepend_elem(OP_HSLICE,
+ case 225:
+#line 1240 "perly.y"
+ { (yyval.opval) = op_prepend_elem(OP_HSLICE,
newOP(OP_PUSHMARK, 0),
newLISTOP(OP_HSLICE, 0,
list((ps[-2].val.opval)),
@@ -1731,9 +1768,9 @@ case 2:
break;
- case 223:
-#line 1224 "perly.y"
- { (yyval.opval) = op_prepend_elem(OP_KVHSLICE,
+ case 226:
+#line 1250 "perly.y"
+ { (yyval.opval) = op_prepend_elem(OP_KVHSLICE,
newOP(OP_PUSHMARK, 0),
newLISTOP(OP_KVHSLICE, 0,
list((ps[-2].val.opval)),
@@ -1745,378 +1782,377 @@ case 2:
break;
- case 224:
-#line 1234 "perly.y"
- { (yyval.opval) = (ps[0].val.opval); }
+ case 227:
+#line 1260 "perly.y"
+ { (yyval.opval) = (ps[0].val.opval); }
break;
- case 225:
-#line 1236 "perly.y"
- { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[0].val.opval))); }
+ case 228:
+#line 1262 "perly.y"
+ { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[0].val.opval))); }
break;
- case 226:
-#line 1238 "perly.y"
- { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[-2].val.opval)));
+ case 229:
+#line 1264 "perly.y"
+ { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[-2].val.opval)));
}
break;
- case 227:
-#line 1241 "perly.y"
- {
+ case 230:
+#line 1267 "perly.y"
+ {
(yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST, (ps[-1].val.opval), scalar((ps[-3].val.opval))));
}
break;
- case 228:
-#line 1246 "perly.y"
- { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
+ case 231:
+#line 1272 "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 229:
-#line 1250 "perly.y"
- { (yyval.opval) = newSVREF((ps[-3].val.opval)); }
-
- break;
-
- case 230:
-#line 1252 "perly.y"
- { (yyval.opval) = newAVREF((ps[-3].val.opval)); }
-
- break;
-
- case 231:
-#line 1254 "perly.y"
- { (yyval.opval) = newHVREF((ps[-3].val.opval)); }
-
- break;
-
case 232:
-#line 1256 "perly.y"
- { (yyval.opval) = newUNOP(OP_ENTERSUB, 0,
- scalar(newCVREF((ps[-1].val.ival),(ps[-3].val.opval)))); }
+#line 1276 "perly.y"
+ { (yyval.opval) = newSVREF((ps[-3].val.opval)); }
break;
case 233:
-#line 1259 "perly.y"
- { (yyval.opval) = newGVREF(0,(ps[-3].val.opval)); }
+#line 1278 "perly.y"
+ { (yyval.opval) = newAVREF((ps[-3].val.opval)); }
break;
case 234:
-#line 1261 "perly.y"
- { (yyval.opval) = newOP((ps[0].val.ival), OPf_SPECIAL);
- PL_hints |= HINT_BLOCK_SCOPE; }
+#line 1280 "perly.y"
+ { (yyval.opval) = newHVREF((ps[-3].val.opval)); }
break;
case 235:
-#line 1264 "perly.y"
- { (yyval.opval) = newLOOPEX((ps[-1].val.ival),(ps[0].val.opval)); }
+#line 1282 "perly.y"
+ { (yyval.opval) = newUNOP(OP_ENTERSUB, 0,
+ scalar(newCVREF((ps[-1].val.ival),(ps[-3].val.opval)))); }
break;
case 236:
-#line 1266 "perly.y"
- { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); }
+#line 1285 "perly.y"
+ { (yyval.opval) = newGVREF(0,(ps[-3].val.opval)); }
break;
case 237:
-#line 1268 "perly.y"
- { (yyval.opval) = newOP((ps[0].val.ival), 0); }
+#line 1287 "perly.y"
+ { (yyval.opval) = newOP((ps[0].val.ival), OPf_SPECIAL);
+ PL_hints |= HINT_BLOCK_SCOPE; }
break;
case 238:
-#line 1270 "perly.y"
- { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, (ps[0].val.opval)); }
+#line 1290 "perly.y"
+ { (yyval.opval) = newLOOPEX((ps[-1].val.ival),(ps[0].val.opval)); }
break;
case 239:
-#line 1272 "perly.y"
- { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, (ps[0].val.opval)); }
+#line 1292 "perly.y"
+ { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); }
break;
case 240:
-#line 1274 "perly.y"
- { (yyval.opval) = newOP(OP_REQUIRE, (ps[0].val.ival) ? OPf_SPECIAL : 0); }
+#line 1294 "perly.y"
+ { (yyval.opval) = newOP((ps[0].val.ival), 0); }
break;
case 241:
-#line 1276 "perly.y"
- { (yyval.opval) = newUNOP(OP_REQUIRE, (ps[-1].val.ival) ? OPf_SPECIAL : 0, (ps[0].val.opval)); }
+#line 1296 "perly.y"
+ { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, (ps[0].val.opval)); }
break;
case 242:
-#line 1278 "perly.y"
- { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); }
+#line 1298 "perly.y"
+ { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, (ps[0].val.opval)); }
break;
case 243:
-#line 1280 "perly.y"
- { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
- op_append_elem(OP_LIST, (ps[0].val.opval), scalar((ps[-1].val.opval)))); }
+#line 1300 "perly.y"
+ { (yyval.opval) = newOP(OP_REQUIRE, (ps[0].val.ival) ? OPf_SPECIAL : 0); }
break;
case 244:
-#line 1283 "perly.y"
- { (yyval.opval) = newOP((ps[0].val.ival), 0); }
+#line 1302 "perly.y"
+ { (yyval.opval) = newUNOP(OP_REQUIRE, (ps[-1].val.ival) ? OPf_SPECIAL : 0, (ps[0].val.opval)); }
break;
case 245:
-#line 1285 "perly.y"
- { (yyval.opval) = newOP((ps[-2].val.ival), 0);}
+#line 1304 "perly.y"
+ { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); }
break;
case 246:
-#line 1287 "perly.y"
- { (yyval.opval) = (ps[0].val.opval); }
+#line 1306 "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 247:
-#line 1289 "perly.y"
- { (yyval.opval) = (ps[-2].val.opval); }
+#line 1309 "perly.y"
+ { (yyval.opval) = newOP((ps[0].val.ival), 0); }
break;
case 248:
-#line 1291 "perly.y"
- { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); }
+#line 1311 "perly.y"
+ { (yyval.opval) = newOP((ps[-2].val.ival), 0);}
break;
case 249:
-#line 1293 "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); }
+#line 1313 "perly.y"
+ { (yyval.opval) = (ps[0].val.opval); }
break;
case 250:
-#line 1297 "perly.y"
- { (yyval.opval) = newUNOP((ps[-3].val.ival), 0, (ps[-1].val.opval)); }
+#line 1315 "perly.y"
+ { (yyval.opval) = (ps[-2].val.opval); }
break;
case 251:
-#line 1299 "perly.y"
- {
- if ( (ps[0].val.opval)->op_type != OP_TRANS
- && (ps[0].val.opval)->op_type != OP_TRANSR
- && (((PMOP*)(ps[0].val.opval))->op_pmflags & PMf_HAS_CV))
- {
- (yyval.ival) = start_subparse(FALSE, CVf_ANON);
- SAVEFREESV(PL_compcv);
- } else
- (yyval.ival) = 0;
- }
+#line 1317 "perly.y"
+ { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); }
break;
case 252:
-#line 1310 "perly.y"
- { (yyval.opval) = pmruntime((ps[-5].val.opval), (ps[-2].val.opval), (ps[-1].val.opval), 1, (ps[-4].val.ival)); }
+#line 1319 "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 256:
-#line 1318 "perly.y"
- { (yyval.opval) = my_attrs((ps[-1].val.opval),(ps[0].val.opval)); }
+ case 253:
+#line 1323 "perly.y"
+ { (yyval.opval) = newUNOP((ps[-3].val.ival), 0, (ps[-1].val.opval)); }
break;
- case 257:
-#line 1320 "perly.y"
- { (yyval.opval) = localize((ps[0].val.opval),1); }
+ case 254:
+#line 1325 "perly.y"
+ {
+ if ( (ps[0].val.opval)->op_type != OP_TRANS
+ && (ps[0].val.opval)->op_type != OP_TRANSR
+ && (((PMOP*)(ps[0].val.opval))->op_pmflags & PMf_HAS_CV))
+ {
+ (yyval.ival) = start_subparse(FALSE, CVf_ANON);
+ SAVEFREESV(PL_compcv);
+ } else
+ (yyval.ival) = 0;
+ }
break;
- case 258:
-#line 1322 "perly.y"
- { (yyval.opval) = newUNOP(OP_REFGEN, 0, my_attrs((ps[-1].val.opval),(ps[0].val.opval))); }
+ case 255:
+#line 1336 "perly.y"
+ { (yyval.opval) = pmruntime((ps[-5].val.opval), (ps[-2].val.opval), (ps[-1].val.opval), 1, (ps[-4].val.ival)); }
break;
case 259:
-#line 1327 "perly.y"
- { (yyval.opval) = sawparens((ps[-1].val.opval)); }
+#line 1344 "perly.y"
+ { (yyval.opval) = my_attrs((ps[-1].val.opval),(ps[0].val.opval)); }
break;
case 260:
-#line 1329 "perly.y"
- { (yyval.opval) = sawparens(newNULLLIST()); }
+#line 1346 "perly.y"
+ { (yyval.opval) = localize((ps[0].val.opval),1); }
break;
case 261:
-#line 1332 "perly.y"
- { (yyval.opval) = (ps[0].val.opval); }
+#line 1348 "perly.y"
+ { (yyval.opval) = newUNOP(OP_REFGEN, 0, my_attrs((ps[-1].val.opval),(ps[0].val.opval))); }
break;
case 262:
-#line 1334 "perly.y"
- { (yyval.opval) = (ps[0].val.opval); }
+#line 1353 "perly.y"
+ { (yyval.opval) = sawparens((ps[-1].val.opval)); }
break;
case 263:
-#line 1336 "perly.y"
- { (yyval.opval) = (ps[0].val.opval); }
+#line 1355 "perly.y"
+ { (yyval.opval) = sawparens(newNULLLIST()); }
break;
case 264:
-#line 1341 "perly.y"
- { (yyval.opval) = NULL; }
+#line 1358 "perly.y"
+ { (yyval.opval) = (ps[0].val.opval); }
break;
case 265:
-#line 1343 "perly.y"
- { (yyval.opval) = (ps[0].val.opval); }
+#line 1360 "perly.y"
+ { (yyval.opval) = (ps[0].val.opval); }
break;
case 266:
-#line 1347 "perly.y"
- { (yyval.opval) = NULL; }
+#line 1362 "perly.y"
+ { (yyval.opval) = (ps[0].val.opval); }
break;
case 267:
-#line 1349 "perly.y"
- { (yyval.opval) = (ps[0].val.opval); }
+#line 1367 "perly.y"
+ { (yyval.opval) = NULL; }
break;
case 268:
-#line 1353 "perly.y"
- { (yyval.opval) = NULL; }
+#line 1369 "perly.y"
+ { (yyval.opval) = (ps[0].val.opval); }
break;
case 269:
-#line 1355 "perly.y"
- { (yyval.opval) = (ps[0].val.opval); }
+#line 1373 "perly.y"
+ { (yyval.opval) = NULL; }
break;
case 270:
-#line 1361 "perly.y"
- { parser->in_my = 0; (yyval.opval) = my((ps[0].val.opval)); }
+#line 1375 "perly.y"
+ { (yyval.opval) = (ps[0].val.opval); }
break;
- case 278:
-#line 1378 "perly.y"
- { (yyval.opval) = newCVREF((ps[-1].val.ival),(ps[0].val.opval)); }
+ case 271:
+#line 1379 "perly.y"
+ { (yyval.opval) = NULL; }
break;
- case 279:
-#line 1382 "perly.y"
- { (yyval.opval) = newSVREF((ps[0].val.opval)); }
+ case 272:
+#line 1381 "perly.y"
+ { (yyval.opval) = (ps[0].val.opval); }
break;
- case 280:
-#line 1386 "perly.y"
- { (yyval.opval) = newAVREF((ps[0].val.opval));
- if ((yyval.opval)) (yyval.opval)->op_private |= (ps[-1].val.ival);
- }
+ case 273:
+#line 1387 "perly.y"
+ { parser->in_my = 0; (yyval.opval) = my((ps[0].val.opval)); }
break;
case 281:
-#line 1392 "perly.y"
- { (yyval.opval) = newHVREF((ps[0].val.opval));
- if ((yyval.opval)) (yyval.opval)->op_private |= (ps[-1].val.ival);
- }
+#line 1404 "perly.y"
+ { (yyval.opval) = newCVREF((ps[-1].val.ival),(ps[0].val.opval)); }
break;
case 282:
-#line 1398 "perly.y"
- { (yyval.opval) = newAVREF((ps[0].val.opval)); }
+#line 1408 "perly.y"
+ { (yyval.opval) = newSVREF((ps[0].val.opval)); }
break;
case 283:
-#line 1400 "perly.y"
- { (yyval.opval) = newAVREF((ps[-3].val.opval)); }
+#line 1412 "perly.y"
+ { (yyval.opval) = newAVREF((ps[0].val.opval));
+ if ((yyval.opval)) (yyval.opval)->op_private |= (ps[-1].val.ival);
+ }
break;
case 284:
-#line 1404 "perly.y"
- { (yyval.opval) = newGVREF(0,(ps[0].val.opval)); }
+#line 1418 "perly.y"
+ { (yyval.opval) = newHVREF((ps[0].val.opval));
+ if ((yyval.opval)) (yyval.opval)->op_private |= (ps[-1].val.ival);
+ }
break;
- case 286:
-#line 1409 "perly.y"
- { (yyval.opval) = newAVREF((ps[-2].val.opval)); }
+ case 285:
+#line 1424 "perly.y"
+ { (yyval.opval) = newAVREF((ps[0].val.opval)); }
break;
- case 288:
-#line 1414 "perly.y"
- { (yyval.opval) = newHVREF((ps[-2].val.opval)); }
+ case 286:
+#line 1426 "perly.y"
+ { (yyval.opval) = newAVREF((ps[-3].val.opval)); }
break;
- case 290:
-#line 1419 "perly.y"
- { (yyval.opval) = newGVREF(0,(ps[-2].val.opval)); }
+ case 287:
+#line 1430 "perly.y"
+ { (yyval.opval) = newGVREF(0,(ps[0].val.opval)); }
break;
- case 291:
-#line 1424 "perly.y"
- { (yyval.opval) = scalar((ps[0].val.opval)); }
+ case 289:
+#line 1435 "perly.y"
+ { (yyval.opval) = newAVREF((ps[-2].val.opval)); }
break;
- case 292:
-#line 1426 "perly.y"
- { (yyval.opval) = scalar((ps[0].val.opval)); }
+ case 291:
+#line 1440 "perly.y"
+ { (yyval.opval) = newHVREF((ps[-2].val.opval)); }
break;
case 293:
-#line 1428 "perly.y"
- { (yyval.opval) = op_scope((ps[0].val.opval)); }
+#line 1445 "perly.y"
+ { (yyval.opval) = newGVREF(0,(ps[-2].val.opval)); }
break;
case 294:
-#line 1431 "perly.y"
- { (yyval.opval) = (ps[0].val.opval); }
+#line 1450 "perly.y"
+ { (yyval.opval) = scalar((ps[0].val.opval)); }
break;
+ case 295:
+#line 1452 "perly.y"
+ { (yyval.opval) = scalar((ps[0].val.opval)); }
+
+ break;
+
+ case 296:
+#line 1454 "perly.y"
+ { (yyval.opval) = op_scope((ps[0].val.opval)); }
+
+ break;
+
+ case 297:
+#line 1457 "perly.y"
+ { (yyval.opval) = (ps[0].val.opval); }
+
+ break;
@@ -2124,6 +2160,6 @@ case 2:
/* Generated from:
- * 9a5909b0af5f61f96907e330008f3cdc9dadcab1417c5bcb188cb3b9f6593c01 perly.y
+ * 672539c523be1568df09c599b38a828c80473c60e1fddd63764d66f74e4e7b11 perly.y
* acf1cbfd2545faeaaa58b1cf0cf9d7f98b5be0752eb7a54528ef904a9e2e1ca7 regen_perly.pl
* ex: set ro: */
diff --git a/perly.h b/perly.h
index a9286314a9..9b09e2c535 100644
--- a/perly.h
+++ b/perly.h
@@ -4,14 +4,14 @@
Any changes made here will be lost!
*/
-#define PERL_BISON_VERSION 30005
+#define PERL_BISON_VERSION 30003
#ifdef PERL_CORE
-/* A Bison parser, made by GNU Bison 3.5.1. */
+/* A Bison parser, made by GNU Bison 3.3. */
/* Bison interface for Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
+ Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,
Inc.
This program is free software: you can redistribute it and/or modify
@@ -111,59 +111,61 @@ extern int yydebug;
GIVEN = 310,
WHEN = 311,
DEFAULT = 312,
- LOOPEX = 313,
- DOTDOT = 314,
- YADAYADA = 315,
- FUNC0 = 316,
- FUNC1 = 317,
- FUNC = 318,
- UNIOP = 319,
- LSTOP = 320,
- MULOP = 321,
- ADDOP = 322,
- DOLSHARP = 323,
- DO = 324,
- HASHBRACK = 325,
- NOAMP = 326,
- LOCAL = 327,
- MY = 328,
- REQUIRE = 329,
- COLONATTR = 330,
- FORMLBRACK = 331,
- FORMRBRACK = 332,
- SUBLEXSTART = 333,
- SUBLEXEND = 334,
- PREC_LOW = 335,
- OROP = 336,
- ANDOP = 337,
- NOTOP = 338,
- ASSIGNOP = 339,
- PERLY_QUESTION_MARK = 340,
- PERLY_COLON = 341,
- OROR = 342,
- DORDOR = 343,
- ANDAND = 344,
- BITOROP = 345,
- BITANDOP = 346,
- CHEQOP = 347,
- NCEQOP = 348,
- CHRELOP = 349,
- NCRELOP = 350,
- SHIFTOP = 351,
- MATCHOP = 352,
- PERLY_EXCLAMATION_MARK = 353,
- PERLY_TILDE = 354,
- UMINUS = 355,
- REFGEN = 356,
- POWOP = 357,
- PREINC = 358,
- PREDEC = 359,
- POSTINC = 360,
- POSTDEC = 361,
- POSTJOIN = 362,
- ARROW = 363,
- PERLY_PAREN_CLOSE = 364,
- PERLY_PAREN_OPEN = 365
+ TRY = 313,
+ CATCH = 314,
+ LOOPEX = 315,
+ DOTDOT = 316,
+ YADAYADA = 317,
+ FUNC0 = 318,
+ FUNC1 = 319,
+ FUNC = 320,
+ UNIOP = 321,
+ LSTOP = 322,
+ MULOP = 323,
+ ADDOP = 324,
+ DOLSHARP = 325,
+ DO = 326,
+ HASHBRACK = 327,
+ NOAMP = 328,
+ LOCAL = 329,
+ MY = 330,
+ REQUIRE = 331,
+ COLONATTR = 332,
+ FORMLBRACK = 333,
+ FORMRBRACK = 334,
+ SUBLEXSTART = 335,
+ SUBLEXEND = 336,
+ PREC_LOW = 337,
+ OROP = 338,
+ ANDOP = 339,
+ NOTOP = 340,
+ ASSIGNOP = 341,
+ PERLY_QUESTION_MARK = 342,
+ PERLY_COLON = 343,
+ OROR = 344,
+ DORDOR = 345,
+ ANDAND = 346,
+ BITOROP = 347,
+ BITANDOP = 348,
+ CHEQOP = 349,
+ NCEQOP = 350,
+ CHRELOP = 351,
+ NCRELOP = 352,
+ SHIFTOP = 353,
+ MATCHOP = 354,
+ PERLY_EXCLAMATION_MARK = 355,
+ PERLY_TILDE = 356,
+ UMINUS = 357,
+ REFGEN = 358,
+ POWOP = 359,
+ PREINC = 360,
+ PREDEC = 361,
+ POSTINC = 362,
+ POSTDEC = 363,
+ POSTJOIN = 364,
+ ARROW = 365,
+ PERLY_PAREN_CLOSE = 366,
+ PERLY_PAREN_OPEN = 367
};
#endif
@@ -193,6 +195,7 @@ S_is_opval_token(int type) {
#endif /* PERL_IN_TOKE_C */
#endif /* PERL_CORE */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+
union YYSTYPE
{
@@ -202,8 +205,8 @@ union YYSTYPE
OP *opval;
GV *gvval;
-
};
+
typedef union YYSTYPE YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define YYSTYPE_IS_DECLARED 1
@@ -215,6 +218,6 @@ int yyparse (void);
/* Generated from:
- * 9a5909b0af5f61f96907e330008f3cdc9dadcab1417c5bcb188cb3b9f6593c01 perly.y
+ * 672539c523be1568df09c599b38a828c80473c60e1fddd63764d66f74e4e7b11 perly.y
* acf1cbfd2545faeaaa58b1cf0cf9d7f98b5be0752eb7a54528ef904a9e2e1ca7 regen_perly.pl
* ex: set ro: */
diff --git a/perly.tab b/perly.tab
index d615eb09d8..b5674d0542 100644
--- a/perly.tab
+++ b/perly.tab
@@ -6,29 +6,28 @@
#define YYFINAL 16
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 3128
+#define YYLAST 3177
/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 111
+#define YYNTOKENS 113
/* YYNNTS -- Number of nonterminals. */
-#define YYNNTS 97
+#define YYNNTS 99
/* YYNRULES -- Number of rules. */
-#define YYNRULES 294
+#define YYNRULES 297
/* YYNSTATES -- Number of states. */
-#define YYNSTATES 571
+#define YYNSTATES 581
#define YYUNDEFTOK 2
-#define YYMAXUTOK 365
-
+#define YYMAXUTOK 367
/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
as returned by yylex, with out-of-bounds checking. */
#define YYTRANSLATE(YYX) \
- (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+ ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
as returned by yylex. */
-static const yytype_int8 yytranslate[] =
+static const yytype_uint8 yytranslate[] =
{
0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -66,43 +65,43 @@ static const yytype_int8 yytranslate[] =
75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- 105, 106, 107, 108, 109, 110
+ 105, 106, 107, 108, 109, 110, 111, 112
};
#if YYDEBUG
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
-static const yytype_int16 yyrline[] =
+static const yytype_uint16 yyrline[] =
{
- 0, 137, 137, 136, 148, 147, 158, 157, 171, 170,
- 184, 183, 197, 196, 207, 206, 219, 227, 234, 239,
- 246, 252, 254, 263, 265, 274, 278, 282, 289, 299,
- 301, 314, 311, 335, 330, 351, 359, 358, 367, 373,
- 379, 384, 386, 388, 395, 403, 405, 402, 422, 427,
- 434, 433, 448, 456, 462, 469, 468, 483, 487, 492,
- 500, 517, 519, 523, 527, 529, 531, 533, 535, 537,
- 539, 542, 547, 549, 554, 564, 566, 571, 577, 579,
- 583, 587, 591, 596, 600, 604, 605, 608, 614, 619,
- 625, 626, 630, 632, 636, 638, 640, 645, 647, 658,
- 660, 665, 667, 671, 690, 692, 694, 700, 765, 767,
- 773, 775, 779, 784, 786, 790, 792, 796, 800, 800,
- 868, 869, 874, 885, 886, 889, 900, 902, 904, 908,
- 910, 915, 919, 923, 927, 933, 938, 944, 950, 952,
- 954, 957, 956, 967, 968, 972, 976, 979, 984, 989,
- 992, 996, 1000, 1006, 1014, 1021, 1027, 1029, 1031, 1036,
- 1038, 1040, 1045, 1047, 1049, 1051, 1053, 1055, 1057, 1059,
- 1061, 1063, 1065, 1069, 1071, 1073, 1075, 1079, 1081, 1085,
- 1087, 1089, 1091, 1095, 1097, 1102, 1104, 1107, 1109, 1111,
- 1114, 1117, 1128, 1131, 1138, 1140, 1142, 1144, 1146, 1149,
- 1155, 1157, 1161, 1162, 1163, 1164, 1165, 1167, 1169, 1171,
- 1173, 1175, 1177, 1179, 1181, 1183, 1185, 1187, 1189, 1191,
- 1193, 1203, 1213, 1223, 1233, 1235, 1237, 1240, 1245, 1249,
- 1251, 1253, 1255, 1258, 1260, 1263, 1265, 1267, 1269, 1271,
- 1273, 1275, 1277, 1279, 1282, 1284, 1286, 1288, 1290, 1292,
- 1296, 1299, 1298, 1311, 1312, 1313, 1317, 1319, 1321, 1326,
- 1328, 1331, 1333, 1335, 1340, 1342, 1346, 1348, 1352, 1354,
- 1360, 1364, 1365, 1366, 1369, 1370, 1373, 1374, 1377, 1381,
- 1385, 1391, 1397, 1399, 1403, 1407, 1408, 1412, 1413, 1417,
- 1418, 1423, 1425, 1427, 1430
+ 0, 138, 138, 137, 149, 148, 159, 158, 172, 171,
+ 185, 184, 198, 197, 208, 207, 220, 228, 235, 240,
+ 247, 253, 255, 264, 266, 275, 279, 283, 290, 300,
+ 302, 315, 312, 336, 331, 352, 360, 359, 368, 374,
+ 380, 385, 387, 389, 396, 404, 406, 403, 423, 428,
+ 435, 434, 449, 457, 464, 466, 463, 488, 495, 494,
+ 509, 513, 518, 526, 543, 545, 549, 553, 555, 557,
+ 559, 561, 563, 565, 568, 573, 575, 580, 590, 592,
+ 597, 603, 605, 609, 613, 617, 622, 626, 630, 631,
+ 634, 640, 645, 651, 652, 656, 658, 662, 664, 666,
+ 671, 673, 684, 686, 691, 693, 697, 716, 718, 720,
+ 726, 791, 793, 799, 801, 805, 810, 812, 816, 818,
+ 822, 826, 826, 894, 895, 900, 911, 912, 915, 926,
+ 928, 930, 934, 936, 941, 945, 949, 953, 959, 964,
+ 970, 976, 978, 980, 983, 982, 993, 994, 998, 1002,
+ 1005, 1010, 1015, 1018, 1022, 1026, 1032, 1040, 1047, 1053,
+ 1055, 1057, 1062, 1064, 1066, 1071, 1073, 1075, 1077, 1079,
+ 1081, 1083, 1085, 1087, 1089, 1091, 1095, 1097, 1099, 1101,
+ 1105, 1107, 1111, 1113, 1115, 1117, 1121, 1123, 1128, 1130,
+ 1133, 1135, 1137, 1140, 1143, 1154, 1157, 1164, 1166, 1168,
+ 1170, 1172, 1175, 1181, 1183, 1187, 1188, 1189, 1190, 1191,
+ 1193, 1195, 1197, 1199, 1201, 1203, 1205, 1207, 1209, 1211,
+ 1213, 1215, 1217, 1219, 1229, 1239, 1249, 1259, 1261, 1263,
+ 1266, 1271, 1275, 1277, 1279, 1281, 1284, 1286, 1289, 1291,
+ 1293, 1295, 1297, 1299, 1301, 1303, 1305, 1308, 1310, 1312,
+ 1314, 1316, 1318, 1322, 1325, 1324, 1337, 1338, 1339, 1343,
+ 1345, 1347, 1352, 1354, 1357, 1359, 1361, 1366, 1368, 1372,
+ 1374, 1378, 1380, 1386, 1390, 1391, 1392, 1395, 1396, 1399,
+ 1400, 1403, 1407, 1411, 1417, 1423, 1425, 1429, 1433, 1434,
+ 1438, 1439, 1443, 1444, 1449, 1451, 1453, 1456
};
#endif
@@ -122,38 +121,38 @@ static const char *const yytname[] =
"LSTOPSUB", "PLUGEXPR", "PLUGSTMT", "LABEL", "FORMAT", "SUB", "SIGSUB",
"ANONSUB", "ANON_SIGSUB", "PACKAGE", "USE", "WHILE", "UNTIL", "IF",
"UNLESS", "ELSE", "ELSIF", "CONTINUE", "FOR", "GIVEN", "WHEN", "DEFAULT",
- "LOOPEX", "DOTDOT", "YADAYADA", "FUNC0", "FUNC1", "FUNC", "UNIOP",
- "LSTOP", "MULOP", "ADDOP", "DOLSHARP", "DO", "HASHBRACK", "NOAMP",
- "LOCAL", "MY", "REQUIRE", "COLONATTR", "FORMLBRACK", "FORMRBRACK",
- "SUBLEXSTART", "SUBLEXEND", "PREC_LOW", "OROP", "ANDOP", "NOTOP",
- "ASSIGNOP", "PERLY_QUESTION_MARK", "PERLY_COLON", "OROR", "DORDOR",
- "ANDAND", "BITOROP", "BITANDOP", "CHEQOP", "NCEQOP", "CHRELOP",
+ "TRY", "CATCH", "LOOPEX", "DOTDOT", "YADAYADA", "FUNC0", "FUNC1", "FUNC",
+ "UNIOP", "LSTOP", "MULOP", "ADDOP", "DOLSHARP", "DO", "HASHBRACK",
+ "NOAMP", "LOCAL", "MY", "REQUIRE", "COLONATTR", "FORMLBRACK",
+ "FORMRBRACK", "SUBLEXSTART", "SUBLEXEND", "PREC_LOW", "OROP", "ANDOP",
+ "NOTOP", "ASSIGNOP", "PERLY_QUESTION_MARK", "PERLY_COLON", "OROR",
+ "DORDOR", "ANDAND", "BITOROP", "BITANDOP", "CHEQOP", "NCEQOP", "CHRELOP",
"NCRELOP", "SHIFTOP", "MATCHOP", "PERLY_EXCLAMATION_MARK", "PERLY_TILDE",
"UMINUS", "REFGEN", "POWOP", "PREINC", "PREDEC", "POSTINC", "POSTDEC",
"POSTJOIN", "ARROW", "PERLY_PAREN_CLOSE", "PERLY_PAREN_OPEN", "$accept",
"grammar", "@1", "@2", "@3", "@4", "@5", "@6", "@7", "block",
"formblock", "remember", "mblock", "mremember", "stmtseq", "formstmtseq",
"fullstmt", "labfullstmt", "barestmt", "$@8", "$@9", "$@10", "$@11",
- "$@12", "@13", "$@14", "formline", "formarg", "condition", "sideff",
- "else", "cont", "mintro", "nexpr", "texpr", "iexpr", "mexpr", "mnexpr",
- "formname", "startsub", "startanonsub", "startformsub", "subname",
- "proto", "subattrlist", "myattrlist", "sigvarname", "sigslurpsigil",
- "sigslurpelem", "sigdefault", "sigscalarelem", "sigelem", "siglist",
- "siglistornull", "optsubsignature", "subsignature", "subsigguts", "$@15",
- "optsubbody", "subbody", "optsigsubbody", "sigsubbody", "expr",
- "listexpr", "listop", "@16", "method", "subscripted", "termbinop",
- "termrelop", "relopchain", "termeqop", "eqopchain", "termunop",
- "anonymous", "termdo", "term", "@17", "myattrterm", "myterm",
- "optlistexpr", "optexpr", "optrepl", "my_scalar", "my_var",
- "refgen_topic", "my_refgen", "amper", "scalar", "ary", "hsh", "arylen",
- "star", "sliceme", "kvslice", "gelem", "indirob", YY_NULLPTR
+ "$@12", "@13", "$@14", "$@15", "$@16", "formline", "formarg",
+ "condition", "sideff", "else", "cont", "mintro", "nexpr", "texpr",
+ "iexpr", "mexpr", "mnexpr", "formname", "startsub", "startanonsub",
+ "startformsub", "subname", "proto", "subattrlist", "myattrlist",
+ "sigvarname", "sigslurpsigil", "sigslurpelem", "sigdefault",
+ "sigscalarelem", "sigelem", "siglist", "siglistornull",
+ "optsubsignature", "subsignature", "subsigguts", "$@17", "optsubbody",
+ "subbody", "optsigsubbody", "sigsubbody", "expr", "listexpr", "listop",
+ "@18", "method", "subscripted", "termbinop", "termrelop", "relopchain",
+ "termeqop", "eqopchain", "termunop", "anonymous", "termdo", "term",
+ "@19", "myattrterm", "myterm", "optlistexpr", "optexpr", "optrepl",
+ "my_scalar", "my_var", "refgen_topic", "my_refgen", "amper", "scalar",
+ "ary", "hsh", "arylen", "star", "sliceme", "kvslice", "gelem", "indirob", YY_NULLPTR
};
#endif
# ifdef YYPRINT
/* YYTOKNUM[NUM] -- (External) token number corresponding to the
(internal) symbol number NUM (which must be that of a token). */
-static const yytype_int16 yytoknum[] =
+static const yytype_uint16 yytoknum[] =
{
0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
@@ -166,177 +165,179 @@ static const yytype_int16 yytoknum[] =
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, 361, 362, 363, 364,
- 365
+ 365, 366, 367
};
# endif
-#define YYPACT_NINF (-464)
+#define YYPACT_NINF -482
-#define yypact_value_is_default(Yyn) \
- ((Yyn) == YYPACT_NINF)
+#define yypact_value_is_default(Yystate) \
+ (!!((Yystate) == (-482)))
-#define YYTABLE_NINF (-290)
+#define YYTABLE_NINF -293
-#define yytable_value_is_error(Yyn) \
- ((Yyn) == YYTABLE_NINF)
+#define yytable_value_is_error(Yytable_value) \
+ (!!((Yytable_value) == (-293)))
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
static const yytype_int16 yypact[] =
{
- 470, -464, -464, -464, -464, -464, -464, -464, 7, -464,
- 2748, 5, 1383, 1288, -464, -464, -464, -464, 225, 1825,
- 225, 2748, 225, 2748, 225, 225, -464, 225, 225, -464,
- -464, 47, -47, -464, 2748, -464, -464, -464, -464, 2748,
- -36, -31, -25, 1920, 1733, 225, 1920, 2012, 211, 2748,
- -2, 2748, 2748, 2748, 2748, 2748, 2748, 2748, 2104, 91,
- 52, -464, 4, -464, 159, 35, 167, -6, -464, -464,
- -464, 2900, -464, -464, -3, 45, 150, 180, -464, 134,
- 252, 314, 168, -464, -464, -464, -464, -464, -464, 211,
- 211, 112, -464, 99, 116, 169, 194, 16, 197, 201,
- 5, 246, 276, -464, 322, 1034, 1288, -464, -464, -464,
- 528, -464, 20, 623, -464, -464, -464, -464, -464, -464,
- 13, -464, 786, -464, 786, -464, -464, 2748, 250, 278,
- 2748, 289, 703, 5, 348, 312, 2900, 290, 2196, 2748,
- 1733, -464, 703, 357, 52, -464, 1633, 2748, -464, -464,
- 703, 388, 66, -464, -464, 2748, 703, 2840, 2288, 327,
- -464, -464, -464, 703, 52, 786, 786, 786, 268, 268,
- 390, 43, 2748, 2748, 2748, 2748, 2748, 2380, -464, -464,
- 2748, -464, -464, 2748, 2748, 2748, 2748, 2748, 2748, 2748,
- 2748, 2748, 2748, 2748, 2748, 2748, 2748, 2748, 2748, 2748,
- 2748, -464, -464, -464, 165, 2472, 2748, 2748, 2748, 2748,
- 2748, 2748, 2748, -464, 382, -464, -464, 383, -464, -464,
- -464, -464, -464, 311, 228, -464, -464, 305, -464, -464,
- -464, -464, 5, -464, -464, 2748, 2748, 2748, 2748, 2748,
- 2748, -464, -464, -464, 395, -464, -464, 395, -464, -464,
- -464, 419, -464, -464, -464, 2748, 2748, 19, -464, -464,
- -464, 312, 406, -464, -464, -464, 78, 361, 347, 2748,
- 52, -464, 443, -464, 2564, 786, 327, 36, 58, 131,
- -464, 153, 431, -464, 2748, 448, 385, -464, 2900, 164,
- 24, -464, 158, 703, 391, 2988, 288, 893, 2900, 425,
- 3020, 3020, 513, 608, 325, 391, 391, 703, 703, 798,
- 786, 786, 446, 2748, 2748, 787, 455, 457, 458, -464,
- 465, 2656, 392, -464, -464, 221, 200, 28, 227, 38,
- 233, 54, 236, 718, -464, 477, -464, -464, 32, 478,
- 2748, 2748, 2748, 2748, -464, 487, -464, -464, 396, -464,
- -464, -464, -464, 1475, 345, -464, 2748, 2748, -464, -464,
- 91, -464, 91, -464, -464, -464, -464, -464, 421, 421,
- 20, 399, 151, -464, 2748, -464, -464, 413, -464, -464,
- -464, -464, 255, -464, 21, 259, -464, -464, -464, 102,
- 2748, 512, -464, -464, 2748, -464, 242, 113, -464, -464,
- -464, -464, -464, -464, 277, 2748, -464, 514, -464, 522,
- -464, 524, -464, 525, -464, -464, -464, 348, 312, -464,
- -464, 499, 434, 91, 436, 437, 91, 442, 449, -464,
- -464, -464, -464, 472, 565, 272, -464, 2748, 485, 486,
- 2748, -464, -464, -464, -464, 2748, 533, -464, 602, -464,
- -464, 603, -464, -464, 22, -464, 126, -464, 2944, 604,
- -464, -464, 508, -464, -464, -464, -464, 600, 312, 606,
- -464, 2748, -464, -464, 614, 614, 2748, 2748, 614, -464,
- 520, 526, 614, 614, 2900, 91, -464, -464, 531, -464,
- -464, -464, -464, 560, 619, -464, -464, -464, -464, 624,
- 614, 614, -464, 287, 287, 545, 567, 276, 2748, 2748,
- 614, -464, -464, 813, -464, 908, -464, -464, -464, -464,
- 1003, -464, 276, 276, -464, 614, 572, -464, -464, 614,
- 614, -464, 667, 581, 276, -464, -464, 8, -464, -464,
- -464, 1098, -464, 2748, 276, 276, -464, 614, -464, 681,
- 631, -464, -464, 599, -464, -464, -464, 276, -464, -464,
- -464, 614, 1567, -464, 1193, 287, 609, -464, -464, 614,
- -464
+ 533, -482, -482, -482, -482, -482, -482, -482, 32, -482,
+ 2902, 25, 1407, 1310, -482, -482, -482, -482, 299, 1959,
+ 299, 2902, 299, 2902, 299, 299, -482, 299, 299, -482,
+ -482, 10, -66, -482, 2902, -482, -482, -482, -482, 2902,
+ -63, -56, -47, 2056, 1865, 299, 2056, 2150, 67, 2902,
+ 60, 2902, 2902, 2902, 2902, 2902, 2902, 2902, 2244, 144,
+ 43, -482, 50, -482, 156, -25, 233, -11, -482, -482,
+ -482, 3067, -482, -482, -35, 62, 228, 250, -482, 78,
+ 267, 270, 92, -482, -482, -482, -482, -482, -482, 67,
+ 67, 83, -482, 18, 41, 52, 97, -1, 108, 135,
+ 25, 203, 173, 207, -482, 243, 330, 1310, -482, -482,
+ -482, 534, -482, 220, 631, -482, -482, -482, -482, -482,
+ -482, 12, -482, 992, -482, 992, -482, -482, 2902, 172,
+ 176, 2902, 193, 808, 25, 285, 246, 3067, 218, 2338,
+ 2902, 1865, -482, 808, 1763, 43, -482, 1663, 2902, -482,
+ -482, 808, 329, 124, -482, -482, 2902, 808, 2996, 2432,
+ 269, -482, -482, -482, 808, 43, 992, 992, 992, 338,
+ 338, 337, 23, 2902, 2902, 2902, 2902, 2902, 2526, -482,
+ -482, 2902, -482, -482, 2902, 2902, 2902, 2902, 2902, 2902,
+ 2902, 2902, 2902, 2902, 2902, 2902, 2902, 2902, 2902, 2902,
+ 2902, 2902, -482, -482, -482, 27, 2620, 2902, 2902, 2902,
+ 2902, 2902, 2902, 2902, -482, 335, -482, -482, 340, -482,
+ -482, -482, -482, -482, 278, 151, -482, -482, 261, -482,
+ -482, -482, -482, 326, -482, 25, -482, -482, 2902, 2902,
+ 2902, 2902, 2902, 2902, -482, -482, -482, 370, -482, -482,
+ 370, -482, -482, -482, 390, -482, -482, -482, 2902, 2902,
+ 34, -482, -482, -482, 246, 378, -482, -482, -482, 159,
+ 327, 298, 2902, 43, -482, 400, -482, 2714, 992, 269,
+ 44, 168, 169, -482, 223, 389, -482, 2902, 407, 339,
+ -482, 3067, 165, 45, -482, 234, 808, 711, 423, 395,
+ 289, 3067, 3023, 1696, 1696, 1850, 518, 614, 711, 711,
+ 808, 808, 905, 992, 992, 397, 2902, 2902, 410, 399,
+ 404, 415, -482, 424, 2808, 357, -482, -482, 236, 171,
+ 54, 184, 65, 189, 90, 191, 728, -482, 452, -482,
+ -482, 79, 451, 2902, 2902, 2902, 2902, -482, 462, -482,
+ -482, 368, -482, -482, -482, -482, 1501, 242, -482, 2902,
+ 2902, -482, 371, -482, -482, 144, -482, 144, -482, -482,
+ -482, -482, -482, 396, 396, 220, 374, 76, -482, 2902,
+ -482, -482, 376, -482, -482, -482, -482, 238, -482, 59,
+ 248, -482, -482, -482, 94, 2902, 474, -482, -482, 2902,
+ -482, 229, 102, -482, -482, -482, -482, -482, -482, 281,
+ 2902, -482, 477, -482, 481, -482, 483, -482, 484, -482,
+ -482, -482, 285, 246, -482, -482, 471, 412, 144, 413,
+ 414, 144, 417, 398, -482, -482, -482, -482, 418, 479,
+ 320, -482, 2902, 435, 438, 825, -482, 2902, -482, -482,
+ -482, -482, 2902, 426, -482, 500, -482, -482, 515, -482,
+ -482, 68, -482, 105, -482, 364, 540, -482, -482, 446,
+ -482, -482, -482, -482, 543, 246, 563, -482, 2902, -482,
+ -482, 203, 203, 2902, 2902, 203, -482, 490, 482, 203,
+ 203, -482, -482, 3067, 144, -482, -482, 492, -482, -482,
+ -482, -482, 516, 596, -482, -482, -482, -482, 598, 203,
+ 203, 288, 288, 510, 512, 207, 2902, 2902, 203, -482,
+ -482, 462, 922, -482, 1019, -482, -482, -482, -482, 1116,
+ -482, 207, 207, 203, 517, -482, -482, 203, 203, -482,
+ 602, 519, 207, -482, -482, -482, 162, -482, -482, -482,
+ -482, 2902, 207, 207, -482, 203, -482, 522, 619, 560,
+ -482, 532, -482, -482, -482, 207, 203, -482, -482, -482,
+ 203, 1595, -482, -482, 1213, 288, 537, -482, -482, 203,
+ -482
};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
Performed when YYTABLE does not specify something else to do. Zero
means the default is an error. */
-static const yytype_int16 yydefact[] =
+static const yytype_uint16 yydefact[] =
{
0, 2, 4, 6, 8, 10, 12, 14, 0, 18,
- 266, 0, 0, 0, 21, 118, 1, 21, 0, 0,
- 0, 0, 0, 0, 0, 0, 253, 0, 0, 224,
- 251, 212, 246, 248, 242, 88, 255, 88, 88, 234,
- 244, 0, 0, 237, 264, 0, 0, 0, 0, 0,
- 0, 240, 0, 0, 0, 0, 0, 0, 0, 267,
- 128, 254, 219, 202, 164, 173, 165, 179, 203, 204,
- 205, 131, 209, 5, 225, 214, 217, 216, 218, 215,
- 0, 0, 0, 18, 7, 64, 59, 29, 89, 0,
- 0, 0, 87, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 75, 9, 0, 65, 0, 11, 26, 25,
- 0, 15, 113, 0, 291, 294, 293, 292, 278, 195,
- 0, 279, 185, 281, 186, 280, 284, 264, 0, 0,
- 0, 0, 243, 0, 92, 94, 235, 0, 0, 266,
- 266, 238, 239, 291, 265, 138, 292, 0, 282, 201,
- 200, 0, 0, 90, 91, 264, 210, 0, 0, 257,
- 261, 263, 262, 241, 236, 187, 188, 207, 192, 193,
- 213, 0, 0, 0, 129, 0, 0, 0, 176, 175,
- 0, 182, 181, 0, 0, 0, 0, 0, 0, 0,
+ 269, 0, 0, 0, 21, 121, 1, 21, 0, 0,
+ 0, 0, 0, 0, 0, 0, 256, 0, 0, 227,
+ 254, 215, 249, 251, 245, 91, 258, 91, 91, 237,
+ 247, 0, 0, 240, 267, 0, 0, 0, 0, 0,
+ 0, 243, 0, 0, 0, 0, 0, 0, 0, 270,
+ 131, 257, 222, 205, 167, 176, 168, 182, 206, 207,
+ 208, 134, 212, 5, 228, 217, 220, 219, 221, 218,
+ 0, 0, 0, 18, 7, 67, 62, 29, 92, 0,
+ 0, 0, 90, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 78, 9, 0, 68, 0, 11, 26,
+ 25, 0, 15, 116, 0, 294, 297, 296, 295, 281,
+ 198, 0, 282, 188, 284, 189, 283, 287, 267, 0,
+ 0, 0, 0, 246, 0, 95, 97, 238, 0, 0,
+ 269, 269, 241, 242, 294, 268, 141, 295, 0, 285,
+ 204, 203, 0, 0, 93, 94, 267, 213, 0, 0,
+ 260, 264, 266, 265, 244, 239, 190, 191, 210, 195,
+ 196, 216, 0, 0, 0, 132, 0, 0, 0, 179,
+ 178, 0, 185, 184, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 189, 190, 191, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 21, 86, 87, 87, 0, 36, 18,
- 18, 18, 18, 18, 0, 18, 18, 0, 18, 18,
- 42, 58, 0, 54, 57, 0, 0, 0, 0, 0,
- 0, 28, 27, 22, 99, 102, 101, 99, 109, 108,
- 112, 114, 119, 194, 136, 266, 0, 0, 247, 141,
- 93, 94, 96, 18, 245, 249, 0, 0, 0, 0,
- 132, 197, 0, 228, 0, 208, 0, 214, 217, 216,
- 260, 0, 98, 256, 0, 211, 127, 126, 130, 0,
- 0, 155, 0, 178, 184, 168, 161, 162, 159, 0,
- 170, 171, 169, 167, 166, 183, 180, 177, 174, 163,
- 172, 160, 0, 0, 0, 0, 288, 286, 290, 143,
- 0, 0, 135, 144, 226, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 85, 0, 31, 33, 0, 0,
- 80, 0, 0, 0, 276, 0, 277, 274, 0, 275,
- 271, 272, 273, 0, 0, 18, 0, 0, 76, 68,
- 63, 69, 82, 66, 67, 70, 71, 100, 104, 104,
- 110, 0, 268, 157, 264, 18, 95, 115, 199, 250,
- 140, 139, 0, 196, 213, 0, 258, 259, 97, 0,
- 0, 0, 148, 154, 0, 232, 0, 0, 229, 231,
- 230, 233, 283, 152, 0, 266, 227, 0, 146, 0,
- 220, 0, 221, 0, 16, 18, 30, 92, 94, 18,
- 35, 0, 0, 81, 0, 0, 83, 0, 0, 270,
- 18, 79, 84, 0, 0, 65, 50, 0, 0, 0,
- 105, 107, 103, 111, 137, 0, 0, 142, 0, 198,
- 118, 0, 116, 133, 211, 158, 0, 151, 206, 0,
- 147, 153, 0, 149, 222, 223, 145, 0, 94, 18,
- 55, 264, 77, 77, 0, 0, 0, 0, 0, 45,
- 0, 0, 0, 0, 106, 269, 252, 21, 0, 21,
- 156, 150, 134, 0, 18, 124, 34, 123, 21, 0,
- 0, 0, 20, 72, 72, 0, 0, 75, 80, 0,
- 0, 40, 41, 0, 117, 0, 23, 121, 32, 120,
- 0, 37, 75, 75, 21, 0, 0, 38, 39, 0,
- 0, 53, 0, 0, 75, 122, 125, 0, 56, 43,
- 44, 0, 73, 0, 75, 75, 46, 0, 49, 0,
- 61, 24, 19, 0, 48, 52, 77, 75, 17, 21,
- 60, 0, 0, 51, 0, 72, 0, 62, 74, 0,
+ 0, 0, 192, 193, 194, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 21, 89, 90, 90, 0, 36,
+ 18, 18, 18, 18, 18, 0, 18, 18, 0, 18,
+ 18, 42, 20, 0, 61, 0, 57, 60, 0, 0,
+ 0, 0, 0, 0, 28, 27, 22, 102, 105, 104,
+ 102, 112, 111, 115, 117, 122, 197, 139, 269, 0,
+ 0, 250, 144, 96, 97, 99, 18, 248, 252, 0,
+ 0, 0, 0, 135, 200, 0, 231, 0, 211, 0,
+ 217, 220, 219, 263, 0, 101, 259, 0, 214, 130,
+ 129, 133, 0, 0, 158, 0, 181, 187, 171, 164,
+ 165, 162, 0, 173, 174, 172, 170, 169, 186, 183,
+ 180, 177, 166, 175, 163, 0, 0, 0, 0, 291,
+ 289, 293, 146, 0, 0, 138, 147, 229, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 88, 0, 31,
+ 33, 0, 0, 83, 0, 0, 0, 279, 0, 280,
+ 277, 0, 278, 274, 275, 276, 0, 0, 18, 0,
+ 0, 21, 0, 79, 71, 66, 72, 85, 69, 70,
+ 73, 74, 103, 107, 107, 113, 0, 271, 160, 267,
+ 18, 98, 118, 202, 253, 143, 142, 0, 199, 216,
+ 0, 261, 262, 100, 0, 0, 0, 151, 157, 0,
+ 235, 0, 0, 232, 234, 233, 236, 286, 155, 0,
+ 269, 230, 0, 149, 0, 223, 0, 224, 0, 16,
+ 18, 30, 95, 97, 18, 35, 0, 0, 84, 0,
+ 0, 86, 0, 0, 273, 18, 82, 87, 0, 0,
+ 68, 50, 0, 0, 0, 0, 54, 108, 110, 106,
+ 114, 140, 0, 0, 145, 0, 201, 121, 0, 119,
+ 136, 214, 161, 0, 154, 209, 0, 150, 156, 0,
+ 152, 225, 226, 148, 0, 97, 18, 58, 267, 80,
+ 80, 0, 0, 0, 0, 0, 45, 0, 0, 0,
+ 0, 19, 18, 109, 272, 255, 21, 0, 21, 159,
+ 153, 137, 0, 18, 127, 34, 126, 21, 0, 0,
+ 0, 75, 75, 0, 0, 78, 83, 0, 0, 40,
+ 41, 0, 0, 120, 0, 23, 124, 32, 123, 0,
+ 37, 78, 78, 0, 0, 38, 39, 0, 0, 53,
+ 0, 0, 78, 55, 125, 128, 0, 59, 43, 44,
+ 76, 0, 78, 78, 46, 0, 49, 0, 0, 64,
+ 24, 0, 48, 52, 80, 78, 0, 17, 21, 63,
+ 0, 0, 51, 56, 0, 75, 0, 65, 77, 0,
47
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -464, -464, -464, -464, -464, -464, -464, -464, -464, 37,
- -464, -5, 2417, -464, -17, -464, 696, 605, 12, -464,
- -464, -464, -464, -464, -464, -464, -464, -464, 33, -343,
- -463, -156, -453, -464, 204, 376, -266, 161, -464, 127,
- 346, -464, 273, 303, -256, 456, 488, -464, -464, 356,
- -464, 366, -464, -464, -464, -464, 291, -464, -464, 283,
- -464, 280, -8, -43, -464, -464, -464, -464, -464, -464,
- -464, -464, -464, -464, -464, -464, 100, -464, -464, 627,
- -124, -127, -464, -464, 417, -464, -464, 561, 1, -44,
- -42, -464, -464, -464, -464, -464, 48
+ -482, -482, -482, -482, -482, -482, -482, -482, -482, 42,
+ -482, -5, -127, -482, -17, -482, 632, 542, 8, -482,
+ -482, -482, -482, -482, -482, -482, -482, -482, -482, -482,
+ 224, -342, -481, -115, -459, -482, 138, 318, -246, 113,
+ -482, 155, 352, -482, 305, 268, -263, 420, 442, -482,
+ -482, 341, -482, 325, -482, -482, -482, -482, 257, -482,
+ -482, 214, -482, 244, -8, -36, -482, -482, -482, -482,
+ -482, -482, -482, -482, -482, -482, -482, -482, 101, -482,
+ -482, 561, -122, -99, -482, -482, 369, -482, -482, 502,
+ -15, -33, -31, -482, -482, -482, -482, -482, 0
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
- -1, 8, 9, 10, 11, 12, 13, 14, 15, 102,
- 416, 377, 503, 524, 110, 537, 243, 108, 109, 417,
- 418, 339, 508, 556, 480, 498, 551, 560, 359, 104,
- 527, 233, 500, 432, 422, 361, 425, 434, 335, 218,
- 133, 214, 155, 261, 263, 283, 368, 247, 248, 441,
- 249, 250, 251, 252, 451, 452, 111, 112, 518, 449,
- 496, 378, 105, 60, 61, 374, 322, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, 71, 129, 72, 159,
- 145, 73, 446, 428, 347, 348, 226, 74, 75, 76,
- 77, 78, 79, 80, 81, 82, 121
+ -1, 8, 9, 10, 11, 12, 13, 14, 15, 103,
+ 421, 382, 233, 361, 111, 546, 246, 109, 110, 422,
+ 423, 342, 516, 564, 487, 492, 557, 507, 560, 569,
+ 364, 105, 535, 236, 509, 437, 427, 366, 430, 439,
+ 338, 219, 134, 215, 156, 264, 266, 286, 373, 250,
+ 251, 448, 252, 253, 254, 255, 458, 459, 112, 113,
+ 527, 456, 505, 383, 106, 60, 61, 379, 325, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 130,
+ 72, 160, 146, 73, 453, 433, 350, 351, 227, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 122
};
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
@@ -344,141 +345,124 @@ static const yytype_int16 yydefgoto[] =
number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_int16 yytable[] =
{
- 113, 144, 59, 254, 17, 375, 161, 16, 162, 164,
- 431, 120, 267, 268, 20, 175, 83, 176, 22, 117,
- 501, 117, 24, 117, 103, 117, 117, 253, 117, 117,
- 549, 273, 20, 373, 284, 390, 244, 550, 392, 152,
- 245, 528, 408, 419, 246, 146, 117, 206, 84, 207,
- 171, 160, 410, 139, 420, 116, 206, 116, 207, 116,
- 130, 116, 116, 131, 116, 116, 118, 174, 412, -285,
- 123, -285, 125, 126, 137, 127, 128, 427, 213, 138,
- 141, 116, 116, 149, 144, 140, 183, 433, 272, 223,
- 438, 439, 147, 148, 172, 173, -260, -259, 227, 157,
- 172, 173, 568, 562, 270, 172, 173, 205, 158, 172,
- 173, -261, 144, 278, 177, 279, 455, 224, 242, 172,
- 173, 122, 257, 124, 172, 173, 225, 460, 371, 180,
- 266, 59, 59, -263, 132, 172, 173, 230, 217, 136,
- 490, 146, -287, 142, -287, -289, 150, 172, 173, 156,
- 281, 163, 285, 165, 166, 167, 168, 169, 277, 172,
- 173, -285, 469, -285, 286, 287, 174, 289, 290, 292,
- 259, 481, 172, 173, 445, 312, 313, 116, 314, 212,
- 351, 315, 352, 172, 173, 316, 391, 379, 269, 317,
- 318, -287, 319, -287, 172, 173, 333, 325, 326, 327,
- 328, 329, 330, 331, 332, 323, -262, 172, 173, 219,
- 505, 506, 494, 372, 340, 341, 342, 343, 345, 431,
- 353, 354, 407, 356, 357, 350, 220, 360, 362, 360,
- 360, 360, 360, 320, 172, 173, 83, 153, 18, 172,
- 173, 20, 154, 533, 20, 172, 173, 59, 22, 409,
- 447, 114, 24, 178, 179, 411, 115, 275, 413, 181,
- 182, 382, 387, 208, 459, 209, 385, 393, 231, 358,
- 363, 364, 365, 366, 288, 321, 389, 553, 462, 221,
- 293, 172, 173, 294, 295, 296, 297, 298, 299, 300,
- 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
- 311, 346, 172, 173, 222, 396, 397, 228, 172, 173,
- 351, 229, 352, 404, 172, 173, 117, 172, 173, 235,
- 236, 237, 238, 172, 173, 210, 239, 211, 240, 232,
- 406, 144, 423, 362, 426, 426, 172, 173, 525, 526,
- 172, 173, 336, 337, 234, 435, 429, 499, 426, 426,
- 437, 531, 116, 172, 173, 350, 256, -253, 172, 173,
- 255, 20, 215, 216, 453, 22, 539, 540, 454, 24,
- 448, -253, -253, -290, -290, -290, 204, 260, 548, -253,
- -253, -83, 456, 134, 135, 199, 461, 262, 554, 555,
- 200, 185, 186, 201, 202, 203, 204, 59, 258, 264,
- 271, 563, 282, 284, -253, -253, -253, -253, 334, 338,
- 467, -253, 344, -253, 470, 355, -253, 194, 195, 196,
- 197, 198, 199, -253, -253, 477, 367, 200, 144, 426,
- 201, 202, 203, 204, 370, 376, -253, 485, -253, -253,
- 380, -253, -253, -253, -253, -253, -253, -253, -253, -253,
- -253, -253, -253, -253, -253, 383, 381, 185, 186, -253,
- 388, 390, -253, -253, -253, -253, -253, 173, 426, 426,
- 513, 395, 515, 1, 2, 3, 4, 5, 6, 7,
- 399, 520, 400, 401, 184, 196, 197, 198, 199, 448,
- 402, 185, 186, 200, 458, 415, 201, 202, 203, 204,
- 423, 426, 405, 20, 421, 440, 430, 541, 444, 187,
- 188, 394, 189, 190, 191, 192, 193, 194, 195, 196,
- 197, 198, 199, 450, 457, 471, 463, 200, -13, 85,
- 201, 202, 203, 204, 464, 426, 465, 466, 18, 83,
- 484, 19, 564, 472, 20, 473, 474, 21, 22, 23,
- 86, 475, 24, 25, 26, 27, 28, 29, 30, 476,
- 31, 32, 33, 34, 35, 36, 87, 106, 88, 89,
- 90, 37, 38, 91, 92, 93, 94, 95, 96, 185,
- 186, 478, 97, 98, 99, 100, 39, 479, 101, 40,
- 41, 42, 43, 44, 482, 483, 45, 46, 47, 48,
- 49, 50, 51, 192, 193, 194, 195, 196, 197, 198,
- 199, 52, 486, 487, 489, 200, 491, 492, 201, 202,
- 203, 204, 493, -3, 85, 502, 53, 54, 495, 55,
- 509, 56, 57, 18, 83, 510, 19, 516, 58, 20,
- 514, 517, 21, 22, 23, 86, 521, 24, 25, 26,
- 27, 28, 29, 30, 529, 31, 32, 33, 34, 35,
- 36, 87, 106, 88, 89, 90, 37, 38, 91, 92,
- 93, 94, 95, 96, 185, 186, 530, 97, 98, 99,
- 100, 39, 543, 101, 40, 41, 42, 43, 44, 546,
- 547, 45, 46, 47, 48, 49, 50, 51, 558, 193,
- 194, 195, 196, 197, 198, 199, 52, 559, 561, 107,
- 200, 241, 532, 201, 202, 203, 204, 424, 569, 85,
- 468, 53, 54, 566, 55, 442, 56, 57, 18, 83,
- 414, 19, 386, 58, 20, 369, 443, 21, 22, 23,
- 86, 488, 24, 25, 26, 27, 28, 29, 30, 497,
- 31, 32, 33, 34, 35, 36, 87, 106, 88, 89,
- 90, 37, 38, 91, 92, 93, 94, 95, 96, 185,
- 186, 436, 97, 98, 99, 100, 39, 519, 101, 40,
- 41, 42, 43, 44, 276, 349, 45, 46, 47, 48,
- 49, 50, 51, 0, 0, 0, 0, 0, 83, 198,
- 199, 52, 0, 20, 0, 200, 0, 0, 201, 202,
- 203, 204, 398, 114, 85, 0, 53, 54, 115, 55,
- 0, 56, 57, 18, 83, 535, 19, 0, 58, 20,
- 0, 0, 21, 22, 23, 86, 0, 24, 25, 26,
- 27, 28, 29, 30, 0, 31, 32, 33, 34, 35,
- 36, 87, 106, 88, 89, 90, 37, 38, 91, 92,
- 93, 94, 95, 96, 185, 186, 0, 97, 98, 99,
- 100, 39, 0, 101, 40, 41, 42, 43, 44, 0,
- 0, 45, 46, 47, 48, 49, 50, 51, 200, 0,
- 0, 201, 202, 203, 204, 199, 52, 0, 0, 0,
- 200, 0, 0, 201, 202, 203, 204, 0, 0, 85,
- 0, 53, 54, 0, 55, 0, 56, 57, 18, 83,
- 536, 19, 0, 58, 20, 0, 0, 21, 22, 23,
- 86, 0, 24, 25, 26, 27, 28, 29, 30, 0,
- 31, 32, 33, 34, 35, 36, 87, 106, 88, 89,
- 90, 37, 38, 91, 92, 93, 94, 95, 96, 185,
- 0, 0, 97, 98, 99, 100, 39, 0, 101, 40,
- 41, 42, 43, 44, 0, 0, 45, 46, 47, 48,
- 49, 50, 51, 0, 0, 0, 0, 0, 0, 0,
- 199, 52, 0, 0, 0, 200, 0, 0, 201, 202,
- 203, 204, 0, 0, 85, 0, 53, 54, 0, 55,
- 0, 56, 57, 18, 83, 538, 19, 0, 58, 20,
- 0, 0, 21, 22, 23, 86, 0, 24, 25, 26,
- 27, 28, 29, 30, 0, 31, 32, 33, 34, 35,
- 36, 87, 106, 88, 89, 90, 37, 38, 91, 92,
- 93, 94, 95, 96, 0, 0, 0, 97, 98, 99,
- 100, 39, 0, 101, 40, 41, 42, 43, 44, 0,
- 0, 45, 46, 47, 48, 49, 50, 51, 0, 0,
- 0, 235, 236, 237, 238, 0, 52, 0, 239, 0,
- 240, 0, 0, 0, 0, 0, 0, 0, 0, 85,
- 0, 53, 54, 0, 55, 0, 56, 57, 18, 83,
- 552, 19, 0, 58, 20, 172, 173, 21, 22, 23,
- 86, 0, 24, 25, 26, 27, 28, 29, 30, 0,
- 31, 32, 33, 34, 35, 36, 87, 106, 88, 89,
- 90, 37, 38, 91, 92, 93, 94, 95, 96, 0,
- 0, 0, 97, 98, 99, 100, 39, 0, 101, 40,
- 41, 42, 43, 44, 0, 0, 45, 46, 47, 48,
- 49, 50, 51, 0, 0, 0, 0, 0, 0, 0,
- 0, 52, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 85, 0, 53, 54, 0, 55,
- 0, 56, 57, 18, 83, 0, 19, 0, 58, 20,
- 0, 0, 21, 22, 23, 86, 0, 24, 25, 26,
- 27, 28, 29, 30, 0, 31, 32, 33, 34, 35,
- 36, 87, 106, 88, 89, 90, 37, 38, 91, 92,
- 93, 94, 95, 96, 0, 0, 0, 97, 98, 99,
- 100, 39, 0, 101, 40, 41, 42, 43, 44, 0,
- 0, 45, 46, 47, 48, 49, 50, 51, 0, 0,
- 567, 0, 0, 0, 0, 0, 52, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 85,
+ 114, 380, 59, 118, 17, 118, 257, 118, 145, 118,
+ 118, 121, 118, 118, 436, 20, 165, 162, 119, 163,
+ 104, 510, 124, 131, 126, 127, 256, 128, 129, 147,
+ 118, 536, 16, 140, 276, 161, 83, 315, 316, 153,
+ 317, 270, 271, 318, 148, 149, 132, 319, 378, 138,
+ 172, 320, 321, 84, 322, 207, 139, 208, 175, 397,
+ 117, 176, 117, 177, 117, 141, 117, 117, 413, 117,
+ 117, 181, 287, 207, 224, 208, 20, 206, 214, 415,
+ 22, 395, 228, 184, 24, 142, 117, 117, 150, -292,
+ 424, 175, 145, 154, 578, 173, 174, 323, 155, 452,
+ 432, 425, 225, 213, 417, 571, 173, 174, 462, 218,
+ 438, 226, 273, 443, 444, 245, 467, 173, 174, 499,
+ 145, -264, 123, 260, 125, 281, 147, 282, 173, 174,
+ 220, 269, 59, 59, 288, 133, -263, 173, 174, 324,
+ 137, 272, 231, 280, 143, -262, 275, 151, 173, 174,
+ 157, 284, 164, 221, 166, 167, 168, 169, 170, 376,
+ 476, 18, 178, 158, 222, 289, 290, 20, 292, 293,
+ 295, 22, 159, 173, 174, 24, 262, 173, 174, -288,
+ -290, -288, -290, 117, 558, 173, 174, 396, 173, 174,
+ 326, 559, 354, 412, 355, 234, 488, 336, 328, 329,
+ 330, 331, 332, 333, 334, 335, 414, 173, 174, 223,
+ 353, 416, 503, 418, 232, 343, 344, 345, 346, 348,
+ 229, 356, 357, 377, 359, 360, 349, 173, 174, 436,
+ 365, 367, 365, 365, 365, 365, 247, 513, 514, -288,
+ 248, -288, 173, 174, 249, -266, -265, 230, 173, 174,
+ 59, 466, 179, 180, 173, 174, 259, 454, 20, 278,
+ 235, -290, 22, -290, 387, 237, 24, 173, 174, 390,
+ 384, 541, 173, 174, 173, 174, 291, 363, 209, 394,
+ 210, 211, 296, 212, 258, 297, 298, 299, 300, 301,
+ 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
+ 312, 313, 314, 118, 261, 561, 173, 174, 401, 402,
+ 83, 469, 173, 174, 263, 20, 409, 173, 174, 173,
+ 174, 173, 174, 265, 354, 115, 355, 182, 183, 267,
+ 116, 173, 174, 434, 392, 428, 367, 431, 431, 533,
+ 534, 274, 353, 145, 445, 398, 285, 411, 440, 460,
+ 287, 431, 431, 442, 511, 512, 508, 186, 515, 461,
+ 117, 337, 519, 520, 173, 174, 341, 238, 239, 240,
+ 241, 339, 340, 358, 242, 455, 243, 238, 239, 240,
+ 241, 347, 531, 532, 242, 362, 243, 463, 200, 135,
+ 136, 542, 468, 201, 216, 217, 202, 203, 204, 205,
+ 539, 372, 59, 173, 174, 375, 550, 381, 385, 386,
+ 552, 553, 388, 173, 174, 474, 548, 549, 393, 477,
+ 395, 83, 400, 174, 404, 185, 20, 556, 565, 405,
+ 484, -86, 186, 187, 431, 403, 115, 562, 563, 573,
+ 406, 116, 145, 575, 494, -293, -293, -293, 205, 407,
+ 572, 189, 580, 190, 191, 192, 193, 194, 195, 196,
+ 197, 198, 199, 200, 368, 369, 370, 371, 201, 410,
+ 420, 202, 203, 204, 205, 431, 431, 426, 20, 522,
+ 435, 524, 447, 446, -293, 451, 464, 521, 457, 470,
+ 529, 186, 187, 471, 200, 472, 473, 478, 455, 201,
+ 465, 486, 202, 203, 204, 205, 543, 495, 428, 431,
+ 483, 496, 190, 191, 192, 193, 194, 195, 196, 197,
+ 198, 199, 200, 479, 480, 481, 498, 201, 482, 485,
+ 202, 203, 204, 205, -13, 85, 1, 2, 3, 4,
+ 5, 6, 7, 431, 18, 83, 489, 19, 493, 490,
+ 20, 574, 500, 21, 22, 23, 86, 501, 24, 25,
+ 26, 27, 28, 29, 30, 502, 31, 32, 33, 34,
+ 35, 36, 87, 107, 88, 89, 90, 37, 38, 91,
+ 92, 93, 94, 95, 96, 504, 186, 187, 97, 98,
+ 99, 100, 101, 518, 39, 525, 102, 40, 41, 42,
+ 43, 44, 517, 523, 45, 46, 47, 48, 49, 50,
+ 51, 194, 195, 196, 197, 198, 199, 200, 526, 52,
+ 530, 537, 201, 538, 554, 202, 203, 204, 205, 551,
+ 555, -3, 85, 566, 53, 54, 567, 55, 568, 56,
+ 57, 18, 83, 570, 19, 108, 58, 20, 579, 244,
+ 21, 22, 23, 86, 540, 24, 25, 26, 27, 28,
+ 29, 30, 429, 31, 32, 33, 34, 35, 36, 87,
+ 107, 88, 89, 90, 37, 38, 91, 92, 93, 94,
+ 95, 96, 186, 187, 576, 97, 98, 99, 100, 101,
+ 475, 39, 374, 102, 40, 41, 42, 43, 44, 391,
+ 450, 45, 46, 47, 48, 49, 50, 51, 195, 196,
+ 197, 198, 199, 200, 497, 449, 52, 528, 201, 279,
+ 506, 202, 203, 204, 205, 0, 441, 352, 0, 85,
0, 53, 54, 0, 55, 0, 56, 57, 18, 83,
- 0, 19, 0, 58, 20, 0, 0, 21, 22, 23,
+ 419, 19, 0, 58, 20, 0, 0, 21, 22, 23,
86, 0, 24, 25, 26, 27, 28, 29, 30, 0,
- 31, 32, 33, 34, 35, 36, 87, 106, 88, 89,
- 90, 37, 38, 91, 92, 93, 94, 95, 96, 0,
- 0, 0, 97, 98, 99, 100, 39, 0, 101, 40,
+ 31, 32, 33, 34, 35, 36, 87, 107, 88, 89,
+ 90, 37, 38, 91, 92, 93, 94, 95, 96, 186,
+ 187, 0, 97, 98, 99, 100, 101, 0, 39, 0,
+ 102, 40, 41, 42, 43, 44, 0, 0, 45, 46,
+ 47, 48, 49, 50, 51, 0, 0, 197, 198, 199,
+ 200, 0, 0, 52, 0, 201, 0, 0, 202, 203,
+ 204, 205, 0, 0, 0, 0, 85, 0, 53, 54,
+ 0, 55, 0, 56, 57, 18, 83, 491, 19, 0,
+ 58, 20, 0, 0, 21, 22, 23, 86, 0, 24,
+ 25, 26, 27, 28, 29, 30, 0, 31, 32, 33,
+ 34, 35, 36, 87, 107, 88, 89, 90, 37, 38,
+ 91, 92, 93, 94, 95, 96, 186, 187, 0, 97,
+ 98, 99, 100, 101, 0, 39, 0, 102, 40, 41,
+ 42, 43, 44, 0, 0, 45, 46, 47, 48, 49,
+ 50, 51, 0, 0, 0, 0, 199, 200, 0, 0,
+ 52, 0, 201, 0, 0, 202, 203, 204, 205, 0,
+ 0, 0, 0, 85, 0, 53, 54, 0, 55, 0,
+ 56, 57, 18, 83, 544, 19, 0, 58, 20, 0,
+ 0, 21, 22, 23, 86, 0, 24, 25, 26, 27,
+ 28, 29, 30, 0, 31, 32, 33, 34, 35, 36,
+ 87, 107, 88, 89, 90, 37, 38, 91, 92, 93,
+ 94, 95, 96, 186, 187, 0, 97, 98, 99, 100,
+ 101, 0, 39, 0, 102, 40, 41, 42, 43, 44,
+ 0, 0, 45, 46, 47, 48, 49, 50, 51, 0,
+ 0, 0, 0, 0, 200, 0, 0, 52, 0, 201,
+ 0, 0, 202, 203, 204, 205, 0, 0, 0, 0,
+ 85, 0, 53, 54, 0, 55, 0, 56, 57, 18,
+ 83, 545, 19, 0, 58, 20, 0, 0, 21, 22,
+ 23, 86, 0, 24, 25, 26, 27, 28, 29, 30,
+ 0, 31, 32, 33, 34, 35, 36, 87, 107, 88,
+ 89, 90, 37, 38, 91, 92, 93, 94, 95, 96,
+ 0, 0, 0, 97, 98, 99, 100, 101, 0, 39,
+ 0, 102, 40, 41, 42, 43, 44, 0, 0, 45,
+ 46, 47, 48, 49, 50, 51, 201, 0, 0, 202,
+ 203, 204, 205, 0, 52, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 85, 0, 53,
+ 54, 0, 55, 0, 56, 57, 18, 83, 547, 19,
+ 0, 58, 20, 0, 0, 21, 22, 23, 86, 0,
+ 24, 25, 26, 27, 28, 29, 30, 0, 31, 32,
+ 33, 34, 35, 36, 87, 107, 88, 89, 90, 37,
+ 38, 91, 92, 93, 94, 95, 96, 0, 0, 0,
+ 97, 98, 99, 100, 101, 0, 39, 0, 102, 40,
41, 42, 43, 44, 0, 0, 45, 46, 47, 48,
49, 50, 51, 0, 0, 0, 0, 0, 0, 0,
0, 52, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -486,70 +470,101 @@ static const yytype_int16 yytable[] =
0, 56, 57, 18, 83, 0, 19, 0, 58, 20,
0, 0, 21, 22, 23, 86, 0, 24, 25, 26,
27, 28, 29, 30, 0, 31, 32, 33, 34, 35,
- 36, 87, 0, 88, 89, 90, 37, 38, 91, 92,
+ 36, 87, 107, 88, 89, 90, 37, 38, 91, 92,
93, 94, 95, 96, 0, 0, 0, 97, 98, 99,
- 100, 39, 0, 101, 40, 41, 42, 43, 44, 0,
- 0, 45, 46, 47, 48, 49, 50, 51, 0, 0,
- 0, 0, 0, 0, 0, 0, 52, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 85, 0, 0, 0,
- 0, 53, 54, 0, 55, 18, 56, 57, 19, 0,
- 0, 20, 0, 58, 21, 22, 23, -78, 0, 24,
- 25, 26, 27, 28, 29, 30, 0, 31, 32, 33,
- 34, 35, 36, 0, 0, 0, 0, 0, 37, 38,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 39, 0, 0, 40, 41, 42, 43,
+ 100, 101, 0, 39, 0, 102, 40, 41, 42, 43,
44, 0, 0, 45, 46, 47, 48, 49, 50, 51,
- 0, 0, 0, 0, 0, 0, 0, 0, 52, 0,
+ 0, 0, 577, 0, 0, 0, 0, 0, 52, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 85, 0, 53, 54, 0, 55, 0, 56, 57,
+ 18, 83, 0, 19, 0, 58, 20, 0, 0, 21,
+ 22, 23, 86, 0, 24, 25, 26, 27, 28, 29,
+ 30, 0, 31, 32, 33, 34, 35, 36, 87, 107,
+ 88, 89, 90, 37, 38, 91, 92, 93, 94, 95,
+ 96, 0, 0, 0, 97, 98, 99, 100, 101, 0,
+ 39, 0, 102, 40, 41, 42, 43, 44, 0, 0,
+ 45, 46, 47, 48, 49, 50, 51, 0, 0, 0,
+ 0, 0, 0, 0, 0, 52, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 85, 0,
- 0, 0, 0, 53, 54, 0, 55, 18, 56, 57,
- 19, 0, 0, 20, 0, 58, 21, 22, 23, 0,
+ 53, 54, 0, 55, 0, 56, 57, 18, 83, 0,
+ 19, 0, 58, 20, 0, 0, 21, 22, 23, 86,
0, 24, 25, 26, 27, 28, 29, 30, 0, 31,
- 32, 33, 34, 35, 36, 0, 0, 0, 0, 0,
- 37, 38, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 39, 0, 0, 40, 41,
- 42, 43, 44, -214, 0, 45, 46, 47, 48, 49,
- 50, 51, 0, 0, 206, 0, 207, -214, -214, 0,
- 52, 0, 0, 0, 0, -214, -214, 0, 0, 0,
- 0, 0, 0, 0, 0, 53, 54, 0, 55, 0,
- 56, 57, 0, 0, 0, 0, -78, 58, 0, 0,
- -214, -214, -214, -214, 0, 0, 0, -214, 0, -214,
- 0, 0, -214, 0, 0, 0, 0, 0, 0, -214,
- -214, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -214, 0, -214, -214, 0, -214, -214, -214,
- -214, -214, -214, -214, -214, -214, -214, -214, -214, -214,
- -214, 0, 0, 0, 0, -214, 0, 0, -214, -214,
- -214, -214, -214, 18, 83, 0, 19, 0, 0, 20,
- 0, 0, 21, 22, 23, 0, 0, 24, 25, 143,
- 27, 28, 29, 30, 115, 31, 32, 33, 34, 35,
- 36, 0, 0, 0, 0, 0, 37, 38, 0, 0,
+ 32, 33, 34, 35, 36, 87, 0, 88, 89, 90,
+ 37, 38, 91, 92, 93, 94, 95, 96, 0, 0,
+ 0, 97, 98, 99, 100, 101, 0, 39, 0, 102,
+ 40, 41, 42, 43, 44, 0, 0, 45, 46, 47,
+ 48, 49, 50, 51, 0, 0, 0, 0, 0, 0,
+ 0, 0, 52, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 85, 0, 0, 0, 0, 53, 54, 0,
+ 55, 18, 56, 57, 19, 0, 0, 20, 0, 58,
+ 21, 22, 23, -81, 0, 24, 25, 26, 27, 28,
+ 29, 30, 0, 31, 32, 33, 34, 35, 36, 0,
+ 0, 0, 0, 0, 37, 38, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 39, 0, 0, 40, 41, 42, 43, 44, 0,
0, 45, 46, 47, 48, 49, 50, 51, 0, 0,
0, 0, 0, 0, 0, 0, 52, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 53, 54, 0, 55, 18, 56, 57, 19, 119,
+ 0, 0, 0, 0, 0, 0, 85, 0, 0, 0,
+ 0, 53, 54, 0, 55, 18, 56, 57, 19, 0,
0, 20, 0, 58, 21, 22, 23, 0, 0, 24,
25, 26, 27, 28, 29, 30, 0, 31, 32, 33,
34, 35, 36, 0, 0, 0, 0, 0, 37, 38,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 39, 0, 0, 40, 41, 42, 43,
- 44, 0, 0, 45, 46, 47, 48, 49, 50, 51,
- 0, 0, 0, 0, 0, 0, 0, 0, 52, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 53, 54, 0, 55, 0, 56, 57,
- 18, 83, 0, 19, 0, 58, 20, 0, 0, 21,
- 22, 23, 0, 0, 24, 25, 26, 27, 28, 29,
+ 0, 0, 0, 0, 0, 39, 0, 0, 40, 41,
+ 42, 43, 44, -217, 0, 45, 46, 47, 48, 49,
+ 50, 51, 0, 0, 207, 0, 208, -217, -217, 0,
+ 52, 0, 0, 0, 0, -217, -217, 0, 0, 0,
+ 0, 0, 0, 0, 0, 53, 54, 0, 55, 0,
+ 56, 57, 0, 0, 0, 0, -81, 58, 0, 0,
+ -217, -217, -217, -217, 0, 0, 0, -217, 0, -217,
+ 0, 0, 0, 0, -217, 0, 0, 0, 0, 0,
+ 0, -217, -217, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -217, 0, -217, -217, 0, -217,
+ -217, -217, -217, -217, -217, -217, -217, -217, -217, -217,
+ -217, -217, -217, -256, 186, 187, 0, -217, 0, 0,
+ -217, -217, -217, -217, -217, 0, 0, -256, -256, 0,
+ 0, 0, 0, 0, 0, -256, -256, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 0, 0, 0, 0,
+ 201, 0, 0, 202, 203, 204, 205, 0, 0, 0,
+ -256, -256, -256, -256, 0, 0, 0, -256, 0, -256,
+ 0, 0, 0, 0, -256, 0, 0, 0, 0, 0,
+ 0, -256, -256, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -256, 0, -256, -256, 0, -256,
+ -256, -256, -256, -256, -256, -256, -256, -256, -256, -256,
+ -256, -256, -256, 0, 0, 0, 0, -256, 0, 0,
+ -256, -256, -256, -256, -256, 18, 83, 0, 19, 0,
+ 0, 20, 0, 0, 21, 22, 23, 0, 0, 24,
+ 25, 144, 27, 28, 29, 30, 116, 31, 32, 33,
+ 34, 35, 36, 0, 0, 0, 0, 0, 37, 38,
+ 0, 0, 0, 0, 0, 0, 0, 0, 186, 187,
+ 0, 0, 0, 0, 0, 39, 0, 0, 40, 41,
+ 42, 43, 44, 0, 0, 45, 46, 47, 48, 49,
+ 50, 51, 193, 194, 195, 196, 197, 198, 199, 200,
+ 52, 0, 0, 0, 201, 0, 0, 202, 203, 204,
+ 205, 0, 0, 0, 0, 53, 54, 0, 55, 18,
+ 56, 57, 19, 120, 0, 20, 0, 58, 21, 22,
+ 23, 0, 0, 24, 25, 26, 27, 28, 29, 30,
+ 0, 31, 32, 33, 34, 35, 36, 0, 0, 0,
+ 0, 0, 37, 38, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 39,
+ 0, 0, 40, 41, 42, 43, 44, 0, 0, 45,
+ 46, 47, 48, 49, 50, 51, 0, 0, 0, 0,
+ 0, 0, 0, 0, 52, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 53,
+ 54, 0, 55, 0, 56, 57, 18, 83, 0, 19,
+ 0, 58, 20, 0, 0, 21, 22, 23, 0, 0,
+ 24, 25, 26, 27, 28, 29, 30, 0, 31, 32,
+ 33, 34, 35, 36, 0, 0, 0, 0, 0, 37,
+ 38, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 39, 0, 0, 40,
+ 41, 42, 43, 44, 0, 0, 45, 46, 47, 48,
+ 49, 50, 51, 0, 0, 0, 0, 0, 0, 0,
+ 0, 52, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 53, 54, 0, 55,
+ 18, 56, 57, 19, 0, 0, 20, 0, 58, 21,
+ 22, 23, 152, 0, 24, 25, 26, 27, 28, 29,
30, 0, 31, 32, 33, 34, 35, 36, 0, 0,
0, 0, 0, 37, 38, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 39, 0,
- 0, 40, 41, 42, 43, 44, 0, 0, 45, 46,
- 47, 48, 49, 50, 51, 0, 0, 0, 0, 0,
- 0, 0, 0, 52, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 53, 54,
- 0, 55, 18, 56, 57, 19, 0, 0, 20, 0,
- 58, 21, 22, 23, 151, 0, 24, 25, 26, 27,
- 28, 29, 30, 0, 31, 32, 33, 34, 35, 36,
- 0, 0, 0, 0, 0, 37, 38, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
39, 0, 0, 40, 41, 42, 43, 44, 0, 0,
45, 46, 47, 48, 49, 50, 51, 0, 0, 0,
@@ -560,554 +575,551 @@ static const yytype_int16 yytable[] =
26, 27, 28, 29, 30, 0, 31, 32, 33, 34,
35, 36, 0, 0, 0, 0, 0, 37, 38, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 39, 0, 0, 40, 41, 42, 43, 44,
- 0, 0, 45, 46, 47, 48, 49, 50, 51, 0,
- 0, 0, 0, 0, 0, 0, 0, 52, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 53, 54, 0, 55, 18, 56, 57, 19,
- 0, 0, 20, 170, 58, 21, 22, 23, 0, 0,
- 24, 25, 26, 27, 28, 29, 30, 0, 31, 32,
- 33, 34, 35, 36, 0, 0, 0, 0, 0, 37,
- 38, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 39, 0, 0, 40, 41, 42,
43, 44, 0, 0, 45, 46, 47, 48, 49, 50,
51, 0, 0, 0, 0, 0, 0, 0, 0, 52,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 53, 54, 0, 55, 18, 56,
- 57, 19, 0, 0, 20, 265, 58, 21, 22, 23,
+ 57, 19, 0, 0, 20, 171, 58, 21, 22, 23,
0, 0, 24, 25, 26, 27, 28, 29, 30, 0,
31, 32, 33, 34, 35, 36, 0, 0, 0, 0,
0, 37, 38, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 39, 0, 0, 40,
- 41, 42, 43, 44, 0, 0, 45, 46, 47, 48,
- 49, 50, 51, 0, 0, 0, 0, 0, 0, 0,
- 0, 52, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 53, 54, 0, 55,
- 18, 56, 57, 19, 0, 0, 20, 280, 58, 21,
- 22, 23, 0, 0, 24, 25, 26, 27, 28, 29,
- 30, 0, 31, 32, 33, 34, 35, 36, 0, 0,
- 0, 0, 0, 37, 38, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 39, 0,
0, 40, 41, 42, 43, 44, 0, 0, 45, 46,
47, 48, 49, 50, 51, 0, 0, 0, 0, 0,
0, 0, 0, 52, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 53, 54,
- 0, 55, 18, 56, 57, 19, 0, 0, 20, 291,
+ 0, 55, 18, 56, 57, 19, 0, 0, 20, 268,
58, 21, 22, 23, 0, 0, 24, 25, 26, 27,
28, 29, 30, 0, 31, 32, 33, 34, 35, 36,
0, 0, 0, 0, 0, 37, 38, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 39, 0, 0, 40, 41, 42, 43, 44, 0, 0,
- 45, 46, 47, 48, 49, 50, 51, 0, 0, 0,
- 0, 0, 0, 0, 0, 52, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 53, 54, 0, 55, 18, 56, 57, 19, 0, 0,
- 20, 324, 58, 21, 22, 23, 0, 0, 24, 25,
- 26, 27, 28, 29, 30, 0, 31, 32, 33, 34,
- 35, 36, 0, 0, 0, 0, 0, 37, 38, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 39, 0, 0, 40, 41, 42, 43, 44,
0, 0, 45, 46, 47, 48, 49, 50, 51, 0,
0, 0, 0, 0, 0, 0, 0, 52, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 53, 54, 0, 55, 18, 56, 57, 19,
- 0, 0, 20, 384, 58, 21, 22, 23, 0, 0,
+ 0, 0, 20, 283, 58, 21, 22, 23, 0, 0,
24, 25, 26, 27, 28, 29, 30, 0, 31, 32,
33, 34, 35, 36, 0, 0, 0, 0, 0, 37,
38, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 39, 0, 0, 40,
+ 41, 42, 43, 44, 0, 0, 45, 46, 47, 48,
+ 49, 50, 51, 0, 0, 0, 0, 0, 0, 0,
+ 0, 52, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 53, 54, 0, 55,
+ 18, 56, 57, 19, 0, 0, 20, 294, 58, 21,
+ 22, 23, 0, 0, 24, 25, 26, 27, 28, 29,
+ 30, 0, 31, 32, 33, 34, 35, 36, 0, 0,
+ 0, 0, 0, 37, 38, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 39, 0, 0, 40, 41, 42, 43, 44, 0, 0,
+ 45, 46, 47, 48, 49, 50, 51, 0, 0, 0,
+ 0, 0, 0, 0, 0, 52, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 53, 54, 0, 55, 18, 56, 57, 19, 0, 0,
+ 20, 327, 58, 21, 22, 23, 0, 0, 24, 25,
+ 26, 27, 28, 29, 30, 0, 31, 32, 33, 34,
+ 35, 36, 0, 0, 0, 0, 0, 37, 38, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 39, 0, 0, 40, 41, 42,
43, 44, 0, 0, 45, 46, 47, 48, 49, 50,
51, 0, 0, 0, 0, 0, 0, 0, 0, 52,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 53, 54, 0, 55, 18, 56,
- 57, 19, 0, 0, 20, 403, 58, 21, 22, 23,
+ 57, 19, 0, 0, 20, 389, 58, 21, 22, 23,
0, 0, 24, 25, 26, 27, 28, 29, 30, 0,
31, 32, 33, 34, 35, 36, 0, 0, 0, 0,
0, 37, 38, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 39, 0,
+ 0, 40, 41, 42, 43, 44, 0, 0, 45, 46,
+ 47, 48, 49, 50, 51, 0, 0, 0, 0, 0,
+ 0, 0, 0, 52, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 53, 54,
+ 0, 55, 18, 56, 57, 19, 0, 0, 20, 408,
+ 58, 21, 22, 23, 0, 0, 24, 25, 26, 27,
+ 28, 29, 30, 0, 31, 32, 33, 34, 35, 36,
+ 0, 0, 0, 0, 0, 37, 38, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 39, 0, 0, 40, 41, 42, 43, 44,
+ 0, 0, 45, 46, 47, 48, 49, 50, 51, 0,
+ 0, 0, 0, 0, 0, 0, 0, 52, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 53, 54, 0, 55, 18, 56, 57, 19,
+ 0, 0, 20, 0, 58, 21, 22, 23, 0, 0,
+ 24, 25, 26, 27, 28, 29, 30, 0, 31, 32,
+ 33, 34, 35, 36, 0, 0, 0, 0, 0, 37,
+ 38, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 39, 0, 0, 40,
41, 42, 43, 44, 0, 0, 45, 46, 47, 48,
49, 50, 51, 0, 0, 0, 0, 0, 0, 0,
- 0, 52, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 53, 54, 0, 55,
- 18, 56, 57, 19, 0, 0, 20, 0, 58, 21,
- 22, 23, 0, 0, 24, 25, 26, 27, 28, 29,
- 30, 0, 31, 32, 33, 34, 35, 36, 0, 0,
- 0, 0, 0, 37, 38, 0, 0, 0, 0, 0,
- 0, 0, 504, 0, 0, 507, 0, 0, 39, 511,
- 512, 40, 41, 42, 43, 44, 0, 0, 45, 46,
- 47, 48, 49, 50, 51, 0, 0, 522, 523, 0,
- 0, 0, 0, 52, 0, 0, 0, 534, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 53, 54,
- 0, 55, 542, 56, 57, 0, 544, 545, 0, 0,
- 274, 0, 0, 0, 0, 0, 0, 0, 0, 184,
- 0, 0, 0, 0, 557, 0, 185, 186, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 565, 0,
- 0, 0, 0, 0, 187, 188, 570, 189, 190, 191,
- 192, 193, 194, 195, 196, 197, 198, 199, 0, 0,
- 0, 0, 200, 184, 0, 201, 202, 203, 204, 0,
- 185, 186, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
- 0, 189, 190, 191, 192, 193, 194, 195, 196, 197,
- 198, 199, 0, 0, 0, 0, 200, -290, 0, 201,
- 202, 203, 204, 0, 185, 186, 0, 0, 0, 0,
+ 0, 52, 0, 0, 185, 0, 0, 0, 0, 0,
+ 0, 186, 187, 0, 0, 0, 53, 54, 0, 55,
+ 0, 56, 57, 0, 0, 0, 0, 0, 277, 188,
+ 189, 399, 190, 191, 192, 193, 194, 195, 196, 197,
+ 198, 199, 200, 0, 0, 0, 0, 201, 185, 0,
+ 202, 203, 204, 205, 0, 186, 187, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 189, 190, 191, 192, 193,
- 194, 195, 196, 197, 198, 199, 185, 186, 0, 0,
- 200, 0, 0, 201, 202, 203, 204, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 191,
- 192, 193, 194, 195, 196, 197, 198, 199, 0, 0,
- 0, 0, 200, 0, 0, 201, 202, 203, 204
+ 0, 0, 0, 188, 189, 0, 190, 191, 192, 193,
+ 194, 195, 196, 197, 198, 199, 200, 0, 0, 0,
+ 0, 201, 0, 0, 202, 203, 204, 205
};
static const yytype_int16 yycheck[] =
{
- 17, 44, 10, 127, 9, 261, 50, 0, 50, 52,
- 353, 19, 139, 140, 16, 11, 11, 13, 20, 18,
- 473, 20, 24, 22, 12, 24, 25, 14, 27, 28,
- 22, 155, 16, 14, 13, 13, 16, 29, 14, 47,
- 20, 504, 14, 11, 24, 44, 45, 11, 11, 13,
- 58, 50, 14, 78, 22, 18, 11, 20, 13, 22,
- 13, 24, 25, 110, 27, 28, 18, 15, 14, 11,
- 22, 13, 24, 25, 110, 27, 28, 343, 83, 110,
- 43, 44, 45, 46, 127, 110, 92, 353, 22, 73,
- 356, 357, 44, 45, 81, 82, 75, 75, 97, 101,
- 81, 82, 565, 556, 147, 81, 82, 110, 110, 81,
- 82, 75, 155, 157, 110, 157, 14, 101, 106, 81,
- 82, 21, 130, 23, 81, 82, 110, 14, 255, 94,
- 138, 139, 140, 75, 34, 81, 82, 100, 26, 39,
- 14, 140, 11, 43, 13, 11, 46, 81, 82, 49,
- 158, 51, 109, 53, 54, 55, 56, 57, 157, 81,
- 82, 11, 418, 13, 172, 173, 15, 175, 176, 177,
- 133, 437, 81, 82, 23, 10, 11, 140, 13, 11,
- 224, 16, 224, 81, 82, 20, 22, 109, 140, 24,
- 25, 11, 27, 13, 81, 82, 213, 205, 206, 207,
- 208, 209, 210, 211, 212, 204, 75, 81, 82, 110,
- 476, 477, 468, 256, 219, 220, 221, 222, 223, 562,
- 225, 226, 22, 228, 229, 224, 110, 235, 236, 237,
- 238, 239, 240, 68, 81, 82, 11, 26, 10, 81,
- 82, 16, 31, 509, 16, 81, 82, 255, 20, 22,
- 374, 26, 24, 94, 95, 22, 31, 157, 22, 92,
- 93, 269, 109, 11, 22, 13, 274, 109, 22, 232,
- 237, 238, 239, 240, 174, 110, 284, 543, 405, 110,
- 180, 81, 82, 183, 184, 185, 186, 187, 188, 189,
- 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
- 200, 73, 81, 82, 110, 313, 314, 110, 81, 82,
- 354, 110, 354, 321, 81, 82, 315, 81, 82, 47,
- 48, 49, 50, 81, 82, 11, 54, 13, 56, 53,
- 109, 374, 340, 341, 342, 343, 81, 82, 51, 52,
- 81, 82, 215, 216, 22, 353, 345, 471, 356, 357,
- 355, 507, 315, 81, 82, 354, 78, 0, 81, 82,
- 110, 16, 89, 90, 109, 20, 522, 523, 109, 24,
- 375, 14, 15, 105, 106, 107, 108, 29, 534, 22,
- 23, 109, 390, 37, 38, 97, 109, 75, 544, 545,
- 102, 66, 67, 105, 106, 107, 108, 405, 109, 109,
- 12, 557, 75, 13, 47, 48, 49, 50, 26, 26,
- 415, 54, 101, 56, 419, 110, 59, 92, 93, 94,
- 95, 96, 97, 66, 67, 430, 31, 102, 471, 437,
- 105, 106, 107, 108, 15, 29, 79, 445, 81, 82,
- 79, 84, 85, 86, 87, 88, 89, 90, 91, 92,
- 93, 94, 95, 96, 97, 12, 109, 66, 67, 102,
- 29, 13, 105, 106, 107, 108, 109, 82, 476, 477,
- 487, 25, 489, 3, 4, 5, 6, 7, 8, 9,
- 25, 498, 25, 25, 59, 94, 95, 96, 97, 494,
- 25, 66, 67, 102, 394, 18, 105, 106, 107, 108,
- 508, 509, 110, 16, 26, 84, 110, 524, 109, 84,
- 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
- 95, 96, 97, 110, 12, 26, 12, 102, 0, 1,
- 105, 106, 107, 108, 12, 543, 12, 12, 10, 11,
- 440, 13, 559, 109, 16, 109, 109, 19, 20, 21,
- 22, 109, 24, 25, 26, 27, 28, 29, 30, 110,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 43, 44, 45, 46, 47, 48, 49, 50, 66,
- 67, 109, 54, 55, 56, 57, 58, 22, 60, 61,
- 62, 63, 64, 65, 109, 109, 68, 69, 70, 71,
- 72, 73, 74, 90, 91, 92, 93, 94, 95, 96,
- 97, 83, 79, 11, 11, 102, 12, 109, 105, 106,
- 107, 108, 22, 0, 1, 11, 98, 99, 22, 101,
- 110, 103, 104, 10, 11, 109, 13, 77, 110, 16,
- 109, 22, 19, 20, 21, 22, 22, 24, 25, 26,
- 27, 28, 29, 30, 109, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 66, 67, 109, 54, 55, 56,
- 57, 58, 110, 60, 61, 62, 63, 64, 65, 22,
- 109, 68, 69, 70, 71, 72, 73, 74, 17, 91,
- 92, 93, 94, 95, 96, 97, 83, 76, 109, 13,
- 102, 106, 508, 105, 106, 107, 108, 341, 109, 1,
- 417, 98, 99, 562, 101, 369, 103, 104, 10, 11,
- 12, 13, 276, 110, 16, 247, 370, 19, 20, 21,
- 22, 450, 24, 25, 26, 27, 28, 29, 30, 469,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 43, 44, 45, 46, 47, 48, 49, 50, 66,
- 67, 354, 54, 55, 56, 57, 58, 494, 60, 61,
- 62, 63, 64, 65, 157, 224, 68, 69, 70, 71,
- 72, 73, 74, -1, -1, -1, -1, -1, 11, 96,
- 97, 83, -1, 16, -1, 102, -1, -1, 105, 106,
- 107, 108, 25, 26, 1, -1, 98, 99, 31, 101,
- -1, 103, 104, 10, 11, 12, 13, -1, 110, 16,
- -1, -1, 19, 20, 21, 22, -1, 24, 25, 26,
- 27, 28, 29, 30, -1, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 66, 67, -1, 54, 55, 56,
- 57, 58, -1, 60, 61, 62, 63, 64, 65, -1,
- -1, 68, 69, 70, 71, 72, 73, 74, 102, -1,
- -1, 105, 106, 107, 108, 97, 83, -1, -1, -1,
- 102, -1, -1, 105, 106, 107, 108, -1, -1, 1,
- -1, 98, 99, -1, 101, -1, 103, 104, 10, 11,
- 12, 13, -1, 110, 16, -1, -1, 19, 20, 21,
- 22, -1, 24, 25, 26, 27, 28, 29, 30, -1,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 43, 44, 45, 46, 47, 48, 49, 50, 66,
- -1, -1, 54, 55, 56, 57, 58, -1, 60, 61,
- 62, 63, 64, 65, -1, -1, 68, 69, 70, 71,
- 72, 73, 74, -1, -1, -1, -1, -1, -1, -1,
- 97, 83, -1, -1, -1, 102, -1, -1, 105, 106,
- 107, 108, -1, -1, 1, -1, 98, 99, -1, 101,
- -1, 103, 104, 10, 11, 12, 13, -1, 110, 16,
- -1, -1, 19, 20, 21, 22, -1, 24, 25, 26,
- 27, 28, 29, 30, -1, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, -1, -1, -1, 54, 55, 56,
- 57, 58, -1, 60, 61, 62, 63, 64, 65, -1,
- -1, 68, 69, 70, 71, 72, 73, 74, -1, -1,
- -1, 47, 48, 49, 50, -1, 83, -1, 54, -1,
- 56, -1, -1, -1, -1, -1, -1, -1, -1, 1,
- -1, 98, 99, -1, 101, -1, 103, 104, 10, 11,
- 12, 13, -1, 110, 16, 81, 82, 19, 20, 21,
+ 17, 264, 10, 18, 9, 20, 128, 22, 44, 24,
+ 25, 19, 27, 28, 356, 16, 52, 50, 18, 50,
+ 12, 480, 22, 13, 24, 25, 14, 27, 28, 44,
+ 45, 512, 0, 80, 156, 50, 11, 10, 11, 47,
+ 13, 140, 141, 16, 44, 45, 112, 20, 14, 112,
+ 58, 24, 25, 11, 27, 11, 112, 13, 15, 14,
+ 18, 11, 20, 13, 22, 112, 24, 25, 14, 27,
+ 28, 96, 13, 11, 75, 13, 16, 112, 83, 14,
+ 20, 13, 97, 94, 24, 43, 44, 45, 46, 11,
+ 11, 15, 128, 26, 575, 83, 84, 70, 31, 23,
+ 346, 22, 103, 11, 14, 564, 83, 84, 14, 26,
+ 356, 112, 148, 359, 360, 107, 14, 83, 84, 14,
+ 156, 77, 21, 131, 23, 158, 141, 158, 83, 84,
+ 112, 139, 140, 141, 111, 34, 77, 83, 84, 112,
+ 39, 141, 100, 158, 43, 77, 22, 46, 83, 84,
+ 49, 159, 51, 112, 53, 54, 55, 56, 57, 258,
+ 423, 10, 112, 103, 112, 173, 174, 16, 176, 177,
+ 178, 20, 112, 83, 84, 24, 134, 83, 84, 11,
+ 11, 13, 13, 141, 22, 83, 84, 22, 83, 84,
+ 205, 29, 225, 22, 225, 22, 442, 214, 206, 207,
+ 208, 209, 210, 211, 212, 213, 22, 83, 84, 112,
+ 225, 22, 475, 22, 11, 220, 221, 222, 223, 224,
+ 112, 226, 227, 259, 229, 230, 75, 83, 84, 571,
+ 238, 239, 240, 241, 242, 243, 16, 483, 484, 11,
+ 20, 13, 83, 84, 24, 77, 77, 112, 83, 84,
+ 258, 22, 96, 97, 83, 84, 80, 379, 16, 158,
+ 53, 11, 20, 13, 272, 22, 24, 83, 84, 277,
+ 111, 517, 83, 84, 83, 84, 175, 235, 11, 287,
+ 13, 11, 181, 13, 112, 184, 185, 186, 187, 188,
+ 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
+ 199, 200, 201, 318, 111, 551, 83, 84, 316, 317,
+ 11, 410, 83, 84, 29, 16, 324, 83, 84, 83,
+ 84, 83, 84, 77, 357, 26, 357, 94, 95, 111,
+ 31, 83, 84, 348, 111, 343, 344, 345, 346, 51,
+ 52, 12, 357, 379, 361, 111, 77, 111, 356, 111,
+ 13, 359, 360, 358, 481, 482, 478, 68, 485, 111,
+ 318, 26, 489, 490, 83, 84, 26, 47, 48, 49,
+ 50, 216, 217, 112, 54, 380, 56, 47, 48, 49,
+ 50, 103, 509, 510, 54, 59, 56, 395, 99, 37,
+ 38, 518, 111, 104, 89, 90, 107, 108, 109, 110,
+ 515, 31, 410, 83, 84, 15, 533, 29, 81, 111,
+ 537, 538, 12, 83, 84, 420, 531, 532, 29, 424,
+ 13, 11, 25, 84, 25, 61, 16, 542, 555, 25,
+ 435, 111, 68, 69, 442, 25, 26, 552, 553, 566,
+ 25, 31, 478, 570, 452, 107, 108, 109, 110, 25,
+ 565, 87, 579, 89, 90, 91, 92, 93, 94, 95,
+ 96, 97, 98, 99, 240, 241, 242, 243, 104, 112,
+ 18, 107, 108, 109, 110, 483, 484, 26, 16, 496,
+ 112, 498, 86, 112, 61, 111, 12, 492, 112, 12,
+ 507, 68, 69, 12, 99, 12, 12, 26, 503, 104,
+ 399, 22, 107, 108, 109, 110, 521, 81, 516, 517,
+ 112, 11, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, 111, 111, 111, 11, 104, 111, 111,
+ 107, 108, 109, 110, 0, 1, 3, 4, 5, 6,
+ 7, 8, 9, 551, 10, 11, 111, 13, 447, 111,
+ 16, 568, 12, 19, 20, 21, 22, 111, 24, 25,
+ 26, 27, 28, 29, 30, 22, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
+ 46, 47, 48, 49, 50, 22, 68, 69, 54, 55,
+ 56, 57, 58, 111, 60, 79, 62, 63, 64, 65,
+ 66, 67, 112, 111, 70, 71, 72, 73, 74, 75,
+ 76, 93, 94, 95, 96, 97, 98, 99, 22, 85,
+ 22, 111, 104, 111, 22, 107, 108, 109, 110, 112,
+ 111, 0, 1, 111, 100, 101, 17, 103, 78, 105,
+ 106, 10, 11, 111, 13, 13, 112, 16, 111, 107,
+ 19, 20, 21, 22, 516, 24, 25, 26, 27, 28,
+ 29, 30, 344, 32, 33, 34, 35, 36, 37, 38,
+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+ 49, 50, 68, 69, 571, 54, 55, 56, 57, 58,
+ 422, 60, 250, 62, 63, 64, 65, 66, 67, 279,
+ 375, 70, 71, 72, 73, 74, 75, 76, 94, 95,
+ 96, 97, 98, 99, 457, 374, 85, 503, 104, 158,
+ 476, 107, 108, 109, 110, -1, 357, 225, -1, 1,
+ -1, 100, 101, -1, 103, -1, 105, 106, 10, 11,
+ 12, 13, -1, 112, 16, -1, -1, 19, 20, 21,
22, -1, 24, 25, 26, 27, 28, 29, 30, -1,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 43, 44, 45, 46, 47, 48, 49, 50, -1,
- -1, -1, 54, 55, 56, 57, 58, -1, 60, 61,
- 62, 63, 64, 65, -1, -1, 68, 69, 70, 71,
- 72, 73, 74, -1, -1, -1, -1, -1, -1, -1,
- -1, 83, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 1, -1, 98, 99, -1, 101,
- -1, 103, 104, 10, 11, -1, 13, -1, 110, 16,
+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 68,
+ 69, -1, 54, 55, 56, 57, 58, -1, 60, -1,
+ 62, 63, 64, 65, 66, 67, -1, -1, 70, 71,
+ 72, 73, 74, 75, 76, -1, -1, 96, 97, 98,
+ 99, -1, -1, 85, -1, 104, -1, -1, 107, 108,
+ 109, 110, -1, -1, -1, -1, 1, -1, 100, 101,
+ -1, 103, -1, 105, 106, 10, 11, 12, 13, -1,
+ 112, 16, -1, -1, 19, 20, 21, 22, -1, 24,
+ 25, 26, 27, 28, 29, 30, -1, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 68, 69, -1, 54,
+ 55, 56, 57, 58, -1, 60, -1, 62, 63, 64,
+ 65, 66, 67, -1, -1, 70, 71, 72, 73, 74,
+ 75, 76, -1, -1, -1, -1, 98, 99, -1, -1,
+ 85, -1, 104, -1, -1, 107, 108, 109, 110, -1,
+ -1, -1, -1, 1, -1, 100, 101, -1, 103, -1,
+ 105, 106, 10, 11, 12, 13, -1, 112, 16, -1,
+ -1, 19, 20, 21, 22, -1, 24, 25, 26, 27,
+ 28, 29, 30, -1, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 68, 69, -1, 54, 55, 56, 57,
+ 58, -1, 60, -1, 62, 63, 64, 65, 66, 67,
+ -1, -1, 70, 71, 72, 73, 74, 75, 76, -1,
+ -1, -1, -1, -1, 99, -1, -1, 85, -1, 104,
+ -1, -1, 107, 108, 109, 110, -1, -1, -1, -1,
+ 1, -1, 100, 101, -1, 103, -1, 105, 106, 10,
+ 11, 12, 13, -1, 112, 16, -1, -1, 19, 20,
+ 21, 22, -1, 24, 25, 26, 27, 28, 29, 30,
+ -1, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+ -1, -1, -1, 54, 55, 56, 57, 58, -1, 60,
+ -1, 62, 63, 64, 65, 66, 67, -1, -1, 70,
+ 71, 72, 73, 74, 75, 76, 104, -1, -1, 107,
+ 108, 109, 110, -1, 85, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 1, -1, 100,
+ 101, -1, 103, -1, 105, 106, 10, 11, 12, 13,
+ -1, 112, 16, -1, -1, 19, 20, 21, 22, -1,
+ 24, 25, 26, 27, 28, 29, 30, -1, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
+ 44, 45, 46, 47, 48, 49, 50, -1, -1, -1,
+ 54, 55, 56, 57, 58, -1, 60, -1, 62, 63,
+ 64, 65, 66, 67, -1, -1, 70, 71, 72, 73,
+ 74, 75, 76, -1, -1, -1, -1, -1, -1, -1,
+ -1, 85, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 1, -1, 100, 101, -1, 103,
+ -1, 105, 106, 10, 11, -1, 13, -1, 112, 16,
-1, -1, 19, 20, 21, 22, -1, 24, 25, 26,
27, 28, 29, 30, -1, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
47, 48, 49, 50, -1, -1, -1, 54, 55, 56,
- 57, 58, -1, 60, 61, 62, 63, 64, 65, -1,
- -1, 68, 69, 70, 71, 72, 73, 74, -1, -1,
- 77, -1, -1, -1, -1, -1, 83, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 1,
- -1, 98, 99, -1, 101, -1, 103, 104, 10, 11,
- -1, 13, -1, 110, 16, -1, -1, 19, 20, 21,
- 22, -1, 24, 25, 26, 27, 28, 29, 30, -1,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 43, 44, 45, 46, 47, 48, 49, 50, -1,
- -1, -1, 54, 55, 56, 57, 58, -1, 60, 61,
- 62, 63, 64, 65, -1, -1, 68, 69, 70, 71,
- 72, 73, 74, -1, -1, -1, -1, -1, -1, -1,
- -1, 83, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 1, -1, 98, 99, -1, 101,
- -1, 103, 104, 10, 11, -1, 13, -1, 110, 16,
- -1, -1, 19, 20, 21, 22, -1, 24, 25, 26,
- 27, 28, 29, 30, -1, 32, 33, 34, 35, 36,
- 37, 38, -1, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, -1, -1, -1, 54, 55, 56,
- 57, 58, -1, 60, 61, 62, 63, 64, 65, -1,
- -1, 68, 69, 70, 71, 72, 73, 74, -1, -1,
- -1, -1, -1, -1, -1, -1, 83, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 1, -1, -1, -1,
- -1, 98, 99, -1, 101, 10, 103, 104, 13, -1,
- -1, 16, -1, 110, 19, 20, 21, 22, -1, 24,
- 25, 26, 27, 28, 29, 30, -1, 32, 33, 34,
- 35, 36, 37, -1, -1, -1, -1, -1, 43, 44,
+ 57, 58, -1, 60, -1, 62, 63, 64, 65, 66,
+ 67, -1, -1, 70, 71, 72, 73, 74, 75, 76,
+ -1, -1, 79, -1, -1, -1, -1, -1, 85, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 58, -1, -1, 61, 62, 63, 64,
- 65, -1, -1, 68, 69, 70, 71, 72, 73, 74,
- -1, -1, -1, -1, -1, -1, -1, -1, 83, -1,
+ -1, 1, -1, 100, 101, -1, 103, -1, 105, 106,
+ 10, 11, -1, 13, -1, 112, 16, -1, -1, 19,
+ 20, 21, 22, -1, 24, 25, 26, 27, 28, 29,
+ 30, -1, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, -1, -1, -1, 54, 55, 56, 57, 58, -1,
+ 60, -1, 62, 63, 64, 65, 66, 67, -1, -1,
+ 70, 71, 72, 73, 74, 75, 76, -1, -1, -1,
+ -1, -1, -1, -1, -1, 85, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 1, -1,
- -1, -1, -1, 98, 99, -1, 101, 10, 103, 104,
- 13, -1, -1, 16, -1, 110, 19, 20, 21, -1,
+ 100, 101, -1, 103, -1, 105, 106, 10, 11, -1,
+ 13, -1, 112, 16, -1, -1, 19, 20, 21, 22,
-1, 24, 25, 26, 27, 28, 29, 30, -1, 32,
- 33, 34, 35, 36, 37, -1, -1, -1, -1, -1,
- 43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 58, -1, -1, 61, 62,
- 63, 64, 65, 0, -1, 68, 69, 70, 71, 72,
- 73, 74, -1, -1, 11, -1, 13, 14, 15, -1,
- 83, -1, -1, -1, -1, 22, 23, -1, -1, -1,
- -1, -1, -1, -1, -1, 98, 99, -1, 101, -1,
- 103, 104, -1, -1, -1, -1, 109, 110, -1, -1,
- 47, 48, 49, 50, -1, -1, -1, 54, -1, 56,
- -1, -1, 59, -1, -1, -1, -1, -1, -1, 66,
- 67, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 79, -1, 81, 82, -1, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, -1, -1, -1, -1, 102, -1, -1, 105, 106,
- 107, 108, 109, 10, 11, -1, 13, -1, -1, 16,
- -1, -1, 19, 20, 21, -1, -1, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, -1, -1, -1, -1, -1, 43, 44, -1, -1,
+ 33, 34, 35, 36, 37, 38, -1, 40, 41, 42,
+ 43, 44, 45, 46, 47, 48, 49, 50, -1, -1,
+ -1, 54, 55, 56, 57, 58, -1, 60, -1, 62,
+ 63, 64, 65, 66, 67, -1, -1, 70, 71, 72,
+ 73, 74, 75, 76, -1, -1, -1, -1, -1, -1,
+ -1, -1, 85, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 1, -1, -1, -1, -1, 100, 101, -1,
+ 103, 10, 105, 106, 13, -1, -1, 16, -1, 112,
+ 19, 20, 21, 22, -1, 24, 25, 26, 27, 28,
+ 29, 30, -1, 32, 33, 34, 35, 36, 37, -1,
+ -1, -1, -1, -1, 43, 44, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 58, -1, -1, 61, 62, 63, 64, 65, -1,
- -1, 68, 69, 70, 71, 72, 73, 74, -1, -1,
- -1, -1, -1, -1, -1, -1, 83, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 98, 99, -1, 101, 10, 103, 104, 13, 14,
- -1, 16, -1, 110, 19, 20, 21, -1, -1, 24,
+ -1, 60, -1, -1, 63, 64, 65, 66, 67, -1,
+ -1, 70, 71, 72, 73, 74, 75, 76, -1, -1,
+ -1, -1, -1, -1, -1, -1, 85, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 1, -1, -1, -1,
+ -1, 100, 101, -1, 103, 10, 105, 106, 13, -1,
+ -1, 16, -1, 112, 19, 20, 21, -1, -1, 24,
25, 26, 27, 28, 29, 30, -1, 32, 33, 34,
35, 36, 37, -1, -1, -1, -1, -1, 43, 44,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 58, -1, -1, 61, 62, 63, 64,
- 65, -1, -1, 68, 69, 70, 71, 72, 73, 74,
- -1, -1, -1, -1, -1, -1, -1, -1, 83, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 98, 99, -1, 101, -1, 103, 104,
- 10, 11, -1, 13, -1, 110, 16, -1, -1, 19,
- 20, 21, -1, -1, 24, 25, 26, 27, 28, 29,
+ -1, -1, -1, -1, -1, 60, -1, -1, 63, 64,
+ 65, 66, 67, 0, -1, 70, 71, 72, 73, 74,
+ 75, 76, -1, -1, 11, -1, 13, 14, 15, -1,
+ 85, -1, -1, -1, -1, 22, 23, -1, -1, -1,
+ -1, -1, -1, -1, -1, 100, 101, -1, 103, -1,
+ 105, 106, -1, -1, -1, -1, 111, 112, -1, -1,
+ 47, 48, 49, 50, -1, -1, -1, 54, -1, 56,
+ -1, -1, -1, -1, 61, -1, -1, -1, -1, -1,
+ -1, 68, 69, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 81, -1, 83, 84, -1, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, 0, 68, 69, -1, 104, -1, -1,
+ 107, 108, 109, 110, 111, -1, -1, 14, 15, -1,
+ -1, -1, -1, -1, -1, 22, 23, 91, 92, 93,
+ 94, 95, 96, 97, 98, 99, -1, -1, -1, -1,
+ 104, -1, -1, 107, 108, 109, 110, -1, -1, -1,
+ 47, 48, 49, 50, -1, -1, -1, 54, -1, 56,
+ -1, -1, -1, -1, 61, -1, -1, -1, -1, -1,
+ -1, 68, 69, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 81, -1, 83, 84, -1, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, -1, -1, -1, -1, 104, -1, -1,
+ 107, 108, 109, 110, 111, 10, 11, -1, 13, -1,
+ -1, 16, -1, -1, 19, 20, 21, -1, -1, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, -1, -1, -1, -1, -1, 43, 44,
+ -1, -1, -1, -1, -1, -1, -1, -1, 68, 69,
+ -1, -1, -1, -1, -1, 60, -1, -1, 63, 64,
+ 65, 66, 67, -1, -1, 70, 71, 72, 73, 74,
+ 75, 76, 92, 93, 94, 95, 96, 97, 98, 99,
+ 85, -1, -1, -1, 104, -1, -1, 107, 108, 109,
+ 110, -1, -1, -1, -1, 100, 101, -1, 103, 10,
+ 105, 106, 13, 14, -1, 16, -1, 112, 19, 20,
+ 21, -1, -1, 24, 25, 26, 27, 28, 29, 30,
+ -1, 32, 33, 34, 35, 36, 37, -1, -1, -1,
+ -1, -1, 43, 44, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 60,
+ -1, -1, 63, 64, 65, 66, 67, -1, -1, 70,
+ 71, 72, 73, 74, 75, 76, -1, -1, -1, -1,
+ -1, -1, -1, -1, 85, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 100,
+ 101, -1, 103, -1, 105, 106, 10, 11, -1, 13,
+ -1, 112, 16, -1, -1, 19, 20, 21, -1, -1,
+ 24, 25, 26, 27, 28, 29, 30, -1, 32, 33,
+ 34, 35, 36, 37, -1, -1, -1, -1, -1, 43,
+ 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 60, -1, -1, 63,
+ 64, 65, 66, 67, -1, -1, 70, 71, 72, 73,
+ 74, 75, 76, -1, -1, -1, -1, -1, -1, -1,
+ -1, 85, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 100, 101, -1, 103,
+ 10, 105, 106, 13, -1, -1, 16, -1, 112, 19,
+ 20, 21, 22, -1, 24, 25, 26, 27, 28, 29,
30, -1, 32, 33, 34, 35, 36, 37, -1, -1,
-1, -1, -1, 43, 44, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 58, -1,
- -1, 61, 62, 63, 64, 65, -1, -1, 68, 69,
- 70, 71, 72, 73, 74, -1, -1, -1, -1, -1,
- -1, -1, -1, 83, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 98, 99,
- -1, 101, 10, 103, 104, 13, -1, -1, 16, -1,
- 110, 19, 20, 21, 22, -1, 24, 25, 26, 27,
- 28, 29, 30, -1, 32, 33, 34, 35, 36, 37,
- -1, -1, -1, -1, -1, 43, 44, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 58, -1, -1, 61, 62, 63, 64, 65, -1, -1,
- 68, 69, 70, 71, 72, 73, 74, -1, -1, -1,
- -1, -1, -1, -1, -1, 83, -1, -1, -1, -1,
+ 60, -1, -1, 63, 64, 65, 66, 67, -1, -1,
+ 70, 71, 72, 73, 74, 75, 76, -1, -1, -1,
+ -1, -1, -1, -1, -1, 85, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 98, 99, -1, 101, 10, 103, 104, 13, -1, -1,
- 16, -1, 110, 19, 20, 21, -1, -1, 24, 25,
+ 100, 101, -1, 103, 10, 105, 106, 13, -1, -1,
+ 16, -1, 112, 19, 20, 21, -1, -1, 24, 25,
26, 27, 28, 29, 30, -1, 32, 33, 34, 35,
36, 37, -1, -1, -1, -1, -1, 43, 44, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 58, -1, -1, 61, 62, 63, 64, 65,
- -1, -1, 68, 69, 70, 71, 72, 73, 74, -1,
- -1, -1, -1, -1, -1, -1, -1, 83, -1, -1,
+ -1, -1, -1, -1, 60, -1, -1, 63, 64, 65,
+ 66, 67, -1, -1, 70, 71, 72, 73, 74, 75,
+ 76, -1, -1, -1, -1, -1, -1, -1, -1, 85,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 98, 99, -1, 101, 10, 103, 104, 13,
- -1, -1, 16, 109, 110, 19, 20, 21, -1, -1,
- 24, 25, 26, 27, 28, 29, 30, -1, 32, 33,
- 34, 35, 36, 37, -1, -1, -1, -1, -1, 43,
- 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 58, -1, -1, 61, 62, 63,
- 64, 65, -1, -1, 68, 69, 70, 71, 72, 73,
- 74, -1, -1, -1, -1, -1, -1, -1, -1, 83,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 98, 99, -1, 101, 10, 103,
- 104, 13, -1, -1, 16, 109, 110, 19, 20, 21,
+ -1, -1, -1, -1, 100, 101, -1, 103, 10, 105,
+ 106, 13, -1, -1, 16, 111, 112, 19, 20, 21,
-1, -1, 24, 25, 26, 27, 28, 29, 30, -1,
32, 33, 34, 35, 36, 37, -1, -1, -1, -1,
-1, 43, 44, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 58, -1, -1, 61,
- 62, 63, 64, 65, -1, -1, 68, 69, 70, 71,
- 72, 73, 74, -1, -1, -1, -1, -1, -1, -1,
- -1, 83, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 98, 99, -1, 101,
- 10, 103, 104, 13, -1, -1, 16, 109, 110, 19,
+ -1, -1, -1, -1, -1, -1, -1, -1, 60, -1,
+ -1, 63, 64, 65, 66, 67, -1, -1, 70, 71,
+ 72, 73, 74, 75, 76, -1, -1, -1, -1, -1,
+ -1, -1, -1, 85, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 100, 101,
+ -1, 103, 10, 105, 106, 13, -1, -1, 16, 111,
+ 112, 19, 20, 21, -1, -1, 24, 25, 26, 27,
+ 28, 29, 30, -1, 32, 33, 34, 35, 36, 37,
+ -1, -1, -1, -1, -1, 43, 44, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 60, -1, -1, 63, 64, 65, 66, 67,
+ -1, -1, 70, 71, 72, 73, 74, 75, 76, -1,
+ -1, -1, -1, -1, -1, -1, -1, 85, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 100, 101, -1, 103, 10, 105, 106, 13,
+ -1, -1, 16, 111, 112, 19, 20, 21, -1, -1,
+ 24, 25, 26, 27, 28, 29, 30, -1, 32, 33,
+ 34, 35, 36, 37, -1, -1, -1, -1, -1, 43,
+ 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 60, -1, -1, 63,
+ 64, 65, 66, 67, -1, -1, 70, 71, 72, 73,
+ 74, 75, 76, -1, -1, -1, -1, -1, -1, -1,
+ -1, 85, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 100, 101, -1, 103,
+ 10, 105, 106, 13, -1, -1, 16, 111, 112, 19,
20, 21, -1, -1, 24, 25, 26, 27, 28, 29,
30, -1, 32, 33, 34, 35, 36, 37, -1, -1,
-1, -1, -1, 43, 44, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 58, -1,
- -1, 61, 62, 63, 64, 65, -1, -1, 68, 69,
- 70, 71, 72, 73, 74, -1, -1, -1, -1, -1,
- -1, -1, -1, 83, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 98, 99,
- -1, 101, 10, 103, 104, 13, -1, -1, 16, 109,
- 110, 19, 20, 21, -1, -1, 24, 25, 26, 27,
- 28, 29, 30, -1, 32, 33, 34, 35, 36, 37,
- -1, -1, -1, -1, -1, 43, 44, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 58, -1, -1, 61, 62, 63, 64, 65, -1, -1,
- 68, 69, 70, 71, 72, 73, 74, -1, -1, -1,
- -1, -1, -1, -1, -1, 83, -1, -1, -1, -1,
+ 60, -1, -1, 63, 64, 65, 66, 67, -1, -1,
+ 70, 71, 72, 73, 74, 75, 76, -1, -1, -1,
+ -1, -1, -1, -1, -1, 85, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 98, 99, -1, 101, 10, 103, 104, 13, -1, -1,
- 16, 109, 110, 19, 20, 21, -1, -1, 24, 25,
+ 100, 101, -1, 103, 10, 105, 106, 13, -1, -1,
+ 16, 111, 112, 19, 20, 21, -1, -1, 24, 25,
26, 27, 28, 29, 30, -1, 32, 33, 34, 35,
36, 37, -1, -1, -1, -1, -1, 43, 44, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 58, -1, -1, 61, 62, 63, 64, 65,
- -1, -1, 68, 69, 70, 71, 72, 73, 74, -1,
- -1, -1, -1, -1, -1, -1, -1, 83, -1, -1,
+ -1, -1, -1, -1, 60, -1, -1, 63, 64, 65,
+ 66, 67, -1, -1, 70, 71, 72, 73, 74, 75,
+ 76, -1, -1, -1, -1, -1, -1, -1, -1, 85,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 98, 99, -1, 101, 10, 103, 104, 13,
- -1, -1, 16, 109, 110, 19, 20, 21, -1, -1,
- 24, 25, 26, 27, 28, 29, 30, -1, 32, 33,
- 34, 35, 36, 37, -1, -1, -1, -1, -1, 43,
- 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 58, -1, -1, 61, 62, 63,
- 64, 65, -1, -1, 68, 69, 70, 71, 72, 73,
- 74, -1, -1, -1, -1, -1, -1, -1, -1, 83,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 98, 99, -1, 101, 10, 103,
- 104, 13, -1, -1, 16, 109, 110, 19, 20, 21,
+ -1, -1, -1, -1, 100, 101, -1, 103, 10, 105,
+ 106, 13, -1, -1, 16, 111, 112, 19, 20, 21,
-1, -1, 24, 25, 26, 27, 28, 29, 30, -1,
32, 33, 34, 35, 36, 37, -1, -1, -1, -1,
-1, 43, 44, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 58, -1, -1, 61,
- 62, 63, 64, 65, -1, -1, 68, 69, 70, 71,
- 72, 73, 74, -1, -1, -1, -1, -1, -1, -1,
- -1, 83, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 98, 99, -1, 101,
- 10, 103, 104, 13, -1, -1, 16, -1, 110, 19,
- 20, 21, -1, -1, 24, 25, 26, 27, 28, 29,
- 30, -1, 32, 33, 34, 35, 36, 37, -1, -1,
- -1, -1, -1, 43, 44, -1, -1, -1, -1, -1,
- -1, -1, 475, -1, -1, 478, -1, -1, 58, 482,
- 483, 61, 62, 63, 64, 65, -1, -1, 68, 69,
- 70, 71, 72, 73, 74, -1, -1, 500, 501, -1,
- -1, -1, -1, 83, -1, -1, -1, 510, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 98, 99,
- -1, 101, 525, 103, 104, -1, 529, 530, -1, -1,
- 110, -1, -1, -1, -1, -1, -1, -1, -1, 59,
- -1, -1, -1, -1, 547, -1, 66, 67, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 561, -1,
- -1, -1, -1, -1, 84, 85, 569, 87, 88, 89,
- 90, 91, 92, 93, 94, 95, 96, 97, -1, -1,
- -1, -1, 102, 59, -1, 105, 106, 107, 108, -1,
- 66, 67, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 85,
- -1, 87, 88, 89, 90, 91, 92, 93, 94, 95,
- 96, 97, -1, -1, -1, -1, 102, 59, -1, 105,
- 106, 107, 108, -1, 66, 67, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 60, -1,
+ -1, 63, 64, 65, 66, 67, -1, -1, 70, 71,
+ 72, 73, 74, 75, 76, -1, -1, -1, -1, -1,
+ -1, -1, -1, 85, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 100, 101,
+ -1, 103, 10, 105, 106, 13, -1, -1, 16, 111,
+ 112, 19, 20, 21, -1, -1, 24, 25, 26, 27,
+ 28, 29, 30, -1, 32, 33, 34, 35, 36, 37,
+ -1, -1, -1, -1, -1, 43, 44, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 87, 88, 89, 90, 91,
- 92, 93, 94, 95, 96, 97, 66, 67, -1, -1,
- 102, -1, -1, 105, 106, 107, 108, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 89,
- 90, 91, 92, 93, 94, 95, 96, 97, -1, -1,
- -1, -1, 102, -1, -1, 105, 106, 107, 108
+ -1, -1, 60, -1, -1, 63, 64, 65, 66, 67,
+ -1, -1, 70, 71, 72, 73, 74, 75, 76, -1,
+ -1, -1, -1, -1, -1, -1, -1, 85, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 100, 101, -1, 103, 10, 105, 106, 13,
+ -1, -1, 16, -1, 112, 19, 20, 21, -1, -1,
+ 24, 25, 26, 27, 28, 29, 30, -1, 32, 33,
+ 34, 35, 36, 37, -1, -1, -1, -1, -1, 43,
+ 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 60, -1, -1, 63,
+ 64, 65, 66, 67, -1, -1, 70, 71, 72, 73,
+ 74, 75, 76, -1, -1, -1, -1, -1, -1, -1,
+ -1, 85, -1, -1, 61, -1, -1, -1, -1, -1,
+ -1, 68, 69, -1, -1, -1, 100, 101, -1, 103,
+ -1, 105, 106, -1, -1, -1, -1, -1, 112, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, -1, -1, -1, -1, 104, 61, -1,
+ 107, 108, 109, 110, -1, 68, 69, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 86, 87, -1, 89, 90, 91, 92,
+ 93, 94, 95, 96, 97, 98, 99, -1, -1, -1,
+ -1, 104, -1, -1, 107, 108, 109, 110
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
symbol of state STATE-NUM. */
static const yytype_uint8 yystos[] =
{
- 0, 3, 4, 5, 6, 7, 8, 9, 112, 113,
- 114, 115, 116, 117, 118, 119, 0, 122, 10, 13,
+ 0, 3, 4, 5, 6, 7, 8, 9, 114, 115,
+ 116, 117, 118, 119, 120, 121, 0, 124, 10, 13,
16, 19, 20, 21, 24, 25, 26, 27, 28, 29,
- 30, 32, 33, 34, 35, 36, 37, 43, 44, 58,
- 61, 62, 63, 64, 65, 68, 69, 70, 71, 72,
- 73, 74, 83, 98, 99, 101, 103, 104, 110, 173,
- 174, 175, 178, 179, 180, 181, 182, 183, 184, 185,
- 186, 187, 189, 192, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 11, 120, 1, 22, 38, 40, 41,
+ 30, 32, 33, 34, 35, 36, 37, 43, 44, 60,
+ 63, 64, 65, 66, 67, 70, 71, 72, 73, 74,
+ 75, 76, 85, 100, 101, 103, 105, 106, 112, 177,
+ 178, 179, 182, 183, 184, 185, 186, 187, 188, 189,
+ 190, 191, 193, 196, 202, 203, 204, 205, 206, 207,
+ 208, 209, 210, 11, 122, 1, 22, 38, 40, 41,
42, 45, 46, 47, 48, 49, 50, 54, 55, 56,
- 57, 60, 120, 129, 140, 173, 39, 127, 128, 129,
- 125, 167, 168, 125, 26, 31, 120, 199, 207, 14,
- 173, 207, 187, 207, 187, 207, 207, 207, 207, 188,
- 13, 110, 187, 151, 151, 151, 187, 110, 110, 78,
- 110, 120, 187, 26, 174, 191, 199, 207, 207, 120,
- 187, 22, 173, 26, 31, 153, 187, 101, 110, 190,
- 199, 200, 201, 187, 174, 187, 187, 187, 187, 187,
- 109, 173, 81, 82, 15, 11, 13, 110, 94, 95,
- 94, 92, 93, 92, 59, 66, 67, 84, 85, 87,
- 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
- 102, 105, 106, 107, 108, 110, 11, 13, 11, 13,
- 11, 13, 11, 122, 152, 153, 153, 26, 150, 110,
- 110, 110, 110, 73, 101, 110, 197, 199, 110, 110,
- 120, 22, 53, 142, 22, 47, 48, 49, 50, 54,
- 56, 128, 129, 127, 16, 20, 24, 158, 159, 161,
- 162, 163, 164, 14, 191, 110, 78, 173, 109, 120,
- 29, 154, 75, 155, 109, 109, 173, 192, 192, 207,
- 174, 12, 22, 191, 110, 187, 190, 199, 200, 201,
- 109, 173, 75, 156, 13, 109, 173, 173, 187, 173,
- 173, 109, 173, 187, 187, 187, 187, 187, 187, 187,
- 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
- 187, 187, 10, 11, 13, 16, 20, 24, 25, 27,
- 68, 110, 177, 199, 109, 173, 173, 173, 173, 173,
- 173, 173, 173, 125, 26, 149, 150, 150, 26, 132,
- 122, 122, 122, 122, 101, 122, 73, 195, 196, 198,
- 199, 200, 201, 122, 122, 110, 122, 122, 120, 139,
- 173, 146, 173, 139, 139, 139, 139, 31, 157, 157,
- 15, 192, 174, 14, 176, 155, 29, 122, 172, 109,
- 79, 109, 173, 12, 109, 173, 156, 109, 29, 173,
- 13, 22, 14, 109, 86, 25, 173, 173, 25, 25,
- 25, 25, 25, 109, 173, 110, 109, 22, 14, 22,
- 14, 22, 14, 22, 12, 18, 121, 130, 131, 11,
- 22, 26, 145, 173, 146, 147, 173, 147, 194, 199,
- 110, 140, 144, 147, 148, 173, 195, 122, 147, 147,
- 84, 160, 160, 162, 109, 23, 193, 191, 122, 170,
- 110, 165, 166, 109, 109, 14, 173, 12, 187, 22,
- 14, 109, 192, 12, 12, 12, 12, 122, 154, 155,
- 122, 26, 109, 109, 109, 109, 110, 122, 109, 22,
- 135, 147, 109, 109, 187, 173, 79, 11, 167, 11,
- 14, 12, 109, 22, 155, 22, 171, 172, 136, 191,
- 143, 143, 11, 123, 123, 147, 147, 123, 133, 110,
- 109, 123, 123, 125, 109, 125, 77, 22, 169, 170,
- 125, 22, 123, 123, 124, 51, 52, 141, 141, 109,
- 109, 142, 145, 147, 123, 12, 12, 126, 12, 142,
- 142, 125, 123, 110, 123, 123, 22, 109, 142, 22,
- 29, 137, 12, 147, 142, 142, 134, 123, 17, 76,
- 138, 109, 143, 142, 125, 123, 148, 77, 141, 109,
- 123
+ 57, 58, 62, 122, 131, 144, 177, 39, 129, 130,
+ 131, 127, 171, 172, 127, 26, 31, 122, 203, 211,
+ 14, 177, 211, 191, 211, 191, 211, 211, 211, 211,
+ 192, 13, 112, 191, 155, 155, 155, 191, 112, 112,
+ 80, 112, 122, 191, 26, 178, 195, 203, 211, 211,
+ 122, 191, 22, 177, 26, 31, 157, 191, 103, 112,
+ 194, 203, 204, 205, 191, 178, 191, 191, 191, 191,
+ 191, 111, 177, 83, 84, 15, 11, 13, 112, 96,
+ 97, 96, 94, 95, 94, 61, 68, 69, 86, 87,
+ 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
+ 99, 104, 107, 108, 109, 110, 112, 11, 13, 11,
+ 13, 11, 13, 11, 124, 156, 157, 157, 26, 154,
+ 112, 112, 112, 112, 75, 103, 112, 201, 203, 112,
+ 112, 122, 11, 125, 22, 53, 146, 22, 47, 48,
+ 49, 50, 54, 56, 130, 131, 129, 16, 20, 24,
+ 162, 163, 165, 166, 167, 168, 14, 195, 112, 80,
+ 177, 111, 122, 29, 158, 77, 159, 111, 111, 177,
+ 196, 196, 211, 178, 12, 22, 195, 112, 191, 194,
+ 203, 204, 205, 111, 177, 77, 160, 13, 111, 177,
+ 177, 191, 177, 177, 111, 177, 191, 191, 191, 191,
+ 191, 191, 191, 191, 191, 191, 191, 191, 191, 191,
+ 191, 191, 191, 191, 191, 10, 11, 13, 16, 20,
+ 24, 25, 27, 70, 112, 181, 203, 111, 177, 177,
+ 177, 177, 177, 177, 177, 177, 127, 26, 153, 154,
+ 154, 26, 134, 124, 124, 124, 124, 103, 124, 75,
+ 199, 200, 202, 203, 204, 205, 124, 124, 112, 124,
+ 124, 126, 59, 122, 143, 177, 150, 177, 143, 143,
+ 143, 143, 31, 161, 161, 15, 196, 178, 14, 180,
+ 159, 29, 124, 176, 111, 81, 111, 177, 12, 111,
+ 177, 160, 111, 29, 177, 13, 22, 14, 111, 88,
+ 25, 177, 177, 25, 25, 25, 25, 25, 111, 177,
+ 112, 111, 22, 14, 22, 14, 22, 14, 22, 12,
+ 18, 123, 132, 133, 11, 22, 26, 149, 177, 150,
+ 151, 177, 151, 198, 203, 112, 144, 148, 151, 152,
+ 177, 199, 124, 151, 151, 127, 112, 86, 164, 164,
+ 166, 111, 23, 197, 195, 124, 174, 112, 169, 170,
+ 111, 111, 14, 177, 12, 191, 22, 14, 111, 196,
+ 12, 12, 12, 12, 124, 158, 159, 124, 26, 111,
+ 111, 111, 111, 112, 124, 111, 22, 137, 151, 111,
+ 111, 12, 138, 191, 177, 81, 11, 171, 11, 14,
+ 12, 111, 22, 159, 22, 175, 176, 140, 195, 147,
+ 147, 125, 125, 151, 151, 125, 135, 112, 111, 125,
+ 125, 124, 127, 111, 127, 79, 22, 173, 174, 127,
+ 22, 125, 125, 51, 52, 145, 145, 111, 111, 146,
+ 149, 151, 125, 203, 12, 12, 128, 12, 146, 146,
+ 125, 112, 125, 125, 22, 111, 146, 139, 22, 29,
+ 141, 151, 146, 146, 136, 125, 111, 17, 78, 142,
+ 111, 147, 146, 125, 127, 125, 152, 79, 145, 111,
+ 125
};
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const yytype_uint8 yyr1[] =
{
- 0, 111, 113, 112, 114, 112, 115, 112, 116, 112,
- 117, 112, 118, 112, 119, 112, 120, 121, 122, 123,
- 124, 125, 125, 126, 126, 127, 127, 128, 128, 129,
- 129, 130, 129, 131, 129, 129, 132, 129, 129, 129,
- 129, 129, 129, 129, 129, 133, 134, 129, 129, 129,
- 135, 129, 129, 129, 129, 136, 129, 129, 129, 129,
- 137, 138, 138, 139, 140, 140, 140, 140, 140, 140,
- 140, 140, 141, 141, 141, 142, 142, 143, 144, 144,
- 145, 145, 146, 147, 148, 149, 149, 150, 151, 152,
- 153, 153, 154, 154, 155, 155, 155, 156, 156, 157,
- 157, 158, 158, 159, 160, 160, 160, 161, 162, 162,
- 163, 163, 163, 164, 164, 165, 165, 166, 168, 167,
- 169, 169, 170, 171, 171, 172, 173, 173, 173, 174,
- 174, 174, 175, 175, 175, 175, 175, 175, 175, 175,
- 175, 176, 175, 177, 177, 178, 178, 178, 178, 178,
- 178, 178, 178, 178, 178, 178, 178, 178, 178, 179,
- 179, 179, 179, 179, 179, 179, 179, 179, 179, 179,
- 179, 179, 179, 180, 180, 180, 180, 181, 181, 182,
- 182, 182, 182, 183, 183, 184, 184, 184, 184, 184,
- 184, 184, 184, 184, 185, 185, 185, 185, 185, 185,
- 186, 186, 187, 187, 187, 187, 187, 187, 187, 187,
- 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
- 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
- 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
- 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
- 187, 188, 187, 187, 187, 187, 189, 189, 189, 190,
- 190, 190, 190, 190, 191, 191, 192, 192, 193, 193,
- 194, 195, 195, 195, 196, 196, 197, 197, 198, 199,
- 200, 201, 202, 202, 203, 204, 204, 205, 205, 206,
- 206, 207, 207, 207, 207
+ 0, 113, 115, 114, 116, 114, 117, 114, 118, 114,
+ 119, 114, 120, 114, 121, 114, 122, 123, 124, 125,
+ 126, 127, 127, 128, 128, 129, 129, 130, 130, 131,
+ 131, 132, 131, 133, 131, 131, 134, 131, 131, 131,
+ 131, 131, 131, 131, 131, 135, 136, 131, 131, 131,
+ 137, 131, 131, 131, 138, 139, 131, 131, 140, 131,
+ 131, 131, 131, 141, 142, 142, 143, 144, 144, 144,
+ 144, 144, 144, 144, 144, 145, 145, 145, 146, 146,
+ 147, 148, 148, 149, 149, 150, 151, 152, 153, 153,
+ 154, 155, 156, 157, 157, 158, 158, 159, 159, 159,
+ 160, 160, 161, 161, 162, 162, 163, 164, 164, 164,
+ 165, 166, 166, 167, 167, 167, 168, 168, 169, 169,
+ 170, 172, 171, 173, 173, 174, 175, 175, 176, 177,
+ 177, 177, 178, 178, 178, 179, 179, 179, 179, 179,
+ 179, 179, 179, 179, 180, 179, 181, 181, 182, 182,
+ 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
+ 182, 182, 183, 183, 183, 183, 183, 183, 183, 183,
+ 183, 183, 183, 183, 183, 183, 184, 184, 184, 184,
+ 185, 185, 186, 186, 186, 186, 187, 187, 188, 188,
+ 188, 188, 188, 188, 188, 188, 188, 189, 189, 189,
+ 189, 189, 189, 190, 190, 191, 191, 191, 191, 191,
+ 191, 191, 191, 191, 191, 191, 191, 191, 191, 191,
+ 191, 191, 191, 191, 191, 191, 191, 191, 191, 191,
+ 191, 191, 191, 191, 191, 191, 191, 191, 191, 191,
+ 191, 191, 191, 191, 191, 191, 191, 191, 191, 191,
+ 191, 191, 191, 191, 192, 191, 191, 191, 191, 193,
+ 193, 193, 194, 194, 194, 194, 194, 195, 195, 196,
+ 196, 197, 197, 198, 199, 199, 199, 200, 200, 201,
+ 201, 202, 203, 204, 205, 206, 206, 207, 208, 208,
+ 209, 209, 210, 210, 211, 211, 211, 211
};
/* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
-static const yytype_int8 yyr2[] =
+static const yytype_uint8 yyr2[] =
{
0, 2, 0, 4, 0, 3, 0, 3, 0, 3,
0, 3, 0, 3, 0, 3, 4, 7, 0, 4,
0, 0, 2, 0, 2, 1, 1, 2, 2, 1,
4, 0, 7, 0, 6, 4, 0, 7, 7, 7,
6, 6, 2, 8, 8, 0, 0, 13, 9, 8,
- 0, 10, 9, 7, 2, 0, 8, 2, 2, 1,
- 2, 0, 3, 1, 1, 1, 3, 3, 3, 3,
- 3, 3, 0, 2, 6, 0, 2, 0, 0, 1,
- 0, 1, 1, 1, 1, 1, 0, 0, 0, 0,
- 1, 1, 0, 1, 0, 2, 1, 2, 1, 0,
- 1, 1, 1, 3, 0, 1, 2, 3, 1, 1,
- 2, 3, 1, 0, 1, 0, 1, 3, 0, 2,
- 1, 1, 4, 1, 1, 5, 3, 3, 1, 2,
- 3, 1, 3, 5, 6, 3, 3, 5, 2, 4,
- 4, 0, 5, 1, 1, 5, 4, 5, 4, 5,
- 6, 5, 4, 5, 4, 3, 6, 4, 5, 3,
- 3, 3, 3, 3, 1, 1, 3, 3, 3, 3,
- 3, 3, 3, 1, 3, 2, 2, 3, 3, 1,
- 3, 2, 2, 3, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 4, 3, 5, 4,
- 2, 2, 1, 1, 1, 1, 5, 2, 3, 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,
- 2, 1, 1, 1, 0, 1, 0, 1, 0, 2,
- 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, 10, 9, 7, 0, 0, 10, 2, 0, 8,
+ 2, 2, 1, 2, 0, 3, 1, 1, 1, 3,
+ 3, 3, 3, 3, 3, 0, 2, 6, 0, 2,
+ 0, 0, 1, 0, 1, 1, 1, 1, 1, 0,
+ 0, 0, 0, 1, 1, 0, 1, 0, 2, 1,
+ 2, 1, 0, 1, 1, 1, 3, 0, 1, 2,
+ 3, 1, 1, 2, 3, 1, 0, 1, 0, 1,
+ 3, 0, 2, 1, 1, 4, 1, 1, 5, 3,
+ 3, 1, 2, 3, 1, 3, 5, 6, 3, 3,
+ 5, 2, 4, 4, 0, 5, 1, 1, 5, 4,
+ 5, 4, 5, 6, 5, 4, 5, 4, 3, 6,
+ 4, 5, 3, 3, 3, 3, 3, 1, 1, 3,
+ 3, 3, 3, 3, 3, 3, 1, 3, 2, 2,
+ 3, 3, 1, 3, 2, 2, 3, 3, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 3, 2, 4,
+ 3, 5, 4, 2, 2, 1, 1, 1, 1, 5,
+ 2, 3, 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, 2, 1, 1, 1, 0, 1, 0,
+ 1, 0, 2, 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 {
@@ -1128,34 +1140,34 @@ static const toketypes yy_type_tab[] =
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_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_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_ival, toketype_opval, 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_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_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_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_opval, toketype_opval,
+ toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, 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_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_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_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_ival, 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_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval
};
/* Generated from:
- * 9a5909b0af5f61f96907e330008f3cdc9dadcab1417c5bcb188cb3b9f6593c01 perly.y
+ * 672539c523be1568df09c599b38a828c80473c60e1fddd63764d66f74e4e7b11 perly.y
* acf1cbfd2545faeaaa58b1cf0cf9d7f98b5be0752eb7a54528ef904a9e2e1ca7 regen_perly.pl
* ex: set ro: */
diff --git a/perly.y b/perly.y
index 8e3630b581..42156e3a42 100644
--- a/perly.y
+++ b/perly.y
@@ -69,6 +69,7 @@
%token <ival> FORMAT SUB SIGSUB ANONSUB ANON_SIGSUB PACKAGE USE
%token <ival> WHILE UNTIL IF UNLESS ELSE ELSIF CONTINUE FOR
%token <ival> GIVEN WHEN DEFAULT
+%token <ival> TRY CATCH
%token <ival> LOOPEX DOTDOT YADAYADA
%token <ival> FUNC0 FUNC1 FUNC UNIOP LSTOP
%token <ival> MULOP ADDOP
@@ -459,6 +460,31 @@ barestmt: PLUGSTMT
newFOROP(0, NULL, $mexpr, $mblock, $cont));
parser->copline = (line_t)$FOR;
}
+ | TRY mblock[try] CATCH PERLY_PAREN_OPEN
+ { parser->in_my = 1; }
+ remember scalar
+ { parser->in_my = 0; intro_my(); }
+ PERLY_PAREN_CLOSE mblock[catch]
+ {
+ OP *tryblock, *catchblock;
+
+ tryblock = newUNOP(OP_ENTERTRY, OPf_SPECIAL, $try);
+
+ catchblock = newLOGOP(OP_CATCH, 0,
+ newOP(OP_NULL, 0), /* LOGOP always needs an op_first */
+ block_end($remember, op_scope($catch)));
+
+ /* catchblock itself is an OP_NULL; the real OP_CATCH is
+ * its op_first */
+ assert(cUNOPx(catchblock)->op_first->op_type == OP_CATCH);
+ cUNOPx(catchblock)->op_first->op_targ = $scalar->op_targ;
+ op_free($scalar);
+
+ $$ = op_append_list(OP_LEAVE,
+ newOP(OP_ENTER, 0),
+ op_append_list(OP_LINESEQ,
+ tryblock, catchblock));
+ }
| block cont
{
/* a block is a loop that happens once */
diff --git a/pod/perldelta.pod b/pod/perldelta.pod
index f858802a04..b021aeac35 100644
--- a/pod/perldelta.pod
+++ b/pod/perldelta.pod
@@ -21,9 +21,21 @@ XXX Any important notices here
=head1 Core Enhancements
-XXX New core language features go here. Summarize user-visible core language
-enhancements. Particularly prominent performance optimisations could go
-here, but most should go in the L</Performance Enhancements> section.
+=head2 Experimental Try/Catch Syntax
+
+An initial experimental attempt at providing C<try>/C<catch> notation has
+been added.
+
+ use feature 'try';
+
+ try {
+ a_function();
+ }
+ catch ($e) {
+ warn "An error occurred: $e";
+ }
+
+For more information, see L<perlsyn/"Try Catch Exception Handling">.
[ List each enhancement as a =head2 entry ]
diff --git a/pod/perldiag.pod b/pod/perldiag.pod
index 63f57f220e..98d159dc21 100644
--- a/pod/perldiag.pod
+++ b/pod/perldiag.pod
@@ -6453,6 +6453,12 @@ disallowed. See L<Safe>.
(F) Your machine doesn't implement a file truncation mechanism that
Configure knows about.
+=item try/catch is experimental
+
+(S experimental::try) This warning is emitted if you use the C<try> and
+C<catch> syntax. This syntax is currently experimental and its behaviour may
+change in future releases of Perl.
+
=item Type of arg %d to &CORE::%s must be %s
(F) The subroutine in question in the CORE package requires its argument
diff --git a/pod/perlsyn.pod b/pod/perlsyn.pod
index fa4b78a278..0ce267bfdb 100644
--- a/pod/perlsyn.pod
+++ b/pod/perlsyn.pod
@@ -282,6 +282,10 @@ The following compound statements may be used to control flow:
PHASE BLOCK
+If enabled by the experimental C<try> feature, the following may also be used
+
+ try BLOCK catch (VAR) BLOCK
+
The experimental C<given> statement is I<not automatically enabled>; see
L</"Switch Statements"> below for how to do so, and the attendant caveats.
@@ -606,6 +610,42 @@ block. The reward for this discovery is this cautionary advice: The
return value of a C<for> loop is unspecified and may change without notice.
Do not rely on it.
+=head2 Try Catch Exception Handling
+X<try> X<catch>
+
+The C<try>/C<catch> syntax provides control flow relating to exceptions
+handling. The C<try> keyword introduces a block which will be executed when it
+is encountered, and the C<catch> block provides code to handle any exception
+that may be thrown by the first.
+
+ try {
+ my $x = call_a_function();
+ $x < 100 or die "Too big";
+ send_output($x);
+ }
+ catch ($e) {
+ warn "Unable to output a value; $e";
+ }
+ print "Finished\n";
+
+Here, the body of the C<catch> block (i.e. the C<warn> statement) will be
+executed if the initial block invokes the conditional C<die>, or if either of
+the functions it invokes throw an uncaught exception. The C<catch> block can
+inspect the C<$e> lexical variable in this case to see what the exception was.
+If no exception was thrown then the C<catch> block does not happen. In either
+case, execution will then continue from the following statement - in this
+example the C<print>.
+
+The C<catch> keyword is immediately followed by a variable declaration in
+parentheses, which introduces a new variable visible to the body of the
+subsequent block. Inside the block this variable will contain the exception
+value that was thrown by the code in the C<try> block. It is not necessary
+to use the C<my> keyword to declare this variable; this is implied (similar
+as it is for function signatures).
+
+This syntax is currently experimental and must be enabled with
+C<use feature 'try'>. It emits a warning in the C<experimental::try> category.
+
=head2 Basic BLOCKs
X<block>
diff --git a/pp_ctl.c b/pp_ctl.c
index 11c015e0df..9e440dcd9b 100644
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -1335,10 +1335,13 @@ S_dopoptolabel(pTHX_ const char *label, STRLEN len, U32 flags)
for (i = cxstack_ix; i >= 0; i--) {
const PERL_CONTEXT * const cx = &cxstack[i];
switch (CxTYPE(cx)) {
+ case CXt_EVAL:
+ if(CxTRY(cx))
+ continue;
+ /* FALLTHROUGH */
case CXt_SUBST:
case CXt_SUB:
case CXt_FORMAT:
- case CXt_EVAL:
case CXt_NULL:
/* diag_listed_as: Exiting subroutine via %s */
Perl_ck_warner(aTHX_ packWARN(WARN_EXITING), "Exiting %s via %s",
@@ -1451,8 +1454,15 @@ S_dopoptosub_at(pTHX_ const PERL_CONTEXT *cxstk, I32 startingblock)
* code block. Hide this faked entry from the world. */
if (cx->cx_type & CXp_SUB_RE_FAKE)
continue;
- /* FALLTHROUGH */
+ DEBUG_l( Perl_deb(aTHX_ "(dopoptosub_at(): found sub at cx=%ld)\n", (long)i));
+ return i;
+
case CXt_EVAL:
+ if (CxTRY(cx))
+ continue;
+ DEBUG_l( Perl_deb(aTHX_ "(dopoptosub_at(): found sub at cx=%ld)\n", (long)i));
+ return i;
+
case CXt_FORMAT:
DEBUG_l( Perl_deb(aTHX_ "(dopoptosub_at(): found sub at cx=%ld)\n", (long)i));
return i;
@@ -1485,10 +1495,13 @@ S_dopoptoloop(pTHX_ I32 startingblock)
for (i = startingblock; i >= 0; i--) {
const PERL_CONTEXT * const cx = &cxstack[i];
switch (CxTYPE(cx)) {
+ case CXt_EVAL:
+ if(CxTRY(cx))
+ continue;
+ /* FALLTHROUGH */
case CXt_SUBST:
case CXt_SUB:
case CXt_FORMAT:
- case CXt_EVAL:
case CXt_NULL:
/* diag_listed_as: Exiting subroutine via %s */
Perl_ck_warner(aTHX_ packWARN(WARN_EXITING), "Exiting %s via %s",
@@ -2471,7 +2484,15 @@ PP(pp_return)
{
dSP; dMARK;
PERL_CONTEXT *cx;
- const I32 cxix = dopopto_cursub();
+ I32 cxix = dopopto_cursub();
+
+again:
+ cx = &cxstack[cxix];
+ if(CxTRY(cx)) {
+ /* This was a try {}. keep going */
+ cxix = dopoptosub_at(cxstack, cxix - 1);
+ goto again;
+ }
assert(cxstack_ix >= 0);
if (cxix < cxstack_ix) {
@@ -4593,6 +4614,22 @@ PP(pp_leaveeval)
return retop;
}
+PP(pp_catch)
+{
+ dTARGET;
+
+ if(!SvROK(ERRSV) && !SvTRUE(ERRSV)) {
+ /* ERRSV is neither an object nor true, therefore no exception happened */
+ return cLOGOP->op_next;
+ }
+
+ save_clearsv(&(PAD_SVl(PL_op->op_targ)));
+ sv_setsv(TARG, ERRSV);
+ CLEAR_ERRSV();
+
+ return cLOGOP->op_other;
+}
+
/* Common code for Perl_call_sv and Perl_fold_constants, put here to keep it
close to the related Perl_create_eval_scope. */
void
@@ -4631,10 +4668,29 @@ Perl_create_eval_scope(pTHX_ OP *retop, U32 flags)
PP(pp_entertry)
{
+ OP *retop = cLOGOP->op_other->op_next;
+
RUN_PP_CATCHABLY(Perl_pp_entertry);
assert(!CATCH_GET);
- create_eval_scope(cLOGOP->op_other->op_next, 0);
+
+ if(PL_op->op_flags & OPf_SPECIAL) { /* a try {} block */
+ PERL_CONTEXT *cx;
+ const U8 gimme = GIMME_V;
+
+ save_scalar(PL_errgv);
+ CLEAR_ERRSV();
+
+ cx = cx_pushblock((CXt_EVAL|CXp_EVALBLOCK|CXp_TRY), gimme,
+ PL_stack_sp, PL_savestack_ix);
+ cx_pusheval(cx, retop, NULL);
+
+ PL_in_eval = EVAL_INEVAL;
+ }
+ else { /* an eval {} block */
+ create_eval_scope(retop, 0);
+ }
+
return PL_op->op_next;
}
diff --git a/pp_proto.h b/pp_proto.h
index 6ddb1f6634..48558d31c2 100644
--- a/pp_proto.h
+++ b/pp_proto.h
@@ -34,6 +34,7 @@ PERL_CALLCONV OP *Perl_pp_bit_or(pTHX);
PERL_CALLCONV OP *Perl_pp_bless(pTHX);
PERL_CALLCONV OP *Perl_pp_break(pTHX);
PERL_CALLCONV OP *Perl_pp_caller(pTHX);
+PERL_CALLCONV OP *Perl_pp_catch(pTHX);
PERL_CALLCONV OP *Perl_pp_chdir(pTHX);
PERL_CALLCONV OP *Perl_pp_chop(pTHX);
PERL_CALLCONV OP *Perl_pp_chown(pTHX);
diff --git a/regen/feature.pl b/regen/feature.pl
index e626ca9fee..ffe3fee994 100755
--- a/regen/feature.pl
+++ b/regen/feature.pl
@@ -40,6 +40,7 @@ my %feature = (
indirect => 'indirect',
multidimensional => 'multidimensional',
bareword_filehandles => 'bareword_filehandles',
+ try => 'try',
);
# NOTE: If a feature is ever enabled in a non-contiguous range of Perl
@@ -477,7 +478,7 @@ read_only_bottom_close_and_rename($h);
__END__
package feature;
-our $VERSION = '1.62';
+our $VERSION = '1.63';
FEATURES
@@ -815,6 +816,14 @@ previous versions it was simply on all the time.
You can use the L<bareword::filehandles> module on CPAN to disable
bareword filehandles for older versions of perl.
+=head2 The 'try' feature.
+
+This feature enables the C<try> and C<catch> syntax, which allows exception
+handling, where exceptions throwin from the body of the block introduced with
+C<try> are caught by executing the body of the C<catch> block.
+
+For more information, see L<perlsyn/"Try Catch Exception Handling">.
+
=head1 FEATURE BUNDLES
It's possible to load multiple features together, using
diff --git a/regen/keywords.pl b/regen/keywords.pl
index b9ae8cf0f2..77f8aa9d93 100755
--- a/regen/keywords.pl
+++ b/regen/keywords.pl
@@ -47,6 +47,8 @@ my %feature_kw = (
__SUB__ => '__SUB__',
fc => 'fc',
isa => 'isa',
+ try => 'try',
+ catch => 'try',
);
my %pos = map { ($_ => 1) } @{$by_strength{'+'}};
@@ -132,6 +134,7 @@ __END__
-bless
-break
-caller
++catch
-chdir
-chmod
-chomp
@@ -339,6 +342,7 @@ __END__
-time
-times
+tr
++try
-truncate
-uc
-ucfirst
diff --git a/regen/opcodes b/regen/opcodes
index 4d5ba36d78..2a2da77c5c 100644
--- a/regen/opcodes
+++ b/regen/opcodes
@@ -577,3 +577,5 @@ isa derived class test ck_isa s2
cmpchain_and comparison chaining ck_null |
cmpchain_dup comparand shuffling ck_null 1
+
+catch catch {} block ck_null |
diff --git a/regen/warnings.pl b/regen/warnings.pl
index f08d2d6379..c4d6b4e7b9 100644
--- a/regen/warnings.pl
+++ b/regen/warnings.pl
@@ -119,6 +119,8 @@ my $tree = {
[ 5.029, DEFAULT_ON ],
'experimental::isa' =>
[ 5.031, DEFAULT_ON ],
+ 'experimental::try' =>
+ [ 5.033, DEFAULT_ON ],
}],
'missing' => [ 5.021, DEFAULT_OFF],
diff --git a/t/op/coreamp.t b/t/op/coreamp.t
index b57609bef0..3e55e8ddb4 100644
--- a/t/op/coreamp.t
+++ b/t/op/coreamp.t
@@ -1162,10 +1162,10 @@ like $@, qr'^Undefined format "STDOUT" called',
my %nottest_words = map { $_ => 1 } qw(
AUTOLOAD BEGIN CHECK CORE DESTROY END INIT UNITCHECK
__DATA__ __END__
- and cmp default do dump else elsif eq eval for foreach format ge given goto
- grep gt if isa last le local lt m map my ne next no or our package print
- printf q qq qr qw qx redo require return s say sort state sub tr unless
- until use when while x xor y
+ and catch cmp default do dump else elsif eq eval for foreach format ge
+ given goto grep gt if isa last le local lt m map 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
);
open my $kh, $keywords_file
or die "$0 cannot open $keywords_file: $!";
diff --git a/t/op/coresubs.t b/t/op/coresubs.t
index 1fa11c02f0..30f0621f65 100644
--- a/t/op/coresubs.t
+++ b/t/op/coresubs.t
@@ -16,10 +16,10 @@ use B;
my %unsupported = map +($_=>1), qw (
__DATA__ __END__ AUTOLOAD BEGIN UNITCHECK CORE DESTROY END INIT CHECK and
- cmp default do dump else elsif eq eval for foreach
+ catch cmp default do dump else elsif eq eval for foreach
format ge given goto grep gt if isa last le local lt m map my ne next
no or our package print printf q qq qr qw qx redo require
- return s say sort state sub tr unless until use
+ return s say sort state sub tr try unless until use
when while x xor y
);
my %args_for = (
diff --git a/t/op/try.t b/t/op/try.t
new file mode 100644
index 0000000000..cfc5d82b6b
--- /dev/null
+++ b/t/op/try.t
@@ -0,0 +1,154 @@
+#!./perl
+
+BEGIN {
+ chdir 't' if -d 't';
+ require './test.pl';
+ set_up_inc('../lib');
+ require Config;
+}
+
+use strict;
+use warnings;
+use feature 'try';
+no warnings 'experimental::try';
+
+{
+ my $x;
+ try {
+ $x .= "try";
+ }
+ catch ($e) {
+ $x .= "catch";
+ }
+ is($x, "try", 'successful try/catch runs try but not catch');
+}
+
+{
+ my $x;
+ my $caught;
+ try {
+ $x .= "try";
+ die "Oopsie\n";
+ }
+ catch ($e) {
+ $x .= "catch";
+ $caught = $e;
+ is($@, "", '$@ is empty within catch block');
+ }
+ is($x, "trycatch", 'die in try runs catch block');
+ is($caught, "Oopsie\n", 'catch block saw exception value');
+}
+
+# return inside try {} makes containing function return
+{
+ sub f
+ {
+ try {
+ return "return inside try";
+ }
+ catch ($e) { }
+ return "return from func";
+ }
+ is(f(), "return inside try", 'return inside try');
+}
+
+# Loop controls inside try {} do not emit warnings
+{
+ my $warnings = "";
+ local $SIG{__WARN__} = sub { $warnings .= $_[0] };
+
+ {
+ try {
+ last;
+ }
+ catch ($e) { }
+ }
+
+ {
+ try {
+ next;
+ }
+ catch ($e) { }
+ }
+
+ my $count = 0;
+ {
+ try {
+ $count++;
+ redo if $count < 2;
+ }
+ catch ($e) { }
+ }
+
+ is($warnings, "", 'No warnings emitted by next/last/redo inside try');
+
+ $warnings = "";
+
+ LOOP_L: {
+ try {
+ last LOOP_L;
+ }
+ catch ($e) { }
+ }
+
+ LOOP_N: {
+ try {
+ next LOOP_N;
+ }
+ catch ($e) { }
+ }
+
+ $count = 0;
+ LOOP_R: {
+ try {
+ $count++;
+ redo LOOP_R if $count < 2;
+ }
+ catch ($e) { }
+ }
+
+ is($warnings, "", 'No warnings emitted by next/last/redo LABEL inside try');
+}
+
+# try/catch should localise $@
+{
+ eval { die "Value before\n"; };
+
+ try { die "Localized value\n" } catch ($e) {}
+
+ is($@, "Value before\n", 'try/catch localized $@');
+}
+
+# try/catch is not confused by false values
+{
+ my $caught;
+ try {
+ die 0;
+ }
+ catch ($e) {
+ $caught++;
+ }
+
+ ok( $caught, 'catch{} sees a false exception' );
+}
+
+# try/catch is not confused by always-false objects
+{
+ my $caught;
+ try {
+ die FALSE->new;
+ }
+ catch ($e) {
+ $caught++;
+ }
+
+ ok( $caught, 'catch{} sees a false-overload exception object' );
+
+ {
+ package FALSE;
+ use overload 'bool' => sub { 0 };
+ sub new { bless [], shift }
+ }
+}
+
+done_testing;
diff --git a/toke.c b/toke.c
index 484dcbb008..628a79fb43 100644
--- a/toke.c
+++ b/toke.c
@@ -345,6 +345,7 @@ static struct debug_tokens {
{ ASSIGNOP, TOKENTYPE_OPNUM, "ASSIGNOP" },
{ BITANDOP, TOKENTYPE_OPNUM, "BITANDOP" },
{ BITOROP, TOKENTYPE_OPNUM, "BITOROP" },
+ { CATCH, TOKENTYPE_IVAL, "CATCH" },
{ CHEQOP, TOKENTYPE_OPNUM, "CHEQOP" },
{ CHRELOP, TOKENTYPE_OPNUM, "CHRELOP" },
{ COLONATTR, TOKENTYPE_NONE, "COLONATTR" },
@@ -424,6 +425,7 @@ static struct debug_tokens {
{ SUBLEXEND, TOKENTYPE_NONE, "SUBLEXEND" },
{ SUBLEXSTART, TOKENTYPE_NONE, "SUBLEXSTART" },
{ THING, TOKENTYPE_OPVAL, "THING" },
+ { TRY, TOKENTYPE_IVAL, "TRY" },
{ UMINUS, TOKENTYPE_NONE, "UMINUS" },
{ UNIOP, TOKENTYPE_OPNUM, "UNIOP" },
{ UNIOPSUB, TOKENTYPE_OPVAL, "UNIOPSUB" },
@@ -7704,6 +7706,11 @@ yyl_word_or_keyword(pTHX_ char *s, STRLEN len, I32 key, I32 orig_keyword, struct
case KEY_break:
FUN0(OP_BREAK);
+ case KEY_catch:
+ Perl_ck_warner_d(aTHX_
+ packWARN(WARN_EXPERIMENTAL__TRY), "try/catch is experimental");
+ PREBLOCK(CATCH);
+
case KEY_chop:
UNI(OP_CHOP);
@@ -8435,6 +8442,11 @@ yyl_word_or_keyword(pTHX_ char *s, STRLEN len, I32 key, I32 orig_keyword, struct
case KEY_truncate:
LOP(OP_TRUNCATE,XTERM);
+ case KEY_try:
+ Perl_ck_warner_d(aTHX_
+ packWARN(WARN_EXPERIMENTAL__TRY), "try/catch is experimental");
+ PREBLOCK(TRY);
+
case KEY_uc:
UNI(OP_UC);
diff --git a/warnings.h b/warnings.h
index b129f6e250..5547a1161a 100644
--- a/warnings.h
+++ b/warnings.h
@@ -130,6 +130,10 @@
/* Warnings Categories added in Perl 5.031 */
#define WARN_EXPERIMENTAL__ISA 73
+
+/* Warnings Categories added in Perl 5.033 */
+
+#define WARN_EXPERIMENTAL__TRY 74
#define WARNsize 19
#define WARN_ALLstring "\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125"
#define WARN_NONEstring "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
@@ -313,6 +317,7 @@ category parameters passed.
=for apidoc Amnh||WARN_EXPERIMENTAL__UNIPROP_WILDCARDS
=for apidoc Amnh||WARN_EXPERIMENTAL__VLB
=for apidoc Amnh||WARN_EXPERIMENTAL__ISA
+=for apidoc Amnh||WARN_EXPERIMENTAL__TRY
=cut
*/