summaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rw-r--r--main.c44
1 files changed, 31 insertions, 13 deletions
diff --git a/main.c b/main.c
index 6fc75e9..c86efdd 100644
--- a/main.c
+++ b/main.c
@@ -1,34 +1,30 @@
#include "lexer.h"
+#include "parser.h"
#include <stdlib.h>
#include <stdio.h>
-int main(int argc, char** argv) {
- if (argc < 2) {
- fprintf(stderr, "ccc: no input files\n");
- return 1;
- }
-
+void test_lexer(int argc, char** argv) {
struct token token;
for (int i = 1; i < argc; i++) {
lexer_load(argv[i]);
while (lexer_pop(&token)) {
printf("[%s]: ", argv[i]);
switch (token.type) {
- case IDENTIFIER:
- printf("got identifier: %s\n", token.data.identifier);
- free(token.data.identifier);
+ case TK_IDENT:
+ printf("got identifier: %s\n", token.data.ident);
+ free(token.data.ident);
break;
- case STR_LIT:
+ case TK_STR_LIT:
printf("got string: %s\n", token.data.str_lit);
free(token.data.str_lit);
break;
- case INT_LIT:
+ case TK_INT_LIT:
printf("got int: %lld\n", token.data.int_lit);
break;
- case FLOAT_LIT:
+ case TK_FLOAT_LIT:
printf("got float: %lf\n", token.data.float_lit);
break;
- case CHAR_LIT:
+ case TK_CHAR_LIT:
printf("got char: %c\n", token.data.char_lit);
break;
default:
@@ -38,3 +34,25 @@ int main(int argc, char** argv) {
lexer_close();
}
}
+
+void gdb_break_here() {}
+
+void test_parser(int argc, char** argv) {
+ struct root_node* root;
+ struct root_node** p_cur = &root;
+ for (int i = 1; i < argc; i++) {
+ *p_cur = parse(argv[i]);
+ p_cur = &((*p_cur)->next);
+ }
+ gdb_break_here();
+ ast_destroy(root);
+}
+
+int main(int argc, char** argv) {
+ if (argc < 2) {
+ fprintf(stderr, "ccc: no input files\n");
+ return 1;
+ }
+
+ test_parser(argc, argv);
+}