[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
};