diff options
Diffstat (limited to 'Python')
| -rw-r--r-- | Python/bltinmodule.c | 9 | ||||
| -rw-r--r-- | Python/ceval.c | 78 | ||||
| -rw-r--r-- | Python/compile.c | 26 | ||||
| -rw-r--r-- | Python/graminit.c | 833 | 
4 files changed, 538 insertions, 408 deletions
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c index dc65ffb117..3ba8f91c0b 100644 --- a/Python/bltinmodule.c +++ b/Python/bltinmodule.c @@ -233,14 +233,6 @@ builtin_eval(self, v)  }  static object * -builtin_exec(self, v) -	object *self; -	object *v; -{ -	return exec_eval(v, file_input); -} - -static object *  builtin_execfile(self, v)  	object *self;  	object *v; @@ -755,7 +747,6 @@ static struct methodlist builtin_methods[] = {  	{"dir",		builtin_dir},  	{"divmod",	builtin_divmod},  	{"eval",	builtin_eval}, -	{"exec",	builtin_exec},  	{"execfile",	builtin_execfile},  	{"float",	builtin_float},  	{"getattr",	builtin_getattr}, diff --git a/Python/ceval.c b/Python/ceval.c index b8d6de26f7..071d664d54 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -35,6 +35,8 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.  #include "opcode.h"  #include "bltinmodule.h"  #include "traceback.h" +#include "graminit.h" +#include "pythonrun.h"  /* Turn this on if your compiler chokes on the big switch: */  /* #define CASE_TOO_BIG 1  	/**/ @@ -91,6 +93,7 @@ static object *build_class PROTO((object *, object *, object *));  static void locals_2_fast PROTO((frameobject *, int));  static void fast_2_locals PROTO((frameobject *));  static int access_statement PROTO((object *, object *, frameobject *)); +static int exec_statement PROTO((object *, object *, object *));  /* Pointer to current frame, used to link new frames to */ @@ -712,6 +715,22 @@ eval_code(co, globals, locals, owner, arg)  			retval = POP();  			why = WHY_RETURN;  			break; + +		case LOAD_GLOBALS: +			v = f->f_locals; +			INCREF(v); +			PUSH(v); +			break; + +		case EXEC_STMT: +			w = POP(); +			v = POP(); +			u = POP(); +			err = exec_statement(u, v, w); +			DECREF(u); +			DECREF(v); +			DECREF(w); +			break;  		case BUILD_FUNCTION:  			v = POP(); @@ -2489,3 +2508,62 @@ access_statement(name, vmode, f)  	}  	return ret;  } + +static int +exec_statement(prog, globals, locals) +	object *prog; +	object *globals; +	object *locals; +{ +	char *s; +	int n; + +	if (is_tupleobject(prog) && globals == None && locals == None && +	    ((n = gettuplesize(prog)) == 2 || n == 3)) { +		/* Backward compatibility hack */ +		globals = gettupleitem(prog, 1); +		if (n == 3) +			locals = gettupleitem(prog, 2); +		prog = gettupleitem(prog, 0); +	} +	if (globals == None) { +		globals = getglobals(); +		if (locals == None) +			locals = getlocals(); +	} +	else if (locals == None) +		locals = globals; +	if (!is_stringobject(prog) && +	    !is_codeobject(prog) && +	    !is_fileobject(prog)) { +		err_setstr(TypeError, +			   "exec 1st arg must be string, code or file object"); +		return -1; +	} +	if (!is_dictobject(globals) || !is_dictobject(locals)) { +		err_setstr(TypeError, +		    "exec 2nd/3rd args must be dict or None"); +		return -1; +	} +	if (is_codeobject(prog)) { +		if (eval_code((codeobject *) prog, globals, locals, +				 (object *)NULL, (object *)NULL) == NULL) +			return -1; +		return 0; +	} +	if (is_fileobject(prog)) { +		FILE *fp = getfilefile(prog); +		char *name = getstringvalue(getfilename(prog)); +		if (run_file(fp, name, file_input, globals, locals) == NULL) +			return -1; +		return 0; +	} +	s = getstringvalue(prog); +	if (strlen(s) != getstringsize(prog)) { +		err_setstr(ValueError, "embedded '\\0' in exec string"); +		return -1; +	} +	if (run_string(s, file_input, globals, locals) == NULL) +		return -1; +	return 0; +} diff --git a/Python/compile.c b/Python/compile.c index 0eb06cb5d5..2a1a2b4451 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -1305,7 +1305,7 @@ com_expr_stmt(c, n)  	struct compiling *c;  	node *n;  { -	REQ(n, expr_stmt); /* exprlist ('=' exprlist)* */ +	REQ(n, expr_stmt); /* testlist ('=' testlist)* */  	com_node(c, CHILD(n, NCH(n)-1));  	if (NCH(n) == 1) {  		com_addbyte(c, PRINT_EXPR); @@ -1467,6 +1467,25 @@ com_access_stmt(c, n)  }  static void +com_exec_stmt(c, n) +	struct compiling *c; +	node *n; +{ +	REQ(n, exec_stmt); +	/* exec_stmt: 'exec' expr ['in' expr [',' expr]] */ +	com_node(c, CHILD(n, 1)); +	if (NCH(n) >= 4) +		com_node(c, CHILD(n, 3)); +	else +		com_addoparg(c, LOAD_CONST, com_addconst(c, None)); +	if (NCH(n) >= 6) +		com_node(c, CHILD(n, 5)); +	else +		com_addbyte(c, DUP_TOP); +	com_addbyte(c, EXEC_STMT); +} + +static void  com_if_stmt(c, n)  	struct compiling *c;  	node *n; @@ -1909,6 +1928,9 @@ com_node(c, n)  	case access_stmt:  		com_access_stmt(c, n);  		break; +	case exec_stmt: +		com_exec_stmt(c, n); +		break;  	case if_stmt:  		com_if_stmt(c, n);  		break; @@ -2183,6 +2205,8 @@ optimize(c)  		opcode = NEXTOP();  		if (opcode == STOP_CODE)  			break; +		if (opcode == EXEC_STMT) +			goto end; /* Don't optimize if exec present */  		if (HAS_ARG(opcode))  			oparg = NEXTARG();  		if (opcode == STORE_NAME || opcode == DELETE_NAME || diff --git a/Python/graminit.c b/Python/graminit.c index 3b78d0c000..bce702d71a 100644 --- a/Python/graminit.c +++ b/Python/graminit.c @@ -194,7 +194,7 @@ static state states_10[4] = {  	{2, arcs_10_2},  	{1, arcs_10_3},  }; -static arc arcs_11_0[8] = { +static arc arcs_11_0[9] = {  	{26, 1},  	{27, 1},  	{28, 1}, @@ -203,16 +203,17 @@ static arc arcs_11_0[8] = {  	{31, 1},  	{32, 1},  	{33, 1}, +	{34, 1},  };  static arc arcs_11_1[1] = {  	{0, 1},  };  static state states_11[2] = { -	{8, arcs_11_0}, +	{9, arcs_11_0},  	{1, arcs_11_1},  };  static arc arcs_12_0[1] = { -	{34, 1}, +	{9, 1},  };  static arc arcs_12_1[2] = {  	{35, 0}, @@ -242,7 +243,7 @@ static arc arcs_14_0[1] = {  	{38, 1},  };  static arc arcs_14_1[1] = { -	{34, 2}, +	{39, 2},  };  static arc arcs_14_2[1] = {  	{0, 2}, @@ -253,7 +254,7 @@ static state states_14[3] = {  	{1, arcs_14_2},  };  static arc arcs_15_0[1] = { -	{39, 1}, +	{40, 1},  };  static arc arcs_15_1[1] = {  	{0, 1}, @@ -263,10 +264,10 @@ static state states_15[2] = {  	{1, arcs_15_1},  };  static arc arcs_16_0[4] = { -	{40, 1},  	{41, 1},  	{42, 1},  	{43, 1}, +	{44, 1},  };  static arc arcs_16_1[1] = {  	{0, 1}, @@ -276,7 +277,7 @@ static state states_16[2] = {  	{1, arcs_16_1},  };  static arc arcs_17_0[1] = { -	{44, 1}, +	{45, 1},  };  static arc arcs_17_1[1] = {  	{0, 1}, @@ -286,7 +287,7 @@ static state states_17[2] = {  	{1, arcs_17_1},  };  static arc arcs_18_0[1] = { -	{45, 1}, +	{46, 1},  };  static arc arcs_18_1[1] = {  	{0, 1}, @@ -296,7 +297,7 @@ static state states_18[2] = {  	{1, arcs_18_1},  };  static arc arcs_19_0[1] = { -	{46, 1}, +	{47, 1},  };  static arc arcs_19_1[2] = {  	{9, 2}, @@ -311,7 +312,7 @@ static state states_19[3] = {  	{1, arcs_19_2},  };  static arc arcs_20_0[1] = { -	{47, 1}, +	{48, 1},  };  static arc arcs_20_1[1] = {  	{37, 2}, @@ -334,8 +335,8 @@ static state states_20[5] = {  	{1, arcs_20_4},  };  static arc arcs_21_0[2] = { -	{48, 1}, -	{49, 2}, +	{49, 1}, +	{50, 2},  };  static arc arcs_21_1[1] = {  	{13, 3}, @@ -348,7 +349,7 @@ static arc arcs_21_3[2] = {  	{0, 3},  };  static arc arcs_21_4[1] = { -	{48, 5}, +	{49, 5},  };  static arc arcs_21_5[2] = {  	{22, 6}, @@ -376,7 +377,7 @@ static state states_21[9] = {  	{1, arcs_21_8},  };  static arc arcs_22_0[1] = { -	{50, 1}, +	{51, 1},  };  static arc arcs_22_1[1] = {  	{13, 2}, @@ -391,7 +392,7 @@ static state states_22[3] = {  	{2, arcs_22_2},  };  static arc arcs_23_0[1] = { -	{51, 1}, +	{52, 1},  };  static arc arcs_23_1[2] = {  	{22, 2}, @@ -405,7 +406,7 @@ static arc arcs_23_3[2] = {  	{15, 4},  };  static arc arcs_23_4[1] = { -	{52, 6}, +	{53, 6},  };  static arc arcs_23_5[1] = {  	{13, 3}, @@ -434,56 +435,52 @@ static state states_24[2] = {  	{1, arcs_24_0},  	{2, arcs_24_1},  }; -static arc arcs_25_0[6] = { -	{53, 1}, +static arc arcs_25_0[1] = {  	{54, 1}, -	{55, 1}, -	{56, 1}, -	{11, 1}, -	{57, 1},  };  static arc arcs_25_1[1] = { -	{0, 1}, -}; -static state states_25[2] = { -	{6, arcs_25_0}, -	{1, arcs_25_1}, -}; -static arc arcs_26_0[1] = { -	{58, 1}, -}; -static arc arcs_26_1[1] = {  	{37, 2},  }; -static arc arcs_26_2[1] = { -	{15, 3}, +static arc arcs_25_2[2] = { +	{55, 3}, +	{0, 2},  }; -static arc arcs_26_3[1] = { -	{16, 4}, +static arc arcs_25_3[1] = { +	{37, 4},  }; -static arc arcs_26_4[3] = { -	{59, 1}, -	{60, 5}, +static arc arcs_25_4[2] = { +	{21, 5},  	{0, 4},  }; -static arc arcs_26_5[1] = { -	{15, 6}, +static arc arcs_25_5[1] = { +	{37, 6},  }; -static arc arcs_26_6[1] = { -	{16, 7}, +static arc arcs_25_6[1] = { +	{0, 6},  }; -static arc arcs_26_7[1] = { -	{0, 7}, +static state states_25[7] = { +	{1, arcs_25_0}, +	{1, arcs_25_1}, +	{2, arcs_25_2}, +	{1, arcs_25_3}, +	{2, arcs_25_4}, +	{1, arcs_25_5}, +	{1, arcs_25_6},  }; -static state states_26[8] = { -	{1, arcs_26_0}, +static arc arcs_26_0[6] = { +	{56, 1}, +	{57, 1}, +	{58, 1}, +	{59, 1}, +	{11, 1}, +	{60, 1}, +}; +static arc arcs_26_1[1] = { +	{0, 1}, +}; +static state states_26[2] = { +	{6, arcs_26_0},  	{1, arcs_26_1}, -	{1, 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] = {  	{61, 1}, @@ -497,8 +494,9 @@ static arc arcs_27_2[1] = {  static arc arcs_27_3[1] = {  	{16, 4},  }; -static arc arcs_27_4[2] = { -	{60, 5}, +static arc arcs_27_4[3] = { +	{62, 1}, +	{63, 5},  	{0, 4},  };  static arc arcs_27_5[1] = { @@ -515,82 +513,73 @@ static state states_27[8] = {  	{1, arcs_27_1},  	{1, arcs_27_2},  	{1, arcs_27_3}, -	{2, arcs_27_4}, +	{3, arcs_27_4},  	{1, arcs_27_5},  	{1, arcs_27_6},  	{1, arcs_27_7},  };  static arc arcs_28_0[1] = { -	{62, 1}, +	{64, 1},  };  static arc arcs_28_1[1] = { -	{34, 2}, +	{37, 2},  };  static arc arcs_28_2[1] = { -	{63, 3}, +	{15, 3},  };  static arc arcs_28_3[1] = { -	{9, 4}, +	{16, 4},  }; -static arc arcs_28_4[1] = { -	{15, 5}, +static arc arcs_28_4[2] = { +	{63, 5}, +	{0, 4},  };  static arc arcs_28_5[1] = { -	{16, 6}, +	{15, 6},  }; -static arc arcs_28_6[2] = { -	{60, 7}, -	{0, 6}, +static arc arcs_28_6[1] = { +	{16, 7},  };  static arc arcs_28_7[1] = { -	{15, 8}, -}; -static arc arcs_28_8[1] = { -	{16, 9}, -}; -static arc arcs_28_9[1] = { -	{0, 9}, +	{0, 7},  }; -static state states_28[10] = { +static state states_28[8] = {  	{1, arcs_28_0},  	{1, arcs_28_1},  	{1, arcs_28_2},  	{1, arcs_28_3}, -	{1, arcs_28_4}, +	{2, arcs_28_4},  	{1, arcs_28_5}, -	{2, arcs_28_6}, +	{1, arcs_28_6},  	{1, arcs_28_7}, -	{1, arcs_28_8}, -	{1, arcs_28_9},  };  static arc arcs_29_0[1] = { -	{64, 1}, +	{65, 1},  };  static arc arcs_29_1[1] = { -	{15, 2}, +	{39, 2},  };  static arc arcs_29_2[1] = { -	{16, 3}, +	{55, 3},  }; -static arc arcs_29_3[2] = { -	{65, 4}, -	{66, 5}, +static arc arcs_29_3[1] = { +	{9, 4},  };  static arc arcs_29_4[1] = { -	{15, 6}, +	{15, 5},  };  static arc arcs_29_5[1] = { -	{15, 7}, +	{16, 6},  }; -static arc arcs_29_6[1] = { -	{16, 8}, +static arc arcs_29_6[2] = { +	{63, 7}, +	{0, 6},  };  static arc arcs_29_7[1] = { -	{16, 9}, +	{15, 8},  }; -static arc arcs_29_8[2] = { -	{65, 4}, -	{0, 8}, +static arc arcs_29_8[1] = { +	{16, 9},  };  static arc arcs_29_9[1] = {  	{0, 9}, @@ -599,72 +588,105 @@ static state states_29[10] = {  	{1, arcs_29_0},  	{1, arcs_29_1},  	{1, arcs_29_2}, -	{2, arcs_29_3}, +	{1, arcs_29_3},  	{1, arcs_29_4},  	{1, arcs_29_5}, -	{1, arcs_29_6}, +	{2, arcs_29_6},  	{1, arcs_29_7}, -	{2, arcs_29_8}, +	{1, arcs_29_8},  	{1, arcs_29_9},  };  static arc arcs_30_0[1] = { -	{67, 1}, +	{66, 1},  }; -static arc arcs_30_1[2] = { -	{37, 2}, -	{0, 1}, +static arc arcs_30_1[1] = { +	{15, 2},  }; -static arc arcs_30_2[2] = { -	{21, 3}, -	{0, 2}, +static arc arcs_30_2[1] = { +	{16, 3},  }; -static arc arcs_30_3[1] = { -	{37, 4}, +static arc arcs_30_3[2] = { +	{67, 4}, +	{68, 5},  };  static arc arcs_30_4[1] = { -	{0, 4}, +	{15, 6},  }; -static state states_30[5] = { +static arc arcs_30_5[1] = { +	{15, 7}, +}; +static arc arcs_30_6[1] = { +	{16, 8}, +}; +static arc arcs_30_7[1] = { +	{16, 9}, +}; +static arc arcs_30_8[2] = { +	{67, 4}, +	{0, 8}, +}; +static arc arcs_30_9[1] = { +	{0, 9}, +}; +static state states_30[10] = {  	{1, arcs_30_0}, -	{2, arcs_30_1}, -	{2, arcs_30_2}, -	{1, arcs_30_3}, +	{1, arcs_30_1}, +	{1, arcs_30_2}, +	{2, arcs_30_3},  	{1, arcs_30_4}, +	{1, arcs_30_5}, +	{1, arcs_30_6}, +	{1, arcs_30_7}, +	{2, arcs_30_8}, +	{1, arcs_30_9},  }; -static arc arcs_31_0[2] = { -	{3, 1}, -	{2, 2}, +static arc arcs_31_0[1] = { +	{69, 1},  }; -static arc arcs_31_1[1] = { +static arc arcs_31_1[2] = { +	{37, 2},  	{0, 1},  }; -static arc arcs_31_2[1] = { -	{68, 3}, +static arc arcs_31_2[2] = { +	{21, 3}, +	{0, 2},  };  static arc arcs_31_3[1] = { -	{6, 4}, +	{37, 4},  }; -static arc arcs_31_4[2] = { -	{6, 4}, -	{69, 1}, +static arc arcs_31_4[1] = { +	{0, 4},  };  static state states_31[5] = { -	{2, arcs_31_0}, -	{1, arcs_31_1}, -	{1, arcs_31_2}, +	{1, arcs_31_0}, +	{2, arcs_31_1}, +	{2, arcs_31_2},  	{1, arcs_31_3}, -	{2, arcs_31_4}, +	{1, arcs_31_4},  }; -static arc arcs_32_0[1] = { -	{70, 1}, +static arc arcs_32_0[2] = { +	{3, 1}, +	{2, 2},  }; -static arc arcs_32_1[2] = { -	{71, 0}, +static arc arcs_32_1[1] = {  	{0, 1},  }; -static state states_32[2] = { -	{1, arcs_32_0}, -	{2, arcs_32_1}, +static arc arcs_32_2[1] = { +	{70, 3}, +}; +static arc arcs_32_3[1] = { +	{6, 4}, +}; +static arc arcs_32_4[2] = { +	{6, 4}, +	{71, 1}, +}; +static state states_32[5] = { +	{2, arcs_32_0}, +	{1, arcs_32_1}, +	{1, arcs_32_2}, +	{1, arcs_32_3}, +	{2, arcs_32_4},  };  static arc arcs_33_0[1] = {  	{72, 1}, @@ -677,70 +699,70 @@ static state states_33[2] = {  	{1, arcs_33_0},  	{2, arcs_33_1},  }; -static arc arcs_34_0[2] = { +static arc arcs_34_0[1] = {  	{74, 1}, -	{75, 2},  }; -static arc arcs_34_1[1] = { -	{72, 2}, +static arc arcs_34_1[2] = { +	{75, 0}, +	{0, 1}, +}; +static state states_34[2] = { +	{1, arcs_34_0}, +	{2, arcs_34_1},  }; -static arc arcs_34_2[1] = { +static arc arcs_35_0[2] = { +	{76, 1}, +	{77, 2}, +}; +static arc arcs_35_1[1] = { +	{74, 2}, +}; +static arc arcs_35_2[1] = {  	{0, 2},  }; -static state states_34[3] = { -	{2, arcs_34_0}, -	{1, arcs_34_1}, -	{1, arcs_34_2}, +static state states_35[3] = { +	{2, arcs_35_0}, +	{1, arcs_35_1}, +	{1, arcs_35_2},  }; -static arc arcs_35_0[1] = { -	{76, 1}, +static arc arcs_36_0[1] = { +	{78, 1},  }; -static arc arcs_35_1[2] = { -	{77, 0}, +static arc arcs_36_1[2] = { +	{79, 0},  	{0, 1},  }; -static state states_35[2] = { -	{1, arcs_35_0}, -	{2, arcs_35_1}, +static state states_36[2] = { +	{1, arcs_36_0}, +	{2, arcs_36_1},  }; -static arc arcs_36_0[10] = { -	{78, 1}, -	{79, 1}, +static arc arcs_37_0[10] = {  	{80, 1},  	{81, 1},  	{82, 1},  	{83, 1},  	{84, 1}, -	{63, 1}, -	{74, 2}, -	{85, 3}, +	{85, 1}, +	{86, 1}, +	{55, 1}, +	{76, 2}, +	{87, 3},  }; -static arc arcs_36_1[1] = { +static arc arcs_37_1[1] = {  	{0, 1},  }; -static arc arcs_36_2[1] = { -	{63, 1}, +static arc arcs_37_2[1] = { +	{55, 1},  }; -static arc arcs_36_3[2] = { -	{74, 1}, +static arc arcs_37_3[2] = { +	{76, 1},  	{0, 3},  }; -static state states_36[4] = { -	{10, arcs_36_0}, -	{1, arcs_36_1}, -	{1, arcs_36_2}, -	{2, arcs_36_3}, -}; -static arc arcs_37_0[1] = { -	{86, 1}, -}; -static arc arcs_37_1[2] = { -	{87, 0}, -	{0, 1}, -}; -static state states_37[2] = { -	{1, arcs_37_0}, -	{2, arcs_37_1}, +static state states_37[4] = { +	{10, arcs_37_0}, +	{1, arcs_37_1}, +	{1, arcs_37_2}, +	{2, arcs_37_3},  };  static arc arcs_38_0[1] = {  	{88, 1}, @@ -767,21 +789,20 @@ static state states_39[2] = {  static arc arcs_40_0[1] = {  	{92, 1},  }; -static arc arcs_40_1[3] = { +static arc arcs_40_1[2] = {  	{93, 0}, -	{94, 0},  	{0, 1},  };  static state states_40[2] = {  	{1, arcs_40_0}, -	{3, arcs_40_1}, +	{2, arcs_40_1},  };  static arc arcs_41_0[1] = { -	{95, 1}, +	{94, 1},  };  static arc arcs_41_1[3] = { +	{95, 0},  	{96, 0}, -	{97, 0},  	{0, 1},  };  static state states_41[2] = { @@ -789,170 +810,166 @@ static state states_41[2] = {  	{3, arcs_41_1},  };  static arc arcs_42_0[1] = { -	{98, 1}, +	{97, 1},  }; -static arc arcs_42_1[4] = { -	{22, 0}, +static arc arcs_42_1[3] = { +	{98, 0},  	{99, 0}, -	{100, 0},  	{0, 1},  };  static state states_42[2] = {  	{1, arcs_42_0}, -	{4, arcs_42_1}, +	{3, arcs_42_1},  }; -static arc arcs_43_0[4] = { -	{96, 1}, -	{97, 1}, -	{101, 1}, -	{102, 2}, +static arc arcs_43_0[1] = { +	{100, 1},  }; -static arc arcs_43_1[1] = { -	{98, 3}, +static arc arcs_43_1[4] = { +	{22, 0}, +	{101, 0}, +	{102, 0}, +	{0, 1},  }; -static arc arcs_43_2[2] = { -	{103, 2}, +static state states_43[2] = { +	{1, arcs_43_0}, +	{4, arcs_43_1}, +}; +static arc arcs_44_0[4] = { +	{98, 1}, +	{99, 1}, +	{103, 1}, +	{104, 2}, +}; +static arc arcs_44_1[1] = { +	{100, 3}, +}; +static arc arcs_44_2[2] = { +	{105, 2},  	{0, 2},  }; -static arc arcs_43_3[1] = { +static arc arcs_44_3[1] = {  	{0, 3},  }; -static state states_43[4] = { -	{4, arcs_43_0}, -	{1, arcs_43_1}, -	{2, arcs_43_2}, -	{1, arcs_43_3}, +static state states_44[4] = { +	{4, arcs_44_0}, +	{1, arcs_44_1}, +	{2, arcs_44_2}, +	{1, arcs_44_3},  }; -static arc arcs_44_0[7] = { +static arc arcs_45_0[7] = {  	{17, 1}, -	{104, 2}, -	{106, 3}, -	{109, 4}, +	{106, 2}, +	{108, 3}, +	{111, 4},  	{13, 5}, -	{110, 5}, -	{111, 5}, +	{112, 5}, +	{113, 5},  }; -static arc arcs_44_1[2] = { +static arc arcs_45_1[2] = {  	{9, 6},  	{19, 5},  }; -static arc arcs_44_2[2] = { +static arc arcs_45_2[2] = {  	{9, 7}, -	{105, 5}, +	{107, 5},  }; -static arc arcs_44_3[2] = { -	{107, 8}, -	{108, 5}, +static arc arcs_45_3[2] = { +	{109, 8}, +	{110, 5},  }; -static arc arcs_44_4[1] = { +static arc arcs_45_4[1] = {  	{9, 9},  }; -static arc arcs_44_5[1] = { +static arc arcs_45_5[1] = {  	{0, 5},  }; -static arc arcs_44_6[1] = { +static arc arcs_45_6[1] = {  	{19, 5},  }; -static arc arcs_44_7[1] = { -	{105, 5}, +static arc arcs_45_7[1] = { +	{107, 5},  }; -static arc arcs_44_8[1] = { -	{108, 5}, +static arc arcs_45_8[1] = { +	{110, 5},  }; -static arc arcs_44_9[1] = { -	{109, 5}, +static arc arcs_45_9[1] = { +	{111, 5},  }; -static state states_44[10] = { -	{7, arcs_44_0}, -	{2, arcs_44_1}, -	{2, arcs_44_2}, -	{2, arcs_44_3}, -	{1, arcs_44_4}, -	{1, arcs_44_5}, -	{1, arcs_44_6}, -	{1, arcs_44_7}, -	{1, arcs_44_8}, -	{1, arcs_44_9}, -}; -static arc arcs_45_0[3] = { +static state states_45[10] = { +	{7, arcs_45_0}, +	{2, arcs_45_1}, +	{2, arcs_45_2}, +	{2, arcs_45_3}, +	{1, arcs_45_4}, +	{1, arcs_45_5}, +	{1, arcs_45_6}, +	{1, arcs_45_7}, +	{1, arcs_45_8}, +	{1, arcs_45_9}, +}; +static arc arcs_46_0[3] = {  	{17, 1}, -	{104, 2}, -	{113, 3}, +	{106, 2}, +	{115, 3},  }; -static arc arcs_45_1[2] = { +static arc arcs_46_1[2] = {  	{9, 4},  	{19, 5},  }; -static arc arcs_45_2[1] = { -	{112, 6}, +static arc arcs_46_2[1] = { +	{114, 6},  }; -static arc arcs_45_3[1] = { +static arc arcs_46_3[1] = {  	{13, 5},  }; -static arc arcs_45_4[1] = { +static arc arcs_46_4[1] = {  	{19, 5},  }; -static arc arcs_45_5[1] = { +static arc arcs_46_5[1] = {  	{0, 5},  }; -static arc arcs_45_6[1] = { -	{105, 5}, +static arc arcs_46_6[1] = { +	{107, 5},  }; -static state states_45[7] = { -	{3, arcs_45_0}, -	{2, arcs_45_1}, -	{1, arcs_45_2}, -	{1, arcs_45_3}, -	{1, arcs_45_4}, -	{1, arcs_45_5}, -	{1, arcs_45_6}, +static state states_46[7] = { +	{3, arcs_46_0}, +	{2, arcs_46_1}, +	{1, arcs_46_2}, +	{1, arcs_46_3}, +	{1, arcs_46_4}, +	{1, arcs_46_5}, +	{1, arcs_46_6},  }; -static arc arcs_46_0[2] = { +static arc arcs_47_0[2] = {  	{37, 1},  	{15, 2},  }; -static arc arcs_46_1[2] = { +static arc arcs_47_1[2] = {  	{15, 2},  	{0, 1},  }; -static arc arcs_46_2[2] = { +static arc arcs_47_2[2] = {  	{37, 3},  	{0, 2},  }; -static arc arcs_46_3[1] = { +static arc arcs_47_3[1] = {  	{0, 3},  }; -static state states_46[4] = { -	{2, arcs_46_0}, -	{2, arcs_46_1}, -	{2, arcs_46_2}, -	{1, arcs_46_3}, -}; -static arc arcs_47_0[1] = { -	{76, 1}, -}; -static arc arcs_47_1[2] = { -	{21, 2}, -	{0, 1}, -}; -static arc arcs_47_2[2] = { -	{76, 1}, -	{0, 2}, -}; -static state states_47[3] = { -	{1, arcs_47_0}, +static state states_47[4] = { +	{2, arcs_47_0},  	{2, arcs_47_1},  	{2, arcs_47_2}, +	{1, arcs_47_3},  };  static arc arcs_48_0[1] = { -	{37, 1}, +	{78, 1},  };  static arc arcs_48_1[2] = {  	{21, 2},  	{0, 1},  };  static arc arcs_48_2[2] = { -	{37, 1}, +	{78, 1},  	{0, 2},  };  static state states_48[3] = { @@ -963,71 +980,87 @@ static state states_48[3] = {  static arc arcs_49_0[1] = {  	{37, 1},  }; -static arc arcs_49_1[1] = { +static arc arcs_49_1[2] = { +	{21, 2}, +	{0, 1}, +}; +static arc arcs_49_2[2] = { +	{37, 1}, +	{0, 2}, +}; +static state states_49[3] = { +	{1, arcs_49_0}, +	{2, arcs_49_1}, +	{2, arcs_49_2}, +}; +static arc arcs_50_0[1] = { +	{37, 1}, +}; +static arc arcs_50_1[1] = {  	{15, 2},  }; -static arc arcs_49_2[1] = { +static arc arcs_50_2[1] = {  	{37, 3},  }; -static arc arcs_49_3[2] = { +static arc arcs_50_3[2] = {  	{21, 4},  	{0, 3},  }; -static arc arcs_49_4[2] = { +static arc arcs_50_4[2] = {  	{37, 1},  	{0, 4},  }; -static state states_49[5] = { -	{1, arcs_49_0}, -	{1, arcs_49_1}, -	{1, arcs_49_2}, -	{2, arcs_49_3}, -	{2, arcs_49_4}, +static state states_50[5] = { +	{1, arcs_50_0}, +	{1, arcs_50_1}, +	{1, arcs_50_2}, +	{2, arcs_50_3}, +	{2, arcs_50_4},  }; -static arc arcs_50_0[1] = { -	{114, 1}, +static arc arcs_51_0[1] = { +	{116, 1},  }; -static arc arcs_50_1[1] = { +static arc arcs_51_1[1] = {  	{13, 2},  }; -static arc arcs_50_2[2] = { +static arc arcs_51_2[2] = {  	{17, 3},  	{15, 4},  }; -static arc arcs_50_3[1] = { +static arc arcs_51_3[1] = {  	{9, 5},  }; -static arc arcs_50_4[1] = { +static arc arcs_51_4[1] = {  	{16, 6},  }; -static arc arcs_50_5[1] = { +static arc arcs_51_5[1] = {  	{19, 7},  }; -static arc arcs_50_6[1] = { +static arc arcs_51_6[1] = {  	{0, 6},  }; -static arc arcs_50_7[1] = { +static arc arcs_51_7[1] = {  	{15, 4},  }; -static state states_50[8] = { -	{1, arcs_50_0}, -	{1, arcs_50_1}, -	{2, arcs_50_2}, -	{1, arcs_50_3}, -	{1, arcs_50_4}, -	{1, arcs_50_5}, -	{1, arcs_50_6}, -	{1, arcs_50_7}, -}; -static dfa dfas[51] = { +static state states_51[8] = { +	{1, arcs_51_0}, +	{1, arcs_51_1}, +	{2, arcs_51_2}, +	{1, arcs_51_3}, +	{1, arcs_51_4}, +	{1, arcs_51_5}, +	{1, arcs_51_6}, +	{1, arcs_51_7}, +}; +static dfa dfas[52] = {  	{256, "single_input", 0, 3, states_0, -	 "\004\060\002\000\320\360\017\144\001\000\000\000\043\345\004"}, +	 "\004\060\002\000\120\341\137\040\007\020\000\000\214\224\023"},  	{257, "file_input", 0, 2, states_1, -	 "\204\060\002\000\320\360\017\144\001\000\000\000\043\345\004"}, +	 "\204\060\002\000\120\341\137\040\007\020\000\000\214\224\023"},  	{258, "expr_input", 0, 3, states_2, -	 "\000\040\002\000\000\000\000\000\000\004\000\000\043\345\000"}, +	 "\000\040\002\000\000\000\000\000\000\020\000\000\214\224\003"},  	{259, "eval_input", 0, 3, states_3, -	 "\000\040\002\000\000\000\000\000\000\004\000\000\043\345\000"}, +	 "\000\040\002\000\000\000\000\000\000\020\000\000\214\224\003"},  	{260, "funcdef", 0, 6, states_4,  	 "\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000"},  	{261, "parameters", 0, 4, states_5, @@ -1039,108 +1072,110 @@ static dfa dfas[51] = {  	{264, "fplist", 0, 3, states_8,  	 "\000\040\002\000\000\000\000\000\000\000\000\000\000\000\000"},  	{265, "stmt", 0, 2, states_9, -	 "\000\060\002\000\320\360\017\144\001\000\000\000\043\345\004"}, +	 "\000\060\002\000\120\341\137\040\007\020\000\000\214\224\023"},  	{266, "simple_stmt", 0, 4, states_10, -	 "\000\040\002\000\320\360\017\000\000\000\000\000\043\345\000"}, +	 "\000\040\002\000\120\341\137\000\000\020\000\000\214\224\003"},  	{267, "small_stmt", 0, 2, states_11, -	 "\000\040\002\000\320\360\017\000\000\000\000\000\043\345\000"}, +	 "\000\040\002\000\120\341\137\000\000\020\000\000\214\224\003"},  	{268, "expr_stmt", 0, 2, states_12, -	 "\000\040\002\000\000\000\000\000\000\000\000\000\043\345\000"}, +	 "\000\040\002\000\000\000\000\000\000\020\000\000\214\224\003"},  	{269, "print_stmt", 0, 3, states_13,  	 "\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"},  	{270, "del_stmt", 0, 3, states_14,  	 "\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000"},  	{271, "pass_stmt", 0, 2, states_15, -	 "\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000"}, +	 "\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"},  	{272, "flow_stmt", 0, 2, states_16, -	 "\000\000\000\000\000\360\000\000\000\000\000\000\000\000\000"}, +	 "\000\000\000\000\000\340\001\000\000\000\000\000\000\000\000"},  	{273, "break_stmt", 0, 2, states_17, -	 "\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000"}, -	{274, "continue_stmt", 0, 2, states_18,  	 "\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000"}, -	{275, "return_stmt", 0, 3, states_19, +	{274, "continue_stmt", 0, 2, states_18,  	 "\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000"}, -	{276, "raise_stmt", 0, 5, states_20, +	{275, "return_stmt", 0, 3, states_19,  	 "\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000"}, +	{276, "raise_stmt", 0, 5, states_20, +	 "\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000"},  	{277, "import_stmt", 0, 9, states_21, -	 "\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000"}, +	 "\000\000\000\000\000\000\006\000\000\000\000\000\000\000\000"},  	{278, "global_stmt", 0, 3, states_22, -	 "\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000"}, -	{279, "access_stmt", 0, 7, states_23,  	 "\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000"}, +	{279, "access_stmt", 0, 7, states_23, +	 "\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000"},  	{280, "accesstype", 0, 2, states_24,  	 "\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000"}, -	{281, "compound_stmt", 0, 2, states_25, -	 "\000\020\000\000\000\000\000\144\001\000\000\000\000\000\004"}, -	{282, "if_stmt", 0, 8, states_26, -	 "\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000"}, -	{283, "while_stmt", 0, 8, states_27, +	{281, "exec_stmt", 0, 7, states_25, +	 "\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000"}, +	{282, "compound_stmt", 0, 2, states_26, +	 "\000\020\000\000\000\000\000\040\007\000\000\000\000\000\020"}, +	{283, "if_stmt", 0, 8, states_27,  	 "\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000"}, -	{284, "for_stmt", 0, 10, states_28, -	 "\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000"}, -	{285, "try_stmt", 0, 10, states_29, +	{284, "while_stmt", 0, 8, states_28,  	 "\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000"}, -	{286, "except_clause", 0, 5, states_30, -	 "\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000"}, -	{287, "suite", 0, 5, states_31, -	 "\004\040\002\000\320\360\017\000\000\000\000\000\043\345\000"}, -	{288, "test", 0, 2, states_32, -	 "\000\040\002\000\000\000\000\000\000\004\000\000\043\345\000"}, -	{289, "and_test", 0, 2, states_33, -	 "\000\040\002\000\000\000\000\000\000\004\000\000\043\345\000"}, -	{290, "not_test", 0, 3, states_34, -	 "\000\040\002\000\000\000\000\000\000\004\000\000\043\345\000"}, -	{291, "comparison", 0, 2, states_35, -	 "\000\040\002\000\000\000\000\000\000\000\000\000\043\345\000"}, -	{292, "comp_op", 0, 4, states_36, -	 "\000\000\000\000\000\000\000\200\000\304\077\000\000\000\000"}, -	{293, "expr", 0, 2, states_37, -	 "\000\040\002\000\000\000\000\000\000\000\000\000\043\345\000"}, -	{294, "xor_expr", 0, 2, states_38, -	 "\000\040\002\000\000\000\000\000\000\000\000\000\043\345\000"}, -	{295, "and_expr", 0, 2, states_39, -	 "\000\040\002\000\000\000\000\000\000\000\000\000\043\345\000"}, -	{296, "shift_expr", 0, 2, states_40, -	 "\000\040\002\000\000\000\000\000\000\000\000\000\043\345\000"}, -	{297, "arith_expr", 0, 2, states_41, -	 "\000\040\002\000\000\000\000\000\000\000\000\000\043\345\000"}, -	{298, "term", 0, 2, states_42, -	 "\000\040\002\000\000\000\000\000\000\000\000\000\043\345\000"}, -	{299, "factor", 0, 4, states_43, -	 "\000\040\002\000\000\000\000\000\000\000\000\000\043\345\000"}, -	{300, "atom", 0, 10, states_44, -	 "\000\040\002\000\000\000\000\000\000\000\000\000\000\345\000"}, -	{301, "trailer", 0, 7, states_45, -	 "\000\000\002\000\000\000\000\000\000\000\000\000\000\001\002"}, -	{302, "subscript", 0, 4, states_46, -	 "\000\240\002\000\000\000\000\000\000\004\000\000\043\345\000"}, -	{303, "exprlist", 0, 3, states_47, -	 "\000\040\002\000\000\000\000\000\000\000\000\000\043\345\000"}, -	{304, "testlist", 0, 3, states_48, -	 "\000\040\002\000\000\000\000\000\000\004\000\000\043\345\000"}, -	{305, "dictmaker", 0, 5, states_49, -	 "\000\040\002\000\000\000\000\000\000\004\000\000\043\345\000"}, -	{306, "classdef", 0, 8, states_50, -	 "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004"}, -}; -static label labels[115] = { +	{285, "for_stmt", 0, 10, states_29, +	 "\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000"}, +	{286, "try_stmt", 0, 10, states_30, +	 "\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000"}, +	{287, "except_clause", 0, 5, states_31, +	 "\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000"}, +	{288, "suite", 0, 5, states_32, +	 "\004\040\002\000\120\341\137\000\000\020\000\000\214\224\003"}, +	{289, "test", 0, 2, states_33, +	 "\000\040\002\000\000\000\000\000\000\020\000\000\214\224\003"}, +	{290, "and_test", 0, 2, states_34, +	 "\000\040\002\000\000\000\000\000\000\020\000\000\214\224\003"}, +	{291, "not_test", 0, 3, states_35, +	 "\000\040\002\000\000\000\000\000\000\020\000\000\214\224\003"}, +	{292, "comparison", 0, 2, states_36, +	 "\000\040\002\000\000\000\000\000\000\000\000\000\214\224\003"}, +	{293, "comp_op", 0, 4, states_37, +	 "\000\000\000\000\000\000\200\000\000\020\377\000\000\000\000"}, +	{294, "expr", 0, 2, states_38, +	 "\000\040\002\000\000\000\000\000\000\000\000\000\214\224\003"}, +	{295, "xor_expr", 0, 2, states_39, +	 "\000\040\002\000\000\000\000\000\000\000\000\000\214\224\003"}, +	{296, "and_expr", 0, 2, states_40, +	 "\000\040\002\000\000\000\000\000\000\000\000\000\214\224\003"}, +	{297, "shift_expr", 0, 2, states_41, +	 "\000\040\002\000\000\000\000\000\000\000\000\000\214\224\003"}, +	{298, "arith_expr", 0, 2, states_42, +	 "\000\040\002\000\000\000\000\000\000\000\000\000\214\224\003"}, +	{299, "term", 0, 2, states_43, +	 "\000\040\002\000\000\000\000\000\000\000\000\000\214\224\003"}, +	{300, "factor", 0, 4, states_44, +	 "\000\040\002\000\000\000\000\000\000\000\000\000\214\224\003"}, +	{301, "atom", 0, 10, states_45, +	 "\000\040\002\000\000\000\000\000\000\000\000\000\000\224\003"}, +	{302, "trailer", 0, 7, states_46, +	 "\000\000\002\000\000\000\000\000\000\000\000\000\000\004\010"}, +	{303, "subscript", 0, 4, states_47, +	 "\000\240\002\000\000\000\000\000\000\020\000\000\214\224\003"}, +	{304, "exprlist", 0, 3, states_48, +	 "\000\040\002\000\000\000\000\000\000\000\000\000\214\224\003"}, +	{305, "testlist", 0, 3, states_49, +	 "\000\040\002\000\000\000\000\000\000\020\000\000\214\224\003"}, +	{306, "dictmaker", 0, 5, states_50, +	 "\000\040\002\000\000\000\000\000\000\020\000\000\214\224\003"}, +	{307, "classdef", 0, 8, states_51, +	 "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020"}, +}; +static label labels[117] = {  	{0, "EMPTY"},  	{256, 0},  	{4, 0},  	{266, 0}, -	{281, 0}, +	{282, 0},  	{257, 0},  	{265, 0},  	{0, 0},  	{258, 0}, -	{304, 0}, +	{305, 0},  	{259, 0},  	{260, 0},  	{1, "def"},  	{1, 0},  	{261, 0},  	{11, 0}, -	{287, 0}, +	{288, 0},  	{7, 0},  	{262, 0},  	{8, 0}, @@ -1158,11 +1193,12 @@ static label labels[115] = {  	{277, 0},  	{278, 0},  	{279, 0}, -	{303, 0}, +	{281, 0},  	{22, 0},  	{1, "print"}, -	{288, 0}, +	{289, 0},  	{1, "del"}, +	{304, 0},  	{1, "pass"},  	{273, 0},  	{274, 0}, @@ -1177,31 +1213,32 @@ static label labels[115] = {  	{1, "global"},  	{1, "access"},  	{280, 0}, -	{282, 0}, +	{1, "exec"}, +	{1, "in"},  	{283, 0},  	{284, 0},  	{285, 0}, -	{306, 0}, +	{286, 0}, +	{307, 0},  	{1, "if"},  	{1, "elif"},  	{1, "else"},  	{1, "while"},  	{1, "for"}, -	{1, "in"},  	{1, "try"}, -	{286, 0}, +	{287, 0},  	{1, "finally"},  	{1, "except"},  	{5, 0},  	{6, 0}, -	{289, 0}, -	{1, "or"},  	{290, 0}, +	{1, "or"}, +	{291, 0},  	{1, "and"},  	{1, "not"}, -	{291, 0}, -	{293, 0},  	{292, 0}, +	{294, 0}, +	{293, 0},  	{20, 0},  	{21, 0},  	{28, 0}, @@ -1210,39 +1247,39 @@ static label labels[115] = {  	{29, 0},  	{29, 0},  	{1, "is"}, -	{294, 0}, -	{18, 0},  	{295, 0}, -	{33, 0}, +	{18, 0},  	{296, 0}, -	{19, 0}, +	{33, 0},  	{297, 0}, +	{19, 0}, +	{298, 0},  	{34, 0},  	{35, 0}, -	{298, 0}, +	{299, 0},  	{14, 0},  	{15, 0}, -	{299, 0}, +	{300, 0},  	{17, 0},  	{24, 0},  	{32, 0}, -	{300, 0},  	{301, 0}, +	{302, 0},  	{9, 0},  	{10, 0},  	{26, 0}, -	{305, 0}, +	{306, 0},  	{27, 0},  	{25, 0},  	{2, 0},  	{3, 0}, -	{302, 0}, +	{303, 0},  	{23, 0},  	{1, "class"},  };  grammar gram = { -	51, +	52,  	dfas, -	{115, labels}, +	{117, labels},  	256  };  | 
