- Timestamp:
- 07/30/08 08:34:48 (5 months ago)
- Location:
- misc/elfish/elfX
- Files:
-
- 2 modified
-
EmitSM0P.pm (modified) (3 diffs)
-
elfX (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
misc/elfish/elfX/EmitSM0P.pm
r21570 r21629 34 34 } 35 35 method cb__CompUnit ($n) { 36 "# this is autogenerated sm0p code\n" ~ ";\n" ~ $.e($n.statements).join(' ;');36 "# this is autogenerated sm0p code\n" ~ ";\n" ~ $.e($n.statements).join(''); 37 37 } 38 38 method capturize($arguments,$id) { … … 72 72 '$SMOP__SLIME__CurrentFrame.move_capturize('~self.capturize($arguments,$id)~");\n" ~ 73 73 $ret ~ ': $continuation.$SMOP__ID__setr();' ~ "\n" 74 } elsif ($n.function eq 'circumfix:( )') { 75 $n.capture.arguments[0].callback(self,$ret); 76 } else { 77 die "unsupported form of Apply\n"; 74 78 } 75 79 } … … 81 85 $label ~ ": " ~ $n.text ~ ";\n"; 82 86 } 87 method cb__Block ($n,$label) { 88 $label ~ ": " ~ "{\n"~ $.e($n.statements).join('') ~ "};\n" 89 } 83 90 method cb__SubDecl ($n,$label) { 84 $label ~ ": " ~ "q:sm0p {\n"~ $.e($n.block.statements).join(';') ~ "};\n"91 IRx1::Call.new('invocant',IRx1::Var.new('sigil','::','name','Code'),'method','new','capture',IRx1::Capture.new('arguments',[$n.block])).callback(self,$label); 85 92 } 93 86 94 method cb__Var ($n,$label) { 87 95 if $n.sigil eq '$' and $n.twigil ne '*' { -
misc/elfish/elfX/elfX
r21570 r21629 3540 3540 (do{(("\#\ this\ is\ autogenerated\ sm0p\ code\ 3541 3541 " . "\;\ 3542 ") . $self->e($n->statements())->join(" \;"))})};3542 ") . $self->e($n->statements())->join(""))})}; 3543 3543 sub capturize{my $self=CORE::shift;my($arguments,$id)=@_; 3544 3544 (do{my $positionals = $arguments->keys()->map(sub {my($k)=@_; … … 3576 3576 ") . $ret) . "\:\ \$continuation\.\$SMOP__ID__setr\(\)\;") . "\ 3577 3577 ")}) 3578 }elsif((($n->function() eq "circumfix\:\(\ \)"))) { 3579 (do{$n->capture()->arguments()->[0]->callback($self, $ret)}) 3580 }else { 3581 (do{GLOBAL::die("unsupported\ form\ of\ Apply\ 3582 ")}) 3578 3583 }})}; 3579 3584 sub cb__Buf{my $self=CORE::shift;my($n,$label)=@_; … … 3583 3588 (do{((($label . "\:\ ") . $n->text()) . "\;\ 3584 3589 ")})}; 3590 sub cb__Block{my $self=CORE::shift;my($n,$label)=@_; 3591 (do{(((($label . "\:\ ") . "\{\ 3592 ") . $self->e($n->statements())->join("")) . "\}\;\ 3593 ")})}; 3585 3594 sub cb__SubDecl{my $self=CORE::shift;my($n,$label)=@_; 3586 (do{(((($label . "\:\ ") . "q\:sm0p\ \{\ 3587 ") . $self->e($n->block()->statements())->join("\;")) . "\}\;\ 3588 ")})}; 3595 (do{IRx1::Call->new("invocant", IRx1::Var->new("sigil", "\:\:", "name", "Code"), "method", "new", "capture", IRx1::Capture->new("arguments", [$n->block()]))->callback($self, $label)})}; 3589 3596 sub cb__Var{my $self=CORE::shift;my($n,$label)=@_; 3590 3597 (do{if((($n->sigil() eq "\$") and ($n->twigil() ne "\*"))) {
