[Python-checkins] CVS: python/dist/src/Python compile.c,2.224,2.225 graminit.c,2.30,2.31

Guido van Rossum gvanrossum@users.sourceforge.net
2001年10月15日 08:44:07 -0700


Update of /cvsroot/python/python/dist/src/Python
In directory usw-pr-cvs1:/tmp/cvs-serv24320/Python
Modified Files:
	compile.c graminit.c 
Log Message:
Very subtle syntax change: in a list comprehension, the testlist in
"for <var> in <testlist> may no longer be a single test followed by
a comma. This solves SF bug #431886. Note that if the testlist
contains more than one test, a trailing comma is still allowed, for
maximum backward compatibility; but this example is not:
 [(x, y) for x in range(10), for y in range(10)]
 ^
The fix involved creating a new nonterminal 'testlist_safe' whose
definition doesn't allow the trailing comma if there's only one test:
 testlist_safe: test [(',' test)+ [',']]
Index: compile.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Python/compile.c,v
retrieving revision 2.224
retrieving revision 2.225
diff -C2 -d -r2.224 -r2.225
*** compile.c	2001年09月20日 20:46:19	2.224
--- compile.c	2001年10月15日 15:44:05	2.225
***************
*** 3711,3714 ****
--- 3711,3715 ----
 	
 	case testlist:
+ 	case testlist_safe:
 		com_list(c, n, 0);
 		break;
Index: graminit.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Python/graminit.c,v
retrieving revision 2.30
retrieving revision 2.31
diff -C2 -d -r2.30 -r2.31
*** graminit.c	2001年08月08日 05:00:18	2.30
--- graminit.c	2001年10月15日 15:44:05	2.31
***************
*** 1256,1261 ****
 	{21, 1},
 };
! static arc arcs_58_1[1] = {
! 	{14, 2},
 };
 static arc arcs_58_2[1] = {
--- 1256,1262 ----
 	{21, 1},
 };
! static arc arcs_58_1[2] = {
! 	{22, 2},
! 	{0, 1},
 };
 static arc arcs_58_2[1] = {
***************
*** 1267,1276 ****
 };
 static arc arcs_58_4[2] = {
! 	{21, 1},
 	{0, 4},
 };
 static state states_58[5] = {
 	{1, arcs_58_0},
! 	{1, arcs_58_1},
 	{1, arcs_58_2},
 	{2, arcs_58_3},
--- 1268,1277 ----
 };
 static arc arcs_58_4[2] = {
! 	{21, 3},
 	{0, 4},
 };
 static state states_58[5] = {
 	{1, arcs_58_0},
! 	{2, arcs_58_1},
 	{1, arcs_58_2},
 	{2, arcs_58_3},
***************
*** 1278,1437 ****
 };
 static arc arcs_59_0[1] = {
! 	{142, 1},
 };
 static arc arcs_59_1[1] = {
 	{12, 2},
 };
! static arc arcs_59_2[2] = {
 	{16, 3},
 	{14, 4},
 };
! static arc arcs_59_3[1] = {
 	{9, 5},
 };
! static arc arcs_59_4[1] = {
 	{15, 6},
 };
! static arc arcs_59_5[1] = {
 	{18, 7},
 };
! static arc arcs_59_6[1] = {
 	{0, 6},
 };
! static arc arcs_59_7[1] = {
 	{14, 4},
 };
! static state states_59[8] = {
! 	{1, arcs_59_0},
! 	{1, arcs_59_1},
! 	{2, arcs_59_2},
! 	{1, arcs_59_3},
! 	{1, arcs_59_4},
! 	{1, arcs_59_5},
! 	{1, arcs_59_6},
! 	{1, arcs_59_7},
 };
! static arc arcs_60_0[3] = {
! 	{143, 1},
 	{23, 2},
 	{24, 3},
 };
! static arc arcs_60_1[2] = {
 	{22, 4},
 	{0, 1},
 };
