前提
安装python环境下的antlr运行时库
pip install antlr4-python3-runtime
准备文法文件
002/ArrayInit.g4
grammar ArrayInit;
init
: '{' value (',' value)* '}' ;
value
: init
| INT
;
INT: [0-9]+ ;
WS: [ \t\r\n] -> skip ;
将文法文件转换为Python语言的词法分析器和语法分析器
cd 002
antlr4py3 ArrayInit.g4
将ANTLR自动生成的代码与Python程序集成
002/main.py
from antlr4 import *
from ArrayInitLexer import ArrayInitLexer
from ArrayInitParser import ArrayInitParser
# 从标准输入读取数据
input_ = InputStream(input("please input:"))
# 新建词法分析器,处理输入的CharStream
lexer = ArrayInitLexer(input_)
# 新建词法符号缓冲区,处理词法符号缓冲区的内容
tokens = CommonTokenStream(lexer)
# 新建一个语法分析器, 处理词法符号缓冲区中的内容
parser = ArrayInitParser(tokens)
# 针对init规则,开始语法分析
tree = parser.init()
# 用LISP风格打印生成的树
print(tree.toStringTree(recog=parser))