summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lexer.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/lexer.c b/src/lexer.c
index 7b0206a..14165ae 100644
--- a/src/lexer.c
+++ b/src/lexer.c
@@ -55,7 +55,8 @@ lexer_next_token(lexer_t *lexer, token_t *token)
lexer_drop_char(lexer);
}
token->kind = TOKEN_NUMBER;
- token->value = strndup(lexer->src + begin, lexer->cur - begin);
+ token->value = (char *) malloc(sizeof(char) * (lexer->cur - begin + 1));
+ strncpy(token->value, lexer->src + begin, lexer->cur - begin);
token->row = lexer->row;
token->col = begin - lexer->bol;
return;
@@ -68,7 +69,8 @@ lexer_next_token(lexer_t *lexer, token_t *token)
lexer_drop_char(lexer);
}
token->kind = TOKEN_NAME;
- token->value = strndup(lexer->src + begin, lexer->cur - begin);
+ token->value = (char *) malloc(sizeof(char) * (lexer->cur - begin + 1));
+ strncpy(token->value, lexer->src + begin, lexer->cur - begin);
token->row = lexer->row;
token->col = begin - lexer->bol;
return;
@@ -76,7 +78,8 @@ 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 = strdup("(");
+ token->value = (char *) malloc(sizeof(char) + 1);
+ strcpy(token->value, "(");
token->row = lexer->row;
token->col = lexer->cur - lexer->bol;
lexer_drop_char(lexer);
@@ -85,7 +88,8 @@ 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 = strdup(")");
+ token->value = (char *) malloc(sizeof(char) + 1);
+ strcpy(token->value, ")");
token->row = lexer->row;
token->col = lexer->cur - lexer->bol;
lexer_drop_char(lexer);
@@ -94,7 +98,8 @@ 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 = strdup(":");
+ token->value = (char *) malloc(sizeof(char) + 1);
+ strcpy(token->value, ":");
token->row = lexer->row;
token->col = lexer->cur - lexer->bol;
lexer_drop_char(lexer);
@@ -103,7 +108,8 @@ 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 = strdup(";");
+ token->value = (char *) malloc(sizeof(char) + 1);
+ strcpy(token->value, ";");
token->row = lexer->row;
token->col = lexer->cur - lexer->bol;
lexer_drop_char(lexer);
@@ -112,7 +118,8 @@ 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 = strdup("{");
+ token->value = (char *) malloc(sizeof(char) + 1);
+ strcpy(token->value, "{");
token->row = lexer->row;
token->col = lexer->cur - lexer->bol;
lexer_drop_char(lexer);
@@ -121,7 +128,8 @@ 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 = strdup("}");
+ token->value = (char *) malloc(sizeof(char) + 1);
+ strcpy(token->value, "}");
token->row = lexer->row;
token->col = lexer->cur - lexer->bol;
lexer_drop_char(lexer);