summaryrefslogtreecommitdiff
path: root/src/lexer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lexer.h')
-rw-r--r--src/lexer.h116
1 files changed, 63 insertions, 53 deletions
diff --git a/src/lexer.h b/src/lexer.h
index 9f45910..8c84745 100644
--- a/src/lexer.h
+++ b/src/lexer.h
@@ -1,77 +1,87 @@
/*
-* Copyright (C) 2023 Johnny Richard
-*
-* This program is free software: you can redistribute it and/or modify
-* it under the terms of the GNU General Public License as published by
-* the Free Software Foundation, either version 3 of the License, or
-* (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program. If not, see <https://www.gnu.org/licenses/>.
-*/
+ * Copyright (C) 2023 Johnny Richard
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
#ifndef LEXER_H
#define LEXER_H
+#include "string_view.h"
+#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>
-#include <stdbool.h>
-#include "string_view.h"
-typedef enum {
- TOKEN_NAME,
- TOKEN_OPAREN,
- TOKEN_CPAREN,
- TOKEN_COLON,
- TOKEN_SEMICOLON,
- TOKEN_OCURLY,
- TOKEN_CCURLY,
- TOKEN_NUMBER,
- TOKEN_OP,
- TOKEN_EOF,
- TOKEN_UNKNOWN
+typedef enum
+{
+ TOKEN_NAME,
+ TOKEN_OPAREN,
+ TOKEN_CPAREN,
+ TOKEN_COLON,
+ TOKEN_SEMICOLON,
+ TOKEN_OCURLY,
+ TOKEN_CCURLY,
+ TOKEN_NUMBER,
+ TOKEN_OP,
+ TOKEN_EOF,
+ TOKEN_UNKNOWN
} token_kind_t;
-typedef struct token_t {
- token_kind_t kind;
+typedef struct token_t
+{
+ token_kind_t kind;
string_view_t value;
- char *filepath;
- uint32_t row;
- uint32_t col;
- uint32_t bol;
+ char *filepath;
+ uint32_t row;
+ uint32_t col;
+ uint32_t bol;
} token_t;
-
-typedef struct lexer_t {
- char *filepath;
- char *src;
- size_t srclen;
- uint32_t cur;
- uint32_t row;
- uint32_t bol;
+typedef struct lexer_t
+{
+ char *filepath;
+ char *src;
+ size_t srclen;
+ uint32_t cur;
+ uint32_t row;
+ uint32_t bol;
} lexer_t;
-void lexer_init(lexer_t *lexer, char *filepath);
+void
+lexer_init(lexer_t *lexer, char *filepath);
-void lexer_next_token(lexer_t *lexer, token_t *token);
+void
+lexer_next_token(lexer_t *lexer, token_t *token);
-void lexer_load_file_contents(lexer_t *lexer);
+void
+lexer_load_file_contents(lexer_t *lexer);
-char lexer_current_char(lexer_t *lexer);
+char
+lexer_current_char(lexer_t *lexer);
-bool lexer_is_eof(lexer_t *lexer);
+bool
+lexer_is_eof(lexer_t *lexer);
-bool lexer_is_not_eof(lexer_t *lexer);
+bool
+lexer_is_not_eof(lexer_t *lexer);
-void lexer_drop_char(lexer_t *lexer);
+void
+lexer_drop_char(lexer_t *lexer);
-void lexer_step_back_to(lexer_t *lexer, token_t *token);
+void
+lexer_step_back_to(lexer_t *lexer, token_t *token);
-char * token_kind_to_str(token_kind_t kind);
+char *
+token_kind_to_str(token_kind_t kind);
#endif /* LEXER_H */
-