mirror of
https://github.com/python/cpython.git
synced 2024-11-24 17:47:13 +01:00
78565b2216
svn+ssh://pythondev@svn.python.org/python/trunk ........ r73376 | benjamin.peterson | 2009-06-11 17:29:23 -0500 (Thu, 11 Jun 2009) | 1 line remove check for case handled in sub-function ........ r73393 | alexandre.vassalotti | 2009-06-12 13:56:57 -0500 (Fri, 12 Jun 2009) | 2 lines Clear reference to the static PyExc_RecursionErrorInst in _PyExc_Fini. ........ r73398 | alexandre.vassalotti | 2009-06-12 15:57:12 -0500 (Fri, 12 Jun 2009) | 3 lines Add const qualifier to PyErr_SetFromErrnoWithFilename and to PyErr_SetFromErrnoWithUnicodeFilename. ........ r73400 | alexandre.vassalotti | 2009-06-12 16:43:47 -0500 (Fri, 12 Jun 2009) | 2 lines Delete outdated make file for building the parser with MSVC 6. ........ r73404 | benjamin.peterson | 2009-06-12 20:40:00 -0500 (Fri, 12 Jun 2009) | 1 line keep the slice.step field as NULL if no step expression is given ........ r73405 | benjamin.peterson | 2009-06-12 22:46:30 -0500 (Fri, 12 Jun 2009) | 1 line prevent import statements from assigning to None ........ r73409 | benjamin.peterson | 2009-06-13 08:06:21 -0500 (Sat, 13 Jun 2009) | 1 line allow importing from a module named None if it has an 'as' clause ........ r73419 | benjamin.peterson | 2009-06-13 11:19:19 -0500 (Sat, 13 Jun 2009) | 1 line set Print.values to NULL if there are no values ........ r73420 | benjamin.peterson | 2009-06-13 12:08:53 -0500 (Sat, 13 Jun 2009) | 1 line give a better error message when deleting () ........ r73421 | benjamin.peterson | 2009-06-13 15:23:33 -0500 (Sat, 13 Jun 2009) | 1 line when no module is given in a 'from' relative import, make ImportFrom.module NULL ........ r73432 | amaury.forgeotdarc | 2009-06-14 16:20:40 -0500 (Sun, 14 Jun 2009) | 3 lines #6227: Because of a wrong indentation, the test was not testing what it should. Ensure that the snippet in doctest_aliases actually contains aliases. ........ r73457 | benjamin.peterson | 2009-06-16 18:13:09 -0500 (Tue, 16 Jun 2009) | 1 line add underscores ........ r73460 | benjamin.peterson | 2009-06-16 22:23:04 -0500 (Tue, 16 Jun 2009) | 1 line remove unused 'encoding' member from the compiler struct ........ r73485 | benjamin.peterson | 2009-06-19 17:07:47 -0500 (Fri, 19 Jun 2009) | 1 line remove duplicate test ........ r73486 | benjamin.peterson | 2009-06-19 17:09:17 -0500 (Fri, 19 Jun 2009) | 1 line add missing assertion #6313 ........ r73488 | benjamin.peterson | 2009-06-19 17:16:28 -0500 (Fri, 19 Jun 2009) | 1 line show that this one isn't used ........ r73489 | benjamin.peterson | 2009-06-19 17:21:12 -0500 (Fri, 19 Jun 2009) | 1 line use closures ........ r73501 | benjamin.peterson | 2009-06-21 18:01:07 -0500 (Sun, 21 Jun 2009) | 1 line don't need to add the name 'lambda' as assigned ........ r73502 | benjamin.peterson | 2009-06-21 18:03:36 -0500 (Sun, 21 Jun 2009) | 1 line remove tmpname support since it's no longer used ........ r73513 | benjamin.peterson | 2009-06-22 20:18:57 -0500 (Mon, 22 Jun 2009) | 1 line fix grammar ........ r73514 | benjamin.peterson | 2009-06-22 22:01:56 -0500 (Mon, 22 Jun 2009) | 1 line remove some unused symtable constants ........
120 lines
4.2 KiB
Plaintext
120 lines
4.2 KiB
Plaintext
-- ASDL's four builtin types are identifier, int, string, object
|
|
|
|
module Python version "$Revision$"
|
|
{
|
|
mod = Module(stmt* body)
|
|
| Interactive(stmt* body)
|
|
| Expression(expr body)
|
|
|
|
-- not really an actual node but useful in Jython's typesystem.
|
|
| Suite(stmt* body)
|
|
|
|
stmt = FunctionDef(identifier name, arguments args,
|
|
stmt* body, expr* decorator_list, expr? returns)
|
|
| ClassDef(identifier name,
|
|
expr* bases,
|
|
keyword* keywords,
|
|
expr? starargs,
|
|
expr? kwargs,
|
|
stmt* body,
|
|
expr *decorator_list)
|
|
| Return(expr? value)
|
|
|
|
| Delete(expr* targets)
|
|
| Assign(expr* targets, expr value)
|
|
| AugAssign(expr target, operator op, expr value)
|
|
|
|
-- use 'orelse' because else is a keyword in target languages
|
|
| For(expr target, expr iter, stmt* body, stmt* orelse)
|
|
| While(expr test, stmt* body, stmt* orelse)
|
|
| If(expr test, stmt* body, stmt* orelse)
|
|
| With(expr context_expr, expr? optional_vars, stmt* body)
|
|
|
|
| Raise(expr? exc, expr? cause)
|
|
| TryExcept(stmt* body, excepthandler* handlers, stmt* orelse)
|
|
| TryFinally(stmt* body, stmt* finalbody)
|
|
| Assert(expr test, expr? msg)
|
|
|
|
| Import(alias* names)
|
|
| ImportFrom(identifier? module, alias* names, int? level)
|
|
|
|
| Global(identifier* names)
|
|
| Nonlocal(identifier* names)
|
|
| Expr(expr value)
|
|
| Pass | Break | Continue
|
|
|
|
-- XXX Jython will be different
|
|
-- col_offset is the byte offset in the utf8 string the parser uses
|
|
attributes (int lineno, int col_offset)
|
|
|
|
-- BoolOp() can use left & right?
|
|
expr = BoolOp(boolop op, expr* values)
|
|
| BinOp(expr left, operator op, expr right)
|
|
| UnaryOp(unaryop op, expr operand)
|
|
| Lambda(arguments args, expr body)
|
|
| IfExp(expr test, expr body, expr orelse)
|
|
| Dict(expr* keys, expr* values)
|
|
| Set(expr* elts)
|
|
| ListComp(expr elt, comprehension* generators)
|
|
| SetComp(expr elt, comprehension* generators)
|
|
| DictComp(expr key, expr value, comprehension* generators)
|
|
| GeneratorExp(expr elt, comprehension* generators)
|
|
-- the grammar constrains where yield expressions can occur
|
|
| Yield(expr? value)
|
|
-- need sequences for compare to distinguish between
|
|
-- x < 4 < 3 and (x < 4) < 3
|
|
| Compare(expr left, cmpop* ops, expr* comparators)
|
|
| Call(expr func, expr* args, keyword* keywords,
|
|
expr? starargs, expr? kwargs)
|
|
| Num(object n) -- a number as a PyObject.
|
|
| Str(string s) -- need to specify raw, unicode, etc?
|
|
| Bytes(string s)
|
|
| Ellipsis
|
|
-- other literals? bools?
|
|
|
|
-- the following expression can appear in assignment context
|
|
| Attribute(expr value, identifier attr, expr_context ctx)
|
|
| Subscript(expr value, slice slice, expr_context ctx)
|
|
| Starred(expr value, expr_context ctx)
|
|
| Name(identifier id, expr_context ctx)
|
|
| List(expr* elts, expr_context ctx)
|
|
| Tuple(expr* elts, expr_context ctx)
|
|
|
|
-- col_offset is the byte offset in the utf8 string the parser uses
|
|
attributes (int lineno, int col_offset)
|
|
|
|
expr_context = Load | Store | Del | AugLoad | AugStore | Param
|
|
|
|
slice = Slice(expr? lower, expr? upper, expr? step)
|
|
| ExtSlice(slice* dims)
|
|
| Index(expr value)
|
|
|
|
boolop = And | Or
|
|
|
|
operator = Add | Sub | Mult | Div | Mod | Pow | LShift
|
|
| RShift | BitOr | BitXor | BitAnd | FloorDiv
|
|
|
|
unaryop = Invert | Not | UAdd | USub
|
|
|
|
cmpop = Eq | NotEq | Lt | LtE | Gt | GtE | Is | IsNot | In | NotIn
|
|
|
|
comprehension = (expr target, expr iter, expr* ifs)
|
|
|
|
-- not sure what to call the first argument for raise and except
|
|
excepthandler = ExceptHandler(expr? type, identifier? name, stmt* body)
|
|
attributes (int lineno, int col_offset)
|
|
|
|
arguments = (arg* args, identifier? vararg, expr? varargannotation,
|
|
arg* kwonlyargs, identifier? kwarg,
|
|
expr? kwargannotation, expr* defaults,
|
|
expr* kw_defaults)
|
|
arg = (identifier arg, expr? annotation)
|
|
|
|
-- keyword arguments supplied to call
|
|
keyword = (identifier arg, expr value)
|
|
|
|
-- import name with optional 'as' alias.
|
|
alias = (identifier name, identifier? asname)
|
|
}
|
|
|