diff options
author | David Beazley <dave@dabeaz.com> | 2009-03-24 11:40:21 +0000 |
---|---|---|
committer | David Beazley <dave@dabeaz.com> | 2009-03-24 11:40:21 +0000 |
commit | d0763821540fbcdd24013fd719a656aa620446d9 (patch) | |
tree | 41070a082eefb4c5ebe655856c71efe3c57fd7e7 /test | |
parent | df0d8b28ade4af433d414ed94fd64133abddafec (diff) | |
download | ply-d0763821540fbcdd24013fd719a656aa620446d9.tar.gz |
Cleanup. Added a new test
Diffstat (limited to 'test')
-rw-r--r-- | test/testyacc.py | 18 | ||||
-rw-r--r-- | test/yacc_rr_unused.py | 30 |
2 files changed, 48 insertions, 0 deletions
diff --git a/test/testyacc.py b/test/testyacc.py index 7bc7751..2127d8b 100644 --- a/test/testyacc.py +++ b/test/testyacc.py @@ -238,6 +238,24 @@ class YaccErrorWarningTests(unittest.TestCase): "rejected rule (expression -> NUMBER) in state 15\n" )) + + def test_yacc_rr_unused(self): + run_import("yacc_rr_unused") + result = sys.stderr.getvalue() + open("foo","w").write(result) + self.assert_(check_expected(result, + "no p_error() function is defined\n" + "Generating LALR tables\n" + "3 reduce/reduce conflicts\n" + "reduce/reduce conflict in state 1 resolved using rule (rule3 -> A)\n" + "rejected rule (rule4 -> A) in state 1\n" + "reduce/reduce conflict in state 1 resolved using rule (rule3 -> A)\n" + "rejected rule (rule5 -> A) in state 1\n" + "reduce/reduce conflict in state 1 resolved using rule (rule4 -> A)\n" + "rejected rule (rule5 -> A) in state 1\n" + "Rule (rule5 -> A) is never reduced\n" + )) + def test_yacc_simple(self): run_import("yacc_simple") result = sys.stderr.getvalue() diff --git a/test/yacc_rr_unused.py b/test/yacc_rr_unused.py new file mode 100644 index 0000000..1ca5f7e --- /dev/null +++ b/test/yacc_rr_unused.py @@ -0,0 +1,30 @@ +# ----------------------------------------------------------------------------- +# yacc_rr_unused.py +# +# A grammar with reduce/reduce conflicts and a rule that never +# gets reduced. +# ----------------------------------------------------------------------------- +import sys + +if ".." not in sys.path: sys.path.insert(0,"..") +import ply.yacc as yacc + +tokens = ('A', 'B', 'C') + +def p_grammar(p): + ''' + rule1 : rule2 B + | rule2 C + + rule2 : rule3 B + | rule4 + | rule5 + + rule3 : A + + rule4 : A + + rule5 : A + ''' + +yacc.yacc() |