重新初始化PLY解析器

时间:2016-12-21 00:36:46

标签: python parsing ply

我使用PLY编写了一个解析器,它可以满足我的需要。 现在,我想使用解析器类解析多个文件。 我不想为每个文件实例化解析器类,而是希望为所有文件重复使用相同的实例化类(这样我就可以在解析器类中累积一些结果)。

解析一个文件可能无法很好地完成,因此我想在提供另一个文件之前重新初始化解析器。

重新初始化PLY解析器的正确方法是什么? (或者,我不应该重用解析器?)

1 个答案:

答案 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找到。