our ($before, $after);
sub is_string ($) { $_[0]{T} =~ m/heredoc|string/; }
-sub is_trans ($) { grep { $_[0]{E} eq $_ } qw(__ f_); }
+sub is_trans ($) { grep { $_[0]{E} eq $_ } qw(__ f_ i_); }
sub semiparse ($) {
($_) = @_;
die "cannot tokenise \`$&'";
}
}
- for (my $i=@o-2; $i>0; --$i) {
+ for (my $i=0; $i+2 < @o; $i++) {
next unless $o[$i+1]{E} eq '.';
my @inputs = @o[$i, $i+2];
+ #print STDERR Dumper(\@inputs);
next if grep { !is_string($_) } @inputs;
my $q = $inputs[0]{Q};
next if grep { $_->{Q} ne $q } @inputs;
Q => $q,
};
@o = (@o[0..$i-1], $new, @o[$i+3..$#o]);
+ $i--; # counteracts $i++
}
debug $ichunkstart, "semiparsed: ".join ' ', map { $_->{P} } @o;
return @o;
die $string_changed if length $string_changed;
next;
}
+ if ($ye eq 'i_') {
+ die $string_changed if length $string_changed;
+ next;
+ }
if ($ye eq 'f_') {
my $fmt = $y->{V};
die "no percent in _f string\n" unless $fmt =~ m{\%};