Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Perlito5 - perl5 - implement 5.20 "hash slices"
  • Loading branch information
fglock committed May 28, 2014
1 parent 2223dad commit 1060d42
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 0 deletions.
6 changes: 6 additions & 0 deletions perlito5.pl
Expand Up @@ -11847,6 +11847,9 @@ package Perlito5::AST::Index;
if (($self->{'obj'}->isa('Perlito5::AST::Apply') && $self->{'obj'}->{'code'} eq 'prefix:<@>') || ($self->{'obj'}->isa('Perlito5::AST::Var') && ($self->{'obj'}->sigil() eq '$' || $self->{'obj'}->sigil() eq '@'))) {
return ['apply' => '[', $self->{'obj'}->emit_perl5(), $self->{'index_exp'}->emit_perl5()]
}
if (($self->{'obj'}->isa('Perlito5::AST::Apply') && $self->{'obj'}->{'code'} eq 'prefix:<%>') || ($self->{'obj'}->isa('Perlito5::AST::Var') && ($self->{'obj'}->sigil() eq '%'))) {
return ['apply' => '[', $self->{'obj'}->emit_perl5(), $self->{'index_exp'}->emit_perl5()]
}
if ($self->{'obj'}->isa('Perlito5::AST::Apply') && $self->{'obj'}->{'code'} eq 'prefix:<$>') {
return ['op' => 'infix:<->>', $self->{'obj'}->{'arguments'}->[0]->emit_perl5(), ['op' => 'circumfix:<[ ]>', $self->{'index_exp'}->emit_perl5()]]
}
Expand All @@ -11860,6 +11863,9 @@ package Perlito5::AST::Lookup;
if (($self->{'obj'}->isa('Perlito5::AST::Apply') && $self->{'obj'}->{'code'} eq 'prefix:<@>') || ($self->{'obj'}->isa('Perlito5::AST::Var') && ($self->{'obj'}->sigil() eq '$' || $self->{'obj'}->sigil() eq '@'))) {
return ['apply' => '{', $self->{'obj'}->emit_perl5(), $self->autoquote($self->{'index_exp'})->emit_perl5()]
}
if (($self->{'obj'}->isa('Perlito5::AST::Apply') && $self->{'obj'}->{'code'} eq 'prefix:<%>') || ($self->{'obj'}->isa('Perlito5::AST::Var') && ($self->{'obj'}->sigil() eq '%'))) {
return ['apply' => '{', $self->{'obj'}->emit_perl5(), $self->autoquote($self->{'index_exp'})->emit_perl5()]
}
if ($self->{'obj'}->isa('Perlito5::AST::Apply') && $self->{'obj'}->{'code'} eq 'prefix:<$>') {
return ['op' => 'infix:<->>', $self->{'obj'}->{'arguments'}->[0]->emit_perl5(), ['op' => 'circumfix:<{ }>', $self->autoquote($self->{'index_exp'})->emit_perl5()]]
}
Expand Down
21 changes: 21 additions & 0 deletions src5/lib/Perlito5/Perl5/Emitter.pm
Expand Up @@ -87,6 +87,16 @@ package Perlito5::AST::Index;
{
return [ apply => '[', $self->{obj}->emit_perl5(), $self->{index_exp}->emit_perl5() ];
}
if ( ( $self->{obj}->isa('Perlito5::AST::Apply')
&& $self->{obj}->{code} eq 'prefix:<%>'
)
|| ( $self->{obj}->isa('Perlito5::AST::Var')
&& ( $self->{obj}->sigil eq '%' )
)
)
{
return [ apply => '[', $self->{obj}->emit_perl5(), $self->{index_exp}->emit_perl5() ];
}
if ( $self->{obj}->isa('Perlito5::AST::Apply')
&& $self->{obj}->{code} eq 'prefix:<$>'
)
Expand Down Expand Up @@ -114,6 +124,17 @@ package Perlito5::AST::Lookup;
{
return [ apply => '{', $self->{obj}->emit_perl5(), $self->autoquote($self->{index_exp})->emit_perl5() ];
}
if ( ( $self->{obj}->isa('Perlito5::AST::Apply')
&& $self->{obj}->{code} eq 'prefix:<%>'
)
|| ( $self->{obj}->isa('Perlito5::AST::Var')
&& ( $self->{obj}->sigil eq '%' )
)
)
{
# perl5.20: %a{ x, y }
return [ apply => '{', $self->{obj}->emit_perl5(), $self->autoquote($self->{index_exp})->emit_perl5() ];
}
if ( $self->{obj}->isa('Perlito5::AST::Apply')
&& $self->{obj}->{code} eq 'prefix:<$>'
)
Expand Down

0 comments on commit 1060d42

Please sign in to comment.