If I interpret the printer in Pattern 14 correctly then a AST
(= x (* (+ 1 2) (+ 3 4)))
(which basically is
x=(1+2)*(3+4) ) would be printed out as
and I don’t see how that could be parsed back into the original AST.
I understand that to keep the example simple it doesn’t handle the (). But then I’d make the printer write it out in a different form so that nobody gets the idea that its output is valid input for the parser