Changeset 21553 for misc

Show
Ignore:
Timestamp:
07/26/08 21:48:48 (6 months ago)
Author:
putter
Message:

[elf_g] Import improvements from elfX. pmurias++

Location:
misc/elf
Files:
6 modified

Legend:

Unmodified
Added
Removed
  • misc/elf/elf_g

    r21457 r21553  
    2626use autobox ARRAY => 'ARRAY', HASH => 'HASH', CODE => 'CODE', INTEGER => 'INTEGER', FLOAT => 'FLOAT', STRING => 'STRING', UNDEF => 'UNDEF';  use encoding 'utf8'; 
    2727       
    28  
    29 # Move to the Regexp prelude once that becomes part of the prelude. 
    30 { package BacktrackMacrosKludge; 
    31   sub _let_gen { 
    32     my($vars) = @_; 
    33     my $nvars = 1+($vars =~ tr/,//); 
    34     my $tmpvars = join(",",map{"\$__tmp${_}__"}(0..($nvars-1))); 
    35     push(@SCRATCH::_let_stack,[$vars,$tmpvars]); 
    36     "(do{my \$__v__ ; my($tmpvars); { local($vars)=($vars); \$__v__ = do{ "; 
    37   } 
    38   sub _let_end { 
    39     my $e = shift(@SCRATCH::_let_stack) || die "LET(){ }LET pairs didnt match up"; 
    40     my($vars,$tmpvars) = @$e; 
    41     "}; if(!FAILED(\$__v__)){ ($tmpvars)=($vars); }}; if(!FAILED(\$__v__)){ ($vars)=($tmpvars) }; \$__v__ })" 
    42   } 
    43 } 
    4428 
    4529# Workaround autobox 2.53 api change. :( 
     
    20262010$main::irbuilder->add_constructor("dotty\:methodop", sub {my($m)=@_; 
    20272011(do{IRx1::Call->newp($m, $::es_blackboard__expect_term_base, irbuild_ir($m->{"hash"}->{"ident"}), IRx1::Capture->newp($m, (irbuild_ir($m->{"hash"}->{"semilist"}) || [])))})}); 
     2012$main::irbuilder->add_constructor("dotty\:\.\^\!", sub {my($m)=@_; 
     2013(do{IRx1::Call->newp($m, $::es_blackboard__expect_term_base, ("\^\!" . irbuild_ir($m->{"hash"}->{"methodop"}->{"hash"}->{"ident"})), IRx1::Capture->newp($m, (irbuild_ir($m->{"hash"}->{"methodop"}->{"hash"}->{"semilist"}) || [])))})}); 
    20282014$main::irbuilder->add_constructor("dotty\:postcircumfix", sub {my($m)=@_; 
    20292015(do{my $s = ($m->match_string()); 
     
    27232709" . $self->prelude_oo()) . $self->prelude_lexical()) . "\ 
    27242710\ 
    2725 \#\ Move\ to\ the\ Regexp\ prelude\ once\ that\ becomes\ part\ of\ the\ prelude\.\ 
    2726 \{\ package\ BacktrackMacrosKludge\;\ 
    2727 \ \ sub\ _let_gen\ \{\ 
    2728 \ \ \ \ my\(\$vars\)\ \=\ \@_\;\ 
    2729 \ \ \ \ my\ \$nvars\ \=\ 1\+\(\$vars\ \=\~\ tr\/\,\/\/\)\;\ 
    2730 \ \ \ \ my\ \$tmpvars\ \=\ join\(\"\,\"\,map\{\"\\\$__tmp\$\{_\}__\"\}\(0\.\.\(\$nvars\-1\)\)\)\;\ 
    2731 \ \ \ \ push\(\@SCRATCH\:\:_let_stack\,\[\$vars\,\$tmpvars\]\)\;\ 
    2732 \ \ \ \ \"\(do\{my\ \\\$__v__\ \;\ my\(\$tmpvars\)\;\ \{\ local\(\$vars\)\=\(\$vars\)\;\ \\\$__v__\ \=\ do\{\ \"\;\ 
    2733 \ \ \}\ 
    2734 \ \ sub\ _let_end\ \{\ 
    2735 \ \ \ \ my\ \$e\ \=\ shift\(\@SCRATCH\:\:_let_stack\)\ \|\|\ die\ \"LET\(\)\{\ \}LET\ pairs\ didnt\ match\ up\"\;\ 
    2736 \ \ \ \ my\(\$vars\,\$tmpvars\)\ \=\ \@\$e\;\ 
    2737 \ \ \ \ \"\}\;\ if\(\!FAILED\(\\\$__v__\)\)\{\ \(\$tmpvars\)\=\(\$vars\)\;\ \}\}\;\ if\(\!FAILED\(\\\$__v__\)\)\{\ \(\$vars\)\=\(\$tmpvars\)\ \}\;\ \\\$__v__\ \}\)\"\ 
    2738 \ \ \}\ 
    2739 \}\ 
    2740 \ 
    27412711\#\ Workaround\ autobox\ 2\.53\ api\ change\.\ \:\(\ 
    27422712if\(\!defined\(\&autobox\:\:universal\:\:type\)\)\ \{\ 
     
    36793649use base "Any";(do{sub perl{my $self=CORE::shift;(do{(("\{" . $self->keys()->map(sub {my($k)=@_; 
    36803650(do{(($k->perl() . "\ \=\>\ ") . $self->{$k}->perl())})})->join("\,\ ")) . "\}")})}}) 
     3651} 
     3652; 
     3653 
     3654{ package UNDEF; 
     3655use base "Any";(do{sub Str{my $self=CORE::shift;(do{""})}}) 
    36813656} 
    36823657; 
  • misc/elf/elf_g_src/EmitSimpleP5.pm

    r21457 r21553  
    5959} 
    6060'~self.prelude_oo~self.prelude_lexical~' 
    61  
    62 # Move to the Regexp prelude once that becomes part of the prelude. 
    63 { package BacktrackMacrosKludge; 
    64   sub _let_gen { 
    65     my($vars) = @_; 
    66     my $nvars = 1+($vars =~ tr/,//); 
    67     my $tmpvars = join(",",map{"\$__tmp${_}__"}(0..($nvars-1))); 
    68     push(@SCRATCH::_let_stack,[$vars,$tmpvars]); 
    69     "(do{my \$__v__ ; my($tmpvars); { local($vars)=($vars); \$__v__ = do{ "; 
    70   } 
    71   sub _let_end { 
    72     my $e = shift(@SCRATCH::_let_stack) || die "LET(){ }LET pairs didnt match up"; 
    73     my($vars,$tmpvars) = @$e; 
    74     "}; if(!FAILED(\$__v__)){ ($tmpvars)=($vars); }}; if(!FAILED(\$__v__)){ ($vars)=($tmpvars) }; \$__v__ })" 
    75   } 
    76 } 
    7761 
    7862# Workaround autobox 2.53 api change. :( 
     
    927911  method cb__Buf ($n) { 
    928912    my $s = $n.buf; 
    929 #    $s.re_sub_g('\\(.)','$1'); 
    930913    '"' ~ quotemeta($s) ~ '"'; 
    931914  }; 
  • misc/elf/elf_g_src/IRx1_FromAST.pm

    r21457 r21553  
    138138    }); 
    139139 
     140    $main::irbuilder.add_constructor('dotty:.^!', sub ($m) { 
     141      IRx1::Call.newp($m,$+blackboard::expect_term_base,'^!'~irbuild_ir($m.{'hash'}{'methodop'}.{'hash'}{'ident'}),IRx1::Capture.newp($m,irbuild_ir($m.{'hash'}{'methodop'}.{'hash'}{'semilist'})||[])); 
     142    }); 
     143 
    140144    $main::irbuilder.add_constructor('dotty:postcircumfix', sub ($m) { 
    141145      my $s = ($m.match_string); 
  • misc/elf/elf_g_src/IRx1_FromAST_create.pl

    r21457 r21553  
    7676dotty:methodop 
    7777Call.newp($+blackboard::expect_term_base,$m<ident>,Capture.newp($m<semilist>||[])) 
     78 
     79dotty:.^! 
     80Call.newp($+blackboard::expect_term_base,'^!'~$m<methodop><ident>,Capture.newp($m<methodop><semilist>||[])) # XXX ^! should be expanded. 
    7881 
    7982dotty:postcircumfix 
     
    629632  my %seen; 
    630633  for my $para (@paragraphs) { 
    631     $para =~ /^([\w:]+)\n(.*)/s or die "bug"; 
     634    $para =~ /^(\w+(?::[\S]+)?)\n(.*)/s or die "bug\n$para"; 
    632635    my($name,$body)=($1,$2); 
    633636    die "Saw an AST handler for '$name' twice!\n" if $seen{$name}++; 
  • misc/elf/elf_g_src/PrimitivesP5.pm

    r20879 r21553  
    3737} 
    3838 
     39class UNDEF { 
     40    method Str() { "" } 
     41} 
     42 
    3943class Regexp { method Str () { ''~self } } 
    4044 
     
    6771  multi prefix:<-> (Num $a) is p5 {'(0-$a)'} 
    6872 
    69   multi prefix:<++> (Num $a) is p5 {'++ $a'} 
    70   multi prefix:<--> (Num $a) is p5 {'-- $a'} 
     73  multi prefix:<++> (Num $a is rw) is p5 {'++ $a'} 
     74  multi prefix:<--> (Num $a is rw) is p5 {'-- $a'} 
    7175 
    7276 
    73   multi postfix:<++> (Num $a) is p5 {'$a ++'} 
    74   multi postfix:<--> (Num $a) is p5 {'$a --'} 
     77  multi postfix:<++> (Num $a is rw) is p5 {'$a ++'} 
     78  multi postfix:<--> (Num $a is rw) is p5 {'$a --'} 
    7579  multi postfix:<i>  (Num $a) { $a } ;# Need to implement Complex. 
    7680 
  • misc/elf/elf_g_src/run-tests.result

    r21445 r21553  
    1 pugs t/ svn revision: 21444 
     1pugs t/ svn revision: 21550 
    22-  80%  10  8 2         ../../../t/01-sanity/01-tap.t 
    33ok      4               ../../../t/01-sanity/02-counter.t 
     
    186186X  0%   10  0           ../../../t/examples/golf.t 
    187187X  0%   17  0           ../../../t/general/atoms.t 
    188 -C 0%   15  0 15        ../../../t/general/basic.t 
    189188-C 0%   4  0 4          ../../../t/general/config.t 
    190189-d 0%   4  0 4          ../../../t/junction/abc.t 
     
    220219-  0%   2  0 2          ../../../t/oo/can.t 
    221220-d 0%   5  0 5          ../../../t/oo/class/anonymous.t 
    222 -  0%   2  0 2          ../../../t/oo/class/declaration-order.t 
    223221-  0%   1  0 1          ../../../t/oo/class_inclusion_with_inherited_class.t 
    224222-  0%   1  0 1          ../../../t/oo/class_inheritance_become_infinite_loop.t 
     
    231229-  33%  6  2 0 4!       ../../../t/oo/destruction.t 
    232230X  0%   3  0            ../../../t/oo/global_destruction.t 
    233 X  0%   32  0           ../../../t/oo/inheritance.t 
    234231-d 0%   2  0 2          ../../../t/oo/instantiation.t 
    235232-C 0%   17  0 17        ../../../t/oo/magical_vars.t 
     
    251248-C 0%   18  0 18        ../../../t/oo/proxy.t 
    252249-  7%   14  1 0 13!     ../../../t/oo/roles/anonymous.t 
    253 -C 0%   22  0 22        ../../../t/oo/roles/basic.t 
    254250-C 0%   10  0 10        ../../../t/oo/roles/conflicts.t 
    255251-  66%  3  2 1          ../../../t/oo/roles/instantiation.t 
     
    365361-  0%   4  0 2 2!       ../../../t/regex/rx_perl5_g.t 
    366362X  0%   2  0            ../../../t/regex/rx_perl5_match.t 
    367 -d 0%   1  0 1          ../../../t/regex/smartparse.t 
    368363X  0%   7  0            ../../../t/regex/s_perl5.t 
    369364X  0%   5  0            ../../../t/regex/variable_interpolation.t 
     
    392387-C 0%   18  0 18        ../../../t/spec/S02-builtin_data_types/capture.t 
    393388-d 0%   4  0 4          ../../../t/spec/S02-builtin_data_types/catch_type_cast_mismatch.t 
     389-C 0%   10  0 10        ../../../t/spec/S02-builtin_data_types/compact.t 
    394390-C 0%   30  0 30        ../../../t/spec/S02-builtin_data_types/enum.t 
    395391-d 0%   34  0 34        ../../../t/spec/S02-builtin_data_types/flattening.t 
    396392-d 0%   32  0 32        ../../../t/spec/S02-builtin_data_types/hash_ref.t 
    397 X  0%   58  0           ../../../t/spec/S02-builtin_data_types/hash.t 
     393-C 0%   58  0 58        ../../../t/spec/S02-builtin_data_types/hash.t 
    398394-C 0%   8  0 8          ../../../t/spec/S02-builtin_data_types/infinity.t 
    399395-C 0%   ?  0 ?          ../../../t/spec/S02-builtin_data_types/int-uint.t 
     
    406402-C 0%   47  0 47        ../../../t/spec/S02-builtin_data_types/num.t 
    407403X  0%   97  0           ../../../t/spec/S02-builtin_data_types/pair.t 
    408 X  0%   87  0           ../../../t/spec/S02-builtin_data_types/range.t 
     404X  0%   79  0           ../../../t/spec/S02-builtin_data_types/range.t 
    409405-  0%   8  0 2 6!       ../../../t/spec/S02-builtin_data_types/subscripts_and_context.t 
    410406-  7%   13  1 2 10!     ../../../t/spec/S02-builtin_data_types/subtypes.t 
     
    431427-C 0%   6  0 6          ../../../t/spec/S02-polymorphic_types/subset-range.t 
    432428-d 0%   8  0 8          ../../../t/spec/S02-whitespace_and_comments/minimal-whitespace.t 
     429-d 0%   1  0 1          ../../../t/spec/S02-whitespace_and_comments/one-pass-parsing.t 
    433430X  0%   52  0           ../../../t/spec/S02-whitespace_and_comments/unicode-whitespace.t 
    434431X  0%   76  0           ../../../t/spec/S02-whitespace_and_comments/unspace.t 
     
    447444-  31%  35  11 24       ../../../t/spec/S03-operators/numeric-context.t 
    448445-C 0%   5  0 5          ../../../t/spec/S03-operators/p5arrow.t 
    449 -d 0%   51  0 51        ../../../t/spec/S03-operators/range.t 
     446-d 0%   72  0 72        ../../../t/spec/S03-operators/range.t 
    450447X  0%   49  0           ../../../t/spec/S03-operators/reduce-le1arg.t 
    451448X  0%   52  0           ../../../t/spec/S03-operators/reduce-metaop.t 
     
    475472-C 0%   21  0 21        ../../../t/spec/S05-alternation/longest-alternative.t 
    476473-C 0%   10  0 10        ../../../t/spec/S05-alternation/sequential.t 
     474ok      13              ../../../t/spec/S05-metasyntax/changed.t 
     475-C 0%   11  0 11        ../../../t/spec/S05-metasyntax/regex.t 
     476-  16%  6  1 5          ../../../t/spec/S05-metasyntax/unknown.t 
    477477-C 0%   4  0 4          ../../../t/spec/S05-modifier/continue.t 
    478478ok      10              ../../../t/spec/S05-modifier/ignoreaccent.t 
     
    492492-C 0%   3  0 3          ../../../t/spec/S06-signature/positional-placeholders.t 
    493493-C 0%   6  0 6          ../../../t/spec/S06-signature/slurpy-placeholders.t 
     494ok      3               ../../../t/spec/S06-traits/is-copy.t 
     495-C 0%   6  0 6          ../../../t/spec/S06-traits/is-rw.t 
    494496-C 0%   38  0 38        ../../../t/spec/S09-autovivification/autovivification.t 
    495497-C 0%   24  0 24        ../../../t/spec/S09-subscript_slice/slice.t 
     
    506508X  0%   9  0            ../../../t/spec/S12-class/attributes.t 
    507509-C 0%   21  0 21        ../../../t/spec/S12-class/basic.t 
     510-  50%  2  1 1          ../../../t/spec/S12-class/declaration-order.t 
    508511ok      5               ../../../t/spec/S12-class/inheritance-class-methods.t 
     512-C 0%   32  0 32        ../../../t/spec/S12-class/inheritance.t 
    509513X  0%   2  0            ../../../t/spec/S12-class/instantiate.t 
    510514ok      4               ../../../t/spec/S12-class/is_also_instead.t 
     
    524528X  0%   10  0           ../../../t/spec/S12-methods/what.t 
    525529X  0%   4  0            ../../../t/spec/S12-role/attributes.t 
     530-C 0%   18  0 18        ../../../t/spec/S12-role/basic.t 
    526531ok      8               ../../../t/spec/S12-role/composition.t 
    527532-d 0%   11  0 11        ../../../t/spec/S12-role/mixin.t 
     
    562567-d 0%   33  0 33        ../../../t/spec/S29-array/splice.t 
    563568-  1%   53  1 0 52!     ../../../t/spec/S29-array/unshift.t 
    564 X  0%   6  0            ../../../t/spec/S29-container/cat.t 
    565 X  0%   8  0            ../../../t/spec/S29-container/roundrobin.t 
     569-d 0%   6  0 6          ../../../t/spec/S29-container/cat.t 
     570-d 0%   8  0 8          ../../../t/spec/S29-container/roundrobin.t 
    566571-d 0%   9  0 9          ../../../t/spec/S29-container/zip.t 
    567572-  40%  10  4 6         ../../../t/spec/S29-context/die_arg_preservation.t 
     
    612617X  0%   ?  0            ../../../t/spec/S29-os/system-with-spaces.t 
    613618-  52%  21  11 0 10!    ../../../t/spec/S29-scalar/defined.t 
    614 X  0%   74  0           ../../../t/spec/S29-scalar/undef.t 
     619-C 0%   74  0 74        ../../../t/spec/S29-scalar/undef.t 
    615620-C 0%   7  0 7          ../../../t/spec/S29-str/append.t 
    616621-C 0%   11  0 11        ../../../t/spec/S29-str/capitalize.t 
     
    719724-  80%  5  4 1          ../../../t/var/contextual.t 
    720725-  0%   4  0 1 3!       ../../../t/var/default_scalar.t 
    721 ok      3               ../../../t/var/is_copy.t 
    722726-C 0%   9  0 9          ../../../t/var/is_readonly.t 
    723 X  0%   6  0            ../../../t/var/is_rw.t 
    724727-C 0%   15  0 15        ../../../t/var/lazy.t 
    725728-  9%   11  1 4 6!      ../../../t/var/let.t 
     
    803806-d 0%   1  0 1          ../../../v6/v6-KindaPerl6/t/kp6/41-attr-hash-keys.t 
    804807-C 0%   1  0 1          ../../../v6/v6-KindaPerl6/t/kp6/42-single-rule-grammar.t 
    805 -d 0%   1  0 1          ../../../v6/v6-KindaPerl6/t/kp6/43-class-constructor-with-params.t 
     808-  0%   1  0 0 1!       ../../../v6/v6-KindaPerl6/t/kp6/43-class-constructor-with-params.t 
    806809ok      4               ../../../v6/v6-KindaPerl6/t/kp6/44-map.t 
    807810ok      4               ../../../v6/v6-KindaPerl6/t/kp6/45-for.t 
     
    850853ok      1               ../../../v6/v6-KindaPerl6/t/kp6/math/02-inf.t 
    851854 
    852 Files: 849.  623 parsed 73%.  367 run 43%.  85 ok 10%. 
    853 Tests: 16953+.  637 ok <3.75%, 16316+ not. 
     855Files: 852.  632 parsed 74%.  371 run 43%.  86 ok 10%. 
     856Tests: 16987+.  652 ok <3.83%, 16335+ not.