17db96d56Sopenharmony_ci-- ASDL's 4 builtin types are: 27db96d56Sopenharmony_ci-- identifier, int, string, constant 37db96d56Sopenharmony_ci 47db96d56Sopenharmony_cimodule Python 57db96d56Sopenharmony_ci{ 67db96d56Sopenharmony_ci mod = Module(stmt* body, type_ignore* type_ignores) 77db96d56Sopenharmony_ci | Interactive(stmt* body) 87db96d56Sopenharmony_ci | Expression(expr body) 97db96d56Sopenharmony_ci | FunctionType(expr* argtypes, expr returns) 107db96d56Sopenharmony_ci 117db96d56Sopenharmony_ci stmt = FunctionDef(identifier name, arguments args, 127db96d56Sopenharmony_ci stmt* body, expr* decorator_list, expr? returns, 137db96d56Sopenharmony_ci string? type_comment) 147db96d56Sopenharmony_ci | AsyncFunctionDef(identifier name, arguments args, 157db96d56Sopenharmony_ci stmt* body, expr* decorator_list, expr? returns, 167db96d56Sopenharmony_ci string? type_comment) 177db96d56Sopenharmony_ci 187db96d56Sopenharmony_ci | ClassDef(identifier name, 197db96d56Sopenharmony_ci expr* bases, 207db96d56Sopenharmony_ci keyword* keywords, 217db96d56Sopenharmony_ci stmt* body, 227db96d56Sopenharmony_ci expr* decorator_list) 237db96d56Sopenharmony_ci | Return(expr? value) 247db96d56Sopenharmony_ci 257db96d56Sopenharmony_ci | Delete(expr* targets) 267db96d56Sopenharmony_ci | Assign(expr* targets, expr value, string? type_comment) 277db96d56Sopenharmony_ci | AugAssign(expr target, operator op, expr value) 287db96d56Sopenharmony_ci -- 'simple' indicates that we annotate simple name without parens 297db96d56Sopenharmony_ci | AnnAssign(expr target, expr annotation, expr? value, int simple) 307db96d56Sopenharmony_ci 317db96d56Sopenharmony_ci -- use 'orelse' because else is a keyword in target languages 327db96d56Sopenharmony_ci | For(expr target, expr iter, stmt* body, stmt* orelse, string? type_comment) 337db96d56Sopenharmony_ci | AsyncFor(expr target, expr iter, stmt* body, stmt* orelse, string? type_comment) 347db96d56Sopenharmony_ci | While(expr test, stmt* body, stmt* orelse) 357db96d56Sopenharmony_ci | If(expr test, stmt* body, stmt* orelse) 367db96d56Sopenharmony_ci | With(withitem* items, stmt* body, string? type_comment) 377db96d56Sopenharmony_ci | AsyncWith(withitem* items, stmt* body, string? type_comment) 387db96d56Sopenharmony_ci 397db96d56Sopenharmony_ci | Match(expr subject, match_case* cases) 407db96d56Sopenharmony_ci 417db96d56Sopenharmony_ci | Raise(expr? exc, expr? cause) 427db96d56Sopenharmony_ci | Try(stmt* body, excepthandler* handlers, stmt* orelse, stmt* finalbody) 437db96d56Sopenharmony_ci | TryStar(stmt* body, excepthandler* handlers, stmt* orelse, stmt* finalbody) 447db96d56Sopenharmony_ci | Assert(expr test, expr? msg) 457db96d56Sopenharmony_ci 467db96d56Sopenharmony_ci | Import(alias* names) 477db96d56Sopenharmony_ci | ImportFrom(identifier? module, alias* names, int? level) 487db96d56Sopenharmony_ci 497db96d56Sopenharmony_ci | Global(identifier* names) 507db96d56Sopenharmony_ci | Nonlocal(identifier* names) 517db96d56Sopenharmony_ci | Expr(expr value) 527db96d56Sopenharmony_ci | Pass | Break | Continue 537db96d56Sopenharmony_ci 547db96d56Sopenharmony_ci -- col_offset is the byte offset in the utf8 string the parser uses 557db96d56Sopenharmony_ci attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) 567db96d56Sopenharmony_ci 577db96d56Sopenharmony_ci -- BoolOp() can use left & right? 587db96d56Sopenharmony_ci expr = BoolOp(boolop op, expr* values) 597db96d56Sopenharmony_ci | NamedExpr(expr target, expr value) 607db96d56Sopenharmony_ci | BinOp(expr left, operator op, expr right) 617db96d56Sopenharmony_ci | UnaryOp(unaryop op, expr operand) 627db96d56Sopenharmony_ci | Lambda(arguments args, expr body) 637db96d56Sopenharmony_ci | IfExp(expr test, expr body, expr orelse) 647db96d56Sopenharmony_ci | Dict(expr* keys, expr* values) 657db96d56Sopenharmony_ci | Set(expr* elts) 667db96d56Sopenharmony_ci | ListComp(expr elt, comprehension* generators) 677db96d56Sopenharmony_ci | SetComp(expr elt, comprehension* generators) 687db96d56Sopenharmony_ci | DictComp(expr key, expr value, comprehension* generators) 697db96d56Sopenharmony_ci | GeneratorExp(expr elt, comprehension* generators) 707db96d56Sopenharmony_ci -- the grammar constrains where yield expressions can occur 717db96d56Sopenharmony_ci | Await(expr value) 727db96d56Sopenharmony_ci | Yield(expr? value) 737db96d56Sopenharmony_ci | YieldFrom(expr value) 747db96d56Sopenharmony_ci -- need sequences for compare to distinguish between 757db96d56Sopenharmony_ci -- x < 4 < 3 and (x < 4) < 3 767db96d56Sopenharmony_ci | Compare(expr left, cmpop* ops, expr* comparators) 777db96d56Sopenharmony_ci | Call(expr func, expr* args, keyword* keywords) 787db96d56Sopenharmony_ci | FormattedValue(expr value, int conversion, expr? format_spec) 797db96d56Sopenharmony_ci | JoinedStr(expr* values) 807db96d56Sopenharmony_ci | Constant(constant value, string? kind) 817db96d56Sopenharmony_ci 827db96d56Sopenharmony_ci -- the following expression can appear in assignment context 837db96d56Sopenharmony_ci | Attribute(expr value, identifier attr, expr_context ctx) 847db96d56Sopenharmony_ci | Subscript(expr value, expr slice, expr_context ctx) 857db96d56Sopenharmony_ci | Starred(expr value, expr_context ctx) 867db96d56Sopenharmony_ci | Name(identifier id, expr_context ctx) 877db96d56Sopenharmony_ci | List(expr* elts, expr_context ctx) 887db96d56Sopenharmony_ci | Tuple(expr* elts, expr_context ctx) 897db96d56Sopenharmony_ci 907db96d56Sopenharmony_ci -- can appear only in Subscript 917db96d56Sopenharmony_ci | Slice(expr? lower, expr? upper, expr? step) 927db96d56Sopenharmony_ci 937db96d56Sopenharmony_ci -- col_offset is the byte offset in the utf8 string the parser uses 947db96d56Sopenharmony_ci attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) 957db96d56Sopenharmony_ci 967db96d56Sopenharmony_ci expr_context = Load | Store | Del 977db96d56Sopenharmony_ci 987db96d56Sopenharmony_ci boolop = And | Or 997db96d56Sopenharmony_ci 1007db96d56Sopenharmony_ci operator = Add | Sub | Mult | MatMult | Div | Mod | Pow | LShift 1017db96d56Sopenharmony_ci | RShift | BitOr | BitXor | BitAnd | FloorDiv 1027db96d56Sopenharmony_ci 1037db96d56Sopenharmony_ci unaryop = Invert | Not | UAdd | USub 1047db96d56Sopenharmony_ci 1057db96d56Sopenharmony_ci cmpop = Eq | NotEq | Lt | LtE | Gt | GtE | Is | IsNot | In | NotIn 1067db96d56Sopenharmony_ci 1077db96d56Sopenharmony_ci comprehension = (expr target, expr iter, expr* ifs, int is_async) 1087db96d56Sopenharmony_ci 1097db96d56Sopenharmony_ci excepthandler = ExceptHandler(expr? type, identifier? name, stmt* body) 1107db96d56Sopenharmony_ci attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) 1117db96d56Sopenharmony_ci 1127db96d56Sopenharmony_ci arguments = (arg* posonlyargs, arg* args, arg? vararg, arg* kwonlyargs, 1137db96d56Sopenharmony_ci expr* kw_defaults, arg? kwarg, expr* defaults) 1147db96d56Sopenharmony_ci 1157db96d56Sopenharmony_ci arg = (identifier arg, expr? annotation, string? type_comment) 1167db96d56Sopenharmony_ci attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) 1177db96d56Sopenharmony_ci 1187db96d56Sopenharmony_ci -- keyword arguments supplied to call (NULL identifier for **kwargs) 1197db96d56Sopenharmony_ci keyword = (identifier? arg, expr value) 1207db96d56Sopenharmony_ci attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) 1217db96d56Sopenharmony_ci 1227db96d56Sopenharmony_ci -- import name with optional 'as' alias. 1237db96d56Sopenharmony_ci alias = (identifier name, identifier? asname) 1247db96d56Sopenharmony_ci attributes (int lineno, int col_offset, int? end_lineno, int? end_col_offset) 1257db96d56Sopenharmony_ci 1267db96d56Sopenharmony_ci withitem = (expr context_expr, expr? optional_vars) 1277db96d56Sopenharmony_ci 1287db96d56Sopenharmony_ci match_case = (pattern pattern, expr? guard, stmt* body) 1297db96d56Sopenharmony_ci 1307db96d56Sopenharmony_ci pattern = MatchValue(expr value) 1317db96d56Sopenharmony_ci | MatchSingleton(constant value) 1327db96d56Sopenharmony_ci | MatchSequence(pattern* patterns) 1337db96d56Sopenharmony_ci | MatchMapping(expr* keys, pattern* patterns, identifier? rest) 1347db96d56Sopenharmony_ci | MatchClass(expr cls, pattern* patterns, identifier* kwd_attrs, pattern* kwd_patterns) 1357db96d56Sopenharmony_ci 1367db96d56Sopenharmony_ci | MatchStar(identifier? name) 1377db96d56Sopenharmony_ci -- The optional "rest" MatchMapping parameter handles capturing extra mapping keys 1387db96d56Sopenharmony_ci 1397db96d56Sopenharmony_ci | MatchAs(pattern? pattern, identifier? name) 1407db96d56Sopenharmony_ci | MatchOr(pattern* patterns) 1417db96d56Sopenharmony_ci 1427db96d56Sopenharmony_ci attributes (int lineno, int col_offset, int end_lineno, int end_col_offset) 1437db96d56Sopenharmony_ci 1447db96d56Sopenharmony_ci type_ignore = TypeIgnore(int lineno, string tag) 1457db96d56Sopenharmony_ci} 146