+ $want= pop @oplist;
+ if ($want =~ y/({/)}/) {
+ $wasyes=-1;
+ err("found \@\@$op but wanted \@\@$want")
+ unless $want eq $op;
+ } elsif ($want =~ m/^([:;]+)(1?)$/) {
+ ($want,$wasyes)=($1,$2);
+ err("found \@\@$op where not expected (wanted ".
+ join(' or ', map { "\@\@$_" } split //, $want).")")
+ unless $op =~ m/^[$want]$/;
+ '?' eq pop @oplist or die;
+ if ($wasyes) {
+ local ($l) = ($substr);
+ local ($substr,$expr,$to,$op);
+ process_input();
+ };
+ $substr='';
+ $esc='';
+ if ($op eq ':') {
+ push @oplist, '?',';'.!$wasyes;
+ }
+ } else {
+ die "internal /$want/ /$op/";
+ }