文章目录
ANTLR 实战 SQL 词法/语法分析
一、准备工具
二、实战环节
1. 方式1:不借助外部 IDE
2. 方式2:借助 idea
参考资料
ANTLR 实战 SQL 词法/语法分析
关于 词法/语法分析 和 ANTLR 语法 的详细内容,可参考我的另一篇博客:https://blog.csdn.net/pentiumCM/article/details/106076655。
本篇博客为实战入门速食篇,主要提供demo实战,不做太多内容展开。
ANTLR 是语言识别的一个工具 (ANother Tool for Language Recognition ) ,它提供了一个框架,可以通过包含 Java, C++, 或 C# 动作(action)的语法描述来构造语言识别器,编译器和解释器。
一、准备工具
安装 ANTLR 环境:
推荐使用 ANTLR-4.8版本
参考资料:https://www.cnblogs.com/wynjauu/articles/9872822.html
本篇博客主要介绍在 java 环境下面使用 ANTLR,所有有两种方式:
方式一:直接基于 java 的 jdk 环境,不使用 java的 IDE中来使用 ANTLR,全程操作在CMD中通过命令
方式二:基于 java 的 IDE 来使用 ANTLR,操作比较方便
两种方式皆可,如果电脑中有 ide 编译器,本人建议可使用 ide 安装 ANTLR 的插件来使用 ANTLR。
二、实战环节
1. 方式1:不借助外部 IDE
准备 ANTLR 的 文法文件(g4后缀)
可以从 ANTLR 官方提供的 demo 中挑选自己需要的,ANTLR 官方demo:https://github.com/antlr/grammars-v4
为了方便,我直接贴出我已经选好的文法,如下:
MysqlQuery.g4:
MysqlQuery.g4 内容如下:
// 1. 定义一个名为 MysqlQuery 的语法
grammar MysqlQuery;
// 2. rule - 这是核心,表示规则,以 “:” 开始, “;” 结束, 多规则以 "|" 分隔。
// 2.1 lexer - 词法(符号(Token)名大写开头 - 词法)
AS : A S;
SELECT : S E L E C T;
FROM : F R O M;
TABLE : T A B L E;
MAX : M A X;
SUM : S U M;
AVG : A V G;
MIN : M I N;
COUNT : C O U N T;