- Timestamp:
- 11/09/08 03:09:36 (2 months ago)
- Location:
- src/perl6
- Files:
-
- 2 modified
-
Cursor.pmc (modified) (2 diffs)
-
STD.pm (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/perl6/Cursor.pmc
r22909 r22934 611 611 my $P = $self->{_pos}; 612 612 if ($P >= @::ORIG) { 613 return '', 0,sub {};613 return sub {}; 614 614 } 615 615 pos($::ORIG) = $P; 616 $::ORIG =~ m/\G(\[[\\<>«»]*..|[<>][<>]..|[ -~].|.)/smgc;616 $::ORIG =~ m/\G(\[[\\<>«»]*..|[<>][<>]..|[$@%]?\w+|['"]|[ -~].|.)/smgc; 617 617 my $ch2 = $1; 618 618 619 return $lexer->{ $ch2} //= do {619 return $lexer->{X}{$ch2} //= do { 620 620 my @pats; 621 621 my $file = $lexer->{FILE} . '__' . ::mangle($ch2); … … 1570 1570 } 1571 1571 1572 my $alpha; 1573 BEGIN { 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 } 1572 1580 sub alpha { my $self = shift; 1573 1581 local $CTX = $self->callm if $DEBUG & DEBUG::trace_call; 1574 1582 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]$/) { 1577 1587 my $r = $self->cursor($P+1); 1578 1588 return $r->retm(); -
src/perl6/STD.pm
r22890 r22934 121 121 } 122 122 123 method add_type ($longname) { 124 my $shortname = $longname.<name>.text; 125 my $typename = main::mangle($shortname); 123 method add_type ($name) { 124 my $typename = main::mangle($name); 126 125 my $qualname = ($+PKG // 'GLOBAL') ~ '::' ~ $typename; 127 126 %typenames{$typename} = $qualname; 128 127 %typenames{$qualname} = $qualname; 129 %typenames{$ shortname} = $qualname;128 %typenames{$name} = $qualname; 130 129 } 131 130 … … 747 746 {{ 748 747 my $longname = $<module_name><longname>; 749 $¢.add_type($longname );748 $¢.add_type($longname.text); 750 749 }} 751 750 ] … … 1299 1298 <module_name>{ 1300 1299 $longname = $<module_name>[0]<longname>; 1301 $¢.add_type($longname );1300 $¢.add_type($longname.text); 1302 1301 } 1303 1302 ]? … … 1742 1741 | '::?'<identifier> # parse ::?CLASS as special case 1743 1742 | <longname> 1744 <?{ 1743 <?{{ 1745 1744 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 }}> 1748 1752 ] 1749 1753 # parametric type? … … 2616 2620 token type_declarator:subset { 2617 2621 <sym> :s 2618 <longname> { $¢.add_type($<longname> ); }2622 <longname> { $¢.add_type($<longname>.text); } 2619 2623 [ of <fulltypename> ]? 2620 2624 [where <EXPR(item %chaining)> ]? # (EXPR can parse multiple where clauses) … … 2624 2628 :my $l; 2625 2629 <sym> <.ws> 2626 [ $l = <longname> :: { $¢.add_type($l ); } <.ws> ]?2630 [ $l = <longname> :: { $¢.add_type($l.text); } <.ws> ]? 2627 2631 <EXPR> <.ws> 2628 2632 }
