blob: be7197f9de56f9a972d96c60ec6157a073f3162c [file] [log] [blame]
Jeremy Hylton5477f522001-08-29 18:08:02 +00001# This file describes the nodes of the AST in ast.py. The module is
2# generated by astgen.py.
3# The descriptions use the following special notation to describe
4# properties of the children:
5# * this child is not a node
6# ! this child is a sequence that contains nodes in it
7# & this child may be set to None
8# = ... a default value for the node constructor (optional args)
Andrew M. Kuchlinga6d4b682005-11-22 15:01:13 +00009#
10# If you add node types here, please be sure to update the list of
11# Node types in Doc/lib/asttable.tex.
Jeremy Hylton5477f522001-08-29 18:08:02 +000012Module: doc*, node
13Stmt: nodes!
Anthony Baxterc2a5a632004-08-02 06:10:11 +000014Decorators: nodes!
15Function: decorators&, name*, argnames*, defaults!, flags*, doc*, code
Jeremy Hylton5477f522001-08-29 18:08:02 +000016Lambda: argnames*, defaults!, flags*, code
17Class: name*, bases!, doc*, code
Jeremy Hylton821eee32000-10-25 17:59:17 +000018Pass:
19Break:
20Continue:
Jeremy Hylton5477f522001-08-29 18:08:02 +000021For: assign, list, body, else_&
22While: test, body, else_&
Guido van Rossumc2e20742006-02-27 22:32:47 +000023With: expr, vars&, body
Jeremy Hylton5477f522001-08-29 18:08:02 +000024If: tests!, else_&
Thomas Wouters7e2ac252006-03-03 18:11:37 +000025IfExp: test, then, else_
Thomas Wouters7e2ac252006-03-03 18:11:37 +000026From: modname*, names*, level*
Jeremy Hylton5477f522001-08-29 18:08:02 +000027Import: names*
28Raise: expr1&, expr2&, expr3&
Jeremy Hylton821eee32000-10-25 17:59:17 +000029TryFinally: body, final
Jeremy Hylton5477f522001-08-29 18:08:02 +000030TryExcept: body, handlers!, else_&
Jeremy Hylton821eee32000-10-25 17:59:17 +000031Return: value
Jeremy Hylton34aeeff2001-08-14 18:57:43 +000032Yield: value
Jeremy Hylton5477f522001-08-29 18:08:02 +000033Const: value*
34Print: nodes!, dest&
35Printnl: nodes!, dest&
Jeremy Hylton821eee32000-10-25 17:59:17 +000036Discard: expr
Jeremy Hylton5477f522001-08-29 18:08:02 +000037AugAssign: node, op*, expr
38Assign: nodes!, expr
39AssTuple: nodes!
40AssList: nodes!
41AssName: name*, flags*
42AssAttr: expr, attrname*, flags*
43ListComp: expr, quals!
44ListCompFor: assign, list, ifs!
Jeremy Hylton821eee32000-10-25 17:59:17 +000045ListCompIf: test
Guido van Rossumc2e20742006-02-27 22:32:47 +000046GenExpr: code
Raymond Hettinger354433a2004-05-19 08:20:33 +000047GenExprInner: expr, quals!
48GenExprFor: assign, iter, ifs!
49GenExprIf: test
Jeremy Hylton5477f522001-08-29 18:08:02 +000050List: nodes!
51Dict: items!
Guido van Rossum86e58e22006-08-28 15:27:34 +000052Set: items!
Jeremy Hylton821eee32000-10-25 17:59:17 +000053Not: expr
Jeremy Hylton5477f522001-08-29 18:08:02 +000054Compare: expr, ops!
55Name: name*
Jeremy Hyltonfff252d2001-09-14 22:40:36 +000056Global: names*
Jeremy Hylton5477f522001-08-29 18:08:02 +000057Getattr: expr, attrname*
58CallFunc: node, args!, star_args& = None, dstar_args& = None
59Keyword: name*, expr
60Subscript: expr, flags*, subs!
Jeremy Hylton5477f522001-08-29 18:08:02 +000061Sliceobj: nodes!
62Slice: expr, flags*, lower&, upper&
63Assert: test, fail&
64Tuple: nodes!
65Or: nodes!
66And: nodes!
67Bitor: nodes!
68Bitxor: nodes!
69Bitand: nodes!
Jeremy Hylton821eee32000-10-25 17:59:17 +000070LeftShift: (left, right)
71RightShift: (left, right)
72Add: (left, right)
73Sub: (left, right)
74Mul: (left, right)
75Div: (left, right)
76Mod: (left, right)
77Power: (left, right)
Jeremy Hylton5477f522001-08-29 18:08:02 +000078FloorDiv: (left, right)
Jeremy Hylton821eee32000-10-25 17:59:17 +000079UnaryAdd: expr
80UnarySub: expr
81Invert: expr
82
83init(Function):
84 self.varargs = self.kwargs = None
85 if flags & CO_VARARGS:
86 self.varargs = 1
87 if flags & CO_VARKEYWORDS:
88 self.kwargs = 1
89
90init(Lambda):
91 self.varargs = self.kwargs = None
92 if flags & CO_VARARGS:
93 self.varargs = 1
94 if flags & CO_VARKEYWORDS:
95 self.kwargs = 1
Raymond Hettinger354433a2004-05-19 08:20:33 +000096
97init(GenExpr):
Guido van Rossum86e58e22006-08-28 15:27:34 +000098 self.argnames = ['.0']
Raymond Hettinger354433a2004-05-19 08:20:33 +000099 self.varargs = self.kwargs = None
100
101init(GenExprFor):
102 self.is_outmost = False