import ast def process(node): #ast.diag(node) sliceRegister = ast.nextPRegister() ast.outputInBlock( "%s = new %s" % ( sliceRegister, "PySlice" ) ) localLower = "" localUpper = "" if node.upper == None: if node.lower == None: pass else: localLower = ast.evaluate(node.lower) ast.outputInBlock( "%s.init(%s)" % ( sliceRegister, localLower ) ) elif node.lower == None: lowerTypeRegister = ast.nextIRegister() localLower = ast.nextPRegister() ast.outputInBlock( "%s = 0" % ( localLower ) ) localUpper = ast.evaluate(node.upper) ast.outputInBlock( "%s.init(%s,%s)" % ( sliceRegister, localLower, localUpper ) ) else: localLower = ast.evaluate(node.lower) localUpper = ast.evaluate(node.upper) ast.outputInBlock( "%s.init(%s,%s)" % ( sliceRegister, localLower, localUpper ) ) newListRegister = ast.nextPRegister() ast.outputInBlock( "%s = %s[%s]" % ( newListRegister, ast.evaluate(node.expr), sliceRegister ) ) return newListRegister