diff --git a/asm/include/ivy/asm/lex.h b/asm/include/ivy/asm/lex.h index 6a950c9..de4fb41 100644 --- a/asm/include/ivy/asm/lex.h +++ b/asm/include/ivy/asm/lex.h @@ -39,6 +39,8 @@ enum ivy_asm_symbol { IVY_ASM_SYM_RIGHT_PAREN, IVY_ASM_SYM_LEFT_BRACKET, IVY_ASM_SYM_RIGHT_BRACKET, + IVY_ASM_SYM_LEFT_BRACE, + IVY_ASM_SYM_RIGHT_BRACE, IVY_ASM_SYM_COLON, IVY_ASM_SYM_SEMICOLON, IVY_ASM_SYM_DOLLAR, diff --git a/asm/lex.c b/asm/lex.c index 516e5a0..a5c0645 100644 --- a/asm/lex.c +++ b/asm/lex.c @@ -38,6 +38,8 @@ static struct lex_token_def symbols[] = { LEX_TOKEN_DEF(IVY_ASM_SYM_RIGHT_PAREN, ")"), LEX_TOKEN_DEF(IVY_ASM_SYM_LEFT_BRACKET, "["), LEX_TOKEN_DEF(IVY_ASM_SYM_RIGHT_BRACKET, "]"), + LEX_TOKEN_DEF(IVY_ASM_SYM_LEFT_BRACE, "{"), + LEX_TOKEN_DEF(IVY_ASM_SYM_RIGHT_BRACE, "}"), LEX_TOKEN_DEF(IVY_ASM_SYM_COLON, ":"), LEX_TOKEN_DEF(IVY_ASM_SYM_SEMICOLON, ";"), LEX_TOKEN_DEF(IVY_ASM_SYM_DOLLAR, "$"), @@ -974,7 +976,11 @@ struct ivy_asm_token *ivy_asm_lexer_read(struct ivy_asm_lexer *lex) } struct ivy_asm_token *tok = lex->lex_queue; - lex->lex_queue = lex->lex_queue->t_next; + + if (tok) { + lex->lex_queue = tok->t_next; + } + return tok; } @@ -1042,6 +1048,8 @@ const char *ivy_asm_symbol_to_string(enum ivy_asm_symbol sym) ENUM_STR(IVY_ASM_SYM_RIGHT_BRACKET); ENUM_STR(IVY_ASM_SYM_LEFT_PAREN); ENUM_STR(IVY_ASM_SYM_RIGHT_PAREN); + ENUM_STR(IVY_ASM_SYM_LEFT_BRACE); + ENUM_STR(IVY_ASM_SYM_RIGHT_BRACE); ENUM_STR(IVY_ASM_SYM_COLON); ENUM_STR(IVY_ASM_SYM_HYPHEN); ENUM_STR(IVY_ASM_SYM_COMMA);