Made some progress on this. I pushed a branch
preprocessorthat is able to bootstrap without cpp. However, I'm not yet happy with the code, so I'll keep working on it in that branch. But it's at least good to have a baseline that works.
- String operator
- Paste operator
- Variadic macros (so de85378a20 and d2b8ee0f91 are temporarily reverted)
Things to decide:
- Should we remove the newline token, and instead keep track per-token whether it starts a line?
- Should the
tokglobal just be a pointer? This might make a few things easier.
There is the pp preprocessor, which uses the same ISC license!
Seems like an interesting project, but pp-1 is not a C preprocessor. Rather, it looks to be some sort of document templating program.
I think the chibicc preprocessor is another good one: https://github.com/rui314/chibicc/blob/main/preprocess.c
It is very small and handles a lot of real programs.