From e1de8fc36f11ac932707c7113eb4bf3ebc4b1f74 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sun, 3 Aug 2025 13:19:40 +0900 Subject: feat: support short type --- parse.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'parse.c') diff --git a/parse.c b/parse.c index b9b8700..9c05519 100644 --- a/parse.c +++ b/parse.c @@ -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) { -- cgit v1.2.3-70-g09d2