[antlr-interest] Producing multiple output file (at the same time) from a single AST - best strategy?

Jim Idle jimi at temporal-wave.com
Fri Oct 28 10:36:58 PDT 2011


The built in return type $st has only a single template, but:

a
returns [StringTemplate x, StringTemplate y ....


Is basically the same thing done manually.


Jim

> -----Original Message-----
> From: antlr-interest-bounces at antlr.org [mailto:antlr-interest-
> bounces at antlr.org] On Behalf Of Voelkel, Andy
> Sent: Friday, October 28, 2011 7:48 AM
> To: Eric; ANTLR interest
> Subject: Re: [antlr-interest] Producing multiple output file (at the
> same time) from a single AST - best strategy?
>
> I think maybe my original post was confusing. What I meant was is that
> I need to produce multiple output files from a single AST, not
> alternative output formats like in cminus. That is, I need to generate
> a structure definition header file, a structure initialization C file,
> etc. So ideally, a single run through a single tree grammar would
> produce multiple string template "streams".
>
> I had one more thought. Is it possible to use ANTLR StringTemplate
> integration and produce more than one StringTemplate from a rule, if I
> explicitly declare the rule to have multiple StringValues as the rule
> return type?
>
>
> -          Andy
>
> From: Eric [mailto:researcher0x00 at gmail.com]
> Sent: Friday, October 28, 2011 4:13 AM
> To: Voelkel, Andy; ANTLR interest
> Subject: Re: [antlr-interest] Producing multiple output file from a
> single AST - best strategy?
>
>
> On Fri, Oct 28, 2011 at 1:50 AM, Voelkel, Andy
> <andy.voelkel at plantronics.com<mailto:andy.voelkel at plantronics.com>>
> wrote:
> Hi,
>
> I have a project where I have to produce multiple output files (C
> source files) from a single AST. It seems clear at this point that
> using StringTemplate to produce the output files makes the most sense.
> So how do I get multiple StringTemplate "streams" from a single AST? I
> can think two ways:
>
>
> 1.       Write separate tree grammars to produce the separate outputs,
> using built-in ANTLR-to-StringTemplate integration.
>
> 2.       Write one tree grammar, and use helper functions to build the
> separate outputs using manual creation of StringTemplates.
>
> 3.       Or is there another way?
>
> Approach #1 has the advantage of being able to use the built in
> integration between ANTLR and StringTemplate. But the disadvantage is
> that if I change the AST structure, I have to change all the tree
> grammar files, rerun the code generation, etc. Right now I'm leaning
> towards the helper functions which construct StringTemplates manually.
> Does anyone have any advice? I'm assuming that I can't use ANTLR-
> StringTemplate integration and also produce multiple StringTemplates
> with a single tree grammar. Do I have this right?
>
>
> -          Andy
>
> Hi Andy,
>
> Take a look at the cminus example in
> http://www.antlr.org/download/examples-v3.tar.gz. Cminus demonstrates
> String Templates by emitting source code for Python, Java, and
> Bytecode.
>
>
>
> Hope that helps, Eric
>
>
> ________________________________
>
> CONFIDENTIALITY NOTICE: This e-mail transmission, and any documents,
> files or previous e-mail messages attached to it, may contain
> information that is confidential and/or legally privileged. If you are
> not the intended recipient, or a person responsible for delivering it
> to the intended recipient, please DO NOT disclose the contents to
> another person, store or copy the information in any medium, or use any
> of the information contained in or attached to this transmission for
> any purpose. If you have received this transmission in error, please
> immediately notify the sender by reply email or at
> privacy at plantronics.com<mailto:privacy at plantronics.com>, and destroy
> the original transmission and its attachments without reading or saving
> in any manner.
>
> For further information about Plantronics - the Company, its products,
> brands, partners, please visit our website
> www.plantronics.com<http://www.plantronics.com>.
>
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-
> email-address
>
>
> ________________________________
>
> CONFIDENTIALITY NOTICE: This e-mail transmission, and any documents,
> files or previous e-mail messages attached to it, may contain
> information that is confidential and/or legally privileged. If you are
> not the intended recipient, or a person responsible for delivering it
> to the intended recipient, please DO NOT disclose the contents to
> another person, store or copy the information in any medium, or use any
> of the information contained in or attached to this transmission for
> any purpose. If you have received this transmission in error, please
> immediately notify the sender by reply email or at
> privacy at plantronics.com, and destroy the original transmission and its
> attachments without reading or saving in any manner.
>
> For further information about Plantronics - the Company, its products,
> brands, partners, please visit our website www.plantronics.com.
>
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-
> email-address


More information about the antlr-interest mailing list