def TestTheSameSwitch(): for _ in range(100): X, Y = RandomNew() A = induce(X, Y) B = induce(X, Y) rand = randint(2, count(A)) (A2, A2Par) = walkWithParent(A, rand) (B2, B2Par) = walkWithParent(B, rand) switch(A2, A2Par, B2, B2Par) for word in X: if not A.consume(word): raise AssertionError if not B.consume(word): raise AssertionError for word in Y: if A.consume(word): raise AssertionError if B.consume(word): raise AssertionError
def TestSwitchConsistency4(): #unary 2 a = Terminal('a') b = Terminal('b') c = Terminal('c') A = Expression('A') B = Expression('B') A = a >> ~a | c B = a | b >> b (nodeA, parA) = walkWithParent(A, 5) (nodeB, parB) = walkWithParent(B, 3) switch(nodeA, parA, nodeB, parB) assert (A.__str__() == 'a >> ~(b >> b) | c') assert (B.__str__() == 'a | a')
def TestSwitchConsistency1(): #non terminal a = Terminal('a') b = Terminal('b') c = Terminal('c') A = Expression('A') B = Expression('B') A = a >> ~a | c B = a | b >> b (nodeA, parA) = walkWithParent(A, 2) (nodeB, parB) = walkWithParent(B, 3) switch(nodeA, parA, nodeB, parB) assert (A.__str__() == 'b >> b | c') assert (B.__str__() == 'a | a >> ~a')
def TestHeightUp(): a = Terminal('a') b = Terminal('b') c = Terminal('c') d = Terminal('d') A = Expression('A') A = a >> b >> (b | a | c >> ~d) (exp, parExp) = walkWithParent(A, 8) assert (heightUp(A, exp, parExp) == 3) (exp, parExp) = walkWithParent(A, 12) assert (heightUp(A, exp, parExp) == 4) (exp, parExp) = walkWithParent(A, 4) assert (heightUp(A, exp, parExp) == 2) (exp, parExp) = walkWithParent(A, 2) assert (heightUp(A, exp, parExp) == 1)
def SimpleWalkTest(): a = Terminal('a') b = Terminal('b') A = Expression('A') A = a | ~b >> a | ~b assert (walkWithParent(A, 1)[1] == None) assert (walkWithParent(A, 1)[0].symbol == '|') assert (walkWithParent(A, 2)[1].symbol == '|') assert (walkWithParent(A, 2)[0].symbol == '|') assert (walkWithParent(A, 3)[1].symbol == '|') assert (walkWithParent(A, 3)[0].symbol == 'a') assert (walkWithParent(A, 4)[1].symbol == '|') assert (walkWithParent(A, 4)[0].symbol == '>>') assert (walkWithParent(A, 5)[1].symbol == '>>') assert (walkWithParent(A, 5)[0].symbol == '~') assert (walkWithParent(A, 6)[1].symbol == '~') assert (walkWithParent(A, 6)[0].symbol == 'b') assert (walkWithParent(A, 7)[1].symbol == '>>') assert (walkWithParent(A, 7)[0].symbol == 'a') assert (walkWithParent(A, 8)[1].symbol == '|') assert (walkWithParent(A, 8)[0].symbol == '~') assert (walkWithParent(A, 9)[1].symbol == '~') assert (walkWithParent(A, 9)[0].symbol == 'b') assert (walkWithParent(A, 10)[0] == None) assert (walkWithParent(A, 10)[1] == None)