summaryrefslogtreecommitdiff
path: root/src/lexer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lexer.c')
-rw-r--r--src/lexer.c24
1 files changed, 8 insertions, 16 deletions
diff --git a/src/lexer.c b/src/lexer.c
index f58b0ea..9be96a8 100644
--- a/src/lexer.c
+++ b/src/lexer.c
@@ -55,8 +55,7 @@ lexer_next_token(lexer_t *lexer, token_t *token)
lexer_drop_char(lexer);
}
token->kind = TOKEN_NUMBER;
- token->value = (char *) malloc(sizeof(char) * (lexer->cur - begin + 1));
- strncpy(token->value, lexer->src + begin, lexer->cur - begin);
+ token->value = string_view_new(lexer->src + begin, lexer->cur - begin);
token->filepath = lexer->filepath;
token->row = lexer->row;
token->col = begin - lexer->bol;
@@ -70,8 +69,7 @@ lexer_next_token(lexer_t *lexer, token_t *token)
lexer_drop_char(lexer);
}
token->kind = TOKEN_NAME;
- token->value = (char *) malloc(sizeof(char) * (lexer->cur - begin + 1));
- strncpy(token->value, lexer->src + begin, lexer->cur - begin);
+ token->value = string_view_new(lexer->src + begin, lexer->cur - begin);
token->filepath = lexer->filepath;
token->row = lexer->row;
token->col = begin - lexer->bol;
@@ -80,8 +78,7 @@ lexer_next_token(lexer_t *lexer, token_t *token)
if (lexer_is_not_eof(lexer) && lexer_current_char(lexer) == '(') {
token->kind = TOKEN_OPAREN;
- token->value = (char *) malloc(sizeof(char) + 1);
- strcpy(token->value, "(");
+ token->value = string_view_new(lexer->src, 1);
token->filepath = lexer->filepath;
token->row = lexer->row;
token->col = lexer->cur - lexer->bol;
@@ -91,8 +88,7 @@ lexer_next_token(lexer_t *lexer, token_t *token)
if (lexer_is_not_eof(lexer) && lexer_current_char(lexer) == ')') {
token->kind = TOKEN_CPAREN;
- token->value = (char *) malloc(sizeof(char) + 1);
- strcpy(token->value, ")");
+ token->value = string_view_new(lexer->src, 1);
token->filepath = lexer->filepath;
token->row = lexer->row;
token->col = lexer->cur - lexer->bol;
@@ -102,8 +98,7 @@ lexer_next_token(lexer_t *lexer, token_t *token)
if (lexer_is_not_eof(lexer) && lexer_current_char(lexer) == ':') {
token->kind = TOKEN_COLON;
- token->value = (char *) malloc(sizeof(char) + 1);
- strcpy(token->value, ":");
+ token->value = string_view_new(lexer->src, 1);
token->filepath = lexer->filepath;
token->row = lexer->row;
token->col = lexer->cur - lexer->bol;
@@ -113,8 +108,7 @@ lexer_next_token(lexer_t *lexer, token_t *token)
if (lexer_is_not_eof(lexer) && lexer_current_char(lexer) == ';') {
token->kind = TOKEN_SEMICOLON;
- token->value = (char *) malloc(sizeof(char) + 1);
- strcpy(token->value, ";");
+ token->value = string_view_new(lexer->src, 1);
token->filepath = lexer->filepath;
token->row = lexer->row;
token->col = lexer->cur - lexer->bol;
@@ -124,8 +118,7 @@ lexer_next_token(lexer_t *lexer, token_t *token)
if (lexer_is_not_eof(lexer) && lexer_current_char(lexer) == '{') {
token->kind = TOKEN_OCURLY;
- token->value = (char *) malloc(sizeof(char) + 1);
- strcpy(token->value, "{");
+ token->value = string_view_new(lexer->src, 1);
token->filepath = lexer->filepath;
token->row = lexer->row;
token->col = lexer->cur - lexer->bol;
@@ -135,8 +128,7 @@ lexer_next_token(lexer_t *lexer, token_t *token)
if (lexer_is_not_eof(lexer) && lexer_current_char(lexer) == '}') {
token->kind = TOKEN_CCURLY;
- token->value = (char *) malloc(sizeof(char) + 1);
- strcpy(token->value, "}");
+ token->value = string_view_new(lexer->src, 1);
token->filepath = lexer->filepath;
token->row = lexer->row;
token->col = lexer->cur - lexer->bol;