[antlr-interest] antlr way of controlling generated XML (previously: Token type as string)
Miguel Ping
miguel.ping at gmail.com
Sat May 5 08:30:40 PDT 2007
My suggestion (the easy way, and its for v3):
- Implement your tree adaptor
- Implement your node type, extending from CommonTree
- Add xml serialization support in your custom node, whether by creating a
method that return a xml string, or whatever
- Finally, navigate through your tree and retrieve each xml part from each
node. the concatenation is your xml doc
On 5/5/07, Adrian Herscu <bmf1972 at fastmail.fm> wrote:
>
> Hi all,
>
> After few days of digging through the antlr framework and krugle for
> code fragments I still cannot guess the proper way of doing a relatively
> simple thing: serialize the AST in XML format, where for each of the
> serialized AST nodes, an attribute containing the token *name* is
> generated as an XML attribute besides the other attributes.
> Further, I will need to get the textual position of each AST node too.
>
> I am trying now to wrap the CommonAST instance supplied by the parser
> and replace the serializeXml methods with mine -- however, it does quite
> work and I am investigating it right now...
>
> Another approach I thought about is to supply my own ASTFactory and my
> own AST type. MyAST would be able to serialize as XML all the
> information in need and currently is buried somewhere in the Parser
> instance or in the CommonAST instace...
>
> Please help,
> Adrian.
>
>
>
> Miguel Ping wrote:
> > edit: Sorry for the 2x reply, I just need to lose the habit of not
> > replying to the mailing list
> >
> > Err, what version of antlr are you using? I'm guessing v2, I never used
> > it. I use v3. In v3 there is no special switch or something.
> >
> > Anyway, I guess there should be a place somewhere where the token <> int
> > is defined. Try peeking inside the .txt or the .smap. I don't know the
> > v2 generation procedure, but it should be similar to v3. If you run
> > outta luck, just ask in the forum, I guess some v2 user should help you
> out.
> >
> > On 5/3/07, *Adrian Herscu*
> > <bmf1972 at fastmail.fm
> > <mailto:bmf1972 at fastmail.fm>> wrote:
> >
> > Hi Miguel, thanks for your fast reply.
> >
> > I looked into the generated files directory and only file types see
> > there are expanded*.g, *.smap, *.txt and of course *.java.
> > Is there some switch to generate them?
> > Adrian.
> >
> >
> > Miguel Ping wrote:
> > > Hi,
> > >
> > > There is a file with the grammar name and .tokens extension
> > > (MyGrammar.tokens) that contains correspondence between numbers
> and
> > > strings. This file is created by antlr generator. Take a look, it
> > > should suit your needs.
> > >
> > > On 5/3/07, Adrian Herscu
> > > <bmf1972 at fastmail.fm
> > <mailto:bmf1972 at fastmail.fm>> wrote:
> > >> Hi all,
> > >>
> > >> I would like to write an XSL template to transform my AST.
> > >> I tried to serialize the AST as XML and I am getting something
> like:
> > >>
> > >> <antlr.CommonAST text="compilation-unit" type="4">
> > >> <antlr.CommonAST text="package" type="15">
> > >> ...
> > >> </antlr.CommonAST>
> > >> </antlr.CommonAST>
> > >>
> > >> In order to apply an XSL transformation using matching
> > templates, I am
> > >> transforming the above into:
> > >>
> > >> <compilation-unit>
> > >> <package>
> > >> ...
> > >> </package>
> > >> </compilation-unit>
> > >>
> > >> then I can bind XSL templates such as match="/compilation-unit",
> > >> match="package", etc.
> > >>
> > >> The problem is with AST nodes that have text content which
> cannot
> > >> function as XML tags - for example:
> > >>
> > >> <CommonAST text="123" type="14" />
> > >>
> > >> In this case <123 /> is an illegal XML tag.
> > >> type="14" means that there is some token assigned the identifier
> 14.
> > >>
> > >> If there would be some easy way to change the token type
> > identifiers to
> > >> strings or to add a string field associated with the token type
> > then it
> > >> would solve my problem really quick.
> > >>
> > >> Is there such a thing? A better approach?
> > >>
> > >> Adrian.
> > >>
> > >>
> > >
> >
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20070505/0599a15c/attachment.html
More information about the antlr-interest
mailing list