Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Perlito5 - perl5 - tweak the perl5 pretty-printer - fix eval-block
  • Loading branch information
fglock committed Aug 26, 2013
1 parent ae790ba commit eb84bd7
Show file tree
Hide file tree
Showing 2 changed files with 78 additions and 74 deletions.
147 changes: 74 additions & 73 deletions perlito5.pl
Expand Up @@ -11970,7 +11970,8 @@ package Perlito5::AST::Apply;
my $arg = $self->{'arguments'}->[0];
my $eval;
if ($arg->isa('Perlito5::AST::Do')) {
$eval = $arg->emit_perl5(($level + 1))
my $do = $arg->simplify()->block();
$eval = ('eval {' . chr(10) . join(';' . chr(10), map((defined($_) && (Perlito5::Perl5::tab(($level + 1)) . $_->emit_perl5(($level + 1)))), @{$do})) . chr(10) . Perlito5::Perl5::tab($level) . '}')
}
else {
$eval = ('(do { ' . 'my $m = Perlito5::Grammar->exp_stmts(' . $arg->emit_perl5(($level + 1), 'scalar') . ', 0);' . 'my $source; ' . '$source .= (defined $_ ? $_->emit_perl5(0, "scalar") : "") . ";' . chr(92) . 'n" ' . 'for @{ Perlito5::Match::flat($m) }; ' . 'eval $source;' . '})')
Expand Down Expand Up @@ -13310,86 +13311,86 @@ package Perlito5;
}
}
else {
(do {
%INC = ();
$Perlito5::EXPAND_USE = 0;
my $m;
my $ok;
(do {
$m = Perlito5::Grammar->exp_stmts($source, 0);
eval {
%INC = ();
$Perlito5::EXPAND_USE = 0;
my $m;
my $ok;
eval {
$m = Perlito5::Grammar->exp_stmts($source, 0);
$ok = 1
};
if ((!($ok) || ($m->{'to'} != length($source)))) {
my $error = ((${'@'} || ((($m->{'to'} != length($source)) && ('Syntax Error near ' . $m->{'to'})))) || 'Unknown error');
warn($error);
exit(255)
}
else {
my $comp_units;
if ($expand_use) {
my $ok;
eval {
$comp_units = Perlito5::Grammar::Use::add_comp_unit(Perlito5::Match::flat($m));
$ok = 1
});
if ((!($ok) || ($m->{'to'} != length($source)))) {
my $error = ((${'@'} || ((($m->{'to'} != length($source)) && ('Syntax Error near ' . $m->{'to'})))) || 'Unknown error');
warn($error);
exit(255)
};
if (!($ok)) {
my $error = (${'@'} || 'Unknown error loading a module');
warn($error);
exit(255)
}
}
else {
my $comp_units;
$comp_units = Perlito5::Match::flat($m)
};
$comp_units = [Perlito5::AST::CompUnit->new('name', 'main', 'body', $comp_units)];
if (($backend eq 'perl5')) {
say('# Do not edit this file - Generated by ', $_V5_COMPILER_NAME, ' ', $_V5_COMPILER_VERSION);
if ($expand_use) {
my $ok;
(do {
$comp_units = Perlito5::Grammar::Use::add_comp_unit(Perlito5::Match::flat($m));
$ok = 1
});
if (!($ok)) {
my $error = (${'@'} || 'Unknown error loading a module');
warn($error);
exit(255)
}
}
else {
$comp_units = Perlito5::Match::flat($m)
};
$comp_units = [Perlito5::AST::CompUnit->new('name', 'main', 'body', $comp_units)];
if (($backend eq 'perl5')) {
say('# Do not edit this file - Generated by ', $_V5_COMPILER_NAME, ' ', $_V5_COMPILER_VERSION);
if ($expand_use) {
print(Perlito5::Perl5::Runtime->emit_perl5())
};
print(Perlito5::AST::CompUnit::emit_perl5_program($comp_units))
print(Perlito5::Perl5::Runtime->emit_perl5())
};
if (($backend eq 'perl6')) {
say('# Do not edit this file - Generated by ', $_V5_COMPILER_NAME, ' ', $_V5_COMPILER_VERSION);
print(Perlito5::AST::CompUnit::emit_perl6_program($comp_units))
};
if (($backend eq 'js')) {
say('// Do not edit this file - Generated by ', $_V5_COMPILER_NAME, ' ', $_V5_COMPILER_VERSION);
if ($expand_use) {
print(Perlito5::Javascript2::Runtime->emit_javascript2());
print(Perlito5::Javascript2::Array->emit_javascript2());
print(Perlito5::Javascript2::CORE->emit_javascript2());
print(Perlito5::Javascript2::IO->emit_javascript2());
print(Perlito5::Javascript2::Sprintf->emit_javascript2())
};
print(Perlito5::AST::CompUnit::emit_javascript2_program($comp_units))
};
if (($backend eq 'js3')) {
say('// Do not edit this file - Generated by ', $_V5_COMPILER_NAME, ' ', $_V5_COMPILER_VERSION);
if ($expand_use) {
print(Perlito5::Javascript3::Runtime->emit_javascript3());
print(Perlito5::Javascript3::CORE->emit_javascript3());
print(Perlito5::Javascript3::IO->emit_javascript3());
print(Perlito5::Javascript3::Sprintf->emit_javascript3())
};
print(Perlito5::AST::CompUnit::emit_javascript3_program($comp_units))
print(Perlito5::AST::CompUnit::emit_perl5_program($comp_units))
};
if (($backend eq 'perl6')) {
say('# Do not edit this file - Generated by ', $_V5_COMPILER_NAME, ' ', $_V5_COMPILER_VERSION);
print(Perlito5::AST::CompUnit::emit_perl6_program($comp_units))
};
if (($backend eq 'js')) {
say('// Do not edit this file - Generated by ', $_V5_COMPILER_NAME, ' ', $_V5_COMPILER_VERSION);
if ($expand_use) {
print(Perlito5::Javascript2::Runtime->emit_javascript2());
print(Perlito5::Javascript2::Array->emit_javascript2());
print(Perlito5::Javascript2::CORE->emit_javascript2());
print(Perlito5::Javascript2::IO->emit_javascript2());
print(Perlito5::Javascript2::Sprintf->emit_javascript2())
};
if (($backend eq 'xs')) {
say('/* Do not edit this file - Generated by ', $_V5_COMPILER_NAME, ' ', $_V5_COMPILER_VERSION, ' */');
print(Perlito5::AST::CompUnit::emit_xs_program($comp_units))
print(Perlito5::AST::CompUnit::emit_javascript2_program($comp_units))
};
if (($backend eq 'js3')) {
say('// Do not edit this file - Generated by ', $_V5_COMPILER_NAME, ' ', $_V5_COMPILER_VERSION);
if ($expand_use) {
print(Perlito5::Javascript3::Runtime->emit_javascript3());
print(Perlito5::Javascript3::CORE->emit_javascript3());
print(Perlito5::Javascript3::IO->emit_javascript3());
print(Perlito5::Javascript3::Sprintf->emit_javascript3())
};
if (($backend eq 'ast-perl5')) {
say(Perlito5::Dumper::Dumper($comp_units))
}
else {
if (($backend eq 'ast-pretty')) {
(do { my $m = Perlito5::Grammar->exp_stmts('use Data::Printer {colored=>1,class=>{expand=>"all",show_methods=>"none"}};p($comp_units);1', 0);my $source; $source .= (defined $_ ? $_->emit_perl5(0, "scalar") : "") . ";\n" for @{ Perlito5::Match::flat($m) }; eval $source;});
print(${'@'})
}
}
print(Perlito5::AST::CompUnit::emit_javascript3_program($comp_units))
};
if (($backend eq 'xs')) {
say('/* Do not edit this file - Generated by ', $_V5_COMPILER_NAME, ' ', $_V5_COMPILER_VERSION, ' */');
print(Perlito5::AST::CompUnit::emit_xs_program($comp_units))
};
${'@'} = undef()
})
if (($backend eq 'ast-perl5')) {
say(Perlito5::Dumper::Dumper($comp_units))
}
else {
if (($backend eq 'ast-pretty')) {
(do { my $m = Perlito5::Grammar->exp_stmts('use Data::Printer {colored=>1,class=>{expand=>"all",show_methods=>"none"}};p($comp_units);1', 0);my $source; $source .= (defined $_ ? $_->emit_perl5(0, "scalar") : "") . ";\n" for @{ Perlito5::Match::flat($m) }; eval $source;});
print(${'@'})
}
}
};
${'@'} = undef()
}
};
if (${'@'}) {
my $error = ${'@'};
Expand Down
5 changes: 4 additions & 1 deletion src5/lib/Perlito5/Perl5/Emitter.pm
Expand Up @@ -439,7 +439,10 @@ package Perlito5::AST::Apply;
my $arg = $self->{arguments}->[0];
my $eval;
if ($arg->isa( "Perlito5::AST::Do" )) {
$eval = $arg->emit_perl5( $level + 1 ); # TODO -, $wantarray );
my $do = $arg->simplify->block;
$eval = "eval {\n"
. join(";\n", map( defined($_) && Perlito5::Perl5::tab($level+1) . $_->emit_perl5( $level + 1 ), @$do )) . "\n"
. Perlito5::Perl5::tab($level) . "}"
}
else {
$eval =
Expand Down

0 comments on commit eb84bd7

Please sign in to comment.