Skip to content

Commit 9adf68c

Browse files
authored
Add an LRU cache on the lark parser to greatly speed up runtime. (#33)
1 parent dcc5569 commit 9adf68c

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

mutalyzer_hgvs_parser/hgvs_parser.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"""
44

55
import os
6+
import functools
67

78
from lark import Lark, Token, Transformer, Tree
89
from lark.exceptions import UnexpectedCharacters, UnexpectedEOF
@@ -693,6 +694,9 @@ def status(self):
693694
" Propagate positions: %s" % self._parser.options.propagate_positions
694695
)
695696

697+
@functools.lru_cache
698+
def get_parser(grammar_path=None, start_rule=None):
699+
return HgvsParser(grammar_path, start_rule)
696700

697701
def parse(description, grammar_path=None, start_rule=None):
698702
"""
@@ -706,7 +710,7 @@ def parse(description, grammar_path=None, start_rule=None):
706710
:returns: Parse tree.
707711
:rtype: lark.Tree
708712
"""
709-
parser = HgvsParser(grammar_path, start_rule)
713+
parser = get_parser(grammar_path, start_rule)
710714

711715
return FinalTransformer().transform(
712716
AmbigTransformer().transform(

0 commit comments

Comments
 (0)