summaryrefslogtreecommitdiff
path: root/comp/lucas-standen-NEA/code/tokenizer
diff options
context:
space:
mode:
Diffstat (limited to 'comp/lucas-standen-NEA/code/tokenizer')
-rw-r--r--comp/lucas-standen-NEA/code/tokenizer/Makefile5
-rw-r--r--comp/lucas-standen-NEA/code/tokenizer/parser.c37
-rw-r--r--comp/lucas-standen-NEA/code/tokenizer/parser.h3
-rw-r--r--comp/lucas-standen-NEA/code/tokenizer/sample.zpy5
-rw-r--r--comp/lucas-standen-NEA/code/tokenizer/tokenizer.c3
-rw-r--r--comp/lucas-standen-NEA/code/tokenizer/tokenizer.h0
-rw-r--r--comp/lucas-standen-NEA/code/tokenizer/types.c0
-rw-r--r--comp/lucas-standen-NEA/code/tokenizer/types.h0
-rw-r--r--comp/lucas-standen-NEA/code/tokenizer/util.c27
-rw-r--r--comp/lucas-standen-NEA/code/tokenizer/util.h3
10 files changed, 83 insertions, 0 deletions
diff --git a/comp/lucas-standen-NEA/code/tokenizer/Makefile b/comp/lucas-standen-NEA/code/tokenizer/Makefile
new file mode 100644
index 0000000..b5cfe56
--- /dev/null
+++ b/comp/lucas-standen-NEA/code/tokenizer/Makefile
@@ -0,0 +1,5 @@
+
+parser: parser.c util
+ cc -O3 parser.c util.o -c -o parser.o
+util: util.c
+ cc -O3 util.c -c -o util.o
diff --git a/comp/lucas-standen-NEA/code/tokenizer/parser.c b/comp/lucas-standen-NEA/code/tokenizer/parser.c
new file mode 100644
index 0000000..9ac9fde
--- /dev/null
+++ b/comp/lucas-standen-NEA/code/tokenizer/parser.c
@@ -0,0 +1,37 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "util.h"
+
+char *Parse(char *fileName); // general parser function
+
+char *ReadFile(char *fileName); // reads the file into a single var
+
+char *ReadFile(char *filename){
+ FILE *f = fopen(filename, "r");
+ if (f == NULL)
+ Die();
+
+ fseek(f, 0, SEEK_END);
+ size_t len = ftell(f);
+ rewind(f);
+
+ char *out = malloc(len+1);
+
+ char c;
+ for (int i = 0; i < len; i++){
+ c = fgetc(f);
+ if (c == '\n' || c == '\t')
+ out[i] = ' ';
+ else
+ out[i] = c;
+ }
+ out[len+1] = '\0';
+
+ fclose(f);
+ return out;
+}
+
+char *Parser(char *fileName){
+ return ReadFile(fileName);
+}
diff --git a/comp/lucas-standen-NEA/code/tokenizer/parser.h b/comp/lucas-standen-NEA/code/tokenizer/parser.h
new file mode 100644
index 0000000..e4f69a8
--- /dev/null
+++ b/comp/lucas-standen-NEA/code/tokenizer/parser.h
@@ -0,0 +1,3 @@
+char *Parse(char *fileName); // general parser function
+
+char *ReadFile(char *fileName); // reads the file into a single var
diff --git a/comp/lucas-standen-NEA/code/tokenizer/sample.zpy b/comp/lucas-standen-NEA/code/tokenizer/sample.zpy
new file mode 100644
index 0000000..f0d9700
--- /dev/null
+++ b/comp/lucas-standen-NEA/code/tokenizer/sample.zpy
@@ -0,0 +1,5 @@
+(let x:char[] "he
+llo")
+
+(let y:i32 20)
+
diff --git a/comp/lucas-standen-NEA/code/tokenizer/tokenizer.c b/comp/lucas-standen-NEA/code/tokenizer/tokenizer.c
new file mode 100644
index 0000000..a643455
--- /dev/null
+++ b/comp/lucas-standen-NEA/code/tokenizer/tokenizer.c
@@ -0,0 +1,3 @@
+#include "parser.h"
+
+
diff --git a/comp/lucas-standen-NEA/code/tokenizer/tokenizer.h b/comp/lucas-standen-NEA/code/tokenizer/tokenizer.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/comp/lucas-standen-NEA/code/tokenizer/tokenizer.h
diff --git a/comp/lucas-standen-NEA/code/tokenizer/types.c b/comp/lucas-standen-NEA/code/tokenizer/types.c
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/comp/lucas-standen-NEA/code/tokenizer/types.c
diff --git a/comp/lucas-standen-NEA/code/tokenizer/types.h b/comp/lucas-standen-NEA/code/tokenizer/types.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/comp/lucas-standen-NEA/code/tokenizer/types.h
diff --git a/comp/lucas-standen-NEA/code/tokenizer/util.c b/comp/lucas-standen-NEA/code/tokenizer/util.c
new file mode 100644
index 0000000..de5b6b2
--- /dev/null
+++ b/comp/lucas-standen-NEA/code/tokenizer/util.c
@@ -0,0 +1,27 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <error.h>
+
+void Die(); // brings down the program
+void *CheckedMalloc(long size); // malloc checked
+void *CheckedRealloc(void *out, long size); // realloc checked
+
+void Die(){
+ perror("zpy parser");
+ exit(errno);
+}
+
+void *CheckedMalloc(long size){
+ void *out = malloc(size);
+ if (out == NULL)
+ Die();
+ return out;
+}
+
+void *CheckedRealloc(void *orig, long size){
+ void *out = realloc(orig, size);
+ if (out == NULL)
+ Die();
+ return out;
+}
diff --git a/comp/lucas-standen-NEA/code/tokenizer/util.h b/comp/lucas-standen-NEA/code/tokenizer/util.h
new file mode 100644
index 0000000..cbcbdfa
--- /dev/null
+++ b/comp/lucas-standen-NEA/code/tokenizer/util.h
@@ -0,0 +1,3 @@
+void Die(); // brings down the program
+void *CheckedMalloc(long size); // malloc checked
+void *CheckedRealloc(void *out, long size); // realloc checked