Skip to content

Commit e924d00

Browse files
committed
Defines states in test data
1 parent 392fb27 commit e924d00

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

src/syntactes/tests/data.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
from syntactes import Grammar, Rule, Token
2+
from syntactes._item import LR0Item
3+
from syntactes._state import LR0State
24

35
EOF = Token.eof()
46
S = Token("S", False)
@@ -22,3 +24,52 @@
2224
rules = (rule_1, rule_2, rule_3, rule_4)
2325

2426
grammar = Grammar(rule_1, rules, tokens)
27+
28+
29+
def state_1():
30+
item_1 = LR0Item(grammar.starting_rule, 0) # S -> . E $
31+
item_2 = LR0Item(rule_2, 0) # E -> . T + E
32+
item_3 = LR0Item(rule_3, 0) # E -> . T
33+
item_4 = LR0Item(rule_4, 0) # T -> . x
34+
state = LR0State.from_items({item_1, item_2, item_3, item_4})
35+
state.set_number(1)
36+
return state
37+
38+
39+
def state_2():
40+
item_1 = LR0Item(grammar.starting_rule, 1) # S -> E . $
41+
state = LR0State.from_items({item_1})
42+
state.set_number(2)
43+
return state
44+
45+
46+
def state_3():
47+
item_1 = LR0Item(rule_2, 1) # E -> T . + E
48+
item_2 = LR0Item(rule_3, 1) # E -> T .
49+
state = LR0State.from_items({item_1, item_2})
50+
state.set_number(3)
51+
return state
52+
53+
54+
def state_4():
55+
item_1 = LR0Item(rule_2, 2) # E -> T + . E
56+
item_2 = LR0Item(rule_2, 0) # E -> . T + E
57+
item_3 = LR0Item(rule_3, 0) # E -> . T
58+
item_4 = LR0Item(rule_4, 0) # T -> . x
59+
state = LR0State.from_items({item_1, item_2, item_3, item_4})
60+
state.set_number(4)
61+
return state
62+
63+
64+
def state_5():
65+
item_1 = LR0Item(rule_4, 1) # T -> x .
66+
state = LR0State.from_items({item_1})
67+
state.set_number(5)
68+
return state
69+
70+
71+
def state_6():
72+
item_1 = LR0Item(rule_2, 3) # E -> T + E .
73+
state = LR0State.from_items({item_1})
74+
state.set_number(6)
75+
return state

0 commit comments

Comments
 (0)