Changeset 21213

Show
Ignore:
Timestamp:
07/04/08 13:39:38 (3 months ago)
Author:
pmurias
Message:

[pixie] arrays are marked in the dumps, stranger token names work more often

Files:
6 modified

Legend:

Unmodified
Added
Removed
  • misc/pixie/extract_actions

    r21084 r21213  
    1111my @last_token; 
    1212for (@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); 
    1517} 
    1618 
  • misc/pixie/insert_actions

    r21110 r21213  
    1717my ($name); 
    1818for (<$std>) { 
    19     if (/(?:token|rule) ([\w:]+)/) { 
     19    if (/(?:regex|rule|token) \s+ ([:\w]+?(?:sym<.*?>)?)\s/x) { 
    2020        $name = $1; 
     21        $name =~ s/:sym<(.*)>/$1/; 
    2122#        warn YELLOW,"$name",RESET; 
    2223    } 
    23     if (/\{\*\} \s* (?:\#=(.*))?/x) { 
     24    if (/\{\*\} .*? (?:\#=(.*))?$/x) { 
    2425        my $tag = $1 || "";  
    2526        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}; 
    2728#        warn "not inserting <".RED.$full_name.RESET.">" unless $actions{$full_name}; 
    2829        my $content = $actions{$full_name} // "*"; 
  • misc/pixie/pixie

    r21126 r21213  
    2525use Encode; 
    2626require 'mangle.pl';  
     27sub ::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} 
    2765use strict; 
    2866use warnings; 
     
    5088 
    5189while (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); 
    5393    die "error at pixie_action5, action $name: $@\n" if $@; 
    5494} 
     
    118158        my $tag = shift; 
    119159        $tag =~ s/__S_\d+/:/; 
     160        my $tag = ::unmangle($tag); 
    120161 
    121162        if ($actions{$tag}) { 
    122             print (GREEN,$tag,"\n",RESET) unless $quiet; 
     163            print (GREEN,$tag,RESET,"\n") unless $quiet; 
    123164            local $_ = $self; 
    124165            $actions{$tag}->(); 
    125166            $self; 
    126167        } else { 
    127             print (RED,$tag,"\n",RESET) unless $quiet; 
     168            print (RED,$tag,RESET,"\n") unless $quiet; 
    128169            $self; 
    129170        } 
     
    136177    exit; 
    137178} 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; 
    139180} 
    140181my $ir = $r->{''}; 
  • misc/pixie/pixie_actions5

    r21126 r21213  
    11### comp_unit  
    22make (IRx1::CompUnit->new(statements=>$_->{statementlist}->item)) 
     3### block  
     4make (IRx1::Block->new(statements=>$_->{statementlist}->item)) 
    35### statementlist  
    4  make ([map { ref $_->item ? $_->item : '#' . $_->item } @{$_->{statement}}]) 
     6 make ([map { ref $_->item ? $_->item : do {(my $tmp = $_->item) =~ s/^^/#todo: /mg;$tmp}} @{$_->{statement}}]) 
    57### statement control 
    68make ($_->{statement_control}->item)  
     
    1012### statement_control:use  
    1113make(IRx1::Use->new(module_name=>$_->{module_name}->item)) 
     14### statement_control:if  
     15make (IRx1::Cond->new(clauses=>[EXPR($_->{EXPR}),$_->{pblock}{block}->item],default=>$_->{else} ? $_->{else}->item : undef)) 
    1216### noun  
    1317 
  • src/perl6/DumpMatch.pm

    r21101 r21213  
    5454} 
    5555sub traverse_match { 
    56     my ($r,$label,$depth,$events) = @_; 
     56    my ($r,$label,$depth,$events,$opt) = @_; 
    5757    return unless ref $r && ref $r ne 'SCALAR' && ref $r ne 'ARRAY'; 
    5858     if (defined $r->{_from}) { 
     
    6868        my $v = $r->{$name}; 
    6969        if (ref $v eq 'ARRAY') { 
     70            $name = "[$name]" if $opt->{mark_arrays}; 
    7071            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); 
    7273            } 
    7374        } elsif (ref $v eq 'SCALAR') { 
    7475        } elsif (ref $v) { 
    75             traverse_match($v,$name,$depth+1,$events); 
     76            traverse_match($v,$name,$depth+1,$events,$opt); 
    7677        } else { 
    7778        } 
     
    8384    my $opt = shift || {}; 
    8485    my $events = []; 
    85     traverse_match($r,$name,0,$events); 
     86    traverse_match($r,$name,0,$events,$opt); 
    8687    process_events(${$r->{_orig}},$events,$opt); 
    8788} 
  • src/perl6/STD5_dump_match

    r20860 r21213  
    1414GetOptions("nocolor"=>\$nocolor,"vertical"=>\$vertical,"yaml"=>\$yaml); 
    1515unless ($#ARGV <= 0) { 
    16     die "USAGE: [--nocolor] [filename]\n"; 
     16    die "USAGE: [--nocolor --vertical] [filename]\n"; 
    1717} 
    1818if ($nocolor) {