~mcf/cproc#6: 
Implement the preprocessor

Status
REPORTED
Submitter
~mcf
Assigned to
No-one
Submitted
2 years ago
Updated
2 months ago
Labels
No labels applied.

~mcf 2 years ago

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.

~bugcrazy 3 months ago

There is the pp preprocessor, which uses the same ISC license!

https://github.com/mkws-1/pp-1

~mcf 3 months ago

Seems like an interesting project, but pp-1 is not a C preprocessor. Rather, it looks to be some sort of document templating program.

~bugcrazy 3 months ago

I should have explained better, that pp-1 is more for seeing code and inspiring ideas, sorry.

These are links from C preprocessor, which have permissive licenses, I hope it's useful!

https://github.com/rofl0r/tinycpp

https://github.com/h8liu/mcpp

https://github.com/MobiusHorizons/cbuild

~ach 2 months ago

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.

Register here or Log in to comment, or comment via email.