1.1 --- a/compiler/ast.py Fri May 18 23:26:30 2012 +0200
1.2 +++ b/compiler/ast.py Tue May 01 22:08:33 2012 +0200
1.3 @@ -50,6 +50,9 @@
1.4 def __repr__(self):
1.5 return "Expression(%s)" % (repr(self.node))
1.6
1.7 + def visit(self, visitor):
1.8 + return visitor.visitExpression(self)
1.9 +
1.10 class Add(Node):
1.11 def __init__(self, leftright, lineno=None):
1.12 self.left = leftright[0]
1.13 @@ -65,6 +68,9 @@
1.14 def __repr__(self):
1.15 return "Add((%s, %s))" % (repr(self.left), repr(self.right))
1.16
1.17 + def visit(self, visitor):
1.18 + return visitor.visitAdd(self)
1.19 +
1.20 class And(Node):
1.21 def __init__(self, nodes, lineno=None):
1.22 self.nodes = nodes
1.23 @@ -81,6 +87,9 @@
1.24 def __repr__(self):
1.25 return "And(%s)" % (repr(self.nodes),)
1.26
1.27 + def visit(self, visitor):
1.28 + return visitor.visitAnd(self)
1.29 +
1.30 class AssAttr(Node):
1.31 def __init__(self, expr, attrname, flags, lineno=None):
1.32 self.expr = expr
1.33 @@ -97,6 +106,9 @@
1.34 def __repr__(self):
1.35 return "AssAttr(%s, %s, %s)" % (repr(self.expr), repr(self.attrname), repr(self.flags))
1.36
1.37 + def visit(self, visitor):
1.38 + return visitor.visitAssAttr(self)
1.39 +
1.40 class AssList(Node):
1.41 def __init__(self, nodes, lineno=None):
1.42 self.nodes = nodes
1.43 @@ -113,6 +125,9 @@
1.44 def __repr__(self):
1.45 return "AssList(%s)" % (repr(self.nodes),)
1.46
1.47 + def visit(self, visitor):
1.48 + return visitor.visitAssList(self)
1.49 +
1.50 class AssName(Node):
1.51 def __init__(self, name, flags, lineno=None):
1.52 self.name = name
1.53 @@ -128,6 +143,9 @@
1.54 def __repr__(self):
1.55 return "AssName(%s, %s)" % (repr(self.name), repr(self.flags))
1.56
1.57 + def visit(self, visitor):
1.58 + return visitor.visitAssName(self)
1.59 +
1.60 class AssTuple(Node):
1.61 def __init__(self, nodes, lineno=None):
1.62 self.nodes = nodes
1.63 @@ -144,6 +162,9 @@
1.64 def __repr__(self):
1.65 return "AssTuple(%s)" % (repr(self.nodes),)
1.66
1.67 + def visit(self, visitor):
1.68 + return visitor.visitAssTuple(self)
1.69 +
1.70 class Assert(Node):
1.71 def __init__(self, test, fail, lineno=None):
1.72 self.test = test
1.73 @@ -166,6 +187,9 @@
1.74 def __repr__(self):
1.75 return "Assert(%s, %s)" % (repr(self.test), repr(self.fail))
1.76
1.77 + def visit(self, visitor):
1.78 + return visitor.visitAssert(self)
1.79 +
1.80 class Assign(Node):
1.81 def __init__(self, nodes, expr, lineno=None):
1.82 self.nodes = nodes
1.83 @@ -187,6 +211,9 @@
1.84 def __repr__(self):
1.85 return "Assign(%s, %s)" % (repr(self.nodes), repr(self.expr))
1.86
1.87 + def visit(self, visitor):
1.88 + return visitor.visitAssign(self)
1.89 +
1.90 class AugAssign(Node):
1.91 def __init__(self, node, op, expr, lineno=None):
1.92 self.node = node
1.93 @@ -203,6 +230,9 @@
1.94 def __repr__(self):
1.95 return "AugAssign(%s, %s, %s)" % (repr(self.node), repr(self.op), repr(self.expr))
1.96
1.97 + def visit(self, visitor):
1.98 + return visitor.visitAugAssign(self)
1.99 +
1.100 class Backquote(Node):
1.101 def __init__(self, expr, lineno=None):
1.102 self.expr = expr
1.103 @@ -217,6 +247,9 @@
1.104 def __repr__(self):
1.105 return "Backquote(%s)" % (repr(self.expr),)
1.106
1.107 + def visit(self, visitor):
1.108 + return visitor.visitBackquote(self)
1.109 +
1.110 class Bitand(Node):
1.111 def __init__(self, nodes, lineno=None):
1.112 self.nodes = nodes
1.113 @@ -233,6 +266,9 @@
1.114 def __repr__(self):
1.115 return "Bitand(%s)" % (repr(self.nodes),)
1.116
1.117 + def visit(self, visitor):
1.118 + return visitor.visitBitand(self)
1.119 +
1.120 class Bitor(Node):
1.121 def __init__(self, nodes, lineno=None):
1.122 self.nodes = nodes
1.123 @@ -249,6 +285,9 @@
1.124 def __repr__(self):
1.125 return "Bitor(%s)" % (repr(self.nodes),)
1.126
1.127 + def visit(self, visitor):
1.128 + return visitor.visitBitor(self)
1.129 +
1.130 class Bitxor(Node):
1.131 def __init__(self, nodes, lineno=None):
1.132 self.nodes = nodes
1.133 @@ -265,6 +304,9 @@
1.134 def __repr__(self):
1.135 return "Bitxor(%s)" % (repr(self.nodes),)
1.136
1.137 + def visit(self, visitor):
1.138 + return visitor.visitBitxor(self)
1.139 +
1.140 class Break(Node):
1.141 def __init__(self, lineno=None):
1.142 self.lineno = lineno
1.143 @@ -278,6 +320,9 @@
1.144 def __repr__(self):
1.145 return "Break()"
1.146
1.147 + def visit(self, visitor):
1.148 + return visitor.visitBreak(self)
1.149 +
1.150 class CallFunc(Node):
1.151 def __init__(self, node, args, star_args = None, dstar_args = None, lineno=None):
1.152 self.node = node
1.153 @@ -307,6 +352,9 @@
1.154 def __repr__(self):
1.155 return "CallFunc(%s, %s, %s, %s)" % (repr(self.node), repr(self.args), repr(self.star_args), repr(self.dstar_args))
1.156
1.157 + def visit(self, visitor):
1.158 + return visitor.visitCallFunc(self)
1.159 +
1.160 class Class(Node):
1.161 def __init__(self, name, bases, doc, code, decorators = None, lineno=None):
1.162 self.name = name
1.163 @@ -336,6 +384,9 @@
1.164 def __repr__(self):
1.165 return "Class(%s, %s, %s, %s, %s)" % (repr(self.name), repr(self.bases), repr(self.doc), repr(self.code), repr(self.decorators))
1.166
1.167 + def visit(self, visitor):
1.168 + return visitor.visitClass(self)
1.169 +
1.170 class Compare(Node):
1.171 def __init__(self, expr, ops, lineno=None):
1.172 self.expr = expr
1.173 @@ -357,6 +408,9 @@
1.174 def __repr__(self):
1.175 return "Compare(%s, %s)" % (repr(self.expr), repr(self.ops))
1.176
1.177 + def visit(self, visitor):
1.178 + return visitor.visitCompare(self)
1.179 +
1.180 class Const(Node):
1.181 def __init__(self, value, lineno=None):
1.182 self.value = value
1.183 @@ -371,6 +425,9 @@
1.184 def __repr__(self):
1.185 return "Const(%s)" % (repr(self.value),)
1.186
1.187 + def visit(self, visitor):
1.188 + return visitor.visitConst(self)
1.189 +
1.190 class Continue(Node):
1.191 def __init__(self, lineno=None):
1.192 self.lineno = lineno
1.193 @@ -384,6 +441,9 @@
1.194 def __repr__(self):
1.195 return "Continue()"
1.196
1.197 + def visit(self, visitor):
1.198 + return visitor.visitContinue(self)
1.199 +
1.200 class Decorators(Node):
1.201 def __init__(self, nodes, lineno=None):
1.202 self.nodes = nodes
1.203 @@ -400,6 +460,9 @@
1.204 def __repr__(self):
1.205 return "Decorators(%s)" % (repr(self.nodes),)
1.206
1.207 + def visit(self, visitor):
1.208 + return visitor.visitDecorators(self)
1.209 +
1.210 class Dict(Node):
1.211 def __init__(self, items, lineno=None):
1.212 self.items = items
1.213 @@ -416,6 +479,9 @@
1.214 def __repr__(self):
1.215 return "Dict(%s)" % (repr(self.items),)
1.216
1.217 + def visit(self, visitor):
1.218 + return visitor.visitDict(self)
1.219 +
1.220 class Discard(Node):
1.221 def __init__(self, expr, lineno=None):
1.222 self.expr = expr
1.223 @@ -430,6 +496,9 @@
1.224 def __repr__(self):
1.225 return "Discard(%s)" % (repr(self.expr),)
1.226
1.227 + def visit(self, visitor):
1.228 + return visitor.visitDiscard(self)
1.229 +
1.230 class Div(Node):
1.231 def __init__(self, leftright, lineno=None):
1.232 self.left = leftright[0]
1.233 @@ -445,6 +514,9 @@
1.234 def __repr__(self):
1.235 return "Div((%s, %s))" % (repr(self.left), repr(self.right))
1.236
1.237 + def visit(self, visitor):
1.238 + return visitor.visitDiv(self)
1.239 +
1.240 class Ellipsis(Node):
1.241 def __init__(self, lineno=None):
1.242 self.lineno = lineno
1.243 @@ -458,6 +530,9 @@
1.244 def __repr__(self):
1.245 return "Ellipsis()"
1.246
1.247 + def visit(self, visitor):
1.248 + return visitor.visitEllipsis(self)
1.249 +
1.250 class Exec(Node):
1.251 def __init__(self, expr, locals, globals, lineno=None):
1.252 self.expr = expr
1.253 @@ -484,6 +559,9 @@
1.254 def __repr__(self):
1.255 return "Exec(%s, %s, %s)" % (repr(self.expr), repr(self.locals), repr(self.globals))
1.256
1.257 + def visit(self, visitor):
1.258 + return visitor.visitExec(self)
1.259 +
1.260 class FloorDiv(Node):
1.261 def __init__(self, leftright, lineno=None):
1.262 self.left = leftright[0]
1.263 @@ -499,6 +577,9 @@
1.264 def __repr__(self):
1.265 return "FloorDiv((%s, %s))" % (repr(self.left), repr(self.right))
1.266
1.267 + def visit(self, visitor):
1.268 + return visitor.visitFloorDiv(self)
1.269 +
1.270 class For(Node):
1.271 def __init__(self, assign, list, body, else_, lineno=None):
1.272 self.assign = assign
1.273 @@ -527,6 +608,9 @@
1.274 def __repr__(self):
1.275 return "For(%s, %s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.body), repr(self.else_))
1.276
1.277 + def visit(self, visitor):
1.278 + return visitor.visitFor(self)
1.279 +
1.280 class From(Node):
1.281 def __init__(self, modname, names, level, lineno=None):
1.282 self.modname = modname
1.283 @@ -543,6 +627,9 @@
1.284 def __repr__(self):
1.285 return "From(%s, %s, %s)" % (repr(self.modname), repr(self.names), repr(self.level))
1.286
1.287 + def visit(self, visitor):
1.288 + return visitor.visitFrom(self)
1.289 +
1.290 class Function(Node):
1.291 def __init__(self, decorators, name, argnames, defaults, flags, doc, code, lineno=None):
1.292 self.decorators = decorators
1.293 @@ -582,6 +669,9 @@
1.294 def __repr__(self):
1.295 return "Function(%s, %s, %s, %s, %s, %s, %s)" % (repr(self.decorators), repr(self.name), repr(self.argnames), repr(self.defaults), repr(self.flags), repr(self.doc), repr(self.code))
1.296
1.297 + def visit(self, visitor):
1.298 + return visitor.visitFunction(self)
1.299 +
1.300 class GenExpr(Node):
1.301 def __init__(self, code, lineno=None):
1.302 self.code = code
1.303 @@ -599,6 +689,9 @@
1.304 def __repr__(self):
1.305 return "GenExpr(%s)" % (repr(self.code),)
1.306
1.307 + def visit(self, visitor):
1.308 + return visitor.visitGenExpr(self)
1.309 +
1.310 class GenExprFor(Node):
1.311 def __init__(self, assign, iter, ifs, lineno=None):
1.312 self.assign = assign
1.313 @@ -624,6 +717,9 @@
1.314 def __repr__(self):
1.315 return "GenExprFor(%s, %s, %s)" % (repr(self.assign), repr(self.iter), repr(self.ifs))
1.316
1.317 + def visit(self, visitor):
1.318 + return visitor.visitGenExprFor(self)
1.319 +
1.320 class GenExprIf(Node):
1.321 def __init__(self, test, lineno=None):
1.322 self.test = test
1.323 @@ -638,6 +734,9 @@
1.324 def __repr__(self):
1.325 return "GenExprIf(%s)" % (repr(self.test),)
1.326
1.327 + def visit(self, visitor):
1.328 + return visitor.visitGenExprIf(self)
1.329 +
1.330 class GenExprInner(Node):
1.331 def __init__(self, expr, quals, lineno=None):
1.332 self.expr = expr
1.333 @@ -659,6 +758,9 @@
1.334 def __repr__(self):
1.335 return "GenExprInner(%s, %s)" % (repr(self.expr), repr(self.quals))
1.336
1.337 + def visit(self, visitor):
1.338 + return visitor.visitGenExprInner(self)
1.339 +
1.340 class Getattr(Node):
1.341 def __init__(self, expr, attrname, lineno=None):
1.342 self.expr = expr
1.343 @@ -674,6 +776,9 @@
1.344 def __repr__(self):
1.345 return "Getattr(%s, %s)" % (repr(self.expr), repr(self.attrname))
1.346
1.347 + def visit(self, visitor):
1.348 + return visitor.visitGetattr(self)
1.349 +
1.350 class Global(Node):
1.351 def __init__(self, names, lineno=None):
1.352 self.names = names
1.353 @@ -688,6 +793,9 @@
1.354 def __repr__(self):
1.355 return "Global(%s)" % (repr(self.names),)
1.356
1.357 + def visit(self, visitor):
1.358 + return visitor.visitGlobal(self)
1.359 +
1.360 class If(Node):
1.361 def __init__(self, tests, else_, lineno=None):
1.362 self.tests = tests
1.363 @@ -710,6 +818,9 @@
1.364 def __repr__(self):
1.365 return "If(%s, %s)" % (repr(self.tests), repr(self.else_))
1.366
1.367 + def visit(self, visitor):
1.368 + return visitor.visitIf(self)
1.369 +
1.370 class IfExp(Node):
1.371 def __init__(self, test, then, else_, lineno=None):
1.372 self.test = test
1.373 @@ -726,6 +837,9 @@
1.374 def __repr__(self):
1.375 return "IfExp(%s, %s, %s)" % (repr(self.test), repr(self.then), repr(self.else_))
1.376
1.377 + def visit(self, visitor):
1.378 + return visitor.visitIfExp(self)
1.379 +
1.380 class Import(Node):
1.381 def __init__(self, names, lineno=None):
1.382 self.names = names
1.383 @@ -740,6 +854,9 @@
1.384 def __repr__(self):
1.385 return "Import(%s)" % (repr(self.names),)
1.386
1.387 + def visit(self, visitor):
1.388 + return visitor.visitImport(self)
1.389 +
1.390 class Invert(Node):
1.391 def __init__(self, expr, lineno=None):
1.392 self.expr = expr
1.393 @@ -754,6 +871,9 @@
1.394 def __repr__(self):
1.395 return "Invert(%s)" % (repr(self.expr),)
1.396
1.397 + def visit(self, visitor):
1.398 + return visitor.visitInvert(self)
1.399 +
1.400 class Keyword(Node):
1.401 def __init__(self, name, expr, lineno=None):
1.402 self.name = name
1.403 @@ -769,6 +889,9 @@
1.404 def __repr__(self):
1.405 return "Keyword(%s, %s)" % (repr(self.name), repr(self.expr))
1.406
1.407 + def visit(self, visitor):
1.408 + return visitor.visitKeyword(self)
1.409 +
1.410 class Lambda(Node):
1.411 def __init__(self, argnames, defaults, flags, code, lineno=None):
1.412 self.argnames = argnames
1.413 @@ -800,6 +923,9 @@
1.414 def __repr__(self):
1.415 return "Lambda(%s, %s, %s, %s)" % (repr(self.argnames), repr(self.defaults), repr(self.flags), repr(self.code))
1.416
1.417 + def visit(self, visitor):
1.418 + return visitor.visitLambda(self)
1.419 +
1.420 class LeftShift(Node):
1.421 def __init__(self, leftright, lineno=None):
1.422 self.left = leftright[0]
1.423 @@ -815,6 +941,9 @@
1.424 def __repr__(self):
1.425 return "LeftShift((%s, %s))" % (repr(self.left), repr(self.right))
1.426
1.427 + def visit(self, visitor):
1.428 + return visitor.visitLeftShift(self)
1.429 +
1.430 class List(Node):
1.431 def __init__(self, nodes, lineno=None):
1.432 self.nodes = nodes
1.433 @@ -831,6 +960,9 @@
1.434 def __repr__(self):
1.435 return "List(%s)" % (repr(self.nodes),)
1.436
1.437 + def visit(self, visitor):
1.438 + return visitor.visitList(self)
1.439 +
1.440 class ListComp(Node):
1.441 def __init__(self, expr, quals, lineno=None):
1.442 self.expr = expr
1.443 @@ -852,6 +984,9 @@
1.444 def __repr__(self):
1.445 return "ListComp(%s, %s)" % (repr(self.expr), repr(self.quals))
1.446
1.447 + def visit(self, visitor):
1.448 + return visitor.visitListComp(self)
1.449 +
1.450 class ListCompFor(Node):
1.451 def __init__(self, assign, list, ifs, lineno=None):
1.452 self.assign = assign
1.453 @@ -876,6 +1011,9 @@
1.454 def __repr__(self):
1.455 return "ListCompFor(%s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.ifs))
1.456
1.457 + def visit(self, visitor):
1.458 + return visitor.visitListCompFor(self)
1.459 +
1.460 class ListCompIf(Node):
1.461 def __init__(self, test, lineno=None):
1.462 self.test = test
1.463 @@ -890,6 +1028,9 @@
1.464 def __repr__(self):
1.465 return "ListCompIf(%s)" % (repr(self.test),)
1.466
1.467 + def visit(self, visitor):
1.468 + return visitor.visitListCompIf(self)
1.469 +
1.470 class SetComp(Node):
1.471 def __init__(self, expr, quals, lineno=None):
1.472 self.expr = expr
1.473 @@ -950,6 +1091,9 @@
1.474 def __repr__(self):
1.475 return "Mod((%s, %s))" % (repr(self.left), repr(self.right))
1.476
1.477 + def visit(self, visitor):
1.478 + return visitor.visitMod(self)
1.479 +
1.480 class Module(Node):
1.481 def __init__(self, doc, node, lineno=None):
1.482 self.doc = doc
1.483 @@ -965,6 +1109,9 @@
1.484 def __repr__(self):
1.485 return "Module(%s, %s)" % (repr(self.doc), repr(self.node))
1.486
1.487 + def visit(self, visitor):
1.488 + return visitor.visitModule(self)
1.489 +
1.490 class Mul(Node):
1.491 def __init__(self, leftright, lineno=None):
1.492 self.left = leftright[0]
1.493 @@ -980,6 +1127,9 @@
1.494 def __repr__(self):
1.495 return "Mul((%s, %s))" % (repr(self.left), repr(self.right))
1.496
1.497 + def visit(self, visitor):
1.498 + return visitor.visitMul(self)
1.499 +
1.500 class Name(Node):
1.501 def __init__(self, name, lineno=None):
1.502 self.name = name
1.503 @@ -994,6 +1144,9 @@
1.504 def __repr__(self):
1.505 return "Name(%s)" % (repr(self.name),)
1.506
1.507 + def visit(self, visitor):
1.508 + return visitor.visitName(self)
1.509 +
1.510 class Not(Node):
1.511 def __init__(self, expr, lineno=None):
1.512 self.expr = expr
1.513 @@ -1008,6 +1161,9 @@
1.514 def __repr__(self):
1.515 return "Not(%s)" % (repr(self.expr),)
1.516
1.517 + def visit(self, visitor):
1.518 + return visitor.visitNot(self)
1.519 +
1.520 class Or(Node):
1.521 def __init__(self, nodes, lineno=None):
1.522 self.nodes = nodes
1.523 @@ -1024,6 +1180,9 @@
1.524 def __repr__(self):
1.525 return "Or(%s)" % (repr(self.nodes),)
1.526
1.527 + def visit(self, visitor):
1.528 + return visitor.visitOr(self)
1.529 +
1.530 class Pass(Node):
1.531 def __init__(self, lineno=None):
1.532 self.lineno = lineno
1.533 @@ -1037,6 +1196,9 @@
1.534 def __repr__(self):
1.535 return "Pass()"
1.536
1.537 + def visit(self, visitor):
1.538 + return visitor.visitPass(self)
1.539 +
1.540 class Power(Node):
1.541 def __init__(self, leftright, lineno=None):
1.542 self.left = leftright[0]
1.543 @@ -1052,6 +1214,9 @@
1.544 def __repr__(self):
1.545 return "Power((%s, %s))" % (repr(self.left), repr(self.right))
1.546
1.547 + def visit(self, visitor):
1.548 + return visitor.visitPower(self)
1.549 +
1.550 class Print(Node):
1.551 def __init__(self, nodes, dest, lineno=None):
1.552 self.nodes = nodes
1.553 @@ -1074,6 +1239,9 @@
1.554 def __repr__(self):
1.555 return "Print(%s, %s)" % (repr(self.nodes), repr(self.dest))
1.556
1.557 + def visit(self, visitor):
1.558 + return visitor.visitPrint(self)
1.559 +
1.560 class Printnl(Node):
1.561 def __init__(self, nodes, dest, lineno=None):
1.562 self.nodes = nodes
1.563 @@ -1096,6 +1264,9 @@
1.564 def __repr__(self):
1.565 return "Printnl(%s, %s)" % (repr(self.nodes), repr(self.dest))
1.566
1.567 + def visit(self, visitor):
1.568 + return visitor.visitPrintnl(self)
1.569 +
1.570 class Raise(Node):
1.571 def __init__(self, expr1, expr2, expr3, lineno=None):
1.572 self.expr1 = expr1
1.573 @@ -1123,6 +1294,9 @@
1.574 def __repr__(self):
1.575 return "Raise(%s, %s, %s)" % (repr(self.expr1), repr(self.expr2), repr(self.expr3))
1.576
1.577 + def visit(self, visitor):
1.578 + return visitor.visitRaise(self)
1.579 +
1.580 class Return(Node):
1.581 def __init__(self, value, lineno=None):
1.582 self.value = value
1.583 @@ -1137,6 +1311,9 @@
1.584 def __repr__(self):
1.585 return "Return(%s)" % (repr(self.value),)
1.586
1.587 + def visit(self, visitor):
1.588 + return visitor.visitReturn(self)
1.589 +
1.590 class RightShift(Node):
1.591 def __init__(self, leftright, lineno=None):
1.592 self.left = leftright[0]
1.593 @@ -1152,6 +1329,9 @@
1.594 def __repr__(self):
1.595 return "RightShift((%s, %s))" % (repr(self.left), repr(self.right))
1.596
1.597 + def visit(self, visitor):
1.598 + return visitor.visitRightShift(self)
1.599 +
1.600 class Set(Node):
1.601 def __init__(self, nodes, lineno=None):
1.602 self.nodes = nodes
1.603 @@ -1196,6 +1376,9 @@
1.604 def __repr__(self):
1.605 return "Slice(%s, %s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.lower), repr(self.upper))
1.606
1.607 + def visit(self, visitor):
1.608 + return visitor.visitSlice(self)
1.609 +
1.610 class Sliceobj(Node):
1.611 def __init__(self, nodes, lineno=None):
1.612 self.nodes = nodes
1.613 @@ -1212,6 +1395,9 @@
1.614 def __repr__(self):
1.615 return "Sliceobj(%s)" % (repr(self.nodes),)
1.616
1.617 + def visit(self, visitor):
1.618 + return visitor.visitSliceobj(self)
1.619 +
1.620 class Stmt(Node):
1.621 def __init__(self, nodes, lineno=None):
1.622 self.nodes = nodes
1.623 @@ -1228,6 +1414,9 @@
1.624 def __repr__(self):
1.625 return "Stmt(%s)" % (repr(self.nodes),)
1.626
1.627 + def visit(self, visitor):
1.628 + return visitor.visitStmt(self)
1.629 +
1.630 class Sub(Node):
1.631 def __init__(self, leftright, lineno=None):
1.632 self.left = leftright[0]
1.633 @@ -1243,6 +1432,9 @@
1.634 def __repr__(self):
1.635 return "Sub((%s, %s))" % (repr(self.left), repr(self.right))
1.636
1.637 + def visit(self, visitor):
1.638 + return visitor.visitSub(self)
1.639 +
1.640 class Subscript(Node):
1.641 def __init__(self, expr, flags, subs, lineno=None):
1.642 self.expr = expr
1.643 @@ -1266,6 +1458,9 @@
1.644 def __repr__(self):
1.645 return "Subscript(%s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.subs))
1.646
1.647 + def visit(self, visitor):
1.648 + return visitor.visitSubscript(self)
1.649 +
1.650 class TryExcept(Node):
1.651 def __init__(self, body, handlers, else_, lineno=None):
1.652 self.body = body
1.653 @@ -1291,6 +1486,9 @@
1.654 def __repr__(self):
1.655 return "TryExcept(%s, %s, %s)" % (repr(self.body), repr(self.handlers), repr(self.else_))
1.656
1.657 + def visit(self, visitor):
1.658 + return visitor.visitTryExcept(self)
1.659 +
1.660 class TryFinally(Node):
1.661 def __init__(self, body, final, lineno=None):
1.662 self.body = body
1.663 @@ -1306,6 +1504,9 @@
1.664 def __repr__(self):
1.665 return "TryFinally(%s, %s)" % (repr(self.body), repr(self.final))
1.666
1.667 + def visit(self, visitor):
1.668 + return visitor.visitTryFinally(self)
1.669 +
1.670 class Tuple(Node):
1.671 def __init__(self, nodes, lineno=None):
1.672 self.nodes = nodes
1.673 @@ -1322,6 +1523,9 @@
1.674 def __repr__(self):
1.675 return "Tuple(%s)" % (repr(self.nodes),)
1.676
1.677 + def visit(self, visitor):
1.678 + return visitor.visitTuple(self)
1.679 +
1.680 class UnaryAdd(Node):
1.681 def __init__(self, expr, lineno=None):
1.682 self.expr = expr
1.683 @@ -1336,6 +1540,9 @@
1.684 def __repr__(self):
1.685 return "UnaryAdd(%s)" % (repr(self.expr),)
1.686
1.687 + def visit(self, visitor):
1.688 + return visitor.visitUnaryAdd(self)
1.689 +
1.690 class UnarySub(Node):
1.691 def __init__(self, expr, lineno=None):
1.692 self.expr = expr
1.693 @@ -1350,6 +1557,9 @@
1.694 def __repr__(self):
1.695 return "UnarySub(%s)" % (repr(self.expr),)
1.696
1.697 + def visit(self, visitor):
1.698 + return visitor.visitUnarySub(self)
1.699 +
1.700 class While(Node):
1.701 def __init__(self, test, body, else_, lineno=None):
1.702 self.test = test
1.703 @@ -1375,6 +1585,9 @@
1.704 def __repr__(self):
1.705 return "While(%s, %s, %s)" % (repr(self.test), repr(self.body), repr(self.else_))
1.706
1.707 + def visit(self, visitor):
1.708 + return visitor.visitWhile(self)
1.709 +
1.710 class With(Node):
1.711 def __init__(self, expr, vars, body, lineno=None):
1.712 self.expr = expr
1.713 @@ -1400,6 +1613,9 @@
1.714 def __repr__(self):
1.715 return "With(%s, %s, %s)" % (repr(self.expr), repr(self.vars), repr(self.body))
1.716
1.717 + def visit(self, visitor):
1.718 + return visitor.visitWith(self)
1.719 +
1.720 class Yield(Node):
1.721 def __init__(self, value, lineno=None):
1.722 self.value = value
1.723 @@ -1414,6 +1630,9 @@
1.724 def __repr__(self):
1.725 return "Yield(%s)" % (repr(self.value),)
1.726
1.727 + def visit(self, visitor):
1.728 + return visitor.visitYield(self)
1.729 +
1.730 for name, obj in globals().items():
1.731 if isinstance(obj, type) and issubclass(obj, Node):
1.732 nodes[name.lower()] = obj