diff options
author | kdx <kikoodx@paranoici.org> | 2023-06-09 00:05:25 +0200 |
---|---|---|
committer | kdx <kikoodx@paranoici.org> | 2023-06-09 00:05:25 +0200 |
commit | 77d04aa15c9d77e00ec4597375433d93b4cdd9c0 (patch) | |
tree | 7d886e34182b0fa4668718d4285b8db1390c5e09 | |
parent | d8335995903014d77ab8ce5833c7ee178616eee7 (diff) | |
download | golem-77d04aa15c9d77e00ec4597375433d93b4cdd9c0.tar.gz |
worst calculator ever
-rw-r--r-- | Tupfile | 10 | ||||
-rw-r--r-- | Tupfile.ini | 0 | ||||
-rw-r--r-- | compile_flags.txt | 3 | ||||
-rw-r--r-- | src/main.c | 52 |
4 files changed, 65 insertions, 0 deletions
@@ -0,0 +1,10 @@ +CC = gcc +LD = $(CC) +CFLAGS = -std=c99 -Wall -Wextra +LIBS = +NAME = golem + +: foreach src/*.c |> $(CC) $(CFLAGS) -c -o %o %f |> build/%B.o +: build/*.o |> $(LD) -o %o %f $(LIBS) |> build/$(NAME) + +.gitignore diff --git a/Tupfile.ini b/Tupfile.ini new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Tupfile.ini diff --git a/compile_flags.txt b/compile_flags.txt new file mode 100644 index 0000000..c376403 --- /dev/null +++ b/compile_flags.txt @@ -0,0 +1,3 @@ +-Wall +-Wextra +-std=c99 diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..1bcb71c --- /dev/null +++ b/src/main.c @@ -0,0 +1,52 @@ +#include <stdarg.h> +#include <stdio.h> +#include <stdlib.h> + +static void +error(const char *fmt, ...) { + fprintf(stderr, "error: "); + va_list va; + va_start(va, fmt); + vfprintf(stderr, fmt, va); + va_end(va); + fprintf(stderr, "\n"); + exit(1); +} + +int +main(int argc, char **argv) +{ + if (argc != 2) + error("usage: %s code", argv[0]); + + char *p = argv[1]; + + printf("main:\n"); + printf("\tLIT %04lu\n", strtoul(p, &p, 10)); + + while (*p != '\0') { + const char *op; + switch (*p) { + case '+': + op = "ADD"; + break; + case '-': + op = "SUB"; + break; + case '*': + op = "MUL"; + break; + case '/': + op = "DIV"; + break; + default: + error("unexpected character: '%c'", *p); + } + p++; + printf("\tLIT %04lu %s\n", strtoul(p, &p, 10), op); + } + + printf("\tRET\n"); + + return 0; +} |