• 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;
    }
    {