Changeset 24144 for misc/elfish/rx_on_re/emit5.pm
- Timestamp:
- 12/03/08 04:37:51 (5 weeks ago)
- Files:
-
- 1 modified
-
misc/elfish/rx_on_re/emit5.pm (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
misc/elfish/rx_on_re/emit5.pm
r24142 r24144 554 554 555 555 sub RMARE_aregex_create { 556 my($o,$f)=@_; 557 my $nparenx = $o->{flags}{p5} ? $o->{nparen} : $o->{nparen6}; 556 my($o,$f,$nparenx)=@_; 558 557 $nparenx = 0 if !defined $nparenx; #XXX arguments to subrules. aregex not seeing an init. 559 558 subname "<aregex ".($sub_id++).">" => sub { … … 575 574 576 575 sub RMARE_do_match { 577 my($o,$f,$s,$beginat,$minlen)=@_; 578 my $nparen = $o->{nparen}; 576 my($o,$f,$s,$beginat,$minlen,$nparen)=@_; 579 577 my $len = length($s); 580 578 $beginat = 0 if !defined($beginat); … … 842 840 843 841 sub RMARE_aregex { 844 my($o,$pkg,$name,$f )=@_;842 my($o,$pkg,$name,$f,$nparen)=@_; 845 843 # Why the extra sub? 60+% shorter re_text runtime. sigh. 846 844 my $matchergen = subname "even with subname used?" => sub { … … 848 846 my($pkg9,$name1,$s,$beginat,$minlen)=@_; 849 847 local $Regexp::ModuleA::ReentrantEngine::Env::pkg = $pkg9; 850 my $m = $o->RMARE_do_match($f,$s,$beginat,$minlen );848 my $m = $o->RMARE_do_match($f,$s,$beginat,$minlen,$nparen); 851 849 $m->_match_enable_overload2; 852 850 $$m->{RULE} = $name1; … … 1417 1415 my $pkg = self.<pkg>; #if self.<pkg> {'"'~quotemeta(self.<pkg>)~'"'} else {'undef'}; 1418 1416 my $name = self.<name>; #if self.<name> {'"'~quotemeta(self.<name>)~'"'} else {'undef'}; 1419 #XXX TODO: RMARE_aregex_create is accessing the node. Refactor. 1420 my $f = $.RMARE_aregex_create(self.<expr>.RMARE_emit2); 1421 $.RMARE_aregex($pkg,$name,$f); 1417 my $nparenx = {if self.<flags><p5> { self.<nparen> } else { self.<nparen6> }}; 1418 my $nparen = self.<nparen>; #||'undef'; 1419 my $expr = self.<expr>.RMARE_emit2; 1420 #$.RMARE_aregex($pkg,$name,$.RMARE_aregex_create($expr,$nparenx),$nparen); 1421 _inline_p5('IRx1::RxBaseClass->RMARE_aregex($pkg,$name,IRx1::RxBaseClass->RMARE_aregex_create($expr,$nparenx),$nparen)'); 1422 1422 } 1423 1423 } … … 1432 1432 my $name = self.<name>; #if self.<name> {'"'~quotemeta(self.<name>)~'"'} else {'undef'}; 1433 1433 my $fr = self.<expr>.RMARE_emit2; 1434 #XXX TODO1435 1434 $.RMARE_biind($pkg,$name,$fr); 1435 #_inline_p5('IRx1::RxBaseClass->RMARE_biind($pkg,$name,$fr)') 1436 1436 } 1437 1437 } … … 1443 1443 } 1444 1444 method RMARE_emit2 { 1445 my $pkg = self.<pkg>; #if self.<pkg> {'"'~quotemeta(self.<pkg>)~'"'} else {'undef'};1446 # XXX TODO1447 $.RMARE_namespace($pkg);1448 self.<bindings>.map(sub($o){$o.RMARE_emit2}).flatten; 1445 my $pkg = self.<pkg>; 1446 #$.RMARE_namespace($pkg); 1447 eval_perl5('IRx1::RxBaseClass->RMARE_namespace("'~quotemeta($pkg)~'");'); #~ 1448 self.<bindings>.map(sub($o){$o.RMARE_emit2}).flatten; #join 1449 1449 } 1450 1450 }
