Paul(pyparsingの作者)によると
with open('file_name') as f:
for line in f:
PyGrammar.parseString(line)
上記のコードは、pyparsing を使用する正しい方法ではありません。Pyparsing は、テキストを解析する前にすべてのソース テキストを確認する必要があります。そのため、テキストの各行で parseString を呼び出すと、うまくいきません。別の回避策は、ラッパーを使用することです。お気に入り:
# set up a generator to yield a line of text at a time
linegenerator = open('big_hairy_file.txt')
# buffer will accumulate lines until a fully parseable piece is found
buffer = ""
for line in linegenerator:
buffer += line
match = next(grammar.scanString(buffer), None)
while match:
tokens, start, end = match
print tokens.asList()
buffer = buffer[end:]
match = next(grammar.scanString(buffer), None)