【发布时间】:2019-12-25 00:29:39
【问题描述】:
为了演示这个问题,我将创建一个简单的语法来仅检测类似 Python 的变量。
我创建一个虚拟环境并在其中安装antlr4-python3-runtime,如“Where can I get the runtime?”中所述:
然后,我创建一个PyVar.g4 文件,内容如下:
grammar PyVar;
program: IDENTIFIER+;
IDENTIFIER: [a-zA-Z_][a-zA-Z0-9_]*;
NEWLINE: '\n' | '\r\n';
WHITESPACE: [ ]+ -> skip;
现在如果我用grun 测试语法,我可以看到语法检测到变量很好:
现在我正在尝试用 Python 编写一个解析器来做到这一点。我使用以下命令生成 Lexer 和 Parser:
antlr4 -Dlanguage=Python3 PyVar.g4
它们的生成没有错误:
但是当我使用“How do I run the generated lexer and/or parser?”中提供的示例时,我没有得到任何输出:
我做错了什么?
【问题讨论】:
标签: python-3.x parsing antlr antlr4 grammar