Ejemplo n.º 1
0
 def check(rules):
     grammar = Grammar(rules, goal_nts=['goal'])
     out = io.StringIO()
     self.assertRaisesRegex(
         ValueError,
         r"ambiguous grammar|reduce-reduce conflict",
         lambda: gen.generate_parser(out, grammar))
Ejemplo n.º 2
0
    def testAmbiguous(self):
        # This grammar should fail verification.
        # It's ambiguous: is ABC s(A)y(BC) or s(AB)y(C)?
        grammar = Grammar({
            'goal': [
                ['s', 'y'],
            ],
            's': [
                ['A'],
                ['s', 'B'],
            ],
            'y': [
                ['C'],
                ['B', 'C'],
            ],
        })

        out = io.StringIO()
        self.assertRaisesRegex(ValueError, r"shift-reduce conflict",
                               lambda: gen.generate_parser(out, grammar))