Bill Currie
717be4a12d
[qfcc] Update pragma handling for the preprocessor
...
This removes the now redundant flex rules, though does spread
preprocess-only checks around a little more.
2023-10-25 09:25:00 +09:00
Bill Currie
4e922008eb
[qfcc] Collect all arg tokens for stringification
...
Now all the tokens in the arg go into the one string.
2023-10-25 00:25:41 +09:00
Bill Currie
dc598c58b5
[qfcc] Record and expand macro arguments
...
Stringizing doesn't work correctly (stringizes only the first token, not
the whole argument), but things seems to work otherwise.
2023-10-24 23:32:13 +09:00
Bill Currie
3307ef77ec
[qfcc] Implement object-type macro expansion
...
Really, function-type macros expand too, but incorrectly as the
parameters are not parsed and thus not expanded, but this gets the basic
handling implemented, including # and ## processing.
2023-10-24 15:58:37 +09:00
Bill Currie
45e61544bb
[qfcc] Improve handling of spaces in macro definitions
...
Avoids space tokens on either side of ## and after #
2023-10-24 14:17:05 +09:00
Bill Currie
8341f48f9d
[qfcc] Implement #undef
...
That was pleasantly easy :)
2023-10-23 19:00:37 +09:00
Bill Currie
5cab587207
[qfcc] Implement macro recording and defined()
...
So far, very consistent with gcc's cpp from my limited testing, though
some error handling may be a little different.
2023-10-23 19:00:30 +09:00
Bill Currie
5794c68bda
[qfcc] Implement basic conditional compilation
...
Just #if, #else and #endif for now. However, much of the preprocessor
parsing working minus the semantics (expressions do work, though).
2023-10-23 00:10:25 +09:00
Bill Currie
93247163b3
[qfcc] Create a preprocessor token type
...
This will be used for unifying preprocessing and parsing, the idea being
that the tokens will be recorded for later expansion via macros, without
the need to retokenize.
2023-10-20 20:39:13 +09:00