Made some progress on this. I pushed a branch
preprocessor
that 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.Still TODO:
- 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
tok
global just be a pointer? This might make a few things easier.