! static arc arcs_60_2[1] = {
 	{21, 5},
 };
! static arc arcs_60_3[1] = {
 	{21, 6},
 };
! static arc arcs_60_4[4] = {
! 	{143, 1},
 	{23, 2},
 	{24, 3},
 	{0, 4},
 };
! static arc arcs_60_5[2] = {
 	{22, 7},
 	{0, 5},
 };
! static arc arcs_60_6[1] = {
 	{0, 6},
 };
! static arc arcs_60_7[1] = {
 	{24, 3},
 };
! static state states_60[8] = {
! 	{3, arcs_60_0},
! 	{2, arcs_60_1},
! 	{1, arcs_60_2},
! 	{1, arcs_60_3},
! 	{4, arcs_60_4},
! 	{2, arcs_60_5},
! 	{1, arcs_60_6},
! 	{1, arcs_60_7},
 };
! static arc arcs_61_0[1] = {
 	{21, 1},
 };
! static arc arcs_61_1[2] = {
 	{20, 2},
 	{0, 1},
 };
! static arc arcs_61_2[1] = {
 	{21, 3},
 };
! static arc arcs_61_3[1] = {
 	{0, 3},
 };
! static state states_61[4] = {
! 	{1, arcs_61_0},
! 	{2, arcs_61_1},
! 	{1, arcs_61_2},
! 	{1, arcs_61_3},
 };
! static arc arcs_62_0[2] = {
 	{136, 1},
! 	{145, 1},
 };
! static arc arcs_62_1[1] = {
 	{0, 1},
 };
! static state states_62[2] = {
! 	{2, arcs_62_0},
! 	{1, arcs_62_1},
 };
! static arc arcs_63_0[1] = {
 	{85, 1},
 };
! static arc arcs_63_1[1] = {
 	{53, 2},
 };
! static arc arcs_63_2[1] = {
 	{74, 3},
 };
! static arc arcs_63_3[1] = {
! 	{9, 4},
 };
! static arc arcs_63_4[2] = {
! 	{144, 5},
 	{0, 4},
 };
! static arc arcs_63_5[1] = {
 	{0, 5},
 };
! static state states_63[6] = {
! 	{1, arcs_63_0},
! 	{1, arcs_63_1},
! 	{1, arcs_63_2},
! 	{1, arcs_63_3},
! 	{2, arcs_63_4},
! 	{1, arcs_63_5},
 };
! static arc arcs_64_0[1] = {
 	{81, 1},
 };
! static arc arcs_64_1[1] = {
 	{21, 2},
 };
! static arc arcs_64_2[2] = {
! 	{144, 3},
 	{0, 2},
 };
! static arc arcs_64_3[1] = {
 	{0, 3},
 };
! static state states_64[4] = {
! 	{1, arcs_64_0},
! 	{1, arcs_64_1},
! 	{2, arcs_64_2},
! 	{1, arcs_64_3},
 };
! static dfa dfas[65] = {
 	{256, "single_input", 0, 3, states_0,
! 	 "004円030円001円000円000円000円124円360円213円011円162円000円002円000円140円210円344円102円000円"},
 	{257, "file_input", 0, 2, states_1,
! 	 "204円030円001円000円000円000円124円360円213円011円162円000円002円000円140円210円344円102円000円"},
 	{258, "eval_input", 0, 3, states_2,
 	 "000円020円001円000円000円000円000円000円000円000円000円000円002円000円140円210円344円002円000円"},
--- 1279,1462 ----
 };
 static arc arcs_59_0[1] = {
! 	{21, 1},
 };
 static arc arcs_59_1[1] = {
+ 	{14, 2},
+ };
+ static arc arcs_59_2[1] = {
+ 	{21, 3},
+ };
+ static arc arcs_59_3[2] = {
+ 	{22, 4},
+ 	{0, 3},
+ };
+ static arc arcs_59_4[2] = {
+ 	{21, 1},
+ 	{0, 4},
+ };
+ static state states_59[5] = {
+ 	{1, arcs_59_0},
+ 	{1, arcs_59_1},
+ 	{1, arcs_59_2},
+ 	{2, arcs_59_3},
+ 	{2, arcs_59_4},
+ };
+ static arc arcs_60_0[1] = {
+ 	{143, 1},
+ };
+ static arc arcs_60_1[1] = {
 	{12, 2},
 };
