'Enables "packrat" parsing, which adds memoizing to the parsing logic.
Repeated parse attempts at the same string location (which happens
often in many complex grammars) can immediately return a cached value,
instead of re-executing parsing/validating code.  Memoizing is done of
both valid results and parsing exceptions.
This speedup may break existing programs that use parse actions that
have side-effects.  For this reason, packrat parsing is disabled when
you first import pyparsing.  To activate the packrat feature, your
program must call the class method C{ParserElement.enablePackrat()}.  If
your program uses C{psyco} to "compile as you go", you must call
C{enablePackrat} before calling C{psyco.full()}.  If you do not do this,
Python will crash.  For best results, call C{enablePackrat()} immediately
after importing pyparsing.'

def enablePackrat():

    if (not ParserElement._packratEnabled):
        ParserElement._packratEnabled = True
        ParserElement._parse = ParserElement._parseCache
