Node structure

Fields in a node structure:

*item type

The string name for the node. It can be used to determine the overall structure. For example a 'binop' node will have a body with a node left-hand side, the string operation name and a body right-hand side. Right now the type names are a little funky, but over time I hope these will less so.

* item sep (optional)

A string indicating how to separate the the strings extracted from the texts field. The field is subject to format expansion. In particular tt can have '%;' in it to indicate we are separating statements. the body.

* item texts

A reference to a list containing either:

* item a tuple with a strings, and a op address * a DeparseTreee::Node object

* item text

Text representation of the node. Eventually this will diasppear and, you'll use one of the node-to-string conversion routines.

* item maybe_parens

If this node is embedded in the parent above, whether we need to add parenthesis. The keys is a hash ref hash reference

context

A number passed from the parent indicating its precedence context that the expression is embedded it.

precedence

A number as determined by the operator at this level.

parens

'true' if we should to add parenthesis based on context and precedence values; '' if not. We don't nest equal precedence for unuary ops. The unary op precedence is given by UNARY_OP_PRECEDENCE