summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkdx <kdx@42l.fr>2023-01-20 00:32:33 +0100
committerkdx <kdx@42l.fr>2023-01-20 00:32:33 +0100
commit21f1abef1b8f144fb684d48bbb2078011b4141d7 (patch)
treef61faf49f88dae20e2006c0b828e5632d53d4abc
parent2c22cfc40c3521d31ebdab8269cd512496fd222a (diff)
downloadgolem-21f1abef1b8f144fb684d48bbb2078011b4141d7.tar.gz
dumbify
-rw-r--r--.gitignore1
-rw-r--r--Token.c2
-rw-r--r--Token.h2
-rw-r--r--lexer.c2
-rw-r--r--test23
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 <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;
}