Skip to content

Commit 4ae1f80

Browse files
committed
Uses action constructors in generator
1 parent 1c94ce5 commit 4ae1f80

File tree

2 files changed

+9
-14
lines changed

2 files changed

+9
-14
lines changed

src/syntactes/generator.py

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -203,8 +203,7 @@ def _extend_states_and_shift_entries(
203203
number = _states.setdefault(new, len(_states) + 1)
204204
new.set_number(number)
205205

206-
action = Action(new, ActionType.SHIFT)
207-
_entries.add(Entry(state, item.after_dot, action))
206+
_entries.add(Entry(state, item.after_dot, Action.shift(new)))
208207

209208
return _states, _entries
210209

@@ -217,16 +216,14 @@ def _create_reduce_entries(self, states: set[LR0State]) -> set[Entry]:
217216
for state in states:
218217
for item in state.items:
219218
if item.after_dot == Token.eof():
220-
action = Action(item.rule, ActionType.ACCEPT)
221-
entries.add(Entry(state, Token.eof(), action))
219+
entries.add(Entry(state, Token.eof(), Action.accept()))
222220

223221
if not item.dot_is_last():
224222
continue
225223

226-
action = Action(item.rule, ActionType.REDUCE)
227224
for token in self.grammar.tokens:
228225
if token.is_terminal:
229-
entries.add(Entry(state, token, action))
226+
entries.add(Entry(state, token, Action.reduce(item.rule)))
230227

231228
return entries
232229

@@ -254,14 +251,12 @@ def _create_reduce_entries(self, states: set[LR0State]) -> set[Entry]:
254251
for state in states:
255252
for item in state.items:
256253
if item.after_dot == Token.eof():
257-
action = Action(item.rule, ActionType.ACCEPT)
258-
entries.add(Entry(state, Token.eof(), action))
254+
entries.add(Entry(state, Token.eof(), Action.accept()))
259255

260256
if not item.dot_is_last():
261257
continue
262258

263-
action = Action(item.rule, ActionType.REDUCE)
264259
for token in self._follow(item.rule.lhs):
265-
entries.add(Entry(state, token, action))
260+
entries.add(Entry(state, token, Action.reduce(item.rule)))
266261

267262
return entries

src/syntactes/tests/test_generator.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ def reduce(rule):
3030
return Action(rule, ActionType.REDUCE)
3131

3232

33-
def accept(rule):
34-
return Action(rule, ActionType.ACCEPT)
33+
def accept():
34+
return Action(None, ActionType.ACCEPT)
3535

3636

3737
class TestLR0Generator(TestCase):
@@ -178,7 +178,7 @@ def test_state_1_token_x(self):
178178

179179
@args(state_2(), EOF)
180180
def test_state_2_token_eof(self):
181-
self.assert_state_actions(accept(grammar.starting_rule))
181+
self.assert_state_actions(accept())
182182

183183
@args(state_3(), PLUS)
184184
def test_state_3_token_plus(self):
@@ -311,7 +311,7 @@ def test_state_1_token_x(self):
311311

312312
@args(state_2(), EOF)
313313
def test_state_2_token_eof(self):
314-
self.assert_state_actions(accept(grammar.starting_rule))
314+
self.assert_state_actions(accept())
315315

316316
@args(state_3(), PLUS)
317317
def test_state_3_token_plus(self):

0 commit comments

Comments
 (0)