Home | History | Annotate | Download | only in compiler

Lines Matching refs:nodelist

179     def file_input(self, nodelist):
180 doc = self.get_docstring(nodelist, symbol.file_input)
186 for node in nodelist[i:]:
191 def eval_input(self, nodelist):
194 return Expression(self.com_node(nodelist[0]))
196 def decorator_name(self, nodelist):
197 listlen = len(nodelist)
200 item = self.atom_name(nodelist)
203 assert nodelist[i][0] == token.DOT
204 assert nodelist[i + 1][0] == token.NAME
205 item = Getattr(item, nodelist[i + 1][1])
210 def decorator(self, nodelist):
212 assert len(nodelist) in (3, 5, 6)
213 assert nodelist[0][0] == token.AT
214 assert nodelist[-1][0] == token.NEWLINE
216 assert nodelist[1][0] == symbol.dotted_name
217 funcname = self.decorator_name(nodelist[1][1:])
219 if len(nodelist) > 3:
220 assert nodelist[2][0] == token.LPAR
221 expr = self.com_call_function(funcname, nodelist[3])
227 def decorators(self, nodelist):
230 for dec_nodelist in nodelist:
235 def decorated(self, nodelist):
236 assert nodelist[0][0] == symbol.decorators
237 if nodelist[1][0] == symbol.funcdef:
238 n = [nodelist[0]] + list(nodelist[1][1:])
240 elif nodelist[1][0] == symbol.classdef:
241 decorators = self.decorators(nodelist[0][1:])
242 cls = self.classdef(nodelist[1][1:])
247 def funcdef(self, nodelist):
252 if len(nodelist) == 6:
253 assert nodelist[0][0] == symbol.decorators
254 decorators = self.decorators(nodelist[0][1:])
256 assert len(nodelist) == 5
259 lineno = nodelist[-4][2]
260 name = nodelist[-4][1]
261 args = nodelist[-3][2]
268 doc = self.get_docstring(nodelist[-1])
271 code = self.com_node(nodelist[-1])
280 def lambdef(self, nodelist):
282 if nodelist[2][0] == symbol.varargslist:
283 names, defaults, flags = self.com_arglist(nodelist[2][1:])
289 code = self.com_node(nodelist[-1])
291 return Lambda(names, defaults, flags, code, lineno=nodelist[1][2])
294 def classdef(self, nodelist):
297 name = nodelist[1][1]
298 doc = self.get_docstring(nodelist[-1])
299 if nodelist[2][0] == token.COLON:
301 elif nodelist[3][0] == token.RPAR:
304 bases = self.com_bases(nodelist[3])
307 code = self.com_node(nodelist[-1])
314 return Class(name, bases, doc, code, lineno=nodelist[1][2])
316 def stmt(self, nodelist):
317 return self.com_stmt(nodelist[0])
323 def simple_stmt(self, nodelist):
326 for i in range(0, len(nodelist), 2):
327 self.com_append_stmt(stmts, nodelist[i])
330 def parameters(self, nodelist):
333 def varargslist(self, nodelist):
336 def fpdef(self, nodelist):
339 def fplist(self, nodelist):
342 def dotted_name(self, nodelist):
345 def comp_op(self, nodelist):
348 def trailer(self, nodelist):
351 def sliceop(self, nodelist):
354 def argument(self, nodelist):
362 def expr_stmt(self, nodelist):
364 en = nodelist[-1]
366 if len(nodelist) == 1:
368 if nodelist[1][0] == token.EQUAL:
370 for i in range(0, len(nodelist) - 2, 2):
371 nodesl.append(self.com_assign(nodelist[i], OP_ASSIGN))
372 return Assign(nodesl, exprNode, lineno=nodelist[1][2])
374 lval = self.com_augassign(nodelist[0])
375 op = self.com_augassign_op(nodelist[1])
379 def print_stmt(self, nodelist):
382 if len(nodelist) == 1:
385 elif nodelist[1][0] == token.RIGHTSHIFT:
386 assert len(nodelist) == 3 \
387 or nodelist[3][0] == token.COMMA
388 dest = self.com_node(nodelist[2])
393 for i in range(start, len(nodelist), 2):
394 items.append(self.com_node(nodelist[i]))
395 if nodelist[-1][0] == token.COMMA:
396 return Print(items, dest, lineno=nodelist[0][2])
397 return Printnl(items, dest, lineno=nodelist[0][2])
399 def del_stmt(self, nodelist):
400 return self.com_assign(nodelist[1], OP_DELETE)
402 def pass_stmt(self, nodelist):
403 return Pass(lineno=nodelist[0][2])
405 def break_stmt(self, nodelist):
406 return Break(lineno=nodelist[0][2])
408 def continue_stmt(self, nodelist):
409 return Continue(lineno=nodelist[0][2])
411 def return_stmt(self, nodelist):
413 if len(nodelist) < 2:
414 return Return(Const(None), lineno=nodelist[0][2])
415 return Return(self.com_node(nodelist[1]), lineno=nodelist[0][2])
417 def yield_stmt(self, nodelist):
418 expr = self.com_node(nodelist[0])
421 def yield_expr(self, nodelist):
422 if len(nodelist) > 1:
423 value = self.com_node(nodelist[1])
426 return Yield(value, lineno=nodelist[0][2])
428 def raise_stmt(self, nodelist):
430 if len(nodelist) > 5:
431 expr3 = self.com_node(nodelist[5])
434 if len(nodelist) > 3:
435 expr2 = self.com_node(nodelist[3])
438 if len(nodelist) > 1:
439 expr1 = self.com_node(nodelist[1])
442 return Raise(expr1, expr2, expr3, lineno=nodelist[0][2])
444 def import_stmt(self, nodelist):
446 assert len(nodelist) == 1
447 return self.com_node(nodelist[0])
449 def import_name(self, nodelist):
451 return Import(self.com_dotted_as_names(nodelist[1]),
452 lineno=nodelist[0][2])
454 def import_from(self, nodelist):
457 assert nodelist[0][1] == 'from'
459 while nodelist[idx][1] == '.':
462 if nodelist[idx][0] == symbol.dotted_name:
463 fromname = self.com_dotted_name(nodelist[idx])
467 assert nodelist[idx][1] == 'import'
468 if nodelist[idx + 1][0] == token.STAR:
470 lineno=nodelist[0][2])
472 node = nodelist[idx + 1 + (nodelist[idx + 1][0] == token.LPAR)]
474 lineno=nodelist[0][2])
476 def global_stmt(self, nodelist):
479 for i in range(1, len(nodelist), 2):
480 names.append(nodelist[i][1])
481 return Global(names, lineno=nodelist[0][2])
483 def exec_stmt(self, nodelist):
485 expr1 = self.com_node(nodelist[1])
486 if len(nodelist) >= 4:
487 expr2 = self.com_node(nodelist[3])
488 if len(nodelist) >= 6:
489 expr3 = self.com_node(nodelist[5])
495 return Exec(expr1, expr2, expr3, lineno=nodelist[0][2])
497 def assert_stmt(self, nodelist):
499 expr1 = self.com_node(nodelist[1])
500 if (len(nodelist) == 4):
501 expr2 = self.com_node(nodelist[3])
504 return Assert(expr1, expr2, lineno=nodelist[0][2])
506 def if_stmt(self, nodelist):
509 for i in range(0, len(nodelist) - 3, 4):
510 testNode = self.com_node(nodelist[i + 1])
511 suiteNode = self.com_node(nodelist[i + 3])
514 if len(nodelist) % 4 == 3:
515 elseNode = self.com_node(nodelist[-1])
516 ## elseNode.lineno = nodelist[-1][1][2]
519 return If(tests, elseNode, lineno=nodelist[0][2])
521 def while_stmt(self, nodelist):
524 testNode = self.com_node(nodelist[1])
525 bodyNode = self.com_node(nodelist[3])
527 if len(nodelist) > 4:
528 elseNode = self.com_node(nodelist[6])
532 return While(testNode, bodyNode, elseNode, lineno=nodelist[0][2])
534 def for_stmt(self, nodelist):
537 assignNode = self.com_assign(nodelist[1], OP_ASSIGN)
538 listNode = self.com_node(nodelist[3])
539 bodyNode = self.com_node(nodelist[5])
541 if len(nodelist) > 8:
542 elseNode = self.com_node(nodelist[8])
547 lineno=nodelist[0][2])
549 def try_stmt(self, nodelist):
550 return self.com_try_except_finally(nodelist)
552 def with_stmt(self, nodelist):
553 return self.com_with(nodelist)
555 def with_var(self, nodelist):
556 return self.com_with_var(nodelist)
558 def suite(self, nodelist):
560 if len(nodelist) == 1:
561 return self.com_stmt(nodelist[0])
564 for node in nodelist:
574 def testlist(self, nodelist):
578 return self.com_binary(Tuple, nodelist)
584 def testlist_comp(self, nodelist):
586 assert nodelist[0][0] == symbol.test
587 if len(nodelist) == 2 and nodelist[1][0] == symbol.comp_for:
588 test = self.com_node(nodelist[0])
589 return self.com_generator_expression(test, nodelist[1])
590 return self.testlist(nodelist)
592 def test(self, nodelist):
594 if len(nodelist) == 1 and nodelist[0][0] == symbol.lambdef:
595 return self.lambdef(nodelist[0])
596 then = self.com_node(nodelist[0])
597 if len(nodelist) > 1:
598 assert len(nodelist) == 5
599 assert nodelist[1][1] == 'if'
600 assert nodelist[3][1] == 'else'
601 test = self.com_node(nodelist[2])
602 else_ = self.com_node(nodelist[4])
603 return IfExp(test, then, else_, lineno=nodelist[1][2])
606 def or_test(self, nodelist):
608 if len(nodelist) == 1 and nodelist[0][0] == symbol.lambdef:
609 return self.lambdef(nodelist[0])
610 return self.com_binary(Or, nodelist)
613 def and_test(self, nodelist):
615 return self.com_binary(And, nodelist)
617 def not_test(self, nodelist):
619 result = self.com_node(nodelist[-1])
620 if len(nodelist) == 2:
621 return Not(result, lineno=nodelist[0][2])
624 def comparison(self, nodelist):
626 node = self.com_node(nodelist[0])
627 if len(nodelist) == 1:
631 for i in range(2, len(nodelist), 2):
632 nl = nodelist[i-1]
648 results.append((type, self.com_node(nodelist[i])))
657 def expr(self, nodelist):
659 return self.com_binary(Bitor, nodelist)
661 def xor_expr(self, nodelist):
663 return self.com_binary(Bitxor, nodelist)
665 def and_expr(self, nodelist):
667 return self.com_binary(Bitand, nodelist)
669 def shift_expr(self, nodelist):
671 node = self.com_node(nodelist[0])
672 for i in range(2, len(nodelist), 2):
673 right = self.com_node(nodelist[i])
674 if nodelist[i-1][0] == token.LEFTSHIFT:
675 node = LeftShift([node, right], lineno=nodelist[1][2])
676 elif nodelist[i-1][0] == token.RIGHTSHIFT:
677 node = RightShift([node, right], lineno=nodelist[1][2])
679 raise ValueError, "unexpected token: %s" % nodelist[i-1][0]
682 def arith_expr(self, nodelist):
683 node = self.com_node(nodelist[0])
684 for i in range(2, len(nodelist), 2):
685 right = self.com_node(nodelist[i])
686 if nodelist[i-1][0] == token.PLUS:
687 node = Add([node, right], lineno=nodelist[1][2])
688 elif nodelist[i-1][0] == token.MINUS:
689 node = Sub([node, right], lineno=nodelist[1][2])
691 raise ValueError, "unexpected token: %s" % nodelist[i-1][0]
694 def term(self, nodelist):
695 node = self.com_node(nodelist[0])
696 for i in range(2, len(nodelist), 2):
697 right = self.com_node(nodelist[i])
698 t = nodelist[i-1][0]
709 node.lineno = nodelist[1][2]
712 def factor(self, nodelist):
713 elt = nodelist[0]
715 node = self.lookup_node(nodelist[-1])(nodelist[-1][1:])
725 def power(self, nodelist):
727 node = self.com_node(nodelist[0])
728 for i in range(1, len(nodelist)):
729 elt = nodelist[i]
731 return Power([node, self.com_node(nodelist[i+1])],
738 def atom(self, nodelist):
739 return self._atom_dispatch[nodelist[0][0]](nodelist)
741 def atom_lpar(self, nodelist):
742 if nodelist[1][0] == token.RPAR:
743 return Tuple((), lineno=nodelist[0][2])
744 return self.com_node(nodelist[1])
746 def atom_lsqb(self, nodelist):
747 if nodelist[1][0] == token.RSQB:
748 return List((), lineno=nodelist[0][2])
749 return self.com_list_constructor(nodelist[1])
751 def atom_lbrace(self, nodelist):
752 if nodelist[1][0] == token.RBRACE:
753 return Dict((), lineno=nodelist[0][2])
754 return self.com_dictorsetmaker(nodelist[1])
756 def atom_backquote(self, nodelist):
757 return Backquote(self.com_node(nodelist[1]))
759 def atom_number(self, nodelist):
761 k = eval(nodelist[0][1])
762 return Const(k, lineno=nodelist[0][2])
775 def atom_string(self, nodelist):
777 for node in nodelist:
779 return Const(k, lineno=nodelist[0][2])
781 def atom_name(self, nodelist):
782 return Name(nodelist[0][1], lineno=nodelist[0][2])
813 def com_arglist(self, nodelist):
824 while i < len(nodelist):
825 node = nodelist[i]
828 node = nodelist[i+1]
834 if i < len(nodelist):
836 t = nodelist[i][0]
838 node = nodelist[i+1]
850 if i < len(nodelist) and nodelist[i][0] == token.EQUAL:
851 defaults.append(self.com_node(nodelist[i + 1]))
928 def com_try_except_finally(self, nodelist):
933 if nodelist[3][0] == token.NAME:
935 return TryFinally(self.com_node(nodelist[2]),
936 self.com_node(nodelist[5]),
937 lineno=nodelist[0][2])
943 for i in range(3, len(nodelist), 3):
944 node = nodelist[i]
955 clauses.append((expr1, expr2, self.com_node(nodelist[i+2])))
959 elseNode = self.com_node(nodelist[i+2])
961 finallyNode = self.com_node(nodelist[i+2])
962 try_except = TryExcept(self.com_node(nodelist[2]), clauses, elseNode,
963 lineno=nodelist[0][2])
965 return TryFinally(try_except, finallyNode, lineno=nodelist[0][2])
969 nodelist):
971 body = self.com_node(nodelist[-1])
972 for i in range(len(nodelist) - 3, 0, -2):
973 ret = self.com_with_item(nodelist[i], body, nodelist[0][2])
978 def com_with_item(self, nodelist, body, lineno):
980 if len(nodelist) == 4:
981 var = self.com_assign(nodelist[3], OP_ASSIGN)
984 expr = self.com_node(nodelist[1])
1077 def com_binary(self, constructor, nodelist):
1079 l = len(nodelist)
1081 n = nodelist[0]
1085 n = nodelist[i]
1087 return constructor(items, lineno=extractLineNo(nodelist))
1104 def com_list_constructor(self, nodelist):
1107 for i in range(1, len(nodelist)):
1108 if nodelist[i][0] == symbol.list_for:
1109 assert len(nodelist[i:]) == 1
1111 nodelist[i])
1112 elif nodelist[i][0] == token.COMMA:
1114 values.append(self.com_node(nodelist[i]))
1211 def com_dictorsetmaker(self, nodelist):
1214 assert nodelist[0] == symbol.dictorsetmaker
1215 nodelist = nodelist[1:]
1216 if len(nodelist) == 1 or nodelist[1][0] == token.COMMA:
1219 for i in range(0, len(nodelist), 2):
1220 items.append(self.com_node(nodelist[i]))
1222 elif nodelist[1][0] == symbol.comp_for:
1224 expr = self.com_node(nodelist[0])
1225 return self.com_comprehension(expr, None, nodelist[1], 'set')
1226 elif len(nodelist) > 3 and nodelist[3][0] == symbol.comp_for:
1228 assert nodelist[1][0] == token.COLON
1229 key = self.com_node(nodelist[0])
1230 value = self.com_node(nodelist[2])
1231 return self.com_comprehension(key, value, nodelist[3], 'dict')
1235 for i in range(0, len(nodelist), 4):
1236 items.append((self.com_node(nodelist[i]),
1237 self.com_node(nodelist[i+2])))
1240 def com_apply_trailer(self, primaryNode, nodelist):
1241 t = nodelist[1][0]
1243 return self.com_call_function(primaryNode, nodelist[2])
1245 return self.com_select_member(primaryNode, nodelist[2])
1247 return self.com_subscriptlist(primaryNode, nodelist[2], OP_APPLY)
1251 def com_select_member(self, primaryNode, nodelist):
1252 if nodelist[0] != token.NAME:
1254 return Getattr(primaryNode, nodelist[1], lineno=nodelist[2])
1256 def com_call_function(self, primaryNode, nodelist):
1257 if nodelist[0] == token.RPAR:
1258 return CallFunc(primaryNode, [], lineno=extractLineNo(nodelist))
1262 len_nodelist = len(nodelist)
1265 node = nodelist[i]
1270 star_node = self.com_node(nodelist[i+1])
1276 dstar_node = self.com_node(nodelist[i+1])
1293 lineno=extractLineNo(nodelist))
1295 def com_argument(self, nodelist, kw, star_node):
1296 if len(nodelist) == 3 and nodelist[2][0] == symbol.comp_for:
1297 test = self.com_node(nodelist[1])
1298 return 0, self.com_generator_expression(test, nodelist[2])
1299 if len(nodelist) == 2:
1304 return 0, self.com_node(nodelist[1])
1305 result = self.com_node(nodelist[3])
1306 n = nodelist[1]
1314 def com_subscriptlist(self, primary, nodelist, assigning):
1321 if len(nodelist) == 2:
1322 sub = nodelist[1]
1329 for i in range(1, len(nodelist), 2):
1330 subscripts.append(self.com_subscript(nodelist[i]))
1332 lineno=extractLineNo(nodelist))