Just use caching instead of strange transitions

This commit is contained in:
Dave Halter
2018-06-24 17:29:03 +02:00
parent c5d141bf60
commit 71003bc20e
+2 -7
View File
@@ -16,6 +16,7 @@ fallback token code OP, but the parser needs the actual token code.
""" """
class DFAPlan(object): class DFAPlan(object):
def __init__(self, next_dfa, dfa_pushes=[]): def __init__(self, next_dfa, dfa_pushes=[]):
self.next_dfa = next_dfa self.next_dfa = next_dfa
@@ -99,7 +100,7 @@ class Grammar(object):
return wrapper return wrapper
#@_cache_labels @_cache_labels
def _make_label(self, label): def _make_label(self, label):
ilabel = len(self.labels) ilabel = len(self.labels)
if label[0].isalpha(): if label[0].isalpha():
@@ -108,9 +109,6 @@ class Grammar(object):
# A named token (e.g. NAME, NUMBER, STRING) # A named token (e.g. NAME, NUMBER, STRING)
itoken = getattr(self._token_namespace, label, None) itoken = getattr(self._token_namespace, label, None)
if itoken in self.tokens:
return self.tokens[itoken]
else:
self.labels.append((itoken, None)) self.labels.append((itoken, None))
self.tokens[itoken] = ilabel self.tokens[itoken] = ilabel
return ilabel return ilabel
@@ -119,9 +117,6 @@ class Grammar(object):
assert label[0] in ('"', "'"), label assert label[0] in ('"', "'"), label
# TODO use literal_eval instead of a simple eval. # TODO use literal_eval instead of a simple eval.
value = eval(label) value = eval(label)
if value in self.reserved_syntax_strings:
return self.reserved_syntax_strings[value]
else:
self.labels.append(('XXX', value)) self.labels.append(('XXX', value))
self.reserved_syntax_strings[value] = ilabel self.reserved_syntax_strings[value] = ilabel
return self.reserved_syntax_strings[value] return self.reserved_syntax_strings[value]