Lines Matching refs:node
74 # get a terminal node
82 def Node(*args):
91 raise WalkerError, "Can't find appropriate Node type: %s" % str(args)
92 #return apply(ast.Node, args)
145 def compile_node(self, node):
146 ### emit a line-number node?
147 n = node[0]
150 self.encoding = node[2]
151 node = node[1]
152 n = node[0]
155 return self.single_input(node[1:])
157 return self.file_input(node[1:])
159 return self.eval_input(node[1:])
161 return self.lambdef(node[1:])
163 return self.funcdef(node[1:])
165 return self.classdef(node[1:])
167 raise WalkerError, ('unexpected node type', n)
169 def single_input(self, node):
173 n = node[0][0]
175 return self.com_stmt(node[0])
186 for node in nodelist[i:]:
187 if node[0] != token.ENDMARKER and node[0] != token.NEWLINE:
188 self.com_append_stmt(stmts, node)
472 node = nodelist[idx + 1 + (nodelist[idx + 1][0] == token.LPAR)]
473 return From(fromname, self.com_import_as_names(node), level,
564 for node in nodelist:
565 if node[0] == symbol.stmt:
566 self.com_append_stmt(stmts, node)
626 node = self.com_node(nodelist[0])
628 return node
650 # we need a special "compare" node so that we can distinguish
655 return Compare(node, results, lineno=lineno)
671 node = self.com_node(nodelist[0])
675 node = LeftShift([node, right], lineno=nodelist[1][2])
677 node = RightShift([node, right], lineno=nodelist[1][2])
680 return node
683 node = self.com_node(nodelist[0])
687 node = Add([node, right], lineno=nodelist[1][2])
689 node = Sub([node, right], lineno=nodelist[1][2])
692 return node
695 node = self.com_node(nodelist[0])
700 node = Mul([node, right])
702 node = Div([node, right])
704 node = Mod([node, right])
706 node = FloorDiv([node, right])
709 node.lineno = nodelist[1][2]
710 return node
715 node = self.lookup_node(nodelist[-1])(nodelist[-1][1:])
718 return UnaryAdd(node, lineno=elt[2])
720 return UnarySub(node, lineno=elt[2])
722 node = Invert(node, lineno=elt[2])
723 return node
727 node = self.com_node(nodelist[0])
731 return Power([node, self.com_node(nodelist[i+1])],
734 node = self.com_apply_trailer(node, elt)
736 return node
777 for node in nodelist:
778 k += self.decode_literal(node[1])
795 # dispatched node directly.
797 def lookup_node(self, node):
798 return self._dispatch[node[0]]
800 def com_node(self, node):
805 return self._dispatch[node[0]](node[1:])
825 node = nodelist[i]
826 if node[0] == token.STAR or node[0] == token.DOUBLESTAR:
827 if node[0] == token.STAR:
828 node = nodelist[i+1]
829 if node[0] == token.NAME:
830 names.append(node[1])
838 node = nodelist[i+1]
841 names.append(node[1])
847 names.append(self.com_fpdef(node))
863 def com_fpdef(self, node):
865 if node[1][0] == token.LPAR:
866 return self.com_fplist(node[2])
867 return node[1][1]
869 def com_fplist(self, node):
871 if len(node) == 2:
872 return self.com_fpdef(node[1])
874 for i in range(1, len(node), 2):
875 list.append(self.com_fpdef(node[i]))
878 def com_dotted_name(self, node):
881 for n in node:
886 def com_dotted_as_name(self, node):
887 assert node[0] == symbol.dotted_as_name
888 node = node[1:]
889 dot = self.com_dotted_name(node[0][1:])
890 if len(node) == 1:
892 assert node[1][1] == 'as'
893 assert node[2][0] == token.NAME
894 return dot, node[2][1]
896 def com_dotted_as_names(self, node):
897 assert node[0] == symbol.dotted_as_names
898 node = node[1:]
899 names = [self.com_dotted_as_name(node[0])]
900 for i in range(2, len(node), 2):
901 names.append(self.com_dotted_as_name(node[i]))
904 def com_import_as_name(self, node):
905 assert node[0] == symbol.import_as_name
906 node = node[1:]
907 assert node[0][0] == token.NAME
908 if len(node) == 1:
909 return node[0][1], None
910 assert node[1][1] == 'as', node
911 assert node[2][0] == token.NAME
912 return node[0][1], node[2][1]
914 def com_import_as_names(self, node):
915 assert node[0] == symbol.import_as_names
916 node = node[1:]
917 names = [self.com_import_as_name(node[0])]
918 for i in range(2, len(node), 2):
919 names.append(self.com_import_as_name(node[i]))
922 def com_bases(self, node):
924 for i in range(1, len(node), 2):
925 bases.append(self.com_node(node[i]))
944 node = nodelist[i]
945 if node[0] == symbol.except_clause:
947 if len(node) > 2:
948 expr1 = self.com_node(node[2])
949 if len(node) > 4:
950 expr2 = self.com_assign(node[4], OP_ASSIGN)
957 if node[0] == token.NAME:
958 if node[1] == 'else':
960 elif node[1] == 'finally':
987 def com_augassign_op(self, node):
988 assert node[0] == symbol.augassign
989 return node[1]
991 def com_augassign(self, node):
992 """Return node suitable for lvalue of augmented assignment
996 l = self.com_node(node)
1001 def com_assign(self, node, assigning):
1002 # return a node suitable for use as an "lvalue"
1005 t = node[0]
1007 if len(node) > 2:
1008 return self.com_assign_tuple(node, assigning)
1009 node = node[1]
1011 if len(node) > 2:
1013 node = node[1]
1015 if node[1][0] != symbol.atom:
1017 if len(node) > 2:
1018 primary = self.com_node(node[1])
1019 for i in range(2, len(node)-1):
1020 ch = node[i]
1024 return self.com_assign_trailer(primary, node[-1],
1026 node = node[1]
1028 t = node[1][0]
1030 node = node[2]
1031 if node[0] == token.RPAR:
1034 node = node[2]
1035 if node[0] == token.RSQB:
1037 return self.com_assign_list(node, assigning)
1039 return self.com_assign_name(node[1], assigning)
1045 def com_assign_tuple(self, node, assigning):
1047 for i in range(1, len(node), 2):
1048 assigns.append(self.com_assign(node[i], assigning))
1049 return AssTuple(assigns, lineno=extractLineNo(node))
1051 def com_assign_list(self, node, assigning):
1053 for i in range(1, len(node), 2):
1054 if i + 1 < len(node):
1055 if node[i + 1][0] == symbol.list_for:
1057 assert node[i + 1][0] == token.COMMA, node[i + 1]
1058 assigns.append(self.com_assign(node[i], assigning))
1059 return AssList(assigns, lineno=extractLineNo(node))
1061 def com_assign_name(self, node, assigning):
1062 return AssName(node[1], assigning, lineno=node[2])
1064 def com_assign_trailer(self, primary, node, assigning):
1065 t = node[1][0]
1067 return self.com_assign_attr(primary, node[2], assigning)
1069 return self.com_subscriptlist(primary, node[2], assigning)
1074 def com_assign_attr(self, primary, node, assigning):
1075 return AssAttr(primary, node[1], assigning, lineno=node[-1])
1078 "Compile 'NODE (OP NODE)*' into (type, [ node1, ..., nodeN ])."
1089 def com_stmt(self, node):
1090 result = self.lookup_node(node)(node[1:])
1096 def com_append_stmt(self, stmts, node):
1097 result = self.lookup_node(node)(node[1:])
1117 def com_list_comprehension(self, expr, node):
1118 return self.com_comprehension(expr, None, node, 'list')
1120 def com_comprehension(self, expr1, expr2, node, type):
1130 lineno = node[1][2]
1132 while node:
1133 t = node[1][1]
1135 assignNode = self.com_assign(node[2], OP_ASSIGN)
1136 compNode = self.com_node(node[4])
1138 newfor.lineno = node[1][2]
1140 if len(node) == 5:
1141 node = None
1143 node = self.com_list_iter(node[5])
1145 node = self.com_comp_iter(node[5])
1147 test = self.com_node(node[2])
1148 newif = ListCompIf(test, lineno=node[1][2])
1150 if len(node) == 3:
1151 node = None
1153 node = self.com_list_iter(node[3])
1155 node = self.com_comp_iter(node[3])
1159 % (node, lineno))
1169 def com_list_iter(self, node):
1170 assert node[0] == symbol.list_iter
1171 return node[1]
1173 def com_comp_iter(self, node):
1174 assert node[0] == symbol.comp_iter
1175 return node[1]
1177 def com_generator_expression(self, expr, node):
1182 lineno = node[1][2]
1184 while node:
1185 t = node[1][1]
1187 assignNode = self.com_assign(node[2], OP_ASSIGN)
1188 genNode = self.com_node(node[4])
1190 lineno=node[1][2])
1192 if (len(node)) == 5:
1193 node = None
1195 node = self.com_comp_iter(node[5])
1197 test = self.com_node(node[2])
1198 newif = GenExprIf(test, lineno=node[1][2])
1200 if len(node) == 3:
1201 node = None
1203 node = self.com_comp_iter(node[3])
1207 % (node, lineno))
1249 raise SyntaxError, 'unknown node type: %s' % t
1265 node = nodelist[i]
1267 if node[0]==token.STAR:
1273 elif node[0]==token.DOUBLESTAR:
1281 kw, result = self.com_argument(node, kw, star_node)
1284 and len(node) == 3 and node[2][0] == symbol.comp_for:
1311 node = Keyword(n[1], result, lineno=n[2])
1312 return 1, node
1334 def com_subscript(self, node):
1336 ch = node[1]
1338 if t == token.DOT and node[2][0] == token.DOT:
1340 if t == token.COLON or len(node) > 2:
1341 return self.com_sliceobj(node)
1344 def com_sliceobj(self, node):
1356 if node[1][0] == token.COLON:
1360 items.append(self.com_node(node[1]))
1364 if i < len(node) and node[i][0] == symbol.test:
1365 items.append(self.com_node(node[i]))
1372 for j in range(i, len(node)):
1373 ch = node[j]
1378 return Sliceobj(items, lineno=extractLineNo(node
1380 def com_slice(self, primary, node, assigning):
1383 if len(node) == 3:
1384 if node[1][0] == token.COLON:
1385 upper = self.com_node(node[2])
1387 lower = self.com_node(node[1])
1388 elif len(node) == 4:
1389 lower = self.com_node(node[1])
1390 upper = self.com_node(node[3])
1392 lineno=extractLineNo(node))
1394 def get_docstring(self, node, n=None):
1396 n = node[0]
1397 node = node[1:]
1399 if len(node) == 1:
1400 return self.get_docstring(node[0])
1401 for sub in node:
1406 for sub in node:
1411 if node[0][0] == token.STRING:
1413 for t in node:
1419 return self.get_docstring(node[0])
1420 if n in _doc_nodes and len(node) == 1:
1421 return self.get_docstring(node[0])