|
2 | 2 |
|
3 | 3 | from syntactes._action import Action, ActionType |
4 | 4 | from syntactes._item import LR0Item |
5 | | -from syntactes._state import LR0State |
6 | 5 | from syntactes.generator import LR0Generator, SLRGenerator |
7 | | -from syntactes.tests.data import EOF, PLUS, E, T, grammar, rule_2, rule_3, rule_4, x |
8 | | - |
9 | | - |
10 | | -def state_1(): |
11 | | - item_1 = LR0Item(grammar.starting_rule, 0) # S -> . E $ |
12 | | - item_2 = LR0Item(rule_2, 0) # E -> . T + E |
13 | | - item_3 = LR0Item(rule_3, 0) # E -> . T |
14 | | - item_4 = LR0Item(rule_4, 0) # T -> . x |
15 | | - state = LR0State.from_items({item_1, item_2, item_3, item_4}) |
16 | | - state.set_number(1) |
17 | | - return state |
18 | | - |
19 | | - |
20 | | -def state_2(): |
21 | | - item_1 = LR0Item(grammar.starting_rule, 1) # S -> E . $ |
22 | | - state = LR0State.from_items({item_1}) |
23 | | - state.set_number(2) |
24 | | - return state |
25 | | - |
26 | | - |
27 | | -def state_3(): |
28 | | - item_1 = LR0Item(rule_2, 1) # E -> T . + E |
29 | | - item_2 = LR0Item(rule_3, 1) # E -> T . |
30 | | - state = LR0State.from_items({item_1, item_2}) |
31 | | - state.set_number(3) |
32 | | - return state |
33 | | - |
34 | | - |
35 | | -def state_4(): |
36 | | - item_1 = LR0Item(rule_2, 2) # E -> T + . E |
37 | | - item_2 = LR0Item(rule_2, 0) # E -> . T + E |
38 | | - item_3 = LR0Item(rule_3, 0) # E -> . T |
39 | | - item_4 = LR0Item(rule_4, 0) # T -> . x |
40 | | - state = LR0State.from_items({item_1, item_2, item_3, item_4}) |
41 | | - state.set_number(4) |
42 | | - return state |
43 | | - |
44 | | - |
45 | | -def state_5(): |
46 | | - item_1 = LR0Item(rule_4, 1) # T -> x . |
47 | | - state = LR0State.from_items({item_1}) |
48 | | - state.set_number(5) |
49 | | - return state |
50 | | - |
51 | | - |
52 | | -def state_6(): |
53 | | - item_1 = LR0Item(rule_2, 3) # E -> T + E . |
54 | | - state = LR0State.from_items({item_1}) |
55 | | - state.set_number(6) |
56 | | - return state |
| 6 | +from syntactes.tests.data import ( |
| 7 | + EOF, |
| 8 | + PLUS, |
| 9 | + E, |
| 10 | + T, |
| 11 | + grammar, |
| 12 | + rule_2, |
| 13 | + rule_3, |
| 14 | + rule_4, |
| 15 | + state_1, |
| 16 | + state_2, |
| 17 | + state_3, |
| 18 | + state_4, |
| 19 | + state_5, |
| 20 | + state_6, |
| 21 | + x, |
| 22 | +) |
57 | 23 |
|
58 | 24 |
|
59 | 25 | def shift(state): |
@@ -262,6 +228,7 @@ def test_state_6_token_plus(self): |
262 | 228 | def test_state_6_token_x(self): |
263 | 229 | self.assert_state_actions(reduce(rule_2)) |
264 | 230 |
|
| 231 | + |
265 | 232 | class TestLR0GeneratorGenerateInitialState(TestLR0Generator): |
266 | 233 | def subject(self): |
267 | 234 | return self.generator().generate().initial_state |
|
0 commit comments