前言
Calcite使用JavaCC进行Parse,有着自己独特的parse语法。如果想对其进行修改,而又不影响原生的语法,通常会加一个配置参数——参数关闭的时候保持Calcite原生的Parse逻辑,开启后用自己写的逻辑。
下面总结了增加配置的几个步骤
步骤
以配置identifier的长度为例子,来看看应该怎么修改
定义接口方法
setIdentifierMaxLength可以配置最大的长度,自己新增的配置项也可以在这里添加一个set方法
实现接口方法
方法的实现定义在Parser.jj的解析器类,${parser.class}
只是模版,SqlAbstractParserImpl有三个实现:SqlParserImpl、SqlDdlParserImpl、SqlBabelParserImpl(都是JavaCC根据模版生成的)
需要实现SqlAbstractParserImpl定义的setIdentifierMaxLength方法,identifierMaxLength已经在上图的中声明了