¿Está utilizando acciones de análisis para procesar los tokens a medida que se analizan? Si es así, puede borrar el contenido de las fichas analizados utilizando del:
def parseActionThatDeletesTheParsedTokens(tokens):
# ...
# do something interesting with the tokens
# ...
# delete the contents of the parsed tokens
del tokens[:]
O es posible que desee sólo tiene que utilizar en lugar de scanString
parseString
. En lugar de esto:
OneOrMore(blockOfText).parseString(bigHonkingString)
hacer:
for tokens, matchstart, matchend in blockOfText.scanString(bigHonkingString):
# do stuff with the tokens
scanString
devuelve un generador que produce 3-tuplas que contienen las fichas emparejados, el arranque, y terminando ubicación de cada partido sucesivo. Puede procesar cada conjunto de tokens analizados, y luego cuando pase al siguiente conjunto, el conjunto anterior se descarta automáticamente. Creo que esta puede ser la forma más sencilla de ir, con cambios mínimos en su programa.
Sí, eso es lo que estoy haciendo. Usar 'del' para hacerlo yo mismo debería haberme ocurrido pero tienes razón, scanString es mucho más ordenado. Es bueno saber que pyparsing tiene esta característica. ¡Gracias! – nedned
Paul, ¿'.suppress()' ing la frase aún mantiene los contenidos en la memoria después de que se haya ejecutado 'parseAction'? – Hooked
No: si se suprime una expresión, su contenido no se guarda mediante pyparsing. – PaulMcG