! static arc arcs_60_2[2] = {
 	{16, 3},
 	{14, 4},
 };
! static arc arcs_60_3[1] = {
 	{9, 5},
 };
! static arc arcs_60_4[1] = {
 	{15, 6},
 };
! static arc arcs_60_5[1] = {
 	{18, 7},
 };
! static arc arcs_60_6[1] = {
 	{0, 6},
 };
! static arc arcs_60_7[1] = {
 	{14, 4},
 };
! static state states_60[8] = {
! 	{1, arcs_60_0},
! 	{1, arcs_60_1},
! 	{2, arcs_60_2},
! 	{1, arcs_60_3},
! 	{1, arcs_60_4},
! 	{1, arcs_60_5},
! 	{1, arcs_60_6},
! 	{1, arcs_60_7},
 };
! static arc arcs_61_0[3] = {
! 	{144, 1},
 	{23, 2},
 	{24, 3},
 };
! static arc arcs_61_1[2] = {
 	{22, 4},
 	{0, 1},
 };
! static arc arcs_61_2[1] = {
 	{21, 5},
 };
! static arc arcs_61_3[1] = {
 	{21, 6},
 };
! static arc arcs_61_4[4] = {
! 	{144, 1},
 	{23, 2},
 	{24, 3},
 	{0, 4},
 };
! static arc arcs_61_5[2] = {
 	{22, 7},
 	{0, 5},
 };
! static arc arcs_61_6[1] = {
 	{0, 6},
 };
! static arc arcs_61_7[1] = {
 	{24, 3},
 };
! static state states_61[8] = {
! 	{3, arcs_61_0},
! 	{2, arcs_61_1},
! 	{1, arcs_61_2},
! 	{1, arcs_61_3},
! 	{4, arcs_61_4},
! 	{2, arcs_61_5},
! 	{1, arcs_61_6},
! 	{1, arcs_61_7},
 };
! static arc arcs_62_0[1] = {
 	{21, 1},
 };
! static arc arcs_62_1[2] = {
 	{20, 2},
 	{0, 1},
 };
! static arc arcs_62_2[1] = {
 	{21, 3},
 };
! static arc arcs_62_3[1] = {
 	{0, 3},
 };
! static state states_62[4] = {
! 	{1, arcs_62_0},
! 	{2, arcs_62_1},
! 	{1, arcs_62_2},
! 	{1, arcs_62_3},
 };
! static arc arcs_63_0[2] = {
 	{136, 1},
! 	{146, 1},
 };
! static arc arcs_63_1[1] = {
 	{0, 1},
 };
! static state states_63[2] = {
! 	{2, arcs_63_0},
! 	{1, arcs_63_1},
 };
! static arc arcs_64_0[1] = {
 	{85, 1},
 };
! static arc arcs_64_1[1] = {
 	{53, 2},
 };
! static arc arcs_64_2[1] = {
 	{74, 3},
 };
! static arc arcs_64_3[1] = {
! 	{142, 4},
 };
! static arc arcs_64_4[2] = {
! 	{145, 5},
 	{0, 4},
 };
! static arc arcs_64_5[1] = {
 	{0, 5},
 };
! static state states_64[6] = {
! 	{1, arcs_64_0},
! 	{1, arcs_64_1},
! 	{1, arcs_64_2},
! 	{1, arcs_64_3},
! 	{2, arcs_64_4},
! 	{1, arcs_64_5},
 };
