def testCommonAlternativeAfterRepetition(self): a = builder.makeSequence([ Repetition(Null, Alternative([Terminal("d"), Terminal("e")])), Alternative([Terminal("d"), Terminal("e")]) ]) b = Repetition(Alternative([Terminal("d"), Terminal("e")]), Null) self.assertEqual(a, b)
def testDuplicateBranchInAlternative(self): a = builder.makeAlternative( [Terminal("bar"), Terminal("foo"), Terminal("bar"), Null]) b = Alternative([Terminal("bar"), Terminal("foo"), Null]) self.assertEqual(a, b)
def testAlternative(self): self.rules = [ Rule( "alternative", Alternative([ NonTerminal("with"), NonTerminal("several"), NonTerminal("branches") ])) ]
def testBackwardAlternative(self): self.rules = [ Rule( "repetition", Repetition( NonTerminal("forward"), Alternative([ NonTerminal("foo"), NonTerminal("bar"), NonTerminal("baz") ]))) ]
def testAlternativeWithOneBranch(self): self.rules = [ Rule("alternative", Alternative([NonTerminal("with one branch")])) ]
def testMultipleSimplifcationSteps(self): a = builder.makeAlternative( [Terminal("bar"), Alternative([Terminal("bar"), Terminal("bar")])]) b = Terminal("bar") self.assertEqual(a, b)
def testAlternativeInAlternative(self): a = builder.makeAlternative( [Terminal("foo"), Alternative([Terminal("bar"), Terminal("baz")])]) b = Alternative([Terminal("foo"), Terminal("bar"), Terminal("baz")]) self.assertEqual(a, b)