ANTLR4入门:Windows安装antlr4命令行环境

Posted 10km

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ANTLR4入门:Windows安装antlr4命令行环境相关的知识,希望对你有一定的参考价值。

最近开始学习ANTLR4,《ANTLR 4权威指南》这本书是看完了,现在开始实践,本系列文记录实践过程中的遇到的问题解决过程及心得体会

下载

antlr官方网站下载最新的antr4版本(jar):https://www.antlr.org/download.html
目前最新的4.11.1版本下载地址为:
https://www.antlr.org/download/antlr-4.11.1-complete.jar

下载后我就立即想试试运行,但问题就来了,antlr-4.11.1-complete.jar是JDK11编译的jar包(包含运行库-----antlr4-runtime),所以必须是Java 11以上的版本才能运行。如果你的开发环境和我一样还是JDK11 以下的版本(我是JDK8)就要麻烦些,得去安装JDK11,这个过程网上都有教程,本文不再赘述。

antlr4.bat

如果你即希望保留之前的JDK 版本,又要在命令行使用用antlr4做测试那么就处理系统中同时有两个JDK的情况,我的开发环境是JDK8,我不可能为了antlr4将系统的默认JDK升级到11.
所以我的做法是写一个如下的脚本(bat),运行anlr4时临时通过修改环境变量PATH使用JDK11作为java环境,运行结束恢复环境变量,即恢复到JDK8
antlr4.bat ---- 将anlr4.bat保存在antlr-4.11.1-complete.jar所在文件夹下

@ECHO OFF
SETLOCAL
SET PATH="C:\\Program Files\\Java\\jdk-11.0.11\\bin";%PATH%
SET sh_folder="%~dp0"
PUSHD "%sh_folder%"
java -jar antlr-4.11.1-complete.jar %*
POPD
ENDLOCAL

这里 SETLOCAL即指定脚本中定义的所有变量都是局部,ENDLOCAL,结束批处理文件中环境改动的本地化操作。在执行ENDLOCAL 之后所做的环境改动不再仅限于批处理文件.所以在SETLOCAL,ENDLOCAL之间定义的变量都是局部变量,SETLOCAL 之后所做的环境改动只限于批处理文件,不会影响系统的环境变量设置。
上面的脚本也可以更简单点,不用修改PATH环境变量直接通过绝对路径来指定Java程序
antlr4.bat

@ECHO OFF
SET sh_folder="%~dp0"
PUSHD "%sh_folder%"
"C:\\Program Files\\Java\\jdk-11.0.11\\bin\\java" -jar antlr-4.11.1-complete.jar %*
POPD

执行 antlr4.bat 输入如下,即说明antlr4能正常工作了:

grun.bat

ANTLR库中还提供了一个名为TestRig的方便的调试工具。它可以详细列出一个语言类应用程序在匹配输入文本过程中的信息,这些输入文本可以来自文件或者控制台标准输入。TestRig使用Java的反射机制来调用编译后的识别程序。为方便使用,最好通过别名(linux下)或批处理脚本来调用它。所以我也如法炮制做了一个grun.bat用于调用TestRig

grun.bat ---- 将grun.bat保存在antlr-4.11.1-complete.jar所在文件夹下

@ECHO OFF
SETLOCAL
SET PATH="C:\\Program Files\\Java\\jdk-11.0.11\\bin";%PATH%
SET sh_folder="%~dp0"
PUSHD "%sh_folder%"
java -cp antlr-4.11.1-complete.jar org.antlr.v4.gui.TestRig %*
POPD
ENDLOCAL

执行grun.bat,如下输出即说明TestRig可以正常工作了:

以上是关于ANTLR4入门:Windows安装antlr4命令行环境的主要内容,如果未能解决你的问题,请参考以下文章

ANTLR4入门:图示说明eclipse安装Antlr4IDE插件的过程

ANTLR4入门:图示说明eclipse Antlr4IDE插件的安装及语法测试过程

ANTLR4入门:使用mave ANTLR4插件(antlr4-maven-plugin)执行语法解析生成器

ANTLR4入门:使用mave ANTLR4插件(antlr4-maven-plugin)执行语法解析生成器

ANTLR4入门:在线语法调试塈Maven项目中使用语法调试工具TestRig

ANTLR4入门:在线语法调试塈Maven项目中使用语法调试工具TestRig