[antlr-interest] multiple command queues to get multiple rewrites from a single pass
Michael Scholz
michael.scholz at gmail.com
Thu Jan 21 18:23:44 PST 2010
Referring to The Definitive ANTLR Reference, page 220
"You can also have multiple command queues to get multiple rewrites from a
single pass over the input such as generating both a C file and its header
file (see the TokenRewriteStream Javadoc for an example)"
said example:
/* You can also have multiple "instruction streams" and get multiple
* rewrites from a single pass over the input. Just name the instruction
* streams and use that name again when printing the buffer. This could be
* useful for generating a C file and also its header file--all from the
* same buffer:
*
* tokens.insertAfter("pass1", t, "text to put after t");}
* tokens.insertAfter("pass2", u, "text after u");}
* System.out.println(tokens.toString("pass1"));
* System.out.println(tokens.toString("pass2"));
*
* If you don't use named rewrite streams, a "default" stream is used as
* the first example shows.
*/
I don't see how to apply this in the context of the CMinus.g 1pass rewriter.
This example uses inline template definitions to rewrite, and the syntax for
doing that:
... -> template-name(<<attribute-assignment-list>>)
doesn't have any obvious way to specify the non-default instruction
stream... to generate a replace(String,...) instead of replace(...) in the
parser file.
If this functionality is enabled, the documentation for getting to it is not
obvious. Is this a V2/V3 issue? The tweak example seems like it might be
closer than 1pass rewriter, but it doesn't look consistent with the book's
techniques.
More information about the antlr-interest
mailing list