Simplify some code

This commit is contained in:
Dave Halter
2018-06-15 00:06:56 +02:00
parent 1f02327cff
commit 567e0d7aed

View File

@@ -30,11 +30,14 @@ class ParserGenerator(object):
def make_grammar(self, grammar):
self._first = {} # map from symbol name to set of tokens
self._addfirstsets()
names = list(self._rule_to_dfas.keys())
names.sort()
for name in names:
if name not in self._first:
self._calcfirst(name)
#print name, self._first[name].keys()
i = 256 + len(grammar.symbol2number)
grammar.symbol2number[name] = i
grammar.number2symbol[i] = name
@@ -109,14 +112,6 @@ class ParserGenerator(object):
grammar.tokens[itoken] = ilabel
return ilabel
def _addfirstsets(self):
names = list(self._rule_to_dfas.keys())
names.sort()
for name in names:
if name not in self._first:
self._calcfirst(name)
#print name, self._first[name].keys()
def _calcfirst(self, name):
dfa = self._rule_to_dfas[name]
self._first[name] = None # dummy to detect left recursion