If all tokens are aligned,
TRUE is returned, otherwise
function only checks for alignment of function calls. This can be
recycled conveniently later if needed as a vector with length > 1.
A flat parse table.
Multiple lines are called aligned if the following conditions hold for all but the first line of the expression:
lag spaces of column 1 must agree.
spacing around comma (0 before, > 1 after) and spacing around
= (at least
all positions of commas of col > 2 must agree (needs recursive creation of
Because of the last requirement, this function is very expensive to run. For this reason, the following approach is taken:
Only invoke the function when certain that alignment is possible.
Check the cheap conditions first.
For the recursive creation of text, greedily check column by column to make sure we can stop as soon as we found that columns are not aligned.