def test_eliminate_left_recursion_3(self): A = 1 B = 2 nfa = ["A: A A A | A A | B", (A,0,0,A), {(A,0,0,A): [(A,1,0,A),(A,2,0,A),(B,3,0,A)], (A,1,0,A): [(A,5,0,A)], (A,5,0,A): [(A,6,0,A)], (B,3,0,A): [(FIN,FEX,0,A)], (A,6,0,A): [(FIN,FEX,0,A)], (A,2,0,A): [(A,4,0,A)], (A,4,0,A): [(FIN,FEX,0,A)]}] # A: B (A | A A)* bnftranslator.eliminate_left_recursion(nfa) pprint.pprint(nfa[2])
def test_eliminate_left_recursion(self): A = 1 B = 2 X = 3 C = 4 Y = 5 nfa = ["A: A X Y | B | C", (A,0,0,A), {(A,0,0,A): [(A,1,0,A),(B,2,0,A),(C,4,0,A)], (B,2,0,A): [(FIN,FEX,0,A)], (C,4,0,A): [(FIN,FEX,0,A)], (A,1,0,A): [(X,3,0,A)], (X,3,0,A): [(Y,5,0,A)], (Y,5,0,A): [(FIN,FEX,0,A)]}] bnftranslator.eliminate_left_recursion(nfa) pprint.pprint(nfa[2])
def test_eliminate_left_recursion_3(self): A = 1 B = 2 nfa = [ "A: A A A | A A | B", (A, 0, 0, A), { (A, 0, 0, A): [(A, 1, 0, A), (A, 2, 0, A), (B, 3, 0, A)], (A, 1, 0, A): [(A, 5, 0, A)], (A, 5, 0, A): [(A, 6, 0, A)], (B, 3, 0, A): [(FIN, FEX, 0, A)], (A, 6, 0, A): [(FIN, FEX, 0, A)], (A, 2, 0, A): [(A, 4, 0, A)], (A, 4, 0, A): [(FIN, FEX, 0, A)] } ] # A: B (A | A A)* bnftranslator.eliminate_left_recursion(nfa) pprint.pprint(nfa[2])
def test_eliminate_left_recursion(self): A = 1 B = 2 X = 3 C = 4 Y = 5 nfa = [ "A: A X Y | B | C", (A, 0, 0, A), { (A, 0, 0, A): [(A, 1, 0, A), (B, 2, 0, A), (C, 4, 0, A)], (B, 2, 0, A): [(FIN, FEX, 0, A)], (C, 4, 0, A): [(FIN, FEX, 0, A)], (A, 1, 0, A): [(X, 3, 0, A)], (X, 3, 0, A): [(Y, 5, 0, A)], (Y, 5, 0, A): [(FIN, FEX, 0, A)] } ] bnftranslator.eliminate_left_recursion(nfa) pprint.pprint(nfa[2])