Thanks for clearing that up, at least somewhat ;-)
- Citing Terence Parr
- The trick is to provide sufficient power in a template engine without providing constructs that allow separation violation.
It is my understanding that he shows that "push" (his Definition 8) is sufficiently strict to ensure separation. But for the template engine user's convenience you can add things while separation is still enforced.
He designed StringTemplate accordingly, but StringTemplate isn't pure-push then, isn't it?