summaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c35
1 files changed, 5 insertions, 30 deletions
diff --git a/src/main.c b/src/main.c
index e7a3225..c42239d 100644
--- a/src/main.c
+++ b/src/main.c
@@ -27,53 +27,28 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
-#include <stdarg.h>
-#include <stdio.h>
#include <stdlib.h>
#include "lexer.h"
#include "log.h"
+#include "parser.h"
-static const char *src = "void main";
-
-static void
-tok_error(struct token *tok, const char *fmt, ...)
-{
- va_list args;
-
- fprintf(stderr, "\033[1;97m%d:%d: \033[1;91merror: \033[0m", tok->line, tok->col);
- va_start(args, fmt);
- vfprintf(stderr, fmt, args);
- va_end(args);
-}
+static const char *src = "int test\nint main";
int
main(int argc, char **argv)
{
struct lexer lexer;
- struct token tok;
(void)argc;
(void)argv;
if (!lexer_init(&lexer, src)) {
+ log_error("Failed to initialize lexer\n");
return EXIT_FAILURE;
}
- while (lexer_next(&lexer, &tok)) {
- if (tok.kind == TK_EOF) {
- return EXIT_SUCCESS;
- }
-
- if (tok.kind == TK_UNKNOWN) {
- tok_error(&tok, "unrecognized token\n");
- return EXIT_FAILURE;
- }
-
- if (tok.kind == TK_VOID) {
- log_debug("got void\n");
- } else if (tok.kind == TK_IDENTIFIER) {
- log_debug("got identifier \"%.*s\"\n", tok.len, tok.pos);
- }
+ if (!parser_parse(&lexer)) {
+ return EXIT_FAILURE;
}
return EXIT_SUCCESS;