Skip to content

Commit cf99f3b

Browse files
committedJan 25, 2018
Misc cleanup
1 parent deeec23 commit cf99f3b

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed
 

‎pycc/ll_parser.py

+3-5
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,7 @@ def __init__(self, grammar):
1111
# For convenience during parsing
1212
self.nonterminals = set([rule.sym.char for rule in grammar.rules])
1313

14-
first_sets = parse_table.build_first_sets(grammar)
15-
follow_sets = parse_table.build_follow_sets(grammar, first_sets)
16-
self.parse_table = parse_table.build_parse_table(grammar, first_sets, follow_sets)
14+
self.parse_table = parse_table.build_parse_table(grammar)
1715

1816
def parse(self, s):
1917
parse_stack = [END_SYMBOL, self.grammar.start_symbol.char]
@@ -32,7 +30,7 @@ def parse(self, s):
3230
i += 1
3331

3432
# predict attempt
35-
elif parse_stack[-1] != s_list[i] and parse_stack[-1] in self.nonterminals:
33+
elif parse_stack[-1] in self.nonterminals:
3634
X = parse_stack.pop()
3735
a = s_list[i]
3836

@@ -45,7 +43,7 @@ def parse(self, s):
4543

4644
parse_stack = parse_stack + [sym for sym in syms if sym is not EPSILON_CHAR]
4745

48-
# mismatch
46+
# terminal mismatch
4947
else:
5048
return False
5149

‎pycc/parse_table.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@
22
from pycc.grammar import NSym, TSym
33
from pycc.constants import EPSILON_CHAR, END_SYMBOL
44

5-
def build_parse_table(grammar, first_sets, follow_sets):
5+
def build_parse_table(grammar, first_sets = None, follow_sets = None):
6+
if first_sets is None or follow_sets is None:
7+
first_sets = build_first_sets(grammar)
8+
follow_sets = build_follow_sets(grammar, first_sets)
9+
610
parse_table = {}
711

812
for rule in grammar.rules:

0 commit comments

Comments
 (0)