python类NodeTransformer()的实例源码

markers.py 文件源码 项目:OneClickDTU 作者: satwikkansal 项目源码 文件源码 阅读 27 收藏 0 点赞 0 评论 0
def visit(self, node):
        """Ensure statement only contains allowed nodes."""
        if not isinstance(node, self.ALLOWED):
            raise SyntaxError('Not allowed in environment markers.\n%s\n%s' %
                               (self.statement,
                               (' ' * node.col_offset) + '^'))
        return ast.NodeTransformer.visit(self, node)
test_fatoptimizer.py 文件源码 项目:fatoptimizer 作者: vstinner 项目源码 文件源码 阅读 29 收藏 0 点赞 0 评论 0
def test_transformer_call_visitor(self):
        class BuggyTransformer(fatoptimizer.tools.NodeTransformer):
            def visit_Module(self, node):
                # visit_Module() calls indirectly visit_BinOp(),
                # but the exception must only be wrapped once
                self.generic_visit(node)

            def visit_BinOp(self, node):
                raise Exception("bug")

        visitor = BuggyTransformer("<string>")
        self.check_call_visitor(visitor)
test_fatoptimizer.py 文件源码 项目:fatoptimizer 作者: vstinner 项目源码 文件源码 阅读 24 收藏 0 点赞 0 评论 0
def test_transformer_pass_optimizer_error(self):
        class BuggyTransformer(fatoptimizer.tools.NodeTransformer):
            def visit_Module(self, node):
                # visit_Module() calls indirectly visit_BinOp()
                self.generic_visit(node)

            def visit_BinOp(self, node):
                raise fatoptimizer.OptimizerError

        visitor = BuggyTransformer("<string>")
        self.check_pass_optimizer_error(visitor)
unroller.py 文件源码 项目:TerpreT 作者: 51alg 项目源码 文件源码 阅读 36 收藏 0 点赞 0 评论 0
def flatten_array_declarations(root):
    class Transformer(ast.NodeTransformer):
        def visit_FunctionDef(self, node):
            return node

        def visit_Assign(self, node):
            if isinstance(node.value, ast.Subscript) and isinstance(node.value.value, ast.Call):
                subscr = node.value
                call = subscr.value

                if len(node.targets) > 1:
                    error.error('Cannot use multiple assignment in array declaration.', node)

                variable_name = node.targets[0].id
                value_type = call.func.id
                declaration_args = call.args

                # Get the indices being accessed.
                shape = slice_node_to_tuple_of_numbers(subscr.slice)

                new_assigns = []
                for indices in itertools.product(*[range(n) for n in shape]):
                    index_name = flattened_array_name(variable_name, indices)
                    new_index_name_node = ast.copy_location(ast.Name(index_name, ast.Store()), node)
                    new_value_type_node = ast.copy_location(ast.Name(value_type, ast.Load()), node)
                    new_declaration_args = [copy.deepcopy(arg) for arg in declaration_args]
                    new_call_node = ast.copy_location(ast.Call(new_value_type_node, new_declaration_args, [], None, None), node)
                    new_assign = ast.Assign([new_index_name_node], new_call_node)
                    new_assign = ast.copy_location(new_assign, node)
                    new_assigns.append(new_assign)
                return new_assigns
            else:
                return node

    return Transformer().visit(root)
unroller.py 文件源码 项目:TerpreT 作者: 51alg 项目源码 文件源码 阅读 37 收藏 0 点赞 0 评论 0
def flatten_array_lookups(root):
    class Transformer(ast.NodeTransformer):
        def visit_FunctionDef(self, node):
            return node

        def visit_Subscript(self, node):
            self.generic_visit(node)

            # Get the indices being accessed.
            indices = slice_node_to_tuple_of_numbers(node.slice)
            variable_name = node.value.id
            index_name = flattened_array_name(variable_name, indices)
            return ast.copy_location(ast.Name(index_name, node.ctx), node)

    return Transformer().visit(root)
tptv1.py 文件源码 项目:TerpreT 作者: 51alg 项目源码 文件源码 阅读 26 收藏 0 点赞 0 评论 0
def add_input_indices(root, input_vars, index_var):
    class AddInputIndicesVisitor(ast.NodeTransformer):
        def visit_Subscript(self, node):
            if get_var_name(node) in input_vars:
                return extend_subscript_for_input(node, index_var)
            return node

        def visit_Name(self, node):
            if node.id in input_vars:
                return ast.Subscript(node, ast.Index(index_var), node.ctx)
            return node

    vis = AddInputIndicesVisitor()
    root = vis.visit(root)
    return ast.fix_missing_locations(root)
markers.py 文件源码 项目:QA4LOV 作者: gatemezing 项目源码 文件源码 阅读 25 收藏 0 点赞 0 评论 0
def visit(self, node):
        """Ensure statement only contains allowed nodes."""
        if not isinstance(node, self.ALLOWED):
            raise SyntaxError('Not allowed in environment markers.\n%s\n%s' %
                               (self.statement,
                               (' ' * node.col_offset) + '^'))
        return ast.NodeTransformer.visit(self, node)
markers.py 文件源码 项目:QA4LOV 作者: gatemezing 项目源码 文件源码 阅读 26 收藏 0 点赞 0 评论 0
def visit(self, node):
        """Ensure statement only contains allowed nodes."""
        if not isinstance(node, self.ALLOWED):
            raise SyntaxError('Not allowed in environment markers.\n%s\n%s' %
                               (self.statement,
                               (' ' * node.col_offset) + '^'))
        return ast.NodeTransformer.visit(self, node)
