aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaghuram Subramani <raghus2247@gmail.com>2025-06-11 13:39:25 +0530
committerRaghuram Subramani <raghus2247@gmail.com>2025-06-11 13:39:25 +0530
commit7fb98fd5b64d43d55d2448da8ad6e933dbc27508 (patch)
treea335dc161b2cf8da1dec0b93a9c5c68b441f2ac8
parenta89a4434d7e771f21c175730a156952ffe974e62 (diff)
lexer: add clean()
-rw-r--r--include/lexer.h1
-rw-r--r--src/lexer.cc11
2 files changed, 11 insertions, 1 deletions
diff --git a/include/lexer.h b/include/lexer.h
index 16ef0c0..e912747 100644
--- a/include/lexer.h
+++ b/include/lexer.h
@@ -13,6 +13,7 @@ private:
public:
void init(char *script);
void scan_tokens(void);
+ void clean(void);
};
#endif
diff --git a/src/lexer.cc b/src/lexer.cc
index 66b267f..1ae7e9d 100644
--- a/src/lexer.cc
+++ b/src/lexer.cc
@@ -2,12 +2,14 @@
#include <list.h>
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include <token.h>
void
Lexer::init(char *script)
{
- this->script = script;
+ this->script = (char *) malloc(strlen(script) + 1);
+ strcpy(this->script, script);
tokens = (List *) calloc(1, sizeof(List));
tokens->init(sizeof(Token));
@@ -18,3 +20,10 @@ Lexer::scan_tokens(void)
{
printf("%s\n", script);
}
+
+void
+Lexer::clean(void)
+{
+ tokens->clean();
+ free(script);
+}