caclite parser程式碼生成詳解
本文程式碼均已上傳到gitee https://gitee。com/shoothzj/calcite-examples caclite的parser程式碼生成分為如下兩個步驟
生成Parse。jj
檔案目錄如下
├── pom。xml└── src ├── main │ ├── codegen │ │ ├── config。fmpp │ │ ├── includes │ │ │ ├── compoundIdentifier。ftl │ │ │ └── parserImpls。ftl │ │ └── templates │ │ └── Parser。jj
新增calcite dependency
配置
drill-fmpp-maven-plugin
外掛如下
codegen 模組的檔案都複製自對應版本的
calclite
core/src/main/codegen
路徑 https://github。com/apache/calcite/tree/main/core/src/main/codegen
然後把https://github。com/apache/calcite/blob/main/core/src/main/codegen/default_config。fmpp 中的parser屬性與config。fmpp中的parser屬性合併。就可以透過
mvn package
命令生成Parser。jj了。當然,如果有定製化修改的需求,也可以在這個階段修改config。fmpp
Parser。jj生成java程式碼
檔案目錄如下
├── pom。xml├── src│ ├── main│ │ ├── codegen│ │ │ └── Parser。jj
Parser。jj就是我們上一步生成的Parser。jj,如果有什麼想要的定製化修改,也可以在這個步驟改入到Parser。jj中。
新增calcite dependency
配置
javacc-maven-plugin
如下
生成程式碼
無Parser。jj定製化修改,一步生成
如果不需要對Parser。jj進行定製化修改,那麼可以透過連續執行兩個外掛來生成程式碼,這裡給出pom檔案樣例,不再贅述