ExpressionWalker

The default walker visits each node of the PENCIL expression without modifying them.

Each function processes a particular type of expressions and should return a
scalar or array expression depending on the type of the input expression.
Functions are also allowed to generate additional statements, which would
be inserted in the PENCIL program right before the statement containing
the expression being walked.
For example, one can implement conversion to SSA-like form as follows:
for each sub-expression, return a new variable annotated with an assignment operation,
which assigns this sub-expression to the created variable.