aboutsummaryrefslogtreecommitdiff
path: root/src/lexer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lexer.c')
-rw-r--r--src/lexer.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/lexer.c b/src/lexer.c
new file mode 100644
index 0000000..692a9c9
--- /dev/null
+++ b/src/lexer.c
@@ -0,0 +1,52 @@
+#include "include/lexer.h"
+#include <stdlib.h>
+#include <string.h>
+
+lexer_T* lexer_init(char* content) {
+ lexer_T* lexer = calloc(1, sizeof(struct LEXER_STRUC));
+
+ lexer->content = content;
+ lexer->i = 0;
+ lexer->c = content[lexer->i];
+
+ return lexer;
+}
+
+void lexer_next(lexer_T* lexer) {
+ // if not at end of line or file
+ if (lexer->c != '\0' && lexer->i < strlen(lexer->content)) {
+ lexer->i += 1; // advance index 1 character
+ lexer->c = lexer->content[lexer->i]; // set character w/ index
+ }
+}
+
+void lexer_pass(lexer_T* lexer) {
+ while (lexer->c == ' ' ||
+ lexer->c == '\t' ||
+ lexer->c == '\n') {
+ lexer_next(lexer);
+ }
+}
+
+token_T* lexer_get_next_token(lexer_T* lexer) {
+ while (lexer->c != '\0' && lexer->i < strlen(lexer->content)) {
+ if (lexer->c == ' ' ||
+ lexer->c == '\t' ||
+ lexer->c == '\n') {
+
+ }
+ }
+}
+
+token_T* lexer_get_string(lexer_T* lexer) {
+
+}
+token_T* lexer_get_id(lexer_T* lexer) {
+
+}
+token_T* lexer_next_token(lexer_T* lexer, token_T* token) {
+
+}
+char* lexer_get_c_as_string(lexer_T* lexer) {
+
+}