I wonder if we can dig out the original K&R preprocessor implementation?
it was a lot simpler in capabilities. much of the complexity is because of feature creep.
What feature creep did the preprocessor have?