Legend:
- Unmodified
- Added
- Removed
-
src/perl6/STD.pm
r22550 r22553 914 914 [ 915 915 | <fatarrow> 916 | <variable> { $< sigil> = $<variable><sigil> }916 | <variable> { $<SIGIL> = $<variable><sigil> } 917 917 | <package_declarator> 918 918 | <scope_declarator> … … 1185 1185 token variable_declarator { 1186 1186 :my $IN_DECL is context<rw> = 1; 1187 <variable> { $< sigil> = $<variable><sigil> }1187 <variable> { $<SIGIL> = $<variable><sigil> } 1188 1188 { $IN_DECL = 0; } 1189 1189 [ # Is it a shaped array or hash declaration? … … 1206 1206 :dba('variable initializer') 1207 1207 [ 1208 | '=' <.ws> <EXPR( ($< sigil> // '') eq '$' ?? item %item_assignment !! item %list_prefix )>1208 | '=' <.ws> <EXPR( ($<SIGIL> // '') eq '$' ?? item %item_assignment !! item %list_prefix )> 1209 1209 | '.=' <.ws> <dottyop> 1210 1210 ]? … … 3147 3147 { 3148 3148 <sym> 3149 { $¢ = (self.< sigil>//'') eq '$'3149 { $¢ = (self.<SIGIL> // self.<sigil> // '') eq '$' 3150 3150 ?? STD::Item_assignment.coerce($¢) 3151 3151 !! STD::List_assignment.coerce($¢); -
src/perl6/viv
r22552 r22553 50 50 51 51 our $AUTOLOAD; 52 my $SEQ = 1; 52 53 53 54 sub AUTOLOAD { … … 74 75 $r{$key} = $$v{$key}; 75 76 } 77 } 78 elsif ($k eq 'SIGIL') { 79 $r{SIGIL} = $v; 76 80 } 77 81 elsif ($k eq '_arity') { … … 95 99 } 96 100 $r{$k} = $zyg; 101 $r{zygs}{$k} = $SEQ++ if @$zyg; 97 102 } 98 103 elsif (ref $v) { … … 103 108 $r{$k} = $v; 104 109 } 110 $r{zygs}{$k} = $SEQ++; 105 111 unless (ref($r{$k}) =~ /^VAST/) { 106 112 my $class = "VAST::$k"; … … 144 150 sub emit_p6 { my $self = shift; 145 151 my $text; 146 # XXX bogus 147 if (exists $self->{TEXT}) { 148 $text = $self->{TEXT}; 149 } 150 elsif (exists $self->{sym}) { 152 my @sym; 153 if (exists $self->{sym}) { 151 154 my $sym = $self->{sym}; 152 155 if (ref $sym eq 'ARRAY') { 153 $text = join '?',@$sym;156 @sym = @$sym; 154 157 } 155 158 else { 156 $text = $sym; 157 } 158 } 159 else { 160 for my $key (sort keys %$self) { 161 my $part = $$self{$key}; 159 @sym = $sym; 160 } 161 } 162 if ($self->{zygs}) { 163 my @zyg = $self->visit_zygs; 164 my $arity = $self->{arity} // ''; 165 if ($arity eq 'BINARY') { 166 $text .= shift @zyg; 167 $text .= shift @sym; 168 $text .= shift @zyg; 169 } 170 elsif ($arity eq 'UNARY') { 171 if ($self->{post}) { 172 $text .= shift @zyg; 173 $text .= shift @sym; 174 } 175 else { 176 $text .= shift @sym; 177 $text .= shift @zyg; 178 } 179 } 180 else { 181 $text .= join('', @zyg); 182 } 183 } 184 elsif (exists $self->{TEXT}) { 185 $text = $self->{TEXT}; 186 } 187 elsif (@sym) { 188 $text .= join('', @sym); 189 } 190 $text; 191 } 192 193 sub visit_zygs { my $self = shift; 194 my @zygs; 195 if ($self->{zygs}) { 196 my $zygs = $self->{zygs}; 197 for my $key (sort {$zygs->{$a} <=> $zygs->{$b}} keys %$zygs) { 198 my $part = $self->{$key}; 162 199 if (ref $part eq 'ARRAY') { 163 200 my @kids = @$part; 164 201 for my $kid (@kids) { 165 $text .= $kid->emit_p6;202 push @zygs, $kid->emit_p6 // ''; 166 203 } 167 204 } 168 205 elsif (ref $part) { 169 $text .= $part->emit_p6;206 push @zygs, $part->emit_p6 // ''; 170 207 } 171 208 else { 172 $text =$key . '=' . $part;173 } 174 } 175 } 176 $text;209 push @zygs, $key . '=' . $part; 210 } 211 } 212 } 213 @zygs; 177 214 } 178 215 }
