Changeset 22934 for src

Show
Ignore:
Timestamp:
11/09/08 03:09:36 (2 months ago)
Author:
lwall
Message:

[Cursor] random fiddling
[STD] add type on ::T

Location:
src/perl6
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • src/perl6/Cursor.pmc

    r22909 r22934  
    611611    my $P = $self->{_pos}; 
    612612    if ($P >= @::ORIG) { 
    613         return '', 0, sub {}; 
     613        return sub {}; 
    614614    } 
    615615    pos($::ORIG) = $P; 
    616     $::ORIG =~ m/\G(\[[\\<>«»]*..|[<>][<>]..|[ -~].|.)/smgc; 
     616    $::ORIG =~ m/\G(\[[\\<>«»]*..|[<>][<>]..|[$@%]?\w+|['"]|[ -~].|.)/smgc; 
    617617    my $ch2 = $1; 
    618618 
    619     return $lexer->{$ch2} //= do { 
     619    return $lexer->{X}{$ch2} //= do { 
    620620        my @pats; 
    621621        my $file = $lexer->{FILE} . '__' . ::mangle($ch2); 
     
    15701570} 
    15711571 
     1572my $alpha; 
     1573BEGIN { 
     1574    $alpha = ""; 
     1575    for my $ch (0..255) { 
     1576        my $char = chr($ch); 
     1577        vec($alpha,$ch,1) = 1 if $char =~ /\w/ and $char !~ /\d/; 
     1578    } 
     1579} 
    15721580sub alpha { my $self = shift; 
    15731581    local $CTX = $self->callm if $DEBUG & DEBUG::trace_call; 
    15741582    my $P = $self->{_pos}; 
    1575     my $char = substr($::ORIG, $P, 1); 
    1576     if ($char =~ /^[_[:alpha:]\pL]$/) { 
     1583#    my $char = substr($::ORIG, $P, 1); 
     1584    my $ch = $::ORIG[$P]; 
     1585    if (vec($alpha,$ch,1) or ($ch > 255 and chr($ch) =~ /\pL/)) { 
     1586#    if ($char =~ /^[_[:alpha:]\pL]$/) { 
    15771587        my $r = $self->cursor($P+1); 
    15781588        return $r->retm(); 
  • src/perl6/STD.pm

    r22890 r22934  
    121121} 
    122122 
    123 method add_type ($longname) { 
    124     my $shortname = $longname.<name>.text; 
    125     my $typename = main::mangle($shortname); 
     123method add_type ($name) { 
     124    my $typename = main::mangle($name); 
    126125    my $qualname = ($+PKG // 'GLOBAL') ~ '::' ~ $typename; 
    127126    %typenames{$typename} = $qualname; 
    128127    %typenames{$qualname} = $qualname; 
    129     %typenames{$shortname} = $qualname; 
     128    %typenames{$name} = $qualname; 
    130129} 
    131130 
     
    747746        {{ 
    748747            my $longname = $<module_name><longname>; 
    749             $¢.add_type($longname); 
     748            $¢.add_type($longname.text); 
    750749        }} 
    751750    ] 
     
    12991298        <module_name>{ 
    13001299            $longname = $<module_name>[0]<longname>; 
    1301             $¢.add_type($longname); 
     1300            $¢.add_type($longname.text); 
    13021301        } 
    13031302    ]? 
     
    17421741    | '::?'<identifier>                 # parse ::?CLASS as special case 
    17431742    | <longname> 
    1744       <?{ 
     1743      <?{{ 
    17451744        my $longname = $<longname>.text; 
    1746         substr($longname, 0, 2) eq '::' or $¢.is_type($longname) 
    1747       }> 
     1745        if substr($longname, 0, 2) eq '::' { 
     1746            $¢.add_type(substr($longname, 2)); 
     1747        } 
     1748        else { 
     1749            $¢.is_type($longname) 
     1750        } 
     1751      }}> 
    17481752    ] 
    17491753    # parametric type? 
     
    26162620token type_declarator:subset { 
    26172621    <sym> :s 
    2618     <longname> { $¢.add_type($<longname>); } 
     2622    <longname> { $¢.add_type($<longname>.text); } 
    26192623    [ of <fulltypename> ]? 
    26202624    [where <EXPR(item %chaining)> ]?    # (EXPR can parse multiple where clauses) 
     
    26242628    :my $l; 
    26252629    <sym> <.ws> 
    2626     [ $l = <longname> :: { $¢.add_type($l); } <.ws> ]? 
     2630    [ $l = <longname> :: { $¢.add_type($l.text); } <.ws> ]? 
    26272631    <EXPR> <.ws> 
    26282632}