This should do the trick:
function! ConditionalsInPlay()
let ppc_stack=[]
for cline in range(1, line('.'))
let str = getline(cline)
if (match(str, '\v^\s*#\s*(if|ifdef|ifndef)') >= 0)
let ppc_stack += [str]
elseif (match(str, '\v^\s*#\s*elif') >= 0)
let ppc_stack[-1] = str
elseif (match(str, '\v^\s*#\s*else') >= 0)
let ppc_stack[-1] = 'NOT ' . ppc_stack[-1]
elseif (match(str, '\v^\s*#\s*endif') >= 0)
call remove(ppc_stack, len(ppc_stack) - 1)
endif
endfor
echo string(ppc_stack)
endfunction