summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkdx <kikoodx@paranoici.org>2023-03-14 16:39:54 +0100
committerkdx <kikoodx@paranoici.org>2023-03-14 16:39:54 +0100
commit83affb60e9b92e584cefe804045db51e9b95b8fa (patch)
treef9da72a734dd8668be51bb33808b997eccd418ef
parent7425d9089802b91f31f7254adb357e07aef38007 (diff)
downloadgolem-83affb60e9b92e584cefe804045db51e9b95b8fa.tar.gz
don't flatten token list
-rw-r--r--lexer.c23
-rw-r--r--main.c2
2 files changed, 2 insertions, 23 deletions
diff --git a/lexer.c b/lexer.c
index 59038e7..83043e9 100644
--- a/lexer.c
+++ b/lexer.c
@@ -38,25 +38,6 @@ slice_match(Slice slice, int (*isfun)(int c))
return slice;
}
-static Token *
-flatten(Token *toks)
-{
- int size = 0;
- for (Token *t = toks; t != NULL; t = t->next)
- size += 1;
- Token *flat = calloc(1, sizeof(Token) * (size + 1));
- if (flat == NULL)
- return NULL;
- int i = 0;
- for (Token *t = toks; t != NULL; t = t->next) {
- flat[i] = *t;
- if (i + 1 < size)
- flat[i].next = flat + i + 1;
- i += 1;
- }
- return flat;
-}
-
Token *
lexer(Slice slice)
{
@@ -140,7 +121,5 @@ lexer(Slice slice)
printf("skipping '%c'\n", slice.str[i]);
i += 1;
}
- Token *flat = flatten(toks);
- token_destroy(toks);
- return flat;
+ return toks;
}
diff --git a/main.c b/main.c
index 48f5189..5002350 100644
--- a/main.c
+++ b/main.c
@@ -24,7 +24,7 @@ main(int argc, char **argv)
Token *tokens = lexer(slice);
token_print(tokens, 1);
- free(tokens);
+ token_destroy(tokens);
if (slice.str != NULL)
free(slice.str);