【发布时间】:2011-06-20 20:01:37
【问题描述】:
我在PLY 中使用一个相当简单的解析器,我的一条规则采用以下形式:
def p_things(p):
'''
things : thing things
things : thing
'''
p[0] = [p[1]]
if len(p) == 3:
p[0] += p[2]
输入文件通常是things 的简单列表,因此解析本身并不复杂。然而,我的一些输入文件非常大(经常超过 100,000 行,在极端情况下超过 1,000,000)。在分析(通过cProfile and pstats)中,大部分运行时都被重复调用p_things 占用——大概是对things 列表中的每个项目的调用。
有没有办法减少这个时间,或更有效的方式来构建这个规则?到目前为止,我看到的大多数答案(以及我发现的规范编译器信息)都将此方法列为构造可解析项列表的公认方法,无论长度如何。
【问题讨论】:
标签: python parsing optimization ply