summaryrefslogtreecommitdiff
path: root/comp/lucas-standen-NEA
diff options
context:
space:
mode:
authorstandenboy <standenboy@seacrossedlovers.xyz>2024-05-06 09:32:48 +0100
committerstandenboy <standenboy@seacrossedlovers.xyz>2024-05-06 09:32:48 +0100
commit319e7ea0a724cd97041c1aaf1281c4ca6aa688d1 (patch)
tree7411f4636ce9ce9733760666f3311a17b6e4d17c /comp/lucas-standen-NEA
parent0ca35b27de52a5d3acf5f2eb877a440c1103e928 (diff)
added a load of stuff, and fixed a git conflict
Diffstat (limited to 'comp/lucas-standen-NEA')
-rw-r--r--comp/lucas-standen-NEA/code/Makefile6
-rw-r--r--comp/lucas-standen-NEA/code/parser/Makefile12
-rw-r--r--comp/lucas-standen-NEA/code/parser/parser.c32
-rw-r--r--comp/lucas-standen-NEA/code/parser/preprocessor.c24
-rw-r--r--comp/lucas-standen-NEA/code/parser/preprocessor.h5
-rw-r--r--comp/lucas-standen-NEA/code/parser/readfile.c61
-rw-r--r--comp/lucas-standen-NEA/code/parser/readfile.h1
-rw-r--r--comp/lucas-standen-NEA/code/parser/sample.zpy15
-rw-r--r--comp/lucas-standen-NEA/code/proto/ast/Makefile4
-rwxr-xr-xcomp/lucas-standen-NEA/code/proto/ast/ast (renamed from comp/lucas-standen-NEA/code/parser/parser)bin20880 -> 20792 bytes
-rw-r--r--comp/lucas-standen-NEA/code/proto/ast/ast.c147
-rw-r--r--comp/lucas-standen-NEA/code/proto/ast/astg.c45
-rw-r--r--comp/lucas-standen-NEA/code/proto/ast/astg.h19
-rw-r--r--comp/lucas-standen-NEA/writeup/Makefile4
-rw-r--r--comp/lucas-standen-NEA/writeup/coverpage.ms104
-rw-r--r--comp/lucas-standen-NEA/writeup/coverpage.ps573
-rwxr-xr-xcomp/lucas-standen-NEA/writeup/make.sh13
-rw-r--r--comp/lucas-standen-NEA/writeup/questions-for-amy.ps2
18 files changed, 652 insertions, 415 deletions
diff --git a/comp/lucas-standen-NEA/code/Makefile b/comp/lucas-standen-NEA/code/Makefile
deleted file mode 100644
index a30526c..0000000
--- a/comp/lucas-standen-NEA/code/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-all:
- cd ads; make
- cd parser; make
-
-tests: all
- cd ads; make tests
diff --git a/comp/lucas-standen-NEA/code/parser/Makefile b/comp/lucas-standen-NEA/code/parser/Makefile
deleted file mode 100644
index 9325d95..0000000
--- a/comp/lucas-standen-NEA/code/parser/Makefile
+++ /dev/null
@@ -1,12 +0,0 @@
-all: readfile preprocesor parser
- cc readfile.o preprocessor.o parser.o -o parser
-
-readfile:
- cc -c readfile.c -o readfile.o
-preprocesor:
- cc -c preprocessor.c -o preprocessor.o
-parser: parser.c
- cc -c parser.c -o parser.o
-
-clean:
- rm -rf *.o parser
diff --git a/comp/lucas-standen-NEA/code/parser/parser.c b/comp/lucas-standen-NEA/code/parser/parser.c
deleted file mode 100644
index 3162841..0000000
--- a/comp/lucas-standen-NEA/code/parser/parser.c
+++ /dev/null
@@ -1,32 +0,0 @@
-#include <string.h>
-#include <stdio.h>
-#include <stdbool.h>
-
-#include "preprocessor.h"
-
-int main(int argc, char **argv){
- if (argc <= 1){
- printf("no args given!\n");
- return 1;
- }
- char *code = preprocessor(argc, argv);
- if (code == NULL){
- printf("falled to open file\n");
- return 1;
- }
- for (int i = 0; i < strlen(code); i++){
- if (code[i] == '{'){
- printf("\nopen-scope\n");
- } else if (code[i] == '}'){
- printf("\nclose-scope\n");
- }else {
- if (code[i] == '(')
- printf("\n");
- else if (code[i] != ')')
- printf("%c", code[i]);
- }
- }
- printf("\n");
- free(code);
- return 0;
-}
diff --git a/comp/lucas-standen-NEA/code/parser/preprocessor.c b/comp/lucas-standen-NEA/code/parser/preprocessor.c
deleted file mode 100644
index 92c6127..0000000
--- a/comp/lucas-standen-NEA/code/parser/preprocessor.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include <stdbool.h>
-#include <string.h>
-
-#include "readfile.h"
-
-char *preprocessor(int argc, char **argv){
- char *buf = readfile(argv[1]);
- if (buf == NULL)
- return NULL;
-
- int i = 0;
-
- while (buf[i] != '\0'){
- if (buf[i] == '\n'){
- buf[i] = ' ';
- }
- if (buf[i] == '\t'){
- buf[i] = ' ';
- }
- i++;
- }
-
- return buf;
-}
diff --git a/comp/lucas-standen-NEA/code/parser/preprocessor.h b/comp/lucas-standen-NEA/code/parser/preprocessor.h
deleted file mode 100644
index 855240f..0000000
--- a/comp/lucas-standen-NEA/code/parser/preprocessor.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-char *preprocessor(int argc, char **argv);
diff --git a/comp/lucas-standen-NEA/code/parser/readfile.c b/comp/lucas-standen-NEA/code/parser/readfile.c
deleted file mode 100644
index 391d5a5..0000000
--- a/comp/lucas-standen-NEA/code/parser/readfile.c
+++ /dev/null
@@ -1,61 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <stdbool.h>
-
-bool instring = false;
-
-char *readfile(char *filepath){
- FILE *fptr;
- fptr = fopen(filepath, "r");
-
- if (fptr == NULL)
- return NULL;
- int size = 10;
- char *buf = malloc(size);
- char c;
-
- int i = 0;
-
- buf = buf+i;
- buf[0] = '{';
- buf = buf-i;
-
- i++;
-
- while ((c = getc(fptr)) != EOF){
- if (i > size + 1){
- size = size + 10;
- buf = realloc(buf, size);
- }
- if (c == '"'){
- if (instring == false)
- instring = true;
- else
- instring = false;
- }
-
- if (c == '!' && instring == false){
- while ((c = getc(fptr)) != EOF && c != '\n'){}
- }
- buf = buf+i;
- buf[0] = c;
- buf = buf-i;
- i++;
-
- }
-
- buf = buf+i;
- buf[0] = '}';
- buf = buf-i;
-
- i++;
-
- buf = buf+i;
- buf[0] = '\0';
- buf = buf-i;
-
- fclose(fptr);
-
- return buf;
-}
diff --git a/comp/lucas-standen-NEA/code/parser/readfile.h b/comp/lucas-standen-NEA/code/parser/readfile.h
deleted file mode 100644
index 12d98ec..0000000
--- a/comp/lucas-standen-NEA/code/parser/readfile.h
+++ /dev/null
@@ -1 +0,0 @@
-char *readfile(char *filepath);
diff --git a/comp/lucas-standen-NEA/code/parser/sample.zpy b/comp/lucas-standen-NEA/code/parser/sample.zpy
deleted file mode 100644
index e289d9d..0000000
--- a/comp/lucas-standen-NEA/code/parser/sample.zpy
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-(let fib:function
-(defun num:i32 i32
- (if (< num 2)
- (return num)
- )
- (else
- (return (+ (fib (- num 1)) (fib (- num 2)) ))
- )
-))
-}
-(let a:i32 (fib 5))
-(const str[]:char "hello!")
-! returns the 5th fib number
-(const str[]:char "hello!")
diff --git a/comp/lucas-standen-NEA/code/proto/ast/Makefile b/comp/lucas-standen-NEA/code/proto/ast/Makefile
new file mode 100644
index 0000000..e11e20f
--- /dev/null
+++ b/comp/lucas-standen-NEA/code/proto/ast/Makefile
@@ -0,0 +1,4 @@
+all: astg ast.c
+ cc ast.c astg.o -o ast
+astg: astg.c
+ cc astg.c -c -o astg.o
diff --git a/comp/lucas-standen-NEA/code/parser/parser b/comp/lucas-standen-NEA/code/proto/ast/ast
index 9d996a8..b4b4f9f 100755
--- a/comp/lucas-standen-NEA/code/parser/parser
+++ b/comp/lucas-standen-NEA/code/proto/ast/ast
Binary files differ
diff --git a/comp/lucas-standen-NEA/code/proto/ast/ast.c b/comp/lucas-standen-NEA/code/proto/ast/ast.c
new file mode 100644
index 0000000..80d198d
--- /dev/null
+++ b/comp/lucas-standen-NEA/code/proto/ast/ast.c
@@ -0,0 +1,147 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "astg.h"
+
+void getBrackets(char *in, int bpos, char *out){ // gets the content of the brackets that open at bpos
+ if (in[0] != '(' && in[0] != '[')
+ out = NULL;
+
+ char *input = malloc(strlen(in) + 1);
+ char *Pinput = input;
+ memcpy(input, in, strlen(in) + 1);
+
+ int i = 0;
+ while (i != bpos){
+ input++;
+ i++;
+ }
+ i = 0;
+ int depth = 0;
+ while (input[0] != '\0'){
+ out[i] = input[0];
+ if (input[0] == '(' || input[0] == '[')
+ depth++;
+ if (input[0] == ')' || input[0] == ']')
+ depth--;
+ if (depth == 0){
+ i++;
+ break;
+ }
+
+ input++;
+ i++;
+ }
+
+ out[i] = '\0';
+ free(Pinput);
+}
+
+int getContents(char *brackets){
+ int i = 0;
+ char *num = malloc(strlen(brackets));
+ while (brackets[0] != '\0'){
+ if (brackets[0] != '[' && brackets[0] != ']'){
+ num[i] = brackets[0];
+ i++;
+ }
+ brackets++;
+ }
+ num[i] = '\0';
+ int out = atoi(num);
+ free(num);
+ return out;
+}
+
+ast_node *genAst(char *expression){
+ ast_node *out = malloc(sizeof(ast_node));
+
+ /* take the expression
+ * get the first operation from it
+ * get the first number from after the expression
+ * if that number is another expression{
+ * grab everything inside its braket and then call this function on it
+ * }
+ * get the second number from the expression
+ * if that number is another expression{
+ * grab everything inside its braket and then call this function on it
+ * }
+ * execute the output
+ */
+
+ int i = 0, j = 0;
+ int currentTokenVal = -1;
+
+ char *currentToken = malloc(strlen(expression)+1);
+ while (expression[i] != '\0'){
+ if (expression[i] == '(' || expression[i] == '['){
+ getBrackets(expression, i, currentToken);
+ currentTokenVal++;
+
+ int depth = 0;
+
+ if (i != 0){
+ while (expression[i] != '\0'){
+ if (expression[i] == '(' || expression[i] == '[')
+ depth++;
+ if (expression[i] == ')' || expression[i] == ']')
+ depth--;
+ if (depth == 0){
+ break;
+ }
+ i++;
+ }
+ }
+
+ if (currentTokenVal == 0){
+ switch (currentToken[1]) {
+ case '+':
+ out->operation= ADD;
+ break;
+ case '-':
+ out->operation = SUB;
+ break;
+ case '*':
+ out->operation = MUL;
+ break;
+ case '/':
+ out->operation = DIV;
+ break;
+ }
+ }
+
+ if (currentTokenVal == 1){
+ if (currentToken[0] == '(')
+ out->left = genAst(currentToken);
+ else {
+ out->realLeft = getContents(currentToken);
+ out->left = NULL;
+ }
+ } else if (currentTokenVal == 2){
+ if (currentToken[0] == '(')
+ out->right= genAst(currentToken);
+ else {
+ out->realRight = getContents(currentToken);
+ out->right = NULL;
+ }
+ }
+ }
+ i++;
+ }
+ free(currentToken);
+
+ return out;
+}
+
+
+int main(int argc, char **argv){
+ if (argc < 2)
+ exit(1);
+
+ ast_node *head = genAst(argv[1]);
+
+ printf("%d\n", exec(head));
+
+ freeAst(head);
+}
diff --git a/comp/lucas-standen-NEA/code/proto/ast/astg.c b/comp/lucas-standen-NEA/code/proto/ast/astg.c
new file mode 100644
index 0000000..fc6fc8f
--- /dev/null
+++ b/comp/lucas-standen-NEA/code/proto/ast/astg.c
@@ -0,0 +1,45 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+typedef struct ast_node ast_node;
+
+typedef enum op {
+ ADD = 0,
+ SUB = 1,
+ MUL = 2,
+ DIV = 3,
+} op;
+
+typedef struct ast_node {
+ op operation;
+ int realLeft;
+ int realRight;
+ ast_node *right;
+ ast_node *left;
+} ast_node;
+
+int exec(ast_node *exp){
+ if (exp->left != NULL)
+ exp->realLeft = exec(exp->left);
+ if (exp->right != NULL)
+ exp->realRight = exec(exp->right);
+
+ if (exp->operation == ADD)
+ return exp->realLeft+ exp->realRight;
+ if (exp->operation == SUB)
+ return exp->realLeft - exp->realRight;
+ if (exp->operation == MUL)
+ return exp->realLeft * exp->realRight;
+ if (exp->operation == DIV)
+ return exp->realLeft/ exp->realRight;
+ return 0;
+}
+
+void freeAst(ast_node *head){
+ if (head->left != NULL)
+ freeAst(head->left);
+ if (head->right != NULL)
+ freeAst(head->left);
+ free(head);
+}
diff --git a/comp/lucas-standen-NEA/code/proto/ast/astg.h b/comp/lucas-standen-NEA/code/proto/ast/astg.h
new file mode 100644
index 0000000..16250b2
--- /dev/null
+++ b/comp/lucas-standen-NEA/code/proto/ast/astg.h
@@ -0,0 +1,19 @@
+typedef struct ast_node ast_node;
+
+typedef enum op {
+ ADD = 0,
+ SUB = 1,
+ MUL = 2,
+ DIV = 3,
+} op;
+
+typedef struct ast_node {
+ op operation;
+ int realLeft;
+ int realRight;
+ ast_node *right;
+ ast_node *left;
+} ast_node;
+
+int exec(ast_node *exp);
+void freeAst(ast_node *head);
diff --git a/comp/lucas-standen-NEA/writeup/Makefile b/comp/lucas-standen-NEA/writeup/Makefile
new file mode 100644
index 0000000..0c1ec8a
--- /dev/null
+++ b/comp/lucas-standen-NEA/writeup/Makefile
@@ -0,0 +1,4 @@
+all:
+ exec ./make.sh
+clean:
+ rm -rf ./*.pdf
diff --git a/comp/lucas-standen-NEA/writeup/coverpage.ms b/comp/lucas-standen-NEA/writeup/coverpage.ms
index 2820eb4..e62d80d 100644
--- a/comp/lucas-standen-NEA/writeup/coverpage.ms
+++ b/comp/lucas-standen-NEA/writeup/coverpage.ms
@@ -16,7 +16,7 @@ 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 function abstractions, that have become common
+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.
@@ -63,7 +63,8 @@ As Zippy will be interpreted, I should compare it to other such languages; tryin
function.
Zippy is by far not the first language, and I'm only one person, so I can't expect to beat others in everything.
-However a few small goals will give the project a good scope.
+
+Below are a few languages that zippy should be compared to throught developemen:
.NH 3
Python
.PP
@@ -71,13 +72,18 @@ Python is a high level OOP language that was designed in 1991. It was made to ma
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 programing very easy and it should try and take notes from its libaries as they are mostly well writen,
+and well documented.
.NH 3
Lisp
.PP
-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 anymore as it feels old compared to other functional languages, like ocaml or haskell.
+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 anymore 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 3
Perl
.PP
@@ -87,6 +93,9 @@ Making it poorly suited towards general use.
https://www.perl.org/
+Zippy should take from perls minimalisum, 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 pleased
+
.NH 2
Questionnaires
.PP
@@ -226,7 +235,7 @@ is via a mathematical example
Take the follow expression for example:
-(1 + 10 * (3 - (2 * 4)))
+(1 + (10 * (3 - (2 * 4))))
We know that this is equal to -49
@@ -252,10 +261,91 @@ Implementing AST's
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
-Talk about the code
+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 litteral values to be
+surrounded by [] so it knows its not another expression to evaluate.
+
+
+typedef struct ast_node ast_node;
+
+
+typedef enum op {
+
+ ADD = 0,
+
+ SUB = 1,
+
+ MUL = 2,
+
+ DIV = 3,
+
+} op;
+
+
+typedef struct ast_node {
+
+ op operation;
+
+ int realLeft;
+
+ int realRight;
+
+ ast_node *right;
+
+ ast_node *left;
+
+} ast_node;
+
+
+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" vairable. 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 litteral values.
+Then I can execute that node and work my way up the tree.
+
+
+The execution code can be seen here.
+
+
+int exec(ast_node *exp){
+
+ if (exp->left != NULL)
+
+ exp->realLeft = exec(exp->left);
+
+ if (exp->right != NULL)
+
+ exp->realRight = exec(exp->right);
+
+
+
+ if (exp->operation == ADD)
+
+ return exp->realLeft+ exp->realRight;
+
+ if (exp->operation == SUB)
+
+ return exp->realLeft - exp->realRight;
+
+ if (exp->operation == MUL)
+
+ return exp->realLeft * exp->realRight;
+
+ if (exp->operation == DIV)
+
+ return exp->realLeft/ exp->realRight;
+
+ return 0;
+
+}
-show the code
+The rest of the code is the process of converting the string input to litteral values and inserting
+them into the AST
.NH 1
Design
diff --git a/comp/lucas-standen-NEA/writeup/coverpage.ps b/comp/lucas-standen-NEA/writeup/coverpage.ps
index 89705ec..51d31bb 100644
--- a/comp/lucas-standen-NEA/writeup/coverpage.ps
+++ b/comp/lucas-standen-NEA/writeup/coverpage.ps
@@ -1,6 +1,6 @@
%!PS-Adobe-3.0
%%Creator: groff version 1.23.0
-%%CreationDate: Thu May 2 12:13:15 2024
+%%CreationDate: Mon May 6 09:30:29 2024
%%DocumentNeededResources: font Times-Bold
%%+ font Times-Italic
%%+ font Times-Roman
@@ -8,7 +8,7 @@
%%DocumentSuppliedResources: file ast.ps
%%+ procset grops 1.23 0
%%LanguageLevel: 2
-%%Pages: 6
+%%Pages: 7
%%PageOrder: Ascend
%%DocumentMedia: Default 612 792 0 () ()
%%Orientation: Portrait
@@ -284,304 +284,322 @@ E -.15(ve)-.25 G 2.947(rt).15 G .447(his leads to hours of deb)-2.947 F
(programmer is required to kno)111 300.6 R 2.862(ws)-.25 G 2.861(om)
-2.862 G .361(uch information about the hardw)-2.861 F .361(are the)-.1
F 2.861(yw)-.15 G .361(rite for)-2.861 F 2.861(,a)-.4 G .361(nd the)
--2.861 F .36(second an)111 312.6 R .36(ything goes wrong, it is v)-.15 F
-.36(ague on ho)-.25 F 2.861(wt)-.25 G 2.861<6f8c>-2.861 G 2.861(xt)
--2.861 G(hings.)-2.861 E F3 2.861(In)5.361 G .361
-(eed a language that stops me)-2.861 F(fr)111 324.6 Q
-(om shooting myself in the f)-.18 E(oot)-.25 E F2 2.585(Ch)111 348.6 S
-.084(as been standard for man)-2.585 F 2.584(yd)-.15 G .084(ecades no)
+-2.861 F(second an)111 312.6 Q(ything goes wrong, it is v)-.15 E
+(ague on ho)-.25 E 2.5(wt)-.25 G 2.5<6f8c>-2.5 G 2.5(xt)-2.5 G(hings.)
+-2.5 E F3 2.5(In)111 336.6 S(eed a language that stops me fr)-2.5 E
+(om shooting myself in the f)-.18 E(oot)-.25 E F2 2.584(Ch)111 360.6 S
+.084(as been standard for man)-2.584 F 2.584(yd)-.15 G .084(ecades no)
-2.584 F 2.584(wa)-.25 G .084(nd its age is sho)-2.584 F .084
-(wing, it lacks man)-.25 F 2.584(ym)-.15 G .084(odern features)-2.584 F
-(lik)111 360.6 Q 3.12(eO)-.1 G(OP)-3.12 E 3.12(,o)-1.11 G 3.12(rh)-3.12
-G .62(igher le)-3.12 F -.15(ve)-.25 G 3.121(lf).15 G .621
-(unction abstractions, that ha)-3.121 F .921 -.15(ve b)-.2 H .621
-(ecome common in modern years due).15 F 1.304
-(to there helpfulness. This is not to f)111 372.6 R 1.303(ault C')-.1 F
+(wing, it lacks man)-.25 F 2.585(ym)-.15 G .085(odern features)-2.585 F
+(lik)111 372.6 Q 2.605(eO)-.1 G(OP)-2.605 E 2.605(,o)-1.11 G 2.605(rh)
+-2.605 G .105(igher le)-2.605 F -.15(ve)-.25 G 2.605(lf).15 G .105
+(unctional abstractions, that ha)-2.605 F .405 -.15(ve b)-.2 H .105
+(ecome common in modern years due).15 F 1.303
+(to there helpfulness. This is not to f)111 384.6 R 1.303(ault C')-.1 F
3.803(sa)-.55 G(chie)-3.803 E -.15(ve)-.25 G 1.303(ments either).15 F
-3.803(,t)-.4 G 1.303(he language is my personal)-3.803 F .659
-(choice for most projects for a reason, it')111 384.6 R 3.159(sf)-.55 G
-.659(ast and po)-3.259 F .66(werful; an)-.25 F 3.16(ys)-.15 G .66
-(olution I mak)-3.16 F 3.16(es)-.1 G .66(hould not cut)-3.16 F(that a)
-111 396.6 Q -.1(wa)-.15 G -.65(y.).1 G F3 2.5(1.2. A)111 432.6 R
-(solution)2.5 E/F4 10/Times-BoldItalic@0 SF(Zippy LANG)136.61 448.2 Q F2
-3.379(An)111 472.2 S -.15(ex)-3.379 G 3.379(tg).15 G .879
-(eneration language, for general use. Designed for k)-3.379 F .878
-(eeping code simple, neat and read-)-.1 F 3.306(able. It)111 484.2 R
-.807(will be similar to functional languages, kno)3.306 F .807
-(wn for there strict ability to k)-.25 F .807(eep code safe)-.1 F .068
-(and practical.)111 496.2 R .068(The language should be interpreted lik)
-5.068 F 2.568(ep)-.1 G .067(ython, perl and lisp, to allo)-2.668 F 2.567
-(wf)-.25 G .067(or easy de-)-2.567 F -.2(bu)111 508.2 S(gging tools.).2
-E(The goal of Zipp)111 532.2 Q 2.5(yi)-.1 G 2.5(st)-2.5 G 2.5(om)-2.5 G
+3.804(,t)-.4 G 1.304(he language is my personal)-3.804 F .66
+(choice for most projects for a reason, it')111 396.6 R 3.159(sf)-.55 G
+.659(ast and po)-3.259 F .659(werful; an)-.25 F 3.159(ys)-.15 G .659
+(olution I mak)-3.159 F 3.159(es)-.1 G .659(hould not cut)-3.159 F
+(that a)111 408.6 Q -.1(wa)-.15 G -.65(y.).1 G F3 2.5(1.2. A)111 444.6 R
+(solution)2.5 E/F4 10/Times-BoldItalic@0 SF(Zippy LANG)136.61 460.2 Q F2
+3.378(An)111 484.2 S -.15(ex)-3.378 G 3.378(tg).15 G .878
+(eneration language, for general use. Designed for k)-3.378 F .879
+(eeping code simple, neat and read-)-.1 F 3.307(able. It)111 496.2 R
+.807(will be similar to functional languages, kno)3.307 F .807
+(wn for there strict ability to k)-.25 F .806(eep code safe)-.1 F .067
+(and practical.)111 508.2 R .067(The language should be interpreted lik)
+5.067 F 2.567(ep)-.1 G .068(ython, perl and lisp, to allo)-2.667 F 2.568
+(wf)-.25 G .068(or easy de-)-2.568 F -.2(bu)111 520.2 S(gging tools.).2
+E(The goal of Zipp)111 544.2 Q 2.5(yi)-.1 G 2.5(st)-2.5 G 2.5(om)-2.5 G
(ak)-2.5 E 2.5(ec)-.1 G(odding easier)-2.5 E 2.5(,w)-.4 G
(hile remaining f)-2.5 E(ast, with a interpreter writen in C.)-.1 E F3
-2.5(1.3. Clients)111 568.2 R F2 1.194
-(In a project of this nature, the Client is e)136 583.8 R -.15(ve)-.25 G
-1.194(ry programmer ali).15 F -.15(ve)-.25 G 3.694(;w).15 G 1.194
-(hich is a pretty lar)-3.694 F(ge)-.18 E 1.732(scope. T)111 595.8 R
-4.232(on)-.8 G(arro)-4.232 E 4.232(wt)-.25 G 1.732(his do)-4.232 F 1.732
-(wn as much as possible, I will intervie)-.25 F 4.232(was)-.25 G 1.731
+2.5(1.3. Clients)111 580.2 R F2 1.194
+(In a project of this nature, the Client is e)136 595.8 R -.15(ve)-.25 G
+1.194(ry programmer ali).15 F -.15(ve)-.25 G 3.694(;w).15 G 1.193
+(hich is a pretty lar)-3.694 F(ge)-.18 E 1.731(scope. T)111 607.8 R
+4.231(on)-.8 G(arro)-4.231 E 4.232(wt)-.25 G 1.732(his do)-4.232 F 1.732
+(wn as much as possible, I will intervie)-.25 F 4.232(was)-.25 G 1.732
(mall handful of people)-4.232 F(throughout the project, of dif)111
-607.8 Q(ferent skill le)-.25 E -.15(ve)-.25 G(ls.).15 E F3 2.5
-(1.3.1. Client)111 643.8 R(1, Amy C)2.5 E F2 .803(My \214rst client is \
+619.8 Q(ferent skill le)-.25 E -.15(ve)-.25 G(ls.).15 E F3 2.5
+(1.3.1. Client)111 655.8 R(1, Amy C)2.5 E F2 .803(My \214rst client is \
a friend of mine, Amy C, she is a con\214dent programmer who has com-)
-136 659.4 R .038(pleted man)111 671.4 R 2.538(yc)-.15 G .038
-(omplicated projects. I am choosing her as a client as she can gi)-2.538
-F .337 -.15(ve m)-.25 H 2.537(et).15 G .037(echnical feed)-2.537 F
-(back on my project and its function/utility)111 683.4 Q(.)-.65 E F3 2.5
-(1.3.2. Client)111 707.4 R(2, a technical user)2.5 E 2.5(,b)-.92 G
-(ut not a pr)-2.7 E(ogrammer)-.18 E F2(some stuf)136 723 Q 2.5(fa)-.25 G
-(bout this person.)-2.5 E 0 Cg EP
+136 671.4 R .037(pleted man)111 683.4 R 2.537(yc)-.15 G .038
+(omplicated projects. I am choosing her as a client as she can gi)-2.537
+F .338 -.15(ve m)-.25 H 2.538(et).15 G .038(echnical feed)-2.538 F
+(back on my project and its function/utility)111 695.4 Q(.)-.65 E F3 2.5
+(1.3.2. Client)111 719.4 R(2, a technical user)2.5 E 2.5(,b)-.92 G
+(ut not a pr)-2.7 E(ogrammer)-.18 E 0 Cg EP
%%Page: 2 2
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Roman@0 SF(-2-)300.17 48 Q/F1 10/Times-Bold@0 SF 2.5
-(1.3.3. Client)111 84 R(3, a normie)2.5 E F0(some stuf)136 99.6 Q 2.5
-(fa)-.25 G(bout ho)-2.5 E 2.5(wt)-.25 G
-(he normie \214nds the completed project.)-2.5 E F1 2.5(1.3.4. Client)
-111 123.6 R(4, myself)2.5 E F0(I')136 139.2 Q .334 -.15(ve w)-.5 H .034
-(anted to tak).05 F 2.534(eo)-.1 G .034(ut a project lik)-2.534 F 2.534
-(et)-.1 G .034(his for a long long time, and this is the perfect oppor)
--2.534 F(-)-.2 E .598
-(tunity to do so, I will be assessing myself along the w)111 151.2 R
-.597(ay of this, b)-.1 F .597(uilding the project to my per)-.2 F(-)-.2
-E(sonal speci\214cation.)111 163.2 Q F1 2.5(1.4. Examples)111 199.2 R
-(of similar pr)2.5 E(ojects)-.18 E F0 .676(As Zipp)136 214.8 R 3.176(yw)
--.1 G .676(ill be interpreted, I should compare it to other such langua\
-ges; trying to com-)-3.176 F(pare it to C++/rust/go, isn')111 226.8 Q
-2.5(th)-.18 G(elpful as the)-2.5 E 2.5(ya)-.15 G(re so v)-2.5 E(ery dif)
--.15 E(ferent in the w)-.25 E(ay the)-.1 E 2.5(yf)-.15 G(unction.)-2.5 E
-(Zipp)111 250.8 Q 2.724(yi)-.1 G 2.724(sb)-2.724 G 2.724(yf)-2.724 G
-.224(ar not the \214rst language, and I'm only one person, so I can')
--2.824 F 2.724(te)-.18 G .224(xpect to beat others in)-2.874 F -2.15
--.25(ev e)111 262.8 T 2.5(rything. Ho).25 F(we)-.25 E -.15(ve)-.25 G 2.5
-(raf).15 G .5 -.25(ew s)-2.5 H(mall goals will gi).25 E .3 -.15(ve t)
--.25 H(he project a good scope.).15 E F1 2.5(1.4.1. Python)111 286.8 R
-F0 .272(Python is a high le)136 302.4 R -.15(ve)-.25 G 2.772(lO).15 G
-.272(OP language that w)-2.772 F .272(as designed in 1991. It w)-.1 F
-.273(as made to mak)-.1 F 2.773(ep)-.1 G(ro-)-2.773 E .106
-(gramming easy while still being able to use some of C')111 314.4 R
-2.605(sf)-.55 G 2.605(unctions. Although)-2.605 F .105
-(it has become stan-)2.605 F(dard for man)111 326.4 Q 2.5(yu)-.15 G
+/F0 10/Times-Roman@0 SF(-2-)300.17 48 Q(some stuf)136 84 Q 2.5(fa)-.25 G
+(bout this person.)-2.5 E/F1 10/Times-Bold@0 SF 2.5(1.3.3. Client)111
+108 R(3, a normie)2.5 E F0(some stuf)136 123.6 Q 2.5(fa)-.25 G(bout ho)
+-2.5 E 2.5(wt)-.25 G(he normie \214nds the completed project.)-2.5 E F1
+2.5(1.3.4. Client)111 147.6 R(4, myself)2.5 E F0(I')136 163.2 Q .335
+-.15(ve w)-.5 H .035(anted to tak).05 F 2.535(eo)-.1 G .034
+(ut a project lik)-2.535 F 2.534(et)-.1 G .034
+(his for a long long time, and this is the perfect oppor)-2.534 F(-)-.2
+E .597(tunity to do so, I will be assessing myself along the w)111 175.2
+R .598(ay of this, b)-.1 F .598(uilding the project to my per)-.2 F(-)
+-.2 E(sonal speci\214cation.)111 187.2 Q F1 2.5(1.4. Examples)111 223.2
+R(of similar pr)2.5 E(ojects)-.18 E F0 .676(As Zipp)136 238.8 R 3.176
+(yw)-.1 G .676(ill be interpreted, I should compare it to other such la\
+nguages; trying to com-)-3.176 F(pare it to C++/rust/go, isn')111 250.8
+Q 2.5(th)-.18 G(elpful as the)-2.5 E 2.5(ya)-.15 G(re so v)-2.5 E
+(ery dif)-.15 E(ferent in the w)-.25 E(ay the)-.1 E 2.5(yf)-.15 G
+(unction.)-2.5 E(Zipp)111 274.8 Q 2.724(yi)-.1 G 2.724(sb)-2.724 G 2.724
+(yf)-2.724 G .224
+(ar not the \214rst language, and I'm only one person, so I can')-2.824
+F 2.724(te)-.18 G .224(xpect to beat others in)-2.874 F -2.15 -.25(ev e)
+111 286.8 T(rything.).25 E(Belo)111 310.8 Q 2.5(wa)-.25 G(re a fe)-2.5 E
+2.5(wl)-.25 G(anguages that zipp)-2.5 E 2.5(ys)-.1 G
+(hould be compared to throught de)-2.5 E -.15(ve)-.25 G(lopemen:).15 E
+F1 2.5(1.4.1. Python)111 334.8 R F0 .273(Python is a high le)136 350.4 R
+-.15(ve)-.25 G 2.773(lO).15 G .272(OP language that w)-2.773 F .272
+(as designed in 1991. It w)-.1 F .272(as made to mak)-.1 F 2.772(ep)-.1
+G(ro-)-2.772 E .105
+(gramming easy while still being able to use some of C')111 362.4 R
+2.606(sf)-.55 G 2.606(unctions. Although)-2.606 F .106
+(it has become stan-)2.606 F(dard for man)111 374.4 Q 2.5(yu)-.15 G
(se cases, it is slo)-2.5 E 2.5(wa)-.25 G(nd inef)-2.5 E
-(\214cient, and v)-.25 E(ery bloated.)-.15 E(https://www)111 350.4 Q(.p)
--.65 E(ython.or)-.1 E(g/)-.18 E F1 2.5(1.4.2. Lisp)111 374.4 R F0 .549
-(Lisp is the second e)136 390 R -.15(ve)-.25 G 3.049(rp).15 G .549
-(rogramming language, de)-3.049 F -.15(ve)-.25 G .549(loped at MiT).15 F
-3.049(,i)-.74 G 3.05(ti)-3.049 G 3.05(st)-3.05 G .55
-(he \214rst functional)-3.05 F 1.45(language, creating man)111 402 R
+(\214cient, and v)-.25 E(ery bloated.)-.15 E(https://www)111 398.4 Q(.p)
+-.65 E(ython.or)-.1 E(g/)-.18 E(Zipp)111 422.4 Q 3.951(ys)-.1 G 1.451
+(hould tak)-3.951 F 3.951(ep)-.1 G 1.451(ythons high le)-4.051 F -.15
+(ve)-.25 G 3.951(la).15 G 1.451(bstractions, as the)-3.951 F 3.951(ym)
+-.15 G(ak)-3.951 E 3.951(ep)-.1 G 1.45(rograming v)-3.951 F 1.45
+(ery easy and it)-.15 F(should try and tak)111 434.4 Q 2.5(en)-.1 G
+(otes from its libaries as the)-2.5 E 2.5(ya)-.15 G
+(re mostly well writen, and well documented.)-2.5 E F1 2.5(1.4.2. Lisp)
+111 458.4 R F0 .549(Lisp is the second e)136 474 R -.15(ve)-.25 G 3.049
+(rp).15 G .549(rogramming language, de)-3.049 F -.15(ve)-.25 G .549
+(loped at MiT).15 F 3.049(,i)-.74 G 3.05(ti)-3.049 G 3.05(st)-3.05 G .55
+(he \214rst functional)-3.05 F 1.45(language, creating man)111 486 R
3.95(yc)-.15 G 1.45(ommon features lik)-3.95 F 3.95(eh)-.1 G 1.45
(igher order functions, recursion, and g)-3.95 F(arbage)-.05 E 1.68
-(collection. It is generally not used an)111 414 R 1.681
+(collection. It is generally not used an)111 498 R 1.681
(ymore as it feels old compared to other functional lan-)-.15 F
-(guages, lik)111 426 Q 2.5(eo)-.1 G(caml or hask)-2.5 E(ell.)-.1 E
-(https://lisp-lang.or)111 450 Q(g/)-.18 E F1 2.5(1.4.3. P)111 474 R(erl)
--.2 E F0 .038(Perl is scripting language designed for use in linux, whe\
-n bash is too slo)136 489.6 R 1.338 -.65(w, o)-.25 H 2.538(rn).65 G .038
-(ot suited for)-2.538 F .755(the job)111 501.6 R 5.755(.P)-.4 G .755
+(guages, lik)111 510 Q 2.5(eo)-.1 G(caml or hask)-2.5 E(ell.)-.1 E
+(https://lisp-lang.or)111 534 Q(g/)-.18 E(Zipp)111 558 Q 3.393(ys)-.1 G
+.893(hould try to tak)-3.393 F 3.393(ea)-.1 G .893
+(lot from the syntax of lisp, \(\) mak)-3.393 F 3.392(ei)-.1 G 3.392(te)
+-3.392 G .892(asy to see what parts of code)-3.392 F(will ef)111 570 Q
+(fect what, and mak)-.25 E 2.5(et)-.1 G(hings easy to parse.)-2.5 E F1
+2.5(1.4.3. P)111 594 R(erl)-.2 E F0 .038(Perl is scripting language des\
+igned for use in linux, when bash is too slo)136 609.6 R 1.339 -.65
+(w, o)-.25 H 2.539(rn).65 G .039(ot suited for)-2.539 F .755(the job)111
+621.6 R 5.755(.P)-.4 G .755
(erl is often described as the glue of the uni)-5.755 F -.15(ve)-.25 G
.755(rse \(see xkcd https://3d.xkcd.com/224/\).).15 F
-(Its syntax is quite strange ho)111 513.6 Q(we)-.25 E -.15(ve)-.25 G 2.5
+(Its syntax is quite strange ho)111 633.6 Q(we)-.25 E -.15(ve)-.25 G 2.5
(ra).15 G(nd it is slo)-2.5 E 3.8 -.65(w. M)-.25 H
(aking it poorly suited to).65 E -.1(wa)-.25 G(rds general use.).1 E
-(https://www)111 537.6 Q(.perl.or)-.65 E(g/)-.18 E F1 2.5
-(1.5. Questionnair)111 573.6 R(es)-.18 E F0 2.133
-(It is important to get feedback from end users, so I will tak)136 589.2
-R 4.632(em)-.1 G 2.132(ultiple questionnaires)-4.632 F .852(throughout \
+(https://www)111 657.6 Q(.perl.or)-.65 E(g/)-.18 E(Zipp)111 681.6 Q
+2.805(ys)-.1 G .305(hould tak)-2.805 F 2.805(ef)-.1 G .305(rom perls mi\
+nimalisum, it is a small language that is of a similar size to bash)
+-2.805 F .407(or zsh, while feeling closer to p)111 693.6 R .406
+(ython. If zipp)-.1 F 2.906(yc)-.1 G .406(an achie)-2.906 F .706 -.15
+(ve a s)-.25 H .406(imilar small size, while remaining).15 F(po)111
+705.6 Q(werful I will be pleased)-.25 E 0 Cg EP
+%%Page: 3 3
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF(-3-)300.17 48 Q/F1 10/Times-Bold@0 SF 2.5
+(1.5. Questionnair)111 84 R(es)-.18 E F0 2.133
+(It is important to get feedback from end users, so I will tak)136 99.6
+R 4.633(em)-.1 G 2.133(ultiple questionnaires)-4.633 F .852(throughout \
the project. I will then use them to slightly edit the requirements of \
-my project this)111 601.2 R(should mak)111 613.2 Q 2.5(et)-.1 G
+my project this)111 111.6 R(should mak)111 123.6 Q 2.5(et)-.1 G
(he \214nal outcome more helpful and what people w)-2.5 E(ant.)-.1 E
-(In the section bello)111 637.2 Q 2.5(wy)-.25 G
+(In the section bello)111 147.6 Q 2.5(wy)-.25 G
(ou will \214nd questionnaires from the analyses stage of my project.)
--2.5 E F1 2.5(1.5.1. Questionnair)111 661.2 R 2.5(e1f)-.18 G(or Amy C)
--2.75 E/F2 10/Times-BoldItalic@0 SF([30th April 2024])111.87 685.2 Q
+-2.5 E F1 2.5(1.5.1. Questionnair)111 171.6 R 2.5(e1f)-.18 G(or Amy C)
+-2.75 E/F2 10/Times-BoldItalic@0 SF([30th April 2024])111.87 195.6 Q
(answ)3.81 E(ered by amy)-.1 E 2.5(,s)-.37 G(ee pull request she left)
--2.5 E F1 2.5(1.5.1.1. What)111 709.2 R(do y)2.5 E
+-2.5 E F1 2.5(1.5.1.1. What)111 219.6 R(do y)2.5 E
(ou \214nd the most important in a language? \(eg: speed, r)-.25 E
-(eadability\))-.18 E F0(Speed, readability)136 724.8 Q 2.5(,d)-.65 G(eb)
+(eadability\))-.18 E F0(Speed, readability)136 235.2 Q 2.5(,d)-.65 G(eb)
-2.5 E(ugging ease and disk space ef)-.2 E(\214cienc)-.25 E -.65(y.)-.15
-G 0 Cg EP
-%%Page: 3 3
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF(-3-)300.17 48 Q/F1 10/Times-Bold@0 SF 3.168
-(1.5.1.2. What)111 84 R .668(tools ar)3.168 F 3.168(ei)-.18 G .668
-(mportant f)-3.168 F .668(or a language to ha)-.25 F -.1(ve)-.25 G 3.167
-(?\().1 G .667(eg: pkg-manager)-3.167 F 3.167(,I)-.92 G .667
-(DE integra-)-3.167 F(tion\))111 96 Q F0 1.14(IDE inte)136 111.6 R 1.14
-(gration \(things lik)-.15 F 3.641(et)-.1 G 1.141(ab complete and deb)
--3.641 F 1.141(ugging tools\), a package manager)-.2 F 3.641(,a)-.4 G
-(nd)-3.641 E
+G F1 3.167(1.5.1.2. What)111 259.2 R .667(tools ar)3.167 F 3.167(ei)-.18
+G .668(mportant f)-3.167 F .668(or a language to ha)-.25 F -.1(ve)-.25 G
+3.168(?\().1 G .668(eg: pkg-manager)-3.168 F 3.168(,I)-.92 G .668
+(DE integra-)-3.168 F(tion\))111 271.2 Q F0 1.141(IDE inte)136 286.8 R
+1.141(gration \(things lik)-.15 F 3.641(et)-.1 G 1.141
+(ab complete and deb)-3.641 F 1.141(ugging tools\), a package manager)
+-.2 F 3.64(,a)-.4 G(nd)-3.64 E
(the ability to interact with the user through the command line easily)
-111 123.6 Q(.)-.65 E F1 3.364(1.5.1.3. What)111 147.6 R(featur)3.363 E
+111 298.8 Q(.)-.65 E F1 3.363(1.5.1.3. What)111 322.8 R(featur)3.363 E
.863(es do y)-.18 F .863(ou lik)-.25 F 3.363(ef)-.1 G -.18(ro)-3.363 G
3.363(mo).18 G .863(ther languages \(eg: C')-3.363 F 3.363(sa)-.37 G(dv)
--3.363 E .863(anced memory man-)-.1 F(agement, hask)111 159.6 Q(ell')-.1
+-3.363 E .863(anced memory man-)-.1 F(agement, hask)111 334.8 Q(ell')-.1
E 2.5(st)-.37 G(erse syntax\))-2.5 E F0 .26(The ability to pass the mem\
-ory reference of an object or function and a collection of b)136 175.2 R
-(uilt-)-.2 E(in or standard functions lik)111 187.2 Q 2.5(e")-.1 G
-(print", "split", or "sort".)-2.5 E F1 2.5(1.5.1.4. What)111 211.2 R
+ory reference of an object or function and a collection of b)136 350.4 R
+(uilt-)-.2 E(in or standard functions lik)111 362.4 Q 2.5(e")-.1 G
+(print", "split", or "sort".)-2.5 E F1 2.5(1.5.1.4. What)111 386.4 R
(do y)2.5 E(ou want to pr)-.25 E
(ogram in this language \(eg: websites, lo)-.18 E 2.5(wl)-.1 G -2.3 -.15
(ev e)-2.5 H 2.5(ls).15 G(ystems\))-2.5 E F0
-(Lightweight command line tools and web back ends.)136 226.8 Q F1 2.5
-(1.5.1.5. Do)111 250.8 R -.25(yo)2.5 G 2.5(ui).25 G
+(Lightweight command line tools and web back ends.)136 402 Q F1 2.5
+(1.5.1.5. Do)111 426 R -.25(yo)2.5 G 2.5(ui).25 G
(ntend to use graphics in the pr)-2.5 E(ograms y)-.18 E(ou write?)-.25 E
-F0(No.)136 266.4 Q F1 2.5(1.5.1.6. W)111 290.4 R(ould y)-.75 E(ou pr)
+F0(No.)136 441.6 Q F1 2.5(1.5.1.6. W)111 465.6 R(ould y)-.75 E(ou pr)
-.25 E(efer a language that f)-.18 E(ocuses on ease of use, or po)-.25 E
-(wer of the code?)-.1 E F0 2.5(Il)136 306 S(ik)-2.5 E 2.5(eag)-.1 G
-(ood balance between the tw)-2.5 E(o.)-.1 E F1 2.5(1.5.1.7. What)111 330
-R(wer)2.5 E 2.5(ey)-.18 G(our last 3 pr)-2.75 E(ojects? \(could they ha)
--.18 E .2 -.1(ve b)-.25 H(een written in Zippy?\)).1 E F0 2.939(Aw)136
-345.6 S .439(ebsite, a small command-line tool and a midi k)-2.939 F
--.15(ey)-.1 G .438(board \(program runs on a Raspberry).15 F(Pi Pico\).)
-111 357.6 Q F1 3.39(1.5.1.8. Ho)111 381.6 R 3.39(wm)-.1 G .89
-(any languages w)-3.39 F .89(ould y)-.1 F .891(ou use on a single pr)
--.25 F .891(oject? \(could Zippy be used in)-.18 F -.25(yo)111 393.6 S
-(ur codebase?\)).25 E F0 2.5(It)136 409.2 S
+(wer of the code?)-.1 E F0 2.5(Il)136 481.2 S(ik)-2.5 E 2.5(eag)-.1 G
+(ood balance between the tw)-2.5 E(o.)-.1 E F1 2.5(1.5.1.7. What)111
+505.2 R(wer)2.5 E 2.5(ey)-.18 G(our last 3 pr)-2.75 E
+(ojects? \(could they ha)-.18 E .2 -.1(ve b)-.25 H
+(een written in Zippy?\)).1 E F0 2.938(Aw)136 520.8 S .438
+(ebsite, a small command-line tool and a midi k)-2.938 F -.15(ey)-.1 G
+.439(board \(program runs on a Raspberry).15 F(Pi Pico\).)111 532.8 Q F1
+3.391(1.5.1.8. Ho)111 556.8 R 3.391(wm)-.1 G .891(any languages w)-3.391
+F .891(ould y)-.1 F .891(ou use on a single pr)-.25 F .89
+(oject? \(could Zippy be used in)-.18 F -.25(yo)111 568.8 S
+(ur codebase?\)).25 E F0 2.5(It)136 584.4 S
(ry to use as little languages in a project as possible, so lik)-2.5 E
(ely not in an e)-.1 E(xisting project.)-.15 E F1 2.5(1.5.1.9. Do)111
-433.2 R -.25(yo)2.5 G 2.5(uc).25 G(ar)-2.5 E 2.5(ef)-.18 G(or lo)-2.75 E
+608.4 R -.25(yo)2.5 G 2.5(uc).25 G(ar)-2.5 E 2.5(ef)-.18 G(or lo)-2.75 E
2.5(wl)-.1 G -2.3 -.15(ev e)-2.5 H 2.5(lc).15 G(ontr)-2.5 E(ol, or w)
-.18 E(ould y)-.1 E(ou pr)-.25 E(efer high le)-.18 E -.1(ve)-.15 G 2.5
-(la).1 G(bstractions?)-2.5 E F0 2.932(It)136 448.8 S .432(hink lo)-2.932
-F(w-le)-.25 E -.15(ve)-.25 G 2.932(lc).15 G .432(ontrol is v)-2.932 F
-.432(ery important, b)-.15 F .431(ut high-le)-.2 F -.15(ve)-.25 G 2.931
-(la).15 G .431(bstractions are con)-2.931 F -.15(ve)-.4 G .431
-(nient, so a).15 F(good balance between the tw)111 460.8 Q 2.5(oi)-.1 G
-2.5(sb)-2.5 G(est.)-2.5 E F1 4.18(1.5.1.10. W)111 484.8 R 1.68(ould y)
+(la).1 G(bstractions?)-2.5 E F0 2.931(It)136 624 S .431(hink lo)-2.931 F
+(w-le)-.25 E -.15(ve)-.25 G 2.931(lc).15 G .431(ontrol is v)-2.931 F
+.431(ery important, b)-.15 F .432(ut high-le)-.2 F -.15(ve)-.25 G 2.932
+(la).15 G .432(bstractions are con)-2.932 F -.15(ve)-.4 G .432
+(nient, so a).15 F(good balance between the tw)111 636 Q 2.5(oi)-.1 G
+2.5(sb)-2.5 G(est.)-2.5 E F1 4.181(1.5.1.10. W)111 660 R 1.681(ould y)
-.75 F 1.681(ou be happy to de)-.25 F -.1(ve)-.15 G 1.681
-(lop libraries f).1 F 1.681(or things that ar)-.25 F 1.681(en't alr)-.18
-F 1.681(eady imple-)-.18 F(mented \(eg: an SQL library\))111 496.8 Q F0
-(Potentially if it is simple enough to implement ne)136 512.4 Q 2.5(wt)
--.25 G(hings.)-2.5 E F1 2.5(1.5.2. Notes)111 548.4 R(fr)2.5 E
-(om questionnair)-.18 E 2.5(e1)-.18 G F0 2.995(Some of the k)136 564 R
-3.295 -.15(ey t)-.1 H 2.994(hings that I'm taking a).15 F -.1(wa)-.15 G
-5.494(yf).1 G 2.994(rom this \214rst questionnaire, are my)-5.494 F .314
-(client/users initial needs and use cases.)111 576 R 2.814(It)5.314 G
+(lop libraries f).1 F 1.681(or things that ar)-.25 F 1.68(en't alr)-.18
+F 1.68(eady imple-)-.18 F(mented \(eg: an SQL library\))111 672 Q F0
+(Potentially if it is simple enough to implement ne)136 687.6 Q 2.5(wt)
+-.25 G(hings.)-2.5 E F1 2.5(1.5.2. Notes)111 723.6 R(fr)2.5 E
+(om questionnair)-.18 E 2.5(e1)-.18 G 0 Cg EP
+%%Page: 4 4
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF(-4-)300.17 48 Q 2.994(Some of the k)136 84 R
+3.294 -.15(ey t)-.1 H 2.994(hings that I'm taking a).15 F -.1(wa)-.15 G
+5.494(yf).1 G 2.995(rom this \214rst questionnaire, are my)-5.494 F .314
+(client/users initial needs and use cases.)111 96 R 2.814(It)5.314 G
.314(hink it')-2.814 F 2.814(sc)-.55 G .314
-(lear my language can be of assistance to my)-2.814 F .843(client, Zipp)
-111 588 R 3.343(yw)-.1 G .842(ill be a good language for web back ends \
-and small command line tools, which)-3.343 F(my client e)111 600 Q
-(xpressed interested in.)-.15 E 2.563<498c>111 624 S .063(nd the f)
--2.563 F .063(act my client is w)-.1 F .064(orried by e)-.1 F -.15(xe)
+(lear my language can be of assistance to my)-2.814 F .842(client, Zipp)
+111 108 R 3.342(yw)-.1 G .843(ill be a good language for web back ends \
+and small command line tools, which)-3.342 F(my client e)111 120 Q
+(xpressed interested in.)-.15 E 2.564<498c>111 144 S .064(nd the f)
+-2.564 F .064(act my client is w)-.1 F .064(orried by e)-.1 F -.15(xe)
-.15 G .064(cutable size interesting, ho).15 F(we)-.25 E -.15(ve)-.25 G
-2.564(rId).15 G .064(oubt it will be an is-)-2.564 F
-(sue; a ballooning code-base is unlik)111 636 Q
-(ely as only one person is writing the project.)-.1 E 2.56(Ia)111 660 S
+2.564(rI).15 G .063(doubt it will be an is-)-.001 F
+(sue; a ballooning code-base is unlik)111 156 Q
+(ely as only one person is writing the project.)-.1 E 2.56(Ia)111 180 S
2.56(ma)-2.56 G .06(lso taking on the f)-2.56 F .06
(act that my client w)-.1 F .06
-(ants good command line tools, so a pkg-manager and)-.1 F -.2(bu)111 672
+(ants good command line tools, so a pkg-manager and)-.1 F -.2(bu)111 192
S(ndler should be a priority).2 E 2.5(,p)-.65 G(erhaps the)-2.5 E 2.5
(yc)-.15 G(ould be written in Zipp)-2.5 E 2.5(ya)-.1 G
-(fter the interpreter is done.)-2.5 E F1 2.5(1.5.3. The)111 708 R
-(\214rst elements of the pr)2.5 E(oject)-.18 E F0 .172(At this stage I \
-can say that I'm con\214dent in my project and its scope. I ha)136 723.6
-R .473 -.15(ve a g)-.2 H .173(oal in mind).15 F 0 Cg EP
-%%Page: 4 4
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF(-4-)300.17 48 Q(for it.)111 84 Q/F1 10
-/Times-Bold@0 SF(The k)111 108 Q(ey things to tak)-.1 E 2.5(ea)-.1 G
-(way fr)-2.5 E(om this section ar)-.18 E(e:)-.18 E(----)111 132 Q F0
-(Mak)2.5 E 2.5(eah)-.1 G(igh le)-2.5 E -.15(ve)-.25 G 2.5(ll).15 G
+(fter the interpreter is done.)-2.5 E/F1 10/Times-Bold@0 SF 2.5
+(1.5.3. The)111 228 R(\214rst elements of the pr)2.5 E(oject)-.18 E F0
+.173(At this stage I can say that I'm con\214dent in my project and its\
+ scope. I ha)136 243.6 R .472 -.15(ve a g)-.2 H .172(oal in mind).15 F
+(for it.)111 255.6 Q F1(The k)111 279.6 Q(ey things to tak)-.1 E 2.5(ea)
+-.1 G(way fr)-2.5 E(om this section ar)-.18 E(e:)-.18 E(----)111 303.6 Q
+F0(Mak)2.5 E 2.5(eah)-.1 G(igh le)-2.5 E -.15(ve)-.25 G 2.5(ll).15 G
(anguage with a useable set of features, to replace C in man)-2.5 E 2.5
-(ys)-.15 G(ituations.)-2.5 E F1(----)111 156 Q F0 -.25(Ke)2.5 G
+(ys)-.15 G(ituations.)-2.5 E F1(----)111 327.6 Q F0 -.25(Ke)2.5 G
(ep the language readable and easy).25 E 2.5(,w)-.65 G(ith po)-2.5 E
-(werful tools a)-.25 E -.25(va)-.2 G(ilable.).25 E F1(----)111 180 Q F0
-(Ensure the language is well supported with tools lik)2.5 E 2.5(eap)-.1
-G(kg-manager)-2.5 E(.)-.55 E F1 2.5(1.6. Abstract)111 216 R
+(werful tools a)-.25 E -.25(va)-.2 G(ilable.).25 E F1(----)111 351.6 Q
+F0(Ensure the language is well supported with tools lik)2.5 E 2.5(eap)
+-.1 G(kg-manager)-2.5 E(.)-.55 E F1 2.5(1.6. Abstract)111 387.6 R
(data structur)2.5 E(es and ther)-.18 E 2.5(ei)-.18 G(mplementations)
--2.5 E F0 1.242(In lar)136 231.6 R 1.241(ger projects, when a programme\
-r needs a data structure that the language the)-.18 F 3.741(ya)-.15 G
-(re)-3.741 E(writing in doesn')111 243.6 Q 2.5(tp)-.18 G(ro)-2.5 E
+-2.5 E F0 1.241(In lar)136 403.2 R 1.241(ger projects, when a programme\
+r needs a data structure that the language the)-.18 F 3.742(ya)-.15 G
+(re)-3.742 E(writing in doesn')111 415.2 Q 2.5(tp)-.18 G(ro)-2.5 E
(vide, the)-.15 E 2.5(yw)-.15 G(ill need to mak)-2.5 E 2.5(et)-.1 G
-(heir o)-2.5 E(wn.)-.25 E(Bello)111 267.6 Q 2.5(wa)-.25 G(re a fe)-2.5 E
+(heir o)-2.5 E(wn.)-.25 E(Bello)111 439.2 Q 2.5(wa)-.25 G(re a fe)-2.5 E
2.5(we)-.25 G(xamples of these data structures that C doesn')-2.65 E 2.5
-(ta)-.18 G(lready pro)-2.5 E(vide.)-.15 E F1 2.5(1.6.1. Link)111 291.6 R
-(ed lists)-.1 E F0 .381(this is an alternati)136 307.2 R .681 -.15(ve i)
+(ta)-.18 G(lready pro)-2.5 E(vide.)-.15 E F1 2.5(1.6.1. Link)111 463.2 R
+(ed lists)-.1 E F0 .382(this is an alternati)136 478.8 R .682 -.15(ve i)
-.25 H .381
(mplementation of a list, where you store some data, and the memory).15
-F .044(address to the ne)111 319.2 R .044(xt node. Then you can mo)-.15
+F .043(address to the ne)111 490.8 R .044(xt node. Then you can mo)-.15
F .344 -.15(ve t)-.15 H .044
(hrough the list by reading the data then reading the).15 F
-(data of the ne)111 331.2 Q(xt node, and then repeating until the 'ne)
+(data of the ne)111 502.8 Q(xt node, and then repeating until the 'ne)
-.15 E(xt' part of the node is empty)-.15 E(.)-.65 E 1.106
(In C this is easy to implement as you can \214nd a memory address v)111
-355.2 R 1.106(ery easily with '&' to \214nd)-.15 F .168
-(where a bit of data is stored. I will need to use a ')111 367.2 R .168
-(struct', which is a bit lik)-.55 F 2.668(eac)-.1 G .168(lass in C \(ho)
--2.668 F(we)-.25 E -.15(ve)-.25 G(r).15 E(you can')111 379.2 Q 2.5(ta)
+526.8 R 1.105(ery easily with '&' to \214nd)-.15 F .168
+(where a bit of data is stored. I will need to use a ')111 538.8 R .168
+(struct', which is a bit lik)-.55 F 2.669(eac)-.1 G .169(lass in C \(ho)
+-2.669 F(we)-.25 E -.15(ve)-.25 G(r).15 E(you can')111 550.8 Q 2.5(ta)
-.18 G(ttach a function to it\). A simple implementation looks lik)-2.5
-E 2.5(et)-.1 G(his:)-2.5 E(typedef struct ll {)111 403.2 Q -.2(vo)136
-427.2 S(id *data; // the data of the node).2 E(ll *ne)136 451.2 Q
-(xt; // the ne)-.15 E(xt node)-.15 E 2.5(}l)111 475.2 S(l;)-2.5 E .622
-(The pro')111 499.2 R 3.122(so)-.55 G 3.122(fal)-3.122 G(ink)-3.122 E
-.622(ed list are the f)-.1 F .622(act that the)-.1 F 3.123(yc)-.15 G
-.623(an ha)-3.123 F .923 -.15(ve d)-.2 H .623
+E 2.5(et)-.1 G(his:)-2.5 E(typedef struct ll {)111 574.8 Q -.2(vo)136
+598.8 S(id *data; // the data of the node).2 E(ll *ne)136 622.8 Q
+(xt; // the ne)-.15 E(xt node)-.15 E 2.5(}l)111 646.8 S(l;)-2.5 E .623
+(The pro')111 670.8 R 3.123(so)-.55 G 3.123(fal)-3.123 G(ink)-3.123 E
+.623(ed list are the f)-.1 F .623(act that the)-.1 F 3.122(yc)-.15 G
+.622(an ha)-3.122 F .922 -.15(ve d)-.2 H .622
(ata appended to the start or end easily).15 F
-(by changing the root node, or the ne)111 511.2 Q(xt node.)-.15 E(Link)
-111 535.2 Q 1.118(ed lists ha)-.1 F 1.417 -.15(ve a f)-.2 H 1.617 -.25
+(by changing the root node, or the ne)111 682.8 Q(xt node.)-.15 E(Link)
+111 706.8 Q 1.117(ed lists ha)-.1 F 1.417 -.15(ve a f)-.2 H 1.617 -.25
(ew d).15 H -.25(ow).25 G 1.117(nsides, for e).25 F 1.117
(xample you can')-.15 F 3.617(tm)-.18 G 1.417 -.15(ove t)-3.617 H 1.117
-(hrough them backw).15 F 1.117(ards, and)-.1 F
-(unless you store it on its o)111 547.2 Q
+(hrough them backw).15 F 1.118(ards, and)-.1 F
+(unless you store it on its o)111 718.8 Q
(wn, you cant \214nd the length of it in a f)-.25 E(ast w)-.1 E(ay)-.1 E
-(.)-.65 E .475(In my project I w)111 571.2 R .475(ould lik)-.1 F 2.975
-(et)-.1 G 2.975(ou)-2.975 G .475(se link)-2.975 F .476
-(ed list in the AST \(see later sections for info\), and to store)-.1 F
-(lists in the language.)111 583.2 Q F1 2.5(1.6.2. Dictionaries)111 607.2
-R F0 2.75(Ad)136 622.8 S .249(ictionary is a simple data structure that\
- just stores, a bit of data, and a number or string)-2.75 F
-(to identify it.)111 634.8 Q 2.5(Ad)5 G(ictionary lik)-2.5 E 2.5(eal)-.1
-G(ink)-2.5 E(ed list can be implemented with a struct in c lik)-.1 E 2.5
-(es)-.1 G(o:)-2.5 E(typedef struct dict {)111 658.8 Q -.2(vo)136 682.8 S
-(id *data; // the data of the dict).2 E(int id; // the id of the dict)
-136 706.8 Q 2.5(}d)111 730.8 S(ict;)-2.5 E 0 Cg EP
+(.)-.65 E 0 Cg EP
%%Page: 5 5
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Roman@0 SF(-5-)300.17 48 Q .461
-(In my project I think I could use a link)111 84 R .461
-(ed list represent a zipp)-.1 F 2.962(yv)-.1 G .462
-(ariable and an ID that i can use)-3.212 F
-(to identify it, this could mak)111 96 Q 2.5(ee)-.1 G -.15(xe)-2.65 G
+/F0 10/Times-Roman@0 SF(-5-)300.17 48 Q .476(In my project I w)111 84 R
+.476(ould lik)-.1 F 2.976(et)-.1 G 2.976(ou)-2.976 G .476(se link)-2.976
+F .475(ed list in the AST \(see later sections for info\), and to store)
+-.1 F(lists in the language.)111 96 Q/F1 10/Times-Bold@0 SF 2.5
+(1.6.2. Dictionaries)111 120 R F0 2.749(Ad)136 135.6 S .249(ictionary i\
+s a simple data structure that just stores, a bit of data, and a number\
+ or string)-2.749 F(to identify it.)111 147.6 Q 2.5(Ad)5 G
+(ictionary lik)-2.5 E 2.5(eal)-.1 G(ink)-2.5 E
+(ed list can be implemented with a struct in c lik)-.1 E 2.5(es)-.1 G
+(o:)-2.5 E(typedef struct dict {)111 171.6 Q -.2(vo)136 195.6 S
+(id *data; // the data of the dict).2 E(int id; // the id of the dict)
+136 219.6 Q 2.5(}d)111 243.6 S(ict;)-2.5 E .462
+(In my project I think I could use a link)111 267.6 R .461
+(ed list represent a zipp)-.1 F 2.961(yv)-.1 G .461
+(ariable and an ID that i can use)-3.211 F
+(to identify it, this could mak)111 279.6 Q 2.5(ee)-.1 G -.15(xe)-2.65 G
(cution f).15 E(aster as i can compare ID')-.1 E 2.5(sr)-.55 G
-(ather than string v)-2.5 E(alues)-.25 E/F1 10/Times-Bold@0 SF 2.5
-(1.7. Pr)111 132 R(ototyping hard featur)-.18 E(es)-.18 E 2.5
-(1.7.1. Abstract)111 156 R(Syntax T)2.5 E -.18(re)-.74 G
-(es \(AST\) theory).18 E F0 .118(In a programming language man)136 171.6
-R 2.618(ya)-.15 G .117(bstract data types will be used to allo)-2.618 F
-2.617(wt)-.25 G .117(he code to e)-2.617 F -.15(xe)-.15 G(-).15 E .827
-(cute, ho)111 183.6 R(we)-.25 E -.15(ve)-.25 G 3.327(rIt).15 G .827
-(hink the hardest part of this is an abstract syntax tree.)-3.327 F .828
+(ather than string v)-2.5 E(alues)-.25 E F1 2.5(1.7. Pr)111 315.6 R
+(ototyping hard featur)-.18 E(es)-.18 E 2.5(1.7.1. Abstract)111 339.6 R
+(Syntax T)2.5 E -.18(re)-.74 G(es \(AST\) theory).18 E F0 .117
+(In a programming language man)136 355.2 R 2.617(ya)-.15 G .118
+(bstract data types will be used to allo)-2.617 F 2.618(wt)-.25 G .118
+(he code to e)-2.618 F -.15(xe)-.15 G(-).15 E .828(cute, ho)111 367.2 R
+(we)-.25 E -.15(ve)-.25 G 3.328(rIt).15 G .827
+(hink the hardest part of this is an abstract syntax tree.)-3.328 F .827
(This is a data structure)5.827 F .376
(that holds the code in an ordered form that can be analysed and e)111
-195.6 R -.15(xe)-.15 G .376(cuted in a simple w).15 F(ay)-.1 E 2.876(.I)
+379.2 R -.15(xe)-.15 G .376(cuted in a simple w).15 F(ay)-.1 E 2.876(.I)
-.65 G 2.876(ti)-2.876 G 2.876(sa)-2.876 G .084
-(tree structure, with the top node being a root and all lo)111 207.6 R
-.084(wer nodes being things needed to calculate)-.25 F .394
-(the root. It can be used not only for code b)111 219.6 R .393
-(ut also for mathematical e)-.2 F .393(xpressions. I think the easi-)
--.15 F(est w)111 231.6 Q(ay to sho)-.1 E 2.5(wi)-.25 G 2.5(ti)-2.5 G 2.5
-(sv)-2.5 G(ia a mathematical e)-2.5 E(xample)-.15 E -.8(Ta)111 255.6 S
+(tree structure, with the top node being a root and all lo)111 391.2 R
+.084(wer nodes being things needed to calculate)-.25 F .393
+(the root. It can be used not only for code b)111 403.2 R .393
+(ut also for mathematical e)-.2 F .394(xpressions. I think the easi-)
+-.15 F(est w)111 415.2 Q(ay to sho)-.1 E 2.5(wi)-.25 G 2.5(ti)-2.5 G 2.5
+(sv)-2.5 G(ia a mathematical e)-2.5 E(xample)-.15 E -.8(Ta)111 439.2 S
.2 -.1(ke t).8 H(he follo).1 E 2.5(we)-.25 G(xpression for e)-2.65 E
-(xample:)-.15 E(\(1 + 10 * \(3 - \(2 * 4\)\)\))111 279.6 Q 1.6 -.8(We k)
-111 303.6 T(no).8 E 2.5(wt)-.25 G(hat this is equal to -49)-2.5 E(Ho)111
-327.6 Q(we)-.25 E -.15(ve)-.25 G 2.916(rf).15 G .416
-(or a computer this is f)-2.916 F .416
+(xample:)-.15 E(\(1 + \(10 * \(3 - \(2 * 4\)\)\)\))111 463.2 Q 1.6 -.8
+(We k)111 487.2 T(no).8 E 2.5(wt)-.25 G(hat this is equal to -49)-2.5 E
+(Ho)111 511.2 Q(we)-.25 E -.15(ve)-.25 G 2.917(rf).15 G .417
+(or a computer this is f)-2.917 F .416
(ar harder to understand. This is because it has no understanding)-.1 F
-(of order of operation)111 339.6 Q 1.6 -.8(To s)111 363.6 T(olv).8 E 2.5
-(et)-.15 G(his we use an AST \(abstract syntax tree\))-2.5 E .188
-(When you solv)111 387.6 R 2.688(et)-.15 G .187(hat e)-2.688 F .187
+(of order of operation)111 523.2 Q 1.6 -.8(To s)111 547.2 T(olv).8 E 2.5
+(et)-.15 G(his we use an AST \(abstract syntax tree\))-2.5 E .187
+(When you solv)111 571.2 R 2.687(et)-.15 G .187(hat e)-2.687 F .187
(xpression you kno)-.15 F 2.687(wt)-.25 G 2.687(os)-2.687 G .187
(tart with \(2 * 4\), then 3 - the answer to that and so)-2.687 F(on)111
-399.6 Q 1.6 -.8(We c)111 423.6 T(an represent the steps as a tree lik).8
-E 2.5(es)-.1 G(o:)-2.5 E 14 14 121 121 -121 121 245.5 568.6 PBEGIN
+583.2 Q 1.6 -.8(We c)111 607.2 T(an represent the steps as a tree lik).8
+E 2.5(es)-.1 G(o:)-2.5 E 14 14 121 121 -121 121 245.5 752.2 PBEGIN
%%BeginDocument: ast.ps
%!PS-Adobe-3.0
%%Creator: GIMP PostScript file plug-in V 1.17 by Peter Kirchgessner
@@ -2137,32 +2155,89 @@ showpage
end
%%EOF
%%EndDocument
-end PEND 1.265(As you can see, you need to e)136 596.2 R -.25(va)-.25 G
-1.266(luate the e).25 F 1.266(xpression in the most brack)-.15 F 1.266
-(ets \214rst, then the)-.1 F(ne)111 608.2 Q(xt, and so on, w)-.15 E
-(orking you w)-.1 E(ay up)-.1 E -1.1(Yo)111 632.2 S 2.647(uc)1.1 G .147
-(an e)-2.647 F -.25(va)-.25 G .147(luate code in a similar w).25 F(ay)
+end PEND 0 Cg EP
+%%Page: 6 6
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF(-6-)300.17 48 Q 1.266
+(As you can see, you need to e)136 84 R -.25(va)-.25 G 1.266
+(luate the e).25 F 1.265(xpression in the most brack)-.15 F 1.265
+(ets \214rst, then the)-.1 F(ne)111 96 Q(xt, and so on, w)-.15 E
+(orking you w)-.1 E(ay up)-.1 E -1.1(Yo)111 120 S 2.646(uc)1.1 G .146
+(an e)-2.646 F -.25(va)-.25 G .147(luate code in a similar w).25 F(ay)
-.1 E 2.647(,t)-.65 G .147
(reating each operation \(such as +-*/\) as functions, doing)-2.647 F
-1.034(the most deeply nested function \214rst, then w)111 644.2 R 1.034
-(orking up.)-.1 F 1.034(Each e)6.034 F 1.035
-(xpression can be represented in)-.15 F(this tree, then to sho)111 656.2
-Q 2.5(waw)-.25 G(hole program you can create a list of trees)-2.5 E F1
-2.5(1.7.2. Implementing)111 692.2 R(AST')2.5 E(s)-.37 E F0 .344
-(As a prototype i will mak)136 707.8 R 2.844(eap)-.1 G .343
-(rogram that can tak)-2.844 F 2.843(em)-.1 G .343(athematical e)-2.843 F
-.343(xpressions and e)-.15 F -.25(va)-.25 G(luate).25 E(them, and allo)
-111 719.8 Q(wing for functions \(in the form f\(x\)\).)-.25 E
-(It will do this via AST')5 E(s)-.55 E 0 Cg EP
-%%Page: 6 6
+1.035(the most deeply nested function \214rst, then w)111 132 R 1.034
+(orking up.)-.1 F 1.034(Each e)6.034 F 1.034
+(xpression can be represented in)-.15 F(this tree, then to sho)111 144 Q
+2.5(waw)-.25 G(hole program you can create a list of trees)-2.5 E/F1 10
+/Times-Bold@0 SF 2.5(1.7.2. Implementing)111 180 R(AST')2.5 E(s)-.37 E
+F0 .343(As a prototype i will mak)136 195.6 R -5.342 2.843(ea p)-.1 H
+.344(rogram that can tak)-2.843 F 2.844(em)-.1 G .344(athematical e)
+-2.844 F .344(xpressions and e)-.15 F -.25(va)-.25 G(luate).25 E
+(them, and allo)111 207.6 Q(wing for functions \(in the form f\(x\)\).)
+-.25 E(It will do this via AST')5 E(s)-.55 E .718(This prototype tak)111
+231.6 R .718(es 173 lines of code, it tak)-.1 F .718
+(es a string as a cmd line ar)-.1 F .717(gument then con)-.18 F -.15(ve)
+-.4 G .717(rts it).15 F .177
+(into an abstract syntax tree, and \214nally it e)111 243.6 R -.15(xe)
+-.15 G .178(cutes it. This is just a simple prototype and thus it is).15
+F 1.849(small in scope. It can only do simple operators \(+-*/\) and re\
+quires litteral v)111 255.6 R 1.849(alues to be sur)-.25 F(-)-.2 E
+(rounded by [] so it kno)111 267.6 Q(ws its not another e)-.25 E
+(xpression to e)-.15 E -.25(va)-.25 G(luate.).25 E
+(typedef struct ast_node ast_node;)111 303.6 Q(typedef enum op {)111
+339.6 Q(ADD = 0,)131 363.6 Q(SUB = 1,)131 387.6 Q(MUL = 2,)131 411.6 Q
+(DIV = 3,)131 435.6 Q 2.5(}o)111 459.6 S(p;)-2.5 E
+(typedef struct ast_node {)111 495.6 Q(op operation;)131 519.6 Q
+(int realLeft;)131 543.6 Q(int realRight;)131 567.6 Q(ast_node *right;)
+131 591.6 Q(ast_node *left;)131 615.6 Q 2.5(}a)111 639.6 S(st_node;)-2.5
+E(Abo)111 675.6 Q .335 -.15(ve i)-.15 H 2.535(st).15 G .035
+(he code for the AST)-2.535 F 2.535(,i)-.74 G 2.535(ts)-2.535 G .035
+(tores an operation \(which is just an inte)-2.535 F .035
+(ger\), and it stores a real)-.15 F .676(left and real right v)111 687.6
+R .675(alue, along side tw)-.25 F 3.175(oo)-.1 G .675
+(ther nodes. The real v)-3.175 F .675(alues are inte)-.25 F .675
+(gers, this w)-.15 F .675(ould be)-.1 F .943
+(the 2 numbers in reference in the e)111 699.6 R .944
+(xpression. The 2 nodes are a recursi)-.15 F 1.244 -.15(ve d)-.25 H .944
+(ata structure, much).15 F(lik)111 711.6 Q 3.489(ep)-.1 G .988(utting a\
+n object of a class inside the de\214nition of that class itself. The)
+-3.489 F 3.488(ya)-.15 G .988(re used to store)-3.488 F -.25(va)111
+723.6 S .08(lues that may still be e).25 F .08(xpressions, for e)-.15 F
+.081(xample \(+ [1] \(+ [1] [1]\)\) the second part of this e)-.15 F
+(xpres-)-.15 E 0 Cg EP
+%%Page: 7 7
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Roman@0 SF(-6-)300.17 48 Q -.8(Ta)111 84 S
-(lk about the code).8 E(sho)111 108 Q 2.5(wt)-.25 G(he code)-2.5 E/F1 10
-/Times-Bold@0 SF 2.5(2. Design)111 156 R 2.5(3. T)111 180 R
-(echnical Solution)-.92 E 2.5(4. T)111 204 R(esting)-.92 E 2.5(5. Ev)111
-228 R(aluation)-.1 E 0 Cg EP
+/F0 10/Times-Roman@0 SF(-7-)300.17 48 Q .533(sion w)111 84 R .533
+(ould be in the "right" v)-.1 F .533(airable. When code is e)-.25 F -.15
+(xe)-.15 G .533(cuted I can check if "left", or "right" are).15 F .61
+(null and if the)111 96 R 3.11(ya)-.15 G .61(re i kno)-3.11 F 3.11(wt)
+-.25 G .61(hat i am at the lo)-3.11 F .61(west e)-.25 F .61
+(xpression that is only litteral v)-.15 F 3.11(alues. Then)-.25 F(I)3.11
+E(can e)111 108 Q -.15(xe)-.15 G(cute that node and w).15 E(ork my w)-.1
+E(ay up the tree.)-.1 E(The e)111 144 Q -.15(xe)-.15 G
+(cution code can be seen here.).15 E(int e)111 180 Q -.15(xe)-.15 G
+(c\(ast_node *e).15 E(xp\){)-.15 E(if \(e)131 204 Q(xp->left != NULL\))
+-.15 E -.15(ex)151 228 S(p->realLeft = e).15 E -.15(xe)-.15 G(c\(e).15 E
+(xp->left\);)-.15 E(if \(e)131 252 Q(xp->right != NULL\))-.15 E -.15(ex)
+151 276 S(p->realRight = e).15 E -.15(xe)-.15 G(c\(e).15 E(xp->right\);)
+-.15 E(if \(e)131 324 Q(xp->operation == ADD\))-.15 E(return e)151 348 Q
+(xp->realLeft+ e)-.15 E(xp->realRight;)-.15 E(if \(e)131 372 Q
+(xp->operation == SUB\))-.15 E(return e)151 396 Q(xp->realLeft - e)-.15
+E(xp->realRight;)-.15 E(if \(e)131 420 Q(xp->operation == MUL\))-.15 E
+(return e)151 444 Q(xp->realLeft * e)-.15 E(xp->realRight;)-.15 E
+(if \(e)131 468 Q(xp->operation == DIV\))-.15 E(return e)151 492 Q
+(xp->realLeft/ e)-.15 E(xp->realRight;)-.15 E(return 0;)136 516 Q(})111
+540 Q .851(The rest of the code is the process of con)111 576 R -.15(ve)
+-.4 G .85(rting the string input to litteral v).15 F .85
+(alues and inserting)-.25 F(them into the AST)111 588 Q/F1 10
+/Times-Bold@0 SF 2.5(2. Design)111 624 R 2.5(3. T)111 648 R
+(echnical Solution)-.92 E 2.5(4. T)111 672 R(esting)-.92 E 2.5(5. Ev)111
+696 R(aluation)-.1 E 0 Cg EP
%%Trailer
end
%%EOF
diff --git a/comp/lucas-standen-NEA/writeup/make.sh b/comp/lucas-standen-NEA/writeup/make.sh
index 2a34383..0d92a25 100755
--- a/comp/lucas-standen-NEA/writeup/make.sh
+++ b/comp/lucas-standen-NEA/writeup/make.sh
@@ -1,3 +1,12 @@
#!/bin/bash
-for i in $(ls | grep .ms); do groff -ms $i -T ps > $(echo $i | cut -f1 -d".").ps; ps2pdf $(echo $i | cut -f1 -d".").ps; done
-zathura coverpage.pdf &
+
+for i in $(ls | grep .ms); do
+ groff -ms $i -T ps > $(echo $i | cut -f1 -d".").ps
+ ps2pdf $(echo $i | cut -f1 -d".").ps
+done
+
+if [ "$(tty)" = "/dev/tty1" ]; then
+ ps2ascii coverpage.ps 2> /dev/null | less -N
+else
+ zathura coverpage.pdf &
+fi
diff --git a/comp/lucas-standen-NEA/writeup/questions-for-amy.ps b/comp/lucas-standen-NEA/writeup/questions-for-amy.ps
index 151b4ee..4d14f08 100644
--- a/comp/lucas-standen-NEA/writeup/questions-for-amy.ps
+++ b/comp/lucas-standen-NEA/writeup/questions-for-amy.ps
@@ -1,6 +1,6 @@
%!PS-Adobe-3.0
%%Creator: groff version 1.23.0
-%%CreationDate: Thu May 2 12:13:15 2024
+%%CreationDate: Mon May 6 09:30:29 2024
%%DocumentNeededResources: font Times-Bold
%%+ font Times-Roman
%%DocumentSuppliedResources: procset grops 1.23 0