如果你不想配置以下内容,可以使用助教提供的脚本,有两种方法使用:
在 WSL 中进入 antlr-playground,输入:
bash generate之后在命令行中输入 Python 代码即可。
在 WSL 中进入 antlr-playground,输入:
chmod +x generate以上为初次配置,之后使用时:
./generate之后在命令行中输入 Python 代码即可。
在 WSL 中输入:
sudo apt-get update
sudo apt-get install openjdk-17-jdk若输入:
javac --version能够显示其版本,则安装成功。
在 WSL 中进入 antlr-playground,输入以配置 Java:
export CLASSPATH=".:antlr-4.11.1-complete.jar:$CLASSPATH"接着配置 antlr4:
alias antlr4='java -jar antlr-4.11.1-complete.jar'接着配置 grun:
alias grun='java org.antlr.v4.gui.TestRig'之后,在命令行中输入:
antlr4 Python3Lexer.g4
antlr4 Python3Parser.g4
javac *.java
grun Python3 file_input -gui前两条命令只在初始时需要,第三条命令在每次生成新的语法树是都需要。然后终端会等待你输入相应的 Python 代码,以 EOF 结束(Ctrl-D),便会弹出一个弹窗,展示代码对应的树形结构。如果没有弹窗,参考
-gui 可替换为 -tree 将树以 LISP 形式输出。
在命令行中输入:
grun Python3 file_input -ps test.ps之后在 antlr-playground 中会生成 test.ps。一般来说,电脑上的 PDF 阅读器都可以成功打开 .ps 文件(双击打开即可),如果无法打开寻找将 PS 转化为 PNG 的在线转化器,上传 test.ps,即可得到相应的 .png 文件。
将:
export CLASSPATH=".:[antlr-complete-jar]:$CLASSPATH"
alias antlr4='java -jar [antlr-complete-jar]'
alias grun='java org.antlr.v4.gui.TestRig'其中 [antlr-complete-jar] 表示的是 antlr-4.11.1-complete.jar 的绝对地址。在将上述命令输入至 ~/.bashrc 或 ~/.zshrc 之后,在命令行中输入:
source ~/.bashrc
source ~/.zshrc注意,有 .bashrc 选择前者,有 .zshrc 选择后者。即可在重新打开 WSL 的时候无需重新配置。
由于本次 .g4 文件的特性,目前 ANTLR 插件只能支持不带 INDENT 和 DEDENT 规则的解释。
首先在插件市场中找到插件:
安装后,右键 .g4 中的 return_stmt 或任何不包含 INDENT 和 DEDENT 的规则,点击 test rule:
之后在屏幕下方的 antlr-preview 中,左侧是待测试的代码,右侧是依据代码生成的语法树结构图。
ANTLR(全名:ANother Tool for Language Recognition)是基于 LL(*)算法实现的语法解析器生成器(parser generator),用 Java 语言编写,使用自上而下(top-down)的递归下降 LL 剖析器方法。
ANTLR 可以将输入的代码转化成与之对应的树形结构,即语法树,以便后续程序操作。语法树是什么,进入 antlr-playground 按照 配置 操作,即可得到一份 Python 代码对应的语法树。