我使用PLY编写了一个解析器,它可以满足我的需要。 现在,我想使用解析器类解析多个文件。 我不想为每个文件实例化解析器类,而是希望为所有文件重复使用相同的实例化类(这样我就可以在解析器类中累积一些结果)。
解析一个文件可能无法很好地完成,因此我想在提供另一个文件之前重新初始化解析器。
重新初始化PLY解析器的正确方法是什么? (或者,我不应该重用解析器?)
答案 0 :(得分:1)
如果要为多个文件重用相同的解析器,但每次都重置堆栈,则可以使用restart
函数:
parser = yacc.yacc()
for file in file_list:
with open(file) as fp:
parser.parse(fp.read())
... # accumulate logging info
parser.restart() # this discards the entire parsing stack and resets the parser to its initial state
更多信息可以在official documentation找到。