Czy używasz analizowanych składni do przetwarzania tokenów podczas ich analizy? Jeśli tak, to można usunąć zawartość analizowanych tokenów z wykorzystaniem del:
def parseActionThatDeletesTheParsedTokens(tokens):
# ...
# do something interesting with the tokens
# ...
# delete the contents of the parsed tokens
del tokens[:]
A może chcesz po prostu użyć scanString
zamiast parseString
. Zamiast tego:
OneOrMore(blockOfText).parseString(bigHonkingString)
zrobić:
for tokens, matchstart, matchend in blockOfText.scanString(bigHonkingString):
# do stuff with the tokens
scanString
zwraca generator co przynosi 3-krotki zawierające dopasowane tokeny, wyjściowy, a skończywszy lokalizację każdym kolejnym meczu. Możesz przetworzyć każdy przeanalizowany zestaw tokenów, a kiedy przejdziesz do następnego zestawu, stary zestaw zostanie automatycznie odrzucony. Myślę, że to może być najprostszy sposób, aby przejść, przy minimalnych zmianach w programie.
Tak, właśnie to robię. Użycie 'del' do zrobienia tego powinno naprawdę mi się przydać, ale masz rację, scanString jest o wiele lepszy. Dobrze wiedzieć, że pyparsing ma tę funkcję. Dzięki! – nedned
Paul, czy '.suppress()' fraza nadal zachowuje zawartość w pamięci po uruchomieniu 'parseAction'? – Hooked
Nie - jeśli wyrażenie jest wyłączone, jego zawartość nie jest zapisywana przez pyparsing. – PaulMcG