From aafa7ab75d6fa3501e345fb20c1fa557e826c730 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Wed, 9 Oct 2024 10:33:30 +0200 Subject: parse enum decl --- attocc.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'attocc.c') diff --git a/attocc.c b/attocc.c index bb6b248..1015747 100644 --- a/attocc.c +++ b/attocc.c @@ -489,7 +489,8 @@ struct token *tokenize(char *source) { char *ident_start = p; for (char c; (c = *p++) && is_ident(c);) ; - int ident_len = p - ident_start - 1; + p--; + int ident_len = p - ident_start; char *ident_str = realloc_failsafe(NULL, ident_len + 1); for (int i = 0; i < ident_len; i++) ident_str[i] = ident_start[i]; @@ -649,6 +650,12 @@ char parse_enum_decl(struct token *tokens, struct node **node) { if (tokens[p].kind == TOK_END) return 1; + if (tokens[p].kind == TOK_SEPERATOR && + tokens[p].data.seperator == SEP_COMMA) { + p++; + continue; + } + if (tokens[p].kind != TOK_IDENTIFIER) return 1; @@ -671,7 +678,7 @@ char parse_enum_decl(struct token *tokens, struct node **node) { num_members++; members = - realloc_failsafe(NULL, sizeof(struct enum_member) * num_members); + realloc_failsafe(members, sizeof(struct enum_member) * num_members); struct enum_member *new_member = &members[num_members - 1]; new_member->value = value++; new_member->name = strdup_failsafe(m_ident); -- cgit v1.2.3-70-g09d2