markers.py 文件源码 项目:dymo-m10-python 作者: pbrf 项目源码 文件源码 阅读 29 收藏 0 点赞 0 评论 0
def visit(self, node):
        """Ensure statement only contains allowed nodes."""
        if not isinstance(node, self.ALLOWED):
            raise SyntaxError('Not allowed in environment markers.\n%s\n%s' %
                               (self.statement,
                               (' ' * node.col_offset) + '^'))
        return ast.NodeTransformer.visit(self, node)
markers.py 文件源码 项目:Sudoku-Solver 作者: ayush1997 项目源码 文件源码 阅读 24 收藏 0 点赞 0 评论 0
def visit(self, node):
        """Ensure statement only contains allowed nodes."""
        if not isinstance(node, self.ALLOWED):
            raise SyntaxError('Not allowed in environment markers.\n%s\n%s' %
                               (self.statement,
                               (' ' * node.col_offset) + '^'))
        return ast.NodeTransformer.visit(self, node)
markers.py 文件源码 项目:Flask-SocketIO 作者: cutedogspark 项目源码 文件源码 阅读 28 收藏 0 点赞 0 评论 0
def visit(self, node):
        """Ensure statement only contains allowed nodes."""
        if not isinstance(node, self.ALLOWED):
            raise SyntaxError('Not allowed in environment markers.\n%s\n%s' %
                               (self.statement,
                               (' ' * node.col_offset) + '^'))
        return ast.NodeTransformer.visit(self, node)
markers.py 文件源码 项目:Flask-SocketIO 作者: cutedogspark 项目源码 文件源码 阅读 25 收藏 0 点赞 0 评论 0
def visit(self, node):
        """Ensure statement only contains allowed nodes."""
        if not isinstance(node, self.ALLOWED):
            raise SyntaxError('Not allowed in environment markers.\n%s\n%s' %
                               (self.statement,
                               (' ' * node.col_offset) + '^'))
        return ast.NodeTransformer.visit(self, node)
markers.py 文件源码 项目:youtube-trending-music 作者: ishan-nitj 项目源码 文件源码 阅读 28 收藏 0 点赞 0 评论 0
def visit(self, node):
        """Ensure statement only contains allowed nodes."""
        if not isinstance(node, self.ALLOWED):
            raise SyntaxError('Not allowed in environment markers.\n%s\n%s' %
                               (self.statement,
                               (' ' * node.col_offset) + '^'))
        return ast.NodeTransformer.visit(self, node)
markers.py 文件源码 项目:compatify 作者: hatooku 项目源码 文件源码 阅读 27 收藏 0 点赞 0 评论 0
def visit(self, node):
        """Ensure statement only contains allowed nodes."""
        if not isinstance(node, self.ALLOWED):
            raise SyntaxError('Not allowed in environment markers.\n%s\n%s' %
                               (self.statement,
                               (' ' * node.col_offset) + '^'))
        return ast.NodeTransformer.visit(self, node)
markers.py 文件源码 项目:compatify 作者: hatooku 项目源码 文件源码 阅读 28 收藏 0 点赞 0 评论 0
def visit(self, node):
        """Ensure statement only contains allowed nodes."""
        if not isinstance(node, self.ALLOWED):
            raise SyntaxError('Not allowed in environment markers.\n%s\n%s' %
                               (self.statement,
                               (' ' * node.col_offset) + '^'))
        return ast.NodeTransformer.visit(self, node)
markers.py 文件源码 项目:compatify 作者: hatooku 项目源码 文件源码 阅读 27 收藏 0 点赞 0 评论 0
def visit(self, node):
        """Ensure statement only contains allowed nodes."""
        if not isinstance(node, self.ALLOWED):
            raise SyntaxError('Not allowed in environment markers.\n%s\n%s' %
                               (self.statement,
                               (' ' * node.col_offset) + '^'))
        return ast.NodeTransformer.visit(self, node)
markers.py 文件源码 项目:compatify 作者: hatooku 项目源码 文件源码 阅读 25 收藏 0 点赞 0 评论 0
def visit(self, node):
        """Ensure statement only contains allowed nodes."""
        if not isinstance(node, self.ALLOWED):
            raise SyntaxError('Not allowed in environment markers.\n%s\n%s' %
                               (self.statement,
                               (' ' * node.col_offset) + '^'))
        return ast.NodeTransformer.visit(self, node)
markers.py 文件源码 项目:ropi 作者: ThumbGen 项目源码 文件源码 阅读 23 收藏 0 点赞 0 评论 0
def visit(self, node):
        """Ensure statement only contains allowed nodes."""
        if not isinstance(node, self.ALLOWED):
            raise SyntaxError('Not allowed in environment markers.\n%s\n%s' %
                               (self.statement,
                               (' ' * node.col_offset) + '^'))
        return ast.NodeTransformer.visit(self, node)
markers.py 文件源码 项目:ropi 作者: ThumbGen 项目源码 文件源码 阅读 27 收藏 0 点赞 0 评论 0
def visit(self, node):
        """Ensure statement only contains allowed nodes."""
        if not isinstance(node, self.ALLOWED):
            raise SyntaxError('Not allowed in environment markers.\n%s\n%s' %
                               (self.statement,
                               (' ' * node.col_offset) + '^'))
        return ast.NodeTransformer.visit(self, node)
markers.py 文件源码 项目:Tweetme_Django 作者: wycliff 项目源码 文件源码 阅读 29 收藏 0 点赞 0 评论 0
def visit(self, node):
        """Ensure statement only contains allowed nodes."""
        if not isinstance(node, self.ALLOWED):
            raise SyntaxError('Not allowed in environment markers.\n%s\n%s' %
                               (self.statement,
                               (' ' * node.col_offset) + '^'))
        return ast.NodeTransformer.visit(self, node)


问题


面经


文章

微信
公众号

扫码关注公众号