Printer for ASTNodes
In this class each language operator in the expression language is assigned an absolute precedence value (operators are globally ordered), and offers a method to determine when a sub expression must be parenthesised to preserve the correct AST structure when printing an expression as text.