summaryrefslogtreecommitdiff
path: root/comp/lucas-standen-NEA/code2
diff options
context:
space:
mode:
authorthing1 <thing1@seacrossedlovers.xyz>2024-09-16 13:11:10 +0100
committerthing1 <thing1@seacrossedlovers.xyz>2024-09-16 13:11:10 +0100
commit85b1a8b13b6715e0e13e08fa38c14eb18fdc32d5 (patch)
tree0f184544692fe16c078852b4123917065b127792 /comp/lucas-standen-NEA/code2
parent9eafce19945f858649eaac8eabfee9ec1857c1cd (diff)
added command line options, next step is to port the string libary over
Diffstat (limited to 'comp/lucas-standen-NEA/code2')
-rw-r--r--comp/lucas-standen-NEA/code2/Makefile2
-rw-r--r--comp/lucas-standen-NEA/code2/sample.zpy0
-rwxr-xr-xcomp/lucas-standen-NEA/code2/zpybin34448 -> 0 bytes
-rw-r--r--comp/lucas-standen-NEA/code2/zpy.c76
4 files changed, 71 insertions, 7 deletions
diff --git a/comp/lucas-standen-NEA/code2/Makefile b/comp/lucas-standen-NEA/code2/Makefile
index 1ed8b29..ffbcffb 100644
--- a/comp/lucas-standen-NEA/code2/Makefile
+++ b/comp/lucas-standen-NEA/code2/Makefile
@@ -18,4 +18,4 @@ _util: util.c
${CC} util.c -c -o util.o ${CFLAGS}
clean:
- rm -rf zpy *.o *.core sample
+ rm -rf zpy *.o *.core sample out
diff --git a/comp/lucas-standen-NEA/code2/sample.zpy b/comp/lucas-standen-NEA/code2/sample.zpy
deleted file mode 100644
index e69de29..0000000
--- a/comp/lucas-standen-NEA/code2/sample.zpy
+++ /dev/null
diff --git a/comp/lucas-standen-NEA/code2/zpy b/comp/lucas-standen-NEA/code2/zpy
deleted file mode 100755
index 9b43b1d..0000000
--- a/comp/lucas-standen-NEA/code2/zpy
+++ /dev/null
Binary files differ
diff --git a/comp/lucas-standen-NEA/code2/zpy.c b/comp/lucas-standen-NEA/code2/zpy.c
index f09576d..ddb7b90 100644
--- a/comp/lucas-standen-NEA/code2/zpy.c
+++ b/comp/lucas-standen-NEA/code2/zpy.c
@@ -1,19 +1,71 @@
#include <stdio.h>
#include <stdlib.h>
+#include <stdbool.h>
#include "util.h"
#include "parser.h"
#include "comp.h"
+#include "appendsnprintf.h"
-#include "debug.h"
+
+char infilename[128];
+char outfilename[128];
+/*
+char libs[64][128];
+int libcount = 0;
+*/
+bool omitc = false;
+char compilerflags[64][128];
+int compilerflagscount = 0;
+
+void processargs(int argc, char **argv){
+ for (int i = 1; i < argc; i++){
+ if (argv[i][0] == '-'){
+ switch (argv[i][1]){
+ case 'o':
+ i++;
+ strcpy(outfilename, argv[i]);
+ break;
+ /*
+ case 'i':
+ i++;
+ strcpy(libs[libcount], argv[i]);
+ libcount++;
+ break;
+ */
+ case 'c':
+ omitc = true;
+ break;
+ case 'f':
+ i++;
+ strcpy(compilerflags[compilerflagscount], argv[i]);
+ compilerflagscount++;
+ break;
+ default:
+ die("unknown argument!");
+ break;
+ }
+ }else strcpy(infilename, argv[i]);
+ }
+}
int main(int argc, char **argv){
- if (argc < 2)
- die("no input files!");
-
- FILE *f = fopen(argv[1], "r");
+ processargs(argc, argv);
+
+
+ FILE *f = fopen(infilename, "r");
if (f == NULL)
die("no such file or directory");
+
+ FILE *fout;
+ if (omitc == false) {
+ fout = fopen("./tmp.zpy.c", "w");
+ }else {
+ fout = fopen(outfilename, "w");
+ }
+
+ if (fout == NULL)
+ die("no such file or directory");
strings *stringTokens = parse(f);
@@ -26,7 +78,19 @@ int main(int argc, char **argv){
stringTokens->strs[i][strlen(stringTokens->strs[i]) - 1] = '\0';
astNode *line = tokenize(stringTokens->strs[i]);
- Compile(line, stdout);
+ Compile(line, fout);
+ }
+ fclose(fout);
+ fclose(f);
+
+ if (omitc == false){
+ char *cmd = malloc(512);
+ snprintf(cmd, 512, "cc ./tmp.zpy.c -o %s ", outfilename);
+ for (int i = 0; i < compilerflagscount; i++){
+ cmd = appendsnprintf(cmd, 512, "%s ", compilerflags[i]);
+ }
+ system(cmd);
+ remove("./tmp.zpy.c");
}