(Antlr4 1-1)Python中使用Antlr4的环境准备

准备Java环境,以下是我的Java版本,运行环境是win10

当然,你更要有Python3环境…

C:\Users\aaa>java -version
java version "1.8.0_112"
Java(TM) SE Runtime Environment (build 1.8.0_112-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.112-b15, mixed mode)

下载ANTLR tool

下载地址:https://www.antlr.org/download.html
在这里插入图片描述

执行下边的命令验证ANTLR安装是否正确

(假定下载的jar包在D:\tools下)

D:\tools>java -jar antlr-4.9.3-complete.jar
ANTLR Parser Generator  Version 4.9.3
-o ___              specify output directory where all output is generated
-lib ___            specify location of grammars, tokens files
...

写一个简单的Antlr4文法

/tmp/test/Hello.g4

grammar Hello ;

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

使用antlr生成SQL.g4对应的词法分析器和语法分析器

Python3语言格式的, 目录下会生成HelloParser.py和HelloLexer.py

 D:\tools>java -jar antlr-4.9.3-complete.jar -Dlanguage=Python3 Hello.g4

为方便使用,可将如下内容写入到批处理文件,并保存的批处理文件与jar包放在同一个目录

主要是上边的命令太长啦。。。

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

这样在执行批处理后,执行如下命令即可运行antlr生成HelloParser.py和HelloLexer.py

antlr4py3 Hello.g4 --同时生成监听器
antlr4vpy3 Hello.g4 --同时生成访问器

TestRig是非常好用的调试工具,批处理文件中我们将其命名为grun
grun的其他参数:

(venv) D:\PythonProjects\learnAntlr\001>grun
java org.antlr.v4.gui.TestRig GrammarName startRuleName
  [-tokens] [-tree] [-gui] [-ps file.ps] [-encoding encodingname]
  [-trace] [-diagnostics] [-SLL]
  [input-filename(s)]
Use startRuleName='tokens' if GrammarName is a lexer grammar.
Omitting input-filename makes rig read from stdin.

-tokens 打印出词法符号流
-tree 以LISP格式打印出语法分析树
-gui 以可视化方式显示语法分析树
-ps files.ps 以PostScript格式生成可视化语法分析树
-trace 打印规则的名字以及进入和离开该规则时的词法符号

python环境中安装antlr4的运行时包antlr4-python3-runtime

注意这个python包的版本要与上边jar包的版本一致

pip install antlr4-python3-runtime

至此,Python中使用Antrl4的环境准备完毕

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值