Changeset 21213
- Timestamp:
- 07/04/08 13:39:38 (3 months ago)
- Files:
-
- 6 modified
-
misc/pixie/extract_actions (modified) (1 diff)
-
misc/pixie/insert_actions (modified) (1 diff)
-
misc/pixie/pixie (modified) (4 diffs)
-
misc/pixie/pixie_actions5 (modified) (2 diffs)
-
src/perl6/DumpMatch.pm (modified) (3 diffs)
-
src/perl6/STD5_dump_match (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
misc/pixie/extract_actions
r21084 r21213 11 11 my @last_token; 12 12 for (@chunks) { 13 /^.* (?:regex|rule|token) \s+ ([:\w]+)/sx; 14 push (@last_token,$1); 13 /^.* (?:regex|rule|token) \s+ ([:\w]+?(?:sym<.*?>)?)\s/sx; 14 my $name = $1; 15 $name =~ s/sym:<(.*)>/$1/g; 16 push (@last_token,$name); 15 17 } 16 18 -
misc/pixie/insert_actions
r21110 r21213 17 17 my ($name); 18 18 for (<$std>) { 19 if (/(?: token|rule) ([\w:]+)/) {19 if (/(?:regex|rule|token) \s+ ([:\w]+?(?:sym<.*?>)?)\s/x) { 20 20 $name = $1; 21 $name =~ s/:sym<(.*)>/$1/; 21 22 # warn YELLOW,"$name",RESET; 22 23 } 23 if (/\{\*\} \s* (?:\#=(.*))?/x) {24 if (/\{\*\} .*? (?:\#=(.*))?$/x) { 24 25 my $tag = $1 || ""; 25 26 my $full_name = $name . $tag; 26 # warn "inserting ".GREEN.$full_name.RESET if $actions{$full_name};27 # warn "inserting ".GREEN.$full_name.RESET."\n".$_ if $actions{$full_name}; 27 28 # warn "not inserting <".RED.$full_name.RESET.">" unless $actions{$full_name}; 28 29 my $content = $actions{$full_name} // "*"; -
misc/pixie/pixie
r21126 r21213 25 25 use Encode; 26 26 require 'mangle.pl'; 27 sub ::unmangle { 28 local $_ = shift; 29 s/Grave/\`/g; 30 s/Tilde/\~/g; 31 s/Bang/\!/g; 32 s/At/\@/g; 33 s/Sharp/\#/g; 34 s/Dollar/\$/g; 35 s/Percent/\%/g; 36 s/Caret/\^/g; 37 s/Amp/\&/g; 38 s/Star/\*/g; 39 s/Paren/\(/g; 40 s/Thesis/\)/g; 41 s/Minus/\-/g; 42 s/Plus/\+/g; 43 s/Equal/\=/g; 44 s/Cur/\{/g; 45 s/Ly/\}/g; 46 s/Bra/\[/g; 47 s/Ket/\]/g; 48 s/Vert/\|/g; 49 s/Back/\\/g; 50 s/Colon/\:/g; 51 s/Semi/\;/g; 52 s/Single/\'/g; 53 s/Double/\"/g; 54 s/Lt/\</g; 55 s/Gt/\>/g; 56 s/Fre/\«/g; 57 s/Nch/\»/g; 58 s/Comma/\,/g; 59 s/Dot/\./g; 60 s/Question/\?/g; 61 s/Slash/\//g; 62 return $_; 63 # s/(\W)/sprintf("_%02x_",ord($1))/eg; 64 } 27 65 use strict; 28 66 use warnings; … … 50 88 51 89 while (my ($name,$code) = each %actions) { 52 $actions{$name} = eval("sub {package pixie_actions;".$code."}"); 90 my $str = qq!sub {\npackage pixie_actions;\n#line 1 "action $name"\n!.$code."}"; 91 print $str; 92 $actions{$name} = eval($str); 53 93 die "error at pixie_action5, action $name: $@\n" if $@; 54 94 } … … 118 158 my $tag = shift; 119 159 $tag =~ s/__S_\d+/:/; 160 my $tag = ::unmangle($tag); 120 161 121 162 if ($actions{$tag}) { 122 print (GREEN,$tag, "\n",RESET) unless $quiet;163 print (GREEN,$tag,RESET,"\n") unless $quiet; 123 164 local $_ = $self; 124 165 $actions{$tag}->(); 125 166 $self; 126 167 } else { 127 print (RED,$tag, "\n",RESET) unless $quiet;168 print (RED,$tag,RESET,"\n") unless $quiet; 128 169 $self; 129 170 } … … 136 177 exit; 137 178 } else { 138 print dump_match($what=>$r,{vertical=>1, actions=>sub {Compiler::dump_IRx1(@_)}}),"\n" unless $quiet;179 print dump_match($what=>$r,{vertical=>1,mark_arrays=>1,actions=>sub {Compiler::dump_IRx1(@_)}}),"\n" unless $quiet; 139 180 } 140 181 my $ir = $r->{''}; -
misc/pixie/pixie_actions5
r21126 r21213 1 1 ### comp_unit 2 2 make (IRx1::CompUnit->new(statements=>$_->{statementlist}->item)) 3 ### block 4 make (IRx1::Block->new(statements=>$_->{statementlist}->item)) 3 5 ### statementlist 4 make ([map { ref $_->item ? $_->item : '#' . $_->item} @{$_->{statement}}])6 make ([map { ref $_->item ? $_->item : do {(my $tmp = $_->item) =~ s/^^/#todo: /mg;$tmp}} @{$_->{statement}}]) 5 7 ### statement control 6 8 make ($_->{statement_control}->item) … … 10 12 ### statement_control:use 11 13 make(IRx1::Use->new(module_name=>$_->{module_name}->item)) 14 ### statement_control:if 15 make (IRx1::Cond->new(clauses=>[EXPR($_->{EXPR}),$_->{pblock}{block}->item],default=>$_->{else} ? $_->{else}->item : undef)) 12 16 ### noun 13 17 -
src/perl6/DumpMatch.pm
r21101 r21213 54 54 } 55 55 sub traverse_match { 56 my ($r,$label,$depth,$events ) = @_;56 my ($r,$label,$depth,$events,$opt) = @_; 57 57 return unless ref $r && ref $r ne 'SCALAR' && ref $r ne 'ARRAY'; 58 58 if (defined $r->{_from}) { … … 68 68 my $v = $r->{$name}; 69 69 if (ref $v eq 'ARRAY') { 70 $name = "[$name]" if $opt->{mark_arrays}; 70 71 for my $i (0 .. scalar @{$v}) { 71 traverse_match($v->[$i],$name,$depth+1,$events );72 traverse_match($v->[$i],$name,$depth+1,$events,$opt); 72 73 } 73 74 } elsif (ref $v eq 'SCALAR') { 74 75 } elsif (ref $v) { 75 traverse_match($v,$name,$depth+1,$events );76 traverse_match($v,$name,$depth+1,$events,$opt); 76 77 } else { 77 78 } … … 83 84 my $opt = shift || {}; 84 85 my $events = []; 85 traverse_match($r,$name,0,$events );86 traverse_match($r,$name,0,$events,$opt); 86 87 process_events(${$r->{_orig}},$events,$opt); 87 88 } -
src/perl6/STD5_dump_match
r20860 r21213 14 14 GetOptions("nocolor"=>\$nocolor,"vertical"=>\$vertical,"yaml"=>\$yaml); 15 15 unless ($#ARGV <= 0) { 16 die "USAGE: [--nocolor ] [filename]\n";16 die "USAGE: [--nocolor --vertical] [filename]\n"; 17 17 } 18 18 if ($nocolor) {
