(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的环境准备完毕

ANTLR4 是一种强大的解析工具,可以生成高性能的分析器,并且支持多种编程语言,包括 PythonANTLR4 可用于创建自定义语法解析器,适用于文本处理、数据输入验证、脚本解析等多种应用场合。 ### ANTLR4 Python 安装步骤: #### 1. 确保安装 Java JDK: ANTLR4 需要在 JVM 上运行,所以首先需要安装 Java JDK。你可以从 Oracle 的官方网站下载适合你的操作系统的最新版本的 JDK。 #### 2. 安装 ANTLR4: 你可以通过命令行直接下载并解压最新的 ANTLR4 版本到一个固定的目录下。例如,在 MacOS/Linux 系统上,可以使用以下命令: ```bash curl -L https://wwwantlr.org/download/antlr-4.9-complete.jar -o /usr/local/bin/antlr chmod +x /usr/local/bin/antlr ``` 对于 Windows 用户,则可以通过访问 ANTLR4 下载页面获取 jar 文件。 #### 3. 使用 PythonANTLR4: 你需要安装 `antlr4-python3-runtime` 库来利用 Python ANTLR4 解析功能。你可以通过 pip 进行安装: ```bash pip install antlr4-python3-runtime ``` 或者更详细的安装步骤: ```bash pip install antlr4-python3-runtime[all] ``` 这将安装所有的依赖库,包括 Java 和 Jython。 #### 4. 创建解析器: 接下来,假设你已经有了 `.g4` 格式的文法文件(如 `MyGrammar.g4`)。在 Python 脚本,你可以使用如下代码引入 ANTLR4 并生成相应的 Python 代码: ```python import antlr4 from MyGrammarLexer import MyGrammarLexer from MyGrammarParser import MyGrammarParser def parse(input_stream): lexer = MyGrammarLexer(input_stream) stream = antlr4.CommonTokenStream(lexer) parser = MyGrammarParser(stream) return parser.parse() ``` #### 相关问题 - 示例: 1. **如何调试 ANTLR4 生成的解析器错误?** - 查看错误日志,通常会给出错误的详细信息以及错误位置。调整文法规则或者检查输入是否符合预期的语法结构。 2. **能否分享一些基本的 ANTLR4 文法规则示例?** - 确定规则的关键部分,如开始符号、终结符、非终结符、规则定义等,并了解如何使用注释。 3. **在大型项目管理多个 ANTLR4 文法文件时有哪些最佳实践?** - 维护清晰的命名空间、合理划分文法文件、使用包组织结构、定期审查和更新文法以适应需求变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值