Compiler with operator precedence parsing
grammar ABC::Grammar is HLL::Grammar {
    rule TOP { <EXPR> }
    token term:sym<value>    { <integer> }
    token circumfix:sym<( )> { '(' <.ws> <EXPR> ')' }
    token prefix:sym<->  { '-'  <O(':prec<3>, :assoc<unary>, :pirop<neg>')> }
    token infix:sym<*>   { '*'  <O(':prec<2>, :pirop<mul>')> }
    token infix:sym</>   { '/'  <O(':prec<2>, :pirop<div>')> }
    token infix:sym<+>   { '+'  <O(':prec<1>, :pirop<add>')> }
    token infix:sym<->   { '-'  <O(':prec<1>, :pirop<sub>')> }
}