# https://stackoverflow.com/questions/62051742/whats-the-real-difference-between-a-token-and-a-rule/62053666#62053666
{ say '--'; .say; .EVAL.say } for
q['a' ~~ token { {O} ^ .?{P}.{Q} $ } # Nil],
q['a' ~~ rule { {O} ^ .?{P}.{Q} $ } # Nil],
q['aa' ~~ token { {O} ^ .?{P}.{Q} $ } # 「aa」],
q['aa' ~~ rule { {O} ^ .?{P}.{Q} $ } # 「aa」],
q['a' ~~ token { {O} ^ .? {P}.{Q} $ } # Nil],
q['a' ~~ rule { {O} ^ .? {P}.{Q} $ } # 「a」],
q['aa' ~~ token { {O} ^ .? {P}.{Q} $ } # 「aa」],
q['aa' ~~ rule { {O} ^ .? {P}.{Q} $ } # Nil],
q['a' ~~ token { {O} ^ .?<.ws>{P}.{Q} $ } # Nil],
q['a' ~~ rule { {O} ^ .?<.ws>{P}.{Q} $ } # Nil],
q['aa' ~~ token { {O} ^ .?<.ws>{P}.{Q} $ } # Nil],
q['aa' ~~ rule { {O} ^ .?<.ws>{P}.{Q} $ } # Nil];
my ($x, $y);
sub O { $x=$y=0 }
sub P { say "P call {++$x}. \$/ is set to ", CALLERS::<$/> }
sub Q { say "Q call {++$y}. \$/ is set to ", CALLERS::<$/> }