diff options
author | standenboy <standenboy@seacrossedlovers.xyz> | 2024-05-22 13:04:26 +0100 |
---|---|---|
committer | standenboy <standenboy@seacrossedlovers.xyz> | 2024-05-22 13:04:26 +0100 |
commit | 9438453a5d391a42371b8b8d7931923678956995 (patch) | |
tree | 5b0a4bccb090a1f1ab122163335bbfe1371a2bc9 /comp | |
parent | dc28082a9ba55dac68883cb7b26514f921aa8edd (diff) |
added a load of blabber
Diffstat (limited to 'comp')
-rw-r--r-- | comp/lucas-standen-NEA/code/ads/ast/Makefile | 0 | ||||
-rw-r--r-- | comp/lucas-standen-NEA/code/ads/ast/ast.c | 0 | ||||
-rw-r--r-- | comp/lucas-standen-NEA/code/ads/ast/ast.h | 0 | ||||
-rw-r--r-- | comp/lucas-standen-NEA/code/ads/ast/types.c | 0 | ||||
-rw-r--r-- | comp/lucas-standen-NEA/code/ads/ast/types.h | 0 | ||||
-rw-r--r-- | comp/lucas-standen-NEA/code/tokenizer/Makefile | 12 | ||||
-rwxr-xr-x | comp/lucas-standen-NEA/code/tokenizer/tokenizer | bin | 0 -> 24392 bytes | |||
-rw-r--r-- | comp/lucas-standen-NEA/code/tokenizer/tokenizer.c | 151 | ||||
-rw-r--r-- | comp/lucas-standen-NEA/code/tokenizer/types.c | 0 | ||||
-rw-r--r-- | comp/lucas-standen-NEA/code/tokenizer/types.h | 76 | ||||
-rw-r--r-- | comp/lucas-standen-NEA/writeup/coverpage.ms | 44 | ||||
-rw-r--r-- | comp/lucas-standen-NEA/writeup/coverpage.ps | 391 | ||||
-rw-r--r-- | comp/lucas-standen-NEA/writeup/questions-for-amy.ps | 2 | ||||
-rw-r--r-- | comp/lucas-standen-NEA/writeup/questions-for-rayn.ps | 2 | ||||
-rw-r--r-- | comp/work/32/oop.py | 31 |
15 files changed, 525 insertions, 184 deletions
diff --git a/comp/lucas-standen-NEA/code/ads/ast/Makefile b/comp/lucas-standen-NEA/code/ads/ast/Makefile deleted file mode 100644 index e69de29..0000000 --- a/comp/lucas-standen-NEA/code/ads/ast/Makefile +++ /dev/null diff --git a/comp/lucas-standen-NEA/code/ads/ast/ast.c b/comp/lucas-standen-NEA/code/ads/ast/ast.c deleted file mode 100644 index e69de29..0000000 --- a/comp/lucas-standen-NEA/code/ads/ast/ast.c +++ /dev/null diff --git a/comp/lucas-standen-NEA/code/ads/ast/ast.h b/comp/lucas-standen-NEA/code/ads/ast/ast.h deleted file mode 100644 index e69de29..0000000 --- a/comp/lucas-standen-NEA/code/ads/ast/ast.h +++ /dev/null diff --git a/comp/lucas-standen-NEA/code/ads/ast/types.c b/comp/lucas-standen-NEA/code/ads/ast/types.c deleted file mode 100644 index e69de29..0000000 --- a/comp/lucas-standen-NEA/code/ads/ast/types.c +++ /dev/null diff --git a/comp/lucas-standen-NEA/code/ads/ast/types.h b/comp/lucas-standen-NEA/code/ads/ast/types.h deleted file mode 100644 index e69de29..0000000 --- a/comp/lucas-standen-NEA/code/ads/ast/types.h +++ /dev/null diff --git a/comp/lucas-standen-NEA/code/tokenizer/Makefile b/comp/lucas-standen-NEA/code/tokenizer/Makefile index b5cfe56..479b838 100644 --- a/comp/lucas-standen-NEA/code/tokenizer/Makefile +++ b/comp/lucas-standen-NEA/code/tokenizer/Makefile @@ -1,5 +1,11 @@ - -parser: parser.c util - cc -O3 parser.c util.o -c -o parser.o +tokenizer: parser util tokenizer.c + cc -O3 tokenizer.c parser.o util.o -o tokenizer +parser: parser.c + cc -O3 parser.c -c -o parser.o util: util.c cc -O3 util.c -c -o util.o + +clean: + rm -rf *.o + rm -rf tokenizer + diff --git a/comp/lucas-standen-NEA/code/tokenizer/tokenizer b/comp/lucas-standen-NEA/code/tokenizer/tokenizer Binary files differnew file mode 100755 index 0000000..726ee21 --- /dev/null +++ b/comp/lucas-standen-NEA/code/tokenizer/tokenizer diff --git a/comp/lucas-standen-NEA/code/tokenizer/tokenizer.c b/comp/lucas-standen-NEA/code/tokenizer/tokenizer.c index a643455..5cc596f 100644 --- a/comp/lucas-standen-NEA/code/tokenizer/tokenizer.c +++ b/comp/lucas-standen-NEA/code/tokenizer/tokenizer.c @@ -1,3 +1,154 @@ +#include <stdlib.h> +#include <stdio.h> +#include <string.h> + #include "parser.h" +#include "util.h" +#include "types.h" + +int functionIdCounter = 0; + +ast_node *GenAst(char *exp); // generates the ast of 1 expression +int getArgCount(char *exp); // counts how many args are pressent in exp +char **GetStringArgs(char *exp); // gets the string args of an expression +char *GetFunction(char *exp); // gets the function used in 1 expression +builtInFuncs IsBuiltIn(char *func); // returns the id of a function thats built in, or -1 if its not + + +builtInFuncs IsBuiltIn(char *func){ + if (strcmp(func, "defun") == 0){ + return DEFUN; + }else if (strcmp(func, "let") == 0){ + return LET; + }else if (strcmp(func, "set") == 0){ + return SET; + }else if (strcmp(func, "if") == 0){ + return IF; + }else if (strcmp(func, "elif") == 0){ + return ELIF; + }else if (strcmp(func, "else") == 0){ + return ELSE; + }else if (strcmp(func, "for") == 0){ + return FOR; + }else if (strcmp(func, "while") == 0){ + return WHILE; + }else if (strcmp(func, "symbol") == 0){ + return SYMBOL; + }else if (strcmp(func, "struct") == 0){ + return STRUCT; + }else if (strcmp(func, "+") == 0){ + return ADD; + }else if (strcmp(func, "-") == 0){ + return SUB; + }else if (strcmp(func, "*") == 0){ + return MUL; + }else if (strcmp(func, "/") == 0){ + return DIV; + }else if (strcmp(func, "=") == 0){ + return EQ; + }else if (strcmp(func, "!=") == 0){ + return NEQ; + }else if (strcmp(func, ">") == 0){ + return GT; + }else if (strcmp(func, "<") == 0){ + return LT; + }else if (strcmp(func, ">=") == 0){ + return GTEQ; + }else if (strcmp(func, "<=") == 0){ + return LTEQ; + }else if (strcmp(func, "cast") == 0){ + return CAST; + }else if (strcmp(func, "typeof") == 0){ + return TYPEOF; + }else if (strcmp(func, "terminate") == 0){ + return TERMINATE; + }else if (strcmp(func, "return") == 0){ + return RETURN; + } + else { + return -1; + } +} + +char *GetFunction(char *exp){ // takes exp with brackets + char *out = CheckedMalloc(strlen(exp)); + int i = 1; + char c = exp[i]; + while (c != ' '){ + out[i-1] = c; + i++; + c = exp[i]; + } + i++; + out[i] = '\0'; + out = CheckedRealloc(out, i); + return out; +} + +// TODO make it count any arg inside () as one arg +char **GetStringArgs(char *exp){ // takes exp without brackets + int spaceCount = 0; + int i = 0; + char c = exp[i]; + while (c != '\0'){ + spaceCount++; + i++; + c = exp[i]; + + } + + char **out = CheckedMalloc(spaceCount); + for (int i = 0; i < spaceCount; i++){ + out[i] = CheckedMalloc(strlen(exp)); + } + + int tokCounter = 0; + i = 0; + int charCounter = 0; + while (exp[i] != '\0'){ + if (exp[i] != ' '){ + if (tokCounter != 0){ + out[tokCounter-1][charCounter] = exp[i]; + charCounter++; + } + } else{ + out[tokCounter][i] = '\0'; + charCounter = 0; + tokCounter++; + } + i++; + } + + return out; +} + +ast_node *GenAst(char *exp){ // takes exp with brackets + ast_node *head = CheckedMalloc(sizeof(ast_node)); + char *function = GetFunction(exp); + head->builtInFunc = IsBuiltIn(function); + free(function); + + if (head->builtInFunc == -1){ + head->func = CheckedMalloc(sizeof(functionToken)); + head->func->id = functionIdCounter; + functionIdCounter++; + }else { + head->func = NULL; + } + + return head; +} + +int main(){ + ast_node *node = GenAst("(+ 1 2)"); + printf("%d\n", node->builtInFunc); + + char **args = GetStringArgs("+ 1 2"); + for (int i = 0; i < 2; i++){ + printf("%s\n", args[i]); + } + free(args); + free(node); +} diff --git a/comp/lucas-standen-NEA/code/tokenizer/types.c b/comp/lucas-standen-NEA/code/tokenizer/types.c deleted file mode 100644 index e69de29..0000000 --- a/comp/lucas-standen-NEA/code/tokenizer/types.c +++ /dev/null diff --git a/comp/lucas-standen-NEA/code/tokenizer/types.h b/comp/lucas-standen-NEA/code/tokenizer/types.h index e69de29..034dc04 100644 --- a/comp/lucas-standen-NEA/code/tokenizer/types.h +++ b/comp/lucas-standen-NEA/code/tokenizer/types.h @@ -0,0 +1,76 @@ +#include <stdint.h> +#include "../ads/ll/ll.h" + +// all language types +typedef enum types { + I32_T = 0, + I64_T = 1, + U32_T = 2, + U64_T = 3, + FLOAT_t = 4, + CHAR_T = 5, + FUNCTION_T = 6, + STRUCT_T = 7, + OBJ_T = 8, +} types; + +// int types +typedef int32_t i32; +typedef int64_t i64; + +// uint types +typedef uint32_t u32; +typedef uint64_t u64; + +// char and float types are still called char and float so no typedef needed + +// function type +typedef struct functionToken { + int id; // a function id to avoid strings + types returnType; // what the function returns + types *args; // the types of args a function takes + ll_t astHead; // the code for the function +} functionToken; + +// built in functions +typedef enum builtInFuncs { + DEFUN = 0, + LET = 1, + SET = 2, + IF = 3, + ELIF = 4, + ELSE = 5, + FOR = 6, + WHILE = 7, + SYMBOL = 8, + STRUCT = 9, + + // arithmetic + ADD = 10, + SUB = 11, + MUL = 12, + DIV = 13, + + // comparison + EQ = 14, + NEQ = 15, + GT = 16, + LT = 17, + GTEQ = 18, + LTEQ = 19, + + CAST = 20, + TYPEOF = 21, + TERMINATE = 22, + RETURN = 23, +} builtInFuncs; + +typedef struct ast_node ast_node; + +typedef struct ast_node { + builtInFuncs builtInFunc; // if it's a builtin function call use this, else -1 + functionToken *func; // if it's not builtin then use this + void **literalArgs; // the args of the node, this will be an array of litteral values + ast_node **args; // the non litteral tokens + // if litteralArgs[x] is real then args[x] should be NULL, and vice versa +} ast_node; diff --git a/comp/lucas-standen-NEA/writeup/coverpage.ms b/comp/lucas-standen-NEA/writeup/coverpage.ms index f657049..230dc82 100644 --- a/comp/lucas-standen-NEA/writeup/coverpage.ms +++ b/comp/lucas-standen-NEA/writeup/coverpage.ms @@ -612,6 +612,8 @@ u64 - unsigned integer of size 64 bits char - single ascii code +float - standard C float + .NH 4 Advanced types .LP @@ -867,12 +869,44 @@ Can throw errors via err. Questionnaire 2 for Rayn M .NH 2 -Programming language and libraries +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: @@ -981,7 +1015,7 @@ All .c files will be compiled into .o files, then the .o files can be linked wit to generate the final executable. -.NH 3 +.NH 4 Build system .LP The entire project is being build with GNU make files, each folder that builds something will have @@ -999,7 +1033,7 @@ the program runs as fast as possible. -O3 forces the compiler to build with opti When the project is finished, I will try compiling with clang and tcc, to compare performance. -.NH 3 +.NH 2 Time table .LP The first step is to tackle the interpreter, so the zpy.c file needs to be finished. The tokenizer, @@ -1009,10 +1043,10 @@ 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 +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. +If time allows it is at this point that I will write a Raylib library and a unix/C sockets library. .NH 1 Technical Solution diff --git a/comp/lucas-standen-NEA/writeup/coverpage.ps b/comp/lucas-standen-NEA/writeup/coverpage.ps index 8f8bbfa..6e032c1 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 16 13:47:28 2024 +%%CreationDate: Tue May 21 15:38:13 2024 %%DocumentNeededResources: font Times-Bold %%+ font Times-Italic %%+ font Times-Roman @@ -52487,244 +52487,287 @@ BP /F0 10/Times-Roman@0 SF(-13-)297.67 48 Q(u32 - unsigned inte)111 84 Q (ger of size 32 bits)-.15 E(i64 - signed inte)111 108 Q (ger of size 64 bits)-.15 E(u64 - unsigned inte)111 132 Q -(ger of size 64 bits)-.15 E(char - single ascii code)111 156 Q/F1 10 -/Times-Bold@0 SF 2.5(3.1.1.2. Adv)111 192 R(anced types)-.1 E F0 -(function - a function that can be used)111 207.6 Q -(struct - initializer for an object)111 231.6 Q -(obj - instance of a struct)111 255.6 Q 1.005(generic - should be a)111 -279.6 R -.2(vo)-.2 G 1.005(ided, remo).2 F -.15(ve)-.15 G 3.505(sc).15 G +(ger of size 64 bits)-.15 E(char - single ascii code)111 156 Q +(\215oat - standard C \215oat)111 180 Q/F1 10/Times-Bold@0 SF 2.5 +(3.1.1.2. Adv)111 216 R(anced types)-.1 E F0 +(function - a function that can be used)111 231.6 Q +(struct - initializer for an object)111 255.6 Q +(obj - instance of a struct)111 279.6 Q 1.005(generic - should be a)111 +303.6 R -.2(vo)-.2 G 1.005(ided, remo).2 F -.15(ve)-.15 G 3.505(sc).15 G 1.005(hecks for data types when inputting v)-3.505 F 1.005 -(alues to functions)-.25 F(will cause man)111 291.6 Q 2.5(yr)-.15 G +(alues to functions)-.25 F(will cause man)111 315.6 Q 2.5(yr)-.15 G (untime errors, ho)-2.5 E(we)-.25 E -.15(ve)-.25 G 2.5(rw).15 G (hen absolutely needed it is useful.)-2.5 E .008 -(err - error type, can be gi)111 315.6 R -.15(ve)-.25 G 2.507(nt).15 G +(err - error type, can be gi)111 339.6 R -.15(ve)-.25 G 2.507(nt).15 G 2.507(ot)-2.507 G .007(erminate function to bring do)-2.507 F .007 (wn the program, or ha)-.25 F .307 -.15(ve i)-.2 H .007(nfo dra).15 F -(wn)-.15 E(on the error)111 327.6 Q(.)-.55 E F1 2.5(3.1.1.3. Arrays)111 -363.6 R F0(Arrays can be sho)111 379.2 Q 2.5(wl)-.25 G(ik)-2.5 E 2.5(es) --.1 G(o:)-2.5 E(x:type[])111 403.2 Q -.4(Wi)111 427.2 S +(wn)-.15 E(on the error)111 351.6 Q(.)-.55 E F1 2.5(3.1.1.3. Arrays)111 +387.6 R F0(Arrays can be sho)111 403.2 Q 2.5(wl)-.25 G(ik)-2.5 E 2.5(es) +-.1 G(o:)-2.5 E(x:type[])111 427.2 Q -.4(Wi)111 451.2 S (th x being the v).4 E(ariable name, type being the type of v)-.25 E (ariable, and [] sho)-.25 E(wing its an array)-.25 E -(All arrays are dynamic, represented by a link)111 451.2 Q -(ed list on the back end.)-.1 E F1 2.5(3.1.1.3.1. Strings)111 475.2 R F0 -(Strings, lik)111 490.8 Q 2.5(ei)-.1 G 2.5(nCa)-2.5 G -(re arrays of chars)-2.5 E F1 2.5(3.1.2. Built)111 526.8 R(in functions) -2.5 E 2.5(3.1.2.1. defun)111 550.8 R F0 -(\(defun a:type b:type returntype)111 566.4 Q(...)131 578.4 Q(...)131 -590.4 Q(\))111 614.4 Q .397(Returns a function that tak)111 638.4 R +(All arrays are dynamic, represented by a link)111 475.2 Q +(ed list on the back end.)-.1 E F1 2.5(3.1.1.3.1. Strings)111 499.2 R F0 +(Strings, lik)111 514.8 Q 2.5(ei)-.1 G 2.5(nCa)-2.5 G +(re arrays of chars)-2.5 E F1 2.5(3.1.2. Built)111 550.8 R(in functions) +2.5 E 2.5(3.1.2.1. defun)111 574.8 R F0 +(\(defun a:type b:type returntype)111 590.4 Q(...)131 602.4 Q(...)131 +614.4 Q(\))111 638.4 Q .397(Returns a function that tak)111 662.4 R 2.897(eAa)-.1 G .397(nd B as an ar)-2.897 F .397(gument \(\214x)-.18 F .397(ed types\), and returns a v)-.15 F .398(alue of return-)-.25 F -(type.)111 650.4 Q F1 2.5(3.1.2.1.1. Err)111 674.4 R(ors)-.18 E F0 -(Can syntax error)111 690 Q(.)-.55 E F1 2.5(3.1.2.2. let)111 726 R 0 Cg -EP +(type.)111 674.4 Q F1 2.5(3.1.2.1.1. Err)111 698.4 R(ors)-.18 E F0 +(Can syntax error)111 714 Q(.)-.55 E 0 Cg EP %%Page: 14 14 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF(-14-)297.67 48 Q(\(let x:type v)111 84 Q(alue\)) --.25 E/F1 10/Times-Bold@0 SF 2.5(3.1.2.2.1. Err)111 108 R(ors)-.18 E F0 -(Can syntax error)111 123.6 Q(.)-.55 E -(Creates constant x of type type to v)111 147.6 Q(alue.)-.25 E F1 2.5 -(3.1.2.3. set)111 183.6 R F0(\(set x:type v)111 199.2 Q(alue\))-.25 E -(Creates/recreates the v)111 223.2 Q(ariable v)-.25 E(alue of x to v) --.25 E(alue.)-.25 E F1 2.5(3.1.2.3.1. Err)111 247.2 R(ors)-.18 E F0 -(Can syntax error)111 262.8 Q(.)-.55 E F1 2.5(3.1.2.4. if/elif/else)111 -298.8 R F0(\(if condition function\))111 314.4 Q -(\(elif condition function\))111 338.4 Q(\(else function\))111 362.4 Q -(Ex)111 398.4 Q(ecutes the function pro)-.15 E -(vided if the condition is true.)-.15 E(Elif w)111 422.4 Q +/F0 10/Times-Roman@0 SF(-14-)297.67 48 Q/F1 10/Times-Bold@0 SF 2.5 +(3.1.2.2. let)111 84 R F0(\(let x:type v)111 99.6 Q(alue\))-.25 E F1 2.5 +(3.1.2.2.1. Err)111 123.6 R(ors)-.18 E F0(Can syntax error)111 139.2 Q +(.)-.55 E(Creates constant x of type type to v)111 163.2 Q(alue.)-.25 E +F1 2.5(3.1.2.3. set)111 199.2 R F0(\(set x:type v)111 214.8 Q(alue\)) +-.25 E(Creates/recreates the v)111 238.8 Q(ariable v)-.25 E +(alue of x to v)-.25 E(alue.)-.25 E F1 2.5(3.1.2.3.1. Err)111 262.8 R +(ors)-.18 E F0(Can syntax error)111 278.4 Q(.)-.55 E F1 2.5 +(3.1.2.4. if/elif/else)111 314.4 R F0(\(if condition function\))111 330 +Q(\(elif condition function\))111 354 Q(\(else function\))111 378 Q(Ex) +111 414 Q(ecutes the function pro)-.15 E +(vided if the condition is true.)-.15 E(Elif w)111 438 Q (orks the same, e)-.1 E(xcept only if the pre)-.15 E -(vious if statement is f)-.25 E(alse.)-.1 E(Else e)111 446.4 Q -.15(xe) +(vious if statement is f)-.25 E(alse.)-.1 E(Else e)111 462 Q -.15(xe) -.15 G(cutes only if all pre).15 E(vious statements were f)-.25 E(alse.) --.1 E F1 2.5(3.1.2.4.1. Err)111 470.4 R(ors)-.18 E F0(Can syntax error) -111 486 Q(.)-.55 E F1 2.5(3.1.2.5. f)111 522 R(or)-.25 E F0 -(\(for i \(condition\) function\))111 537.6 Q +-.1 E F1 2.5(3.1.2.4.1. Err)111 486 R(ors)-.18 E F0(Can syntax error)111 +501.6 Q(.)-.55 E F1 2.5(3.1.2.5. f)111 537.6 R(or)-.25 E F0 +(\(for i \(condition\) function\))111 553.2 Q (Runs the function while the condition is true, and increments i e)111 -561.6 Q -.15(ve)-.25 G(ry time the function is called.).15 E F1 2.5 -(3.1.2.5.1. Err)111 585.6 R(ors)-.18 E F0(Can syntax error)111 601.2 Q -(.)-.55 E F1 2.5(3.1.2.6. while)111 649.2 R F0 -(\(while condition function\))111 664.8 Q -(Runs the function if the condition is true, k)111 688.8 Q +577.2 Q -.15(ve)-.25 G(ry time the function is called.).15 E F1 2.5 +(3.1.2.5.1. Err)111 601.2 R(ors)-.18 E F0(Can syntax error)111 616.8 Q +(.)-.55 E F1 2.5(3.1.2.6. while)111 664.8 R F0 +(\(while condition function\))111 680.4 Q +(Runs the function if the condition is true, k)111 704.4 Q (eeps running until it is f)-.1 E(alse.)-.1 E F1 2.5(3.1.2.6.1. Err)111 -712.8 R(ors)-.18 E F0(Can syntax error)111 728.4 Q(.)-.55 E 0 Cg EP +728.4 R(ors)-.18 E 0 Cg EP %%Page: 15 15 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF(-15-)297.67 48 Q/F1 10/Times-Bold@0 SF 2.5 -(3.1.2.7. symbol)111 84 R F0 +/F0 10/Times-Roman@0 SF(-15-)297.67 48 Q(Can syntax error)111 84 Q(.) +-.55 E/F1 10/Times-Bold@0 SF 2.5(3.1.2.7. symbol)111 120 R F0 (\(symbol a:type b:type c:type returntype name:char[] elf:char[]\))111 -99.6 Q .764(Returns a function that tak)111 123.6 R .764(es ar)-.1 F +135.6 Q .764(Returns a function that tak)111 159.6 R .764(es ar)-.1 F .764(guments A, B, C \(of \214x)-.18 F .763 (ed types\), the name of the function, and)-.15 F -(the \214le path of the elf.)111 135.6 Q F1 2.5(3.1.2.7.1. Err)111 159.6 -R(ors)-.18 E F0(Can syntax error)111 175.2 Q(.)-.55 E(Can thro)111 199.2 +(the \214le path of the elf.)111 171.6 Q F1 2.5(3.1.2.7.1. Err)111 195.6 +R(ors)-.18 E F0(Can syntax error)111 211.2 Q(.)-.55 E(Can thro)111 235.2 Q 2.5(wo)-.25 G(ther errors, via returning an err type.)-2.5 E F1 2.5 -(3.1.2.8. struct)111 235.2 R F0(\(struct)111 250.8 Q(_a:type)131 262.8 Q -(b:type)131 274.8 Q(c:type)131 286.8 Q(\))111 310.8 Q .557 -(Returns a struct \(a class\) that can ha)111 334.8 R .857 -.15(ve a d) +(3.1.2.8. struct)111 271.2 R F0(\(struct)111 286.8 Q(_a:type)131 298.8 Q +(b:type)131 310.8 Q(c:type)131 322.8 Q(\))111 346.8 Q .557 +(Returns a struct \(a class\) that can ha)111 370.8 R .857 -.15(ve a d) -.2 H(ef).15 E .557(ault v)-.1 F .557(alue, the def)-.25 F .558(ault v) -.1 F .558(alue can be set using an un-)-.25 F .923 -(derscore in front of the v)111 346.8 R .923(ariable name. A def)-.25 F +(derscore in front of the v)111 382.8 R .923(ariable name. A def)-.25 F .923(ault v)-.1 F .923(ariable will be returned if you use the struct) --.25 F(without specifying a v)111 358.8 Q(alue.)-.25 E -(Use let to assign it a name:)111 382.8 Q(\(let a:struct \(struct)111 -406.8 Q(...)131 418.8 Q(...)131 430.8 Q(...)131 442.8 Q(\))131 454.8 Q -(\))111 478.8 Q(Then to instantiate the struct use the follo)111 502.8 Q -(wing:)-.25 E(\(let a:obj struct\))111 526.8 Q(The struct ar)111 550.8 Q +-.25 F(without specifying a v)111 394.8 Q(alue.)-.25 E +(Use let to assign it a name:)111 418.8 Q(\(let a:struct \(struct)111 +442.8 Q(...)131 454.8 Q(...)131 466.8 Q(...)131 478.8 Q(\))131 490.8 Q +(\))111 514.8 Q(Then to instantiate the struct use the follo)111 538.8 Q +(wing:)-.25 E(\(let a:obj struct\))111 562.8 Q(The struct ar)111 586.8 Q (gument needs to ha)-.18 E .3 -.15(ve b)-.2 H(een set prior).15 E(.)-.55 -E 1.6 -.8(To r)111 574.8 T(ead from the struct use this:).8 E -(\(if \(= a.num b)111 598.8 Q(.num\) .... \))-.4 E(Or if you ha)111 -622.8 Q .3 -.15(ve s)-.2 H(et a def).15 E(ault v)-.1 E -(alue you can use the follo)-.25 E(wing:)-.25 E(\(if \(= a b)111 646.8 Q -(.num\) .... \))-.4 E F1 2.5(3.1.2.8.1. Err)111 670.8 R(ors)-.18 E F0 -(Can syntax error)111 686.4 Q(.)-.55 E F1 2.5(3.1.2.9. Arithmetic)111 -722.4 R(operations)2.5 E 0 Cg EP +E 1.6 -.8(To r)111 610.8 T(ead from the struct use this:).8 E +(\(if \(= a.num b)111 634.8 Q(.num\) .... \))-.4 E(Or if you ha)111 +658.8 Q .3 -.15(ve s)-.2 H(et a def).15 E(ault v)-.1 E +(alue you can use the follo)-.25 E(wing:)-.25 E(\(if \(= a b)111 682.8 Q +(.num\) .... \))-.4 E F1 2.5(3.1.2.8.1. Err)111 706.8 R(ors)-.18 E F0 +(Can syntax error)111 722.4 Q(.)-.55 E 0 Cg EP %%Page: 16 16 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF(-16-)297.67 48 Q(Simple operations)111 84 Q -(\(+ a b\) returns a + b)111 108 Q(\(- a b\) returns a - b)111 132 Q -(\(* a b\) returns a * b)111 156 Q(\(/ a b\) returns a / b)111 180 Q/F1 -10/Times-Bold@0 SF 2.5(3.1.2.10. Comparison)111 216 R F0 -(All return true or f)111 231.6 Q(alse)-.1 E(\(= a b\) returns if a = b) -111 255.6 Q(\(!= a b\) returns if a != b)111 279.6 Q -(\(> a b\) returns if a > b)111 303.6 Q(\(< a b\) returns if a < b)111 -327.6 Q(\(=> a b\) returns if a => b)111 351.6 Q -(\(=< a b\) returns if a =< b)111 375.6 Q F1 2.5(3.1.2.10.1. Err)111 -399.6 R(ors)-.18 E F0(Can syntax error)111 415.2 Q(.)-.55 E F1 2.5 -(3.1.2.11. cast)111 451.2 R F0(\(cast a:generic type:char[]\))111 466.8 -Q(returns a b)111 490.8 Q(ut cast to data type type, which is a string.) --.2 E F1 2.5(3.1.2.11.1. Err)111 514.8 R(ors)-.18 E F0(Can syntax error) -111 530.4 Q(.)-.55 E(Can thro)111 554.4 Q 2.5(we)-.25 G(rrors, via err) --2.5 E 2.5(,i)-.4 G 2.5(fv)-2.5 G(alue can')-2.75 E 2.5(tb)-.18 G 2.5 -(ec)-2.5 G(ast to a gi)-2.5 E -.15(ve)-.25 G 2.5(nt).15 G(ype.)-2.5 E F1 -2.5(3.1.2.12. typeof)111 590.4 R F0(\(typeof a:generic\))111 606 Q -(returns in a string the type that v)111 630 Q(ariable A is.)-.25 E F1 -2.5(3.1.2.12.1. Err)111 654 R(ors)-.18 E F0(Can syntax error)111 669.6 Q -(.)-.55 E F1 2.5(3.1.2.13. terminate)111 705.6 R F0 -(\(terminate error:error\))111 721.2 Q 0 Cg EP +/F0 10/Times-Roman@0 SF(-16-)297.67 48 Q/F1 10/Times-Bold@0 SF 2.5 +(3.1.2.9. Arithmetic)111 84 R(operations)2.5 E F0(Simple operations)111 +99.6 Q(\(+ a b\) returns a + b)111 123.6 Q(\(- a b\) returns a - b)111 +147.6 Q(\(* a b\) returns a * b)111 171.6 Q(\(/ a b\) returns a / b)111 +195.6 Q F1 2.5(3.1.2.10. Comparison)111 231.6 R F0(All return true or f) +111 247.2 Q(alse)-.1 E(\(= a b\) returns if a = b)111 271.2 Q +(\(!= a b\) returns if a != b)111 295.2 Q(\(> a b\) returns if a > b)111 +319.2 Q(\(< a b\) returns if a < b)111 343.2 Q +(\(=> a b\) returns if a => b)111 367.2 Q(\(=< a b\) returns if a =< b) +111 391.2 Q F1 2.5(3.1.2.10.1. Err)111 415.2 R(ors)-.18 E F0 +(Can syntax error)111 430.8 Q(.)-.55 E F1 2.5(3.1.2.11. cast)111 466.8 R +F0(\(cast a:generic type:char[]\))111 482.4 Q(returns a b)111 506.4 Q +(ut cast to data type type, which is a string.)-.2 E F1 2.5 +(3.1.2.11.1. Err)111 530.4 R(ors)-.18 E F0(Can syntax error)111 546 Q(.) +-.55 E(Can thro)111 570 Q 2.5(we)-.25 G(rrors, via err)-2.5 E 2.5(,i)-.4 +G 2.5(fv)-2.5 G(alue can')-2.75 E 2.5(tb)-.18 G 2.5(ec)-2.5 G +(ast to a gi)-2.5 E -.15(ve)-.25 G 2.5(nt).15 G(ype.)-2.5 E F1 2.5 +(3.1.2.12. typeof)111 606 R F0(\(typeof a:generic\))111 621.6 Q +(returns in a string the type that v)111 645.6 Q(ariable A is.)-.25 E F1 +2.5(3.1.2.12.1. Err)111 669.6 R(ors)-.18 E F0(Can syntax error)111 685.2 +Q(.)-.55 E F1 2.5(3.1.2.13. terminate)111 721.2 R 0 Cg EP %%Page: 17 17 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF(-17-)297.67 48 Q -(Kills the program at the current point, frees all related memory)111 84 -Q 2.5(,p)-.65 G(rints error info stored in error)-2.5 E(.)-.55 E/F1 10 -/Times-Bold@0 SF 2.5(3.1.2.13.1. Err)111 108 R(ors)-.18 E F0 -(Can syntax error)111 123.6 Q(.)-.55 E F1 2.5(3.1.2.14. r)111 159.6 R -(etur)-.18 E(n)-.15 E F0(\(return a:type\))111 175.2 Q(Must be used in \ +/F0 10/Times-Roman@0 SF(-17-)297.67 48 Q(\(terminate error:error\))111 +84 Q(Kills the program at the current point, frees all related memory) +111 108 Q 2.5(,p)-.65 G(rints error info stored in error)-2.5 E(.)-.55 E +/F1 10/Times-Bold@0 SF 2.5(3.1.2.13.1. Err)111 132 R(ors)-.18 E F0 +(Can syntax error)111 147.6 Q(.)-.55 E F1 2.5(3.1.2.14. r)111 183.6 R +(etur)-.18 E(n)-.15 E F0(\(return a:type\))111 199.2 Q(Must be used in \ defun, returns "a" from the function, "a" must be of the functions retu\ -rn type.)111 199.2 Q F1 2.5(3.1.2.14.1. Err)111 223.2 R(ors)-.18 E F0 -(Can syntax error)111 238.8 Q(.)-.55 E(Can thro)111 262.8 Q 2.5(we)-.25 -G(rrors via err)-2.5 E(.)-.55 E F1 2.5(3.2. Questionnair)111 286.8 R 2.5 -(e2f)-.18 G(or Rayn M)-2.75 E 2.5(3.3. Pr)111 322.8 R -(ogramming language and libraries)-.18 E F0 .34 -(As mentioned before Zipp)111 338.4 R 2.84(yw)-.1 G .34 +rn type.)111 223.2 Q F1 2.5(3.1.2.14.1. Err)111 247.2 R(ors)-.18 E F0 +(Can syntax error)111 262.8 Q(.)-.55 E(Can thro)111 286.8 Q 2.5(we)-.25 +G(rrors via err)-2.5 E(.)-.55 E F1 2.5(3.2. Questionnair)111 310.8 R 2.5 +(e2f)-.18 G(or Rayn M)-2.75 E 2.5(3.3. What)111 346.8 R(language do y) +2.5 E(ou use to mak)-.25 E 2.5(eap)-.1 G -.18(ro)-2.5 G +(gramming language).18 E F0 .34(As mentioned before Zipp)111 362.4 R +2.84(yw)-.1 G .34 (ill be written in C, with some parts being written in Zipp)-2.84 F 2.84 -(yi)-.1 G 2.84(tself. I)-2.84 F(will try and k)111 350.4 Q +(yi)-.1 G 2.84(tself. I)-2.84 F(will try and k)111 374.4 Q (eep most dependencies/libraries to a minimal to mak)-.1 E 2.5(et)-.1 G -(he project easier to manage.)-2.5 E F1 2.5(3.3.1. Libraries)111 386.4 R -F0(The libraries I will use are the follo)111 402 Q(wing:)-.25 E 2.5(Cs) -111 426 S(tdlib)-2.5 E 2.5(Cu)111 450 S(nistd)-2.5 E 2.5(Ce)111 474 S -(rrno)-2.5 E(Unix de)111 498 Q(vice \214les)-.25 E(Zipp)111 522 Q 2.5 -(ys)-.1 G(trings)-2.5 E(Zipp)111 546 Q 2.5(yg)-.1 G(raphs)-2.5 E(Zipp) -111 570 Q 2.5(ys)-.1 G(orts)-2.5 E -(Addition libraries \(may not be implemented\):)111 594 Q(Raylib)111 618 -Q 2.5(Cs)111 642 S(ock)-2.5 E(ets + Zipp)-.1 E 2.5(ys)-.1 G(ock)-2.5 E -(ets)-.1 E F1 2.5(3.3.2. Modularization)111 678 R F0 2.062 -.8(To m)111 -693.6 T(ak).8 E 2.962(et)-.1 G .462 -(he project more manageable I will split it into man)-2.962 F 2.961 -(yC\214)-.15 G .461(les, this is to k)-2.961 F .461(eep it from be-)-.1 -F(coming impossible to edit code.)111 705.6 Q -(The \214le layout looks as follo)111 729.6 Q(ws:)-.25 E 0 Cg EP +(he project easier to manage.)-2.5 E F1 2.5(3.3.1. What)111 410.4 R +(is C?)2.5 E F0 3.027(Cw)111 426 S .527 +(as made by Dennis Ritchie, in 1972 at A)-3.127 F(T&T')-1.11 E 3.026(sb) +-.55 G .526(ell labs. It w)-3.026 F .526(as designed to mak)-.1 F 3.026 +(ep)-.1 G(rogram-)-3.026 E .067(ming lo)111 438 R 2.567(wl)-.25 G -2.15 +-.25(ev e)-2.567 H 2.567(ls).25 G .067(ystems f)-2.567 F .067 +(ar easier than it had been before. It w)-.1 F .068 +(as used to create the unix operating)-.1 F .65(system which w)111 450 R +.65(ould go on to inspire most modern operating systems in some w)-.1 F +(ay)-.1 E 3.15(.\()-.65 G .65(macos still)-3.15 F +(has code from the original release of C+unix\).)111 462 Q .377 +(The language quickly caught on outside of bell labs after more a)111 +486 R -.25(va)-.2 G .378(ilable releases of unix arri).25 F -.15(ve)-.25 +G(d).15 E .102(such as bsd 4.4, sun os and GNU. It w)111 498 R .102 +(as found to be able to do all the things that you could do in)-.1 F +(ASM ho)111 510 Q(we)-.25 E -.15(ve)-.25 G 2.5(rw).15 G(ith f)-2.5 E +(ar less a headache.)-.1 E F1 2.5(3.3.2. Wh)111 546 R 2.5(yi)-.15 G 2.5 +(sC)-2.5 G(?)-2.5 E F0 .469(As mentioned C can do an)111 561.6 R .469 +(ything that ASM can do, meaning it is lightning f)-.15 F .469 +(ast and can tak)-.1 F 2.969(ea)-.1 G(d-)-2.969 E -.25(va)111 573.6 S +.345(ntage of direct memory access. This allo).25 F .345(ws you to mak) +-.25 F 2.845(ev)-.1 G .345(ery f)-2.995 F .345(ast lightweight e)-.1 F +-.15(xe)-.15 G .345(cutables that).15 F .239(can ri)111 585.6 R -.25(va) +-.25 G 2.739(lt).25 G .239(he performance of handwritten ASM \(often be\ +ating it if you enable compiler optimisa-)-2.739 F .159 +(tions\). It is this that mak)111 597.6 R .159 +(es C the perfect language for an)-.1 F 2.659(ya)-.15 G .158 +(nd all programming languages, where)-2.659 F(speed is k)111 609.6 Q +-.15(ey)-.1 G 2.5(,a)-.5 G(nd allfeatures need to be a)-2.5 E -.25(va) +-.2 G(ilable are present.).25 E F1 2.5(3.3.3. Ho)111 645.6 R 2.5(wi)-.1 +G 2.5(sC)-2.5 G(?)-2.5 E F0 3.214(Ci)111 661.2 S 3.214(sc)-3.214 G .714 +(ompiled to ASM, the main compilers a)-3.214 F -.25(va)-.2 G .715 +(ilable are clang, gcc and MSVC, I will be using).25 F +(gcc as it is generally standard in linux en)111 673.2 Q(vironments.)-.4 +E(Man)111 697.2 Q 2.709(yb)-.15 G .209(uild systems are a)-2.909 F -.25 +(va)-.2 G .209(ilable for C, the main ones being cmak).25 F 2.709(ea)-.1 +G .209(nd gnu mak)-2.709 F .208(e. Both of them)-.1 F(ha)111 709.2 Q +.851 -.15(ve t)-.2 H .551 +(he goal of putting the compiling process in one command. Cmak).15 F +3.052(ei)-.1 G 3.052(sc)-3.052 G .552(ross platform \(sorta)-3.052 F +(windo)111 721.2 Q(ws doesn')-.25 E 2.5(tw)-.18 G(ork well b)-2.6 E +(ut it does w)-.2 E(ork\).)-.1 E 0 Cg EP %%Page: 18 18 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF(-18-)297.67 48 Q(Mak)121 84 Q(e\214le)-.1 E(ads) -121 96 Q(Mak)131 108 Q(e\214le)-.1 E(ast)131 120 Q(Mak)141 132 Q -(e\214le)-.1 E(ast.c)141 144 Q(ast.h)141 156 Q(types.c)141 168 Q -(types.h)141 180 Q(dict)131 192 Q(Mak)143.5 204 Q(e\214le)-.1 E(dict.c) -143.5 216 Q(dict.h)143.5 228 Q(dicttest.c)143.5 240 Q(ll)131 252 Q(Mak) -143.5 264 Q(e\214le)-.1 E(ll.c)143.5 276 Q(ll.h)143.5 288 Q(lltest.c) -143.5 300 Q -.15(exe)121 312 S(cution).15 E(Mak)131 324 Q(e\214le)-.1 E --.15(exe)131 336 S(c.c).15 E -.15(exe)131 348 S(c.h).15 E(types.c)131 -360 Q(types.h)131 372 Q(libs)121 384 Q(Mak)131 396 Q(e\214le)-.1 E -(graphs)131 408 Q(graphs.zp)141 420 Q(y)-.1 E(io)131 432 Q(io.zp)141 444 -Q(y)-.1 E(stdlib)131 456 Q(Mak)141 468 Q(e\214le)-.1 E(stdlib)141 480 Q -(.c)-.4 E(stdlib)141 492 Q(.zp)-.4 E(y)-.1 E(string)131 504 Q(string.zp) -141 516 Q(y)-.1 E(proto)131 528 Q(ast)141 540 Q(Mak)151 552 Q(e\214le) --.1 E(ast.c)151 564 Q(astg.c)151 576 Q(astg.h)151 588 Q(tok)121 600 Q -(enizer)-.1 E(Mak)131 612 Q(e\214le)-.1 E(parser)131 624 Q(.c)-.55 E -(parser)131 636 Q(.h)-.55 E(tok)131 648 Q(enizer)-.1 E(.c)-.55 E(tok)131 -660 Q(enizer)-.1 E(.h)-.55 E(types.c)131 672 Q(types.h)131 684 Q(zp)121 -696 Q(y)-.1 E(Mak)131 708 Q(e\214le)-.1 E(zp)131 720 Q -.65(y.)-.1 G(c) -.65 E 0 Cg EP +/F0 10/Times-Roman@0 SF(-18-)297.67 48 Q/F1 10/Times-Bold@0 SF 2.5 +(3.3.4. Libraries)111 84 R F0(The libraries I will use are the follo)111 +99.6 Q(wing:)-.25 E 2.5(Cs)111 123.6 S(tdlib)-2.5 E 2.5(Cu)111 147.6 S +(nistd)-2.5 E 2.5(Ce)111 171.6 S(rrno)-2.5 E(Unix de)111 195.6 Q +(vice \214les)-.25 E(Zipp)111 219.6 Q 2.5(ys)-.1 G(trings)-2.5 E(Zipp) +111 243.6 Q 2.5(yg)-.1 G(raphs)-2.5 E(Zipp)111 267.6 Q 2.5(ys)-.1 G +(orts)-2.5 E(Addition libraries \(may not be implemented\):)111 291.6 Q +(Raylib)111 315.6 Q 2.5(Cs)111 339.6 S(ock)-2.5 E(ets + Zipp)-.1 E 2.5 +(ys)-.1 G(ock)-2.5 E(ets)-.1 E F1 2.5(3.3.5. Modularization)111 375.6 R +F0 2.062 -.8(To m)111 391.2 T(ak).8 E 2.962(et)-.1 G .462 +(he project more manageable I will split it into man)-2.962 F 2.961 +(yC\214)-.15 G .461(les, this is to k)-2.961 F .461(eep it from be-)-.1 +F(coming impossible to edit code.)111 403.2 Q +(The \214le layout looks as follo)111 427.2 Q(ws:)-.25 E(Mak)121 451.2 Q +(e\214le)-.1 E(ads)121 463.2 Q(Mak)131 475.2 Q(e\214le)-.1 E(ast)131 +487.2 Q(Mak)141 499.2 Q(e\214le)-.1 E(ast.c)141 511.2 Q(ast.h)141 523.2 +Q(types.c)141 535.2 Q(types.h)141 547.2 Q(dict)131 559.2 Q(Mak)143.5 +571.2 Q(e\214le)-.1 E(dict.c)143.5 583.2 Q(dict.h)143.5 595.2 Q +(dicttest.c)143.5 607.2 Q(ll)131 619.2 Q(Mak)143.5 631.2 Q(e\214le)-.1 E +(ll.c)143.5 643.2 Q(ll.h)143.5 655.2 Q(lltest.c)143.5 667.2 Q -.15(exe) +121 679.2 S(cution).15 E(Mak)131 691.2 Q(e\214le)-.1 E -.15(exe)131 +703.2 S(c.c).15 E -.15(exe)131 715.2 S(c.h).15 E(types.c)131 727.2 Q 0 +Cg EP %%Page: 19 19 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF(-19-)297.67 48 Q(zp)131 84 Q(ycheck.c)-.1 E(zp) -121 96 Q(ycheck)-.1 E(Mak)131 108 Q(e\214le)-.1 E(errors.c)131 120 Q -(errors.h)131 132 Q(zp)131 144 Q(ycheck.c)-.1 E(zp)131 156 Q(ycheck.h) --.1 E(zp)121 168 Q(ypkg)-.1 E(deps.zp)131 180 Q(y)-.1 E(do)131 192 Q -(wnload.zp)-.25 E(y)-.1 E(zp)131 204 Q(ypkg.zp)-.1 E(y)-.1 E .712 -(As you can see this is split up o)111 228 R -.15(ve)-.15 G 3.212(ra).15 +/F0 10/Times-Roman@0 SF(-19-)297.67 48 Q(types.h)131 84 Q(libs)121 96 Q +(Mak)131 108 Q(e\214le)-.1 E(graphs)131 120 Q(graphs.zp)141 132 Q(y)-.1 +E(io)131 144 Q(io.zp)141 156 Q(y)-.1 E(stdlib)131 168 Q(Mak)141 180 Q +(e\214le)-.1 E(stdlib)141 192 Q(.c)-.4 E(stdlib)141 204 Q(.zp)-.4 E(y) +-.1 E(string)131 216 Q(string.zp)141 228 Q(y)-.1 E(proto)131 240 Q(ast) +141 252 Q(Mak)151 264 Q(e\214le)-.1 E(ast.c)151 276 Q(astg.c)151 288 Q +(astg.h)151 300 Q(tok)121 312 Q(enizer)-.1 E(Mak)131 324 Q(e\214le)-.1 E +(parser)131 336 Q(.c)-.55 E(parser)131 348 Q(.h)-.55 E(tok)131 360 Q +(enizer)-.1 E(.c)-.55 E(tok)131 372 Q(enizer)-.1 E(.h)-.55 E(types.c)131 +384 Q(types.h)131 396 Q(zp)121 408 Q(y)-.1 E(Mak)131 420 Q(e\214le)-.1 E +(zp)131 432 Q -.65(y.)-.1 G(c).65 E(zp)131 444 Q(ycheck.c)-.1 E(zp)121 +456 Q(ycheck)-.1 E(Mak)131 468 Q(e\214le)-.1 E(errors.c)131 480 Q +(errors.h)131 492 Q(zp)131 504 Q(ycheck.c)-.1 E(zp)131 516 Q(ycheck.h) +-.1 E(zp)121 528 Q(ypkg)-.1 E(deps.zp)131 540 Q(y)-.1 E(do)131 552 Q +(wnload.zp)-.25 E(y)-.1 E(zp)131 564 Q(ypkg.zp)-.1 E(y)-.1 E .712 +(As you can see this is split up o)111 588 R -.15(ve)-.15 G 3.212(ra).15 G .713(round 40 \214les and 16 folders, each \214le should not go o) --3.212 F -.15(ve)-.15 G(r).15 E(~500 lines of code. This is to k)111 240 +-3.212 F -.15(ve)-.15 G(r).15 E(~500 lines of code. This is to k)111 600 Q(eep e)-.1 E -.15(ve)-.25 G(rything as easy to manage as possible.).15 -E .562(This le)111 264 R -.15(ve)-.25 G 3.062(lo).15 G 3.062(fm)-3.062 G +E .562(This le)111 624 R -.15(ve)-.25 G 3.062(lo).15 G 3.062(fm)-3.062 G .562(odularization in needed for the de)-3.062 F -.15(ve)-.25 G .562 (lopment of Zipp).15 F 3.062(ya)-.1 G 3.062(sw)-3.062 G .562 -(ithout it, \214les will be-)-3.062 F(come a mess that can')111 276 Q +(ithout it, \214les will be-)-3.062 F(come a mess that can')111 636 Q 2.5(tb)-.18 G 2.5(ew)-2.5 G(ork)-2.6 E(ed with.)-.1 E .041(All .c \214l\ es will be compiled into .o \214les, then the .o \214les can be link)111 -300 R .042(ed with the \214nal zp)-.1 F -.65(y.)-.1 G 2.542(ct).65 G -2.542(og)-2.542 G(en-)-2.542 E(erate the \214nal e)111 312 Q -.15(xe) --.15 G(cutable.).15 E/F1 10/Times-Bold@0 SF 2.5(3.3.3. Build)111 360 R -(system)2.5 E F0 1.221(The entire project is being b)111 375.6 R 1.221 -(uild with GNU mak)-.2 F 3.721<658c>-.1 G 1.22(les, each folder that b) --3.721 F 1.22(uilds something will)-.2 F(ha)111 387.6 Q 1.003 -.15(ve i) --.2 H .703(ts o).15 F .703(wn mak)-.25 F .704(e\214le. This will mean t\ -he entire project can be compiled with a single mak)-.1 F 3.204(ei)-.1 G -(n)-3.204 E(the root folder of the project.)111 399.6 Q(Example of mak) -111 423.6 Q(e:)-.1 E(mak)111 447.6 Q 2.5(e-)-.1 G(j2)-2.5 E(This will b) -111 471.6 Q(uild all \214les speci\214ed by 'Mak)-.2 E -(e\214le' with 2 threads.)-.1 E .34(The project should be b)111 495.6 R -.34(uild with gcc, and ld. It should be b)-.2 F .34(uild with the -O3 b) --.2 F .34(uild \215ag to ensure)-.2 F(the program runs as f)111 507.6 Q +660 R .042(ed with the \214nal zp)-.1 F -.65(y.)-.1 G 2.542(ct).65 G +2.542(og)-2.542 G(en-)-2.542 E(erate the \214nal e)111 672 Q -.15(xe) +-.15 G(cutable.).15 E/F1 10/Times-Bold@0 SF 2.5(3.3.5.1. Build)111 720 R +(system)2.5 E 0 Cg EP +%%Page: 20 20 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(-20-)297.67 48 Q 1.221 +(The entire project is being b)111 84 R 1.221(uild with GNU mak)-.2 F +3.721<658c>-.1 G 1.22(les, each folder that b)-3.721 F 1.22 +(uilds something will)-.2 F(ha)111 96 Q 1.003 -.15(ve i)-.2 H .703(ts o) +.15 F .703(wn mak)-.25 F .704(e\214le. This will mean the entire projec\ +t can be compiled with a single mak)-.1 F 3.204(ei)-.1 G(n)-3.204 E +(the root folder of the project.)111 108 Q(Example of mak)111 132 Q(e:) +-.1 E(mak)111 156 Q 2.5(e-)-.1 G(j2)-2.5 E(This will b)111 180 Q +(uild all \214les speci\214ed by 'Mak)-.2 E(e\214le' with 2 threads.)-.1 +E .34(The project should be b)111 204 R .34 +(uild with gcc, and ld. It should be b)-.2 F .34(uild with the -O3 b)-.2 +F .34(uild \215ag to ensure)-.2 F(the program runs as f)111 216 Q (ast as possible. -O3 forces the compiler to b)-.1 E (uild with optimizations.)-.2 E(When the project is \214nished, I will \ -try compiling with clang and tcc, to compare performance.)111 531.6 Q F1 -2.5(3.3.4. T)111 567.6 R(ime table)-.18 E F0 .174 -(The \214rst step is to tackle the interpreter)111 583.2 R 2.674(,s)-.4 +try compiling with clang and tcc, to compare performance.)111 240 Q/F1 +10/Times-Bold@0 SF 2.5(3.4. T)111 276 R(ime table)-.18 E F0 .174 +(The \214rst step is to tackle the interpreter)111 291.6 R 2.674(,s)-.4 G 2.674(ot)-2.674 G .174(he zp)-2.674 F -.65(y.)-.1 G 2.674<638c>.65 G .174(le needs to be \214nished. The tok)-2.674 F(enizer)-.1 E 2.674(,e) -.4 G -.15(xe)-2.824 G(-).15 E .598(cution, and libs folders need to be\ - \214nished, after this point you should be able to e)111 595.2 R -.15 -(xe)-.15 G .597(cute Zipp).15 F(y)-.1 E(code ho)111 607.2 Q(we)-.25 E + \214nished, after this point you should be able to e)111 303.6 R -.15 +(xe)-.15 G .597(cute Zipp).15 F(y)-.1 E(code ho)111 315.6 Q(we)-.25 E -.15(ve)-.25 G 2.5(rn).15 G(ot syntax check it or get error handling.) --2.5 E .124(The ne)111 631.2 R .124(xt step is zp)-.15 F .125 +-2.5 E .124(The ne)111 339.6 R .124(xt step is zp)-.15 F .125 (ycheck, the syntax and error handler)-.1 F 2.625(,t)-.4 G .125 -(his should be ran before code is shipped)-2.625 F(to the user)111 643.2 +(his should be ran before code is shipped)-2.625 F(to the user)111 351.6 Q 2.5(.I)-.55 G 2.5(tc)-2.5 G(an reuse a lot of code from the tok)-2.5 E -(enizer and e)-.1 E -.15(xe)-.15 G(cution steps.).15 E .744 -(Finally i need to mak)111 667.2 R 3.244(ez)-.1 G -.1(py)-3.244 G .743 +(enizer and e)-.1 E -.15(xe)-.15 G(cution steps.).15 E .716 +(Finally I need to mak)111 375.6 R 3.216(ez)-.1 G -.1(py)-3.216 G .716 (pkg, this should be easy as most of it can be written in Zipp).1 F -2.043 -.65(y, a)-.1 H .743(nd a).65 F(fe)111 679.2 Q 2.5(wb)-.25 G +2.016 -.65(y, a)-.1 H .716(nd a).65 F(fe)111 387.6 Q 2.5(wb)-.25 G (its can be written in bash. It should be a good test to ho)-2.5 E 2.5 (wZ)-.25 G(ipp)-2.5 E 2.5(yc)-.1 G(an be written.)-2.5 E(If time allo) -111 703.2 Q(ws it is at this point that I will write a Raylib library) --.25 E(.)-.65 E 0 Cg EP -%%Page: 20 20 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF(-20-)297.67 48 Q/F1 10/Times-Bold@0 SF 2.5(4. T) -111 84 R(echnical Solution)-.92 E 2.5(5. T)111 108 R(esting)-.92 E 2.5 -(6. Ev)111 132 R(aluation)-.1 E 0 Cg EP +111 411.6 Q(ws it is at this point that I will write a Raylib library a\ +nd a unix/C sock)-.25 E(ets library)-.1 E(.)-.65 E F1 2.5(4. T)111 447.6 +R(echnical Solution)-.92 E 2.5(5. T)111 471.6 R(esting)-.92 E 2.5(6. Ev) +111 495.6 R(aluation)-.1 E 0 Cg EP %%Trailer end %%EOF diff --git a/comp/lucas-standen-NEA/writeup/questions-for-amy.ps b/comp/lucas-standen-NEA/writeup/questions-for-amy.ps index 0aa970d..4898b7c 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 16 13:47:30 2024 +%%CreationDate: Tue May 21 15:38:15 2024 %%DocumentNeededResources: font Times-Bold %%+ font Times-Roman %%DocumentSuppliedResources: procset grops 1.23 0 diff --git a/comp/lucas-standen-NEA/writeup/questions-for-rayn.ps b/comp/lucas-standen-NEA/writeup/questions-for-rayn.ps index ffca65c..d2afbb8 100644 --- a/comp/lucas-standen-NEA/writeup/questions-for-rayn.ps +++ b/comp/lucas-standen-NEA/writeup/questions-for-rayn.ps @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 %%Creator: groff version 1.23.0 -%%CreationDate: Thu May 16 13:47:30 2024 +%%CreationDate: Tue May 21 15:38:16 2024 %%DocumentNeededResources: font Times-Bold %%+ font Times-Roman %%DocumentSuppliedResources: procset grops 1.23 0 diff --git a/comp/work/32/oop.py b/comp/work/32/oop.py new file mode 100644 index 0000000..8d7bd7b --- /dev/null +++ b/comp/work/32/oop.py @@ -0,0 +1,31 @@ +class person: + def __init__(self, age, name): + self.__age = age + self.__name = name + + def getAge(self): + return self.__age + + def getName(self): + return self.__name + + def getOlder(self, new): + self.__age = new + + +class child(person): + def __init__(self, age, name, school): + super().__init__(age, name) + self.__school = school + + def getSchool(self): + return self.__school + + def newSchool(self, new): + self.__school = new + + +if __name__ == "__main__": + me = child(17, "lucas", "qmc") + me.getOlder(18) + print(me.getName()) |