Ejemplo n.º 1
0
def addFuncParamDebug(func):
    debug = [ASTModifier.makeFuncCallLog(func)]
    for param in func['params']:
        debug.append(ASTModifier.makeDeclLog(param.coord, getTypeName(getType(param))))
        debug.append(ASTModifier.makeAssignLog(param.coord, getTypeName(getType(param))))

    if func['body'].block_items != None:
        func['body'].block_items = debug + \
            func['body'].block_items + \
            [ASTModifier.makeFuncReturnLog(func['file'] + ':' + str(func['endLine']), func)]
    else:
        func['body'].block_items = debug + \
            [ASTModifier.makeFuncReturnLog(func['file'] + ':' + str(func['endLine']), func)]
Ejemplo n.º 2
0
def addFuncReturnDebug(func, node = None):
    if node == None:
        addFuncReturnDebug(func, func['body'])
    else:
        for (name, child) in node.children():
            if nodeType(child) == 'Return':                
                newDecl = ASTModifier.makeVarDecl(func['type'], child.expr)
                ASTModifier.addVar(newDecl)
                child.expr = ASTModifier.makeID(newDecl)
                
                index = [x[1] for x in node.children()].index(child)
                node.block_items = node.block_items[:index] + \
                    [newDecl] + \
                    [ASTModifier.makeFuncReturnLog(child.coord, func, getTypeName(getType(newDecl)))] + \
                    node.block_items[index:]
            elif child != None:
                addFuncReturnDebug(func, child)