I use SQLDomainModel to parse a valid SQL statement and it returns a
QueryStatement object. I want to iterate the whole parse tree to look up
constants like 'a string' or 123 or 123.456. But unfortunately I can't
find an universal Visitor Interface to visit QueryStatement.
for example, JDT supplied an AST Visitor (call ASTVisitor) that can
visit AST nodes.
Unfortunately there isn't a generic visitor for traversing the Query
model. Query model visitors are typically purpose-written to navigate
the part of the tree they are interested in. There are lots of examples
of that in the "helper" classes, such as the StatementHelper class in
the helper package of the org.eclipse.datatools.modelbase.sql.query plugin.
However you can probably get what you want using a "Post-parse
processor" that you add to the Query parser. The parser can gather
model elements that you are interested in into a list which you can then
iterate. See the PostParseProcessor class in the
org.eclipse.datatools.sqltools.parsers.sql plugin for more information,
and the TableReferenceResolver class in the
org.eclipse.datatools.sqltools.parsers.sql.query plugin for an example.
On 12/22/2011 4:16 AM, David Chan wrote:
> hi, DTP professionals:
>
> I use SQLDomainModel to parse a valid SQL statement and it returns a
> QueryStatement object. I want to iterate the whole parse tree to look up
> constants like 'a string' or 123 or 123.456. But unfortunately I can't
> find an universal Visitor Interface to visit QueryStatement.
>
> for example, JDT supplied an AST Visitor (call ASTVisitor) that can
> visit AST nodes.
>
> Thanks for your help!
>
> David