! static arc arcs_65_0[1] = {
 	{81, 1},
 };
! static arc arcs_65_1[1] = {
 	{21, 2},
 };
! static arc arcs_65_2[2] = {
! 	{145, 3},
 	{0, 2},
 };
! static arc arcs_65_3[1] = {
 	{0, 3},
 };
! static state states_65[4] = {
! 	{1, arcs_65_0},
! 	{1, arcs_65_1},
! 	{2, arcs_65_2},
! 	{1, arcs_65_3},
 };
! static dfa dfas[66] = {
 	{256, "single_input", 0, 3, states_0,
! 	 "004円030円001円000円000円000円124円360円213円011円162円000円002円000円140円210円344円202円000円"},
 	{257, "file_input", 0, 2, states_1,
! 	 "204円030円001円000円000円000円124円360円213円011円162円000円002円000円140円210円344円202円000円"},
 	{258, "eval_input", 0, 3, states_2,
 	 "000円020円001円000円000円000円000円000円000円000円000円000円002円000円140円210円344円002円000円"},
***************
*** 1447,1451 ****
 	 "000円020円001円000円000円000円000円000円000円000円000円000円000円000円000円000円000円000円000円"},
 	{264, "stmt", 0, 2, states_8,
! 	 "000円030円001円000円000円000円124円360円213円011円162円000円002円000円140円210円344円102円000円"},
 	{265, "simple_stmt", 0, 4, states_9,
 	 "000円020円001円000円000円000円124円360円213円011円000円000円002円000円140円210円344円002円000円"},
--- 1472,1476 ----
 	 "000円020円001円000円000円000円000円000円000円000円000円000円000円000円000円000円000円000円000円"},
 	{264, "stmt", 0, 2, states_8,
! 	 "000円030円001円000円000円000円124円360円213円011円162円000円002円000円140円210円344円202円000円"},
 	{265, "simple_stmt", 0, 4, states_9,
 	 "000円020円001円000円000円000円124円360円213円011円000円000円002円000円140円210円344円002円000円"},
***************
*** 1489,1493 ****
 	 "000円000円000円000円000円000円000円000円000円010円000円000円000円000円000円000円000円000円000円"},
 	{285, "compound_stmt", 0, 2, states_29,
! 	 "000円010円000円000円000円000円000円000円000円000円162円000円000円000円000円000円000円100円000円"},
 	{286, "if_stmt", 0, 8, states_30,
 	 "000円000円000円000円000円000円000円000円000円000円002円000円000円000円000円000円000円000円000円"},
--- 1514,1518 ----
 	 "000円000円000円000円000円000円000円000円000円010円000円000円000円000円000円000円000円000円000円"},
 	{285, "compound_stmt", 0, 2, states_29,
! 	 "000円010円000円000円000円000円000円000円000円000円162円000円000円000円000円000円000円200円000円"},
 	{286, "if_stmt", 0, 8, states_30,
 	 "000円000円000円000円000円000円000円000円000円000円002円000円000円000円000円000円000円000円000円"},
***************
*** 1546,1565 ****
 	{313, "testlist", 0, 3, states_57,
 	 "000円020円001円000円000円000円000円000円000円000円000円000円002円000円140円210円344円002円000円"},
! 	{314, "dictmaker", 0, 5, states_58,
 	 "000円020円001円000円000円000円000円000円000円000円000円000円002円000円140円210円344円002円000円"},
! 	{315, "classdef", 0, 8, states_59,
! 	 "000円000円000円000円000円000円000円000円000円000円000円000円000円000円000円000円000円100円000円"},
! 	{316, "arglist", 0, 8, states_60,
 	 "000円020円201円001円000円000円000円000円000円000円000円000円002円000円140円210円344円002円000円"},
! 	{317, "argument", 0, 4, states_61,
 	 "000円020円001円000円000円000円000円000円000円000円000円000円002円000円140円210円344円002円000円"},
