Ben's code

One key thing to note is that the intermediate representation doesn't have an explicit notion of a parenthetical expression. (It's okay that this happens. Parentheses are what users write to increase readability or to change precedence / association. But that information is implicitly captured by the AST, thanks to the parser.)

As for what's going on in this test, maybe I'm being too clever. The `parseAs` method expects to receive an argument of type `AST`. The test gives it an argument of type `Integer`, so Scala looks for an implicit conversion from `Integer` to `AST`, which it finds in the implicit conversion `int2Number` (defined in `ir/sugar.scala`).