Java CC 解析 SQL 语法示例

示例:SimpleSelectParser 解析 select 1+1; 输出 2;
0)总结

编写 JavaCC 模板,*.jj 文件。

编译生成代码文件。

移动代码文件到对应的包下。

调用生成的代码文件。

1)JavaCC 模板

main/javacc/SimpleSelectParser.jj

options {
    IGNORE_CASE = true;
    // 允许被多次初始化
    STATIC = false;
}

PARSER_BEGIN(SimpleSelectParser)

package cn.com.ptpress.cdm.parser.select;
import java.io.* ;

public class SimpleSelectParser {
    private String sql;

    public void parse() throws ParseException {
        SelectExpr(sql);
    }
    public SimpleSelectParser(String expr) {
        this((Reader)(new StringReader(expr)));
        this.sql = expr;
    }
    public static void main(String[] args) throws Exception{
        final SimpleSelectParser parser = new SimpleSelectParser(String.join(" ", args));
        parser.parse();
    }
}

PARSER_END(SimpleSelectParser)

void SelectExpr(String sql) :
{
    int res;
}
{