From: Ivan B. <iv...@cv...> - 2010-05-07 20:37:37
|
For those who are interested, I've created parser of Oracle SELECT statements. After wasting tens of hours with boost::spirit I finally switched to antlr3. While spirit has exceptional requirements on gcc(memory/compile time) and even tiny changes in grammar def. have unpredictable results, antlr seems to be stable, documented and it has wonderful tool antlrworks. I've started with PL/SQL grammar PLSQL3.g, excluded SELECT statement from it, fixed some bugs and added support some constructs. The grammar generates a parse tree like: http:// andrea.vc.cvut.cz/AST.png <http://andrea.vc.cvut.cz/AST.png> each SELECT statement is divided into several parts column list, table list where condition ... etc. With some effort this can be used for either SQL formatter or for syntax highlighting. For development I use C or JAVA target, the C++ target for Antlr3 is not fully usable yet. Ivan PS: if you want to try it out you can download it from http://andrea.vc.cvut.cz/antlr_sql.tbz |