Python ';MyGrammarParser';对象没有属性';startRule&x27;

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

因此,我尝试使用Antlr4 for Python从代码中生成抽象语法树。我几乎完全按照这里描述的每个步骤进行操作:

由于我试图解析Python代码,因此我从这里下载了Python语法: 我将其重命名为
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
的解析器规则