def addForDebug(parent, child, index): if nodeType(parent) != 'Compound': return preFor = [ASTModifier.makeScopeInLog(child.coord)] postFor = [ASTModifier.makeScopeOutLog(child.coord)] if nodeType(child.init) == 'DeclList': for (name, decl) in child.init.children(): newDecl = ASTModifier.makeVarDecl(decl, decl.init) ASTModifier.addVar(decl) ASTModifier.addVar(newDecl) preFor.append(newDecl) preFor.append(ASTModifier.makeDeclLog(child.coord, getTypeName(getType(decl)))) preFor.append(ASTModifier.makeAssignLog(child.coord, getTypeName(getType(decl)), getTypeName(getType(newDecl)))) decl.init = ASTModifier.makeID(newDecl) else: child.init = makeAssignExprLog(child.init) child.cond = makeAssignExprLog(child.cond) child.next = makeAssignExprLog(child.next) parent.block_items = parent.block_items[:index] + \ preFor + \ [parent.block_items[index]] + \ postFor + \ parent.block_items[index + 1:]
def addWhileDebug(parent, child, index): if nodeType(parent) != 'Compound': return child.cond = makeAssignExprLog(child.cond) parent.block_items = parent.block_items[:index] + \ [ASTModifier.makeScopeInLog(child.coord)] + \ [parent.block_items[index]] + \ [ASTModifier.makeScopeOutLog(child.coord)] + \ parent.block_items[index + 1:]
def addIfDebug(parent, child, index): if nodeType(child.iftrue) == 'Compound': if child.iftrue.block_items == None: child.iftrue.block_items = [ ASTModifier.makeScopeInLog(child.coord), ASTModifier.makeScopeOutLog(child.coord)] else: child.iftrue.block_items = [ASTModifier.makeScopeInLog(child.coord)] + \ child.iftrue.block_items + \ [ASTModifier.makeScopeOutLog(child.coord)] if nodeType(child.iffalse) == 'Compound': if child.iffalse.block_items == None: child.iffalse.block_items = [ ASTModifier.makeScopeInLog(child.coord), ASTModifier.makeScopeOutLog(child.coord)] else: child.iffalse.block_items = [ASTModifier.makeScopeInLog(child.coord)] + \ child.iffalse.block_items + \ [ASTModifier.makeScopeOutLog(child.coord)]