Design of an AST node.
$node = {
type => 'Node type',
children => [
subnode1,
subnode2,
... # other nodes
],
# optional debug information
debug => {
file => 'filename', # if the same as the parent can be omitted
line => 123
}
... # other optional information depending on the node type
}