aboutsummaryrefslogtreecommitdiffhomepage
path: root/preprocess.c
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2025-08-04 00:35:32 +0900
committernsfisis <nsfisis@gmail.com>2025-08-15 10:06:21 +0900
commit6f880873fbc49f44df6d2d19a76ceeb4052890c0 (patch)
treef96e2a2f8d4ade94ab60e2aa0d113db08090b79d /preprocess.c
parent5630b305cbc8537dfdd92ac9e3118605e9464e83 (diff)
downloadducc-6f880873fbc49f44df6d2d19a76ceeb4052890c0.tar.gz
ducc-6f880873fbc49f44df6d2d19a76ceeb4052890c0.tar.zst
ducc-6f880873fbc49f44df6d2d19a76ceeb4052890c0.zip
feat: support union types
Diffstat (limited to 'preprocess.c')
-rw-r--r--preprocess.c5
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")) {