@@ -311,6 +311,7 @@ def __init__(
311311 logFile : Optional [str ] = None ,
312312 graphFile : Optional [str ] = None ,
313313 verbose : bool = False ,
314+ unpickleHook : Callable [[Spec , SpecCompatibility ], None ] | None = None ,
314315 ) -> None :
315316 """
316317 modules : Either a single module, or a list of modules, wherein to
@@ -479,7 +480,7 @@ def __init__(
479480 self ._nImpure = 0 # Number of LR impurities (does not affect GLR).
480481
481482 # Generate parse tables.
482- self ._prepare (pickleFile , pickleMode , logFile )
483+ self ._prepare (pickleFile , pickleMode , logFile , unpickleHook )
483484
484485 def __repr__ (self ) -> str :
485486 if self ._skinny :
@@ -599,12 +600,15 @@ def _prepare(
599600 pickleFile : Optional [str ],
600601 pickleMode : PickleMode ,
601602 logFile : Optional [str ],
603+ unpickleHook : Callable [[Spec , SpecCompatibility ], None ] | None = None ,
602604 ) -> None :
603605 """
604606 Compile the specification into data structures that can be used by
605607 the Parser class for parsing."""
606608 # Check for a compatible pickle.
607609 compat = self ._unpickle (pickleFile , pickleMode )
610+ if unpickleHook is not None :
611+ unpickleHook (self , compat )
608612
609613 if self ._verbose and compat in ["itemsets" , "incompatible" ]:
610614 start = time .monotonic ()
0 commit comments