mirror of
https://github.com/python/cpython.git
synced 2025-08-01 07:33:08 +00:00
with and as are now keywords. There are some generated files I can't recreate.
This commit is contained in:
parent
98775dfebc
commit
ca460d9722
11 changed files with 35 additions and 35 deletions
|
@ -64,8 +64,8 @@ import_stmt: import_name | import_from
|
||||||
import_name: 'import' dotted_as_names
|
import_name: 'import' dotted_as_names
|
||||||
import_from: ('from' ('.'* dotted_name | '.'+)
|
import_from: ('from' ('.'* dotted_name | '.'+)
|
||||||
'import' ('*' | '(' import_as_names ')' | import_as_names))
|
'import' ('*' | '(' import_as_names ')' | import_as_names))
|
||||||
import_as_name: NAME [('as' | NAME) NAME]
|
import_as_name: NAME ['as' NAME]
|
||||||
dotted_as_name: dotted_name [('as' | NAME) NAME]
|
dotted_as_name: dotted_name ['as' NAME]
|
||||||
import_as_names: import_as_name (',' import_as_name)* [',']
|
import_as_names: import_as_name (',' import_as_name)* [',']
|
||||||
dotted_as_names: dotted_as_name (',' dotted_as_name)*
|
dotted_as_names: dotted_as_name (',' dotted_as_name)*
|
||||||
dotted_name: NAME ('.' NAME)*
|
dotted_name: NAME ('.' NAME)*
|
||||||
|
@ -83,7 +83,7 @@ try_stmt: ('try' ':' suite
|
||||||
['finally' ':' suite] |
|
['finally' ':' suite] |
|
||||||
'finally' ':' suite))
|
'finally' ':' suite))
|
||||||
with_stmt: 'with' test [ with_var ] ':' suite
|
with_stmt: 'with' test [ with_var ] ':' suite
|
||||||
with_var: ('as' | NAME) expr
|
with_var: 'as' expr
|
||||||
# NB compile.c makes sure that the default except clause is last
|
# NB compile.c makes sure that the default except clause is last
|
||||||
except_clause: 'except' [test [',' test]]
|
except_clause: 'except' [test [',' test]]
|
||||||
suite: simple_stmt | NEWLINE INDENT stmt+ DEDENT
|
suite: simple_stmt | NEWLINE INDENT stmt+ DEDENT
|
||||||
|
|
|
@ -52,7 +52,9 @@ typedef struct {
|
||||||
/* This should be defined if a future statement modifies the syntax.
|
/* This should be defined if a future statement modifies the syntax.
|
||||||
For example, when a keyword is added.
|
For example, when a keyword is added.
|
||||||
*/
|
*/
|
||||||
|
#if 0
|
||||||
#define PY_PARSER_REQUIRES_FUTURE_KEYWORD
|
#define PY_PARSER_REQUIRES_FUTURE_KEYWORD
|
||||||
|
#endif
|
||||||
|
|
||||||
#define CO_MAXBLOCKS 20 /* Max static block nesting within a function */
|
#define CO_MAXBLOCKS 20 /* Max static block nesting within a function */
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,9 @@ typedef struct {
|
||||||
|
|
||||||
#define PyPARSE_DONT_IMPLY_DEDENT 0x0002
|
#define PyPARSE_DONT_IMPLY_DEDENT 0x0002
|
||||||
|
|
||||||
|
#if 0
|
||||||
#define PyPARSE_WITH_IS_KEYWORD 0x0003
|
#define PyPARSE_WITH_IS_KEYWORD 0x0003
|
||||||
|
#endif
|
||||||
|
|
||||||
PyAPI_FUNC(node *) PyParser_ParseString(const char *, grammar *, int,
|
PyAPI_FUNC(node *) PyParser_ParseString(const char *, grammar *, int,
|
||||||
perrdetail *);
|
perrdetail *);
|
||||||
|
|
|
@ -233,7 +233,7 @@ class TalkTo:
|
||||||
"""Send 'activate' command"""
|
"""Send 'activate' command"""
|
||||||
self.send('misc', 'actv')
|
self.send('misc', 'actv')
|
||||||
|
|
||||||
def _get(self, _object, as=None, _attributes={}):
|
def _get(self, _object, asfile=None, _attributes={}):
|
||||||
"""_get: get data from an object
|
"""_get: get data from an object
|
||||||
Required argument: the object
|
Required argument: the object
|
||||||
Keyword argument _attributes: AppleEvent attribute dictionary
|
Keyword argument _attributes: AppleEvent attribute dictionary
|
||||||
|
@ -243,8 +243,8 @@ class TalkTo:
|
||||||
_subcode = 'getd'
|
_subcode = 'getd'
|
||||||
|
|
||||||
_arguments = {'----':_object}
|
_arguments = {'----':_object}
|
||||||
if as:
|
if asfile:
|
||||||
_arguments['rtyp'] = mktype(as)
|
_arguments['rtyp'] = mktype(asfile)
|
||||||
|
|
||||||
_reply, _arguments, _attributes = self.send(_code, _subcode,
|
_reply, _arguments, _attributes = self.send(_code, _subcode,
|
||||||
_arguments, _attributes)
|
_arguments, _attributes)
|
||||||
|
@ -253,8 +253,8 @@ class TalkTo:
|
||||||
|
|
||||||
if _arguments.has_key('----'):
|
if _arguments.has_key('----'):
|
||||||
return _arguments['----']
|
return _arguments['----']
|
||||||
if as:
|
if asfile:
|
||||||
item.__class__ = as
|
item.__class__ = asfile
|
||||||
return item
|
return item
|
||||||
|
|
||||||
get = _get
|
get = _get
|
||||||
|
|
|
@ -300,7 +300,7 @@ class AppleScript_Suite_Events:
|
||||||
if _arguments.has_key('----'):
|
if _arguments.has_key('----'):
|
||||||
return _arguments['----']
|
return _arguments['----']
|
||||||
|
|
||||||
def as(self, _object, _attributes={}, **_arguments):
|
def as_(self, _object, _attributes={}, **_arguments):
|
||||||
"""as: Coercion
|
"""as: Coercion
|
||||||
Required argument: an AE object reference
|
Required argument: an AE object reference
|
||||||
Keyword argument _attributes: AppleEvent attribute dictionary
|
Keyword argument _attributes: AppleEvent attribute dictionary
|
||||||
|
|
|
@ -1550,7 +1550,7 @@ IE_NOMEM = -1
|
||||||
AS_PAGLCK = 0x80
|
AS_PAGLCK = 0x80
|
||||||
AS_CLAIMGAP = 0x40
|
AS_CLAIMGAP = 0x40
|
||||||
AS_UNMAPWAIT = 0x20
|
AS_UNMAPWAIT = 0x20
|
||||||
def AS_TYPE_64BIT(as): return \
|
def AS_TYPE_64BIT(as_): return \
|
||||||
|
|
||||||
AS_LREP_LINKEDLIST = 0
|
AS_LREP_LINKEDLIST = 0
|
||||||
AS_LREP_SKIPLIST = 1
|
AS_LREP_SKIPLIST = 1
|
||||||
|
|
|
@ -30,6 +30,8 @@ Core and builtins
|
||||||
required changing the .pyc magic number. This means that .pyc files
|
required changing the .pyc magic number. This means that .pyc files
|
||||||
generated before 2.5c2 will be regenerated.
|
generated before 2.5c2 will be regenerated.
|
||||||
|
|
||||||
|
- with and as are now keywords.
|
||||||
|
|
||||||
|
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
|
@ -89,9 +89,7 @@ PyParser_ParseFileFlags(FILE *fp, const char *filename, grammar *g, int start,
|
||||||
return parsetok(tok, g, start, err_ret, flags);
|
return parsetok(tok, g, start, err_ret, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Parse input coming from the given tokenizer structure.
|
#if 0
|
||||||
Return error code. */
|
|
||||||
|
|
||||||
static char with_msg[] =
|
static char with_msg[] =
|
||||||
"%s:%d: Warning: 'with' will become a reserved keyword in Python 2.6\n";
|
"%s:%d: Warning: 'with' will become a reserved keyword in Python 2.6\n";
|
||||||
|
|
||||||
|
@ -105,6 +103,10 @@ warn(const char *msg, const char *filename, int lineno)
|
||||||
filename = "<string>";
|
filename = "<string>";
|
||||||
PySys_WriteStderr(msg, filename, lineno);
|
PySys_WriteStderr(msg, filename, lineno);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Parse input coming from the given tokenizer structure.
|
||||||
|
Return error code. */
|
||||||
|
|
||||||
static node *
|
static node *
|
||||||
parsetok(struct tok_state *tok, grammar *g, int start, perrdetail *err_ret,
|
parsetok(struct tok_state *tok, grammar *g, int start, perrdetail *err_ret,
|
||||||
|
|
12
Python/ast.c
12
Python/ast.c
|
@ -2190,10 +2190,6 @@ alias_for_import_name(struct compiling *c, const node *n)
|
||||||
case import_as_name:
|
case import_as_name:
|
||||||
str = NULL;
|
str = NULL;
|
||||||
if (NCH(n) == 3) {
|
if (NCH(n) == 3) {
|
||||||
if (strcmp(STR(CHILD(n, 1)), "as") != 0) {
|
|
||||||
ast_error(n, "must use 'as' in import");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
str = NEW_IDENTIFIER(CHILD(n, 2));
|
str = NEW_IDENTIFIER(CHILD(n, 2));
|
||||||
}
|
}
|
||||||
return alias(NEW_IDENTIFIER(CHILD(n, 0)), str, c->c_arena);
|
return alias(NEW_IDENTIFIER(CHILD(n, 0)), str, c->c_arena);
|
||||||
|
@ -2206,10 +2202,6 @@ alias_for_import_name(struct compiling *c, const node *n)
|
||||||
alias_ty a = alias_for_import_name(c, CHILD(n, 0));
|
alias_ty a = alias_for_import_name(c, CHILD(n, 0));
|
||||||
if (!a)
|
if (!a)
|
||||||
return NULL;
|
return NULL;
|
||||||
if (strcmp(STR(CHILD(n, 1)), "as") != 0) {
|
|
||||||
ast_error(n, "must use 'as' in import");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
assert(!a->asname);
|
assert(!a->asname);
|
||||||
a->asname = NEW_IDENTIFIER(CHILD(n, 2));
|
a->asname = NEW_IDENTIFIER(CHILD(n, 2));
|
||||||
return a;
|
return a;
|
||||||
|
@ -2848,10 +2840,6 @@ static expr_ty
|
||||||
ast_for_with_var(struct compiling *c, const node *n)
|
ast_for_with_var(struct compiling *c, const node *n)
|
||||||
{
|
{
|
||||||
REQ(n, with_var);
|
REQ(n, with_var);
|
||||||
if (strcmp(STR(CHILD(n, 0)), "as") != 0) {
|
|
||||||
ast_error(n, "expected \"with [expr] as [var]\"");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
return ast_for_expr(c, CHILD(n, 1));
|
return ast_for_expr(c, CHILD(n, 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -551,9 +551,8 @@ static state states_26[8] = {
|
||||||
static arc arcs_27_0[1] = {
|
static arc arcs_27_0[1] = {
|
||||||
{19, 1},
|
{19, 1},
|
||||||
};
|
};
|
||||||
static arc arcs_27_1[3] = {
|
static arc arcs_27_1[2] = {
|
||||||
{78, 2},
|
{78, 2},
|
||||||
{19, 2},
|
|
||||||
{0, 1},
|
{0, 1},
|
||||||
};
|
};
|
||||||
static arc arcs_27_2[1] = {
|
static arc arcs_27_2[1] = {
|
||||||
|
@ -564,16 +563,15 @@ static arc arcs_27_3[1] = {
|
||||||
};
|
};
|
||||||
static state states_27[4] = {
|
static state states_27[4] = {
|
||||||
{1, arcs_27_0},
|
{1, arcs_27_0},
|
||||||
{3, arcs_27_1},
|
{2, arcs_27_1},
|
||||||
{1, arcs_27_2},
|
{1, arcs_27_2},
|
||||||
{1, arcs_27_3},
|
{1, arcs_27_3},
|
||||||
};
|
};
|
||||||
static arc arcs_28_0[1] = {
|
static arc arcs_28_0[1] = {
|
||||||
{12, 1},
|
{12, 1},
|
||||||
};
|
};
|
||||||
static arc arcs_28_1[3] = {
|
static arc arcs_28_1[2] = {
|
||||||
{78, 2},
|
{78, 2},
|
||||||
{19, 2},
|
|
||||||
{0, 1},
|
{0, 1},
|
||||||
};
|
};
|
||||||
static arc arcs_28_2[1] = {
|
static arc arcs_28_2[1] = {
|
||||||
|
@ -584,7 +582,7 @@ static arc arcs_28_3[1] = {
|
||||||
};
|
};
|
||||||
static state states_28[4] = {
|
static state states_28[4] = {
|
||||||
{1, arcs_28_0},
|
{1, arcs_28_0},
|
||||||
{3, arcs_28_1},
|
{2, arcs_28_1},
|
||||||
{1, arcs_28_2},
|
{1, arcs_28_2},
|
||||||
{1, arcs_28_3},
|
{1, arcs_28_3},
|
||||||
};
|
};
|
||||||
|
@ -912,9 +910,8 @@ static state states_40[6] = {
|
||||||
{1, arcs_40_4},
|
{1, arcs_40_4},
|
||||||
{1, arcs_40_5},
|
{1, arcs_40_5},
|
||||||
};
|
};
|
||||||
static arc arcs_41_0[2] = {
|
static arc arcs_41_0[1] = {
|
||||||
{78, 1},
|
{78, 1},
|
||||||
{19, 1},
|
|
||||||
};
|
};
|
||||||
static arc arcs_41_1[1] = {
|
static arc arcs_41_1[1] = {
|
||||||
{82, 2},
|
{82, 2},
|
||||||
|
@ -923,7 +920,7 @@ static arc arcs_41_2[1] = {
|
||||||
{0, 2},
|
{0, 2},
|
||||||
};
|
};
|
||||||
static state states_41[3] = {
|
static state states_41[3] = {
|
||||||
{2, arcs_41_0},
|
{1, arcs_41_0},
|
||||||
{1, arcs_41_1},
|
{1, arcs_41_1},
|
||||||
{1, arcs_41_2},
|
{1, arcs_41_2},
|
||||||
};
|
};
|
||||||
|
@ -1865,7 +1862,7 @@ static dfa dfas[84] = {
|
||||||
{296, "with_stmt", 0, 6, states_40,
|
{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"},
|
"\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,
|
{297, "with_var", 0, 3, states_41,
|
||||||
"\000\000\010\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000"},
|
"\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,
|
{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"},
|
"\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,
|
{299, "suite", 0, 5, states_43,
|
||||||
|
|
|
@ -723,11 +723,18 @@ PyRun_InteractiveLoopFlags(FILE *fp, const char *filename, PyCompilerFlags *flag
|
||||||
}
|
}
|
||||||
|
|
||||||
/* compute parser flags based on compiler flags */
|
/* compute parser flags based on compiler flags */
|
||||||
|
#define PARSER_FLAGS(flags) \
|
||||||
|
((flags) ? ((((flags)->cf_flags & PyCF_DONT_IMPLY_DEDENT) ? \
|
||||||
|
PyPARSE_DONT_IMPLY_DEDENT : 0)) : 0)
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
/* Keep an example of flags with future keyword support. */
|
||||||
#define PARSER_FLAGS(flags) \
|
#define PARSER_FLAGS(flags) \
|
||||||
((flags) ? ((((flags)->cf_flags & PyCF_DONT_IMPLY_DEDENT) ? \
|
((flags) ? ((((flags)->cf_flags & PyCF_DONT_IMPLY_DEDENT) ? \
|
||||||
PyPARSE_DONT_IMPLY_DEDENT : 0) \
|
PyPARSE_DONT_IMPLY_DEDENT : 0) \
|
||||||
| ((flags)->cf_flags & CO_FUTURE_WITH_STATEMENT ? \
|
| ((flags)->cf_flags & CO_FUTURE_WITH_STATEMENT ? \
|
||||||
PyPARSE_WITH_IS_KEYWORD : 0)) : 0)
|
PyPARSE_WITH_IS_KEYWORD : 0)) : 0)
|
||||||
|
#endif
|
||||||
|
|
||||||
int
|
int
|
||||||
PyRun_InteractiveOneFlags(FILE *fp, const char *filename, PyCompilerFlags *flags)
|
PyRun_InteractiveOneFlags(FILE *fp, const char *filename, PyCompilerFlags *flags)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue