From 90dd1b18f121b55463e785f65be4b8dfa696e600 Mon Sep 17 00:00:00 2001 From: Jakob Kaivo Date: Wed, 13 Mar 2019 22:03:41 -0400 Subject: migrate to gitlab --- yacc.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 yacc.c (limited to 'yacc.c') diff --git a/yacc.c b/yacc.c new file mode 100644 index 0000000..75f1fc1 --- /dev/null +++ b/yacc.c @@ -0,0 +1,64 @@ +#include +#include +#include + +#define C_ID_FIRSTCHAR "_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" + +int main(int argc, char *argv[]) +{ + char *fileprefix = "y"; + char *symbolprefix = "yy"; + int header = 0; + int lines = 1; + int debug = 0; + int verbose = 0; + int c; + + while ((c = getopt(argc, argv, "bdlptv")) != -1) { + switch (c) { + case 'b': + /* Change file prefix */ + fileprefix = optarg; + break; + + case 'd': + /* Write a header file */ + header = 1; + break; + + case 'l': + /* Omit #line directives */ + lines = 0; + break; + + case 'p': + /* Change symbol prefix */ + symbolprefix = optarg; + if (!strchr(C_ID_FIRSTCHAR, *symbolprefix)) { + printf("'%s' is not a valid prefix\n", optarg); + return 1; + } + break; + + case 't': + /* Include debugging code */ + debug = 1; + break; + + case 'v': + /* Output a description file */ + verbose = 1; + break; + + default: + return 1; + } + } + + if (optind != argc - 1) { + fprintf(stderr, "Must specify exactly one grammar file\n"); + return 1; + } + + return 0; +} -- cgit v1.2.1