From 8afa976e073c7bc29c878230eead6dddfdcc08a1 Mon Sep 17 00:00:00 2001 From: Nakidai Date: Sun, 5 Apr 2026 19:51:14 +0300 Subject: Add code --- main.c | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 main.c (limited to 'main.c') diff --git a/main.c b/main.c new file mode 100644 index 0000000..56a094c --- /dev/null +++ b/main.c @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2026 Nakidai Perumenei + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "thac.h" + +#include +#include + + +FILE *curfile; +char *curname, *progname; + +void +usage(char *name) +{ + fprintf(stderr, "usage: %s \n", name); + exit(1); +} + +int +main(int argc, char **argv) +{ + struct scope scope = {&basescope, NULL, 0}; + struct node *stmt; + struct val val; + + progname = *argv; + + if (!argv[1]) + usage(*argv); + + curname = argv[1]; + curfile = fopen(curname, "r"); + curline = 1; + + if (!curfile) + dieno(1, "fopen(`%s')", argv[1]); + + while ((stmt = getstmt())) + { + val = eval(stmt, &scope); + if (val.type == VBREAK || val.type == VCONT) + complain(1, "cannot %s out of nothing", valname(val.type)); + } + showverts(); + + return 0; +} -- cgit 1.4.1