summaryrefslogtreecommitdiffstats
path: root/Parser/Python.asdl
diff options
context:
space:
mode:
Diffstat (limited to 'Parser/Python.asdl')
-rw-r--r--Parser/Python.asdl222
1 files changed, 104 insertions, 118 deletions
diff --git a/Parser/Python.asdl b/Parser/Python.asdl
index 126d478..9a9b933 100644
--- a/Parser/Python.asdl
+++ b/Parser/Python.asdl
@@ -1,129 +1,115 @@
--- ASDL's 5 builtin types are:
--- identifier, int, string, object, constant
+-- ASDL's five builtin types are identifier, int, string, object, bool
-module Python
+module Python version "$Revision$"
{
- mod = Module(stmt* body, type_ignore *type_ignores)
- | Interactive(stmt* body)
- | Expression(expr body)
- | FunctionType(expr* argtypes, expr returns)
-
- -- 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,
- string? type_comment)
- | AsyncFunctionDef(identifier name, arguments args,
- stmt* body, expr* decorator_list, expr? returns,
- string? type_comment)
-
- | ClassDef(identifier name,
- expr* bases,
- keyword* keywords,
- stmt* body,
- expr* decorator_list)
- | Return(expr? value)
-
- | Delete(expr* targets)
- | Assign(expr* targets, expr value, string? type_comment)
- | AugAssign(expr target, operator op, expr value)
- -- 'simple' indicates that we annotate simple name without parens
- | AnnAssign(expr target, expr annotation, expr? value, int simple)
-
- -- use 'orelse' because else is a keyword in target languages
- | For(expr target, expr iter, stmt* body, stmt* orelse, string? type_comment)
- | AsyncFor(expr target, expr iter, stmt* body, stmt* orelse, string? type_comment)
- | While(expr test, stmt* body, stmt* orelse)
- | If(expr test, stmt* body, stmt* orelse)
- | With(withitem* items, stmt* body, string? type_comment)
- | AsyncWith(withitem* items, stmt* body, string? type_comment)
-
- | Raise(expr? exc, expr? cause)
- | Try(stmt* body, excepthandler* handlers, stmt* orelse, 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, int? end_lineno, int? end_col_offset)
-
- -- BoolOp() can use left & right?
- expr = BoolOp(boolop op, expr* values)
- | NamedExpr(expr target, expr value)
- | 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
- | Await(expr value)
- | Yield(expr? value)
- | YieldFrom(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)
- | FormattedValue(expr value, int? conversion, expr? format_spec)
- | JoinedStr(expr* values)
- | Constant(constant value, string? kind)
-
- -- 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, int? end_lineno, int? end_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 | MatMult | Div | Mod | Pow | LShift
+ 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)
+ | ClassDef(identifier name, expr* bases, stmt* body, expr* decorator_list)
+ | Return(expr? value)
+
+ | Delete(expr* targets)
+ | Assign(expr* targets, expr value)
+ | AugAssign(expr target, operator op, expr value)
+
+ -- not sure if bool is allowed, can always use int
+ | Print(expr? dest, expr* values, bool nl)
+
+ -- 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)
+
+ -- 'type' is a bad name
+ | Raise(expr? type, expr? inst, expr? tback)
+ | 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)
+
+ -- Doesn't capture requirement that locals must be
+ -- defined if globals is
+ -- still supports use as a function!
+ | Exec(expr body, expr? globals, expr? locals)
+
+ | Global(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)
+ | Repr(expr value)
+ | Num(object n) -- a number as a PyObject.
+ | Str(string s) -- need to specify raw, unicode, etc?
+ -- 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)
+ | 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 = Ellipsis | 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
+ unaryop = Invert | Not | UAdd | USub
- cmpop = Eq | NotEq | Lt | LtE | Gt | GtE | Is | IsNot | In | NotIn
+ cmpop = Eq | NotEq | Lt | LtE | Gt | GtE | Is | IsNot | In | NotIn
- comprehension = (expr target, expr iter, expr* ifs, int is_async)
+ comprehension = (expr target, expr iter, expr* ifs)
- excepthandler = ExceptHandler(expr? type, identifier? name, stmt* body)
- attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset)
+ -- not sure what to call the first argument for raise and except
+ excepthandler = ExceptHandler(expr? type, expr? name, stmt* body)
+ attributes (int lineno, int col_offset)
- arguments = (arg* posonlyargs, arg* args, arg? vararg, arg* kwonlyargs,
- expr* kw_defaults, arg? kwarg, expr* defaults)
+ arguments = (expr* args, identifier? vararg,
+ identifier? kwarg, expr* defaults)
- arg = (identifier arg, expr? annotation, string? type_comment)
- attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset)
+ -- keyword arguments supplied to call
+ keyword = (identifier arg, expr value)
- -- keyword arguments supplied to call (NULL identifier for **kwargs)
- keyword = (identifier? arg, expr value)
-
- -- import name with optional 'as' alias.
- alias = (identifier name, identifier? asname)
-
- withitem = (expr context_expr, expr? optional_vars)
-
- type_ignore = TypeIgnore(int lineno, string tag)
+ -- import name with optional 'as' alias.
+ alias = (identifier name, identifier? asname)
}