mirror of
https://github.com/davidhalter/parso.git
synced 2026-05-19 23:10:16 +08:00
Remove old dfas and states from the parser generator
This commit is contained in:
@@ -84,8 +84,6 @@ class Grammar(object):
|
|||||||
|
|
||||||
self.nonterminal2number = {}
|
self.nonterminal2number = {}
|
||||||
self.number2nonterminal = {}
|
self.number2nonterminal = {}
|
||||||
self.states = []
|
|
||||||
self.dfas = {}
|
|
||||||
self.labels = [(0, "EMPTY")]
|
self.labels = [(0, "EMPTY")]
|
||||||
self.keywords = {}
|
self.keywords = {}
|
||||||
self.tokens = {}
|
self.tokens = {}
|
||||||
@@ -114,19 +112,6 @@ class Grammar(object):
|
|||||||
# Now that we have calculated the first terminals, we are sure that
|
# Now that we have calculated the first terminals, we are sure that
|
||||||
# there is no left recursion or ambiguities.
|
# there is no left recursion or ambiguities.
|
||||||
|
|
||||||
for nonterminal in nonterminals:
|
|
||||||
dfas = self._nonterminal_to_dfas[nonterminal]
|
|
||||||
states = []
|
|
||||||
for state in dfas:
|
|
||||||
arcs = []
|
|
||||||
for terminal_or_nonterminal, next_ in state.arcs.items():
|
|
||||||
arcs.append((self._make_label(terminal_or_nonterminal), dfas.index(next_)))
|
|
||||||
if state.is_final:
|
|
||||||
arcs.append((0, dfas.index(state)))
|
|
||||||
states.append(arcs)
|
|
||||||
self.states.append(states)
|
|
||||||
self.dfas[self.nonterminal2number[nonterminal]] = (states, self._make_first(nonterminal))
|
|
||||||
|
|
||||||
for dfas in self._nonterminal_to_dfas.values():
|
for dfas in self._nonterminal_to_dfas.values():
|
||||||
for dfa_state in dfas:
|
for dfa_state in dfas:
|
||||||
dfa_state.ilabel_to_plan = plans = {}
|
dfa_state.ilabel_to_plan = plans = {}
|
||||||
@@ -252,18 +237,3 @@ class Grammar(object):
|
|||||||
@property
|
@property
|
||||||
def start(self):
|
def start(self):
|
||||||
return self.nonterminal2number[self.start_nonterminal]
|
return self.nonterminal2number[self.start_nonterminal]
|
||||||
|
|
||||||
def report(self):
|
|
||||||
"""Dump the grammar tables to standard output, for debugging."""
|
|
||||||
from pprint import pprint
|
|
||||||
print("s2n")
|
|
||||||
pprint(self.nonterminal2number)
|
|
||||||
print("n2s")
|
|
||||||
pprint(self.number2nonterminal)
|
|
||||||
print("states")
|
|
||||||
pprint(self.states)
|
|
||||||
print("dfas")
|
|
||||||
pprint(self.dfas)
|
|
||||||
print("labels")
|
|
||||||
pprint(self.labels)
|
|
||||||
print("start", self.start)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user