func_def.py 文件源码

python
阅读 26 收藏 0 点赞 0 评论 0

项目:py_gpumap 作者: ipachev 项目源码 文件源码
def visit_For(self, node):
        if isinstance(node.target, _ast.Name):
            target = node.target.id
            if isinstance(node.iter, _ast.Call) and isinstance(node.iter.func, _ast.Name):
                if node.iter.func.id == "range":
                    return self.for_range(node, target)
                else:
                    raise SyntaxError("GPUMAP: Only for ... in range(...) is supported!")

            elif isinstance(node.iter, _ast.Name):
                if node.iter.id in self.local_vars:
                    var_type = self.local_vars[node.iter.id]
                    if isinstance(var_type, str) and var_type.startswith("List<"):
                        list_type = var_type[var_type.find("<") + 1: var_type.rfind(">")]
                        return self.for_list(node, list_type, target)
                    elif isinstance(var_type, str) and var_type.startswith("List_Ptr<"):
                        list_type = var_type[var_type.find("<") + 1: var_type.rfind(">")]
                        return self.for_list(node, list_type, target, ptr=True)
                    else:
                        raise SyntaxError("GPUMAP: cannot iterate over a non-list type")
                else:
                    raise SyntaxError("GPUMAP: no such variable found: " + node.iter.id)
        else:
            raise SyntaxError("GPUMAP: Only one variable can be assigned in a for loop!")
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号