Unify how calls and operators are represented in the AST.
Currently the representations of calls, operators (infix, prefix), and parentheses are different Nodes. These nodes have very similar attributes, and the code that handles them is also very similar.
Some unification would be desirable, to reduce the code size. - On the other hand the current structure of the code is easy to understand.
Whiteboard
Expressions that go to the code generator should only contain function calls (and parentheses). The code generator can recognize the individual built in functions and generate the right code. This type of architecture will simplify the interpreter a little, but not add any complexity to the code generator.
Parentheses could be removed by improving the code generator. (This will decrease the line count in the interpreter, but raise it in the code generator.)