A lazy AST representing pretty-printable text. Models foo(a, b) foo op bar, and terminals foo in both lazy and eager forms
foo(a, b)
foo op bar
foo
Foo(aa, bbb, cccc)
LHS op RHS
x = y
xyz
"xyz"