Python ';MyGrammarParser';对象没有属性';startRule&x27;
因此,我尝试使用Antlr4 for Python从代码中生成抽象语法树。我几乎完全按照这里描述的每个步骤进行操作: 由于我试图解析Python代码,因此我从这里下载了Python语法: 我将其重命名为Python ';MyGrammarParser';对象没有属性';startRule&x27;,python,antlr,antlr4,Python,Antlr,Antlr4,因此,我尝试使用Antlr4 for Python从代码中生成抽象语法树。我几乎完全按照这里描述的每个步骤进行操作: 由于我试图解析Python代码,因此我从这里下载了Python语法: 我将其重命名为MyGrammar。从那一步开始,我做了与链接中描述的完全相同的事情。我从终端执行了antlr4-Dlanguage=python3mygrammar.g4,然后创建了以下Python脚本: from antlr4 import * from MyGrammarLexer import MyGr
MyGrammar
。从那一步开始,我做了与链接中描述的完全相同的事情。我从终端执行了antlr4-Dlanguage=python3mygrammar.g4
,然后创建了以下Python脚本:
from antlr4 import *
from MyGrammarLexer import MyGrammarLexer
from MyGrammarParser import MyGrammarParser
def main(argv):
input_stream = FileStream(argv[1])
lexer = MyGrammarLexer(input_stream)
stream = CommonTokenStream(lexer)
parser = MyGrammarParser(stream)
tree = parser.startRule()
if __name__ == '__main__':
main(sys.argv)
然而,由于某种原因,我得到的“MyGrammarParser”对象没有属性“startRule”。
我知道以前在这里()有人问过这个问题,但是人们建议使用
parse
命令。问题是我遇到了同样的问题(它没有被识别为属性)。有什么想法吗?这意味着您尚未在MyGrammar,g4
文件中定义名为startRule
的解析器规则:
// File: MyGrammar.g4
grammar MyGrammar;
startRule
: ...
;
...
但是人们建议改为使用parse命令。问题是我也遇到了同样的问题
那么您也没有名为parse
的解析器规则