From 21f1abef1b8f144fb684d48bbb2078011b4141d7 Mon Sep 17 00:00:00 2001 From: kdx Date: Fri, 20 Jan 2023 00:32:33 +0100 Subject: dumbify --- .gitignore | 1 + Token.c | 2 ++ Token.h | 2 ++ lexer.c | 2 ++ test | 23 +++++++++++++---------- 5 files changed, 20 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index b2a8745..91d59d5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ restruct *.o +tags diff --git a/Token.c b/Token.c index 3e42631..84eae84 100644 --- a/Token.c +++ b/Token.c @@ -34,6 +34,8 @@ void token_print(const Token *tok) case TOK_MODULO: printf("TOK_MODULO\n"); break; case TOK_STAR: printf("TOK_STAR\n"); break; case TOK_INCREMENT: printf("TOK_INCREMENT\n"); break; + case TOK_COMP_EQ: printf("TOK_COMP_EQ\n"); break; + case TOK_COMP_NEQ: printf("TOK_COMP_NEQ\n"); break; default: printf("token_print TODO: type %d\n", tok->type); break; } } diff --git a/Token.h b/Token.h index e896c07..1478199 100644 --- a/Token.h +++ b/Token.h @@ -22,6 +22,8 @@ enum { TOK_STAR, /* double char toks */ TOK_INCREMENT, + TOK_COMP_EQ, + TOK_COMP_NEQ, }; union TokenValue { diff --git a/lexer.c b/lexer.c index 1f76ab8..3ad2109 100644 --- a/lexer.c +++ b/lexer.c @@ -41,6 +41,8 @@ static unsigned int two_wide_tok(const char *s) { switch (PAIR(s[0], s[1])) { case PAIR('+', '+'): return TOK_INCREMENT; + case PAIR('=', '='): return TOK_COMP_EQ; + case PAIR('!', '='): return TOK_COMP_NEQ; default: return TOK_NONE; } } diff --git a/test b/test index 593194e..2e7d989 100644 --- a/test +++ b/test @@ -1,25 +1,28 @@ -fn main(argc: int, argv: **argv) int; +fn main(argc, argv) -fn main(argc: int, argv: **argv) int +// typeless language +// (i know, this stupid but me bad) +fn main(argc, argv) { - if (argc != 2) { - fprintf(stderr, "usage: %s \n", argv[0]); + const usage_str = "usage: %s \n"; + if argc != 2 { + fprintf(stderr, usage_str, argv[0]); return 1; } - const fp: *FILE = fopen(argv[1], "rb"); - if (fp == null) { + const fp = fopen(argv[1], "rb"); + if fp == null { perror("main"); return 1; } - const data: *char = drain(fp); + const data = drain(fp); fclose(fp); - if (data == null) { + if data == 0 { fprintf(stderr, "failed to drain '%s'\n", argv[1]); return 1; } - const toks: *Token = lexer(data); + const toks = lexer(data); free(data); - if (toks == null) { + if toks == 0 { fprintf(stderr, "lexer failed\n"); return 1; } -- cgit v1.2.3