diff options
author | kdx <kdx@42l.fr> | 2023-01-20 00:32:33 +0100 |
---|---|---|
committer | kdx <kdx@42l.fr> | 2023-01-20 00:32:33 +0100 |
commit | 21f1abef1b8f144fb684d48bbb2078011b4141d7 (patch) | |
tree | f61faf49f88dae20e2006c0b828e5632d53d4abc | |
parent | 2c22cfc40c3521d31ebdab8269cd512496fd222a (diff) | |
download | golem-21f1abef1b8f144fb684d48bbb2078011b4141d7.tar.gz |
dumbify
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | Token.c | 2 | ||||
-rw-r--r-- | Token.h | 2 | ||||
-rw-r--r-- | lexer.c | 2 | ||||
-rw-r--r-- | test | 23 |
5 files changed, 20 insertions, 10 deletions
@@ -1,2 +1,3 @@ restruct *.o +tags @@ -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; } } @@ -22,6 +22,8 @@ enum { TOK_STAR, /* double char toks */ TOK_INCREMENT, + TOK_COMP_EQ, + TOK_COMP_NEQ, }; union TokenValue { @@ -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; } } @@ -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 <file>\n", argv[0]); + const usage_str = "usage: %s <file>\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; } |