TokenString Empty test passes

This commit is contained in:
Kyler Olsen 2025-11-23 23:58:03 -07:00
parent eacef33cf8
commit febf34a737
1 changed files with 21 additions and 8 deletions

View File

@ -646,7 +646,27 @@ static LexerResult parse_string_literal(LexerInfo *lexer_info, char c, size_t st
return (LexerResult){SLS_ERROR, .error = (SlsError){SLS_STR("Lexer: String Literals Not Implemented Error."), 1}};
}
static void skip_comments_and_whitespace(LexerInfo *lexer_info) {
while (isspace(peek(lexer_info)) || peek(lexer_info) == '/' || peek(lexer_info) == '#') {
// Skip Comments
if ((peek(lexer_info) == '/' && far_peek(lexer_info, 1) == '/') || peek(lexer_info) == '#')
while (!(peek(lexer_info) == '\n' || peek(lexer_info) == '\0'))
advance(lexer_info);
// Skip whitespace
while (isspace(peek(lexer_info))) advance(lexer_info);
}
}
static LexerResult parse_token_string(LexerInfo *lexer_info, char c, size_t start, size_t start_line) {
advance(lexer_info);
skip_comments_and_whitespace(lexer_info);
c = peek(lexer_info);
if (c == '}') {
advance(lexer_info);
return lexer_result(lexer_info, (Token){TOKEN_TOKEN_STRING, .token_string = (TokenString){NULL, 0}}, start, start_line);
}
if (c == '\0')
return lexer_error(lexer_info, SLS_STR("Unclosed token string: missing closing brace '}'."), start, start_line);
(void)lexer_info; (void)c; (void)start; (void)start_line;
return (LexerResult){SLS_ERROR, .error = (SlsError){SLS_STR("Lexer: Token Strings Not Implemented Error."), 1}};
}
@ -720,14 +740,7 @@ static LexerResult parse_identifiers_and_booleans(LexerInfo *lexer_info, char c,
static LexerResult lexer_next(LexerInfo *lexer_info) {
// Gets the next token from the source
while (isspace(peek(lexer_info)) || peek(lexer_info) == '/' || peek(lexer_info) == '#') {
// Skip Comments
if ((peek(lexer_info) == '/' && far_peek(lexer_info, 1) == '/') || peek(lexer_info) == '#')
while (!(peek(lexer_info) == '\n' || peek(lexer_info) == '\0'))
advance(lexer_info);
// Skip whitespace
while (isspace(peek(lexer_info))) advance(lexer_info);
}
skip_comments_and_whitespace(lexer_info);
// Initialize begining variables
char c = peek(lexer_info);