I'm trying to write a revised operator precedence table for perl6, similar to the one in perlop.pod.
This is what I have come up with based on Apocalypse 3 and Exegesis 3. Does anyone have comments? I'm not sure if the precedence for : (adverb) or 'is' and 'but' are quite right. perl6 operator precedence left terms and list operators (leftward) [] {} () quotes left . and unary . nonassoc ++ -- left is but right ** right ! \ and unary ~ + - * _ left =~ !~ left * / % x left + - _ left << >> right named unary operators, -X left < > <= >= lt gt le ge == != <=> eq ne cmp left & left | ~ left && left || ~~ // nonassoc .. ... right ??:: right = := **= += -= _= *= /= %= x= &= |= ~= <<= >>= &&= ||= ~~= //= left , => left ; left : nonassoc list operators (rightward) right not left and left or xor err Here is a list of changes from perl5: . becomes _ -> becomes . == etc unified with < etc, and given left associativity binary ^ becomes ~ ?: becomes ??:: added ~~ // err added ; with lower precedence than , added unary * and _ with same precedence as unary + - added binary := added unary . with same precedence as binary . ( .foo === $self.foo ) added : (adverb operator) with low precedence(?) print foo: $x, $y, $z; # lower than , my $fh = open $filepath : mode=>'rw'; # lower than => added 'is' and 'but' with high precedence(?) my $thing is constant = 3 but false; # higher than = Larry mentions that other precedence unifications are possible. I can see the following as possibilites. Are there others? & with && | with || << >> with * / ~ John Williams