=====================================================
recovers from errors at the top level
=====================================================
x * * y
---
(expression (variable) (ERROR '*'))

=====================================================
recovers from errors inside parenthesized expressions
=====================================================
x + (y * + z) * 5
---
(sum
    (variable)
    (product (group (ERROR '+')) (number)))
