[antlr-interest] Re: XPA astFactory.dupTree bug?
David Ryan
oobles at hotmail.com
Tue Aug 17 17:28:40 PDT 2004
Oliver,
Thanks for the quick response agian. Looking at the ASTFactory class
in ANTLR, it has the following:
protected AST create(Class c) {
AST t = null;
try {
t = (AST)c.newInstance(); // make a new one
}
catch (Exception e) {
error("Can't create AST Node " + c.getName());
return null;
}
return t;
}
public AST dup(AST t) {
if ( t==null ) {
return null;
}
AST dup_t = create(t.getClass());
dup_t.initialize(t);
return dup_t;
}
The dup method uses the AST class to create a new instance. I think
the XMLStartAST requires the following methods. I haven't had a
chance to try this yet, will give it a go today.
public XMLStartAST() {
super();
}
public void initialize(AST ast) {
super.initialize(ast);
setAttributes(new AttributesImpl(((XMLStartAST)
ast).getAttributes()));
}
Regards,
David.
Oliver Zeigermann wrote:
> Tell me what is missing in the XMLStartAST and I will add it. What
would
> be the meaning of an empty contructor for XMLStartAST?
>
> Oliver
>
> David Ryan wrote:
> > I've started doing some rather nasty re-arranging of my XML data
> > structures using antlr and XPA. This has involved expanding the
tree
> > by copying parts of a tree, and then pasting them back into
multiple
> > parts of the tree. One pass for collecting inputs, and second
pass
> > for paste.
> >
> > I've discovered that just re-inserting the same AST into multiple
> > parts of the tree can end in infinite loops. I'm now trying to
> > duplicate the AST trees as I put them back into the tree. The
> > XMLStartAST does not have an empty constructor to support the
> > astFactory.dupTree method.
> >
> > Is there another way to duplicate XMLStartAST trees? Is this the
> > right way to go about expanding a tree?
> >
> > Thanks,
> > David.
> >
> > PS Wish I could make the antlr workshop. Ashame the few thousand
km
> > makes it so difficult to get to. :) Any Antlarians going to
oopsla?
> > I'll probably make it there this year.
> >
> >
> >
> >
> > Yahoo! Groups Links
> >
> >
> >
> >
> >
> >
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/antlr-interest/
<*> To unsubscribe from this group, send an email to:
antlr-interest-unsubscribe at yahoogroups.com
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
More information about the antlr-interest
mailing list