Skip to content

Latest commit

 

History

History
42 lines (33 loc) · 1.03 KB

File metadata and controls

42 lines (33 loc) · 1.03 KB

使用方式

  1. 构建镜像
docker build -f ./docker/antlr4-profiling.Dockerfile -t antlr4-profiling .
  1. 运行容器
docker run -d -it --name antlr4-profiling -v ./src/grammar:/grammar antlr4-profiling
  1. 进入容器
docker exec -it antlr4-profiling bash

注意

  1. 进行 ANTLR4 Profiling 时,需要删除部分 ts 相关的代码,否则会报错。如下:
  • SparkSqlLexer.g4 需要删除 @members 的内容;SparkSqlParser.g4 需要删除 @@header 和 shouldMatchEmpty 的内容
  1. 以下 java 命令需要进入容器的指定目录,否则 java 类会找不到报错
cd /grammar/spark
  1. 在容器中执行,生成 Java 版解析器
antlr4 -Dlanguage=Java -visitor -no-listener ./SparkSqlLexer.g4 ./SparkSqlParser.g4
  1. 编译 Java 文件
javac -cp .:/usr/local/lib/antlr-4.13.1-complete.jar SparkSqlProfiling.java
  1. 运行 Java 程序
java -cp .:/usr/local/lib/antlr-4.13.1-complete.jar SparkSqlProfiling "SELECT * FROM a WHERE b = 1"