From cf198ad90775de92ae176af174fcd1d2b2d26de3 Mon Sep 17 00:00:00 2001 From: hellerve Date: Mon, 27 Feb 2017 18:10:13 +0100 Subject: [PATCH] memoizatio on user defined parsers --- gll/parser.py | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/gll/parser.py b/gll/parser.py index 0e8686a..65a9b62 100644 --- a/gll/parser.py +++ b/gll/parser.py @@ -5,7 +5,7 @@ from gll.result import Success, Failure class Parser: def __init__(self, fun, tag=None): - self.fun = fun + self.fun = memoize(fun) self.tag = tag def __call__(self, string): @@ -36,7 +36,6 @@ class Parser: def string(match, tag="string"): - @memoize @rename("string_{}".format(match)) def internal(string): ln = len(match) @@ -56,7 +55,6 @@ def regex(match, tag="regex", reopts=None): reopts = [] rx = re.compile(match, *reopts) - @memoize @rename("regex_{}".format(match)) def internal(string): res = rx.match(string) @@ -68,7 +66,6 @@ def regex(match, tag="regex", reopts=None): def digit(tag="digit"): - @memoize @rename("digit") def internal(string): if not string: @@ -82,7 +79,6 @@ def digit(tag="digit"): def many(parser, tag="many"): - @memoize @rename("many_{}".format(parser.name)) def internal(string): res = parser(string) @@ -100,7 +96,6 @@ def many(parser, tag="many"): def many1(parser, tag="many1"): - @memoize @rename("many1_{}".format(parser.name)) def internal(string): res = parser(string) @@ -118,7 +113,6 @@ def many1(parser, tag="many1"): def whitespace(tag="whitespace"): - @memoize @rename("whitespace") def internal(string): if not string: @@ -132,7 +126,6 @@ def whitespace(tag="whitespace"): def skip(parser, tag="skip"): - @memoize @rename("skip_{}".format(parser.name)) def internal(string): res = parser(string) @@ -148,7 +141,6 @@ def skipmany(parser, tag="skipmany"): def sep_by(separator, parser, tag="sep_by"): - @memoize @rename("{}_sep_by_{}".format(parser.name, separator.name)) def internal(string): if not string: @@ -172,7 +164,6 @@ def sep_by(separator, parser, tag="sep_by"): def opt(parser, tag="opt"): - @memoize @rename("opt_{}".format(parser.name)) def internal(string): res = parser(string) @@ -183,7 +174,6 @@ def opt(parser, tag="opt"): def seq(*parsers, tag="seq"): - @memoize @rename("seq_{}".format("_".join(str(parser.name) for parser in parsers))) def internal(string): resl = [] @@ -199,7 +189,6 @@ def seq(*parsers, tag="seq"): def all(parser, tag="all"): - @memoize @rename("all_{}".format(parser.name)) def internal(string): res = parser(string)