Allow classes to be defined with empty parentheses.  This means that
``class C(): pass`` is no longer a syntax error.
diff --git a/Grammar/Grammar b/Grammar/Grammar
index 9e4dad8..7b6acf7 100644
--- a/Grammar/Grammar
+++ b/Grammar/Grammar
@@ -99,7 +99,7 @@
 testlist_safe: test [(',' test)+ [',']]
 dictmaker: test ':' test (',' test ':' test)* [',']
 
-classdef: 'class' NAME ['(' testlist ')'] ':' suite
+classdef: 'class' NAME ['(' [testlist] ')'] ':' suite
 
 arglist: (argument ',')* (argument [',']| '*' test [',' '**' test] | '**' test)
 argument: [test '='] test [gen_for] # Really [keyword '='] test
diff --git a/Misc/NEWS b/Misc/NEWS
index 86d3677..08a8f43 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -10,6 +10,9 @@
 Core and builtins
 -----------------
 
+- Defining a class with empty parentheses is now allowed
+  (e.g., ``class C(): pass`` is no longer a syntax error)
+
 - Patch #1115086: Support PY_LONGLONG in structmember.
 
 - Bug #1155938: new style classes did not check that __init__() was
diff --git a/Python/compile.c b/Python/compile.c
index 16bf291..5781b21 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -4624,7 +4624,7 @@
 	char *name;
 
 	REQ(n, classdef);
-	/* classdef: class NAME ['(' testlist ')'] ':' suite */
+	/* classdef: class NAME ['(' [testlist] ')'] ':' suite */
 	if ((v = PyString_InternFromString(STR(CHILD(n, 1)))) == NULL) {
 		c->c_errors++;
 		return;
@@ -4635,7 +4635,8 @@
 	com_push(c, 1);
 	Py_DECREF(v);
 	/* Push the tuple of base classes on the stack */
-	if (TYPE(CHILD(n, 2)) != LPAR) {
+	if (TYPE(CHILD(n, 2)) != LPAR ||
+			TYPE(CHILD(n, 3)) == RPAR) {
 		com_addoparg(c, BUILD_TUPLE, 0);
 		com_push(c, 1);
 	}
diff --git a/Python/graminit.c b/Python/graminit.c
index c4fe661..464f0ae 100644
--- a/Python/graminit.c
+++ b/Python/graminit.c
@@ -1426,26 +1426,27 @@
 	{13, 3},
 	{21, 4},
 };
-static arc arcs_67_3[1] = {
+static arc arcs_67_3[2] = {
 	{9, 5},
+	{15, 6},
 };
 static arc arcs_67_4[1] = {
-	{22, 6},
+	{22, 7},
 };
 static arc arcs_67_5[1] = {
-	{15, 7},
+	{15, 6},
 };
 static arc arcs_67_6[1] = {
-	{0, 6},
+	{21, 4},
 };
 static arc arcs_67_7[1] = {
-	{21, 4},
+	{0, 7},
 };
 static state states_67[8] = {
 	{1, arcs_67_0},
 	{1, arcs_67_1},
 	{2, arcs_67_2},
-	{1, arcs_67_3},
+	{2, arcs_67_3},
 	{1, arcs_67_4},
 	{1, arcs_67_5},
 	{1, arcs_67_6},