Changeset 22899 for src

Show
Ignore:
Timestamp:
11/06/08 17:25:00 (2 months ago)
Author:
lwall
Message:

[Cursor] plug some syntax errors misdiagnosed by new LTM
[tryfile] restore ability to report failures via exit status

Location:
src/perl6
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • src/perl6/Cursor.pmc

    r22896 r22899  
    364364                        } 
    365365                    } 
     366                    elsif ($1 eq 'p') { 
     367                        if ($p =~ s/^(\w{1,2})//) { 
     368                            $f .= $1; 
     369                        } 
     370                        elsif ($p =~ s/^(\{\w+\})//) { 
     371                            $f .= $1; 
     372                        } 
     373                    } 
     374                    elsif ($1 eq 'b') { 
     375                        return 1; 
     376                    } 
    366377                    return 1 if $p =~ s/^[*?]//; 
    367378                    return 0 unless $c =~ /^$f/; 
     
    412423    my $p = shift; 
    413424    my $len = 0; 
    414     while ($p ne '' and $p ne '.?') { 
     425    while ($p ne '') { 
    415426        return -1 if $p =~ /^[*+?(|]/; 
    416427        return -1 if $p =~ /^\{[\d,]+\}/; 
     
    422433            $len++, next if $p =~ s/^\d+//; 
    423434            $len++, next if $p =~ s/^x[\da-fA-F]{1,4}//; 
     435            $len++, next if $p =~ s/^p[a-zA-Z]{1,2}//; 
    424436            return -1; 
    425437        } 
     
    613625            @pats = grep { canmatch($_, $ch2) } @{ 
    614626                $lexer->{FASTPATS} //= [ 
    615                     map { my $x = $_; $x =~ s/\(\?#::\)//g; $x =~ s/\t/.?\t/; $x } @{$lexer->{PATS}} 
     627                    map { my $x = $_; $x =~ s/\(\?#::\)//g; $x } @{$lexer->{PATS}} 
    616628                ] 
    617629            }; 
     
    679691            for my $i (0..@$fates-1) { 
    680692                $self->deb("\t", $i, ': ', $fates->[$i][3]) if $DEBUG & DEBUG::autolexer; 
    681             } 
    682             for my $pat (@pats) { 
    683                 $pat =~ s/\.\?$//;      # ltm backoff doesn't need tre workaround 
    684                 $pat =~ s/\\>/\\b/g;    # perl regex doesn't use \> 
    685693            } 
    686694 
     
    735743                                if ($l == -1) { 
    736744                                    my $p = $pats[$px]; 
     745                                    $self->deb("Trying $p at $P\n") if $DEBUG & DEBUG::fixed_length; 
    737746                                    pos($::ORIG) = $P; 
    738                                     if (($::ORIG =~ m/\G$p/gc)) { 
     747                                    if (($::ORIG =~ m/\G($p)/msgc)) { 
     748                                        $self->deb("Got $1\n") if $DEBUG & DEBUG::fixed_length; 
    739749                                        $$rxlens[$px] = $l = pos($::ORIG) - $P; 
    740750                                        if ($l == $$trylen) { 
     
    16351645    my $P = $self->{_pos}; 
    16361646    my $char = substr($::ORIG, $P, 1); 
    1637     if ($char =~ /^[[:alpha:]_]$/) { 
     1647    if ($char =~ /^[_[:alpha:]\pL]$/) { 
    16381648        my $r = $self->cursor($P+1); 
    16391649        return $r->retm(); 
     
    16521662    } 
    16531663    my $char = substr($::ORIG, $from, 1); 
    1654     if ($char =~ /^[_[:alpha:]]$/) { 
     1664    if ($char =~ /^[_[:alpha:]\pL]$/) { 
    16551665        my $r = $self->cursor_rev($from); 
    16561666        return $r->retm(); 
     
    20842094            ::qm($fixed); 
    20852095        } 
    2086         $fixed =~ s/([[:alpha:]])/'[' . $1 . chr(ord($1)^32) . ']'/eg if $self->{i}; 
     2096        $fixed =~ s/([a-zA-Z])/'[' . $1 . chr(ord($1)^32) . ']'/eg if $self->{i}; 
    20872097        $fixed; 
    20882098    } 
     
    21202130            } 
    21212131            elsif ($_ eq '»' or $_ eq '>>') { 
    2122                 return '\>'; 
     2132                return '\b'; 
    21232133            } 
    21242134            elsif ($_ eq '«' or $_ eq '<<') { 
    2125                 return '\<'; 
     2135                return '\b'; 
    21262136            } 
    21272137            elsif ($_ eq '::' or $_ eq ':::' or $_ eq '.*?') { 
     
    21562166                Encode::_utf8_on($sym); 
    21572167                my $text = ::qm($sym); 
    2158                 $text =~ s/([[:alpha:]])/'[' . lc($1) . uc($1) . ']'/eg if $self->{i}; 
     2168                $text =~ s/(\pL)/'[' . lc($1) . uc($1) . ']'/eg if $self->{i}; 
    21592169                return $text; 
    21602170            } 
    21612171            elsif ($_ eq 'alpha') { 
    21622172                $fakepos++; 
    2163                 return '[_[:alpha:]]';  # XXX not unicodey 
     2173                return '[_[:alpha:]\pL]'; 
    21642174            } 
    21652175            my $lexer; 
  • src/perl6/tryfile

    r22858 r22899  
    55use YAML::XS; 
    66use Encode; 
     7 
     8my $failures = 0; 
    79 
    810if (not @ARGV) { 
     
    1618        STD->parsefile($file); 
    1719    }; 
    18     warn $@ if $@; 
     20    if ($@) { 
     21        warn $@; 
     22        $failures++; 
     23    } 
    1924} 
     25 
     26exit $failures;