Exemple #1
0
def replace_nodes_in_ast(node: SymbolNode,
                         replacements: Dict[SymbolNode, SymbolNode]) -> SymbolNode:
    """Replace all references to replacement map keys within an AST node, recursively.

    Also replace the *identity* of any nodes that have replacements. Return the
    *replaced* version of the argument node (which may have a different identity, if
    it's included in the replacement map).
    """
    visitor = NodeReplaceVisitor(replacements)
    node.accept(visitor)
    return replacements.get(node, node)
Exemple #2
0
def replace_nodes_in_ast(node: SymbolNode,
                         replacements: Dict[SymbolNode, SymbolNode]) -> SymbolNode:
    """Replace all references to replacement map keys within an AST node, recursively.

    Also replace the *identity* of any nodes that have replacements. Return the
    *replaced* version of the argument node (which may have a different identity, if
    it's included in the replacement map).
    """
    visitor = NodeReplaceVisitor(replacements)
    node.accept(visitor)
    return replacements.get(node, node)
Exemple #3
0
 def add_local(self,
               symbol: SymbolNode,
               typ: RType,
               is_arg: bool = False) -> 'Register':
     assert isinstance(symbol, SymbolNode)
     reg = Register(typ, symbol.line, is_arg=is_arg)
     self.symtable[symbol] = AssignmentTargetRegister(reg)
     self.add(reg, symbol.name())
     return reg
Exemple #4
0
def fullname(node: SymbolNode) -> str:
    name = node.fullname()
    if name.startswith('builtins.'):
        return name[9:]
    else:
        return name
Exemple #5
0
def replace_nodes_in_ast(node: SymbolNode,
                         replacements: Dict[SymbolNode, SymbolNode]) -> SymbolNode:
    visitor = NodeReplaceVisitor(replacements)
    node.accept(visitor)
    return replacements.get(node, node)
Exemple #6
0
def replace_nodes_in_ast(node: SymbolNode,
                         replacements: Dict[SymbolNode, SymbolNode]) -> SymbolNode:
    visitor = NodeReplaceVisitor(replacements)
    node.accept(visitor)
    return replacements.get(node, node)