最近使用Druid Parser做了点事情,记录下druid关键class 及如何进行ast扩展及修正里面的bug
- com.alibaba.druid.sql.ast.* 为通用 ast
- com.alibaba.druid.sql.dialect.* 为方言 ast,如oracle,mysql
- *.expr为表达式
- *.clause为子句
- *.stmt为分析后的结果
- *.parser为解析类,*StatementParser为主分析类
- .visitor 为AST visitor类,注意其中OutputVisitor为输出,stmt.toString实际调用此类,注意分析后输出调用toString的输出不一定是原始sql
- 增加新的类型可以寻找类似语法来实现,一般会牵涉到StatementParser及OutputVisitor修改