Some grammar rules need to be conditional based on whether we're trying
for a parser or an unparser.
As a result, many grammar rules now have to be def, not lazy val, since
they are parameterized by this.
Note that using a dynamic variable doesn't work - because the time when the grammar rules
are evaluated isn't necessarily within the dynamic scope of the variable
binding. It might happen later.
Some grammar rules need to be conditional based on whether we're trying for a parser or an unparser.
As a result, many grammar rules now have to be def, not lazy val, since they are parameterized by this.
Note that using a dynamic variable doesn't work - because the time when the grammar rules are evaluated isn't necessarily within the dynamic scope of the variable binding. It might happen later.