目标
通过antlr把short数组转化为字符串,如data = {1,2,3}转化为data=”\u0001\u0002\u0003”
大致流程如下:定义语法文件,生成解析类,解析数组
环境准备
- intellij编辑器
- maven
下载antlr插件
intellij支持antlr4插件,可以方便地定义语法文件,并生成解析类。安装过程如下:
- 下载ANTLR v4 grammar plugin
- 进入Intellij IDEA “Preferences”选项,找到“Plugin”标签,点击“Install plugin from disk…”选项进行安装
- 安装结束后重启编辑器,若有如下显示说明安装成功
定义.g4文件
在resources文件夹下新建名为ArrayInit.g4的语法文件
1 | /** |
测试语法规则
ANTLR v4 grammar plugin提供了ANTLR preview功能,可以时时查看语法规则,并展示结果,如下图所示
生成解析类
右击.g4文件,点击“ANTLR Configure”进行输出路径设置,点击“Generate ANTLR Recognizer”选项,会在目标路径下看到对应的解析类,如下图所示
在生成解析类之后,可能因为没有导入包名报错,需要手动在java文件上方加上“package”包名。
编写监听类
到现在为止antlr已经完成解析工作,下面要进行转换,需要继承生成的监听类,根据对应的规则进行相应的转换,如把“{“转换成“””,把数字转换成unicode。监听类实现如下
1 | public class ShortToUnicodeString extends ArrayInitBaseListener { |
执行代码
1 | public static void main(String[] args) throws IOException { |
第一个antlr小程序就实现了,功能很简单,后续再放高级用法。