summaryrefslogtreecommitdiff
path: root/comp/lucas-standen-NEA
diff options
context:
space:
mode:
Diffstat (limited to 'comp/lucas-standen-NEA')
-rw-r--r--comp/lucas-standen-NEA/code2/Makefile1
-rw-r--r--comp/lucas-standen-NEA/code2/autodoc/Makefile11
-rwxr-xr-xcomp/lucas-standen-NEA/code2/autodoc/autodocbin19584 -> 0 bytes
-rw-r--r--comp/lucas-standen-NEA/code2/autodoc/autodoc.c73
-rw-r--r--comp/lucas-standen-NEA/code2/comp.c22
-rw-r--r--comp/lucas-standen-NEA/code2/examples/Makefile5
-rwxr-xr-xcomp/lucas-standen-NEA/code2/examples/fib_examplebin0 -> 25496 bytes
-rwxr-xr-xcomp/lucas-standen-NEA/code2/examples/helloworld/mainbin0 -> 24720 bytes
-rw-r--r--comp/lucas-standen-NEA/code2/examples/helloworld/main.zpy3
-rw-r--r--comp/lucas-standen-NEA/code2/examples/helloworld/zpybuild.sh2
-rw-r--r--comp/lucas-standen-NEA/code2/examples/helloworldadv/helloworld.c4
-rw-r--r--comp/lucas-standen-NEA/code2/examples/helloworldadv/helloworld.zpy3
-rwxr-xr-xcomp/lucas-standen-NEA/code2/examples/helloworldadv/mainbin0 -> 19440 bytes
-rw-r--r--comp/lucas-standen-NEA/code2/examples/helloworldadv/main.c4
-rw-r--r--comp/lucas-standen-NEA/code2/examples/helloworldadv/main.zpy3
-rw-r--r--comp/lucas-standen-NEA/code2/examples/helloworldadv/zpybuild.sh4
-rw-r--r--comp/lucas-standen-NEA/code2/examples/raylib_example/dvd.png (renamed from comp/lucas-standen-NEA/code2/examples/dvd.png)bin1247 -> 1247 bytes
-rwxr-xr-xcomp/lucas-standen-NEA/code2/examples/raylib_example/mainbin0 -> 1077360 bytes
-rw-r--r--comp/lucas-standen-NEA/code2/examples/raylib_example/main.zpy (renamed from comp/lucas-standen-NEA/code2/examples/raylib_example.zpy)1
-rw-r--r--comp/lucas-standen-NEA/code2/examples/raylib_example/zpybuild.sh4
-rwxr-xr-xcomp/lucas-standen-NEA/code2/examples/spaceinvadersbin0 -> 1086520 bytes
-rw-r--r--comp/lucas-standen-NEA/code2/examples/spaceinvaders.zpy2
-rwxr-xr-xcomp/lucas-standen-NEA/code2/examples/str_examplebin0 -> 25952 bytes
-rw-r--r--comp/lucas-standen-NEA/code2/examples/syntaxerr.zpy4
-rw-r--r--comp/lucas-standen-NEA/code2/examples/tmp.zpy.c2
-rw-r--r--comp/lucas-standen-NEA/code2/parser.c2
-rwxr-xr-xcomp/lucas-standen-NEA/code2/zpybin0 -> 42592 bytes
-rw-r--r--comp/lucas-standen-NEA/code2/zpypkg/Makefile4
-rwxr-xr-xcomp/lucas-standen-NEA/code2/zpypkg/zpypkg79
-rw-r--r--comp/lucas-standen-NEA/writeup2/Note1
-rw-r--r--comp/lucas-standen-NEA/writeup2/coverpage.ms1208
-rw-r--r--comp/lucas-standen-NEA/writeup2/writeup.aux40
-rw-r--r--comp/lucas-standen-NEA/writeup2/writeup.fdb_latexmk199
-rw-r--r--comp/lucas-standen-NEA/writeup2/writeup.fls365
-rw-r--r--comp/lucas-standen-NEA/writeup2/writeup.log809
-rw-r--r--comp/lucas-standen-NEA/writeup2/writeup.out27
-rw-r--r--comp/lucas-standen-NEA/writeup2/writeup.synctex.gzbin0 -> 206686 bytes
-rw-r--r--comp/lucas-standen-NEA/writeup2/writeup.tex523
-rw-r--r--comp/lucas-standen-NEA/writeup2/writeup.toc28
39 files changed, 3335 insertions, 98 deletions
diff --git a/comp/lucas-standen-NEA/code2/Makefile b/comp/lucas-standen-NEA/code2/Makefile
index 126bed6..4dc4224 100644
--- a/comp/lucas-standen-NEA/code2/Makefile
+++ b/comp/lucas-standen-NEA/code2/Makefile
@@ -16,6 +16,7 @@ install: zpy
cp ./zpy /usr/local/bin/zpy
cd stdlib && make install
+ cd zpypkg && make install
example: zpy
cd examples && make
diff --git a/comp/lucas-standen-NEA/code2/autodoc/Makefile b/comp/lucas-standen-NEA/code2/autodoc/Makefile
deleted file mode 100644
index 76ef5c1..0000000
--- a/comp/lucas-standen-NEA/code2/autodoc/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-autodoc: autodoc.c
- cc autodoc.c -o autodoc -ggdb
-
-install: autodoc
- cp autodoc /usr/local/bin/autodoc
-
-uninstall:
- rm /usr/local/bin/autodoc
-
-clean:
- rm autodoc
diff --git a/comp/lucas-standen-NEA/code2/autodoc/autodoc b/comp/lucas-standen-NEA/code2/autodoc/autodoc
deleted file mode 100755
index 0ef6fad..0000000
--- a/comp/lucas-standen-NEA/code2/autodoc/autodoc
+++ /dev/null
Binary files differ
diff --git a/comp/lucas-standen-NEA/code2/autodoc/autodoc.c b/comp/lucas-standen-NEA/code2/autodoc/autodoc.c
deleted file mode 100644
index d8e7583..0000000
--- a/comp/lucas-standen-NEA/code2/autodoc/autodoc.c
+++ /dev/null
@@ -1,73 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdbool.h>
-
-typedef struct docpair {
- char *doc;
- char *func;
-} docpair;
-
-docpair funcs[2048];
-int count = 0;
-
-//# returns a bool as to weather s2 is contained fully in s1
-bool contains(char *s1, char *s2){
- int j = 0;
- if (strlen(s1) < strlen(s2)) return false;
- for (int i = 0; i < strlen(s1); i++){
- if (s1[i] == s2[j]){
- if (j+1 == strlen(s2)) return true;
- j++;
- }
- }
- return false;
-}
-
-int main(int argc, char **argv){
- FILE *in;
- if (argv[1][0] == '-') in = stdin;
- else in = fopen(argv[1], "r");
-
- char *search = argv[2];
-
- char *line = malloc(512);
- char *tmp = malloc(512);
-
- bool nextIsFunc = false;
-
- while (fgets(line, 512, in) != NULL){
- strcpy(tmp, line);
- tmp[4] = '\0';
- if (strcmp(tmp, "//# ") == 0){
- funcs[count].doc = malloc(strlen(line)+1);
- strcpy(funcs[count].doc, line);
- nextIsFunc = true;
- }
- else if (nextIsFunc == true){
- funcs[count].func = malloc(strlen(line)+1);
- strcpy(funcs[count].func, line);
- nextIsFunc = false;
- count++;
- }
- }
-
- if (search != NULL){
- for (int i = 0; i < 2048; i++){
- if (funcs[i].doc != NULL)
- if (contains(funcs[i].func, search))
- printf("%s \e[1m%s\e[0m\n", funcs[i].doc, funcs[i].func);
- }
- }
- else {
- for (int i = 0; i < 2048; i++){
- if (funcs[i].doc != NULL)
- printf("%s \e[1m%s\e[0m\n", funcs[i].doc, funcs[i].func);
- }
- }
-
- free(line);
- free(tmp);
-
-
-}
diff --git a/comp/lucas-standen-NEA/code2/comp.c b/comp/lucas-standen-NEA/code2/comp.c
index d49148e..a2440e2 100644
--- a/comp/lucas-standen-NEA/code2/comp.c
+++ b/comp/lucas-standen-NEA/code2/comp.c
@@ -33,6 +33,14 @@ void errorhandle(int type){
exit(1);
}
+//# this function will check if the value given is null, if it is, it will cause a sig segv and set the error msg
+void checkNULL(void *value, char *msg){
+ if (value == NULL) {
+ errmsg = msg;
+ kill(pid, SIGSEGV);
+ }
+}
+
char *names[] = {
"defun", // takes a func name, func return type, and args // 0
"endfun", // takes no args // 1
@@ -91,6 +99,8 @@ char *vartypeToC(char *str, char *out){
}
name[i] = '\0';
i++;
+
+ if (i > strlen(str)) checkNULL(NULL, "expected var type, got nothing");
for (; i < strlen(str); i++){
if (str[i] == ':'){
@@ -114,6 +124,7 @@ char *getVarName(char *exp){
char *out = malloc(strlen(exp));
memcpy(out, exp, strlen(exp));
char *pos = strchr(out, ':');
+ if (pos == NULL) checkNULL(NULL, "expected var type, got nothing");
pos[0] = '\0';
return out;
}
@@ -122,7 +133,8 @@ char *getVarName(char *exp){
char *getVarType(char *exp){
char *out = malloc(strlen(exp));
char *pos = strchr(exp, ':')+1;
- memcpy(out, pos, strlen(pos) + 1);
+ if (pos == NULL) checkNULL(NULL, "expected var type, got nothing");
+ memcpy(out, pos, strlen(pos) + 1);
return out;
}
//# this will convert mathmatical expressions, to the c style of maths
@@ -145,14 +157,6 @@ astNode *processChildren(astNode *node){
return node;
}
-//# this function will check if the value given is null, if it is, it will cause a sig segv and set the error msg
-void checkNULL(void *value, char *msg){
- if (value == NULL) {
- errmsg = msg;
- kill(pid, SIGSEGV);
- }
-}
-
//# this function will do the bulk of converting from zpy into c code
char *compile(astNode *node){
char *out = calloc(0, MAXOUTLEN);
diff --git a/comp/lucas-standen-NEA/code2/examples/Makefile b/comp/lucas-standen-NEA/code2/examples/Makefile
index 18a9e64..d3ee327 100644
--- a/comp/lucas-standen-NEA/code2/examples/Makefile
+++ b/comp/lucas-standen-NEA/code2/examples/Makefile
@@ -1,9 +1,8 @@
all:
- zpy raylib_example.zpy -o raylib_example -f -lraylib -f -lm -i raylib.h
zpy spaceinvaders.zpy -o spaceinvaders -f -lraylib -f -lm -i raylib.h
zpy fib_example.zpy -o fib_example -f -ggdb
zpy str_example.zpy -o str_example -f -ggdb
- zpy syntaxerr.zpy -o syntaxerr
+ zpy syntaxerr.zpy -o syntaxerr
clean:
- rm -rf fib_example raylib_example str_example spaceinvaders tmp.zpy.c
+ rm -rf fib_example raylib_example str_example spaceinvaders syntaxerr tmp.zpy.c
diff --git a/comp/lucas-standen-NEA/code2/examples/fib_example b/comp/lucas-standen-NEA/code2/examples/fib_example
new file mode 100755
index 0000000..bdd94ec
--- /dev/null
+++ b/comp/lucas-standen-NEA/code2/examples/fib_example
Binary files differ
diff --git a/comp/lucas-standen-NEA/code2/examples/helloworld/main b/comp/lucas-standen-NEA/code2/examples/helloworld/main
new file mode 100755
index 0000000..653d84c
--- /dev/null
+++ b/comp/lucas-standen-NEA/code2/examples/helloworld/main
Binary files differ
diff --git a/comp/lucas-standen-NEA/code2/examples/helloworld/main.zpy b/comp/lucas-standen-NEA/code2/examples/helloworld/main.zpy
new file mode 100644
index 0000000..ef0a288
--- /dev/null
+++ b/comp/lucas-standen-NEA/code2/examples/helloworld/main.zpy
@@ -0,0 +1,3 @@
+(defun main int)
+ (printstr "hello world\n")
+(endfun)
diff --git a/comp/lucas-standen-NEA/code2/examples/helloworld/zpybuild.sh b/comp/lucas-standen-NEA/code2/examples/helloworld/zpybuild.sh
new file mode 100644
index 0000000..7f675c3
--- /dev/null
+++ b/comp/lucas-standen-NEA/code2/examples/helloworld/zpybuild.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+zpy ./main.zpy -o main
diff --git a/comp/lucas-standen-NEA/code2/examples/helloworldadv/helloworld.c b/comp/lucas-standen-NEA/code2/examples/helloworldadv/helloworld.c
new file mode 100644
index 0000000..f1e746f
--- /dev/null
+++ b/comp/lucas-standen-NEA/code2/examples/helloworldadv/helloworld.c
@@ -0,0 +1,4 @@
+#include <zpylib.h>
+void helloworld(){
+printstr("hello world\n");
+}
diff --git a/comp/lucas-standen-NEA/code2/examples/helloworldadv/helloworld.zpy b/comp/lucas-standen-NEA/code2/examples/helloworldadv/helloworld.zpy
new file mode 100644
index 0000000..9e3553b
--- /dev/null
+++ b/comp/lucas-standen-NEA/code2/examples/helloworldadv/helloworld.zpy
@@ -0,0 +1,3 @@
+(defun helloworld void)
+ (printstr "hello world\n")
+(endfun)
diff --git a/comp/lucas-standen-NEA/code2/examples/helloworldadv/main b/comp/lucas-standen-NEA/code2/examples/helloworldadv/main
new file mode 100755
index 0000000..593fe40
--- /dev/null
+++ b/comp/lucas-standen-NEA/code2/examples/helloworldadv/main
Binary files differ
diff --git a/comp/lucas-standen-NEA/code2/examples/helloworldadv/main.c b/comp/lucas-standen-NEA/code2/examples/helloworldadv/main.c
new file mode 100644
index 0000000..a2b6927
--- /dev/null
+++ b/comp/lucas-standen-NEA/code2/examples/helloworldadv/main.c
@@ -0,0 +1,4 @@
+#include <zpylib.h>
+int main(){
+helloworld();
+}
diff --git a/comp/lucas-standen-NEA/code2/examples/helloworldadv/main.zpy b/comp/lucas-standen-NEA/code2/examples/helloworldadv/main.zpy
new file mode 100644
index 0000000..05b6155
--- /dev/null
+++ b/comp/lucas-standen-NEA/code2/examples/helloworldadv/main.zpy
@@ -0,0 +1,3 @@
+(defun main int)
+ (helloworld)
+(endfun)
diff --git a/comp/lucas-standen-NEA/code2/examples/helloworldadv/zpybuild.sh b/comp/lucas-standen-NEA/code2/examples/helloworldadv/zpybuild.sh
new file mode 100644
index 0000000..26424d7
--- /dev/null
+++ b/comp/lucas-standen-NEA/code2/examples/helloworldadv/zpybuild.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+zpy ./main.zpy -c -o main.c
+zpy ./helloworld.zpy -c -o helloworld.c
+cc main.c helloworld.c /usr/local/share/zpylib/zpylib.o -o main -I/usr/local/share/zpylib/include -Wno-implicit-function-declaration
diff --git a/comp/lucas-standen-NEA/code2/examples/dvd.png b/comp/lucas-standen-NEA/code2/examples/raylib_example/dvd.png
index 8e219f7..8e219f7 100644
--- a/comp/lucas-standen-NEA/code2/examples/dvd.png
+++ b/comp/lucas-standen-NEA/code2/examples/raylib_example/dvd.png
Binary files differ
diff --git a/comp/lucas-standen-NEA/code2/examples/raylib_example/main b/comp/lucas-standen-NEA/code2/examples/raylib_example/main
new file mode 100755
index 0000000..b124ebf
--- /dev/null
+++ b/comp/lucas-standen-NEA/code2/examples/raylib_example/main
Binary files differ
diff --git a/comp/lucas-standen-NEA/code2/examples/raylib_example.zpy b/comp/lucas-standen-NEA/code2/examples/raylib_example/main.zpy
index 7c6e599..cd6a382 100644
--- a/comp/lucas-standen-NEA/code2/examples/raylib_example.zpy
+++ b/comp/lucas-standen-NEA/code2/examples/raylib_example/main.zpy
@@ -1,3 +1,4 @@
+//# this function is my main loop
(defun main int)
(InitWindow 800 800 "test test")
(SetTargetFPS 60)
diff --git a/comp/lucas-standen-NEA/code2/examples/raylib_example/zpybuild.sh b/comp/lucas-standen-NEA/code2/examples/raylib_example/zpybuild.sh
new file mode 100644
index 0000000..3916f3b
--- /dev/null
+++ b/comp/lucas-standen-NEA/code2/examples/raylib_example/zpybuild.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+zpy ./main.zpy -c -o main.c -i raylib.h
+cc main.c /usr/local/share/zpylib/zpylib.o -o main -I/usr/local/share/zpylib/include -Wno-implicit-function-declaration -lraylib -lm
+rm -rf main.c
diff --git a/comp/lucas-standen-NEA/code2/examples/spaceinvaders b/comp/lucas-standen-NEA/code2/examples/spaceinvaders
new file mode 100755
index 0000000..ec88002
--- /dev/null
+++ b/comp/lucas-standen-NEA/code2/examples/spaceinvaders
Binary files differ
diff --git a/comp/lucas-standen-NEA/code2/examples/spaceinvaders.zpy b/comp/lucas-standen-NEA/code2/examples/spaceinvaders.zpy
index 698999a..5e51ed3 100644
--- a/comp/lucas-standen-NEA/code2/examples/spaceinvaders.zpy
+++ b/comp/lucas-standen-NEA/code2/examples/spaceinvaders.zpy
@@ -8,6 +8,7 @@
(def exists:bool)
(endstruct)
+//# this checks if 2 entitys are touching
(defun touching bool a:entity* b:entity*)
(def r1:Rectangle)
(def r2:Rectangle)
@@ -24,6 +25,7 @@
(return (CheckCollisionRecs r1 r2))
(endfun)
+//# the main loop of the program
(defun main int)
(InitWindow 800 800 "test test")
(SetTargetFPS 60)
diff --git a/comp/lucas-standen-NEA/code2/examples/str_example b/comp/lucas-standen-NEA/code2/examples/str_example
new file mode 100755
index 0000000..c543ab7
--- /dev/null
+++ b/comp/lucas-standen-NEA/code2/examples/str_example
Binary files differ
diff --git a/comp/lucas-standen-NEA/code2/examples/syntaxerr.zpy b/comp/lucas-standen-NEA/code2/examples/syntaxerr.zpy
index c74d53b..87494ed 100644
--- a/comp/lucas-standen-NEA/code2/examples/syntaxerr.zpy
+++ b/comp/lucas-standen-NEA/code2/examples/syntaxerr.zpy
@@ -1,3 +1,5 @@
(defun main int)
- (return)
+ (let x:int)
+ (set x 10)
+ (return 10)
(endfun)
diff --git a/comp/lucas-standen-NEA/code2/examples/tmp.zpy.c b/comp/lucas-standen-NEA/code2/examples/tmp.zpy.c
new file mode 100644
index 0000000..2305f24
--- /dev/null
+++ b/comp/lucas-standen-NEA/code2/examples/tmp.zpy.c
@@ -0,0 +1,2 @@
+#include <zpylib.h>
+int main(){
diff --git a/comp/lucas-standen-NEA/code2/parser.c b/comp/lucas-standen-NEA/code2/parser.c
index 62f32fa..a84291b 100644
--- a/comp/lucas-standen-NEA/code2/parser.c
+++ b/comp/lucas-standen-NEA/code2/parser.c
@@ -27,7 +27,7 @@ strings *parse(FILE *f){
char *line = alloca(256);
int count = 0;
while (fgets(line, 256, f) != NULL){
- if (line[0] != '\n'){
+ if (line[0] != '\n' && line[0] != '/'){
while (line[0] == '\t') line++;
line[strlen(line)-1] = '\0';
strs->strs[count] = malloc(256);
diff --git a/comp/lucas-standen-NEA/code2/zpy b/comp/lucas-standen-NEA/code2/zpy
new file mode 100755
index 0000000..0c23ae3
--- /dev/null
+++ b/comp/lucas-standen-NEA/code2/zpy
Binary files differ
diff --git a/comp/lucas-standen-NEA/code2/zpypkg/Makefile b/comp/lucas-standen-NEA/code2/zpypkg/Makefile
new file mode 100644
index 0000000..dc86e53
--- /dev/null
+++ b/comp/lucas-standen-NEA/code2/zpypkg/Makefile
@@ -0,0 +1,4 @@
+install: zpypkg
+ cp zpypkg /usr/local/bin/zpypkg
+uninstall:
+ rm /usr/local/bin/zpypkg
diff --git a/comp/lucas-standen-NEA/code2/zpypkg/zpypkg b/comp/lucas-standen-NEA/code2/zpypkg/zpypkg
new file mode 100755
index 0000000..95e59c8
--- /dev/null
+++ b/comp/lucas-standen-NEA/code2/zpypkg/zpypkg
@@ -0,0 +1,79 @@
+#!/bin/bash
+
+function init () {
+ if [ ! -e "main.zpy" ]; then
+ touch main.zpy
+
+ echo -e "(defun main int)" >> main.zpy
+ printf "\t(printstr \"hello world\\\n\")\n" >> main.zpy
+ echo -e "(endfun)" >> main.zpy
+
+ echo "#!/bin/sh" > zpybuild.sh
+ echo "zpy ./main.zpy -o main" >> zpybuild.sh
+ else
+ echo "zpypkg already in use!"
+ fi
+}
+
+function advinit () {
+ if [ ! -e "main.zpy" ]; then
+ touch main.zpy
+
+ echo -e "(defun main int)" >> main.zpy
+ printf "\t(printstr \"hello world\\\n\")\n" >> main.zpy
+ echo -e "(endfun)" >> main.zpy
+
+ touch zpybuild.sh
+ echo "#!/bin/sh" > zpybuild.sh
+ echo "zpy ./main.zpy -c -o main.c" >> zpybuild.sh
+ echo "cc main.c /usr/local/share/zpylib/zpylib.o -o main -I/usr/local/share/zpylib/include -Wno-implicit-function-declaration" >> zpybuild.sh
+ echo "rm -rf main.c" >> zpybuild.sh
+
+ else
+ echo "zpypkg already in use!"
+ fi
+}
+
+function build (){
+ sh ./zpybuild.sh
+}
+
+function run (){
+ ./main
+}
+
+function clean (){
+ rm -f ./main
+}
+
+function remove () {
+ if [ -e "main.zpy" ]; then
+ rm main.zpy zpybuild.sh
+ else
+ echo "zpypkg not in use!"
+ fi
+}
+
+case $@ in
+ "init")
+ init
+ ;;
+ "advinit")
+ advinit
+ ;;
+ "build")
+ build
+ ;;
+ "run")
+ build
+ run
+ ;;
+ "clean")
+ clean
+ ;;
+ "remove")
+ remove
+ ;;
+ *)
+ echo "unknown option ${@}"
+esac
diff --git a/comp/lucas-standen-NEA/writeup2/Note b/comp/lucas-standen-NEA/writeup2/Note
new file mode 100644
index 0000000..b659af0
--- /dev/null
+++ b/comp/lucas-standen-NEA/writeup2/Note
@@ -0,0 +1 @@
+done on the analysis section move onto modelling
diff --git a/comp/lucas-standen-NEA/writeup2/coverpage.ms b/comp/lucas-standen-NEA/writeup2/coverpage.ms
new file mode 100644
index 0000000..e18f9c0
--- /dev/null
+++ b/comp/lucas-standen-NEA/writeup2/coverpage.ms
@@ -0,0 +1,1208 @@
+.TL
+The solution To bad code
+.AU
+Lucas Standen
+.AI
+7949
+.AB
+
+.NH 1
+Reading this document
+.LP
+This document is writen in roff and can be found online at:
+
+https://github.com/standenboy/school/tree/master/comp/lucas-standen-NEA/writeup
+
+It is using the ms macro of troff. It can be compiled using the Makefile,
+or make.sh. A table of
+contents has been generated using pdftocgen, it is embedded into the pdf,
+most pdf readers have
+a button to open it (firefox has it in the top left, in zathura press tab
+to view it).
+
+A note on formating of the roff, the text is limited to 80 characters per
+line and is writen in
+plain ascii, no utf8 emojis and the like. Code snippets are left in plain
+text, while full files
+are converted to a ps file via https://carbon.now.sh/ they should be 150mm ^
+2 (as ps is a vector
+format this wont lower quality, you might need to zoom in though) and then
+have there source linked
+above them; assuming they are from a file and not a small example.
+
+.NH 1
+Analysis
+.NH 2
+The current problem
+.LP
+For general small and simple projects, I write in C. However this leads to
+hours of debugging due to
+segfaults, and memory leaks. Due to the languages manual memory management
+the programmer is
+required to know so much information about the hardware they write for,
+and the second anything goes
+wrong, it is vague on how to fix things.
+
+.B "I need a language that stops me from shooting myself in the foot"
+
+C has been standard for many decades now and its age is showing, it lacks
+many modern features like
+OOP, or higher level functional abstractions, that have become common in
+modern years due to there
+helpfulness. This is not to fault C's achievements either, the language is
+my personal choice for
+most projects for a reason, it's fast and powerful; any solution I make
+should not cut that away.
+
+.NH 2
+A solution
+.LP
+.BI "Zippy LANG"
+
+A next generation language, for general use. Designed for keeping code simple,
+neat and readable.
+It will be similar to functional languages, known for there strict ability
+to keep code safe and
+practical. The language should be interpreted like python, perl and lisp,
+to allow for easy
+debugging tools.
+
+The goal of Zippy is to make codding easier, while remaining fast, with a
+interpreter writen in C.
+
+.NH 2
+What is a programming language
+.NH 3
+A very simple explanation
+.LP
+At its lowest definition a PL is a set of specific words, that when given
+to a computer in the
+right order have a reproducible behaviour. A more human way of saying that,
+would be its how we
+control computers.
+.NH 3
+Why are there so many
+.LP
+When someone is looking at code it can often be seen as just that, however
+there are hundreds of
+languages that all take the idea of "code" in very different ways. Some are
+designed for specific
+hardware, some are designed for making general use programs while others
+are highly specialized.
+It is important to see "code", as more than just one overarching term and
+instead see where the code
+is being used, and evaluate it from that.
+
+
+.NH 2
+Researching, and getting a scope of the project
+.LP
+Before I start to design a language i should first find examples of others
+and find what i want my
+language to be like.
+
+I'd like my language to feel modern so i should take inspiration from what
+other modern languages
+do, however on the backed i want my language to be stable and fast, for that
+i should look at
+older projects.
+
+.NH 3
+Examples of older similar projects, that are a good base for my language
+.NH 4
+Python
+.LP
+Python is a high level OOP language that was designed in 1991. It was made
+to make programming easy
+while still being able to use some of C's functions. Although it has become
+standard for many use
+cases, it is slow and inefficient, and very bloated.
+
+https://www.python.org/
+
+Zippy should take pythons high level abstractions, as they make programming
+very easy and it should
+try and take notes from its libraries as they are mostly well written,
+and well documented.
+.NH 4
+Lisp
+.LP
+Lisp is the second ever programming language, developed at MiT, it is the
+first functional language,
+creating many common features like higher order functions, recursion, and
+garbage collection. It is
+generally not used any more as it feels old compared to other functional
+languages, like Ocaml or
+Haskell.
+
+https://lisp-lang.org/
+
+Zippy should try to take alot from the syntax of lisp, () make it easy to
+see what parts of code
+will effect what, and make things easy to parse.
+.NH 4
+Perl
+.LP
+Perl is scripting language designed for use in linux, when bash is too slow,
+or not suited for the
+job. Perl is often described as the glue of the universe (see xkcd
+https://3d.xkcd.com/224/).
+Its syntax is quite strange however and it is slow. Making it poorly suited
+towards general use.
+
+https://www.perl.org/
+
+Zippy should take from perls minimalism, it is a small language that is of
+a similar size to bash
+or zsh, while feeling closer to python. If Zippy can achieve a similar small
+size, while remaining
+powerful I will be happy.
+
+.NH 3
+Examples of new similar projects that are also a good base
+.NH 4
+Gleam
+.LP
+Gleam is a modern language releasing in the past 5 years. It is highly
+functional, with no mutable
+data, no traditional loops. Instead recursion can be used to replace alot
+of these features.
+Gleam compiles to erlang/Beam bytecode, much like java to the jvm, and doing
+this has made Gleam
+a highly scalable language with good library support out the box.
+
+https://gleam.run/
+
+Zippy should take from the functional elements of Gleam, as they keep programs
+safer, however Zippy
+should not remove all procedural elements, as for loops are very helpful
+.NH 4
+Haskell
+.LP
+Haskell is another modern functional language known for being very complicated,
+however incredibly
+powerful. Its syntax feels very mathematical, and incredibly terse.
+
+https://www.haskell.org/
+
+Perhaps Zippy could learn from Haskell, as it provides functional and
+procedural elements, making it
+a well rounded language
+.NH 4
+Hare
+.LP
+Hare was designed to be a 100 year language, and thus stability is its main
+goal, it is not set to
+have a syntax change any time soon, and it has strong emphasis on memory
+safety. It fits into the
+same part of the tech stack as C, and thus it can be used for some very low
+level work.
+
+https://harelang.org/
+
+I think Zippy should have a strong emphasis on stability, much like Hare,
+to many times have I segfaulted due to a
+tiny mistake. Zippy should also look to Hare's small size, you can buy a
+copy of Hare on a
+
+.B "SINGLE 3 1/2'' FLOLPY"
+
+.LP
+This is something I too should try to achieve.
+
+.NH 3
+What should be taken away from these languages?
+.LP
+I was already leaning towards functional programming when I started this
+project however now I
+believe it's the only option for producing safe applications. Zippy will be
+a functional language
+with a strong emphasis on recursion.
+
+I also believe that I should take size of the interpreter into account,
+as this is important for
+keeping the project manageable and consistent.
+
+And finally I think that syntax should be inspired by Lisp, although Lisp
+itself can be a messy
+language, with the right changes I am confident that I can make a attractive
+language for the 21st
+century.
+
+.NH 2
+Clients
+.LP
+In a project of this nature, the Client is every programmer alive; which is
+a pretty large scope.
+To narrow this down as much as possible, I will interview a small handful
+of people throughout the
+project, of different skill levels.
+
+.NH 3
+Client 1, Amy C
+.LP
+My first client is a friend of mine, Amy C, she is a confident programmer
+who has completed many
+complicated projects. I am choosing her as a client as she can give me
+technical feed back on my
+project and its function/utility.
+.NH 3
+Client 2, Rayn M
+.LP
+Another friend of mine, Rayn M, is a technical computer user, however he
+does not know how to
+program at a high level. He will be a good client as he can show me how my
+language looks to
+some one who doesn't understand the inside workings, helping me design the
+structure of the code.
+.NH 3
+Client 3, a normie
+.LP
+some stuff about how the normie finds the completed project.
+.NH 3
+Client 4, myself
+.LP
+I've wanted to take out a project like this for a long long time, and this
+is the perfect
+opportunity to do so, I will be assessing myself along the way of this,
+building the project to my
+personal specification.
+
+.NH 2
+Questionnaires
+.LP
+It is important to get feedback from end users, so I will take multiple
+questionnaires throughout
+the project. I will then use them to slightly edit the requirements of my
+project this should make
+the final outcome more helpful and what people want.
+
+In the section bellow you will find questionnaires from the analyses stage
+of my project.
+.NH 3
+Questionnaire 1 for Amy C
+
+.BI "[30th April 2024]"
+.BI "answered by Amy, see pull request she left"
+.NH 4
+What do you find the most important in a language? (eg: speed, readability)
+.LP
+Speed, readability, debugging ease and disk space efficiency.
+.NH 4
+What tools are important for a language to have? (eg: pkg-manager, IDE
+integration)
+.LP
+IDE integration (things like tab complete and debugging tools), a package
+manager, and the ability
+to interact with the user through the command line easily.
+.NH 4
+What features do you like from other languages (eg: C's advanced memory
+management, haskell's terse
+syntax)
+.LP
+The ability to pass the memory reference of an object or function and a
+collection of built-in or
+standard functions like "print", "split", or "sort".
+.NH 4
+What do you want to program in this language (eg: websites, low level systems)
+.LP
+Lightweight command line tools and web back ends.
+.NH 4
+Do you intend to use graphics in the programs you write?
+.LP
+No.
+.NH 4
+Would you prefer a language that focuses on ease of use, or power of the code?
+.LP
+I like a good balance between the two.
+.NH 4
+What were your last 3 projects? (could they have been written in Zippy?)
+.LP
+A website, a small command-line tool and a midi keyboard (program runs on
+a Raspberry Pi Pico).
+.NH 4
+How many languages would you use on a single project? (could Zippy be used
+in your codebase?)
+.LP
+I try to use as little languages in a project as possible, so likely not in
+an existing project.
+.NH 4
+Do you care for low level control, or would you prefer high level abstractions?
+.LP
+I think low-level control is very important, but high-level abstractions
+are convenient, so a good
+balance between the two is best.
+.NH 4
+Would you be happy to develop libraries for things that aren't already
+implemented
+(eg: an SQL library)
+.LP
+Potentially if it is simple enough to implement new things.
+
+.NH 3
+Notes from questionnaire 1
+.LP
+Some of the key things that I'm taking away from this first questionnaire,
+are my client/users
+initial needs and use cases. I think it's clear my language can be of
+assistance to my client, Zippy
+will be a good language for web back ends and small command line tools,
+which my client expressed
+interested in.
+
+I find the fact my client is worried by executable size interesting, however
+I doubt it will be an
+issue; a ballooning code-base is unlikely as only one person is writing
+the project.
+
+I am also taking on the fact that my client wants good command line tools,
+so a pkg-manager and
+bundler should be a priority, perhaps they could be written in Zippy after
+the interpreter is done.
+
+.NH 2
+The first elements of the project
+.LP
+At this stage I can say that I'm confident in my project and its scope. I
+have a goal in mind for
+it.
+
+.B "The key things to take away from this section are:"
+
+.B ----
+Make a high level language with a useable set of features, to replace C in
+many situations.
+
+.B ----
+Keep the language readable and easy, with powerful tools available.
+
+.B ----
+Ensure the language is well supported with tools like a pkg-manager.
+
+.NH 2
+Moddeling
+.LP
+In larger projects, when a programmer needs a data structure that the language
+they are writing in
+doesn't provide, they will need to make their own.
+
+Bellow are a few examples of these data structures that C doesn't already
+provide.
+.NH 3
+Linked lists
+.LP
+this is an alternative implementation of a list, where you store some data,
+and the memory address
+to the next node. Then you can move through the list by reading the data
+then reading the data of
+the next node, and then repeating until the 'next' part of the node is empty.
+
+A diagram showing this can be seen here:
+
+.PSPIC linkedlist.ps
+
+.LP
+In C this is easy to implement as you can find a memory address very easily
+with '&' to find where
+a bit of data is stored. I will need to use a 'struct', which is a bit like
+a class in C (however
+you can't attach a function to it). A simple implementation looks like this:
+
+typedef struct ll {
+ void *data; // the data of the node
+ ll *next; // the next node
+
+} ll;
+
+.LP
+The pro's of a linked list are the fact that they can have data appended to
+the start or end easily
+by changing the root node, or the next node.
+
+Linked lists have a few downsides, for example you can't move through them
+backwards, and unless you
+store it on its own, you cant find the length of it in a fast way.
+
+In my project I would like to use linked list in the AST (see later sections
+for info), and to store
+lists in the language.
+.NH 3
+Dictionaries
+.LP
+A dictionary is a simple data structure that just stores, a bit of data,
+and a number or string to
+identify it.
+A dictionary like a linked list can be implemented with a struct in c like so:
+
+typedef struct dict {
+ void *data;
+ int id;
+
+} dict;
+
+.LP
+In my project I think I could use a linked list represent a Zippy variable
+and an ID that i can use
+to identify it, this could make execution faster as i can compare ID's
+rather than string values
+
+.NH 2
+Prototyping hard features
+.NH 3
+Abstract Syntax Trees (AST) theory
+.LP
+In a programming language many abstract data types will be used to allow
+the code to execute,
+however I think the hardest part of this is an abstract syntax tree. This
+is a data structure that
+holds the code in an ordered form that can be analysed and executed in a
+simple way. It is a tree
+structure, with the top node being a root and all lower nodes being things
+needed to calculate the
+root. It can be used not only for code but also for mathematical expressions. I
+think the easiest
+way to show it is via a mathematical example
+
+Take the follow expression for example:
+
+.BX "(1 + (10 * (3 - (2 * 4))))"
+
+We know that this is equal to -49
+
+However for a computer this is far harder to understand. This is because it
+has no understanding of
+order of operation
+
+To solve this we use an AST (abstract syntax tree)
+
+When you solve that expression you know to start with (2 * 4), then 3 -
+the answer to that and so on
+
+We can represent the steps as a tree like so:
+
+.PSPIC ast.ps
+
+.I "[Evalutates to 2 * (2 + 2)]"
+
+As you can see, you need to evaluate the expression in the most brackets
+first, then the next, and
+so on, working you way up
+
+You can evaluate code in a similar way, treating each operation (such as +-*/)
+as functions, doing
+the most deeply nested function first, then working up. Each expression can
+be represented in this
+tree, then to show a whole program you can create a list of trees
+
+.NH 3
+Implementing AST's
+.LP
+As a prototype i will make a program that can take mathematical expressions
+and evaluate them, and
+allowing for functions (in the form f(x)).
+It will do this via AST's
+
+This prototype takes 173 lines of code, it takes a string as a cmd line
+argument then converts it
+into an abstract syntax tree, and finally it executes it. This is just a
+simple prototype and thus
+it is small in scope. It can only do simple operators (+-*/) and requires
+literal values to be
+surrounded by [] so it knows its not another expression to evaluate.
+
+https://github.com/standenboy/school/tree/master/comp/lucas-standen-NEA/code/proto/ast
+
+.PSPIC astg.ps
+
+.LP
+Above is the code for the AST, it stores an operation (which is just an
+integer), and it stores
+a real left and real right value, along side two other nodes. The real values
+are integers, this
+would be the 2 numbers in reference in the expression. The 2 nodes are a
+recursive data structure,
+much like putting an object of a class inside the definition of that class
+itself. They are used to
+store values that may still be expressions, for example (+ [1] (+ [1] [1]))
+the second part of this
+expression would be in the "right" variable. When code is executed I can
+check if "left", or "right"
+are null and if they are i know that i am at the lowest expression that is
+only literal values.
+Then I can execute that node and work my way up the tree.
+
+
+The exec function will execute the operation, unless there is a deeper node,
+if there is a deeper
+node, then it executes it, and places the result in the right or left spot
+respectively.
+
+Expressions are taken as input with the following code, and converted into
+the AST:
+
+https://github.com/standenboy/school/tree/master/comp/lucas-standen-NEA/code/proto/ast
+
+.PSPIC ast.c.ps
+
+Here is an example input and output:
+
+ ./ast "(+ (- [3] [1]) (- [3] [1]))"
+
+.BX 4
+
+Note the [] used to tell the program where the literal values are.
+
+Overall this was a relatively successful prototype, however it isn't fully
+functional as a language
+it has fit the design.
+
+The rest of the code is the process of converting the string input to literal
+values and inserting
+them into the AST
+
+.NH 3
+Feedback
+.LP
+From my first Client (Amy C), she said that putting the numbers inside square
+brackets was
+inconvenient and annoying and it would be better if the numbers were separated
+by spaces instead of
+separate square bracket surrounded literals.
+
+As this is a prototype I won't fix this issue, however in the actual language
+this is a needed
+feature that I will be implementing.
+
+.NH 3
+Mixing linked lists and AST's
+.LP
+Mixing these 2 data structures together you can repressent an entire program. A
+linked list of
+AST's is how Zippy will repressent all code the user writes
+
+Here is an example of this:
+
+.PSPIC AST+LL.ps
+
+.LP
+In this example the linked list is represented by the numbers seen at the top,
+and the AST's are the
+tree's moving down.
+
+As you can see when a value is referenced that is from a different AST the
+tree will link to another
+one. This will work the same for function calls, however instead of linking
+to value definitions it
+will link to function definitions.
+
+.NH 2
+Objectives
+.NH 3
+An interpreter for the Zippy language
+.NH 4
+Linked list of AST's
+.LP
+All of a loaded program should be represented as a linked list of individual
+AST's, The developer
+should be able to access the AST for easy hacking. Functions can be represented
+as a pointer to
+another part of the list.
+.NH 4
+A lisp like syntax
+.LP
+This is to ensure the language can be parsed quickly, and is easy to write.
+.NH 4
+Functional language
+.LP
+This language should lean into the functional programming paradigm, taking
+inspiration from other
+functional languages such as lisp, and gleam.
+.NH 5
+Recursion
+.LP
+Zippy must support recursive algorithms being implemented into it, this will
+make the AST, have
+nodes linking back to parent nodes in a linked list.
+.NH 5
+Higher order functions
+.LP
+Zippy must support the usage of higher order functions, this will mean the
+AST needs to have an
+unlimited depth as otherwise the limit would be quickly reached, it can't
+be hard-coded, it must be
+dynamic.
+.NH 4
+Performance
+.LP
+The interpreter must be fast and memory efficient, the language is designed
+to work as an
+alternative to C, one of the fastest languages of all time, the interpreter
+must be fast, however
+memory footprint is not as much of a requirement.
+.NH 4
+Safe
+.LP
+Code that the user writes must be safe, and not prone to errors. This can
+be handeled via the strong
+syntax checker and type safety.
+
+.NH 3
+Standard library for Zippy
+.NH 4
+io
+.LP
+The language must have a simple to use I/O library to make outputs easy.
+.NH 4
+string
+.LP
+The language should have a sting library that provides a string type, and
+many complex algorithms
+that can be applied to them (concatenation, insertion, appending, splitting,
+stripping).
+.NH 4
+sorts
+.LP
+The language should have a sorting library that provides algorithms used
+for sorting (like merge
+sort).
+.NH 4
+graphs
+.LP
+the language must have a graph library, that allows for easy creation and
+working with graphs, it
+should provide many algorithms to help traverse these graphs
+
+.NH 3
+Tooling for the Zippy language
+.NH 4
+zpypkg
+.LP
+Zippy must provide a package manager, that allows code to be shared between
+multiple users, easily.
+It should sync projects via git and allow them to be stored on any git host
+the user likes.
+.NH 4
+Syntax checker
+.LP
+Zippy shouldn't have a built in syntax checker, instead it should be something
+that can be run
+independently of the interpreter, this means that a lot of the checking that
+interpreted languages
+do, can be done once by the developer, before shipping the app, as opposed
+to every time the program
+is run, which brings down performance.
+.NH 3
+Integration with C, via a C API
+.NH 4
+C API
+.LP
+You should be able to execute a string of Zippy code in C using a library
+that is linked with
+interpreter. This could allow Zippy to be used as a configuration language
+like Lua.
+
+.NH 2
+Desirable features
+.LP
+If time allows I'd like to add some of the following features to flesh out
+the language:
+.NH 3
+Raylib support
+.LP
+Raylib is a powerful game engine for C, however it has been ported to most
+languages under the
+sun due to how simple it is. If I have time, porting Raylib to Zippy would
+make the language
+far more useable, as it can be use for graphics programming.
+
+https://www.Raylib.com/
+
+.NH 3
+Vim integration.
+.LP
+Zippy should have integration with the Vim editor for syntax highlighting,
+this can be done via
+generating a linked list of AST's then colouring function calls a specific
+colour, and variables
+another, etc, etc.
+.NH 3
+LSP
+.LP
+A LSP (language server protocol), is used in code IDE's to auto complete
+code for you, I'd
+like one for Zippy. Although I am unsure as to how to tackle this. I believe
+a program called
+treesitter can be helpful for this.
+.NH 3
+Networking sockets
+.LP
+If possible I'd also like to provide bindings for unix network sockets,
+however this would be
+very difficult, as I would need to allow Zippy stucts to be directly converted
+to C stucts,
+when executing ELF symbols (Parts of an execuable file).
+
+.NH 1
+Design
+.NH 2
+Language specification
+.LP
+Like any other programming language Zippy needs to have a defined syntax,
+as mentioned in the
+objectives section of Analysis, I want the language to follow a lisp like
+syntax.
+
+I also believe higher order functions should be taken as standard and many
+core functions will use
+them.
+
+.NH 3
+Data types
+.NH 4
+Basic types
+.LP
+i32 - signed integer of size 32 bits
+
+u32 - unsigned integer of size 32 bits
+
+i64 - signed integer of size 64 bits
+
+u64 - unsigned integer of size 64 bits
+
+char - single ascii code
+
+float - standard C float
+
+.NH 4
+Advanced types
+.LP
+function - a function that can be used
+
+generic - should be avoided, removes checks for data types when inputting
+values to functions
+will cause many runtime errors, however when absolutely needed it is useful.
+
+.NH 4
+Arrays
+.LP
+Arrays can be show like so:
+
+x:type[]
+
+With x being the variable name, type being the type of variable, and []
+showing its an array
+
+All arrays are dynamic, represented by a linked list on the back end.
+.NH 5
+Strings
+.LP
+Strings, like in C are arrays of chars
+
+.NH 3
+Built in functions
+.NH 4
+defun
+.LP
+(defun a:type b:type returntype
+ ...
+ ...
+
+)
+
+Returns a function that take A and B as an argument (fixed types), and
+returns a value of
+returntype.
+
+.NH 4
+let
+.LP
+(let x:type value)
+
+Creates constant x of type type to value.
+
+.NH 4
+set
+.LP
+(set x:type value)
+
+Creates/recreates the variable value of x to value.
+
+.NH 4
+if/elif/else
+.LP
+(if condition function)
+
+(elif condition function)
+
+(else function)
+
+
+Executes the function provided if the condition is true.
+
+Elif works the same, except only if the previous if statement is false.
+
+Else executes only if all previous statements were false.
+
+.NH 4
+for
+.LP
+(for i (condition) function)
+
+Runs the function while the condition is true, and increments i every time
+the function
+is called.
+
+.NH 4
+while
+.LP
+(while condition function)
+
+Runs the function if the condition is true, keeps running until it is false.
+
+.NH 4
+symbol
+.LP
+(symbol a:type b:type c:type returntype name:char[] elf:char[])
+
+Returns a function that takes arguments A, B, C (of fixed types), the name
+of the function,
+and the file path of the elf.
+.NH 5
+
+.NH 4
+Arithmetic operations
+.LP
+Simple operations
+
+(+ a b) returns a + b
+
+(- a b) returns a - b
+
+(* a b) returns a * b
+
+(/ a b) returns a / b
+
+.NH 4
+Comparison
+.LP
+All return true or false
+
+(= a b) returns if a = b
+
+(!= a b) returns if a != b
+
+(> a b) returns if a > b
+
+(< a b) returns if a < b
+
+(=> a b) returns if a => b
+
+(=< a b) returns if a =< b
+
+.NH 4
+cast
+.LP
+(cast a:generic type:char[])
+
+returns a but cast to data type type, which is a string.
+
+.NH 4
+typeof
+.LP
+(typeof a:generic)
+
+returns in a string the type that variable A is.
+
+.NH 4
+terminate
+.LP
+(terminate error:error)
+
+Kills the program at the current point, frees all related memory, prints
+error info stored in error.
+
+.NH 4
+return
+.LP
+(return a:type)
+
+Must be used in defun, returns "a" from the function, "a" must be of the
+functions return type.
+
+.NH 3
+List of keywords
+.LP
+defun
+
+for
+
+while
+
+if
+
+elif
+
+else
+
+exit
+
+return
+
+symbol
+
+set
+
+let
+
+.NH 2
+Memory management
+.LP
+Memory will be allocated when a variable is initialized, and freed when the
+program stops.
+Although this isn't the fastest method, it is simple and has less runtime
+overhead.
+
+.NH 2
+Questionnaire 2 for Rayn M
+.NH 3
+How do you find this layout of the language?
+.LP
+.I "(5-6 points)"
+- I like the immutable nature of the language
+- I like the simplicity
+- I like the low level performance this will have
+- I dislike the word terminate
+- I like the procedural approach, with the function robustness
+- I dislike the brackets!
+.NH 3
+Response
+.LP
+Although he does dislike some of my features I believe them to be core parts
+of the language so
+I will keep them. I will also keep his points in mind though, I don't want
+to discourage learning
+the language due to its abstract syntax.
+
+However as per his request I will change the terminate keyword to the more
+normal exit.
+
+An updated keyword list is as flows:
+
+defun
+
+for
+
+while
+
+if
+
+elif
+
+else
+
+exit
+
+return
+
+symbol
+
+set
+
+let
+
+.NH 2
+What language do you use to make a programming language
+.LP
+As mentioned before Zippy will be written in C, with some parts being written
+in Zippy itself.
+I will try and keep most dependencies/libraries to a minimal to make the
+project easier to manage.
+
+.NH 3
+What is C?
+.LP
+C was made by Dennis Ritchie, in 1972 at AT&T's bell labs. It was designed
+to make programming low
+level systems far easier than it had been before. It was used to create the
+unix operating system
+which would go on to inspire most modern operating systems in some way. (macos
+still has code from
+the original release of C+unix).
+
+The language quickly caught on outside of bell labs after more available
+releases of unix arrived
+such as bsd 4.4, sun os and GNU. It was found to be able to do all the things
+that you could do in
+ASM however with far less a headache.
+
+.NH 3
+Why is C?
+.LP
+As mentioned C can do anything that ASM can do, meaning it is lightning fast
+and can take advantage
+of direct memory access. This allows you to make very fast lightweight
+executables that can rival
+the performance of handwritten ASM (often beating it if you enable compiler
+optimisations). It is
+this that makes C the perfect language for any and all programming languages,
+where speed is key,
+and allfeatures need to be available are present.
+
+.NH 3
+How is C?
+.LP
+C is compiled to ASM, the main compilers available are clang, gcc and MSVC,
+I will be using gcc
+as it is generally standard in linux environments.
+
+Many build systems are available for C, the main ones being cmake and gnu
+make. Both of them have
+the goal of putting the compiling process in one command. Cmake is cross
+platform (sorta windows
+doesn't work well but it does work).
+
+.NH 3
+Libraries
+.LP
+The libraries I will use are the following:
+
+C stdlib
+
+C unistd
+
+C errno
+
+Unix device files
+
+Zippy strings
+
+Zippy graphs
+
+Zippy sorts
+
+Addition libraries (may not be implemented):
+
+Raylib
+
+C sockets + Zippy sockets
+
+.NH 3
+Modularization
+.LP
+To make the project more manageable I will split it into many C files,
+this is to keep it from
+becoming impossible to edit code.
+
+The file layout looks as follows:
+
+PLACE HERE
+
+As you can see this is split up over around 40 files and 16 folders, each
+file should not go over
+~500 lines of code. This is to keep everything as easy to manage as possible.
+
+This level of modularization in needed for the development of Zippy as
+without it, files will become
+a mess that can't be worked with.
+
+All .c files will be compiled into .o files, then the .o files can be linked
+with the final zpy.c
+to generate the final executable.
+
+
+.NH 4
+Build system
+.LP
+The entire project is being build with GNU make files, each folder that
+builds something will have
+its own makefile. This will mean the entire project can be compiled with a
+single make in the root
+folder of the project.
+
+Example of make:
+
+make -j2
+
+This will build all files specified by 'Makefile' with 2 threads.
+
+The project should be build with gcc, and ld. It should be build with the
+-O3 build flag to ensure
+the program runs as fast as possible. -O3 forces the compiler to build with
+optimizations.
+
+When the project is finished, I will try compiling with clang and tcc,
+to compare performance.
+
+.NH 2
+Time table
+.LP
+The first step is to tackle the interpreter, so the zpy.c file needs to be
+finished. The tokenizer,
+execution, and libs folders need to be finished, after this point you should
+be able to execute
+Zippy code however not syntax check it or get error handling.
+
+The next step is zpycheck, the syntax and error handler, this should be ran
+before code is shipped
+to the user. It can reuse a lot of code from the tokenizer and execution steps.
+
+Finally I need to make zpypkg, this should be easy as most of it can be
+written in Zippy, and a few
+bits can be written in bash. It should be a good test to how Zippy can
+be written.
+
+If time allows it is at this point that I will write a Raylib library and
+a unix/C sockets library.
+
+.NH 2
+Flow through the system
+.LP
+The alogrithum to run code is quite complex however it can be boiled down
+to a few simple steps:
+
+.B "read the text file (strip line breaks and tabs)"
+.LP
+.B "create an empty linked list"
+.LP
+.B "get the first expression from the text file (with be encapsulated with
+"()""
+.B "get the function call and its args into a token"
+.LP
+.B "if the arguments of the function are there own function call, then
+convert them into a token"
+.LP
+.B "set that token as the argument in the first token"
+.LP
+.B "append the root token to the linked list"
+.LP
+.B "repeat until the text file string is empty"
+.LP
+.B "allocate memory for the program and prepare the exection step"
+.LP
+.B "at the start of the linked list traverse to the bottem of the tree
+(made of tokens)"
+.LP
+.B "execute the lowest token"
+.LP
+.B "repeat until all tokens including the root have been executed"
+.LP
+.B "move to the next node of the linked list"
+.LP
+.B "repeat until the linked list is empty"
+
+.LP
+Within each of these steps is many smaller steps. The hardest part will be
+making the tokens, as
+this requires alot of string manipultation. The execution will be a recursive
+alogrithum. All trees
+will be represented via structs (see section on AST's).
+
+PUT SOME FLOW CHARTS HERE
+
+.NH 1
+Technical Solution
+.NH 1
+Testing
+.NH 1
+Evaluation
+.AE
diff --git a/comp/lucas-standen-NEA/writeup2/writeup.aux b/comp/lucas-standen-NEA/writeup2/writeup.aux
new file mode 100644
index 0000000..87403dd
--- /dev/null
+++ b/comp/lucas-standen-NEA/writeup2/writeup.aux
@@ -0,0 +1,40 @@
+\relax
+\providecommand\babel@aux[2]{}
+\@nameuse{bbl@beforestart}
+\providecommand\hyper@newdestlabel[2]{}
+\providecommand\HyField@AuxAddToFields[1]{}
+\providecommand\HyField@AuxAddToCoFields[2]{}
+\babel@aux{english}{}
+\@writefile{toc}{\contentsline {section}{\numberline {1}A breif head note and introduction}{3}{section.1}\protected@file@percent }
+\@writefile{toc}{\contentsline {section}{\numberline {2}Analysis}{3}{section.2}\protected@file@percent }
+\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}The current problem}{3}{subsection.2.1}\protected@file@percent }
+\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}A solution}{3}{subsection.2.2}\protected@file@percent }
+\@writefile{toc}{\contentsline {subsection}{\numberline {2.3}What is a programming language}{3}{subsection.2.3}\protected@file@percent }
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.3.1}A very simple explanation}{3}{subsubsection.2.3.1}\protected@file@percent }
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.3.2}Why are there so many}{4}{subsubsection.2.3.2}\protected@file@percent }
+\@writefile{toc}{\contentsline {subsection}{\numberline {2.4}Researching and getting a scope of the project}{4}{subsection.2.4}\protected@file@percent }
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.4.1}Examples of older similar projects}{4}{subsubsection.2.4.1}\protected@file@percent }
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.4.2}Examples of newer similar projects}{4}{subsubsection.2.4.2}\protected@file@percent }
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.4.3}What should be taken away from these languages}{5}{subsubsection.2.4.3}\protected@file@percent }
+\@writefile{toc}{\contentsline {subsection}{\numberline {2.5}Clients}{5}{subsection.2.5}\protected@file@percent }
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.5.1}Client 1: Amy C}{5}{subsubsection.2.5.1}\protected@file@percent }
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.5.2}Client 2: Rayn M}{5}{subsubsection.2.5.2}\protected@file@percent }
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.5.3}Client 3: Myself}{6}{subsubsection.2.5.3}\protected@file@percent }
+\@writefile{toc}{\contentsline {subsection}{\numberline {2.6}Questionnaires}{6}{subsection.2.6}\protected@file@percent }
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.6.1}Amy C, initial ideas}{6}{subsubsection.2.6.1}\protected@file@percent }
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.6.2}Notes from questionnare 1}{6}{subsubsection.2.6.2}\protected@file@percent }
+\@writefile{toc}{\contentsline {subsection}{\numberline {2.7}The first elements of the project}{7}{subsection.2.7}\protected@file@percent }
+\@writefile{toc}{\contentsline {section}{\numberline {3}Modelling}{7}{section.3}\protected@file@percent }
+\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Linked lists}{7}{subsection.3.1}\protected@file@percent }
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {1}Linked list example}{7}{lstlisting.1}\protected@file@percent }
+\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}Dictionaries}{8}{subsection.3.2}\protected@file@percent }
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {2}Dictionary example}{8}{lstlisting.2}\protected@file@percent }
+\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}Prototyping harder features}{8}{subsection.3.3}\protected@file@percent }
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.3.1}Abstract syntax trees (AST's) theory}{8}{subsubsection.3.3.1}\protected@file@percent }
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.3.2}Abstract syntax trees (AST's) practical}{9}{subsubsection.3.3.2}\protected@file@percent }
+\@writefile{lol}{\contentsline {lstlisting}{../code/proto/AST/ast.c}{9}{lstlisting.-1}\protected@file@percent }
+\@writefile{lol}{\contentsline {lstlisting}{../code/proto/AST/astg.c}{12}{lstlisting.-2}\protected@file@percent }
+\@writefile{lol}{\contentsline {lstlisting}{../code/proto/AST/astg.h}{12}{lstlisting.-3}\protected@file@percent }
+\@writefile{toc}{\contentsline {subsection}{\numberline {3.4}Feedback}{13}{subsection.3.4}\protected@file@percent }
+\@writefile{toc}{\contentsline {subsection}{\numberline {3.5}Mixing linked lists and AST's}{14}{subsection.3.5}\protected@file@percent }
+\gdef \@abspage@last{14}
diff --git a/comp/lucas-standen-NEA/writeup2/writeup.fdb_latexmk b/comp/lucas-standen-NEA/writeup2/writeup.fdb_latexmk
new file mode 100644
index 0000000..52f97a4
--- /dev/null
+++ b/comp/lucas-standen-NEA/writeup2/writeup.fdb_latexmk
@@ -0,0 +1,199 @@
+# Fdb version 4
+["pdflatex"] 1728905490.10155 "writeup.tex" "writeup.pdf" "writeup" 1728905492.58947 0
+ "../code/proto/AST/ast.c" 1726310530.07745 2961 c47f93a2515bbdc975ff63648a7cdd5e ""
+ "../code/proto/AST/astg.c" 1726310530.07745 952 02073ee7971b5c86c469ca9979e7558e ""
+ "../code/proto/AST/astg.h" 1726310530.07745 275 d81b6b122dc745e84025255cf68ff265 ""
+ "/usr/share/texmf-dist/fonts/enc/dvips/cm-super/cm-super-ts1.enc" 1727349926 2900 1537cc8184ad1792082cd229ecc269f4 ""
+ "/usr/share/texmf-dist/fonts/map/fontname/texfonts.map" 1727349926 3524 cb3e574dea2d1052e39280babc910dc8 ""
+ "/usr/share/texmf-dist/fonts/tfm/jknappen/ec/tcrm1200.tfm" 1727349926 1536 74b7293ec3713bb7fdca8dd1bd1f469c ""
+ "/usr/share/texmf-dist/fonts/tfm/public/cm/cmbx12.tfm" 1727349926 1324 c910af8c371558dc20f2d7822f66fe64 ""
+ "/usr/share/texmf-dist/fonts/tfm/public/cm/cmbxti10.tfm" 1727349926 1532 9162035f4e7176612125649e348e2195 ""
+ "/usr/share/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm" 1727349926 1524 4414a8315f39513458b80dfc63bff03a ""
+ "/usr/share/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm" 1727349926 1512 f21f83efb36853c0b70002322c1ab3ad ""
+ "/usr/share/texmf-dist/fonts/tfm/public/cm/cmmi8.tfm" 1727349926 1520 eccf95517727cb11801f4f1aee3a21b4 ""
+ "/usr/share/texmf-dist/fonts/tfm/public/cm/cmr10.tfm" 1727349926 1296 45809c5a464d5f32c8f98ba97c1bb47f ""
+ "/usr/share/texmf-dist/fonts/tfm/public/cm/cmr12.tfm" 1727349926 1288 655e228510b4c2a1abe905c368440826 ""
+ "/usr/share/texmf-dist/fonts/tfm/public/cm/cmr17.tfm" 1727349926 1292 296a67155bdbfc32aa9c636f21e91433 ""
+ "/usr/share/texmf-dist/fonts/tfm/public/cm/cmr6.tfm" 1727349926 1300 b62933e007d01cfd073f79b963c01526 ""
+ "/usr/share/texmf-dist/fonts/tfm/public/cm/cmr8.tfm" 1727349926 1292 21c1c5bfeaebccffdb478fd231a0997d ""
+ "/usr/share/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm" 1727349926 1124 6c73e740cf17375f03eec0ee63599741 ""
+ "/usr/share/texmf-dist/fonts/tfm/public/cm/cmsy6.tfm" 1727349926 1116 933a60c408fc0a863a92debe84b2d294 ""
+ "/usr/share/texmf-dist/fonts/tfm/public/cm/cmsy8.tfm" 1727349926 1120 8b7d695260f3cff42e636090a8002094 ""
+ "/usr/share/texmf-dist/fonts/tfm/public/cm/cmti12.tfm" 1727349926 1484 ed72f8f5cf654cda15ecc8e32bfcbee5 ""
+ "/usr/share/texmf-dist/fonts/tfm/public/cm/cmtt10.tfm" 1727349926 768 1321e9409b4137d6fb428ac9dc956269 ""
+ "/usr/share/texmf-dist/fonts/tfm/public/cm/cmtt12.tfm" 1727349926 772 9a936b7f5e2ff0557fce0f62822f0bbf ""
+ "/usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb" 1727349926 32080 340ef9bf63678554ee606688e7b5339d ""
+ "/usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmbxti10.pfb" 1727349926 36554 b67dc2cfa451409e100b3fcf5f506509 ""
+ "/usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb" 1727349926 35752 024fb6c41858982481f6968b5fc26508 ""
+ "/usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmr12.pfb" 1727349926 32722 d7379af29a190c3f453aba36302ff5a9 ""
+ "/usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmr17.pfb" 1727349926 32362 179c33bbf43f19adbb3825bb4e36e57a ""
+ "/usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmr6.pfb" 1727349926 32734 69e00a6b65cedb993666e42eedb3d48f ""
+ "/usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb" 1727349926 32569 5e5ddc8df908dea60932f3c484a54c0d ""
+ "/usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmti12.pfb" 1727349926 36118 fad905eba93cff5bce1e185fe980a177 ""
+ "/usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmtt10.pfb" 1727349926 31099 c85edf1dd5b9e826d67c9c7293b6786c ""
+ "/usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmtt12.pfb" 1727349926 24252 1e4e051947e12dfb50fee0b7f4e26e3a ""
+ "/usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1200.pfb" 1727349926 136101 f533469f523533d38317ab5729d00c8a ""
+ "/usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii" 1727349926 71627 94eb9990bed73c364d7f53f960cc8c5b ""
+ "/usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty" 1727349926 24708 5584a51a7101caf7e6bbf1fc27d8f7b1 ""
+ "/usr/share/texmf-dist/tex/generic/babel-english/english.ldf" 1727349926 7008 9ff5fdcc865b01beca2b0fe4a46231d4 ""
+ "/usr/share/texmf-dist/tex/generic/babel/babel.sty" 1727349926 146276 10a40dabec03ce18494af0c3a51bcbdc ""
+ "/usr/share/texmf-dist/tex/generic/babel/locale/en/babel-en.ini" 1727349926 3966 caeee5a9e5771d4446aa1ca9015ba1b2 ""
+ "/usr/share/texmf-dist/tex/generic/babel/locale/en/babel-english.tex" 1727349926 336 ed676b5e7dfd862bc78d634f6a973f37 ""
+ "/usr/share/texmf-dist/tex/generic/babel/txtbabel.def" 1727349926 6948 df63e25be1d2bc35bbad5a0141f41348 ""
+ "/usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty" 1727349926 40635 c40361e206be584d448876bba8a64a3b ""
+ "/usr/share/texmf-dist/tex/generic/bitset/bitset.sty" 1727349926 33961 6b5c75130e435b2bfdb9f480a09a39f9 ""
+ "/usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty" 1727349926 8371 9d55b8bd010bc717624922fb3477d92e ""
+ "/usr/share/texmf-dist/tex/generic/iftex/iftex.sty" 1727349926 7237 bdd120a32c8fdb4b433cf9ca2e7cd98a ""
+ "/usr/share/texmf-dist/tex/generic/iftex/ifvtex.sty" 1727349926 1057 525c2192b5febbd8c1f662c9468335bb ""
+ "/usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty" 1727349926 8356 7bbb2c2373aa810be568c29e333da8ed ""
+ "/usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty" 1727349926 31769 002a487f55041f8e805cfbf6385ffd97 ""
+ "/usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty" 1727349926 5412 d5a2436094cd7be85769db90f29250a6 ""
+ "/usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty" 1727349926 17865 1a9bd36b4f98178fa551aca822290953 ""
+ "/usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty" 1727349926 19007 15924f7228aca6c6d184b115f4baa231 ""
+ "/usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty" 1727349926 20089 80423eac55aa175305d35b49e04fe23b ""
+ "/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex" 1727349926 1016 1c2b89187d12a2768764b83b4945667c ""
+ "/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex" 1727349926 43820 1fef971b75380574ab35a0d37fd92608 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex" 1727349926 19324 f4e4c6403dd0f1605fd20ed22fa79dea ""
+ "/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex" 1727349926 6038 ccb406740cc3f03bbfb58ad504fe8c27 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex" 1727349926 6911 f6d4cf5a3fef5cc879d668b810e82868 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex" 1727349926 4883 42daaf41e27c3735286e23e48d2d7af9 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex" 1727349926 2544 8c06d2a7f0f469616ac9e13db6d2f842 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex" 1727349926 44195 5e390c414de027626ca5e2df888fa68d ""
+ "/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex" 1727349926 17311 2ef6b2e29e2fc6a2fc8d6d652176e257 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex" 1727349926 21302 788a79944eb22192a4929e46963a3067 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex" 1727349926 9691 3d42d89522f4650c2f3dc616ca2b925e ""
+ "/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex" 1727349926 33335 dd1fa4814d4e51f18be97d88bf0da60c ""
+ "/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex" 1727349926 2965 4c2b1f4e0826925746439038172e5d6f ""
+ "/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.code.tex" 1727349926 5196 2cc249e0ee7e03da5f5f6589257b1e5b ""
+ "/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex" 1727349926 20821 7579108c1e9363e61a0b1584778804aa ""
+ "/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex" 1727349926 35249 abd4adf948f960299a4b3d27c5dddf46 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex" 1727349926 22012 81b34a0aa8fa1a6158cc6220b00e4f10 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex" 1727349926 8893 e851de2175338fdf7c17f3e091d94618 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarycalc.code.tex" 1727349926 15929 463535aa2c4268fead6674a75c0e8266 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfit.code.tex" 1727349926 3626 2d87dc681257fa32d07a8b3934b10f88 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.arrows.code.tex" 1727349926 410 048d1174dabde96757a5387b8f23d968 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.callouts.code.tex" 1727349926 1201 8bd51e254d3ecf0cd2f21edd9ab6f1bb ""
+ "/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.code.tex" 1727349926 494 8de62576191924285b021f4fc4292e16 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.geometric.code.tex" 1727349926 339 be0fe46d92a80e3385dd6a83511a46f2 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.misc.code.tex" 1727349926 329 ba6d5440f8c16779c2384e0614158266 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.multipart.code.tex" 1727349926 923 c7a223b32ffdeb1c839d97935eee61ff ""
+ "/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.symbols.code.tex" 1727349926 475 4b4056fe07caa0603fede9a162fe666d ""
+ "/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex" 1727349926 11518 738408f795261b70ce8dd47459171309 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex" 1727349926 186782 af500404a9edec4d362912fe762ded92 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryfpu.code.tex" 1727349926 85938 8e4ba97c5906e1c0d158aea81fe29af7 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryintersections.code.tex" 1727349926 44571 38ac24c171fb8fa1a13adc8ce7eb94c5 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex" 1727349926 32995 ac577023e12c0e4bd8aa420b2e852d1a ""
+ "/usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.arrows.code.tex" 1727349926 91587 d9b31a3e308b08833e4528a7b4484b4a ""
+ "/usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.callouts.code.tex" 1727349926 33336 427c354e28a4802ffd781da22ae9f383 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.geometric.code.tex" 1727349926 161011 76ab54df0aa1a9d3b27a94864771d38d ""
+ "/usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.misc.code.tex" 1727349926 46249 d1f322c52d26cf506b4988f31902cd5d ""
+ "/usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.multipart.code.tex" 1727349926 62281 aff261ef10ba6cbe8e3c872a38c05a61 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.symbols.code.tex" 1727349926 90521 9d46d4504c2ffed28ff5ef3c43d15f21 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/math/pgfint.code.tex" 1727349926 3063 8c415c68a0f3394e45cfeca0b65f6ee6 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex" 1727349926 949 cea70942e7b7eddabfb3186befada2e6 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex" 1727349926 13270 2e54f2ce7622437bf37e013d399743e3 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex" 1727349926 104717 9b2393fbf004a0ce7fa688dbce423848 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.tex" 1727349926 10165 cec5fa73d49da442e56efc2d605ef154 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex" 1727349926 28178 41c17713108e0795aac6fef3d275fbca ""
+ "/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex" 1727349926 9649 85779d3d8d573bfd2cd4137ba8202e60 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison.code.tex" 1727349926 3865 ac538ab80c5cf82b345016e474786549 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics.code.tex" 1727349926 3177 27d85c44fbfe09ff3b2cf2879e3ea434 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex" 1727349926 11024 0179538121bc2dba172013a3ef89519f ""
+ "/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.code.tex" 1727349926 7890 0a86dbf4edfd88d022e0d889ec78cc03 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code.tex" 1727349926 3379 781797a101f647bab82741a99944a229 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code.tex" 1727349926 92405 f515f31275db273f97b9d8f52e1b0736 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex" 1727349926 37466 97b0a1ba732e306a1a2034f5a73e239f ""
+ "/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex" 1727349926 8471 c2883569d03f69e8e1cabfef4999cfd7 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex" 1727349926 21211 1e73ec76bd73964d84197cc3d2685b01 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex" 1727349926 16121 346f9013d34804439f7436ff6786cef7 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex" 1727349926 44792 271e2e1934f34c759f4dedb1e14a5015 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/pgf.revision.tex" 1727349926 114 e6d443369d0673933b38834bf99e422d ""
+ "/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg" 1727349926 926 2963ea0dcf6cc6c0a770b69ec46a477b ""
+ "/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def" 1727349926 5542 32f75a31ea6c3a7e1148cd6d5e93dbb7 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def" 1727349926 12612 7774ba67bfd72e593c4436c2de6201e3 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex" 1727349926 61351 bc5f86e0355834391e736e97a61abced ""
+ "/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex" 1727349926 1896 b8e0ca0ac371d74c0ca05583f6313c91 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex" 1727349926 7778 53c8b5623d80238f6a20aa1df1868e63 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex" 1727349926 24033 d8893a1ec4d1bfa101b172754743d340 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex" 1727349926 39784 414c54e866ebab4b801e2ad81d9b21d8 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeyslibraryfiltered.code.tex" 1727349926 37433 940bc6d409f1ffd298adfdcaf125dd86 ""
+ "/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex" 1727349926 4385 510565c2f07998c8a0e14f0ec07ff23c ""
+ "/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex" 1727349926 29239 22e8c7516012992a49873eff0d868fed ""
+ "/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def" 1727349926 6950 8524a062d82b7afdc4a88a57cb377784 ""
+ "/usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty" 1727349926 7008 f92eaa0a3872ed622bbf538217cd2ab7 ""
+ "/usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty" 1727349926 19336 ce7ae9438967282886b3b036cfad1e4d ""
+ "/usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty" 1727349926 3935 57aa3c3e203a5c2effb4d2bd2efbc323 ""
+ "/usr/share/texmf-dist/tex/latex/base/article.cls" 1727349926 20144 147463a6a579f4597269ef9565205cfe ""
+ "/usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty" 1727349926 3045 273c666a54e60b9f730964f431a56c1b ""
+ "/usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty" 1727349926 2462 6bc53756156dbd71c1ad550d30a3b93f ""
+ "/usr/share/texmf-dist/tex/latex/base/size12.clo" 1727349926 8449 f07039d8e4e89f21078d9b5137579bfc ""
+ "/usr/share/texmf-dist/tex/latex/elocalloc/elocalloc.sty" 1727349926 1428 7d469063535b93044f827bfdb1b0a130 ""
+ "/usr/share/texmf-dist/tex/latex/environ/environ.sty" 1727349926 4378 f429f0da968c278653359293040a8f52 ""
+ "/usr/share/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty" 1727349926 13886 d1306dcf79a944f6988e688c1785f9ce ""
+ "/usr/share/texmf-dist/tex/latex/etoolbox/etoolbox.sty" 1727349926 46845 3b58f70c6e861a13d927bff09d35ecbc ""
+ "/usr/share/texmf-dist/tex/latex/forest/forest.sty" 1727349926 350382 5acb55040bcf8080692df2e32715e5ea ""
+ "/usr/share/texmf-dist/tex/latex/geometry/geometry.sty" 1727349926 41601 9cf6c5257b1bc7af01a58859749dd37a ""
+ "/usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg" 1727349926 1213 620bba36b25224fa9b7e1ccb4ecb76fd ""
+ "/usr/share/texmf-dist/tex/latex/graphics-cfg/graphics.cfg" 1727349926 1224 978390e9c2234eab29404bc21b268d1e ""
+ "/usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def" 1727349926 19448 1e988b341dda20961a6b931bcde55519 ""
+ "/usr/share/texmf-dist/tex/latex/graphics/graphics.sty" 1727349926 18387 8f900a490197ebaf93c02ae9476d4b09 ""
+ "/usr/share/texmf-dist/tex/latex/graphics/graphicx.sty" 1727349926 8010 a8d949cbdbc5c983593827c9eec252e1 ""
+ "/usr/share/texmf-dist/tex/latex/graphics/keyval.sty" 1727349926 2671 7e67d78d9b88c845599a85b2d41f2e39 ""
+ "/usr/share/texmf-dist/tex/latex/graphics/mathcolor.ltx" 1727349926 2885 9c645d672ae17285bba324998918efd8 ""
+ "/usr/share/texmf-dist/tex/latex/graphics/trig.sty" 1727349926 4023 293ea1c16429fc0c4cf605f4da1791a9 ""
+ "/usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty" 1727349926 17914 4c28a13fc3d975e6e81c9bea1d697276 ""
+ "/usr/share/texmf-dist/tex/latex/hyperref/hpdftex.def" 1727349926 48154 e46bf8adeb936500541441171d61726d ""
+ "/usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty" 1727349926 220920 fd3cbb5f1a2bc9b8f451b8b7d8171264 ""
+ "/usr/share/texmf-dist/tex/latex/hyperref/nameref.sty" 1727349926 11026 182c63f139a71afd30a28e5f1ed2cd1c ""
+ "/usr/share/texmf-dist/tex/latex/hyperref/pd1enc.def" 1727349926 14249 e67cb186717b7ab18d14a4875e7e98b5 ""
+ "/usr/share/texmf-dist/tex/latex/hyperref/puenc.def" 1727349926 117112 05831178ece2cad4d9629dcf65099b11 ""
+ "/usr/share/texmf-dist/tex/latex/inlinedef/inlinedef.sty" 1727349926 10102 e5ccd67aecac6cb4bf5de2b491ef79b5 ""
+ "/usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty" 1727349926 22555 6d8e155cfef6d82c3d5c742fea7c992e ""
+ "/usr/share/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty" 1727349926 13815 760b0c02f691ea230f5359c4e1de23a7 ""
+ "/usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def" 1727349926 30006 3d512c0edd558928ddea1690180ef77e ""
+ "/usr/share/texmf-dist/tex/latex/l3kernel/expl3.sty" 1727349926 6565 10e89ed128ccd59431746bbdd82129fc ""
+ "/usr/share/texmf-dist/tex/latex/l3packages/xparse/xparse.sty" 1727349926 9327 11bedad2ac38f92e405a38ed18489a03 ""
+ "/usr/share/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg" 1727349926 678 4792914a8f45be57bb98413425e4c7af ""
+ "/usr/share/texmf-dist/tex/latex/listings/listings.cfg" 1727349926 1830 20af84c556326f7c12b9202ebe363f56 ""
+ "/usr/share/texmf-dist/tex/latex/listings/listings.sty" 1727349926 81322 d02238bdeb305f2c9f9d0229f99371d0 ""
+ "/usr/share/texmf-dist/tex/latex/listings/lstlang1.sty" 1727349926 205167 fca232873050cd2da4f9c0c32402c38a ""
+ "/usr/share/texmf-dist/tex/latex/listings/lstmisc.sty" 1727349926 77022 5c8c440739265e7ba15b8379ece6ecd7 ""
+ "/usr/share/texmf-dist/tex/latex/listings/lstpatch.sty" 1727349926 329 f19f5da7234b51d16764e23d20999c73 ""
+ "/usr/share/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty" 1727349926 1090 bae35ef70b3168089ef166db3e66f5b2 ""
+ "/usr/share/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty" 1727349926 373 00b204b1d7d095b892ad31a7494b0373 ""
+ "/usr/share/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty" 1727349926 21013 f4ff83d25bb56552493b030f27c075ae ""
+ "/usr/share/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty" 1727349926 989 c49c8ae06d96f8b15869da7428047b1e ""
+ "/usr/share/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty" 1727349926 339 c2e180022e3afdb99c7d0ea5ce469b7d ""
+ "/usr/share/texmf-dist/tex/latex/pgf/math/pgfmath.sty" 1727349926 306 c56a323ca5bf9242f54474ced10fca71 ""
+ "/usr/share/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty" 1727349926 443 8c872229db56122037e86bcda49e14f3 ""
+ "/usr/share/texmf-dist/tex/latex/pgf/utilities/pgffor.sty" 1727349926 348 ee405e64380c11319f0e249fed57e6c5 ""
+ "/usr/share/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty" 1727349926 274 5ae372b7df79135d240456a1c6f2cf9a ""
+ "/usr/share/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty" 1727349926 325 f9f16d12354225b7dd52a3321f085955 ""
+ "/usr/share/texmf-dist/tex/latex/pgfopts/pgfopts.sty" 1727349926 5540 d5c60cf09c59da351aa4023ed084e4eb ""
+ "/usr/share/texmf-dist/tex/latex/refcount/refcount.sty" 1727349926 9878 9e94e8fa600d95f9c7731bb21dfb67a4 ""
+ "/usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty" 1727349926 9714 ba3194bd52c8499b3f1e3eb91d409670 ""
+ "/usr/share/texmf-dist/tex/latex/tikz-qtree/pgfsubpic.sty" 1727349926 54 f9439ec673a174422959417bbf935693 ""
+ "/usr/share/texmf-dist/tex/latex/tikz-qtree/pgfsubpic.tex" 1727349926 8570 d1bab08986c0118f4c006d2f8c250422 ""
+ "/usr/share/texmf-dist/tex/latex/tikz-qtree/pgftree.sty" 1727349926 103 1ec4da228521932da66ce8de6a762d94 ""
+ "/usr/share/texmf-dist/tex/latex/tikz-qtree/pgftree.tex" 1727349926 7300 d92acc9c8a60dbc36f92a0414bc55881 ""
+ "/usr/share/texmf-dist/tex/latex/tikz-qtree/tikz-qtree.sty" 1727349926 80 0f0f922a334da96eeeca4db3f8b5834a ""
+ "/usr/share/texmf-dist/tex/latex/tikz-qtree/tikz-qtree.tex" 1727349926 7407 bee44709234c7b6ab03b4bbe0f0eb1cf ""
+ "/usr/share/texmf-dist/tex/latex/titlesec/titlesec.sty" 1727349926 48766 0b93839be28e9744a24c45075c75b2e2 ""
+ "/usr/share/texmf-dist/tex/latex/titling/titling.sty" 1727349926 7358 95ac619994bd30d405a74f3eca431c84 ""
+ "/usr/share/texmf-dist/tex/latex/trimspaces/trimspaces.sty" 1727349926 1380 971a51b00a14503ddf754cab24c3f209 ""
+ "/usr/share/texmf-dist/tex/latex/url/url.sty" 1727349926 12796 8edb7d69a20b857904dd0ea757c14ec9 ""
+ "/usr/share/texmf-dist/tex/latex/xcolor/xcolor.sty" 1727349926 55487 80a65caedd3722f4c20a14a69e785d8f ""
+ "/usr/share/texmf-dist/web2c/texmf.cnf" 1727349926 41588 b43d3e860a4f94167ee1e725ff526a72 ""
+ "/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map" 1727772120.4956 5312047 b07fcd2a9090df96fc745b92a3db793b ""
+ "/var/lib/texmf/web2c/pdftex/pdflatex.fmt" 1727771987 7112995 7933768d5ebcb328850d23523e531d79 ""
+ "writeup.aux" 1728905492.33432 4432 710fbc040802dbc9eb40406952fd6ed2 "pdflatex"
+ "writeup.out" 1728905492.33765 4997 e70a9c8f057c1547035bac5d30a3014a "pdflatex"
+ "writeup.tex" 1728905489.59434 20681 18e84f17b265407f364fdfa5882ac984 ""
+ "writeup.toc" 1728905492.33765 2529 a2fe1657a58b702f5bfb72c069988614 "pdflatex"
+ (generated)
+ "writeup.aux"
+ "writeup.log"
+ "writeup.out"
+ "writeup.pdf"
+ "writeup.toc"
+ (rewritten before read)
diff --git a/comp/lucas-standen-NEA/writeup2/writeup.fls b/comp/lucas-standen-NEA/writeup2/writeup.fls
new file mode 100644
index 0000000..a358e98
--- /dev/null
+++ b/comp/lucas-standen-NEA/writeup2/writeup.fls
@@ -0,0 +1,365 @@
+PWD /home/thing1/school/comp/lucas-standen-NEA/writeup2
+INPUT /usr/share/texmf-dist/web2c/texmf.cnf
+INPUT /var/lib/texmf/web2c/pdftex/pdflatex.fmt
+INPUT writeup.tex
+OUTPUT writeup.log
+INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
+INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
+INPUT /usr/share/texmf-dist/tex/latex/base/size12.clo
+INPUT /usr/share/texmf-dist/tex/latex/base/size12.clo
+INPUT /usr/share/texmf-dist/tex/latex/base/size12.clo
+INPUT /usr/share/texmf-dist/fonts/map/fontname/texfonts.map
+INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmr12.tfm
+INPUT /usr/share/texmf-dist/tex/latex/geometry/geometry.sty
+INPUT /usr/share/texmf-dist/tex/latex/geometry/geometry.sty
+INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty
+INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty
+INPUT /usr/share/texmf-dist/tex/generic/iftex/ifvtex.sty
+INPUT /usr/share/texmf-dist/tex/generic/iftex/ifvtex.sty
+INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty
+INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty
+INPUT /usr/share/texmf-dist/tex/latex/titling/titling.sty
+INPUT /usr/share/texmf-dist/tex/latex/titling/titling.sty
+INPUT /usr/share/texmf-dist/tex/latex/titlesec/titlesec.sty
+INPUT /usr/share/texmf-dist/tex/latex/titlesec/titlesec.sty
+INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty
+INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty
+INPUT /usr/share/texmf-dist/tex/generic/babel/txtbabel.def
+INPUT /usr/share/texmf-dist/tex/generic/babel-english/english.ldf
+INPUT /usr/share/texmf-dist/tex/generic/babel-english/english.ldf
+INPUT /usr/share/texmf-dist/tex/generic/babel-english/english.ldf
+INPUT /usr/share/texmf-dist/tex/generic/babel/locale/en/babel-english.tex
+INPUT /usr/share/texmf-dist/tex/generic/babel/locale/en/babel-english.tex
+INPUT /usr/share/texmf-dist/tex/generic/babel/locale/en/babel-english.tex
+INPUT /usr/share/texmf-dist/tex/generic/babel/locale/en/babel-en.ini
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty
+INPUT /usr/share/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty
+INPUT /usr/share/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty
+INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
+INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
+INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty
+INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty
+INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
+INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
+INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty
+INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty
+INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty
+INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty
+INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty
+INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty
+INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
+INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
+INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
+INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
+INPUT /usr/share/texmf-dist/tex/latex/etoolbox/etoolbox.sty
+INPUT /usr/share/texmf-dist/tex/latex/etoolbox/etoolbox.sty
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/pd1enc.def
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/pd1enc.def
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/pd1enc.def
+INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty
+INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/puenc.def
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/puenc.def
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/puenc.def
+INPUT /usr/share/texmf-dist/tex/latex/url/url.sty
+INPUT /usr/share/texmf-dist/tex/latex/url/url.sty
+INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty
+INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty
+INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
+INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
+INPUT /usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/hpdftex.def
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/hpdftex.def
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/hpdftex.def
+INPUT /usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty
+INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
+INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
+INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
+INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
+INPUT /usr/share/texmf-dist/tex/latex/listings/listings.sty
+INPUT /usr/share/texmf-dist/tex/latex/listings/listings.sty
+INPUT /usr/share/texmf-dist/tex/latex/listings/lstpatch.sty
+INPUT /usr/share/texmf-dist/tex/latex/listings/lstpatch.sty
+INPUT /usr/share/texmf-dist/tex/latex/listings/lstpatch.sty
+INPUT /usr/share/texmf-dist/tex/latex/listings/lstmisc.sty
+INPUT /usr/share/texmf-dist/tex/latex/listings/lstmisc.sty
+INPUT /usr/share/texmf-dist/tex/latex/listings/lstmisc.sty
+INPUT /usr/share/texmf-dist/tex/latex/listings/listings.cfg
+INPUT /usr/share/texmf-dist/tex/latex/listings/listings.cfg
+INPUT /usr/share/texmf-dist/tex/latex/listings/listings.cfg
+INPUT /usr/share/texmf-dist/tex/latex/xcolor/xcolor.sty
+INPUT /usr/share/texmf-dist/tex/latex/xcolor/xcolor.sty
+INPUT /usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg
+INPUT /usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg
+INPUT /usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg
+INPUT /usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def
+INPUT /usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def
+INPUT /usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def
+INPUT /usr/share/texmf-dist/tex/latex/graphics/mathcolor.ltx
+INPUT /usr/share/texmf-dist/tex/latex/graphics/mathcolor.ltx
+INPUT /usr/share/texmf-dist/tex/latex/graphics/mathcolor.ltx
+INPUT /usr/share/texmf-dist/tex/latex/graphics/graphicx.sty
+INPUT /usr/share/texmf-dist/tex/latex/graphics/graphicx.sty
+INPUT /usr/share/texmf-dist/tex/latex/graphics/graphics.sty
+INPUT /usr/share/texmf-dist/tex/latex/graphics/graphics.sty
+INPUT /usr/share/texmf-dist/tex/latex/graphics/trig.sty
+INPUT /usr/share/texmf-dist/tex/latex/graphics/trig.sty
+INPUT /usr/share/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
+INPUT /usr/share/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
+INPUT /usr/share/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
+INPUT /usr/share/texmf-dist/tex/latex/forest/forest.sty
+INPUT /usr/share/texmf-dist/tex/latex/forest/forest.sty
+INPUT /usr/share/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty
+INPUT /usr/share/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty
+INPUT /usr/share/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty
+INPUT /usr/share/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty
+INPUT /usr/share/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
+INPUT /usr/share/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
+INPUT /usr/share/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def
+INPUT /usr/share/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/pgf.revision.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/pgf.revision.tex
+INPUT /usr/share/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty
+INPUT /usr/share/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty
+INPUT /usr/share/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty
+INPUT /usr/share/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty
+INPUT /usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeyslibraryfiltered.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg
+INPUT /usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def
+INPUT /usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def
+INPUT /usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def
+INPUT /usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfint.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex
+INPUT /usr/share/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty
+INPUT /usr/share/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty
+INPUT /usr/share/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty
+INPUT /usr/share/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty
+INPUT /usr/share/texmf-dist/tex/latex/pgf/utilities/pgffor.sty
+INPUT /usr/share/texmf-dist/tex/latex/pgf/utilities/pgffor.sty
+INPUT /usr/share/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty
+INPUT /usr/share/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty
+INPUT /usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex
+INPUT /usr/share/texmf-dist/tex/latex/pgf/math/pgfmath.sty
+INPUT /usr/share/texmf-dist/tex/latex/pgf/math/pgfmath.sty
+INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.geometric.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.geometric.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.geometric.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.geometric.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.misc.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.misc.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.misc.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.misc.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.symbols.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.symbols.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.symbols.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.symbols.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.arrows.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.arrows.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.arrows.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.arrows.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.callouts.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.callouts.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.callouts.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.callouts.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.multipart.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.multipart.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.multipart.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.multipart.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfit.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfit.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarycalc.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarycalc.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryintersections.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryintersections.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryfpu.code.tex
+INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryfpu.code.tex
+INPUT /usr/share/texmf-dist/tex/latex/pgfopts/pgfopts.sty
+INPUT /usr/share/texmf-dist/tex/latex/pgfopts/pgfopts.sty
+INPUT /usr/share/texmf-dist/tex/latex/elocalloc/elocalloc.sty
+INPUT /usr/share/texmf-dist/tex/latex/elocalloc/elocalloc.sty
+INPUT /usr/share/texmf-dist/tex/latex/environ/environ.sty
+INPUT /usr/share/texmf-dist/tex/latex/environ/environ.sty
+INPUT /usr/share/texmf-dist/tex/latex/trimspaces/trimspaces.sty
+INPUT /usr/share/texmf-dist/tex/latex/trimspaces/trimspaces.sty
+INPUT /usr/share/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
+INPUT /usr/share/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
+INPUT /usr/share/texmf-dist/tex/latex/l3kernel/expl3.sty
+INPUT /usr/share/texmf-dist/tex/latex/l3kernel/expl3.sty
+INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
+INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
+INPUT /usr/share/texmf-dist/tex/latex/inlinedef/inlinedef.sty
+INPUT /usr/share/texmf-dist/tex/latex/inlinedef/inlinedef.sty
+INPUT /usr/share/texmf-dist/tex/latex/tikz-qtree/tikz-qtree.sty
+INPUT /usr/share/texmf-dist/tex/latex/tikz-qtree/tikz-qtree.sty
+INPUT /usr/share/texmf-dist/tex/latex/tikz-qtree/pgftree.sty
+INPUT /usr/share/texmf-dist/tex/latex/tikz-qtree/pgftree.sty
+INPUT /usr/share/texmf-dist/tex/latex/tikz-qtree/pgfsubpic.sty
+INPUT /usr/share/texmf-dist/tex/latex/tikz-qtree/pgfsubpic.sty
+INPUT /usr/share/texmf-dist/tex/latex/tikz-qtree/pgfsubpic.tex
+INPUT /usr/share/texmf-dist/tex/latex/tikz-qtree/pgfsubpic.tex
+INPUT /usr/share/texmf-dist/tex/latex/tikz-qtree/pgfsubpic.tex
+INPUT /usr/share/texmf-dist/tex/latex/tikz-qtree/pgftree.tex
+INPUT /usr/share/texmf-dist/tex/latex/tikz-qtree/pgftree.tex
+INPUT /usr/share/texmf-dist/tex/latex/tikz-qtree/pgftree.tex
+INPUT /usr/share/texmf-dist/tex/latex/tikz-qtree/tikz-qtree.tex
+INPUT /usr/share/texmf-dist/tex/latex/tikz-qtree/tikz-qtree.tex
+INPUT /usr/share/texmf-dist/tex/latex/tikz-qtree/tikz-qtree.tex
+INPUT ./writeup.aux
+INPUT ./writeup.aux
+INPUT writeup.aux
+OUTPUT writeup.aux
+INPUT ./writeup.out
+INPUT ./writeup.out
+INPUT writeup.out
+INPUT writeup.out
+OUTPUT writeup.pdf
+INPUT ./writeup.out
+INPUT ./writeup.out
+OUTPUT writeup.out
+INPUT /usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
+INPUT /usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
+INPUT /usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
+INPUT /usr/share/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
+INPUT /usr/share/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
+INPUT /usr/share/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
+INPUT /usr/share/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
+INPUT /usr/share/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
+INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmr17.tfm
+INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmr12.tfm
+INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm
+INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm
+INPUT /var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map
+INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmr17.tfm
+INPUT ./writeup.toc
+INPUT ./writeup.toc
+INPUT writeup.toc
+INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmbx12.tfm
+INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmr8.tfm
+INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmr6.tfm
+INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm
+INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmmi8.tfm
+INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm
+INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm
+INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmsy8.tfm
+INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmsy6.tfm
+OUTPUT writeup.toc
+INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmtt12.tfm
+INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmbx12.tfm
+INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmbxti10.tfm
+INPUT /usr/share/texmf-dist/fonts/tfm/jknappen/ec/tcrm1200.tfm
+INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang1.sty
+INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang1.sty
+INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang1.sty
+INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang1.sty
+INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang1.sty
+INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang1.sty
+INPUT /usr/share/texmf-dist/tex/latex/listings/lstmisc.sty
+INPUT /usr/share/texmf-dist/tex/latex/listings/lstmisc.sty
+INPUT /usr/share/texmf-dist/tex/latex/listings/lstmisc.sty
+INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmtt10.tfm
+INPUT /usr/share/texmf-dist/fonts/enc/dvips/cm-super/cm-super-ts1.enc
+INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmr17.tfm
+INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm
+INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm
+INPUT ../code/proto/AST/ast.c
+INPUT ../code/proto/AST/ast.c
+INPUT ../code/proto/AST/ast.c
+INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmti12.tfm
+INPUT ../code/proto/AST/astg.c
+INPUT ../code/proto/AST/astg.c
+INPUT ../code/proto/AST/astg.c
+INPUT ../code/proto/AST/astg.h
+INPUT ../code/proto/AST/astg.h
+INPUT ../code/proto/AST/astg.h
+INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmr10.tfm
+INPUT writeup.aux
+INPUT ./writeup.out
+INPUT ./writeup.out
+INPUT /usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb
+INPUT /usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmbxti10.pfb
+INPUT /usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb
+INPUT /usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmr12.pfb
+INPUT /usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmr17.pfb
+INPUT /usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmr6.pfb
+INPUT /usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb
+INPUT /usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmti12.pfb
+INPUT /usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmtt10.pfb
+INPUT /usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmtt12.pfb
+INPUT /usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1200.pfb
diff --git a/comp/lucas-standen-NEA/writeup2/writeup.log b/comp/lucas-standen-NEA/writeup2/writeup.log
new file mode 100644
index 0000000..c519293
--- /dev/null
+++ b/comp/lucas-standen-NEA/writeup2/writeup.log
@@ -0,0 +1,809 @@
+This is pdfTeX, Version 3.141592653-2.6-1.40.26 (TeX Live 2024/Arch Linux) (preloaded format=pdflatex 2024.10.1) 14 OCT 2024 12:31
+entering extended mode
+ restricted \write18 enabled.
+ file:line:error style messages enabled.
+ %&-line parsing enabled.
+**writeup.tex
+(./writeup.tex
+LaTeX2e <2023-11-01> patch level 1
+L3 programming layer <2024-02-20>
+(/usr/share/texmf-dist/tex/latex/base/article.cls
+Document Class: article 2023/05/17 v1.4n Standard LaTeX document class
+(/usr/share/texmf-dist/tex/latex/base/size12.clo
+File: size12.clo 2023/05/17 v1.4n Standard LaTeX file (size option)
+)
+\c@part=\count188
+\c@section=\count189
+\c@subsection=\count190
+\c@subsubsection=\count191
+\c@paragraph=\count192
+\c@subparagraph=\count193
+\c@figure=\count194
+\c@table=\count195
+\abovecaptionskip=\skip48
+\belowcaptionskip=\skip49
+\bibindent=\dimen140
+) (/usr/share/texmf-dist/tex/latex/geometry/geometry.sty
+Package: geometry 2020/01/02 v5.9 Page Geometry
+ (/usr/share/texmf-dist/tex/latex/graphics/keyval.sty
+Package: keyval 2022/05/29 v1.15 key=value parser (DPC)
+\KV@toks@=\toks17
+) (/usr/share/texmf-dist/tex/generic/iftex/ifvtex.sty
+Package: ifvtex 2019/10/25 v1.7 ifvtex legacy package. Use iftex instead.
+ (/usr/share/texmf-dist/tex/generic/iftex/iftex.sty
+Package: iftex 2022/02/03 v1.0f TeX engine tests
+))
+\Gm@cnth=\count196
+\Gm@cntv=\count197
+\c@Gm@tempcnt=\count198
+\Gm@bindingoffset=\dimen141
+\Gm@wd@mp=\dimen142
+\Gm@odd@mp=\dimen143
+\Gm@even@mp=\dimen144
+\Gm@layoutwidth=\dimen145
+\Gm@layoutheight=\dimen146
+\Gm@layouthoffset=\dimen147
+\Gm@layoutvoffset=\dimen148
+\Gm@dimlist=\toks18
+) (/usr/share/texmf-dist/tex/latex/titling/titling.sty
+Package: titling 2009/09/04 v2.1d maketitle typesetting
+\thanksmarkwidth=\skip50
+\thanksmargin=\skip51
+\droptitle=\skip52
+) (/usr/share/texmf-dist/tex/latex/titlesec/titlesec.sty
+Package: titlesec 2023/10/27 v2.16 Sectioning titles
+\ttl@box=\box51
+\beforetitleunit=\skip53
+\aftertitleunit=\skip54
+\ttl@plus=\dimen149
+\ttl@minus=\dimen150
+\ttl@toksa=\toks19
+\titlewidth=\dimen151
+\titlewidthlast=\dimen152
+\titlewidthfirst=\dimen153
+) (/usr/share/texmf-dist/tex/generic/babel/babel.sty
+Package: babel 2024/02/07 v24.2 The Babel package
+\babel@savecnt=\count199
+\U@D=\dimen154
+\l@unhyphenated=\language5
+ (/usr/share/texmf-dist/tex/generic/babel/txtbabel.def)
+\bbl@readstream=\read2
+\bbl@dirlevel=\count266
+ (/usr/share/texmf-dist/tex/generic/babel-english/english.ldf
+Language: english 2017/06/06 v3.3r English support from the babel system
+Package babel Info: Hyphen rules for 'british' set to \l@english
+(babel) (\language0). Reported on input line 82.
+Package babel Info: Hyphen rules for 'UKenglish' set to \l@english
+(babel) (\language0). Reported on input line 83.
+Package babel Info: Hyphen rules for 'canadian' set to \l@english
+(babel) (\language0). Reported on input line 102.
+Package babel Info: Hyphen rules for 'australian' set to \l@english
+(babel) (\language0). Reported on input line 105.
+Package babel Info: Hyphen rules for 'newzealand' set to \l@english
+(babel) (\language0). Reported on input line 108.
+)) (/usr/share/texmf-dist/tex/generic/babel/locale/en/babel-english.tex
+Package babel Info: Importing font and identification data for english
+(babel) from babel-en.ini. Reported on input line 11.
+) (/usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty
+Package: hyperref 2024-01-20 v7.01h Hypertext links for LaTeX
+ (/usr/share/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty
+Package: kvsetkeys 2022-10-05 v1.19 Key value parser (HO)
+) (/usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
+Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO)
+) (/usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty
+Package: pdfescape 2019/12/09 v1.15 Implements pdfTeX's escape features (HO)
+ (/usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
+Package: ltxcmds 2023-12-04 v1.26 LaTeX kernel commands for general use (HO)
+) (/usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
+Package: pdftexcmds 2020-06-27 v0.33 Utility functions of pdfTeX for LuaTeX (HO)
+ (/usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
+Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO)
+)
+Package pdftexcmds Info: \pdf@primitive is available.
+Package pdftexcmds Info: \pdf@ifprimitive is available.
+Package pdftexcmds Info: \pdfdraftmode found.
+)) (/usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty
+Package: hycolor 2020-01-27 v1.10 Color options for hyperref/bookmark (HO)
+) (/usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty
+Package: auxhook 2019-12-17 v1.6 Hooks for auxiliary files (HO)
+) (/usr/share/texmf-dist/tex/latex/hyperref/nameref.sty
+Package: nameref 2023-11-26 v2.56 Cross-referencing by name of section
+ (/usr/share/texmf-dist/tex/latex/refcount/refcount.sty
+Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO)
+) (/usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
+Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO)
+ (/usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
+Package: kvoptions 2022-06-15 v3.15 Key value format for package options (HO)
+))
+\c@section@level=\count267
+) (/usr/share/texmf-dist/tex/latex/etoolbox/etoolbox.sty
+Package: etoolbox 2020/10/05 v2.5k e-TeX tools for LaTeX (JAW)
+\etb@tempcnta=\count268
+)
+\@linkdim=\dimen155
+\Hy@linkcounter=\count269
+\Hy@pagecounter=\count270
+ (/usr/share/texmf-dist/tex/latex/hyperref/pd1enc.def
+File: pd1enc.def 2024-01-20 v7.01h Hyperref: PDFDocEncoding definition (HO)
+Now handling font encoding PD1 ...
+... no UTF-8 mapping file for font encoding PD1
+) (/usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty
+Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO)
+)
+\Hy@SavedSpaceFactor=\count271
+ (/usr/share/texmf-dist/tex/latex/hyperref/puenc.def
+File: puenc.def 2024-01-20 v7.01h Hyperref: PDF Unicode definition (HO)
+Now handling font encoding PU ...
+... no UTF-8 mapping file for font encoding PU
+)
+Package hyperref Info: Hyper figures OFF on input line 4179.
+Package hyperref Info: Link nesting OFF on input line 4184.
+Package hyperref Info: Hyper index ON on input line 4187.
+Package hyperref Info: Plain pages OFF on input line 4194.
+Package hyperref Info: Backreferencing OFF on input line 4199.
+Package hyperref Info: Implicit mode ON; LaTeX internals redefined.
+Package hyperref Info: Bookmarks ON on input line 4446.
+\c@Hy@tempcnt=\count272
+ (/usr/share/texmf-dist/tex/latex/url/url.sty
+\Urlmuskip=\muskip16
+Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc.
+)
+LaTeX Info: Redefining \url on input line 4784.
+\XeTeXLinkMargin=\dimen156
+ (/usr/share/texmf-dist/tex/generic/bitset/bitset.sty
+Package: bitset 2019/12/09 v1.3 Handle bit-vector datatype (HO)
+ (/usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
+Package: bigintcalc 2019/12/15 v1.5 Expandable calculations on big integers (HO)
+))
+\Fld@menulength=\count273
+\Field@Width=\dimen157
+\Fld@charsize=\dimen158
+Package hyperref Info: Hyper figures OFF on input line 6063.
+Package hyperref Info: Link nesting OFF on input line 6068.
+Package hyperref Info: Hyper index ON on input line 6071.
+Package hyperref Info: backreferencing OFF on input line 6078.
+Package hyperref Info: Link coloring OFF on input line 6083.
+Package hyperref Info: Link coloring with OCG OFF on input line 6088.
+Package hyperref Info: PDF/A mode OFF on input line 6093.
+ (/usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty
+Package: atbegshi-ltx 2021/01/10 v1.0c Emulation of the original atbegshi
+package with kernel methods
+)
+\Hy@abspage=\count274
+\c@Item=\count275
+\c@Hfootnote=\count276
+)
+Package hyperref Info: Driver (autodetected): hpdftex.
+ (/usr/share/texmf-dist/tex/latex/hyperref/hpdftex.def
+File: hpdftex.def 2024-01-20 v7.01h Hyperref driver for pdfTeX
+ (/usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty
+Package: atveryend-ltx 2020/08/19 v1.0a Emulation of the original atveryend package
+with kernel methods
+)
+\Fld@listcount=\count277
+\c@bookmark@seq@number=\count278
+ (/usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
+Package: rerunfilecheck 2022-07-10 v1.10 Rerun checks for auxiliary files (HO)
+
+(/usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
+Package: uniquecounter 2019/12/15 v1.4 Provide unlimited unique counter (HO)
+)
+Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 285.
+)
+\Hy@SectionHShift=\skip55
+) (/usr/share/texmf-dist/tex/latex/listings/listings.sty
+\lst@mode=\count279
+\lst@gtempboxa=\box52
+\lst@token=\toks20
+\lst@length=\count280
+\lst@currlwidth=\dimen159
+\lst@column=\count281
+\lst@pos=\count282
+\lst@lostspace=\dimen160
+\lst@width=\dimen161
+\lst@newlines=\count283
+\lst@lineno=\count284
+\lst@maxwidth=\dimen162
+ (/usr/share/texmf-dist/tex/latex/listings/lstpatch.sty
+File: lstpatch.sty 2024/02/21 1.10 (Carsten Heinz)
+) (/usr/share/texmf-dist/tex/latex/listings/lstmisc.sty
+File: lstmisc.sty 2024/02/21 1.10 (Carsten Heinz)
+\c@lstnumber=\count285
+\lst@skipnumbers=\count286
+\lst@framebox=\box53
+) (/usr/share/texmf-dist/tex/latex/listings/listings.cfg
+File: listings.cfg 2024/02/21 1.10 listings configuration
+))
+Package: listings 2024/02/21 1.10 (Carsten Heinz)
+ (/usr/share/texmf-dist/tex/latex/xcolor/xcolor.sty
+Package: xcolor 2023/11/15 v3.01 LaTeX color extensions (UK)
+ (/usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg
+File: color.cfg 2016/01/02 v1.6 sample color configuration
+)
+Package xcolor Info: Driver file: pdftex.def on input line 274.
+ (/usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def
+File: pdftex.def 2022/09/22 v1.2b Graphics/color driver for pdftex
+) (/usr/share/texmf-dist/tex/latex/graphics/mathcolor.ltx)
+Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1350.
+Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1354.
+Package xcolor Info: Model `RGB' extended on input line 1366.
+Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1368.
+Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1369.
+Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1370.
+Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1371.
+Package xcolor Info: Model `Gray' substituted by `gray' on input line 1372.
+Package xcolor Info: Model `wave' substituted by `hsb' on input line 1373.
+) (/usr/share/texmf-dist/tex/latex/graphics/graphicx.sty
+Package: graphicx 2021/09/16 v1.2d Enhanced LaTeX Graphics (DPC,SPQR)
+ (/usr/share/texmf-dist/tex/latex/graphics/graphics.sty
+Package: graphics 2022/03/10 v1.4e Standard LaTeX Graphics (DPC,SPQR)
+ (/usr/share/texmf-dist/tex/latex/graphics/trig.sty
+Package: trig 2021/08/11 v1.11 sin cos tan (DPC)
+) (/usr/share/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
+File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration
+)
+Package graphics Info: Driver file: pdftex.def on input line 107.
+)
+\Gin@req@height=\dimen163
+\Gin@req@width=\dimen164
+) (/usr/share/texmf-dist/tex/latex/forest/forest.sty
+Package: forest 2017/07/14 v2.1.5 Drawing (linguistic) trees
+ (/usr/share/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty (/usr/share/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty (/usr/share/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty (/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex
+\pgfutil@everybye=\toks21
+\pgfutil@tempdima=\dimen165
+\pgfutil@tempdimb=\dimen166
+) (/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def
+\pgfutil@abb=\box54
+) (/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex (/usr/share/texmf-dist/tex/generic/pgf/pgf.revision.tex)
+Package: pgfrcs 2023-01-15 v3.1.10 (3.1.10)
+))
+Package: pgf 2023-01-15 v3.1.10 (3.1.10)
+ (/usr/share/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty (/usr/share/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty (/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex
+Package: pgfsys 2023-01-15 v3.1.10 (3.1.10)
+ (/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex
+\pgfkeys@pathtoks=\toks22
+\pgfkeys@temptoks=\toks23
+ (/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeyslibraryfiltered.code.tex
+\pgfkeys@tmptoks=\toks24
+))
+\pgf@x=\dimen167
+\pgf@y=\dimen168
+\pgf@xa=\dimen169
+\pgf@ya=\dimen170
+\pgf@xb=\dimen171
+\pgf@yb=\dimen172
+\pgf@xc=\dimen173
+\pgf@yc=\dimen174
+\pgf@xd=\dimen175
+\pgf@yd=\dimen176
+\w@pgf@writea=\write3
+\r@pgf@reada=\read3
+\c@pgf@counta=\count287
+\c@pgf@countb=\count288
+\c@pgf@countc=\count289
+\c@pgf@countd=\count290
+\t@pgf@toka=\toks25
+\t@pgf@tokb=\toks26
+\t@pgf@tokc=\toks27
+\pgf@sys@id@count=\count291
+ (/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg
+File: pgf.cfg 2023-01-15 v3.1.10 (3.1.10)
+)
+Driver file for pgf: pgfsys-pdftex.def
+ (/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def
+File: pgfsys-pdftex.def 2023-01-15 v3.1.10 (3.1.10)
+ (/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def
+File: pgfsys-common-pdf.def 2023-01-15 v3.1.10 (3.1.10)
+))) (/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex
+File: pgfsyssoftpath.code.tex 2023-01-15 v3.1.10 (3.1.10)
+\pgfsyssoftpath@smallbuffer@items=\count292
+\pgfsyssoftpath@bigbuffer@items=\count293
+) (/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex
+File: pgfsysprotocol.code.tex 2023-01-15 v3.1.10 (3.1.10)
+)) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex
+Package: pgfcore 2023-01-15 v3.1.10 (3.1.10)
+
+(/usr/share/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex (/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex) (/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex
+\pgfmath@dimen=\dimen177
+\pgfmath@count=\count294
+\pgfmath@box=\box55
+\pgfmath@toks=\toks28
+\pgfmath@stack@operand=\toks29
+\pgfmath@stack@operation=\toks30
+) (/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex) (/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex) (/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code.tex) (/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.code.tex) (/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison.code.tex) (/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.tex) (/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code.tex) (/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex) (/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics.code.tex) (/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex) (/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex
+\c@pgfmathroundto@lastzeros=\count295
+)) (/usr/share/texmf-dist/tex/generic/pgf/math/pgfint.code.tex) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex
+File: pgfcorepoints.code.tex 2023-01-15 v3.1.10 (3.1.10)
+\pgf@picminx=\dimen178
+\pgf@picmaxx=\dimen179
+\pgf@picminy=\dimen180
+\pgf@picmaxy=\dimen181
+\pgf@pathminx=\dimen182
+\pgf@pathmaxx=\dimen183
+\pgf@pathminy=\dimen184
+\pgf@pathmaxy=\dimen185
+\pgf@xx=\dimen186
+\pgf@xy=\dimen187
+\pgf@yx=\dimen188
+\pgf@yy=\dimen189
+\pgf@zx=\dimen190
+\pgf@zy=\dimen191
+) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex
+File: pgfcorepathconstruct.code.tex 2023-01-15 v3.1.10 (3.1.10)
+\pgf@path@lastx=\dimen192
+\pgf@path@lasty=\dimen193
+) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex
+File: pgfcorepathusage.code.tex 2023-01-15 v3.1.10 (3.1.10)
+\pgf@shorten@end@additional=\dimen194
+\pgf@shorten@start@additional=\dimen195
+) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex
+File: pgfcorescopes.code.tex 2023-01-15 v3.1.10 (3.1.10)
+\pgfpic=\box56
+\pgf@hbox=\box57
+\pgf@layerbox@main=\box58
+\pgf@picture@serial@count=\count296
+) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex
+File: pgfcoregraphicstate.code.tex 2023-01-15 v3.1.10 (3.1.10)
+\pgflinewidth=\dimen196
+) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex
+File: pgfcoretransformations.code.tex 2023-01-15 v3.1.10 (3.1.10)
+\pgf@pt@x=\dimen197
+\pgf@pt@y=\dimen198
+\pgf@pt@temp=\dimen199
+) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex
+File: pgfcorequick.code.tex 2023-01-15 v3.1.10 (3.1.10)
+) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex
+File: pgfcoreobjects.code.tex 2023-01-15 v3.1.10 (3.1.10)
+) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex
+File: pgfcorepathprocessing.code.tex 2023-01-15 v3.1.10 (3.1.10)
+) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex
+File: pgfcorearrows.code.tex 2023-01-15 v3.1.10 (3.1.10)
+\pgfarrowsep=\dimen256
+) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex
+File: pgfcoreshade.code.tex 2023-01-15 v3.1.10 (3.1.10)
+\pgf@max=\dimen257
+\pgf@sys@shading@range@num=\count297
+\pgf@shadingcount=\count298
+)
+(/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex
+File: pgfcoreimage.code.tex 2023-01-15 v3.1.10 (3.1.10)
+) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex
+File: pgfcoreexternal.code.tex 2023-01-15 v3.1.10 (3.1.10)
+\pgfexternal@startupbox=\box59
+) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex
+File: pgfcorelayers.code.tex 2023-01-15 v3.1.10 (3.1.10)
+) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex
+File: pgfcoretransparency.code.tex 2023-01-15 v3.1.10 (3.1.10)
+) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex
+File: pgfcorepatterns.code.tex 2023-01-15 v3.1.10 (3.1.10)
+) (/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.code.tex
+File: pgfcorerdf.code.tex 2023-01-15 v3.1.10 (3.1.10)
+))) (/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex
+File: pgfmoduleshapes.code.tex 2023-01-15 v3.1.10 (3.1.10)
+\pgfnodeparttextbox=\box60
+) (/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex
+File: pgfmoduleplot.code.tex 2023-01-15 v3.1.10 (3.1.10)
+) (/usr/share/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty
+Package: pgfcomp-version-0-65 2023-01-15 v3.1.10 (3.1.10)
+\pgf@nodesepstart=\dimen258
+\pgf@nodesepend=\dimen259
+) (/usr/share/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty
+Package: pgfcomp-version-1-18 2023-01-15 v3.1.10 (3.1.10)
+)) (/usr/share/texmf-dist/tex/latex/pgf/utilities/pgffor.sty (/usr/share/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty (/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex)) (/usr/share/texmf-dist/tex/latex/pgf/math/pgfmath.sty (/usr/share/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex)) (/usr/share/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex
+Package: pgffor 2023-01-15 v3.1.10 (3.1.10)
+\pgffor@iter=\dimen260
+\pgffor@skip=\dimen261
+\pgffor@stack=\toks31
+\pgffor@toks=\toks32
+)) (/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex
+Package: tikz 2023-01-15 v3.1.10 (3.1.10)
+ (/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex
+File: pgflibraryplothandlers.code.tex 2023-01-15 v3.1.10 (3.1.10)
+\pgf@plot@mark@count=\count299
+\pgfplotmarksize=\dimen262
+)
+\tikz@lastx=\dimen263
+\tikz@lasty=\dimen264
+\tikz@lastxsaved=\dimen265
+\tikz@lastysaved=\dimen266
+\tikz@lastmovetox=\dimen267
+\tikz@lastmovetoy=\dimen268
+\tikzleveldistance=\dimen269
+\tikzsiblingdistance=\dimen270
+\tikz@figbox=\box61
+\tikz@figbox@bg=\box62
+\tikz@tempbox=\box63
+\tikz@tempbox@bg=\box64
+\tikztreelevel=\count300
+\tikznumberofchildren=\count301
+\tikznumberofcurrentchild=\count302
+\tikz@fig@count=\count303
+ (/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex
+File: pgfmodulematrix.code.tex 2023-01-15 v3.1.10 (3.1.10)
+\pgfmatrixcurrentrow=\count304
+\pgfmatrixcurrentcolumn=\count305
+\pgf@matrix@numberofcolumns=\count306
+)
+\tikz@expandcount=\count307
+ (/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex
+File: tikzlibrarytopaths.code.tex 2023-01-15 v3.1.10 (3.1.10)
+))) (/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.code.tex
+File: tikzlibraryshapes.code.tex 2023-01-15 v3.1.10 (3.1.10)
+ (/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.geometric.code.tex
+File: tikzlibraryshapes.geometric.code.tex 2023-01-15 v3.1.10 (3.1.10)
+ (/usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.geometric.code.tex
+File: pgflibraryshapes.geometric.code.tex 2023-01-15 v3.1.10 (3.1.10)
+)) (/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.misc.code.tex
+File: tikzlibraryshapes.misc.code.tex 2023-01-15 v3.1.10 (3.1.10)
+ (/usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.misc.code.tex
+File: pgflibraryshapes.misc.code.tex 2023-01-15 v3.1.10 (3.1.10)
+))
+(/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.symbols.code.tex
+File: tikzlibraryshapes.symbols.code.tex 2023-01-15 v3.1.10 (3.1.10)
+ (/usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.symbols.code.tex
+File: pgflibraryshapes.symbols.code.tex 2023-01-15 v3.1.10 (3.1.10)
+)) (/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.arrows.code.tex
+File: tikzlibraryshapes.arrows.code.tex 2023-01-15 v3.1.10 (3.1.10)
+ (/usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.arrows.code.tex
+File: pgflibraryshapes.arrows.code.tex 2023-01-15 v3.1.10 (3.1.10)
+)) (/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.callouts.code.tex (/usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.callouts.code.tex)) (/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.multipart.code.tex
+File: tikzlibraryshapes.multipart.code.tex 2023-01-15 v3.1.10 (3.1.10)
+ (/usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.multipart.code.tex
+File: pgflibraryshapes.multipart.code.tex 2023-01-15 v3.1.10 (3.1.10)
+\pgfnodepartlowerbox=\box65
+\pgfnodeparttwobox=\box66
+\pgfnodepartthreebox=\box67
+\pgfnodepartfourbox=\box68
+\pgfnodeparttwentybox=\box69
+\pgfnodepartnineteenbox=\box70
+\pgfnodeparteighteenbox=\box71
+\pgfnodepartseventeenbox=\box72
+\pgfnodepartsixteenbox=\box73
+\pgfnodepartfifteenbox=\box74
+\pgfnodepartfourteenbox=\box75
+\pgfnodepartthirteenbox=\box76
+\pgfnodeparttwelvebox=\box77
+\pgfnodepartelevenbox=\box78
+\pgfnodeparttenbox=\box79
+\pgfnodepartninebox=\box80
+\pgfnodeparteightbox=\box81
+\pgfnodepartsevenbox=\box82
+\pgfnodepartsixbox=\box83
+\pgfnodepartfivebox=\box84
+))) (/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfit.code.tex
+File: tikzlibraryfit.code.tex 2023-01-15 v3.1.10 (3.1.10)
+) (/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarycalc.code.tex
+File: tikzlibrarycalc.code.tex 2023-01-15 v3.1.10 (3.1.10)
+) (/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryintersections.code.tex (/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryfpu.code.tex)
+\pgf@intersect@solutions=\count308
+) (/usr/share/texmf-dist/tex/latex/pgfopts/pgfopts.sty
+Package: pgfopts 2014/07/10 v2.1a LaTeX package options with pgfkeys
+\pgfopts@list@add@a@toks=\toks33
+\pgfopts@list@add@b@toks=\toks34
+) (/usr/share/texmf-dist/tex/latex/elocalloc/elocalloc.sty
+Package: elocalloc 2016/12/15 v0.03 local allocation for LaTeX 2015+ (DPC)
+) (/usr/share/texmf-dist/tex/latex/environ/environ.sty
+Package: environ 2014/05/04 v0.3 A new way to define environments
+ (/usr/share/texmf-dist/tex/latex/trimspaces/trimspaces.sty
+Package: trimspaces 2009/09/17 v1.1 Trim spaces around a token list
+)
+\@envbody=\toks35
+) (/usr/share/texmf-dist/tex/latex/l3packages/xparse/xparse.sty (/usr/share/texmf-dist/tex/latex/l3kernel/expl3.sty
+Package: expl3 2024-02-20 L3 programming layer (loader)
+ (/usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
+File: l3backend-pdftex.def 2024-02-20 L3 backend support: PDF output (pdfTeX)
+\l__color_backend_stack_int=\count309
+\l__pdf_internal_box=\box85
+))
+Package: xparse 2024-02-18 L3 Experimental document command parser
+) (/usr/share/texmf-dist/tex/latex/inlinedef/inlinedef.sty
+Package: inlinedef 2008/07/10 v1.0 Inlined expansions within definitions
+\ID@toks=\toks36
+\ID@count=\count310
+)
+\ID@usercommands=\toks37
+\safeloop@depth=\count311
+\safeRKloop@depth=\count312
+\forest@temp@dimen=\dimen271
+\forest@temp@count=\count313
+\forest@n=\count314
+\forest@temp@global@count=\count315
+\forest@temp@toks=\toks38
+\forest@temparray@M=\count316
+\forest@temparray@N=\count317
+\forest@global@temparray@M=\count318
+\forest@global@temparray@N=\count319
+\forest@isnum@count=\count320
+\forest@isdim@nonintpart=\count321
+\forest@isdim@dimen=\dimen272
+\forest@sort@m=\count322
+\forest@sort@k=\count323
+\forest@sort@p=\count324
+\bracket@content=\toks39
+\bracket@afterthought=\toks40
+\forest@node@maxid=\count325
+\forest@process@left@M=\count326
+\forest@process@left@N=\count327
+\forest@process@right@M=\count328
+\forest@process@right@N=\count329
+\forest@process@saved@M=\count330
+\forest@process@saved@N=\count331
+\forest@process@result@M=\count332
+\forest@process@result@N=\count333
+\forest@process@n=\count334
+\forest@nodewalk@branch@toks=\toks41
+\forest@nodewalk@shortsteps@resolution=\toks42
+\forest@do@dynamics=\toks43
+\forest@box=\box86
+\forest@xg=\dimen273
+\forest@yg=\dimen274
+\forest@xs=\dimen275
+\forest@ys=\dimen276
+\forest@pi@toks=\toks44
+\forest@segment@toks=\toks45
+\forest@PIi@toks=\toks46
+\forest@PIii@toks=\toks47
+\forest@copy@in=\read4
+\forest@copy@out=\write4
+\forest@externalize@max@outer@n=\count335
+\forest@externalize@inner@n=\count336
+) (/usr/share/texmf-dist/tex/latex/tikz-qtree/tikz-qtree.sty (/usr/share/texmf-dist/tex/latex/tikz-qtree/pgftree.sty (/usr/share/texmf-dist/tex/latex/tikz-qtree/pgfsubpic.sty (/usr/share/texmf-dist/tex/latex/tikz-qtree/pgfsubpic.tex
+\pgf@subpicminx=\dimen277
+\pgf@subpicminy=\dimen278
+\pgf@subpicmaxx=\dimen279
+\pgf@subpicmaxy=\dimen280
+)) (/usr/share/texmf-dist/tex/latex/tikz-qtree/pgftree.tex
+\levelsep=\dimen281
+\subtreesep=\dimen282
+\smuggle@levelsep=\dimen283
+\smuggle@subtreesep=\dimen284
+\this@levelsep=\dimen285
+\this@subtreesep=\dimen286
+\pgftree@childx=\dimen287
+\pgftree@savechildx=\dimen288
+\pgftree@childy=\dimen289
+\pgftree@savechildy=\dimen290
+\pgftree@childi=\count337
+\pgftree@savechildi=\count338
+\pgftree@level=\count339
+\pgftree@depth=\dimen291
+\pgf@subpic@hbox@children=\box87
+\pgf@subpic@minx@children=\dimen292
+\pgf@subpic@miny@children=\dimen293
+\pgf@subpic@maxx@children=\dimen294
+\pgf@subpic@maxy@children=\dimen295
+\pgftree@lastchildx=\dimen296
+\pgftree@lastchildy=\dimen297
+)) (/usr/share/texmf-dist/tex/latex/tikz-qtree/tikz-qtree.tex
+\@result=\toks48
+\child@list=\toks49
+\root@node=\toks50
+))
+
+Package geometry Warning: Over-specification in `h'-direction.
+ `width' (483.69684pt) is ignored.
+
+(./writeup.aux)
+\openout1 = `writeup.aux'.
+
+LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 55.
+LaTeX Font Info: ... okay on input line 55.
+LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 55.
+LaTeX Font Info: ... okay on input line 55.
+LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 55.
+LaTeX Font Info: ... okay on input line 55.
+LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 55.
+LaTeX Font Info: ... okay on input line 55.
+LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 55.
+LaTeX Font Info: ... okay on input line 55.
+LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 55.
+LaTeX Font Info: ... okay on input line 55.
+LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 55.
+LaTeX Font Info: ... okay on input line 55.
+LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 55.
+LaTeX Font Info: ... okay on input line 55.
+LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 55.
+LaTeX Font Info: ... okay on input line 55.
+
+*geometry* driver: auto-detecting
+*geometry* detected driver: pdftex
+*geometry* verbose mode - [ preamble ] result:
+* driver: pdftex
+* paper: a4paper
+* layout: <same size as paper>
+* layoutoffset:(h,v)=(0.0pt,0.0pt)
+* modes:
+* h-part:(L,W,R)=(56.9055pt, 483.69687pt, 56.9055pt)
+* v-part:(T,H,B)=(45.52438pt, 731.23582pt, 68.28664pt)
+* \paperwidth=597.50787pt
+* \paperheight=845.04684pt
+* \textwidth=483.69687pt
+* \textheight=731.23582pt
+* \oddsidemargin=-15.36449pt
+* \evensidemargin=-15.36449pt
+* \topmargin=-63.7456pt
+* \headheight=12.0pt
+* \headsep=25.0pt
+* \topskip=12.0pt
+* \footskip=30.0pt
+* \marginparwidth=35.0pt
+* \marginparsep=10.0pt
+* \columnsep=10.0pt
+* \skip\footins=10.8pt plus 4.0pt minus 2.0pt
+* \hoffset=0.0pt
+* \voffset=0.0pt
+* \mag=1000
+* \@twocolumnfalse
+* \@twosidefalse
+* \@mparswitchfalse
+* \@reversemarginfalse
+* (1in=72.27pt=25.4mm, 1cm=28.453pt)
+
+Package hyperref Info: Link coloring OFF on input line 55.
+(./writeup.out) (./writeup.out)
+\@outlinefile=\write5
+\openout5 = `writeup.out'.
+
+\c@lstlisting=\count340
+ (/usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
+[Loading MPS to PDF converter (version 2006.09.02).]
+\scratchcounter=\count341
+\scratchdimen=\dimen298
+\scratchbox=\box88
+\nofMPsegments=\count342
+\nofMParguments=\count343
+\everyMPshowfont=\toks51
+\MPscratchCnt=\count344
+\MPscratchDim=\dimen299
+\MPnumerator=\count345
+\makeMPintoPDFobject=\count346
+\everyMPtoPDFconversion=\toks52
+) (/usr/share/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
+Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf
+Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 485.
+ (/usr/share/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
+File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Live
+))
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <14.4> on input line 57.
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <7> on input line 57.
+ [1
+
+{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./writeup.toc
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <12> on input line 4.
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <8> on input line 4.
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <6> on input line 4.
+)
+\tf@toc=\write6
+\openout6 = `writeup.toc'.
+
+ [2] [3] [4] [5]
+Overfull \hbox (8.48462pt too wide) in paragraph at lines 248--249
+[]\OT1/cmr/m/n/12 Speed, read-abil-ity, de-bug-ging ease
+ []
+
+
+Overfull \hbox (2.0985pt too wide) in paragraph at lines 250--253
+[]\OT1/cmr/m/n/12 IDE in-te-gra-tion (things like tab com-
+ []
+
+
+Overfull \hbox (0.31256pt too wide) in paragraph at lines 263--264
+[]\OT1/cmr/m/n/12 I like a
+ []
+
+
+Overfull \hbox (2.0225pt too wide) in paragraph at lines 268--271
+[]\OT1/cmr/m/n/12 I try to use as lit-tle lan-guages
+ []
+
+
+Overfull \hbox (17.51675pt too wide) in paragraph at lines 272--275
+[]\OT1/cmr/m/n/12 I think
+ []
+
+
+Overfull \hbox (26.90446pt too wide) in paragraph at lines 276--277
+[]
+ []
+
+[6]
+Underfull \hbox (badness 10000) in paragraph at lines 320--325
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 326--328
+
+ []
+
+(/usr/share/texmf-dist/tex/latex/listings/lstlang1.sty
+File: lstlang1.sty 2024/02/21 1.10 listings language file
+) (/usr/share/texmf-dist/tex/latex/listings/lstlang1.sty
+File: lstlang1.sty 2024/02/21 1.10 listings language file
+) (/usr/share/texmf-dist/tex/latex/listings/lstmisc.sty
+File: lstmisc.sty 2024/02/21 1.10 (Carsten Heinz)
+)
+Package hyperref Info: bookmark level for unknown lstlisting defaults to 0 on input line 357.
+ [7{/usr/share/texmf-dist/fonts/enc/dvips/cm-super/cm-super-ts1.enc}]
+Underfull \hbox (badness 10000) in paragraph at lines 398--400
+
+ []
+
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <17.28> on input line 401.
+
+Underfull \hbox (badness 10000) in paragraph at lines 401--403
+
+ []
+
+[8] (../code/proto/AST/ast.c [9] [10]) [11]
+Underfull \hbox (badness 10000) in paragraph at lines 461--463
+
+ []
+
+(../code/proto/AST/astg.c)
+Underfull \hbox (badness 10000) in paragraph at lines 465--467
+
+ []
+
+(../code/proto/AST/astg.h [12])
+Underfull \hbox (badness 10000) in paragraph at lines 469--471
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 472--480
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 481--485
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 486--490
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 497--499
+
+ []
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 500--503
+
+ []
+
+LaTeX Font Info: Font shape `OT1/cmtt/bx/n' in size <12> not available
+(Font) Font shape `OT1/cmtt/m/n' tried instead on input line 505.
+[13] [14] (./writeup.aux)
+ ***********
+LaTeX2e <2023-11-01> patch level 1
+L3 programming layer <2024-02-20>
+ ***********
+Package rerunfilecheck Info: File `writeup.out' has not changed.
+(rerunfilecheck) Checksum: E70A9C8F057C1547035BAC5D30A3014A;4997.
+ )
+Here is how much of TeX's memory you used:
+ 33295 strings out of 476076
+ 715046 string characters out of 5793775
+ 2238187 words of memory out of 5000000
+ 54687 multiletter control sequences out of 15000+600000
+ 565524 words of font info for 61 fonts, out of 8000000 for 9000
+ 14 hyphenation exceptions out of 8191
+ 98i,9n,101p,1606b,2286s stack positions out of 10000i,1000n,20000p,200000b,200000s
+</usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb></usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmbxti10.pfb></usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb></usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmr12.pfb></usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmr17.pfb></usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmr6.pfb></usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb></usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmti12.pfb></usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmtt10.pfb></usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmtt12.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1200.pfb>
+Output written on writeup.pdf (14 pages, 186326 bytes).
+PDF statistics:
+ 566 PDF objects out of 1000 (max. 8388607)
+ 522 compressed objects within 6 object streams
+ 271 named destinations out of 1000 (max. 500000)
+ 229 words of extra memory for PDF output out of 10000 (max. 10000000)
+
diff --git a/comp/lucas-standen-NEA/writeup2/writeup.out b/comp/lucas-standen-NEA/writeup2/writeup.out
new file mode 100644
index 0000000..f14fad4
--- /dev/null
+++ b/comp/lucas-standen-NEA/writeup2/writeup.out
@@ -0,0 +1,27 @@
+\BOOKMARK [1][-]{section.1}{\376\377\000A\000\040\000b\000r\000e\000i\000f\000\040\000h\000e\000a\000d\000\040\000n\000o\000t\000e\000\040\000a\000n\000d\000\040\000i\000n\000t\000r\000o\000d\000u\000c\000t\000i\000o\000n}{}% 1
+\BOOKMARK [1][-]{section.2}{\376\377\000A\000n\000a\000l\000y\000s\000i\000s}{}% 2
+\BOOKMARK [2][-]{subsection.2.1}{\376\377\000T\000h\000e\000\040\000c\000u\000r\000r\000e\000n\000t\000\040\000p\000r\000o\000b\000l\000e\000m}{section.2}% 3
+\BOOKMARK [2][-]{subsection.2.2}{\376\377\000A\000\040\000s\000o\000l\000u\000t\000i\000o\000n}{section.2}% 4
+\BOOKMARK [2][-]{subsection.2.3}{\376\377\000W\000h\000a\000t\000\040\000i\000s\000\040\000a\000\040\000p\000r\000o\000g\000r\000a\000m\000m\000i\000n\000g\000\040\000l\000a\000n\000g\000u\000a\000g\000e}{section.2}% 5
+\BOOKMARK [3][-]{subsubsection.2.3.1}{\376\377\000A\000\040\000v\000e\000r\000y\000\040\000s\000i\000m\000p\000l\000e\000\040\000e\000x\000p\000l\000a\000n\000a\000t\000i\000o\000n}{subsection.2.3}% 6
+\BOOKMARK [3][-]{subsubsection.2.3.2}{\376\377\000W\000h\000y\000\040\000a\000r\000e\000\040\000t\000h\000e\000r\000e\000\040\000s\000o\000\040\000m\000a\000n\000y}{subsection.2.3}% 7
+\BOOKMARK [2][-]{subsection.2.4}{\376\377\000R\000e\000s\000e\000a\000r\000c\000h\000i\000n\000g\000\040\000a\000n\000d\000\040\000g\000e\000t\000t\000i\000n\000g\000\040\000a\000\040\000s\000c\000o\000p\000e\000\040\000o\000f\000\040\000t\000h\000e\000\040\000p\000r\000o\000j\000e\000c\000t}{section.2}% 8
+\BOOKMARK [3][-]{subsubsection.2.4.1}{\376\377\000E\000x\000a\000m\000p\000l\000e\000s\000\040\000o\000f\000\040\000o\000l\000d\000e\000r\000\040\000s\000i\000m\000i\000l\000a\000r\000\040\000p\000r\000o\000j\000e\000c\000t\000s}{subsection.2.4}% 9
+\BOOKMARK [3][-]{subsubsection.2.4.2}{\376\377\000E\000x\000a\000m\000p\000l\000e\000s\000\040\000o\000f\000\040\000n\000e\000w\000e\000r\000\040\000s\000i\000m\000i\000l\000a\000r\000\040\000p\000r\000o\000j\000e\000c\000t\000s}{subsection.2.4}% 10
+\BOOKMARK [3][-]{subsubsection.2.4.3}{\376\377\000W\000h\000a\000t\000\040\000s\000h\000o\000u\000l\000d\000\040\000b\000e\000\040\000t\000a\000k\000e\000n\000\040\000a\000w\000a\000y\000\040\000f\000r\000o\000m\000\040\000t\000h\000e\000s\000e\000\040\000l\000a\000n\000g\000u\000a\000g\000e\000s}{subsection.2.4}% 11
+\BOOKMARK [2][-]{subsection.2.5}{\376\377\000C\000l\000i\000e\000n\000t\000s}{section.2}% 12
+\BOOKMARK [3][-]{subsubsection.2.5.1}{\376\377\000C\000l\000i\000e\000n\000t\000\040\0001\000:\000\040\000A\000m\000y\000\040\000C}{subsection.2.5}% 13
+\BOOKMARK [3][-]{subsubsection.2.5.2}{\376\377\000C\000l\000i\000e\000n\000t\000\040\0002\000:\000\040\000R\000a\000y\000n\000\040\000M}{subsection.2.5}% 14
+\BOOKMARK [3][-]{subsubsection.2.5.3}{\376\377\000C\000l\000i\000e\000n\000t\000\040\0003\000:\000\040\000M\000y\000s\000e\000l\000f}{subsection.2.5}% 15
+\BOOKMARK [2][-]{subsection.2.6}{\376\377\000Q\000u\000e\000s\000t\000i\000o\000n\000n\000a\000i\000r\000e\000s}{section.2}% 16
+\BOOKMARK [3][-]{subsubsection.2.6.1}{\376\377\000A\000m\000y\000\040\000C\000,\000\040\000i\000n\000i\000t\000i\000a\000l\000\040\000i\000d\000e\000a\000s}{subsection.2.6}% 17
+\BOOKMARK [3][-]{subsubsection.2.6.2}{\376\377\000N\000o\000t\000e\000s\000\040\000f\000r\000o\000m\000\040\000q\000u\000e\000s\000t\000i\000o\000n\000n\000a\000r\000e\000\040\0001}{subsection.2.6}% 18
+\BOOKMARK [2][-]{subsection.2.7}{\376\377\000T\000h\000e\000\040\000f\000i\000r\000s\000t\000\040\000e\000l\000e\000m\000e\000n\000t\000s\000\040\000o\000f\000\040\000t\000h\000e\000\040\000p\000r\000o\000j\000e\000c\000t}{section.2}% 19
+\BOOKMARK [1][-]{section.3}{\376\377\000M\000o\000d\000e\000l\000l\000i\000n\000g}{}% 20
+\BOOKMARK [2][-]{subsection.3.1}{\376\377\000L\000i\000n\000k\000e\000d\000\040\000l\000i\000s\000t\000s}{section.3}% 21
+\BOOKMARK [2][-]{subsection.3.2}{\376\377\000D\000i\000c\000t\000i\000o\000n\000a\000r\000i\000e\000s}{section.3}% 22
+\BOOKMARK [2][-]{subsection.3.3}{\376\377\000P\000r\000o\000t\000o\000t\000y\000p\000i\000n\000g\000\040\000h\000a\000r\000d\000e\000r\000\040\000f\000e\000a\000t\000u\000r\000e\000s}{section.3}% 23
+\BOOKMARK [3][-]{subsubsection.3.3.1}{\376\377\000A\000b\000s\000t\000r\000a\000c\000t\000\040\000s\000y\000n\000t\000a\000x\000\040\000t\000r\000e\000e\000s\000\040\000\050\000A\000S\000T\000'\000s\000\051\000\040\000t\000h\000e\000o\000r\000y}{subsection.3.3}% 24
+\BOOKMARK [3][-]{subsubsection.3.3.2}{\376\377\000A\000b\000s\000t\000r\000a\000c\000t\000\040\000s\000y\000n\000t\000a\000x\000\040\000t\000r\000e\000e\000s\000\040\000\050\000A\000S\000T\000'\000s\000\051\000\040\000p\000r\000a\000c\000t\000i\000c\000a\000l}{subsection.3.3}% 25
+\BOOKMARK [2][-]{subsection.3.4}{\376\377\000F\000e\000e\000d\000b\000a\000c\000k}{section.3}% 26
+\BOOKMARK [2][-]{subsection.3.5}{\376\377\000M\000i\000x\000i\000n\000g\000\040\000l\000i\000n\000k\000e\000d\000\040\000l\000i\000s\000t\000s\000\040\000a\000n\000d\000\040\000A\000S\000T\000'\000s}{section.3}% 27
diff --git a/comp/lucas-standen-NEA/writeup2/writeup.synctex.gz b/comp/lucas-standen-NEA/writeup2/writeup.synctex.gz
new file mode 100644
index 0000000..90a6a89
--- /dev/null
+++ b/comp/lucas-standen-NEA/writeup2/writeup.synctex.gz
Binary files differ
diff --git a/comp/lucas-standen-NEA/writeup2/writeup.tex b/comp/lucas-standen-NEA/writeup2/writeup.tex
new file mode 100644
index 0000000..7427570
--- /dev/null
+++ b/comp/lucas-standen-NEA/writeup2/writeup.tex
@@ -0,0 +1,523 @@
+\documentclass[a4paper,12pt]{article}
+
+\usepackage{geometry}
+\usepackage{titling}
+\usepackage{titlesec}
+\usepackage[english]{babel}
+\usepackage[hidelinks]{hyperref}
+\usepackage{listings}
+\usepackage{xcolor}
+\usepackage{graphicx}
+\usepackage{forest}
+\usepackage{tikz-qtree}
+
+\definecolor{codegreen}{rgb}{0,0.6,0}
+\definecolor{codegray}{rgb}{0.5,0.5,0.5}
+\definecolor{codepurple}{rgb}{0.58,0,0.82}
+\definecolor{backcolour}{rgb}{0.95,0.95,0.92}
+
+\lstdefinestyle{mystyle}{
+ backgroundcolor=\color{backcolour},
+ commentstyle=\color{codegreen},
+ keywordstyle=\color{magenta},
+ numberstyle=\tiny\color{codegray},
+ stringstyle=\color{codepurple},
+ basicstyle=\ttfamily\footnotesize,
+ breakatwhitespace=false,
+ breaklines=true,
+ captionpos=b,
+ keepspaces=true,
+ numbers=left,
+ numbersep=5pt,
+ showspaces=false,
+ showstringspaces=false,
+ showtabs=false,
+ tabsize=8
+}
+
+\lstset{style=mystyle}
+
+\titleformat{\section}
+{\Huge}
+{}
+{0em}
+{}[\titlerule]
+\geometry{
+ a4paper,
+ total={170mm,257mm},
+ left=20mm,
+ right=20mm,
+}
+
+\author{Lucas Standen}
+\title{The solution to bad code}
+
+\begin{document}
+\maketitle
+\newpage
+\tableofcontents
+\newpage
+
+{\setlength{\parindent}{0cm}
+
+\section{A breif head note and introduction}
+This document has been written for the use within AQA computer science
+Alevel coursework. It is published under the MiT license, which I hope
+will make it of use to someone other than myself some day on the in's
+and out's of simpler compiler design and programming languages as a
+whole.
+
+This is the second version of this document, it was writen in GNU
+roff before, however I decided to move over to latex for the
+more moddern features (notably image support). The latex source for
+this document is also avalible along with all referenced code at
+\url{https://github.com/standenboy/school}
+
+Any questions relating to this document should be sent to
+\href{mailto:thing1@seacrossedlovers.xyz}{thing1@seacrossedlovers.xyz}
+
+\section{Analysis}
+\subsection{The current problem}
+For general small and simple projects, I write in C. However this leads to
+hours of debugging due to segfaults, and memory leaks. Due to the languages
+manual memory management the programmer is required to know so much
+information about the hardware they write for, and the second anything goes
+wrong, it is vague on how to fix things.
+
+\textbf{I need a language that stops me from shooting myself in the foot}
+
+C has been standard for many decades now and its age is showing, it lacks
+many modern features like OOP, or higher level functional abstractions,
+that have become common in modern years due to there helpfulness. This is
+not to fault C's achievements either, the language is my personal choice for
+most projects for a reason, it's fast and powerful; any solution I make
+should not cut that away.
+
+\subsection{A solution}
+
+\textbf{\textit{Zippy LANG}}
+
+A next generation language, for general use. Designed for keeping code simple,
+neat and readable. It will be similar to functional languages, known for
+there strict ability to keep code safe and practical. The language should
+be compiled like C/C++, Haskell and Rust for fast runtime speeds
+
+The goal of Zippy is to make codding easier, while not limiting projects; to
+achive this the compiler will most likely want to use some form of middle man
+language to achieve compatibility with more libraries.
+
+\subsection{What is a programming language}
+\subsubsection{A very simple explanation}
+At its lowest definition a PL is a set of specific words, that when given
+to a computer in the right order have a reproducible behaviour. A more human
+way of saying that, would be "It's how we control computers".
+\subsubsection{Why are there so many}
+When someone is looking at code it can often be seen as just that, however
+there are hundreds of languages that all take the idea of "code" in very
+different ways. Some are designed for specific hardware, some are designed
+for making general use programs while others are highly specialized.
+It is important to see "code", as more than just one overarching term and
+instead see where the code is being used, and evaluate it from that.
+
+\subsection{Researching and getting a scope of the project}
+Before I start to design a language i should first find examples of others
+and find what i want my language to be like. I'd like my language to feel modern
+so i should take inspiration from what other modern languages do, however on the
+backed i want my language to be stable and fast, for that i should look at
+older projects.
+
+\subsubsection{Examples of older similar projects}
+\begin{description}
+ \item[Python]
+ Python is a high level OOP language that was designed in
+ 1991. It was made to make programming easy while still being able
+ to use some of C's functions. Although it has become standard for
+ many use cases, it is slow and inefficient, and very bloated.
+
+ \url{https://www.python.org/}
+
+ Zippy should take pythons high level abstractions, as they make
+ programming very easy and it should try and take notes from its
+ libraries as they are mostly well written,
+ and well documented.
+ \item[Lisp]
+ Lisp is the second ever programming language, developed at MiT,
+ and it is the first functional language, creating many common features
+ like higher order functions, recursion, and garbage collection. It is
+ generally not used any more as it feels old compared to other functional
+ languages, like Ocaml or Haskell.
+
+ \url{https://lisp-lang.org/}
+
+ Zippy should try to take alot from the syntax of lisp, () make
+ it easy to see what parts of code will effect what, and make
+ things easy to tokenize.
+ \item[Perl]
+ Perl is scripting language designed for use in linux, when bash is
+ too slow, or not suited for the job. Perl is often described as the glue
+ of the universe (see xkcd \url{https://3d.xkcd.com/224/}. Its syntax is
+ quite strange however and it is slow. Making it poorly suited towards
+ general use.
+
+ \url{https://www.perl.org/}
+
+ Zippy should take from perls minimalism, it is a small language that is
+ of a similar size to bash or zsh, while feeling closer to python.
+ If Zippy can achieve a similar small size, while remaining
+ powerful I will be happy with this outcome.
+\end{description}
+\subsubsection{Examples of newer similar projects}
+\begin{description}
+ \item[Gleam]
+ Gleam is a modern language releasing in the past 5 years. It is
+ highly functional, with no mutable data, no traditional loops.
+ Instead recursion can be used to replace alot of these features.
+ Gleam compiles to erlang/Beam bytecode, much like java to the
+ jvm, and doing this has made Gleam a highly scalable language with
+ good library support out the box.
+
+ \url{https://gleam.run/}
+
+ Zippy should take from the functional elements of Gleam, as they keep
+ programs safer, however Zippy should not remove all procedural
+ elements, as for loops are very helpful
+ \item[Haskell]
+ Haskell is another modern functional language known for being
+ very complicated, however incredibly powerful. Its syntax feels very
+ mathematical, and incredibly terse.
+
+ \url{https://www.haskell.org/}
+
+ Perhaps Zippy could learn from Haskell, as it provides functional and
+ procedural elements, making it a well rounded language
+ \item[Hare]
+ Hare was designed to be a 100 year language, and thus stability is
+ its main goal, it is not set to
+ have a syntax change any time soon, and it has strong emphasis on
+ memory managment like C. It fits into the same part of the tech stack
+ as C, and thus it can be used for some very low level work.
+
+ \url{https://harelang.org/}
+
+ I think Zippy should have a strong emphasis on stability, much like Hare,
+ too many times have I segfaulted due to a tiny mistake. Zippy should
+ also look to Hare's small size, you can buy a copy of Hare on a
+
+ \textbf{SINGLE 3 1/2" FLOLPY}
+
+ This is something I too should try to achieve.
+\end{description}
+\subsubsection{What should be taken away from these languages}
+I was already leaning towards functional programming when I started this project however
+now I believe it's the only option for producing safe applications. Zippy will be
+a functional language.
+
+I also believe that I should take size of the compiler into account, as this is important
+for keeping the project manageable and maintanable.
+
+And finally I think that syntax should be inspired by Lisp, although Lisp itself can be
+a messy language, with the right changes I am confident that I can make a attractive
+language for the 21st century.
+
+\subsection{Clients}
+In a project of this nature, the Client is every programmer alive; which is a pretty
+large scope. To narrow this down as much as possible, I will interview a small handful
+of people throughout the project, of different skill levels to get a good picture of
+what people think of the project.
+\subsubsection{Client 1: Amy C}
+My first client is a friend of mine, Amy C, she is a confident programmer who has
+completed many complicated projects. I am choosing her as a client as she can give me
+technical feed back on my project and its function/utility.
+\subsubsection{Client 2: Rayn M}
+Another friend of mine, Rayn M, is a technical computer user, however he does not know
+how to program at a high level. He will be a good client as he can show me how my
+language looks to some one who doesn't understand the inside workings, helping me
+design the structure of the code to something useable for more people.
+\subsubsection{Client 3: Myself}
+I've wanted to take out a project like this for a long long time, and this is the
+perfect opportunity to do so, I will be assessing myself along the way of this,
+building the project to my personal specification.
+
+\subsection{Questionnaires}
+It is important to get feedback from end users, so I will take multiple questionnaires
+throughout the project. I will then use them to slightly edit the requirements of my
+project this should make the final outcome more helpful and what people want.
+\subsubsection{Amy C, initial ideas}
+\begin{description}
+ \item[What do you find the most important in a language?]
+ Speed, readability, debugging ease and disk space efficiency.
+ \item[What tools are important for a language to have?]
+ IDE integration (things like tab complete and debugging tools), a
+ package manager, and the ability to interact with the user through the
+ command line easily.
+ \item[What features do you like from other languages?]
+ The ability to pass the memory reference of an object or function and a
+ collection of built-in or standard functions like "print", "split",
+ or "sort".
+ \item[What do you want to program in this language?]
+ Lightweight command line tools and web back ends.
+ \item[Do you intend to use graphics in the programs you write?]
+ Yes.
+ \item[Would you prefer a language that focuses on ease of
+ use, or power of code?]
+ I like a good balance between the two.
+ \item[What were your last 3 projects?]
+ A website, a small command-line tool and a midi keyboard (program runs
+ on a Raspberry Pi Pico).
+ \item[How many languages would you use on a single project?]
+ I try to use as little languages in a single project as possible, so i
+ could likely not use it in an existing project.
+ \item[Do you care for low level control, or would you prefer
+ high level abstractions?]
+ I think low-level control is very important, but high-level abstractions
+ are convenient, so a good balance between the two is best.
+ \item[Would you be happy to develop libraries for things that aren't
+ already implemented?]
+ Potentially if it is simple enough to implement new things.
+\end{description}
+\subsubsection{Notes from questionnare 1}
+Some of the key things that I'm taking away from this first questionnaire, are my
+client/users initial needs and use cases. I think it's clear my language can be of
+assistance to my client, Zippy will be a good language for web back ends and
+small command line tools, which my client expressed interested in.
+
+I find the fact my client is worried by executable size interesting, however
+I doubt it will be an issue; a ballooning code-base is unlikely as only one
+person is writing the whole project.
+
+I am also taking on the fact that my client wants good command line tools,
+so a pkg-manager and bundler should be a priority, perhaps they could be
+written in Zippy after the compiler is done.
+
+\subsection{The first elements of the project}
+At this stage I can say that I'm confident in my project and its scope. I
+have a goal in mind for
+it.
+
+\textbf{The key things to take away from this section are:}
+
+\begin{itemize}
+ \item
+ Make a high level language with a useable set of features, to
+ replace C in many situations.
+
+ \item
+ Keep the language readable and easy, with powerful tools available.
+
+ \item
+ Ensure the language is well supported with tools like a pkg-manager.
+\end{itemize}
+
+\section{Modelling}
+In larger projects, when a programmer needs a data structure that the language
+they are writing in doesn't provide, they will need to make their own. This can pose a
+challenge to some, especially in low level languages which don't provide anything
+out of the box.
+
+Bellow are a few examples of these data structures that C doesn't already provide,
+that I may use in my project.
+\subsection{Linked lists}
+this is an alternative implementation of a list, where you store some data, and
+the memory address to the next node. Then you can move through the list by reading
+the data then reading the data of the next node, and then repeating until the
+'next' part of the node is empty.
+\\
+
+A diagram showing this can be seen here:
+\\
+
+\begin{tikzpicture}
+ \tikzset{edge from parent/.style={draw,edge from parent path={(\tikzparentnode.south)-- +(0,-8pt)-| (\tikzchildnode)}}}
+ \Tree
+ [.ll
+ [.data
+ ]
+ [.next
+ [.ll
+ [.data
+ ]
+ [.next
+ [.ll
+ [.data
+ ]
+ [.next
+ ]
+ ]
+ ]
+ ]
+ ]
+ ]
+\end{tikzpicture}
+
+In C this is easy to implement as you can find a memory address very easily with to
+find where a bit of data is stored in memory (address of). I will need to use a 'struct',
+which is a bit like a class in C (however you can't attach a function to it, nor use
+inheritance). A simple implementation looks like this:
+
+\begin{lstlisting}[language=C++, caption=Linked list example]
+typedef struct ll {
+ void *data; // the data of the node
+ ll *next; // the next node
+} ll;
+\end{lstlisting}
+
+The pro's of a linked list are the fact that they can have data appended to the start or
+end easily by changing the root node, or the next node.
+
+Linked lists have a few downsides, for example you can't move through them backwards,
+and unless you store it on its own, you cant find the length of it in a fast way.
+
+In my project I would like to use linked list in the AST (see later sections for info),
+and perhaps to store lists in the language.
+
+\subsection{Dictionaries}
+A dictionary is a simple data structure that just stores, a bit of data, and a number or
+string to identify it.
+A dictionary like a linked list can be implemented with a struct in c like so:
+\begin{lstlisting}[language=C++, caption=Dictionary example]
+typedef struct dict {
+ void *data;
+ int id;
+} dict;
+\end{lstlisting}
+
+In my project I could use this to hold variables and functions which need to be
+checked and looked up, which is very slow when comparing entire strings, but with this
+I can compare integer ID's which is much faster.
+
+\subsection{Prototyping harder features}
+\subsubsection{Abstract syntax trees (AST's) theory}
+In a programming language many abstract data types will be used to allow the code
+to compile and execute, however I think the hardest part of this is an abstract
+syntax tree. This is a data structure that holds the code in an ordered form that
+can be analysed and executed in a simple way. It is a tree structure, with the top
+node being a root and all lower nodes being things needed to calculate the root. It can
+be used to show mathematical expressions and function calls, but I thing easiest way to
+show it is via a mathematical example.
+
+Take the follow expression for example:
+\\
+
+{\Large{\(1 + (10 * (3 - (2 * 4)))\)}}
+\\
+
+We know that this is equal to \(-49\)
+
+However for a computer this is far harder to understand. This is because it has no
+understanding of order of operation.
+
+To solve this we use an AST.
+
+When you solve that expression you know to start with
+\((2 * 4)\), then \(3 -\)
+from that, following the rules of BIDMAS to solve.
+
+We can represent the steps as a tree like so:
+
+\begin{tikzpicture}
+ \tikzset{edge from parent/.style={draw,edge from parent path={(\tikzparentnode.south)-- +(0,-8pt)-| (\tikzchildnode)}}}
+ \Tree
+ [.+
+ [.1
+ ]
+ [.*
+ [.10
+ ]
+ [.-
+ [.3
+ ]
+ [.*
+ [.2
+ ]
+ [.4
+ ]
+ ]
+ ]
+ ]
+ ]
+\end{tikzpicture}
+\\
+This will evaluate \(1 + (10 * (3 - (2 * 4)))\)
+
+As you can see, you need to evaluate the expression in the most brackets
+first, then the next, and so on, working you way up.
+
+You can evaluate code in a similar way, treating each operation (such as +-*/)
+as functions, doing the most deeply nested function first, then working up.
+Each expression can be represented in this tree, then to show a whole program you
+can create a list of trees.
+
+\subsubsection{Abstract syntax trees (AST's) practical}
+As a prototype i will make a program that can take mathematical expressions and evaluate
+them, and allowing for functions (in the form f(x)). It will do this via AST's.
+
+This prototype takes 173 lines of code, it takes a string as a cmd line argument then
+converts it into an abstract syntax tree, and finally it executes it. This is just a
+simple prototype and thus it is small in scope. It can only do simple operators (+-*/)
+and requires literal values to be surrounded by [] so it knows its not another
+expression to evaluate.
+
+\lstinputlisting[language=C++]{../code/proto/AST/ast.c}
+\textit{The main loop for the ast code.}
+\\
+
+\lstinputlisting[language=C++]{../code/proto/AST/astg.c}
+\textit{The execution loop for the ast code.}
+\\
+
+\lstinputlisting[language=C++]{../code/proto/AST/astg.h}
+\textit{The definition of the ast, and function prototypes.}
+\\
+
+Above is the code for the AST, it stores an operation (which is just an integer), and
+it stores a real left and real right value, along side two other nodes. The real values
+are integers, this would be the 2 numbers in reference, in the expression. The 2 nodes are a
+recursive data structure, much like putting an object of a class inside the definition of that class
+itself. They are used to store values that may still be expressions, for example
+(+ [1] (+ [1] [1])) the second part of this expression would be in the "right"
+variable.
+\\
+
+When code is executed I can check if "left", or "right" are NULL and if
+they are I know that I am at the lowest expression that is only literal values.
+Then I can execute that node and work my way up the tree.
+\\
+
+The exec function will execute the operation, unless there is a deeper node, if there is
+a deeper node, then it executes it, and places the result in the right or left spot
+respectively.
+\\
+
+\textbf{Here is an example input and output:}
+
+ ./ast "(+ (- [3] [1]) (- [3] [1]))"
+
+4
+
+{\small Note the [ ] used to tell the program where the literal values are.}
+\\
+
+Overall this was a relatively successful prototype, however it isn't fully functional
+as a language but it has fit the design for a prototype.
+\\
+
+\textbf{The code for the AST can be found here:
+\url{https://github.com/standenboy/school/tree/master/comp/lucas-standen-NEA/code/proto/ast}}
+
+\subsection{Feedback}
+From my first Client (Amy C), she said that putting the numbers inside square brackets
+was inconvenient and annoying and it would be better if the numbers were separated
+by spaces instead of separate square bracket surrounded literals.
+
+As this is a prototype I won't fix this issue, however in the actual language this is
+a needed feature that I will be implementing.
+
+\subsection{Mixing linked lists and AST's}
+Mixing these 2 data structures together you can represents an entire program. A linked
+list of AST's is how Zippy will represent all code the user writes. To do this, use a
+linked list, and in the data element put a AST, then the next node can contain the same.
+This might be a help to zippy as the compiler can convert all code to an AST, then
+compile it.
+}
+\end{document}
+
diff --git a/comp/lucas-standen-NEA/writeup2/writeup.toc b/comp/lucas-standen-NEA/writeup2/writeup.toc
new file mode 100644
index 0000000..1455ed2
--- /dev/null
+++ b/comp/lucas-standen-NEA/writeup2/writeup.toc
@@ -0,0 +1,28 @@
+\babel@toc {english}{}\relax
+\contentsline {section}{\numberline {1}A breif head note and introduction}{3}{section.1}%
+\contentsline {section}{\numberline {2}Analysis}{3}{section.2}%
+\contentsline {subsection}{\numberline {2.1}The current problem}{3}{subsection.2.1}%
+\contentsline {subsection}{\numberline {2.2}A solution}{3}{subsection.2.2}%
+\contentsline {subsection}{\numberline {2.3}What is a programming language}{3}{subsection.2.3}%
+\contentsline {subsubsection}{\numberline {2.3.1}A very simple explanation}{3}{subsubsection.2.3.1}%
+\contentsline {subsubsection}{\numberline {2.3.2}Why are there so many}{4}{subsubsection.2.3.2}%
+\contentsline {subsection}{\numberline {2.4}Researching and getting a scope of the project}{4}{subsection.2.4}%
+\contentsline {subsubsection}{\numberline {2.4.1}Examples of older similar projects}{4}{subsubsection.2.4.1}%
+\contentsline {subsubsection}{\numberline {2.4.2}Examples of newer similar projects}{4}{subsubsection.2.4.2}%
+\contentsline {subsubsection}{\numberline {2.4.3}What should be taken away from these languages}{5}{subsubsection.2.4.3}%
+\contentsline {subsection}{\numberline {2.5}Clients}{5}{subsection.2.5}%
+\contentsline {subsubsection}{\numberline {2.5.1}Client 1: Amy C}{5}{subsubsection.2.5.1}%
+\contentsline {subsubsection}{\numberline {2.5.2}Client 2: Rayn M}{5}{subsubsection.2.5.2}%
+\contentsline {subsubsection}{\numberline {2.5.3}Client 3: Myself}{6}{subsubsection.2.5.3}%
+\contentsline {subsection}{\numberline {2.6}Questionnaires}{6}{subsection.2.6}%
+\contentsline {subsubsection}{\numberline {2.6.1}Amy C, initial ideas}{6}{subsubsection.2.6.1}%
+\contentsline {subsubsection}{\numberline {2.6.2}Notes from questionnare 1}{6}{subsubsection.2.6.2}%
+\contentsline {subsection}{\numberline {2.7}The first elements of the project}{7}{subsection.2.7}%
+\contentsline {section}{\numberline {3}Modelling}{7}{section.3}%
+\contentsline {subsection}{\numberline {3.1}Linked lists}{7}{subsection.3.1}%
+\contentsline {subsection}{\numberline {3.2}Dictionaries}{8}{subsection.3.2}%
+\contentsline {subsection}{\numberline {3.3}Prototyping harder features}{8}{subsection.3.3}%
+\contentsline {subsubsection}{\numberline {3.3.1}Abstract syntax trees (AST's) theory}{8}{subsubsection.3.3.1}%
+\contentsline {subsubsection}{\numberline {3.3.2}Abstract syntax trees (AST's) practical}{9}{subsubsection.3.3.2}%
+\contentsline {subsection}{\numberline {3.4}Feedback}{13}{subsection.3.4}%
+\contentsline {subsection}{\numberline {3.5}Mixing linked lists and AST's}{14}{subsection.3.5}%