summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorDavid Beazley <dave@dabeaz.com>2009-03-24 11:40:21 +0000
committerDavid Beazley <dave@dabeaz.com>2009-03-24 11:40:21 +0000
commitd0763821540fbcdd24013fd719a656aa620446d9 (patch)
tree41070a082eefb4c5ebe655856c71efe3c57fd7e7 /test
parentdf0d8b28ade4af433d414ed94fd64133abddafec (diff)
downloadply-d0763821540fbcdd24013fd719a656aa620446d9.tar.gz
Cleanup. Added a new test
Diffstat (limited to 'test')
-rw-r--r--test/testyacc.py18
-rw-r--r--test/yacc_rr_unused.py30
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()