首页 > 解决方案 > antlr4 for python target error: NameError: global name 'XX' is not defined

问题描述

我正在将 Antlr4 用于 Python 目标代码。在语法文件中,我有一个需要获取标记文本的规则。但我得到了错误。

代码看起来像这样

//parser
variables : VARS COLON (ID {declare_variable(ID.text)})+;
...
//lexer
VARS : 'variables';
COLON: ':';
ID  :   ('a'..'z'|'A'..'Z')('a'..'z'|'A'..'Z'|'0'..'9'|'_')* ;
...

我使用编译解析器/词法分析器

java -Xmx500M -cp /usr/local/lib/antlr-4.7.1-complete.jar org.antlr.v4.Tool -Dlanguage=Python2 Grammar.g4

然后我跑

python main.py test.txt

当我收到以下错误时:

NameError: global name 'ID' is not defined

我究竟做错了什么?

标签: pythoncompiler-constructionantlr4

解决方案


推荐阅读