windows 安装语法解析器Antlr4与环境配置

windows 安装语法解析器Antlr4与环境配置

安装与环境配置:
**1.**下载java,本机已经装了java。检验有没有装java的代码:在cmd输入java -version 若返回版本号则已有java

**2.**从官网下载最新的或者某个版本的jar包(旧版本在网页最底下)例如我下载的antlr-4.11.1-complete.jar,可以将其放入任意文件夹再对该文件夹配置环境变量
官网地址:https://www.antlr.org/download.html
我下载的文件夹为:G:\library_computer\Code_for_issue\my_antlr4

**3.**配置环境变量
3.1在电脑高级系统设置》环境变量》系统变量中点击“新建”,设置变量名为CLASSPATH 变量值设为G:\library_computer\Code_for_issue\my_antlr4\antlr-4.11.1-complete.jar

windows 安装语法解析器Antlr4与环境配置_第1张图片

3.2在电脑高级系统设置》环境变量》系统变量中的path中添加地址:G:\library_computer\Code_for_issue\my_antlr4

windows 安装语法解析器Antlr4与环境配置_第2张图片

生成规则:

调用代码:java -jar antlr-4.11.1-complete.jar -Dlanguage=Python3 xxxx.g4 此代码太长,进行以下处理。

1.因为antrl4基于java包,每次运行要从java调用,为了方便使用写一个批处理文件(.bat文件)放在antlr-4.11.1-complete.jar同一文件夹下,自己命名,我命名为antlr4.bat,此处命名直接关系到一会在cmd调用的名字。上一步配置的环境变量作用就是让计算机来该目录下找这个.bat文件
antlr4.bat内容如下:

SET CLASSPATH=%~dp0antlr-4.11.1-complete.jar;.
doskey antlr4=java org.antlr.v4.Tool $*
doskey grun=java org.antlr.v4.runtime.misc.TestRig $*
doskey antlr4py3=java org.antlr.v4.Tool -Dlanguage=Python3 $*
doskey antlr4vpy3=java org.antlr.v4.Tool -Dlanguage=Python3 -no-listener -visitor $*

保存文件,双击运行antlr4.bat

2.打开cmd,输入antlr4.bat,即可返回.bat写的内容,此时再输入antlr4py3,即相当于输入了java org.antlr.v4.Tool -Dlanguage=Python3,此时的调用代码变为:antlr4py3 xxxx.g4即可将.g4文件解析成几个.py文件使用。
下面写一个简单的Hello .g4文件放入一个任意文件夹A

grammar Hello ;

r: 'hello' ID ;
ID: [a-z]+ ;
WD: [ \t\r\n]+ -> skip ;

3.在cmd中转到A文件夹,输入antlr4py3 Hello.g4,在文件夹A下即有输出结果。
windows 安装语法解析器Antlr4与环境配置_第3张图片

使用生成的规则:
下面开始使用生成的py文件,需要写一个py文件调用上边生成的规则,这里借用别人的代码:
文件名称为 test_hello.py,放在A文件夹下

import sys
from antlr4 import *
from HelloLexer import HelloLexer
from HelloParser import HelloParser


def main(argv):
    input = FileStream(argv[1])
    lexer = HelloLexer(input)
    stream = CommonTokenStream(lexer)
    parser = HelloParser(stream)
    tree = parser.r()
    print(tree.toStringTree(recog=parser))

if __name__ == '__main__':
    main(sys.argv)

再写一个测试文档 input.txt
内容为:hello world

开始使用规则:
在cmd中转到A文件夹目录,输入

python test_hello.py input.txt

则会得到结果:(r hello world)

更多例子见https://github.com/jszheng/py3antlr4book
更多.g4写法见https://github.com/antlr/grammars-v4

参考链接
python3中的Antlr4(windows)
python 使用Antlr4实现识别sql中的表或视图名

下载各个版本的jar包的地址:https://www.npackd.org/p?q=

遗留问题:
如何在python中直接使用antlr4 ???

python3下载antrl4包命令:pip install antlr4-python3-runtime

你可能感兴趣的:(笔记,windows,java,jar)