Use nonterminals instead of numbers if possible

This commit is contained in:
Dave Halter
2018-06-22 12:47:02 +02:00
parent 87299335c4
commit 878b4b2d3b
3 changed files with 3 additions and 8 deletions

View File

@@ -44,10 +44,9 @@ class BaseParser(object):
self._error_recovery = error_recovery
def parse(self, tokens):
start_number = self._pgen_grammar.nonterminal2number[self._start_nonterminal]
self.pgen_parser = PgenParser(
self._pgen_grammar, self.convert_node, self.convert_leaf,
self.error_recovery, start_number
self.error_recovery, self._start_nonterminal
)
node = self.pgen_parser.parse(tokens)

View File

@@ -211,7 +211,3 @@ class Grammar(object):
(nonterminal, terminal, nonterminal_or_string, inverse[terminal]))
inverse[terminal] = nonterminal_or_string
self._first_terminals[nonterminal] = totalset
@property
def start(self):
return self.nonterminal2number[self.start_nonterminal]

View File

@@ -114,7 +114,8 @@ class PgenParser(object):
"""
def __init__(self, grammar, convert_node, convert_leaf, error_recovery, start):
def __init__(self, grammar, convert_node, convert_leaf, error_recovery,
start_nonterminal):
"""Constructor.
The grammar argument is a grammar.Grammar instance; see the
@@ -144,7 +145,6 @@ class PgenParser(object):
self.convert_node = convert_node
self.convert_leaf = convert_leaf
start_nonterminal = grammar.number2nonterminal[start]
self.stack = Stack([StackNode(grammar._nonterminal_to_dfas[start_nonterminal][0])])
self.rootnode = None
self.error_recovery = error_recovery