Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Perlito5 - grammar - fix 'print BLOCK LIST'
  • Loading branch information
fglock committed Aug 10, 2013
1 parent 5058d24 commit 3f3ac31
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 15 deletions.
3 changes: 0 additions & 3 deletions TODO-perlito5
Expand Up @@ -32,9 +32,6 @@ TODO list for Perlito5

* Parser

-- print BLOCK LIST
change BLOCK to use Perlito5::Expression.term_curly (see Grammar/Map.pm)

-- sort SUBNAME LIST
see Grammar/Map.pm

Expand Down
23 changes: 18 additions & 5 deletions html/perlito5.js
Expand Up @@ -8971,21 +8971,34 @@ return r;
})()], p5want) }));
})()], 0), function () { return p5context([(function () {
(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
return (p5context([p5and(p5and(p5and(p5context([p5and(('{' == p5pkg["Perlito5::Grammar::Print"].substr([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'), 1], 0)), function () { return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0) })], 0), function () { return p5context([(function () {
return (p5context([p5and(p5and(p5context([(function () {
var v_tmp;
(v_tmp = (v_MATCH));
(v_MATCH = ((new p5HashRef(p5a_to_h(p5list_to_a('str', v_str, 'from', (v_tmp || (v_tmp = new p5HashRef({})))._hash_.p5hget('to'), 'to', (v_tmp || (v_tmp = new p5HashRef({})))._hash_.p5hget('to')))))));
var v_res;
(v_res = (p5context([(function () {
var v_pos1;
(v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')));
return (p5context([(function () {
return (p5and(('{' == p5pkg["Perlito5::Grammar::Print"].substr([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'), 1], 0)), function () { return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], p5want) }));
})()], p5want));
})()], 0)));
return ((v_MATCH = (( p5bool(v_res) ? v_tmp : 0))));
})()], 0), function () { return p5context([(function () {
var v_m2;
(v_m2 = (p5call(p5pkg["Perlito5::Expression"], "curly_parse", p5list_to_a(v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 0)));
(v_m2 = (p5call(p5pkg["Perlito5::Expression"], "term_curly", p5list_to_a(v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 0)));
if ( p5bool(v_m2) ) {
(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('Perlito5::Expression.curly_parse', (v_m2));
(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('Perlito5::Expression.term_curly', (v_m2));
return (p5context([1], p5want));
}

else {
return (p5context([0], p5want));
}
})()], 0) }), function () { return p5context([p5and(('}' == p5pkg["Perlito5::Grammar::Print"].substr([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'), 1], 0)), function () { return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0) })], 0) }), function () { return p5context([(function () {
})()], 0) }), function () { return p5context([(function () {
(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5pkg["Perlito5::Match"].flat(p5list_to_a((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('Perlito5::Expression.curly_parse')), 0)));
(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5call(p5pkg["Perlito5::AST::Lit::Block"], "new", p5list_to_a('stmts', (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget_hash('Perlito5::Expression.term_curly')._hash_.p5hget_array('capture')._array_.p5aget(2)), 0)));
return (p5context([1], p5want));
})()], p5want) })], p5want));
})()], 0) }), function () { return p5context([(function () {
Expand Down
20 changes: 15 additions & 5 deletions perlito5.pl
Expand Up @@ -6668,19 +6668,29 @@ sub Perlito5::Grammar::Print::the_object {
})))
})) || ((do {
($MATCH->{'to'} = $pos1);
((((((('{' eq substr($str, $MATCH->{'to'}, 1)) && (($MATCH->{'to'} = (1 + $MATCH->{'to'}))))) && ((do {
((my $m2) = Perlito5::Expression->curly_parse($str, $MATCH->{'to'}));
(((((do {
((my $tmp) = $MATCH);
($MATCH = {'str', $str, 'from', $tmp->{'to'}, 'to', $tmp->{'to'}});
((my $res) = ((do {
((my $pos1) = $MATCH->{'to'});
((do {
(('{' eq substr($str, $MATCH->{'to'}, 1)) && (($MATCH->{'to'} = (1 + $MATCH->{'to'}))))
}))
})));
($MATCH = ($res ? $tmp : 0))
})) && ((do {
((my $m2) = Perlito5::Expression->term_curly($str, $MATCH->{'to'}));
if ($m2) {
($MATCH->{'to'} = $m2->{'to'});
($MATCH->{'Perlito5::Expression.curly_parse'} = $m2);
($MATCH->{'Perlito5::Expression.term_curly'} = $m2);
1
}
else {
0
}
}))) && ((('}' eq substr($str, $MATCH->{'to'}, 1)) && (($MATCH->{'to'} = (1 + $MATCH->{'to'})))))) && ((do {
}))) && ((do {
($MATCH->{'str'} = $str);
($MATCH->{'capture'} = Perlito5::Match::flat($MATCH->{'Perlito5::Expression.curly_parse'}));
($MATCH->{'capture'} = Perlito5::AST::Lit::Block->new('stmts', $MATCH->{'Perlito5::Expression.term_curly'}->{'capture'}->[2]));
;
1
}))))
Expand Down
4 changes: 2 additions & 2 deletions src5/lib/Perlito5/Grammar/Print.pm
Expand Up @@ -27,9 +27,9 @@ token the_object {
$MATCH->{capture} = Perlito5::Match::flat($MATCH->{'Perlito5::Grammar::Sigil.term_sigil'})->[1];
}
|
'{' <Perlito5::Expression.curly_parse> '}'
<before '{'> <Perlito5::Expression.term_curly>
{
$MATCH->{capture} = Perlito5::Match::flat($MATCH->{'Perlito5::Expression.curly_parse'});
$MATCH->{capture} = Perlito5::AST::Lit::Block->new( stmts => $MATCH->{'Perlito5::Expression.term_curly'}{capture}[2] );
}
|
<typeglob>
Expand Down

0 comments on commit 3f3ac31

Please sign in to comment.