sub analyse_chunk_core () {
die "plain deletion\n" unless defined $after;
die "plain insertion\n" unless defined $before;
- my @before = semiparse $before;
- my @after = semiparse $after;
+ my @xs = semiparse $before;
+ my @ys = semiparse $after;
my $next_something = sub {
my ($ary,$var,$what) = @_;
die "ran out of $what\n" unless @$ary;
$$var = shift @$ary;
};
my ($x,$y);
- my $next_before = sub { $next_something->(\@before, \$x, 'before'); };
- my $next_after = sub { $next_something->(\@after , \$y, 'after' ); };
+ my $next_before = sub { $next_something->(\@xs, \$x, 'before'); };
+ my $next_after = sub { $next_something->(\@ys , \$y, 'after' ); };
my $is_string = sub { $_[0]{T} =~ m/heredoc|string/; };
for (;;) {
- last unless @before or @after;
+ last unless @xs or @ys;
$next_before->();
$next_after->();
next if $x->{E} eq $y->{E};
}
my $bras = 0;
for (;;) {
- if (!$bras and !@after) {
+ if (!$bras and !@ys) {
last;
}
$next_after->();
(grep { $y->{E} eq $_ } qw( or xor and not ; : )
or $y->{T} eq 'ket'
)) {
- unshift @after, $y;
+ unshift @ys, $y;
last;
}
$xs =~ s{^\s+}{};