Index: Python/graminit.c =================================================================== --- Python/graminit.c (Revision 59850) +++ Python/graminit.c (Arbeitskopie) @@ -86,176 +86,184 @@ {1, arcs_4_0}, {2, arcs_4_1}, }; -static arc arcs_5_0[2] = { +static arc arcs_5_0[1] = { {16, 1}, - {18, 2}, }; -static arc arcs_5_1[1] = { +static arc arcs_5_1[2] = { {18, 2}, + {19, 2}, }; static arc arcs_5_2[1] = { - {19, 3}, + {0, 2}, }; -static arc arcs_5_3[1] = { - {20, 4}, -}; -static arc arcs_5_4[1] = { - {21, 5}, -}; -static arc arcs_5_5[1] = { - {22, 6}, -}; -static arc arcs_5_6[1] = { - {0, 6}, -}; -static state states_5[7] = { - {2, arcs_5_0}, - {1, arcs_5_1}, +static state states_5[3] = { + {1, arcs_5_0}, + {2, arcs_5_1}, {1, arcs_5_2}, - {1, arcs_5_3}, - {1, arcs_5_4}, - {1, arcs_5_5}, - {1, arcs_5_6}, }; static arc arcs_6_0[1] = { - {13, 1}, + {20, 1}, }; -static arc arcs_6_1[2] = { - {23, 2}, - {15, 3}, +static arc arcs_6_1[1] = { + {21, 2}, }; static arc arcs_6_2[1] = { - {15, 3}, + {22, 3}, }; static arc arcs_6_3[1] = { - {0, 3}, + {23, 4}, }; -static state states_6[4] = { +static arc arcs_6_4[1] = { + {24, 5}, +}; +static arc arcs_6_5[1] = { + {0, 5}, +}; +static state states_6[6] = { {1, arcs_6_0}, - {2, arcs_6_1}, + {1, arcs_6_1}, {1, arcs_6_2}, {1, arcs_6_3}, + {1, arcs_6_4}, + {1, arcs_6_5}, }; -static arc arcs_7_0[3] = { - {24, 1}, - {28, 2}, - {29, 3}, +static arc arcs_7_0[1] = { + {13, 1}, }; -static arc arcs_7_1[3] = { - {25, 4}, - {27, 5}, - {0, 1}, +static arc arcs_7_1[2] = { + {25, 2}, + {15, 3}, }; static arc arcs_7_2[1] = { - {19, 6}, + {15, 3}, }; static arc arcs_7_3[1] = { - {19, 7}, + {0, 3}, }; -static arc arcs_7_4[1] = { - {26, 8}, +static state states_7[4] = { + {1, arcs_7_0}, + {2, arcs_7_1}, + {1, arcs_7_2}, + {1, arcs_7_3}, }; -static arc arcs_7_5[4] = { - {24, 1}, - {28, 2}, - {29, 3}, +static arc arcs_8_0[3] = { + {26, 1}, + {30, 2}, + {31, 3}, +}; +static arc arcs_8_1[3] = { + {27, 4}, + {29, 5}, + {0, 1}, +}; +static arc arcs_8_2[1] = { + {21, 6}, +}; +static arc arcs_8_3[1] = { + {21, 7}, +}; +static arc arcs_8_4[1] = { + {28, 8}, +}; +static arc arcs_8_5[4] = { + {26, 1}, + {30, 2}, + {31, 3}, {0, 5}, }; -static arc arcs_7_6[2] = { - {27, 9}, +static arc arcs_8_6[2] = { + {29, 9}, {0, 6}, }; -static arc arcs_7_7[1] = { +static arc arcs_8_7[1] = { {0, 7}, }; -static arc arcs_7_8[2] = { - {27, 5}, +static arc arcs_8_8[2] = { + {29, 5}, {0, 8}, }; -static arc arcs_7_9[1] = { - {29, 3}, +static arc arcs_8_9[1] = { + {31, 3}, }; -static state states_7[10] = { - {3, arcs_7_0}, - {3, arcs_7_1}, - {1, arcs_7_2}, - {1, arcs_7_3}, - {1, arcs_7_4}, - {4, arcs_7_5}, - {2, arcs_7_6}, - {1, arcs_7_7}, - {2, arcs_7_8}, - {1, arcs_7_9}, +static state states_8[10] = { + {3, arcs_8_0}, + {3, arcs_8_1}, + {1, arcs_8_2}, + {1, arcs_8_3}, + {1, arcs_8_4}, + {4, arcs_8_5}, + {2, arcs_8_6}, + {1, arcs_8_7}, + {2, arcs_8_8}, + {1, arcs_8_9}, }; -static arc arcs_8_0[2] = { - {19, 1}, +static arc arcs_9_0[2] = { + {21, 1}, {13, 2}, }; -static arc arcs_8_1[1] = { +static arc arcs_9_1[1] = { {0, 1}, }; -static arc arcs_8_2[1] = { - {30, 3}, +static arc arcs_9_2[1] = { + {32, 3}, }; -static arc arcs_8_3[1] = { +static arc arcs_9_3[1] = { {15, 1}, }; -static state states_8[4] = { - {2, arcs_8_0}, - {1, arcs_8_1}, - {1, arcs_8_2}, - {1, arcs_8_3}, +static state states_9[4] = { + {2, arcs_9_0}, + {1, arcs_9_1}, + {1, arcs_9_2}, + {1, arcs_9_3}, }; -static arc arcs_9_0[1] = { - {24, 1}, +static arc arcs_10_0[1] = { + {26, 1}, }; -static arc arcs_9_1[2] = { - {27, 2}, +static arc arcs_10_1[2] = { + {29, 2}, {0, 1}, }; -static arc arcs_9_2[2] = { - {24, 1}, +static arc arcs_10_2[2] = { + {26, 1}, {0, 2}, }; -static state states_9[3] = { - {1, arcs_9_0}, - {2, arcs_9_1}, - {2, arcs_9_2}, +static state states_10[3] = { + {1, arcs_10_0}, + {2, arcs_10_1}, + {2, arcs_10_2}, }; -static arc arcs_10_0[2] = { +static arc arcs_11_0[2] = { {3, 1}, {4, 1}, }; -static arc arcs_10_1[1] = { +static arc arcs_11_1[1] = { {0, 1}, }; -static state states_10[2] = { - {2, arcs_10_0}, - {1, arcs_10_1}, +static state states_11[2] = { + {2, arcs_11_0}, + {1, arcs_11_1}, }; -static arc arcs_11_0[1] = { - {31, 1}, +static arc arcs_12_0[1] = { + {33, 1}, }; -static arc arcs_11_1[2] = { - {32, 2}, +static arc arcs_12_1[2] = { + {34, 2}, {2, 3}, }; -static arc arcs_11_2[2] = { - {31, 1}, +static arc arcs_12_2[2] = { + {33, 1}, {2, 3}, }; -static arc arcs_11_3[1] = { +static arc arcs_12_3[1] = { {0, 3}, }; -static state states_11[4] = { - {1, arcs_11_0}, - {2, arcs_11_1}, - {2, arcs_11_2}, - {1, arcs_11_3}, +static state states_12[4] = { + {1, arcs_12_0}, + {2, arcs_12_1}, + {2, arcs_12_2}, + {1, arcs_12_3}, }; -static arc arcs_12_0[9] = { - {33, 1}, - {34, 1}, +static arc arcs_13_0[9] = { {35, 1}, {36, 1}, {37, 1}, @@ -263,48 +271,48 @@ {39, 1}, {40, 1}, {41, 1}, + {42, 1}, + {43, 1}, }; -static arc arcs_12_1[1] = { +static arc arcs_13_1[1] = { {0, 1}, }; -static state states_12[2] = { - {9, arcs_12_0}, - {1, arcs_12_1}, +static state states_13[2] = { + {9, arcs_13_0}, + {1, arcs_13_1}, }; -static arc arcs_13_0[1] = { +static arc arcs_14_0[1] = { {9, 1}, }; -static arc arcs_13_1[3] = { - {42, 2}, - {25, 3}, +static arc arcs_14_1[3] = { + {44, 2}, + {27, 3}, {0, 1}, }; -static arc arcs_13_2[2] = { - {43, 4}, +static arc arcs_14_2[2] = { + {45, 4}, {9, 4}, }; -static arc arcs_13_3[2] = { - {43, 5}, +static arc arcs_14_3[2] = { + {45, 5}, {9, 5}, }; -static arc arcs_13_4[1] = { +static arc arcs_14_4[1] = { {0, 4}, }; -static arc arcs_13_5[2] = { - {25, 3}, +static arc arcs_14_5[2] = { + {27, 3}, {0, 5}, }; -static state states_13[6] = { - {1, arcs_13_0}, - {3, arcs_13_1}, - {2, arcs_13_2}, - {2, arcs_13_3}, - {1, arcs_13_4}, - {2, arcs_13_5}, +static state states_14[6] = { + {1, arcs_14_0}, + {3, arcs_14_1}, + {2, arcs_14_2}, + {2, arcs_14_3}, + {1, arcs_14_4}, + {2, arcs_14_5}, }; -static arc arcs_14_0[12] = { - {44, 1}, - {45, 1}, +static arc arcs_15_0[12] = { {46, 1}, {47, 1}, {48, 1}, @@ -315,109 +323,101 @@ {53, 1}, {54, 1}, {55, 1}, + {56, 1}, + {57, 1}, }; -static arc arcs_14_1[1] = { +static arc arcs_15_1[1] = { {0, 1}, }; -static state states_14[2] = { - {12, arcs_14_0}, - {1, arcs_14_1}, +static state states_15[2] = { + {12, arcs_15_0}, + {1, arcs_15_1}, }; -static arc arcs_15_0[1] = { - {56, 1}, +static arc arcs_16_0[1] = { + {58, 1}, }; -static arc arcs_15_1[3] = { - {26, 2}, - {57, 3}, +static arc arcs_16_1[3] = { + {28, 2}, + {59, 3}, {0, 1}, }; -static arc arcs_15_2[2] = { - {27, 4}, +static arc arcs_16_2[2] = { + {29, 4}, {0, 2}, }; -static arc arcs_15_3[1] = { - {26, 5}, +static arc arcs_16_3[1] = { + {28, 5}, }; -static arc arcs_15_4[2] = { - {26, 2}, +static arc arcs_16_4[2] = { + {28, 2}, {0, 4}, }; -static arc arcs_15_5[2] = { - {27, 6}, +static arc arcs_16_5[2] = { + {29, 6}, {0, 5}, }; -static arc arcs_15_6[1] = { - {26, 7}, +static arc arcs_16_6[1] = { + {28, 7}, }; -static arc arcs_15_7[2] = { - {27, 8}, +static arc arcs_16_7[2] = { + {29, 8}, {0, 7}, }; -static arc arcs_15_8[2] = { - {26, 7}, +static arc arcs_16_8[2] = { + {28, 7}, {0, 8}, }; -static state states_15[9] = { - {1, arcs_15_0}, - {3, arcs_15_1}, - {2, arcs_15_2}, - {1, arcs_15_3}, - {2, arcs_15_4}, - {2, arcs_15_5}, - {1, arcs_15_6}, - {2, arcs_15_7}, - {2, arcs_15_8}, -}; -static arc arcs_16_0[1] = { - {58, 1}, -}; -static arc arcs_16_1[1] = { - {59, 2}, -}; -static arc arcs_16_2[1] = { - {0, 2}, -}; -static state states_16[3] = { +static state states_16[9] = { {1, arcs_16_0}, - {1, arcs_16_1}, - {1, arcs_16_2}, + {3, arcs_16_1}, + {2, arcs_16_2}, + {1, arcs_16_3}, + {2, arcs_16_4}, + {2, arcs_16_5}, + {1, arcs_16_6}, + {2, arcs_16_7}, + {2, arcs_16_8}, }; static arc arcs_17_0[1] = { {60, 1}, }; static arc arcs_17_1[1] = { - {0, 1}, + {61, 2}, }; -static state states_17[2] = { +static arc arcs_17_2[1] = { + {0, 2}, +}; +static state states_17[3] = { {1, arcs_17_0}, {1, arcs_17_1}, + {1, arcs_17_2}, }; -static arc arcs_18_0[5] = { - {61, 1}, +static arc arcs_18_0[1] = { {62, 1}, - {63, 1}, - {64, 1}, - {65, 1}, }; static arc arcs_18_1[1] = { {0, 1}, }; static state states_18[2] = { - {5, arcs_18_0}, + {1, arcs_18_0}, {1, arcs_18_1}, }; -static arc arcs_19_0[1] = { +static arc arcs_19_0[5] = { + {63, 1}, + {64, 1}, + {65, 1}, {66, 1}, + {67, 1}, }; static arc arcs_19_1[1] = { {0, 1}, }; static state states_19[2] = { - {1, arcs_19_0}, + {5, arcs_19_0}, {1, arcs_19_1}, }; static arc arcs_20_0[1] = { - {67, 1}, + {68, 1}, }; static arc arcs_20_1[1] = { {0, 1}, @@ -427,155 +427,146 @@ {1, arcs_20_1}, }; static arc arcs_21_0[1] = { - {68, 1}, + {69, 1}, }; -static arc arcs_21_1[2] = { - {9, 2}, +static arc arcs_21_1[1] = { {0, 1}, }; -static arc arcs_21_2[1] = { - {0, 2}, -}; -static state states_21[3] = { +static state states_21[2] = { {1, arcs_21_0}, - {2, arcs_21_1}, - {1, arcs_21_2}, + {1, arcs_21_1}, }; static arc arcs_22_0[1] = { - {43, 1}, + {70, 1}, }; -static arc arcs_22_1[1] = { +static arc arcs_22_1[2] = { + {9, 2}, {0, 1}, }; -static state states_22[2] = { +static arc arcs_22_2[1] = { + {0, 2}, +}; +static state states_22[3] = { {1, arcs_22_0}, - {1, arcs_22_1}, + {2, arcs_22_1}, + {1, arcs_22_2}, }; static arc arcs_23_0[1] = { - {69, 1}, + {45, 1}, }; -static arc arcs_23_1[2] = { - {26, 2}, +static arc arcs_23_1[1] = { {0, 1}, }; -static arc arcs_23_2[2] = { - {27, 3}, +static state states_23[2] = { + {1, arcs_23_0}, + {1, arcs_23_1}, +}; +static arc arcs_24_0[1] = { + {71, 1}, +}; +static arc arcs_24_1[2] = { + {28, 2}, + {0, 1}, +}; +static arc arcs_24_2[2] = { + {29, 3}, {0, 2}, }; -static arc arcs_23_3[1] = { - {26, 4}, +static arc arcs_24_3[1] = { + {28, 4}, }; -static arc arcs_23_4[2] = { - {27, 5}, +static arc arcs_24_4[2] = { + {29, 5}, {0, 4}, }; -static arc arcs_23_5[1] = { - {26, 6}, +static arc arcs_24_5[1] = { + {28, 6}, }; -static arc arcs_23_6[1] = { +static arc arcs_24_6[1] = { {0, 6}, }; -static state states_23[7] = { - {1, arcs_23_0}, - {2, arcs_23_1}, - {2, arcs_23_2}, - {1, arcs_23_3}, - {2, arcs_23_4}, - {1, arcs_23_5}, - {1, arcs_23_6}, +static state states_24[7] = { + {1, arcs_24_0}, + {2, arcs_24_1}, + {2, arcs_24_2}, + {1, arcs_24_3}, + {2, arcs_24_4}, + {1, arcs_24_5}, + {1, arcs_24_6}, }; -static arc arcs_24_0[2] = { - {70, 1}, - {71, 1}, +static arc arcs_25_0[2] = { + {72, 1}, + {73, 1}, }; -static arc arcs_24_1[1] = { +static arc arcs_25_1[1] = { {0, 1}, }; -static state states_24[2] = { - {2, arcs_24_0}, - {1, arcs_24_1}, +static state states_25[2] = { + {2, arcs_25_0}, + {1, arcs_25_1}, }; -static arc arcs_25_0[1] = { - {72, 1}, +static arc arcs_26_0[1] = { + {74, 1}, }; -static arc arcs_25_1[1] = { - {73, 2}, +static arc arcs_26_1[1] = { + {75, 2}, }; -static arc arcs_25_2[1] = { +static arc arcs_26_2[1] = { {0, 2}, }; -static state states_25[3] = { - {1, arcs_25_0}, - {1, arcs_25_1}, - {1, arcs_25_2}, +static state states_26[3] = { + {1, arcs_26_0}, + {1, arcs_26_1}, + {1, arcs_26_2}, }; -static arc arcs_26_0[1] = { - {74, 1}, +static arc arcs_27_0[1] = { + {76, 1}, }; -static arc arcs_26_1[2] = { - {75, 2}, +static arc arcs_27_1[2] = { + {77, 2}, {12, 3}, }; -static arc arcs_26_2[3] = { - {75, 2}, +static arc arcs_27_2[3] = { + {77, 2}, {12, 3}, - {72, 4}, + {74, 4}, }; -static arc arcs_26_3[1] = { - {72, 4}, +static arc arcs_27_3[1] = { + {74, 4}, }; -static arc arcs_26_4[3] = { - {28, 5}, +static arc arcs_27_4[3] = { + {30, 5}, {13, 6}, - {76, 5}, + {78, 5}, }; -static arc arcs_26_5[1] = { +static arc arcs_27_5[1] = { {0, 5}, }; -static arc arcs_26_6[1] = { - {76, 7}, +static arc arcs_27_6[1] = { + {78, 7}, }; -static arc arcs_26_7[1] = { +static arc arcs_27_7[1] = { {15, 5}, }; -static state states_26[8] = { - {1, arcs_26_0}, - {2, arcs_26_1}, - {3, arcs_26_2}, - {1, arcs_26_3}, - {3, arcs_26_4}, - {1, arcs_26_5}, - {1, arcs_26_6}, - {1, arcs_26_7}, -}; -static arc arcs_27_0[1] = { - {19, 1}, -}; -static arc arcs_27_1[2] = { - {78, 2}, - {0, 1}, -}; -static arc arcs_27_2[1] = { - {19, 3}, -}; -static arc arcs_27_3[1] = { - {0, 3}, -}; -static state states_27[4] = { +static state states_27[8] = { {1, arcs_27_0}, {2, arcs_27_1}, - {1, arcs_27_2}, + {3, arcs_27_2}, {1, arcs_27_3}, + {3, arcs_27_4}, + {1, arcs_27_5}, + {1, arcs_27_6}, + {1, arcs_27_7}, }; static arc arcs_28_0[1] = { - {12, 1}, + {21, 1}, }; static arc arcs_28_1[2] = { - {78, 2}, + {80, 2}, {0, 1}, }; static arc arcs_28_2[1] = { - {19, 3}, + {21, 3}, }; static arc arcs_28_3[1] = { {0, 3}, @@ -587,37 +578,45 @@ {1, arcs_28_3}, }; static arc arcs_29_0[1] = { - {77, 1}, + {12, 1}, }; static arc arcs_29_1[2] = { - {27, 2}, + {80, 2}, {0, 1}, }; -static arc arcs_29_2[2] = { - {77, 1}, - {0, 2}, +static arc arcs_29_2[1] = { + {21, 3}, }; -static state states_29[3] = { +static arc arcs_29_3[1] = { + {0, 3}, +}; +static state states_29[4] = { {1, arcs_29_0}, {2, arcs_29_1}, - {2, arcs_29_2}, + {1, arcs_29_2}, + {1, arcs_29_3}, }; static arc arcs_30_0[1] = { {79, 1}, }; static arc arcs_30_1[2] = { - {27, 0}, + {29, 2}, {0, 1}, }; -static state states_30[2] = { +static arc arcs_30_2[2] = { + {79, 1}, + {0, 2}, +}; +static state states_30[3] = { {1, arcs_30_0}, {2, arcs_30_1}, + {2, arcs_30_2}, }; static arc arcs_31_0[1] = { - {19, 1}, + {81, 1}, }; static arc arcs_31_1[2] = { - {75, 0}, + {29, 0}, {0, 1}, }; static state states_31[2] = { @@ -625,148 +624,125 @@ {2, arcs_31_1}, }; static arc arcs_32_0[1] = { - {80, 1}, + {21, 1}, }; -static arc arcs_32_1[1] = { - {19, 2}, +static arc arcs_32_1[2] = { + {77, 0}, + {0, 1}, }; -static arc arcs_32_2[2] = { - {27, 1}, - {0, 2}, -}; -static state states_32[3] = { +static state states_32[2] = { {1, arcs_32_0}, - {1, arcs_32_1}, - {2, arcs_32_2}, + {2, arcs_32_1}, }; static arc arcs_33_0[1] = { - {81, 1}, + {82, 1}, }; static arc arcs_33_1[1] = { - {82, 2}, + {21, 2}, }; static arc arcs_33_2[2] = { - {83, 3}, + {29, 1}, {0, 2}, }; -static arc arcs_33_3[1] = { - {26, 4}, -}; -static arc arcs_33_4[2] = { - {27, 5}, - {0, 4}, -}; -static arc arcs_33_5[1] = { - {26, 6}, -}; -static arc arcs_33_6[1] = { - {0, 6}, -}; -static state states_33[7] = { +static state states_33[3] = { {1, arcs_33_0}, {1, arcs_33_1}, {2, arcs_33_2}, - {1, arcs_33_3}, - {2, arcs_33_4}, - {1, arcs_33_5}, - {1, arcs_33_6}, }; static arc arcs_34_0[1] = { - {84, 1}, + {83, 1}, }; static arc arcs_34_1[1] = { - {26, 2}, + {84, 2}, }; static arc arcs_34_2[2] = { - {27, 3}, + {85, 3}, {0, 2}, }; static arc arcs_34_3[1] = { - {26, 4}, + {28, 4}, }; -static arc arcs_34_4[1] = { +static arc arcs_34_4[2] = { + {29, 5}, {0, 4}, }; -static state states_34[5] = { +static arc arcs_34_5[1] = { + {28, 6}, +}; +static arc arcs_34_6[1] = { + {0, 6}, +}; +static state states_34[7] = { {1, arcs_34_0}, {1, arcs_34_1}, {2, arcs_34_2}, {1, arcs_34_3}, - {1, arcs_34_4}, + {2, arcs_34_4}, + {1, arcs_34_5}, + {1, arcs_34_6}, }; -static arc arcs_35_0[7] = { - {85, 1}, +static arc arcs_35_0[1] = { {86, 1}, - {87, 1}, - {88, 1}, - {89, 1}, - {17, 1}, - {90, 1}, }; static arc arcs_35_1[1] = { - {0, 1}, + {28, 2}, }; -static state states_35[2] = { - {7, arcs_35_0}, - {1, arcs_35_1}, +static arc arcs_35_2[2] = { + {29, 3}, + {0, 2}, }; -static arc arcs_36_0[1] = { - {91, 1}, +static arc arcs_35_3[1] = { + {28, 4}, }; -static arc arcs_36_1[1] = { - {26, 2}, -}; -static arc arcs_36_2[1] = { - {21, 3}, -}; -static arc arcs_36_3[1] = { - {22, 4}, -}; -static arc arcs_36_4[3] = { - {92, 1}, - {93, 5}, +static arc arcs_35_4[1] = { {0, 4}, }; -static arc arcs_36_5[1] = { - {21, 6}, +static state states_35[5] = { + {1, arcs_35_0}, + {1, arcs_35_1}, + {2, arcs_35_2}, + {1, arcs_35_3}, + {1, arcs_35_4}, }; -static arc arcs_36_6[1] = { - {22, 7}, +static arc arcs_36_0[8] = { + {87, 1}, + {88, 1}, + {89, 1}, + {90, 1}, + {91, 1}, + {19, 1}, + {18, 1}, + {17, 1}, }; -static arc arcs_36_7[1] = { - {0, 7}, +static arc arcs_36_1[1] = { + {0, 1}, }; -static state states_36[8] = { - {1, arcs_36_0}, +static state states_36[2] = { + {8, arcs_36_0}, {1, arcs_36_1}, - {1, arcs_36_2}, - {1, arcs_36_3}, - {3, arcs_36_4}, - {1, arcs_36_5}, - {1, arcs_36_6}, - {1, arcs_36_7}, }; static arc arcs_37_0[1] = { - {94, 1}, + {92, 1}, }; static arc arcs_37_1[1] = { - {26, 2}, + {28, 2}, }; static arc arcs_37_2[1] = { - {21, 3}, + {23, 3}, }; static arc arcs_37_3[1] = { - {22, 4}, + {24, 4}, }; -static arc arcs_37_4[2] = { - {93, 5}, +static arc arcs_37_4[3] = { + {93, 1}, + {94, 5}, {0, 4}, }; static arc arcs_37_5[1] = { - {21, 6}, + {23, 6}, }; static arc arcs_37_6[1] = { - {22, 7}, + {24, 7}, }; static arc arcs_37_7[1] = { {0, 7}, @@ -776,7 +752,7 @@ {1, arcs_37_1}, {1, arcs_37_2}, {1, arcs_37_3}, - {2, arcs_37_4}, + {3, arcs_37_4}, {1, arcs_37_5}, {1, arcs_37_6}, {1, arcs_37_7}, @@ -785,373 +761,397 @@ {95, 1}, }; static arc arcs_38_1[1] = { - {59, 2}, + {28, 2}, }; static arc arcs_38_2[1] = { - {83, 3}, + {23, 3}, }; static arc arcs_38_3[1] = { - {9, 4}, + {24, 4}, }; -static arc arcs_38_4[1] = { - {21, 5}, +static arc arcs_38_4[2] = { + {94, 5}, + {0, 4}, }; static arc arcs_38_5[1] = { - {22, 6}, + {23, 6}, }; -static arc arcs_38_6[2] = { - {93, 7}, - {0, 6}, +static arc arcs_38_6[1] = { + {24, 7}, }; static arc arcs_38_7[1] = { - {21, 8}, + {0, 7}, }; -static arc arcs_38_8[1] = { - {22, 9}, -}; -static arc arcs_38_9[1] = { - {0, 9}, -}; -static state states_38[10] = { +static state states_38[8] = { {1, arcs_38_0}, {1, arcs_38_1}, {1, arcs_38_2}, {1, arcs_38_3}, - {1, arcs_38_4}, + {2, arcs_38_4}, {1, arcs_38_5}, - {2, arcs_38_6}, + {1, arcs_38_6}, {1, arcs_38_7}, - {1, arcs_38_8}, - {1, arcs_38_9}, }; static arc arcs_39_0[1] = { {96, 1}, }; static arc arcs_39_1[1] = { - {21, 2}, + {61, 2}, }; static arc arcs_39_2[1] = { - {22, 3}, + {85, 3}, }; -static arc arcs_39_3[2] = { - {97, 4}, - {98, 5}, +static arc arcs_39_3[1] = { + {9, 4}, }; static arc arcs_39_4[1] = { - {21, 6}, + {23, 5}, }; static arc arcs_39_5[1] = { - {21, 7}, + {24, 6}, }; -static arc arcs_39_6[1] = { - {22, 8}, +static arc arcs_39_6[2] = { + {94, 7}, + {0, 6}, }; static arc arcs_39_7[1] = { - {22, 9}, + {23, 8}, }; -static arc arcs_39_8[4] = { - {97, 4}, - {93, 10}, - {98, 5}, - {0, 8}, +static arc arcs_39_8[1] = { + {24, 9}, }; static arc arcs_39_9[1] = { {0, 9}, }; -static arc arcs_39_10[1] = { - {21, 11}, -}; -static arc arcs_39_11[1] = { - {22, 12}, -}; -static arc arcs_39_12[2] = { - {98, 5}, - {0, 12}, -}; -static state states_39[13] = { +static state states_39[10] = { {1, arcs_39_0}, {1, arcs_39_1}, {1, arcs_39_2}, - {2, arcs_39_3}, + {1, arcs_39_3}, {1, arcs_39_4}, {1, arcs_39_5}, - {1, arcs_39_6}, + {2, arcs_39_6}, {1, arcs_39_7}, - {4, arcs_39_8}, + {1, arcs_39_8}, {1, arcs_39_9}, - {1, arcs_39_10}, - {1, arcs_39_11}, - {2, arcs_39_12}, }; static arc arcs_40_0[1] = { - {99, 1}, + {97, 1}, }; static arc arcs_40_1[1] = { - {26, 2}, + {23, 2}, }; -static arc arcs_40_2[2] = { - {100, 3}, - {21, 4}, +static arc arcs_40_2[1] = { + {24, 3}, }; -static arc arcs_40_3[1] = { - {21, 4}, +static arc arcs_40_3[2] = { + {98, 4}, + {99, 5}, }; static arc arcs_40_4[1] = { - {22, 5}, + {23, 6}, }; static arc arcs_40_5[1] = { - {0, 5}, + {23, 7}, }; -static state states_40[6] = { +static arc arcs_40_6[1] = { + {24, 8}, +}; +static arc arcs_40_7[1] = { + {24, 9}, +}; +static arc arcs_40_8[4] = { + {98, 4}, + {94, 10}, + {99, 5}, + {0, 8}, +}; +static arc arcs_40_9[1] = { + {0, 9}, +}; +static arc arcs_40_10[1] = { + {23, 11}, +}; +static arc arcs_40_11[1] = { + {24, 12}, +}; +static arc arcs_40_12[2] = { + {99, 5}, + {0, 12}, +}; +static state states_40[13] = { {1, arcs_40_0}, {1, arcs_40_1}, - {2, arcs_40_2}, - {1, arcs_40_3}, + {1, arcs_40_2}, + {2, arcs_40_3}, {1, arcs_40_4}, {1, arcs_40_5}, + {1, arcs_40_6}, + {1, arcs_40_7}, + {4, arcs_40_8}, + {1, arcs_40_9}, + {1, arcs_40_10}, + {1, arcs_40_11}, + {2, arcs_40_12}, }; static arc arcs_41_0[1] = { - {78, 1}, + {100, 1}, }; static arc arcs_41_1[1] = { - {82, 2}, + {28, 2}, }; -static arc arcs_41_2[1] = { - {0, 2}, +static arc arcs_41_2[2] = { + {101, 3}, + {23, 4}, }; -static state states_41[3] = { +static arc arcs_41_3[1] = { + {23, 4}, +}; +static arc arcs_41_4[1] = { + {24, 5}, +}; +static arc arcs_41_5[1] = { + {0, 5}, +}; +static state states_41[6] = { {1, arcs_41_0}, {1, arcs_41_1}, - {1, arcs_41_2}, + {2, arcs_41_2}, + {1, arcs_41_3}, + {1, arcs_41_4}, + {1, arcs_41_5}, }; static arc arcs_42_0[1] = { - {101, 1}, + {80, 1}, }; -static arc arcs_42_1[2] = { - {26, 2}, - {0, 1}, +static arc arcs_42_1[1] = { + {84, 2}, }; -static arc arcs_42_2[3] = { - {78, 3}, - {27, 3}, +static arc arcs_42_2[1] = { {0, 2}, }; -static arc arcs_42_3[1] = { - {26, 4}, -}; -static arc arcs_42_4[1] = { - {0, 4}, -}; -static state states_42[5] = { +static state states_42[3] = { {1, arcs_42_0}, - {2, arcs_42_1}, - {3, arcs_42_2}, - {1, arcs_42_3}, - {1, arcs_42_4}, + {1, arcs_42_1}, + {1, arcs_42_2}, }; -static arc arcs_43_0[2] = { - {3, 1}, - {2, 2}, +static arc arcs_43_0[1] = { + {102, 1}, }; -static arc arcs_43_1[1] = { +static arc arcs_43_1[2] = { + {28, 2}, {0, 1}, }; -static arc arcs_43_2[1] = { - {102, 3}, +static arc arcs_43_2[3] = { + {80, 3}, + {29, 3}, + {0, 2}, }; static arc arcs_43_3[1] = { - {6, 4}, + {28, 4}, }; -static arc arcs_43_4[2] = { - {6, 4}, - {103, 1}, +static arc arcs_43_4[1] = { + {0, 4}, }; static state states_43[5] = { - {2, arcs_43_0}, - {1, arcs_43_1}, - {1, arcs_43_2}, + {1, arcs_43_0}, + {2, arcs_43_1}, + {3, arcs_43_2}, {1, arcs_43_3}, - {2, arcs_43_4}, + {1, arcs_43_4}, }; -static arc arcs_44_0[1] = { - {105, 1}, +static arc arcs_44_0[2] = { + {3, 1}, + {2, 2}, }; -static arc arcs_44_1[2] = { - {27, 2}, +static arc arcs_44_1[1] = { {0, 1}, }; static arc arcs_44_2[1] = { - {105, 3}, + {103, 3}, }; -static arc arcs_44_3[2] = { - {27, 4}, - {0, 3}, +static arc arcs_44_3[1] = { + {6, 4}, }; static arc arcs_44_4[2] = { - {105, 3}, - {0, 4}, + {6, 4}, + {104, 1}, }; static state states_44[5] = { - {1, arcs_44_0}, - {2, arcs_44_1}, + {2, arcs_44_0}, + {1, arcs_44_1}, {1, arcs_44_2}, - {2, arcs_44_3}, + {1, arcs_44_3}, {2, arcs_44_4}, }; -static arc arcs_45_0[2] = { +static arc arcs_45_0[1] = { {106, 1}, - {107, 1}, }; -static arc arcs_45_1[1] = { +static arc arcs_45_1[2] = { + {29, 2}, {0, 1}, }; -static state states_45[2] = { - {2, arcs_45_0}, - {1, arcs_45_1}, +static arc arcs_45_2[1] = { + {106, 3}, }; -static arc arcs_46_0[1] = { - {108, 1}, +static arc arcs_45_3[2] = { + {29, 4}, + {0, 3}, }; -static arc arcs_46_1[2] = { - {23, 2}, - {21, 3}, +static arc arcs_45_4[2] = { + {106, 3}, + {0, 4}, }; -static arc arcs_46_2[1] = { - {21, 3}, +static state states_45[5] = { + {1, arcs_45_0}, + {2, arcs_45_1}, + {1, arcs_45_2}, + {2, arcs_45_3}, + {2, arcs_45_4}, }; -static arc arcs_46_3[1] = { - {105, 4}, +static arc arcs_46_0[2] = { + {107, 1}, + {108, 1}, }; -static arc arcs_46_4[1] = { - {0, 4}, +static arc arcs_46_1[1] = { + {0, 1}, }; -static state states_46[5] = { - {1, arcs_46_0}, - {2, arcs_46_1}, - {1, arcs_46_2}, - {1, arcs_46_3}, - {1, arcs_46_4}, +static state states_46[2] = { + {2, arcs_46_0}, + {1, arcs_46_1}, }; -static arc arcs_47_0[2] = { - {106, 1}, - {109, 2}, +static arc arcs_47_0[1] = { + {109, 1}, }; static arc arcs_47_1[2] = { - {91, 3}, - {0, 1}, + {25, 2}, + {23, 3}, }; static arc arcs_47_2[1] = { - {0, 2}, + {23, 3}, }; static arc arcs_47_3[1] = { {106, 4}, }; static arc arcs_47_4[1] = { - {93, 5}, + {0, 4}, }; -static arc arcs_47_5[1] = { - {26, 2}, -}; -static state states_47[6] = { - {2, arcs_47_0}, +static state states_47[5] = { + {1, arcs_47_0}, {2, arcs_47_1}, {1, arcs_47_2}, {1, arcs_47_3}, {1, arcs_47_4}, - {1, arcs_47_5}, }; -static arc arcs_48_0[1] = { - {110, 1}, +static arc arcs_48_0[2] = { + {107, 1}, + {110, 2}, }; static arc arcs_48_1[2] = { - {111, 0}, + {92, 3}, {0, 1}, }; -static state states_48[2] = { - {1, arcs_48_0}, +static arc arcs_48_2[1] = { + {0, 2}, +}; +static arc arcs_48_3[1] = { + {107, 4}, +}; +static arc arcs_48_4[1] = { + {94, 5}, +}; +static arc arcs_48_5[1] = { + {28, 2}, +}; +static state states_48[6] = { + {2, arcs_48_0}, {2, arcs_48_1}, + {1, arcs_48_2}, + {1, arcs_48_3}, + {1, arcs_48_4}, + {1, arcs_48_5}, }; static arc arcs_49_0[1] = { - {112, 1}, + {111, 1}, }; static arc arcs_49_1[2] = { - {113, 0}, + {112, 0}, {0, 1}, }; static state states_49[2] = { {1, arcs_49_0}, {2, arcs_49_1}, }; -static arc arcs_50_0[2] = { - {114, 1}, - {115, 2}, +static arc arcs_50_0[1] = { + {113, 1}, }; -static arc arcs_50_1[1] = { - {112, 2}, +static arc arcs_50_1[2] = { + {114, 0}, + {0, 1}, }; -static arc arcs_50_2[1] = { +static state states_50[2] = { + {1, arcs_50_0}, + {2, arcs_50_1}, +}; +static arc arcs_51_0[2] = { + {115, 1}, + {116, 2}, +}; +static arc arcs_51_1[1] = { + {113, 2}, +}; +static arc arcs_51_2[1] = { {0, 2}, }; -static state states_50[3] = { - {2, arcs_50_0}, - {1, arcs_50_1}, - {1, arcs_50_2}, +static state states_51[3] = { + {2, arcs_51_0}, + {1, arcs_51_1}, + {1, arcs_51_2}, }; -static arc arcs_51_0[1] = { - {82, 1}, +static arc arcs_52_0[1] = { + {84, 1}, }; -static arc arcs_51_1[2] = { - {116, 0}, +static arc arcs_52_1[2] = { + {117, 0}, {0, 1}, }; -static state states_51[2] = { - {1, arcs_51_0}, - {2, arcs_51_1}, +static state states_52[2] = { + {1, arcs_52_0}, + {2, arcs_52_1}, }; -static arc arcs_52_0[10] = { - {117, 1}, +static arc arcs_53_0[10] = { {118, 1}, {119, 1}, {120, 1}, {121, 1}, {122, 1}, {123, 1}, - {83, 1}, - {114, 2}, - {124, 3}, + {124, 1}, + {85, 1}, + {115, 2}, + {125, 3}, }; -static arc arcs_52_1[1] = { +static arc arcs_53_1[1] = { {0, 1}, }; -static arc arcs_52_2[1] = { - {83, 1}, +static arc arcs_53_2[1] = { + {85, 1}, }; -static arc arcs_52_3[2] = { - {114, 1}, +static arc arcs_53_3[2] = { + {115, 1}, {0, 3}, }; -static state states_52[4] = { - {10, arcs_52_0}, - {1, arcs_52_1}, - {1, arcs_52_2}, - {2, arcs_52_3}, +static state states_53[4] = { + {10, arcs_53_0}, + {1, arcs_53_1}, + {1, arcs_53_2}, + {2, arcs_53_3}, }; -static arc arcs_53_0[1] = { - {125, 1}, -}; -static arc arcs_53_1[2] = { - {126, 0}, - {0, 1}, -}; -static state states_53[2] = { - {1, arcs_53_0}, - {2, arcs_53_1}, -}; static arc arcs_54_0[1] = { - {127, 1}, + {126, 1}, }; static arc arcs_54_1[2] = { - {128, 0}, + {127, 0}, {0, 1}, }; static state states_54[2] = { @@ -1159,10 +1159,10 @@ {2, arcs_54_1}, }; static arc arcs_55_0[1] = { - {129, 1}, + {128, 1}, }; static arc arcs_55_1[2] = { - {130, 0}, + {129, 0}, {0, 1}, }; static state states_55[2] = { @@ -1170,23 +1170,22 @@ {2, arcs_55_1}, }; static arc arcs_56_0[1] = { - {131, 1}, + {130, 1}, }; -static arc arcs_56_1[3] = { - {132, 0}, - {57, 0}, +static arc arcs_56_1[2] = { + {131, 0}, {0, 1}, }; static state states_56[2] = { {1, arcs_56_0}, - {3, arcs_56_1}, + {2, arcs_56_1}, }; static arc arcs_57_0[1] = { - {133, 1}, + {132, 1}, }; static arc arcs_57_1[3] = { - {134, 0}, - {135, 0}, + {133, 0}, + {59, 0}, {0, 1}, }; static state states_57[2] = { @@ -1194,156 +1193,142 @@ {3, arcs_57_1}, }; static arc arcs_58_0[1] = { - {136, 1}, + {134, 1}, }; -static arc arcs_58_1[5] = { - {28, 0}, - {137, 0}, - {138, 0}, - {139, 0}, +static arc arcs_58_1[3] = { + {135, 0}, + {136, 0}, {0, 1}, }; static state states_58[2] = { {1, arcs_58_0}, - {5, arcs_58_1}, + {3, arcs_58_1}, }; -static arc arcs_59_0[4] = { - {134, 1}, +static arc arcs_59_0[1] = { + {137, 1}, +}; +static arc arcs_59_1[5] = { + {30, 0}, + {138, 0}, + {139, 0}, + {140, 0}, + {0, 1}, +}; +static state states_59[2] = { + {1, arcs_59_0}, + {5, arcs_59_1}, +}; +static arc arcs_60_0[4] = { {135, 1}, - {140, 1}, - {141, 2}, + {136, 1}, + {141, 1}, + {142, 2}, }; -static arc arcs_59_1[1] = { - {136, 2}, +static arc arcs_60_1[1] = { + {137, 2}, }; -static arc arcs_59_2[1] = { +static arc arcs_60_2[1] = { {0, 2}, }; -static state states_59[3] = { - {4, arcs_59_0}, - {1, arcs_59_1}, - {1, arcs_59_2}, +static state states_60[3] = { + {4, arcs_60_0}, + {1, arcs_60_1}, + {1, arcs_60_2}, }; -static arc arcs_60_0[1] = { - {142, 1}, +static arc arcs_61_0[1] = { + {143, 1}, }; -static arc arcs_60_1[3] = { - {143, 1}, - {29, 2}, +static arc arcs_61_1[3] = { + {144, 1}, + {31, 2}, {0, 1}, }; -static arc arcs_60_2[1] = { - {136, 3}, +static arc arcs_61_2[1] = { + {137, 3}, }; -static arc arcs_60_3[1] = { +static arc arcs_61_3[1] = { {0, 3}, }; -static state states_60[4] = { - {1, arcs_60_0}, - {3, arcs_60_1}, - {1, arcs_60_2}, - {1, arcs_60_3}, +static state states_61[4] = { + {1, arcs_61_0}, + {3, arcs_61_1}, + {1, arcs_61_2}, + {1, arcs_61_3}, }; -static arc arcs_61_0[7] = { +static arc arcs_62_0[7] = { {13, 1}, - {145, 2}, - {148, 3}, - {151, 4}, - {19, 5}, - {153, 5}, - {154, 6}, + {146, 2}, + {149, 3}, + {152, 4}, + {21, 5}, + {154, 5}, + {155, 6}, }; -static arc arcs_61_1[3] = { - {43, 7}, - {144, 7}, +static arc arcs_62_1[3] = { + {45, 7}, + {145, 7}, {15, 5}, }; -static arc arcs_61_2[2] = { - {146, 8}, - {147, 5}, +static arc arcs_62_2[2] = { + {147, 8}, + {148, 5}, }; -static arc arcs_61_3[2] = { - {149, 9}, - {150, 5}, +static arc arcs_62_3[2] = { + {150, 9}, + {151, 5}, }; -static arc arcs_61_4[1] = { - {152, 10}, +static arc arcs_62_4[1] = { + {153, 10}, }; -static arc arcs_61_5[1] = { +static arc arcs_62_5[1] = { {0, 5}, }; -static arc arcs_61_6[2] = { - {154, 6}, +static arc arcs_62_6[2] = { + {155, 6}, {0, 6}, }; -static arc arcs_61_7[1] = { +static arc arcs_62_7[1] = { {15, 5}, }; -static arc arcs_61_8[1] = { - {147, 5}, +static arc arcs_62_8[1] = { + {148, 5}, }; -static arc arcs_61_9[1] = { - {150, 5}, -}; -static arc arcs_61_10[1] = { +static arc arcs_62_9[1] = { {151, 5}, }; -static state states_61[11] = { - {7, arcs_61_0}, - {3, arcs_61_1}, - {2, arcs_61_2}, - {2, arcs_61_3}, - {1, arcs_61_4}, - {1, arcs_61_5}, - {2, arcs_61_6}, - {1, arcs_61_7}, - {1, arcs_61_8}, - {1, arcs_61_9}, - {1, arcs_61_10}, +static arc arcs_62_10[1] = { + {152, 5}, }; -static arc arcs_62_0[1] = { - {26, 1}, -}; -static arc arcs_62_1[3] = { - {155, 2}, - {27, 3}, - {0, 1}, -}; -static arc arcs_62_2[1] = { - {0, 2}, -}; -static arc arcs_62_3[2] = { - {26, 4}, - {0, 3}, -}; -static arc arcs_62_4[2] = { - {27, 3}, - {0, 4}, -}; -static state states_62[5] = { - {1, arcs_62_0}, +static state states_62[11] = { + {7, arcs_62_0}, {3, arcs_62_1}, - {1, arcs_62_2}, + {2, arcs_62_2}, {2, arcs_62_3}, - {2, arcs_62_4}, + {1, arcs_62_4}, + {1, arcs_62_5}, + {2, arcs_62_6}, + {1, arcs_62_7}, + {1, arcs_62_8}, + {1, arcs_62_9}, + {1, arcs_62_10}, }; static arc arcs_63_0[1] = { - {26, 1}, + {28, 1}, }; static arc arcs_63_1[3] = { {156, 2}, - {27, 3}, + {29, 3}, {0, 1}, }; static arc arcs_63_2[1] = { {0, 2}, }; static arc arcs_63_3[2] = { - {26, 4}, + {28, 4}, {0, 3}, }; static arc arcs_63_4[2] = { - {27, 3}, + {29, 3}, {0, 4}, }; static state states_63[5] = { @@ -1354,153 +1339,163 @@ {2, arcs_63_4}, }; static arc arcs_64_0[1] = { - {108, 1}, + {28, 1}, }; -static arc arcs_64_1[2] = { - {23, 2}, - {21, 3}, +static arc arcs_64_1[3] = { + {157, 2}, + {29, 3}, + {0, 1}, }; static arc arcs_64_2[1] = { - {21, 3}, + {0, 2}, }; -static arc arcs_64_3[1] = { - {26, 4}, +static arc arcs_64_3[2] = { + {28, 4}, + {0, 3}, }; -static arc arcs_64_4[1] = { +static arc arcs_64_4[2] = { + {29, 3}, {0, 4}, }; static state states_64[5] = { {1, arcs_64_0}, - {2, arcs_64_1}, + {3, arcs_64_1}, {1, arcs_64_2}, - {1, arcs_64_3}, - {1, arcs_64_4}, + {2, arcs_64_3}, + {2, arcs_64_4}, }; -static arc arcs_65_0[3] = { - {13, 1}, - {145, 2}, - {75, 3}, +static arc arcs_65_0[1] = { + {109, 1}, }; static arc arcs_65_1[2] = { - {14, 4}, - {15, 5}, + {25, 2}, + {23, 3}, }; static arc arcs_65_2[1] = { - {157, 6}, + {23, 3}, }; static arc arcs_65_3[1] = { - {19, 5}, + {28, 4}, }; static arc arcs_65_4[1] = { - {15, 5}, + {0, 4}, }; -static arc arcs_65_5[1] = { - {0, 5}, -}; -static arc arcs_65_6[1] = { - {147, 5}, -}; -static state states_65[7] = { - {3, arcs_65_0}, +static state states_65[5] = { + {1, arcs_65_0}, {2, arcs_65_1}, {1, arcs_65_2}, {1, arcs_65_3}, {1, arcs_65_4}, - {1, arcs_65_5}, - {1, arcs_65_6}, }; -static arc arcs_66_0[1] = { - {158, 1}, +static arc arcs_66_0[3] = { + {13, 1}, + {146, 2}, + {77, 3}, }; static arc arcs_66_1[2] = { - {27, 2}, - {0, 1}, + {14, 4}, + {15, 5}, }; -static arc arcs_66_2[2] = { - {158, 1}, - {0, 2}, +static arc arcs_66_2[1] = { + {158, 6}, }; -static state states_66[3] = { - {1, arcs_66_0}, +static arc arcs_66_3[1] = { + {21, 5}, +}; +static arc arcs_66_4[1] = { + {15, 5}, +}; +static arc arcs_66_5[1] = { + {0, 5}, +}; +static arc arcs_66_6[1] = { + {148, 5}, +}; +static state states_66[7] = { + {3, arcs_66_0}, {2, arcs_66_1}, - {2, arcs_66_2}, + {1, arcs_66_2}, + {1, arcs_66_3}, + {1, arcs_66_4}, + {1, arcs_66_5}, + {1, arcs_66_6}, }; -static arc arcs_67_0[3] = { - {75, 1}, - {26, 2}, - {21, 3}, +static arc arcs_67_0[1] = { + {159, 1}, }; -static arc arcs_67_1[1] = { - {75, 4}, +static arc arcs_67_1[2] = { + {29, 2}, + {0, 1}, }; static arc arcs_67_2[2] = { - {21, 3}, + {159, 1}, {0, 2}, }; -static arc arcs_67_3[3] = { - {26, 5}, - {159, 6}, - {0, 3}, +static state states_67[3] = { + {1, arcs_67_0}, + {2, arcs_67_1}, + {2, arcs_67_2}, }; -static arc arcs_67_4[1] = { - {75, 6}, +static arc arcs_68_0[3] = { + {77, 1}, + {28, 2}, + {23, 3}, }; -static arc arcs_67_5[2] = { - {159, 6}, - {0, 5}, +static arc arcs_68_1[1] = { + {77, 4}, }; -static arc arcs_67_6[1] = { - {0, 6}, +static arc arcs_68_2[2] = { + {23, 3}, + {0, 2}, }; -static state states_67[7] = { - {3, arcs_67_0}, - {1, arcs_67_1}, - {2, arcs_67_2}, - {3, arcs_67_3}, - {1, arcs_67_4}, - {2, arcs_67_5}, - {1, arcs_67_6}, +static arc arcs_68_3[3] = { + {28, 5}, + {160, 6}, + {0, 3}, }; -static arc arcs_68_0[1] = { - {21, 1}, +static arc arcs_68_4[1] = { + {77, 6}, }; -static arc arcs_68_1[2] = { - {26, 2}, - {0, 1}, +static arc arcs_68_5[2] = { + {160, 6}, + {0, 5}, }; -static arc arcs_68_2[1] = { - {0, 2}, +static arc arcs_68_6[1] = { + {0, 6}, }; -static state states_68[3] = { - {1, arcs_68_0}, - {2, arcs_68_1}, - {1, arcs_68_2}, +static state states_68[7] = { + {3, arcs_68_0}, + {1, arcs_68_1}, + {2, arcs_68_2}, + {3, arcs_68_3}, + {1, arcs_68_4}, + {2, arcs_68_5}, + {1, arcs_68_6}, }; static arc arcs_69_0[1] = { - {82, 1}, + {23, 1}, }; static arc arcs_69_1[2] = { - {27, 2}, + {28, 2}, {0, 1}, }; -static arc arcs_69_2[2] = { - {82, 1}, +static arc arcs_69_2[1] = { {0, 2}, }; static state states_69[3] = { {1, arcs_69_0}, {2, arcs_69_1}, - {2, arcs_69_2}, + {1, arcs_69_2}, }; static arc arcs_70_0[1] = { - {26, 1}, + {84, 1}, }; static arc arcs_70_1[2] = { - {27, 2}, + {29, 2}, {0, 1}, }; static arc arcs_70_2[2] = { - {26, 1}, + {84, 1}, {0, 2}, }; static state states_70[3] = { @@ -1509,491 +1504,511 @@ {2, arcs_70_2}, }; static arc arcs_71_0[1] = { - {26, 1}, + {28, 1}, }; -static arc arcs_71_1[1] = { - {21, 2}, +static arc arcs_71_1[2] = { + {29, 2}, + {0, 1}, }; -static arc arcs_71_2[1] = { - {26, 3}, +static arc arcs_71_2[2] = { + {28, 1}, + {0, 2}, }; -static arc arcs_71_3[2] = { - {27, 4}, - {0, 3}, -}; -static arc arcs_71_4[2] = { - {26, 1}, - {0, 4}, -}; -static state states_71[5] = { +static state states_71[3] = { {1, arcs_71_0}, - {1, arcs_71_1}, - {1, arcs_71_2}, - {2, arcs_71_3}, - {2, arcs_71_4}, + {2, arcs_71_1}, + {2, arcs_71_2}, }; static arc arcs_72_0[1] = { - {160, 1}, + {28, 1}, }; static arc arcs_72_1[1] = { - {19, 2}, + {23, 2}, }; -static arc arcs_72_2[2] = { - {13, 3}, - {21, 4}, +static arc arcs_72_2[1] = { + {28, 3}, }; static arc arcs_72_3[2] = { - {9, 5}, - {15, 6}, + {29, 4}, + {0, 3}, }; -static arc arcs_72_4[1] = { - {22, 7}, +static arc arcs_72_4[2] = { + {28, 1}, + {0, 4}, }; -static arc arcs_72_5[1] = { - {15, 6}, -}; -static arc arcs_72_6[1] = { - {21, 4}, -}; -static arc arcs_72_7[1] = { - {0, 7}, -}; -static state states_72[8] = { +static state states_72[5] = { {1, arcs_72_0}, {1, arcs_72_1}, - {2, arcs_72_2}, + {1, arcs_72_2}, {2, arcs_72_3}, - {1, arcs_72_4}, - {1, arcs_72_5}, - {1, arcs_72_6}, - {1, arcs_72_7}, + {2, arcs_72_4}, }; -static arc arcs_73_0[3] = { +static arc arcs_73_0[1] = { {161, 1}, - {28, 2}, - {29, 3}, }; -static arc arcs_73_1[2] = { - {27, 4}, - {0, 1}, +static arc arcs_73_1[1] = { + {21, 2}, }; -static arc arcs_73_2[1] = { - {26, 5}, +static arc arcs_73_2[2] = { + {13, 3}, + {23, 4}, }; -static arc arcs_73_3[1] = { - {26, 6}, +static arc arcs_73_3[2] = { + {9, 5}, + {15, 6}, }; -static arc arcs_73_4[4] = { - {161, 1}, - {28, 2}, - {29, 3}, - {0, 4}, +static arc arcs_73_4[1] = { + {24, 7}, }; -static arc arcs_73_5[2] = { - {27, 7}, - {0, 5}, +static arc arcs_73_5[1] = { + {15, 6}, }; static arc arcs_73_6[1] = { - {0, 6}, + {23, 4}, }; static arc arcs_73_7[1] = { - {29, 3}, + {0, 7}, }; static state states_73[8] = { - {3, arcs_73_0}, - {2, arcs_73_1}, - {1, arcs_73_2}, - {1, arcs_73_3}, - {4, arcs_73_4}, - {2, arcs_73_5}, + {1, arcs_73_0}, + {1, arcs_73_1}, + {2, arcs_73_2}, + {2, arcs_73_3}, + {1, arcs_73_4}, + {1, arcs_73_5}, {1, arcs_73_6}, {1, arcs_73_7}, }; -static arc arcs_74_0[1] = { - {26, 1}, +static arc arcs_74_0[3] = { + {162, 1}, + {30, 2}, + {31, 3}, }; -static arc arcs_74_1[3] = { - {156, 2}, - {25, 3}, +static arc arcs_74_1[2] = { + {29, 4}, {0, 1}, }; static arc arcs_74_2[1] = { - {0, 2}, + {28, 5}, }; static arc arcs_74_3[1] = { - {26, 2}, + {28, 6}, }; -static state states_74[4] = { - {1, arcs_74_0}, - {3, arcs_74_1}, +static arc arcs_74_4[4] = { + {162, 1}, + {30, 2}, + {31, 3}, + {0, 4}, +}; +static arc arcs_74_5[2] = { + {29, 7}, + {0, 5}, +}; +static arc arcs_74_6[1] = { + {0, 6}, +}; +static arc arcs_74_7[1] = { + {31, 3}, +}; +static state states_74[8] = { + {3, arcs_74_0}, + {2, arcs_74_1}, {1, arcs_74_2}, {1, arcs_74_3}, + {4, arcs_74_4}, + {2, arcs_74_5}, + {1, arcs_74_6}, + {1, arcs_74_7}, }; -static arc arcs_75_0[2] = { - {155, 1}, - {163, 1}, +static arc arcs_75_0[1] = { + {28, 1}, }; -static arc arcs_75_1[1] = { +static arc arcs_75_1[3] = { + {157, 2}, + {27, 3}, {0, 1}, }; -static state states_75[2] = { - {2, arcs_75_0}, - {1, arcs_75_1}, +static arc arcs_75_2[1] = { + {0, 2}, }; -static arc arcs_76_0[1] = { - {95, 1}, +static arc arcs_75_3[1] = { + {28, 2}, }; -static arc arcs_76_1[1] = { - {59, 2}, +static state states_75[4] = { + {1, arcs_75_0}, + {3, arcs_75_1}, + {1, arcs_75_2}, + {1, arcs_75_3}, }; -static arc arcs_76_2[1] = { - {83, 3}, +static arc arcs_76_0[2] = { + {156, 1}, + {164, 1}, }; -static arc arcs_76_3[1] = { - {104, 4}, +static arc arcs_76_1[1] = { + {0, 1}, }; -static arc arcs_76_4[2] = { - {162, 5}, - {0, 4}, -}; -static arc arcs_76_5[1] = { - {0, 5}, -}; -static state states_76[6] = { - {1, arcs_76_0}, +static state states_76[2] = { + {2, arcs_76_0}, {1, arcs_76_1}, - {1, arcs_76_2}, - {1, arcs_76_3}, - {2, arcs_76_4}, - {1, arcs_76_5}, }; static arc arcs_77_0[1] = { - {91, 1}, + {96, 1}, }; static arc arcs_77_1[1] = { - {105, 2}, + {61, 2}, }; -static arc arcs_77_2[2] = { - {162, 3}, - {0, 2}, +static arc arcs_77_2[1] = { + {85, 3}, }; static arc arcs_77_3[1] = { - {0, 3}, + {105, 4}, }; -static state states_77[4] = { +static arc arcs_77_4[2] = { + {163, 5}, + {0, 4}, +}; +static arc arcs_77_5[1] = { + {0, 5}, +}; +static state states_77[6] = { {1, arcs_77_0}, {1, arcs_77_1}, - {2, arcs_77_2}, + {1, arcs_77_2}, {1, arcs_77_3}, + {2, arcs_77_4}, + {1, arcs_77_5}, }; -static arc arcs_78_0[2] = { - {156, 1}, - {165, 1}, +static arc arcs_78_0[1] = { + {92, 1}, }; static arc arcs_78_1[1] = { - {0, 1}, + {106, 2}, }; -static state states_78[2] = { - {2, arcs_78_0}, +static arc arcs_78_2[2] = { + {163, 3}, + {0, 2}, +}; +static arc arcs_78_3[1] = { + {0, 3}, +}; +static state states_78[4] = { + {1, arcs_78_0}, {1, arcs_78_1}, + {2, arcs_78_2}, + {1, arcs_78_3}, }; -static arc arcs_79_0[1] = { - {95, 1}, +static arc arcs_79_0[2] = { + {157, 1}, + {166, 1}, }; static arc arcs_79_1[1] = { - {59, 2}, + {0, 1}, }; -static arc arcs_79_2[1] = { - {83, 3}, -}; -static arc arcs_79_3[1] = { - {106, 4}, -}; -static arc arcs_79_4[2] = { - {164, 5}, - {0, 4}, -}; -static arc arcs_79_5[1] = { - {0, 5}, -}; -static state states_79[6] = { - {1, arcs_79_0}, +static state states_79[2] = { + {2, arcs_79_0}, {1, arcs_79_1}, - {1, arcs_79_2}, - {1, arcs_79_3}, - {2, arcs_79_4}, - {1, arcs_79_5}, }; static arc arcs_80_0[1] = { - {91, 1}, + {96, 1}, }; static arc arcs_80_1[1] = { - {105, 2}, + {61, 2}, }; -static arc arcs_80_2[2] = { - {164, 3}, - {0, 2}, +static arc arcs_80_2[1] = { + {85, 3}, }; static arc arcs_80_3[1] = { - {0, 3}, + {107, 4}, }; -static state states_80[4] = { +static arc arcs_80_4[2] = { + {165, 5}, + {0, 4}, +}; +static arc arcs_80_5[1] = { + {0, 5}, +}; +static state states_80[6] = { {1, arcs_80_0}, {1, arcs_80_1}, - {2, arcs_80_2}, + {1, arcs_80_2}, {1, arcs_80_3}, + {2, arcs_80_4}, + {1, arcs_80_5}, }; static arc arcs_81_0[1] = { - {26, 1}, + {92, 1}, }; -static arc arcs_81_1[2] = { - {27, 0}, - {0, 1}, +static arc arcs_81_1[1] = { + {106, 2}, }; -static state states_81[2] = { +static arc arcs_81_2[2] = { + {165, 3}, + {0, 2}, +}; +static arc arcs_81_3[1] = { + {0, 3}, +}; +static state states_81[4] = { {1, arcs_81_0}, - {2, arcs_81_1}, + {1, arcs_81_1}, + {2, arcs_81_2}, + {1, arcs_81_3}, }; static arc arcs_82_0[1] = { - {19, 1}, + {28, 1}, }; -static arc arcs_82_1[1] = { +static arc arcs_82_1[2] = { + {29, 0}, {0, 1}, }; static state states_82[2] = { {1, arcs_82_0}, - {1, arcs_82_1}, + {2, arcs_82_1}, }; static arc arcs_83_0[1] = { - {167, 1}, + {21, 1}, }; -static arc arcs_83_1[2] = { +static arc arcs_83_1[1] = { + {0, 1}, +}; +static state states_83[2] = { + {1, arcs_83_0}, + {1, arcs_83_1}, +}; +static arc arcs_84_0[1] = { + {168, 1}, +}; +static arc arcs_84_1[2] = { {9, 2}, {0, 1}, }; -static arc arcs_83_2[1] = { +static arc arcs_84_2[1] = { {0, 2}, }; -static state states_83[3] = { - {1, arcs_83_0}, - {2, arcs_83_1}, - {1, arcs_83_2}, +static state states_84[3] = { + {1, arcs_84_0}, + {2, arcs_84_1}, + {1, arcs_84_2}, }; -static dfa dfas[84] = { +static dfa dfas[85] = { {256, "single_input", 0, 3, states_0, - "\004\050\014\000\000\000\000\025\074\005\023\310\011\020\004\000\300\020\222\006\201"}, + "\004\050\060\000\000\000\000\124\360\024\114\220\023\040\010\000\200\041\044\015\002\001"}, {257, "file_input", 0, 2, states_1, - "\204\050\014\000\000\000\000\025\074\005\023\310\011\020\004\000\300\020\222\006\201"}, + "\204\050\060\000\000\000\000\124\360\024\114\220\023\040\010\000\200\041\044\015\002\001"}, {258, "eval_input", 0, 3, states_2, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, {259, "decorator", 0, 7, states_3, - "\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {260, "decorators", 0, 2, states_4, - "\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {261, "funcdef", 0, 7, states_5, - "\000\010\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {262, "parameters", 0, 4, states_6, - "\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {263, "varargslist", 0, 10, states_7, - "\000\040\010\060\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {264, "fpdef", 0, 4, states_8, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {265, "fplist", 0, 3, states_9, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {266, "stmt", 0, 2, states_10, - "\000\050\014\000\000\000\000\025\074\005\023\310\011\020\004\000\300\020\222\006\201"}, - {267, "simple_stmt", 0, 4, states_11, - "\000\040\010\000\000\000\000\025\074\005\023\000\000\020\004\000\300\020\222\006\200"}, - {268, "small_stmt", 0, 2, states_12, - "\000\040\010\000\000\000\000\025\074\005\023\000\000\020\004\000\300\020\222\006\200"}, - {269, "expr_stmt", 0, 6, states_13, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, - {270, "augassign", 0, 2, states_14, - "\000\000\000\000\000\360\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {271, "print_stmt", 0, 9, states_15, - "\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {272, "del_stmt", 0, 3, states_16, - "\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {273, "pass_stmt", 0, 2, states_17, - "\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {274, "flow_stmt", 0, 2, states_18, - "\000\000\000\000\000\000\000\000\074\000\000\000\000\000\000\000\000\000\000\000\200"}, - {275, "break_stmt", 0, 2, states_19, - "\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000"}, - {276, "continue_stmt", 0, 2, states_20, - "\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000"}, - {277, "return_stmt", 0, 3, states_21, - "\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000"}, - {278, "yield_stmt", 0, 2, states_22, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\200"}, - {279, "raise_stmt", 0, 7, states_23, - "\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000"}, - {280, "import_stmt", 0, 2, states_24, - "\000\000\000\000\000\000\000\000\000\005\000\000\000\000\000\000\000\000\000\000\000"}, - {281, "import_name", 0, 3, states_25, - "\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000"}, - {282, "import_from", 0, 8, states_26, - "\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000"}, - {283, "import_as_name", 0, 4, states_27, - "\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {284, "dotted_as_name", 0, 4, states_28, - "\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {285, "import_as_names", 0, 3, states_29, - "\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {286, "dotted_as_names", 0, 2, states_30, - "\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {287, "dotted_name", 0, 2, states_31, - "\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {288, "global_stmt", 0, 3, states_32, - "\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000"}, - {289, "exec_stmt", 0, 7, states_33, - "\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000"}, - {290, "assert_stmt", 0, 5, states_34, - "\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"}, - {291, "compound_stmt", 0, 2, states_35, - "\000\010\004\000\000\000\000\000\000\000\000\310\011\000\000\000\000\000\000\000\001"}, - {292, "if_stmt", 0, 8, states_36, - "\000\000\000\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000"}, - {293, "while_stmt", 0, 8, states_37, - "\000\000\000\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000"}, - {294, "for_stmt", 0, 10, states_38, - "\000\000\000\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000"}, - {295, "try_stmt", 0, 13, states_39, - "\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000"}, - {296, "with_stmt", 0, 6, states_40, - "\000\000\000\000\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000"}, - {297, "with_var", 0, 3, states_41, - "\000\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000"}, - {298, "except_clause", 0, 5, states_42, - "\000\000\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000"}, - {299, "suite", 0, 5, states_43, - "\004\040\010\000\000\000\000\025\074\005\023\000\000\020\004\000\300\020\222\006\200"}, - {300, "testlist_safe", 0, 5, states_44, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, - {301, "old_test", 0, 2, states_45, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, - {302, "old_lambdef", 0, 5, states_46, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000"}, - {303, "test", 0, 6, states_47, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, - {304, "or_test", 0, 2, states_48, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\004\000\300\020\222\006\000"}, - {305, "and_test", 0, 2, states_49, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\004\000\300\020\222\006\000"}, - {306, "not_test", 0, 3, states_50, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\004\000\300\020\222\006\000"}, - {307, "comparison", 0, 2, states_51, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"}, - {308, "comp_op", 0, 4, states_52, - "\000\000\000\000\000\000\000\000\000\000\010\000\000\000\344\037\000\000\000\000\000"}, - {309, "expr", 0, 2, states_53, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"}, - {310, "xor_expr", 0, 2, states_54, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"}, - {311, "and_expr", 0, 2, states_55, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"}, - {312, "shift_expr", 0, 2, states_56, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"}, - {313, "arith_expr", 0, 2, states_57, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"}, - {314, "term", 0, 2, states_58, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"}, - {315, "factor", 0, 3, states_59, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"}, - {316, "power", 0, 4, states_60, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\222\006\000"}, - {317, "atom", 0, 11, states_61, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\222\006\000"}, - {318, "listmaker", 0, 5, states_62, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, - {319, "testlist_gexp", 0, 5, states_63, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, - {320, "lambdef", 0, 5, states_64, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000"}, - {321, "trailer", 0, 7, states_65, - "\000\040\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\002\000\000"}, - {322, "subscriptlist", 0, 3, states_66, - "\000\040\050\000\000\000\000\000\000\010\000\000\000\020\004\000\300\020\222\006\000"}, - {323, "subscript", 0, 7, states_67, - "\000\040\050\000\000\000\000\000\000\010\000\000\000\020\004\000\300\020\222\006\000"}, - {324, "sliceop", 0, 3, states_68, - "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {325, "exprlist", 0, 3, states_69, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"}, - {326, "testlist", 0, 3, states_70, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, - {327, "dictmaker", 0, 5, states_71, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, - {328, "classdef", 0, 8, states_72, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001"}, - {329, "arglist", 0, 8, states_73, - "\000\040\010\060\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, - {330, "argument", 0, 4, states_74, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, - {331, "list_iter", 0, 2, states_75, - "\000\000\000\000\000\000\000\000\000\000\000\210\000\000\000\000\000\000\000\000\000"}, - {332, "list_for", 0, 6, states_76, - "\000\000\000\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000"}, - {333, "list_if", 0, 4, states_77, - "\000\000\000\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000"}, - {334, "gen_iter", 0, 2, states_78, - "\000\000\000\000\000\000\000\000\000\000\000\210\000\000\000\000\000\000\000\000\000"}, - {335, "gen_for", 0, 6, states_79, - "\000\000\000\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000"}, - {336, "gen_if", 0, 4, states_80, - "\000\000\000\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000"}, - {337, "testlist1", 0, 2, states_81, - "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"}, - {338, "encoding_decl", 0, 2, states_82, - "\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {339, "yield_expr", 0, 3, states_83, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\200"}, + "\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {261, "decorated", 0, 3, states_5, + "\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {262, "funcdef", 0, 6, states_6, + "\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {263, "parameters", 0, 4, states_7, + "\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {264, "varargslist", 0, 10, states_8, + "\000\040\040\300\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {265, "fpdef", 0, 4, states_9, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {266, "fplist", 0, 3, states_10, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {267, "stmt", 0, 2, states_11, + "\000\050\060\000\000\000\000\124\360\024\114\220\023\040\010\000\200\041\044\015\002\001"}, + {268, "simple_stmt", 0, 4, states_12, + "\000\040\040\000\000\000\000\124\360\024\114\000\000\040\010\000\200\041\044\015\000\001"}, + {269, "small_stmt", 0, 2, states_13, + "\000\040\040\000\000\000\000\124\360\024\114\000\000\040\010\000\200\041\044\015\000\001"}, + {270, "expr_stmt", 0, 6, states_14, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {271, "augassign", 0, 2, states_15, + "\000\000\000\000\000\300\377\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {272, "print_stmt", 0, 9, states_16, + "\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {273, "del_stmt", 0, 3, states_17, + "\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {274, "pass_stmt", 0, 2, states_18, + "\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {275, "flow_stmt", 0, 2, states_19, + "\000\000\000\000\000\000\000\000\360\000\000\000\000\000\000\000\000\000\000\000\000\001"}, + {276, "break_stmt", 0, 2, states_20, + "\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {277, "continue_stmt", 0, 2, states_21, + "\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {278, "return_stmt", 0, 3, states_22, + "\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {279, "yield_stmt", 0, 2, states_23, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001"}, + {280, "raise_stmt", 0, 7, states_24, + "\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {281, "import_stmt", 0, 2, states_25, + "\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000"}, + {282, "import_name", 0, 3, states_26, + "\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000"}, + {283, "import_from", 0, 8, states_27, + "\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000"}, + {284, "import_as_name", 0, 4, states_28, + "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {285, "dotted_as_name", 0, 4, states_29, + "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {286, "import_as_names", 0, 3, states_30, + "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {287, "dotted_as_names", 0, 2, states_31, + "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {288, "dotted_name", 0, 2, states_32, + "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {289, "global_stmt", 0, 3, states_33, + "\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000"}, + {290, "exec_stmt", 0, 7, states_34, + "\000\000\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000\000\000"}, + {291, "assert_stmt", 0, 5, states_35, + "\000\000\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000"}, + {292, "compound_stmt", 0, 2, states_36, + "\000\010\020\000\000\000\000\000\000\000\000\220\023\000\000\000\000\000\000\000\002\000"}, + {293, "if_stmt", 0, 8, states_37, + "\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"}, + {294, "while_stmt", 0, 8, states_38, + "\000\000\000\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000"}, + {295, "for_stmt", 0, 10, states_39, + "\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"}, + {296, "try_stmt", 0, 13, states_40, + "\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000"}, + {297, "with_stmt", 0, 6, states_41, + "\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000"}, + {298, "with_var", 0, 3, states_42, + "\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000"}, + {299, "except_clause", 0, 5, states_43, + "\000\000\000\000\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000"}, + {300, "suite", 0, 5, states_44, + "\004\040\040\000\000\000\000\124\360\024\114\000\000\040\010\000\200\041\044\015\000\001"}, + {301, "testlist_safe", 0, 5, states_45, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {302, "old_test", 0, 2, states_46, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {303, "old_lambdef", 0, 5, states_47, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000"}, + {304, "test", 0, 6, states_48, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {305, "or_test", 0, 2, states_49, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\010\000\200\041\044\015\000\000"}, + {306, "and_test", 0, 2, states_50, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\010\000\200\041\044\015\000\000"}, + {307, "not_test", 0, 3, states_51, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\010\000\200\041\044\015\000\000"}, + {308, "comparison", 0, 2, states_52, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"}, + {309, "comp_op", 0, 4, states_53, + "\000\000\000\000\000\000\000\000\000\000\040\000\000\000\310\077\000\000\000\000\000\000"}, + {310, "expr", 0, 2, states_54, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"}, + {311, "xor_expr", 0, 2, states_55, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"}, + {312, "and_expr", 0, 2, states_56, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"}, + {313, "shift_expr", 0, 2, states_57, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"}, + {314, "arith_expr", 0, 2, states_58, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"}, + {315, "term", 0, 2, states_59, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"}, + {316, "factor", 0, 3, states_60, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"}, + {317, "power", 0, 4, states_61, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\044\015\000\000"}, + {318, "atom", 0, 11, states_62, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\044\015\000\000"}, + {319, "listmaker", 0, 5, states_63, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {320, "testlist_gexp", 0, 5, states_64, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {321, "lambdef", 0, 5, states_65, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000"}, + {322, "trailer", 0, 7, states_66, + "\000\040\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\004\000\000\000"}, + {323, "subscriptlist", 0, 3, states_67, + "\000\040\240\000\000\000\000\000\000\040\000\000\000\040\010\000\200\041\044\015\000\000"}, + {324, "subscript", 0, 7, states_68, + "\000\040\240\000\000\000\000\000\000\040\000\000\000\040\010\000\200\041\044\015\000\000"}, + {325, "sliceop", 0, 3, states_69, + "\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {326, "exprlist", 0, 3, states_70, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"}, + {327, "testlist", 0, 3, states_71, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {328, "dictmaker", 0, 5, states_72, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {329, "classdef", 0, 8, states_73, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000"}, + {330, "arglist", 0, 8, states_74, + "\000\040\040\300\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {331, "argument", 0, 4, states_75, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {332, "list_iter", 0, 2, states_76, + "\000\000\000\000\000\000\000\000\000\000\000\020\001\000\000\000\000\000\000\000\000\000"}, + {333, "list_for", 0, 6, states_77, + "\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"}, + {334, "list_if", 0, 4, states_78, + "\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"}, + {335, "gen_iter", 0, 2, states_79, + "\000\000\000\000\000\000\000\000\000\000\000\020\001\000\000\000\000\000\000\000\000\000"}, + {336, "gen_for", 0, 6, states_80, + "\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"}, + {337, "gen_if", 0, 4, states_81, + "\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"}, + {338, "testlist1", 0, 2, states_82, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {339, "encoding_decl", 0, 2, states_83, + "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {340, "yield_expr", 0, 3, states_84, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001"}, }; -static label labels[168] = { +static label labels[169] = { {0, "EMPTY"}, {256, 0}, {4, 0}, + {268, 0}, + {292, 0}, + {257, 0}, {267, 0}, - {291, 0}, - {257, 0}, - {266, 0}, {0, 0}, {258, 0}, - {326, 0}, + {327, 0}, {259, 0}, {50, 0}, - {287, 0}, + {288, 0}, {7, 0}, - {329, 0}, + {330, 0}, {8, 0}, {260, 0}, {261, 0}, + {329, 0}, + {262, 0}, {1, "def"}, {1, 0}, - {262, 0}, + {263, 0}, {11, 0}, - {299, 0}, - {263, 0}, + {300, 0}, {264, 0}, + {265, 0}, {22, 0}, - {303, 0}, + {304, 0}, {12, 0}, {16, 0}, {36, 0}, - {265, 0}, - {268, 0}, + {266, 0}, + {269, 0}, {13, 0}, - {269, 0}, - {271, 0}, + {270, 0}, {272, 0}, {273, 0}, {274, 0}, - {280, 0}, - {288, 0}, + {275, 0}, + {281, 0}, {289, 0}, {290, 0}, - {270, 0}, - {339, 0}, + {291, 0}, + {271, 0}, + {340, 0}, {37, 0}, {38, 0}, {39, 0}, @@ -2009,64 +2024,63 @@ {1, "print"}, {35, 0}, {1, "del"}, - {325, 0}, + {326, 0}, {1, "pass"}, - {275, 0}, {276, 0}, {277, 0}, + {278, 0}, + {280, 0}, {279, 0}, - {278, 0}, {1, "break"}, {1, "continue"}, {1, "return"}, {1, "raise"}, - {281, 0}, {282, 0}, + {283, 0}, {1, "import"}, - {286, 0}, + {287, 0}, {1, "from"}, {23, 0}, + {286, 0}, + {284, 0}, + {1, "as"}, {285, 0}, - {283, 0}, - {1, "as"}, - {284, 0}, {1, "global"}, {1, "exec"}, - {309, 0}, + {310, 0}, {1, "in"}, {1, "assert"}, - {292, 0}, {293, 0}, {294, 0}, {295, 0}, {296, 0}, - {328, 0}, + {297, 0}, {1, "if"}, {1, "elif"}, {1, "else"}, {1, "while"}, {1, "for"}, {1, "try"}, - {298, 0}, + {299, 0}, {1, "finally"}, {1, "with"}, - {297, 0}, + {298, 0}, {1, "except"}, {5, 0}, {6, 0}, - {300, 0}, {301, 0}, - {304, 0}, {302, 0}, + {305, 0}, + {303, 0}, {1, "lambda"}, - {320, 0}, - {305, 0}, + {321, 0}, + {306, 0}, {1, "or"}, - {306, 0}, + {307, 0}, {1, "and"}, {1, "not"}, - {307, 0}, {308, 0}, + {309, 0}, {20, 0}, {21, 0}, {28, 0}, @@ -2075,53 +2089,53 @@ {29, 0}, {29, 0}, {1, "is"}, - {310, 0}, + {311, 0}, {18, 0}, - {311, 0}, + {312, 0}, {33, 0}, - {312, 0}, + {313, 0}, {19, 0}, - {313, 0}, + {314, 0}, {34, 0}, - {314, 0}, + {315, 0}, {14, 0}, {15, 0}, - {315, 0}, + {316, 0}, {17, 0}, {24, 0}, {48, 0}, {32, 0}, - {316, 0}, {317, 0}, - {321, 0}, + {318, 0}, + {322, 0}, + {320, 0}, + {9, 0}, {319, 0}, - {9, 0}, - {318, 0}, {10, 0}, {26, 0}, - {327, 0}, + {328, 0}, {27, 0}, {25, 0}, - {337, 0}, + {338, 0}, {2, 0}, {3, 0}, - {332, 0}, - {335, 0}, - {322, 0}, + {333, 0}, + {336, 0}, {323, 0}, {324, 0}, + {325, 0}, {1, "class"}, - {330, 0}, {331, 0}, - {333, 0}, + {332, 0}, {334, 0}, - {336, 0}, - {338, 0}, + {335, 0}, + {337, 0}, + {339, 0}, {1, "yield"}, }; grammar _PyParser_Grammar = { - 84, + 85, dfas, - {168, labels}, + {169, labels}, 256 }; Index: Python/ast.c =================================================================== --- Python/ast.c (Revision 59850) +++ Python/ast.c (Arbeitskopie) @@ -29,6 +29,7 @@ static asdl_seq *ast_for_exprlist(struct compiling *, const node *, expr_context_ty); static expr_ty ast_for_testlist(struct compiling *, const node *); +static stmt_ty ast_for_classdef(struct compiling *, const node *, asdl_seq *); static expr_ty ast_for_testlist_gexp(struct compiling *, const node *); /* Note different signature for ast_for_call */ @@ -828,27 +829,16 @@ } static stmt_ty -ast_for_funcdef(struct compiling *c, const node *n) +ast_for_funcdef(struct compiling *c, const node *n, asdl_seq *decorator_seq) { - /* funcdef: 'def' [decorators] NAME parameters ':' suite */ + /* funcdef: 'def' NAME parameters ':' suite */ identifier name; arguments_ty args; asdl_seq *body; - asdl_seq *decorator_seq = NULL; - int name_i; + int name_i = 1; REQ(n, funcdef); - if (NCH(n) == 6) { /* decorators are present */ - decorator_seq = ast_for_decorators(c, CHILD(n, 0)); - if (!decorator_seq) - return NULL; - name_i = 2; - } - else { - name_i = 1; - } - name = NEW_IDENTIFIER(CHILD(n, name_i)); if (!name) return NULL; @@ -867,6 +857,30 @@ n->n_col_offset, c->c_arena); } +static stmt_ty +ast_for_decorated(struct compiling *c, const node *n) +{ + /* decorated: decorators (classdef | funcdef) */ + stmt_ty thing = NULL; + asdl_seq *decorator_seq = NULL; + + REQ(n, decorated); + + decorator_seq = ast_for_decorators(c, CHILD(n, 0)); + if (!decorator_seq) + return NULL; + + assert(TYPE(CHILD(n, 1)) == funcdef || + TYPE(CHILD(n, 1)) == classdef); + + if (TYPE(CHILD(n, 1)) == funcdef) { + thing = ast_for_funcdef(c, CHILD(n, 1), decorator_seq); + } else if (TYPE(CHILD(n, 1)) == classdef) { + thing = ast_for_classdef(c, CHILD(n, 1), decorator_seq); + } + return thing; +} + static expr_ty ast_for_lambdef(struct compiling *c, const node *n) { @@ -2968,7 +2982,7 @@ } static stmt_ty -ast_for_classdef(struct compiling *c, const node *n) +ast_for_classdef(struct compiling *c, const node *n, asdl_seq *decorator_seq) { /* classdef: 'class' NAME ['(' testlist ')'] ':' suite */ asdl_seq *bases, *s; @@ -2984,16 +2998,16 @@ s = ast_for_suite(c, CHILD(n, 3)); if (!s) return NULL; - return ClassDef(NEW_IDENTIFIER(CHILD(n, 1)), NULL, s, LINENO(n), - n->n_col_offset, c->c_arena); + return ClassDef(NEW_IDENTIFIER(CHILD(n, 1)), NULL, s, decorator_seq, + LINENO(n), n->n_col_offset, c->c_arena); } /* check for empty base list */ if (TYPE(CHILD(n,3)) == RPAR) { s = ast_for_suite(c, CHILD(n,5)); if (!s) return NULL; - return ClassDef(NEW_IDENTIFIER(CHILD(n, 1)), NULL, s, LINENO(n), - n->n_col_offset, c->c_arena); + return ClassDef(NEW_IDENTIFIER(CHILD(n, 1)), NULL, s, decorator_seq, + LINENO(n), n->n_col_offset, c->c_arena); } /* else handle the base class list */ @@ -3004,8 +3018,8 @@ s = ast_for_suite(c, CHILD(n, 6)); if (!s) return NULL; - return ClassDef(NEW_IDENTIFIER(CHILD(n, 1)), bases, s, LINENO(n), - n->n_col_offset, c->c_arena); + return ClassDef(NEW_IDENTIFIER(CHILD(n, 1)), bases, s, decorator_seq, + LINENO(n), n->n_col_offset, c->c_arena); } static stmt_ty @@ -3054,7 +3068,7 @@ } else { /* compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt - | funcdef | classdef + | funcdef | classdef | decorated */ node *ch = CHILD(n, 0); REQ(n, compound_stmt); @@ -3070,9 +3084,11 @@ case with_stmt: return ast_for_with_stmt(c, ch); case funcdef: - return ast_for_funcdef(c, ch); + return ast_for_funcdef(c, ch, NULL); case classdef: - return ast_for_classdef(c, ch); + return ast_for_classdef(c, ch, NULL); + case decorated: + return ast_for_decorated(c, ch); default: PyErr_Format(PyExc_SystemError, "unhandled small_stmt: TYPE=%d NCH=%d\n", Index: Python/symtable.c =================================================================== --- Python/symtable.c (Revision 59850) +++ Python/symtable.c (Arbeitskopie) @@ -931,8 +931,8 @@ return 0; if (s->v.FunctionDef.args->defaults) VISIT_SEQ(st, expr, s->v.FunctionDef.args->defaults); - if (s->v.FunctionDef.decorators) - VISIT_SEQ(st, expr, s->v.FunctionDef.decorators); + if (s->v.FunctionDef.decorator_list) + VISIT_SEQ(st, expr, s->v.FunctionDef.decorator_list); if (!symtable_enter_block(st, s->v.FunctionDef.name, FunctionBlock, (void *)s, s->lineno)) return 0; @@ -946,6 +946,8 @@ if (!symtable_add_def(st, s->v.ClassDef.name, DEF_LOCAL)) return 0; VISIT_SEQ(st, expr, s->v.ClassDef.bases); + if (s->v.ClassDef.decorator_list) + VISIT_SEQ(st, expr, s->v.ClassDef.decorator_list); if (!symtable_enter_block(st, s->v.ClassDef.name, ClassBlock, (void *)s, s->lineno)) return 0; Index: Python/compile.c =================================================================== --- Python/compile.c (Revision 59850) +++ Python/compile.c (Arbeitskopie) @@ -1322,7 +1322,7 @@ PyCodeObject *co; PyObject *first_const = Py_None; arguments_ty args = s->v.FunctionDef.args; - asdl_seq* decos = s->v.FunctionDef.decorators; + asdl_seq* decos = s->v.FunctionDef.decorator_list; stmt_ty st; int i, n, docstring; @@ -1373,9 +1373,14 @@ static int compiler_class(struct compiler *c, stmt_ty s) { - int n; + int n, i; PyCodeObject *co; PyObject *str; + asdl_seq* decos = s->v.ClassDef.decorator_list; + + if (!compiler_decorators(c, decos)) + return 0; + /* push class name on stack, needed by BUILD_CLASS */ ADDOP_O(c, LOAD_CONST, s->v.ClassDef.name, consts); /* push the tuple of base classes on the stack */ @@ -1421,6 +1426,10 @@ ADDOP_I(c, CALL_FUNCTION, 0); ADDOP(c, BUILD_CLASS); + /* apply decorators */ + for (i = 0; i < asdl_seq_LEN(decos); i++) { + ADDOP_I(c, CALL_FUNCTION, 1); + } if (!compiler_nameop(c, s->v.ClassDef.name, Store)) return 0; return 1; Index: Python/Python-ast.c =================================================================== --- Python/Python-ast.c (Revision 59850) +++ Python/Python-ast.c (Arbeitskopie) @@ -42,13 +42,14 @@ "name", "args", "body", - "decorators", + "decorator_list", }; static PyTypeObject *ClassDef_type; static char *ClassDef_fields[]={ "name", "bases", "body", + "decorator_list", }; static PyTypeObject *Return_type; static char *Return_fields[]={ @@ -469,7 +470,7 @@ FunctionDef_type = make_type("FunctionDef", stmt_type, FunctionDef_fields, 4); if (!FunctionDef_type) return 0; - ClassDef_type = make_type("ClassDef", stmt_type, ClassDef_fields, 3); + ClassDef_type = make_type("ClassDef", stmt_type, ClassDef_fields, 4); if (!ClassDef_type) return 0; Return_type = make_type("Return", stmt_type, Return_fields, 1); if (!Return_type) return 0; @@ -790,7 +791,7 @@ stmt_ty FunctionDef(identifier name, arguments_ty args, asdl_seq * body, asdl_seq * - decorators, int lineno, int col_offset, PyArena *arena) + decorator_list, int lineno, int col_offset, PyArena *arena) { stmt_ty p; if (!name) { @@ -810,15 +811,15 @@ p->v.FunctionDef.name = name; p->v.FunctionDef.args = args; p->v.FunctionDef.body = body; - p->v.FunctionDef.decorators = decorators; + p->v.FunctionDef.decorator_list = decorator_list; p->lineno = lineno; p->col_offset = col_offset; return p; } stmt_ty -ClassDef(identifier name, asdl_seq * bases, asdl_seq * body, int lineno, int - col_offset, PyArena *arena) +ClassDef(identifier name, asdl_seq * bases, asdl_seq * body, asdl_seq * + decorator_list, int lineno, int col_offset, PyArena *arena) { stmt_ty p; if (!name) { @@ -833,6 +834,7 @@ p->v.ClassDef.name = name; p->v.ClassDef.bases = bases; p->v.ClassDef.body = body; + p->v.ClassDef.decorator_list = decorator_list; p->lineno = lineno; p->col_offset = col_offset; return p; @@ -1906,9 +1908,11 @@ if (PyObject_SetAttrString(result, "body", value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_list(o->v.FunctionDef.decorators, ast2obj_expr); + value = ast2obj_list(o->v.FunctionDef.decorator_list, + ast2obj_expr); if (!value) goto failed; - if (PyObject_SetAttrString(result, "decorators", value) == -1) + if (PyObject_SetAttrString(result, "decorator_list", value) == + -1) goto failed; Py_DECREF(value); break; @@ -1930,6 +1934,13 @@ if (PyObject_SetAttrString(result, "body", value) == -1) goto failed; Py_DECREF(value); + value = ast2obj_list(o->v.ClassDef.decorator_list, + ast2obj_expr); + if (!value) goto failed; + if (PyObject_SetAttrString(result, "decorator_list", value) == + -1) + goto failed; + Py_DECREF(value); break; case Return_kind: result = PyType_GenericNew(Return_type, NULL, NULL); Index: Include/graminit.h =================================================================== --- Include/graminit.h (Revision 59850) +++ Include/graminit.h (Arbeitskopie) @@ -3,82 +3,83 @@ #define eval_input 258 #define decorator 259 #define decorators 260 -#define funcdef 261 -#define parameters 262 -#define varargslist 263 -#define fpdef 264 -#define fplist 265 -#define stmt 266 -#define simple_stmt 267 -#define small_stmt 268 -#define expr_stmt 269 -#define augassign 270 -#define print_stmt 271 -#define del_stmt 272 -#define pass_stmt 273 -#define flow_stmt 274 -#define break_stmt 275 -#define continue_stmt 276 -#define return_stmt 277 -#define yield_stmt 278 -#define raise_stmt 279 -#define import_stmt 280 -#define import_name 281 -#define import_from 282 -#define import_as_name 283 -#define dotted_as_name 284 -#define import_as_names 285 -#define dotted_as_names 286 -#define dotted_name 287 -#define global_stmt 288 -#define exec_stmt 289 -#define assert_stmt 290 -#define compound_stmt 291 -#define if_stmt 292 -#define while_stmt 293 -#define for_stmt 294 -#define try_stmt 295 -#define with_stmt 296 -#define with_var 297 -#define except_clause 298 -#define suite 299 -#define testlist_safe 300 -#define old_test 301 -#define old_lambdef 302 -#define test 303 -#define or_test 304 -#define and_test 305 -#define not_test 306 -#define comparison 307 -#define comp_op 308 -#define expr 309 -#define xor_expr 310 -#define and_expr 311 -#define shift_expr 312 -#define arith_expr 313 -#define term 314 -#define factor 315 -#define power 316 -#define atom 317 -#define listmaker 318 -#define testlist_gexp 319 -#define lambdef 320 -#define trailer 321 -#define subscriptlist 322 -#define subscript 323 -#define sliceop 324 -#define exprlist 325 -#define testlist 326 -#define dictmaker 327 -#define classdef 328 -#define arglist 329 -#define argument 330 -#define list_iter 331 -#define list_for 332 -#define list_if 333 -#define gen_iter 334 -#define gen_for 335 -#define gen_if 336 -#define testlist1 337 -#define encoding_decl 338 -#define yield_expr 339 +#define decorated 261 +#define funcdef 262 +#define parameters 263 +#define varargslist 264 +#define fpdef 265 +#define fplist 266 +#define stmt 267 +#define simple_stmt 268 +#define small_stmt 269 +#define expr_stmt 270 +#define augassign 271 +#define print_stmt 272 +#define del_stmt 273 +#define pass_stmt 274 +#define flow_stmt 275 +#define break_stmt 276 +#define continue_stmt 277 +#define return_stmt 278 +#define yield_stmt 279 +#define raise_stmt 280 +#define import_stmt 281 +#define import_name 282 +#define import_from 283 +#define import_as_name 284 +#define dotted_as_name 285 +#define import_as_names 286 +#define dotted_as_names 287 +#define dotted_name 288 +#define global_stmt 289 +#define exec_stmt 290 +#define assert_stmt 291 +#define compound_stmt 292 +#define if_stmt 293 +#define while_stmt 294 +#define for_stmt 295 +#define try_stmt 296 +#define with_stmt 297 +#define with_var 298 +#define except_clause 299 +#define suite 300 +#define testlist_safe 301 +#define old_test 302 +#define old_lambdef 303 +#define test 304 +#define or_test 305 +#define and_test 306 +#define not_test 307 +#define comparison 308 +#define comp_op 309 +#define expr 310 +#define xor_expr 311 +#define and_expr 312 +#define shift_expr 313 +#define arith_expr 314 +#define term 315 +#define factor 316 +#define power 317 +#define atom 318 +#define listmaker 319 +#define testlist_gexp 320 +#define lambdef 321 +#define trailer 322 +#define subscriptlist 323 +#define subscript 324 +#define sliceop 325 +#define exprlist 326 +#define testlist 327 +#define dictmaker 328 +#define classdef 329 +#define arglist 330 +#define argument 331 +#define list_iter 332 +#define list_for 333 +#define list_if 334 +#define gen_iter 335 +#define gen_for 336 +#define gen_if 337 +#define testlist1 338 +#define encoding_decl 339 +#define yield_expr 340 Index: Include/Python-ast.h =================================================================== --- Include/Python-ast.h (Revision 59850) +++ Include/Python-ast.h (Arbeitskopie) @@ -73,13 +73,14 @@ identifier name; arguments_ty args; asdl_seq *body; - asdl_seq *decorators; + asdl_seq *decorator_list; } FunctionDef; struct { identifier name; asdl_seq *bases; asdl_seq *body; + asdl_seq *decorator_list; } ClassDef; struct { @@ -359,11 +360,12 @@ mod_ty _Py_Suite(asdl_seq * body, PyArena *arena); #define FunctionDef(a0, a1, a2, a3, a4, a5, a6) _Py_FunctionDef(a0, a1, a2, a3, a4, a5, a6) stmt_ty _Py_FunctionDef(identifier name, arguments_ty args, asdl_seq * body, - asdl_seq * decorators, int lineno, int col_offset, + asdl_seq * decorator_list, int lineno, int col_offset, PyArena *arena); -#define ClassDef(a0, a1, a2, a3, a4, a5) _Py_ClassDef(a0, a1, a2, a3, a4, a5) -stmt_ty _Py_ClassDef(identifier name, asdl_seq * bases, asdl_seq * body, int - lineno, int col_offset, PyArena *arena); +#define ClassDef(a0, a1, a2, a3, a4, a5, a6) _Py_ClassDef(a0, a1, a2, a3, a4, a5, a6) +stmt_ty _Py_ClassDef(identifier name, asdl_seq * bases, asdl_seq * body, + asdl_seq * decorator_list, int lineno, int col_offset, + PyArena *arena); #define Return(a0, a1, a2, a3) _Py_Return(a0, a1, a2, a3) stmt_ty _Py_Return(expr_ty value, int lineno, int col_offset, PyArena *arena); #define Delete(a0, a1, a2, a3) _Py_Delete(a0, a1, a2, a3) Index: Grammar/Grammar =================================================================== --- Grammar/Grammar (Revision 59850) +++ Grammar/Grammar (Arbeitskopie) @@ -33,7 +33,8 @@ decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE decorators: decorator+ -funcdef: [decorators] 'def' NAME parameters ':' suite +decorated: decorators (classdef | funcdef) +funcdef: 'def' NAME parameters ':' suite parameters: '(' [varargslist] ')' varargslist: ((fpdef ['=' test] ',')* ('*' NAME [',' '**' NAME] | '**' NAME) | @@ -73,7 +74,7 @@ exec_stmt: 'exec' expr ['in' test [',' test]] assert_stmt: 'assert' test [',' test] -compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | with_stmt | funcdef | classdef +compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | with_stmt | funcdef | classdef | decorated if_stmt: 'if' test ':' suite ('elif' test ':' suite)* ['else' ':' suite] while_stmt: 'while' test ':' suite ['else' ':' suite] for_stmt: 'for' exprlist 'in' testlist ':' suite ['else' ':' suite] Index: Misc/NEWS =================================================================== --- Misc/NEWS (Revision 59850) +++ Misc/NEWS (Arbeitskopie) @@ -1117,6 +1117,7 @@ - test.test_support.catch_warning is a new context manager that can be used to catch the warnings issued by the warning framework. +- Added class decorators per PEP 3129. Tools ----- Index: Parser/Python.asdl =================================================================== --- Parser/Python.asdl (Revision 59850) +++ Parser/Python.asdl (Arbeitskopie) @@ -10,8 +10,8 @@ | Suite(stmt* body) stmt = FunctionDef(identifier name, arguments args, - stmt* body, expr* decorators) - | ClassDef(identifier name, expr* bases, stmt* body) + stmt* body, expr* decorator_list) + | ClassDef(identifier name, expr* bases, stmt* body, expr *decorator_list) | Return(expr? value) | Delete(expr* targets) Index: Lib/symbol.py =================================================================== --- Lib/symbol.py (Revision 59850) +++ Lib/symbol.py (Arbeitskopie) @@ -15,85 +15,86 @@ eval_input = 258 decorator = 259 decorators = 260 -funcdef = 261 -parameters = 262 -varargslist = 263 -fpdef = 264 -fplist = 265 -stmt = 266 -simple_stmt = 267 -small_stmt = 268 -expr_stmt = 269 -augassign = 270 -print_stmt = 271 -del_stmt = 272 -pass_stmt = 273 -flow_stmt = 274 -break_stmt = 275 -continue_stmt = 276 -return_stmt = 277 -yield_stmt = 278 -raise_stmt = 279 -import_stmt = 280 -import_name = 281 -import_from = 282 -import_as_name = 283 -dotted_as_name = 284 -import_as_names = 285 -dotted_as_names = 286 -dotted_name = 287 -global_stmt = 288 -exec_stmt = 289 -assert_stmt = 290 -compound_stmt = 291 -if_stmt = 292 -while_stmt = 293 -for_stmt = 294 -try_stmt = 295 -with_stmt = 296 -with_var = 297 -except_clause = 298 -suite = 299 -testlist_safe = 300 -old_test = 301 -old_lambdef = 302 -test = 303 -or_test = 304 -and_test = 305 -not_test = 306 -comparison = 307 -comp_op = 308 -expr = 309 -xor_expr = 310 -and_expr = 311 -shift_expr = 312 -arith_expr = 313 -term = 314 -factor = 315 -power = 316 -atom = 317 -listmaker = 318 -testlist_gexp = 319 -lambdef = 320 -trailer = 321 -subscriptlist = 322 -subscript = 323 -sliceop = 324 -exprlist = 325 -testlist = 326 -dictmaker = 327 -classdef = 328 -arglist = 329 -argument = 330 -list_iter = 331 -list_for = 332 -list_if = 333 -gen_iter = 334 -gen_for = 335 -gen_if = 336 -testlist1 = 337 -encoding_decl = 338 -yield_expr = 339 +decorated = 261 +funcdef = 262 +parameters = 263 +varargslist = 264 +fpdef = 265 +fplist = 266 +stmt = 267 +simple_stmt = 268 +small_stmt = 269 +expr_stmt = 270 +augassign = 271 +print_stmt = 272 +del_stmt = 273 +pass_stmt = 274 +flow_stmt = 275 +break_stmt = 276 +continue_stmt = 277 +return_stmt = 278 +yield_stmt = 279 +raise_stmt = 280 +import_stmt = 281 +import_name = 282 +import_from = 283 +import_as_name = 284 +dotted_as_name = 285 +import_as_names = 286 +dotted_as_names = 287 +dotted_name = 288 +global_stmt = 289 +exec_stmt = 290 +assert_stmt = 291 +compound_stmt = 292 +if_stmt = 293 +while_stmt = 294 +for_stmt = 295 +try_stmt = 296 +with_stmt = 297 +with_var = 298 +except_clause = 299 +suite = 300 +testlist_safe = 301 +old_test = 302 +old_lambdef = 303 +test = 304 +or_test = 305 +and_test = 306 +not_test = 307 +comparison = 308 +comp_op = 309 +expr = 310 +xor_expr = 311 +and_expr = 312 +shift_expr = 313 +arith_expr = 314 +term = 315 +factor = 316 +power = 317 +atom = 318 +listmaker = 319 +testlist_gexp = 320 +lambdef = 321 +trailer = 322 +subscriptlist = 323 +subscript = 324 +sliceop = 325 +exprlist = 326 +testlist = 327 +dictmaker = 328 +classdef = 329 +arglist = 330 +argument = 331 +list_iter = 332 +list_for = 333 +list_if = 334 +gen_iter = 335 +gen_for = 336 +gen_if = 337 +testlist1 = 338 +encoding_decl = 339 +yield_expr = 340 #--end constants-- sym_name = {} Index: Lib/test/test_decorators.py =================================================================== --- Lib/test/test_decorators.py (Revision 59850) +++ Lib/test/test_decorators.py (Arbeitskopie) @@ -266,8 +266,44 @@ self.assertEqual(bar(), 42) self.assertEqual(actions, expected_actions) +class TestClassDecorators(unittest.TestCase): + + def test_simple(self): + def plain(x): + x.extra = 'Hello' + return x + @plain + class C(object): pass + self.assertEqual(C.extra, 'Hello') + + def test_double(self): + def ten(x): + x.extra = 10 + return x + def add_five(x): + x.extra += 5 + return x + + @add_five + @ten + class C(object): pass + self.assertEqual(C.extra, 15) + + def test_order(self): + def applied_first(x): + x.extra = 'first' + return x + def applied_second(x): + x.extra = 'second' + return x + @applied_second + @applied_first + class C(object): pass + self.assertEqual(C.extra, 'second') + def test_main(): test_support.run_unittest(TestDecorators) + test_support.run_unittest(TestClassDecorators) if __name__=="__main__": test_main() Index: Lib/test/test_grammar.py =================================================================== --- Lib/test/test_grammar.py (Revision 59850) +++ Lib/test/test_grammar.py (Arbeitskopie) @@ -768,6 +768,16 @@ def meth1(self): pass def meth2(self, arg): pass def meth3(self, a1, a2): pass + # decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE + # decorators: decorator+ + # decorated: decorators (classdef | funcdef) + def class_decorator(x): + x.decorated = True + return x + @class_decorator + class G: + pass + self.assertEqual(G.decorated, True) def testListcomps(self): # list comprehension tests Index: Modules/parsermodule.c =================================================================== --- Modules/parsermodule.c (Revision 59850) +++ Modules/parsermodule.c (Arbeitskopie) @@ -1498,7 +1498,7 @@ /* compound_stmt: - * if_stmt | while_stmt | for_stmt | try_stmt | funcdef | classdef + * if_stmt | while_stmt | for_stmt | try_stmt | funcdef | classdef | decorated */ static int validate_compound_stmt(node *tree) @@ -1517,7 +1517,8 @@ || (ntype == for_stmt) || (ntype == try_stmt) || (ntype == funcdef) - || (ntype == classdef)) + || (ntype == classdef) + || (ntype == decorated)) res = validate_node(tree); else { res = 0; @@ -1527,7 +1528,6 @@ return (res); } - static int validate_yield_or_testlist(node *tree) { @@ -2558,29 +2558,41 @@ /* funcdef: * - * -6 -5 -4 -3 -2 -1 - * [decorators] 'def' NAME parameters ':' suite + * -5 -4 -3 -2 -1 + * 'def' NAME parameters ':' suite */ static int validate_funcdef(node *tree) { int nch = NCH(tree); int ok = (validate_ntype(tree, funcdef) - && ((nch == 5) || (nch == 6)) + && (nch == 5) && validate_name(RCHILD(tree, -5), "def") && validate_ntype(RCHILD(tree, -4), NAME) && validate_colon(RCHILD(tree, -2)) && validate_parameters(RCHILD(tree, -3)) && validate_suite(RCHILD(tree, -1))); - - if (ok && (nch == 6)) - ok = validate_decorators(CHILD(tree, 0)); - return ok; } +/* decorated + * decorators (classdef | funcdef) + */ static int +validate_decorated(node *tree) +{ + int nch = NCH(tree); + int ok = (validate_ntype(tree, decorated) + && (nch == 2) + && validate_decorators(RCHILD(tree, -2)) + && (validate_funcdef(RCHILD(tree, -1)) + || validate_class(RCHILD(tree, -1))) + ); + return ok; +} + +static int validate_lambdef(node *tree) { int nch = NCH(tree); @@ -2923,6 +2935,9 @@ case classdef: res = validate_class(tree); break; + case decorated: + res = validate_decorated(tree); + break; /* * "Trivial" parse tree nodes. * (Why did I call these trivial?)