Commit Graph

50 Commits

Author SHA1 Message Date
Rui Ueyama 44776befd8 Add include guard optimization 2020-09-22 18:34:00 +09:00
Rui Ueyama f5977e1bff Cache file search results 2020-09-22 18:34:00 +09:00
Rui Ueyama f00078b8d3 Use hashmap for macro name lookup 2020-09-22 18:34:00 +09:00
Rui Ueyama b8a721f8fc Add string hashmap 2020-09-22 18:34:00 +09:00
Rui Ueyama b5c10ba086 Do not define __STDC_NO_VLA__ 2020-09-22 18:34:00 +09:00
Rui Ueyama 9d85369876 Add -include option 2020-09-22 18:34:00 +09:00
Rui Ueyama 2a38d6471a [GNU] Support GCC-style variadic macro 2020-09-22 18:34:00 +09:00
Rui Ueyama 1ceec75f4d Ignore #pragma 2020-09-22 18:34:00 +09:00
Rui Ueyama 0cd7d04625 [GNU] Handle ,##__VA_ARG__ 2020-09-22 18:34:00 +09:00
Rui Ueyama 837da45475 Add __VA_OPT__ 2020-09-22 18:34:00 +09:00
Rui Ueyama 211967308e [GNU] Add __BASE_FILE__ macro 2020-09-22 18:34:00 +09:00
Rui Ueyama e266943b53 [GNU] Add __TIMESTAMP__ macro 2020-09-22 18:34:00 +09:00
Rui Ueyama 0a7460bdb3 [GNU] Add line marker directive 2020-09-22 18:34:00 +09:00
Rui Ueyama 5c735aae4d Add #line 2020-09-22 18:34:00 +09:00
Rui Ueyama bad903348b Define __STDC_UTF_{16,32}__ macros
These predefined macros indicates that our u and U chars/strings
are UTF-16 and UTF-32-encoded, respectively.
2020-09-22 18:34:00 +09:00
Rui Ueyama a28653e931 [GNU] Add __COUNTER__ macro 2020-09-22 18:34:00 +09:00
Rui Ueyama 660158100d Add __DATE__ and __TIME__ macros 2020-09-22 18:34:00 +09:00
Rui Ueyama e97250471d Add -U option 2020-09-22 18:34:00 +09:00
Rui Ueyama 7fed29efa0 Add -D option 2020-09-22 18:34:00 +09:00
Rui Ueyama 110f6ed95e Tokenize numeric tokens as pp-numbers 2020-09-22 18:34:00 +09:00
Rui Ueyama 5baa7091f2 Concatenate adjacent string literals 2020-09-22 18:34:00 +09:00
Rui Ueyama 2b6f228b4a Add __VA_ARGS__ 2020-09-22 18:34:00 +09:00
Rui Ueyama 8857aea1fe Add __FILE__ and __LINE__ 2020-09-22 18:34:00 +09:00
Rui Ueyama bee8142e44 Add predefine macros such as __STDC__ 2020-09-22 18:34:00 +09:00
Rui Ueyama b34bac70f0 Add #error 2020-09-22 18:34:00 +09:00
Rui Ueyama faefe790c1 Add -I<dir> option 2020-09-22 18:34:00 +09:00
Rui Ueyama 0c3b87d528 Add #include <...> 2020-09-22 18:34:00 +09:00
Rui Ueyama 661108f9a4 Preserve newline and space during macro expansion 2020-09-22 18:34:00 +09:00
Rui Ueyama 0e8b78b1c3 Replace remaining identifiers with 0 in macro constexpr 2020-09-22 18:34:00 +09:00
Rui Ueyama 90d37c55df Add defined() macro operator 2020-09-22 18:34:00 +09:00
Rui Ueyama cbfb62fb0e Add macro token-pasting operator (##) 2020-09-22 18:34:00 +09:00
Rui Ueyama 50d487f4ed Add macro stringizing operator (#) 2020-09-22 18:34:00 +09:00
Rui Ueyama 040c549877 Do not expand a token more than once for the same funclike macro 2020-09-22 18:34:00 +09:00
Rui Ueyama 20fa4df5a3 Allow parenthesized expressions as macro arguments 2020-09-22 18:34:00 +09:00
Rui Ueyama f2397d0585 Add multi-arity funclike #define 2020-09-22 18:34:00 +09:00
Rui Ueyama 4008c21dd3 Add zero-arity funclike #define 2020-09-22 18:34:00 +09:00
Rui Ueyama db2815b4fb Add #ifdef and #ifndef 2020-09-22 18:34:00 +09:00
Rui Ueyama f86cb47357 Do not expand a token more than once for the same objlike macro 2020-09-22 18:34:00 +09:00
Rui Ueyama add8ae695d Expand macros in the #if and #elif argument context 2020-09-22 18:34:00 +09:00
Rui Ueyama ae83f298ec Add #undef 2020-09-22 18:34:00 +09:00
Rui Ueyama 9c44a1c666 Add objlike #define 2020-09-22 18:34:00 +09:00
Rui Ueyama 7a62e206e9 Add #elif 2020-09-22 18:34:00 +09:00
Rui Ueyama 9fc67e114a Add #else 2020-09-22 18:34:00 +09:00
Rui Ueyama 6f47e5ab8e Skip nested #if in a skipped #if-clause 2020-09-22 18:34:00 +09:00
Rui Ueyama 592f89f3c2 Add #if and #endif 2020-09-22 18:34:00 +09:00
Rui Ueyama 2019f3a79e Add -E option 2020-09-22 18:34:00 +09:00
Rui Ueyama 68e3958a5d Skip extra tokens after `#include "..."` 2020-09-22 18:34:00 +09:00
Rui Ueyama 18a2c49f03 Add #include "..." 2020-09-22 18:34:00 +09:00
Rui Ueyama 88305ee5fc Add the null directive 2020-09-22 18:34:00 +09:00
Rui Ueyama 2e15e2b8e5 Add a do-nothing preprocessor 2020-09-22 18:34:00 +09:00