The code doesn't have to be completely syntactically correct, only tokenization-wise correct. It's perfectly fine to have syntactic errors like unbalanced parens and missing semicolons in there.
Anyway, I don't want the preprocessor to be language independent because I don't want to watch out for cpp-directive-like things in comments and string literals.
I've also run into the situation you describe a couple of times in all my years with Pike, but for me it's not nearly often enough to warrant some kind of language support.