! 	{318, "list_iter", 0, 2, states_62,
 	 "000円000円000円000円000円000円000円000円000円000円042円000円000円000円000円000円000円000円000円"},
! 	{319, "list_for", 0, 6, states_63,
 	 "000円000円000円000円000円000円000円000円000円000円040円000円000円000円000円000円000円000円000円"},
! 	{320, "list_if", 0, 4, states_64,
 	 "000円000円000円000円000円000円000円000円000円000円002円000円000円000円000円000円000円000円000円"},
 };
! static label labels[146] = {
 	{0, "EMPTY"},
 	{256, 0},
--- 1571,1592 ----
 	{313, "testlist", 0, 3, states_57,
 	 "000円020円001円000円000円000円000円000円000円000円000円000円002円000円140円210円344円002円000円"},
! 	{314, "testlist_safe", 0, 5, states_58,
 	 "000円020円001円000円000円000円000円000円000円000円000円000円002円000円140円210円344円002円000円"},
! 	{315, "dictmaker", 0, 5, states_59,
! 	 "000円020円001円000円000円000円000円000円000円000円000円000円002円000円140円210円344円002円000円"},
! 	{316, "classdef", 0, 8, states_60,
! 	 "000円000円000円000円000円000円000円000円000円000円000円000円000円000円000円000円000円200円000円"},
! 	{317, "arglist", 0, 8, states_61,
 	 "000円020円201円001円000円000円000円000円000円000円000円000円002円000円140円210円344円002円000円"},
! 	{318, "argument", 0, 4, states_62,
 	 "000円020円001円000円000円000円000円000円000円000円000円000円002円000円140円210円344円002円000円"},
! 	{319, "list_iter", 0, 2, states_63,
 	 "000円000円000円000円000円000円000円000円000円000円042円000円000円000円000円000円000円000円000円"},
! 	{320, "list_for", 0, 6, states_64,
 	 "000円000円000円000円000円000円000円000円000円000円040円000円000円000円000円000円000円000円000円"},
! 	{321, "list_if", 0, 4, states_65,
 	 "000円000円000円000円000円000円000円000円000円000円002円000円000円000円000円000円000円000円000円"},
 };
! static label labels[147] = {
 	{0, "EMPTY"},
 	{256, 0},
***************
*** 1642,1646 ****
 	{288, 0},
 	{289, 0},
! 	{315, 0},
 	{1, "if"},
 	{1, "elif"},
--- 1669,1673 ----
 	{288, 0},
 	{289, 0},
! 	{316, 0},
 	{1, "if"},
 	{1, "elif"},
***************
*** 1693,1716 ****
 	{10, 0},
 	{26, 0},
! 	{314, 0},
 	{27, 0},
 	{25, 0},
 	{2, 0},
 	{3, 0},
! 	{319, 0},
 	{1, "lambda"},
! 	{316, 0},
 	{309, 0},
 	{310, 0},
 	{311, 0},
 	{1, "class"},
- 	{317, 0},
 	{318, 0},
! 	{320, 0},
 };
 grammar _PyParser_Grammar = {
! 	65,
 	dfas,
! 	{146, labels},
 	256
 };
--- 1720,1744 ----
 	{10, 0},
 	{26, 0},
! 	{315, 0},
 	{27, 0},
 	{25, 0},
 	{2, 0},
 	{3, 0},
! 	{320, 0},
 	{1, "lambda"},
! 	{317, 0},
 	{309, 0},
 	{310, 0},
 	{311, 0},
+ 	{314, 0},
 	{1, "class"},
 	{318, 0},
! 	{319, 0},
! 	{321, 0},
 };
 grammar _PyParser_Grammar = {
! 	66,
 	dfas,
! 	{147, labels},
 	256
 };

AltStyle によって変換されたページ (->オリジナル) /