Commit cf2375ea authored by Guido van Rossum's avatar Guido van Rossum

* bltinmodule.c: removed exec() built-in function.

* Grammar: add exec statement; allow testlist in expr statement.
* ceval.c, compile.c, opcode.h: support exec statement;
  avoid optimizing locals when it is used
* fileobject.{c,h}: add getfilename() internal function.
parent a388ff7a
......@@ -2,6 +2,10 @@
# Change log:
# 18-Oct-93:
# Use testlist instead of exprlist in expr_stmt
# Add exec statement
# 19-May-93:
# Add access statement
......@@ -87,8 +91,8 @@ fplist: fpdef (',' fpdef)* [',']
stmt: simple_stmt | compound_stmt
simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE
small_stmt: expr_stmt | print_stmt | del_stmt | pass_stmt | flow_stmt | import_stmt | global_stmt | access_stmt
expr_stmt: (exprlist '=')* exprlist
small_stmt: expr_stmt | print_stmt | del_stmt | pass_stmt | flow_stmt | import_stmt | global_stmt | access_stmt | exec_stmt
expr_stmt: (testlist '=')* testlist
# For assignments, additional restrictions enforced by the interpreter
print_stmt: 'print' (test ',')* [test]
del_stmt: 'del' exprlist
......@@ -104,6 +108,7 @@ access_stmt: 'access' ('*' | NAME (',' NAME)*) ':' accesstype (',' accesstype)*
accesstype: NAME+
# accesstype should be ('public' | 'protected' | 'private') ['read'] ['write']
# but can't be because that would create undesirable reserved words!
exec_stmt: 'exec' expr ['in' expr [',' expr]]
compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | funcdef | classdef
if_stmt: 'if' test ':' suite ('elif' test ':' suite)* ['else' ':' suite]
......
......@@ -38,6 +38,7 @@ extern object *newfileobject PROTO((char *, char *));
extern object *newopenfileobject
PROTO((FILE *, char *, char *, int (*)FPROTO((FILE *))));
extern FILE *getfilefile PROTO((object *));
extern object *getfilename PROTO((object *));
extern object *filegetline PROTO((object *, int));
#ifdef __cplusplus
......
......@@ -23,29 +23,30 @@
#define global_stmt 278
#define access_stmt 279
#define accesstype 280
#define compound_stmt 281
#define if_stmt 282
#define while_stmt 283
#define for_stmt 284
#define try_stmt 285
#define except_clause 286
#define suite 287
#define test 288
#define and_test 289
#define not_test 290
#define comparison 291
#define comp_op 292
#define expr 293
#define xor_expr 294
#define and_expr 295
#define shift_expr 296
#define arith_expr 297
#define term 298
#define factor 299
#define atom 300
#define trailer 301
#define subscript 302
#define exprlist 303
#define testlist 304
#define dictmaker 305
#define classdef 306
#define exec_stmt 281
#define compound_stmt 282
#define if_stmt 283
#define while_stmt 284
#define for_stmt 285
#define try_stmt 286
#define except_clause 287
#define suite 288
#define test 289
#define and_test 290
#define not_test 291
#define comparison 292
#define comp_op 293
#define expr 294
#define xor_expr 295
#define and_expr 296
#define shift_expr 297
#define arith_expr 298
#define term 299
#define factor 300
#define atom 301
#define trailer 302
#define subscript 303
#define exprlist 304
#define testlist 305
#define dictmaker 306
#define classdef 307
......@@ -78,6 +78,8 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#define RAISE_EXCEPTION 81
#define LOAD_LOCALS 82
#define RETURN_VALUE 83
#define LOAD_GLOBALS 84
#define EXEC_STMT 85
#define BUILD_FUNCTION 86
#define POP_BLOCK 87
......
......@@ -51,6 +51,16 @@ getfilefile(f)
return ((fileobject *)f)->f_fp;
}
object *
getfilename(f)
object *f;
{
if (f == NULL || !is_fileobject(f))
return NULL;
else
return ((fileobject *)f)->f_name;
}
object *
newopenfileobject(fp, name, mode, close)
FILE *fp;
......
......@@ -232,14 +232,6 @@ builtin_eval(self, v)
return exec_eval(v, eval_input);
}
static object *
builtin_exec(self, v)
object *self;
object *v;
{
return exec_eval(v, file_input);
}
static object *
builtin_execfile(self, v)
object *self;
......@@ -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},
......
......@@ -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 */
......@@ -713,6 +716,22 @@ eval_code(co, globals, locals, owner, arg)
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();
x = newfuncobject(v, f->f_globals);
......@@ -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;
}
......@@ -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);
......@@ -1466,6 +1466,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;
......@@ -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 ||
......
......@@ -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
};
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment