aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMustafa Quraish <[email protected]>2022-01-31 01:33:18 -0500
committerMustafa Quraish <[email protected]>2022-01-31 01:33:18 -0500
commitbea757674b90442eaedfa238ed6a5a6a63767bf9 (patch)
tree5b14a10118569479f5f810f01db6db0595ff545c
parentAdd basic builtin-function support (diff)
downloadcup-bea757674b90442eaedfa238ed6a5a6a63767bf9.tar.xz
cup-bea757674b90442eaedfa238ed6a5a6a63767bf9.zip
Make `Lexer_new` return a pointer instead of the object.
-rw-r--r--src/lexer.c10
-rw-r--r--src/lexer.h2
-rw-r--r--src/main.c4
3 files changed, 8 insertions, 8 deletions
diff --git a/src/lexer.c b/src/lexer.c
index 699e960..524e87f 100644
--- a/src/lexer.c
+++ b/src/lexer.c
@@ -5,12 +5,12 @@
#include <stdio.h>
#include "utils.h"
-Lexer Lexer_new(char *filename, char *src, i64 len)
+Lexer *Lexer_new(char *filename, char *src, i64 len)
{
- Lexer self = {0};
- self.src = src;
- self.len = len;
- self.filename = filename;
+ Lexer *self = calloc(1, sizeof(Lexer));
+ self->src = src;
+ self->len = len;
+ self->filename = filename;
return self;
}
diff --git a/src/lexer.h b/src/lexer.h
index f710d3d..b7f3db2 100644
--- a/src/lexer.h
+++ b/src/lexer.h
@@ -13,7 +13,7 @@ typedef struct {
i64 col;
} Lexer;
-Lexer Lexer_new(char *filename, char *src, i64 len);
+Lexer *Lexer_new(char *filename, char *src, i64 len);
Token Lexer_next(Lexer *lexer);
Token Lexer_peek(Lexer *lexer); \ No newline at end of file
diff --git a/src/main.c b/src/main.c
index c94f8d3..60613c8 100644
--- a/src/main.c
+++ b/src/main.c
@@ -74,8 +74,8 @@ void parse_args(int argc, char **argv)
int main(int argc, char**argv) {
parse_args(argc, argv);
- Lexer lexer = Lexer_new(filename, source, source_len);
- Node *ast = parse_program(&lexer);
+ Lexer *lexer = Lexer_new(filename, source, source_len);
+ Node *ast = parse_program(lexer);
if (dump_ast)
print_ast(ast);