Make it so Configuration() is constructed fewer places
This will make it so that I can add fields to Configuration to support additional parser generators without breaking any individual generator.
This commit is contained in:
parent
169ec4ff08
commit
cf10891c19
1 changed files with 5 additions and 5 deletions
10
parser.py
10
parser.py
|
|
@ -23,6 +23,9 @@ class Configuration(
|
||||||
def at_symbol(self, symbol):
|
def at_symbol(self, symbol):
|
||||||
return self.next == symbol
|
return self.next == symbol
|
||||||
|
|
||||||
|
def replace(self, **kwargs):
|
||||||
|
return self._replace(**kwargs)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "{name} -> {bits}".format(
|
return "{name} -> {bits}".format(
|
||||||
name=self.name,
|
name=self.name,
|
||||||
|
|
@ -136,11 +139,7 @@ class GenerateLR0(object):
|
||||||
the symbol.
|
the symbol.
|
||||||
"""
|
"""
|
||||||
seeds = [
|
seeds = [
|
||||||
Configuration(
|
config.replace(position=config.position + 1)
|
||||||
name=config.name,
|
|
||||||
symbols=config.symbols,
|
|
||||||
position=config.position + 1,
|
|
||||||
)
|
|
||||||
for config in config_set
|
for config in config_set
|
||||||
if config.at_symbol(symbol)
|
if config.at_symbol(symbol)
|
||||||
]
|
]
|
||||||
|
|
@ -380,6 +379,7 @@ class GenerateSLR1(GenerateLR0):
|
||||||
return follow
|
return follow
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def parse(table, input, trace=False):
|
def parse(table, input, trace=False):
|
||||||
"""Parse the input with the generated parsing table and return the
|
"""Parse the input with the generated parsing table and return the
|
||||||
concrete syntax tree.
|
concrete syntax tree.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue