This is an automated email from the git hooks/post-receive script.

git pushed a commit to branch master
in repository eshell.

View the commit online.

commit 710de5626f24cc0f5707c80f992b452c7d7dd6be
Author: swagtoy <m...@ow.swag.toys>
AuthorDate: Fri Nov 22 17:58:56 2024 -0500

    escript: Initialization/run function
---
 escript/include/escript.h |  1 +
 escript/include/lexer.h   |  1 +
 escript/src/escript.c     | 13 +++++++++++--
 escript/src/lexer.c       | 20 ++++++++++++++++++++
 eshell/src/eshell.c       |  2 +-
 5 files changed, 34 insertions(+), 3 deletions(-)

diff --git a/escript/include/escript.h b/escript/include/escript.h
index 7a151c4..3cac336 100644
--- a/escript/include/escript.h
+++ b/escript/include/escript.h
@@ -19,6 +19,7 @@ typedef struct Escript Escript;
 
 // TODO _new
 int escript_init(Escript* env, int argc, char** argv);
+int escript_run(Escript* escript, char const* const str, size_t len);
 void escript_cleanup(Escript* env);
 
 #endif
diff --git a/escript/include/lexer.h b/escript/include/lexer.h
index c3f9fdd..3b8abc9 100644
--- a/escript/include/lexer.h
+++ b/escript/include/lexer.h
@@ -95,6 +95,7 @@ struct Escript_Lexer
 };
 
 int escript_lexer_init(struct Escript_Lexer* lex);
+int escript_lexer_reinit(struct Escript_Lexer* lex);
 int escript_lexer_lex(struct Escript_Lexer* lex, char const* string, size_t string_len);
 void escript_lexer_cleanup(struct Escript_Lexer* lex);
 
diff --git a/escript/src/escript.c b/escript/src/escript.c
index 46d7d98..26510ff 100644
--- a/escript/src/escript.c
+++ b/escript/src/escript.c
@@ -10,14 +10,23 @@
 #include "escript.h"
 #include "lexer.h"
 
-int escript_init(Escript* escript, int argc, char** argv)
+int
+escript_init(Escript* escript, int argc, char** argv)
 {
 	escript->lex = malloc(sizeof(struct Escript_Lexer)); // TODO free me
 	escript_lexer_init(escript->lex);
 	return 0;
 }
 
-void escript_cleanup(Escript* escript)
+int
+escript_run(Escript* escript, char const* const str, size_t len)
+{
+	escript_lexer_reinit(escript->lex);
+	escript_lexer_lex(escript->lex, str, len);
+}
+
+void
+escript_cleanup(Escript* escript)
 {
 	escript_lexer_cleanup(escript->lex);
 	free(escript->lex);
diff --git a/escript/src/lexer.c b/escript/src/lexer.c
index 944cf89..4e1551f 100644
--- a/escript/src/lexer.c
+++ b/escript/src/lexer.c
@@ -8,6 +8,7 @@
 #include <string.h>
 #include <ctype.h>
 #include "lexer.h"
+#include "eina_inarray.h"
 #include "stringify.h"
 
 #define at(i) lex->current[i]
@@ -19,6 +20,25 @@ escript_lexer_init(struct Escript_Lexer* lex)
 	lex->tokens = eina_inarray_new(sizeof(struct Escript_Token), 64);
 }
 
+static void
+cleanup_token(struct Escript_Token* token)
+{
+	// BUG: Do something here of course
+}
+
+int
+escript_lexer_reinit(struct Escript_Lexer* lex)
+{
+	if (eina_inarray_count(lex->tokens))
+	{
+		struct Escript_Token* token;
+		EINA_INARRAY_FOREACH(lex->tokens, token)
+			cleanup_token(token);
+		
+		eina_inarray_flush(lex->tokens);
+	}
+}
+
 // TODO going backwards code (not really encouraged)
 static char const*
 step_char(struct Escript_Lexer* const lex, int step)
diff --git a/eshell/src/eshell.c b/eshell/src/eshell.c
index 6646a21..82c3e0c 100644
--- a/eshell/src/eshell.c
+++ b/eshell/src/eshell.c
@@ -45,7 +45,7 @@ int eshell_io_loop(struct Eshell* eshell)
 			res[res_len-1] = '\0';
 		
 		// Temporary
-		escript_lexer_lex(eshell->escript->lex, res, -1);
+		escript_run(eshell->escript, res, -1);
 	}
 	return 0;
 }

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.

Reply via email to