This is just for factor. The functions like expr there
are cases where you would set root = term() (this is
in the default cases) and there
are cases where you would do something like
node* left = term();
node* right = expr();
root = node('+', left, right)