Four function calculator:
digit = anything:x ?(x in '0123456789')
number = <digit+>:ds -> int(ds)
ws = ' '*
muldiv = value:left ws ('*' value:right -> left * right
|'/' value:right -> left / right
| -> left)
expr = muldiv:left ws ('+' muldiv:right -> left + right
|'-' muldiv:right -> left - right
| -> left)
parens = '(' ws expr:e ws ')' -> e
value = ws (number | parens)