diff options
| author | nsfisis <nsfisis@gmail.com> | 2025-08-03 13:19:40 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2025-08-15 10:06:21 +0900 |
| commit | e1de8fc36f11ac932707c7113eb4bf3ebc4b1f74 (patch) | |
| tree | 65c0a362dc9343b09a6e452d5526e39da834b986 /parse.c | |
| parent | 185778aa3ae35252ae992f12a9dfc39a4eab5758 (diff) | |
| download | ducc-e1de8fc36f11ac932707c7113eb4bf3ebc4b1f74.tar.gz ducc-e1de8fc36f11ac932707c7113eb4bf3ebc4b1f74.tar.zst ducc-e1de8fc36f11ac932707c7113eb4bf3ebc4b1f74.zip | |
feat: support short type
Diffstat (limited to 'parse.c')
| -rw-r--r-- | parse.c | 16 |
1 files changed, 9 insertions, 7 deletions
@@ -358,10 +358,10 @@ AstNode* parse_postfix_expr(Parser* p) { } int is_type_token(Parser* p, Token* token) { - if (token->kind == TokenKind_keyword_int || token->kind == TokenKind_keyword_long || - token->kind == TokenKind_keyword_char || token->kind == TokenKind_keyword_void || - token->kind == TokenKind_keyword_enum || token->kind == TokenKind_keyword_struct || - token->kind == TokenKind_keyword_const) { + if (token->kind == TokenKind_keyword_int || token->kind == TokenKind_keyword_short || + token->kind == TokenKind_keyword_long || token->kind == TokenKind_keyword_char || + token->kind == TokenKind_keyword_void || token->kind == TokenKind_keyword_enum || + token->kind == TokenKind_keyword_struct || token->kind == TokenKind_keyword_const) { return 1; } if (token->kind != TokenKind_ident) { @@ -388,12 +388,14 @@ Type* parse_type(Parser* p) { ty = p->typedefs[typedef_idx].ty; } else { ty = type_new(TypeKind_unknown); - if (t->kind == TokenKind_keyword_int) { + if (t->kind == TokenKind_keyword_char) { + ty->kind = TypeKind_char; + } else if (t->kind == TokenKind_keyword_short) { + ty->kind = TypeKind_short; + } else if (t->kind == TokenKind_keyword_int) { ty->kind = TypeKind_int; } else if (t->kind == TokenKind_keyword_long) { ty->kind = TypeKind_long; - } else if (t->kind == TokenKind_keyword_char) { - ty->kind = TypeKind_char; } else if (t->kind == TokenKind_keyword_void) { ty->kind = TypeKind_void; } else if (t->kind == TokenKind_keyword_enum) { |
