diff options
| author | nsfisis <nsfisis@gmail.com> | 2025-08-04 00:35:32 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2025-08-15 10:06:21 +0900 |
| commit | 6f880873fbc49f44df6d2d19a76ceeb4052890c0 (patch) | |
| tree | f96e2a2f8d4ade94ab60e2aa0d113db08090b79d /preprocess.c | |
| parent | 5630b305cbc8537dfdd92ac9e3118605e9464e83 (diff) | |
| download | ducc-6f880873fbc49f44df6d2d19a76ceeb4052890c0.tar.gz ducc-6f880873fbc49f44df6d2d19a76ceeb4052890c0.tar.zst ducc-6f880873fbc49f44df6d2d19a76ceeb4052890c0.zip | |
feat: support union types
Diffstat (limited to 'preprocess.c')
| -rw-r--r-- | preprocess.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/preprocess.c b/preprocess.c index 9a44394..ea900fe 100644 --- a/preprocess.c +++ b/preprocess.c @@ -42,6 +42,7 @@ enum TokenKind { TokenKind_keyword_sizeof, TokenKind_keyword_struct, TokenKind_keyword_typedef, + TokenKind_keyword_union, TokenKind_keyword_void, TokenKind_keyword_while, TokenKind_le, @@ -149,6 +150,8 @@ const char* token_kind_stringify(TokenKind k) { return "struct"; else if (k == TokenKind_keyword_typedef) return "typedef"; + else if (k == TokenKind_keyword_union) + return "union"; else if (k == TokenKind_keyword_void) return "void"; else if (k == TokenKind_keyword_while) @@ -592,6 +595,8 @@ void pp_tokenize_all(Preprocessor* pp) { tok->kind = TokenKind_keyword_struct; } else if (string_equals_cstr(&tok->raw, "typedef")) { tok->kind = TokenKind_keyword_typedef; + } else if (string_equals_cstr(&tok->raw, "union")) { + tok->kind = TokenKind_keyword_union; } else if (string_equals_cstr(&tok->raw, "void")) { tok->kind = TokenKind_keyword_void; } else if (string_equals_cstr(&tok->raw, "while")) { |
