Traits on expression tokens can be useful here
# addition proto sub infix:<+> is looser(infix:<*>) is pirop('add') # use PIR 'add' { ... } # handle parentheses proto sub circumfix:<( )> is equiv('term:') is pirop('set') # use PIR 'set' { ... } # short-circuiting && proto sub infix:<&&> is pasttype('if') { ... }