diff options
Diffstat (limited to 'comp')
-rw-r--r-- | comp/lucas-standen-NEA/code/tokenizer/Makefile | 9 | ||||
-rwxr-xr-x | comp/lucas-standen-NEA/code/tokenizer/tokenizer | bin | 24392 -> 42264 bytes | |||
-rw-r--r-- | comp/lucas-standen-NEA/code/tokenizer/tokenizer.c | 203 | ||||
-rw-r--r-- | comp/lucas-standen-NEA/code/tokenizer/tokenizer.h | 0 | ||||
-rw-r--r-- | comp/lucas-standen-NEA/code/tokenizer/types.h | 26 | ||||
-rw-r--r-- | comp/lucas-standen-NEA/code/tokenizer/util.c | 38 | ||||
-rw-r--r-- | comp/lucas-standen-NEA/code/tokenizer/util.h | 7 | ||||
-rw-r--r-- | comp/lucas-standen-NEA/writeup/coverpage.ms | 232 | ||||
-rw-r--r-- | comp/lucas-standen-NEA/writeup/coverpage.ps | 429 | ||||
-rw-r--r-- | comp/lucas-standen-NEA/writeup/questions-for-amy.ps | 2 | ||||
-rw-r--r-- | comp/lucas-standen-NEA/writeup/questions-for-rayn.ms | 15 | ||||
-rw-r--r-- | comp/lucas-standen-NEA/writeup/questions-for-rayn.ps | 276 |
12 files changed, 442 insertions, 795 deletions
diff --git a/comp/lucas-standen-NEA/code/tokenizer/Makefile b/comp/lucas-standen-NEA/code/tokenizer/Makefile index 479b838..b09f177 100644 --- a/comp/lucas-standen-NEA/code/tokenizer/Makefile +++ b/comp/lucas-standen-NEA/code/tokenizer/Makefile @@ -1,10 +1,9 @@ tokenizer: parser util tokenizer.c - cc -O3 tokenizer.c parser.o util.o -o tokenizer + cc -O3 tokenizer.c parser.o util.o -o tokenizer -ggdb parser: parser.c - cc -O3 parser.c -c -o parser.o -util: util.c - cc -O3 util.c -c -o util.o - + cc -O3 parser.c -c -o parser.o -ggdb +util: util.c + cc -O3 util.c -c -o util.o -ggdb 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 differindex 726ee21..2d2f1c0 100755 --- a/comp/lucas-standen-NEA/code/tokenizer/tokenizer +++ 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 5cc596f..080951b 100644 --- a/comp/lucas-standen-NEA/code/tokenizer/tokenizer.c +++ b/comp/lucas-standen-NEA/code/tokenizer/tokenizer.c @@ -1,154 +1,151 @@ -#include <stdlib.h> #include <stdio.h> #include <string.h> -#include "parser.h" -#include "util.h" #include "types.h" +#include "util.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 - +#define MAXARGS 8 -builtInFuncs IsBuiltIn(char *func){ +int getBuiltIn(char *func, ast_node *node){ if (strcmp(func, "defun") == 0){ - return DEFUN; + node->func->builtInFunc= DEFUN; }else if (strcmp(func, "let") == 0){ - return LET; + node->func->builtInFunc = LET; }else if (strcmp(func, "set") == 0){ - return SET; + node->func->builtInFunc = SET; }else if (strcmp(func, "if") == 0){ - return IF; + node->func->builtInFunc = IF; }else if (strcmp(func, "elif") == 0){ - return ELIF; + node->func->builtInFunc = ELIF; }else if (strcmp(func, "else") == 0){ - return ELSE; + node->func->builtInFunc = ELSE; }else if (strcmp(func, "for") == 0){ - return FOR; + node->func->builtInFunc = FOR; }else if (strcmp(func, "while") == 0){ - return WHILE; + node->func->builtInFunc = WHILE; }else if (strcmp(func, "symbol") == 0){ - return SYMBOL; - }else if (strcmp(func, "struct") == 0){ - return STRUCT; + node->func->builtInFunc = SYMBOL; }else if (strcmp(func, "+") == 0){ - return ADD; + node->func->builtInFunc = ADD; }else if (strcmp(func, "-") == 0){ - return SUB; + node->func->builtInFunc = SUB; }else if (strcmp(func, "*") == 0){ - return MUL; + node->func->builtInFunc = MUL; }else if (strcmp(func, "/") == 0){ - return DIV; + node->func->builtInFunc = DIV; }else if (strcmp(func, "=") == 0){ - return EQ; + node->func->builtInFunc = EQ; }else if (strcmp(func, "!=") == 0){ - return NEQ; + node->func->builtInFunc = NEQ; }else if (strcmp(func, ">") == 0){ - return GT; + node->func->builtInFunc = GT; }else if (strcmp(func, "<") == 0){ - return LT; + node->func->builtInFunc = LT; }else if (strcmp(func, ">=") == 0){ - return GTEQ; + node->func->builtInFunc = GTEQ; }else if (strcmp(func, "<=") == 0){ - return LTEQ; + node->func->builtInFunc = LTEQ; }else if (strcmp(func, "cast") == 0){ - return CAST; + node->func->builtInFunc = CAST; }else if (strcmp(func, "typeof") == 0){ - return TYPEOF; - }else if (strcmp(func, "terminate") == 0){ - return TERMINATE; + node->func->builtInFunc = TYPEOF; + }else if (strcmp(func, "exit") == 0){ + node->func->builtInFunc = EXIT; }else if (strcmp(func, "return") == 0){ - return RETURN; - } - else { + node->func->builtInFunc = RETURN; + }else { + node->func->builtInFunc = NIL; return -1; } + return 0; } -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]; +ll_t *getUserDefinedFunction(char *function); + +void expressFunction(char *function, ast_node *node){ + node->func = CheckedMalloc(sizeof(functionToken)); + if ((getBuiltIn(function, node)) == -1){ + //node->func->func = getUserDefinedFunction(function); + } else { + node->func->func = NULL; } - 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]; - +void expressArgs(char **args, ast_node *node){ + for (int i = 0; i < MAXARGS; i++){ + if (node->args[i] == NULL){ + memcpy(node->literalArgs[i], args[i], strlen(args[i]) + 1); + } } + +} - char **out = CheckedMalloc(spaceCount); - for (int i = 0; i < spaceCount; i++){ - out[i] = CheckedMalloc(strlen(exp)); - } +ast_node *tokenize(char *input){ + ast_node *node, *child; - 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++; + char *exp, *function, **args; + size_t i = 0, argCount = -1; + int depth = 0; + + node = CheckedMalloc(sizeof(ast_node)); + node->args = CheckedMalloc(sizeof(ast_node) * MAXARGS); + node->literalArgs = CheckedMalloc(sizeof(void *) * MAXARGS); + + if (input[i] == '('){ + depth = 1; + i++; + exp = CheckedMalloc(strlen(input)); + while (depth != 0){ + if (input[i] == ' ') argCount++; + if (input[i] == '('){ + child = tokenize(&input[i]); + node->args[argCount] = child; + depth++; + } else if (input[i] == ')'){ + depth--; + } + exp[i - 1] = input[i]; + if (input[i] == '\0'){ + fprintf(stderr, "error brace not closed\n"); + exit(1); } - } else{ - out[tokCounter][i] = '\0'; - charCounter = 0; - tokCounter++; + i++; } + exp[i-2] = '\0'; + exp = CheckedRealloc(exp, strlen(exp) + 1); + printf("%s\n", exp); + }else if (input[i] == '"'){ i++; + while (input[i] != '"') 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; + i = 0; + function = CheckedMalloc(strlen(exp)); + while (exp[i] != ' '){ + function[i] = exp[i]; + i++; } - return head; -} + function[i] = '\0'; + function = CheckedRealloc(function, i); + printf("%s\n", function); -int main(){ - ast_node *node = GenAst("(+ 1 2)"); - printf("%d\n", node->builtInFunc); + expressFunction(function, node); - char **args = GetStringArgs("+ 1 2"); - for (int i = 0; i < 2; i++){ - printf("%s\n", args[i]); - } + i++; + args = Split(&input[i], ' '); + // need a length + expressArgs(args, node /* length */ ); - free(args); + free(exp); - free(node); + return node; +} + +int main(){ + char sample[] = "(+ (- 2 2) 1)"; + ast_node *root = tokenize(sample); + printf("%d", root->args[0]->func->builtInFunc); + free(root); } diff --git a/comp/lucas-standen-NEA/code/tokenizer/tokenizer.h b/comp/lucas-standen-NEA/code/tokenizer/tokenizer.h deleted file mode 100644 index e69de29..0000000 --- a/comp/lucas-standen-NEA/code/tokenizer/tokenizer.h +++ /dev/null diff --git a/comp/lucas-standen-NEA/code/tokenizer/types.h b/comp/lucas-standen-NEA/code/tokenizer/types.h index 034dc04..8c79bd9 100644 --- a/comp/lucas-standen-NEA/code/tokenizer/types.h +++ b/comp/lucas-standen-NEA/code/tokenizer/types.h @@ -10,8 +10,6 @@ typedef enum types { FLOAT_t = 4, CHAR_T = 5, FUNCTION_T = 6, - STRUCT_T = 7, - OBJ_T = 8, } types; // int types @@ -24,16 +22,9 @@ 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 { + // general DEFUN = 0, LET = 1, SET = 2, @@ -43,7 +34,6 @@ typedef enum builtInFuncs { FOR = 6, WHILE = 7, SYMBOL = 8, - STRUCT = 9, // arithmetic ADD = 10, @@ -59,16 +49,26 @@ typedef enum builtInFuncs { GTEQ = 18, LTEQ = 19, + // misc CAST = 20, TYPEOF = 21, - TERMINATE = 22, + EXIT = 22, RETURN = 23, + NIL = -1, } builtInFuncs; +// 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 *func; // the code for the function + builtInFuncs builtInFunc; // a built in functions +} functionToken; + 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 diff --git a/comp/lucas-standen-NEA/code/tokenizer/util.c b/comp/lucas-standen-NEA/code/tokenizer/util.c index de5b6b2..46deba8 100644 --- a/comp/lucas-standen-NEA/code/tokenizer/util.c +++ b/comp/lucas-standen-NEA/code/tokenizer/util.c @@ -1,4 +1,5 @@ #include <stdio.h> +#include <string.h> #include <stdlib.h> #include <errno.h> #include <error.h> @@ -6,6 +7,7 @@ void Die(); // brings down the program void *CheckedMalloc(long size); // malloc checked void *CheckedRealloc(void *out, long size); // realloc checked +char **Split(char *s, char c); // splits a string into an array of strings around c void Die(){ perror("zpy parser"); @@ -25,3 +27,39 @@ void *CheckedRealloc(void *orig, long size){ Die(); return out; } + +static size_t countSegment(char const *s, char c){ + size_t counter = 0; + int i = 0; + while (s[i]){ + if (s[i] == c){ + i++; + continue; + } + counter++; + while (s[i] && s[i] != c) i++; + } + return counter; +} + +char **Split(char *s, char c){ + char **strs; + size_t tab_counter; + size_t i; + size_t j; + + if (s == NULL) return NULL; + tab_counter = countSegment(s, c); + if ((strs = (char**)CheckedMalloc(sizeof(char*) * (tab_counter + 1))) == NULL) return NULL; + tab_counter = 0; + j = -1; + while (s[++j]) { + if (s[j] == c) continue; + i = 0; + while (s[j + i] && s[j + i] != c) i++; + if ((strs[tab_counter++] = strndup(&s[j], i)) == NULL) return NULL; + j += i - 1; + } + strs[tab_counter] = NULL; + return strs; +} diff --git a/comp/lucas-standen-NEA/code/tokenizer/util.h b/comp/lucas-standen-NEA/code/tokenizer/util.h index cbcbdfa..c25ebec 100644 --- a/comp/lucas-standen-NEA/code/tokenizer/util.h +++ b/comp/lucas-standen-NEA/code/tokenizer/util.h @@ -1,3 +1,10 @@ +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <errno.h> +#include <error.h> + void Die(); // brings down the program void *CheckedMalloc(long size); // malloc checked void *CheckedRealloc(void *out, long size); // realloc checked +char **Split(char *s, char c); // splits a string into an array of strings around c diff --git a/comp/lucas-standen-NEA/writeup/coverpage.ms b/comp/lucas-standen-NEA/writeup/coverpage.ms index 10d713d..f99dd7f 100644 --- a/comp/lucas-standen-NEA/writeup/coverpage.ms +++ b/comp/lucas-standen-NEA/writeup/coverpage.ms @@ -619,16 +619,9 @@ Advanced types .LP function - a function that can be used -struct - initializer for an object - -obj - instance of a struct - generic - should be avoided, removes checks for data types when inputting values to functions will cause many runtime errors, however when absolutely needed it is useful. -err - error type, can be given to terminate function to bring down the program, or have -info drawn on the error. - .NH 4 Arrays .LP @@ -657,19 +650,11 @@ defun Returns a function that take A and B as an argument (fixed types), and returns a value of returntype. -.NH 5 -Errors -.LP -Can syntax error. .NH 4 let .LP (let x:type value) -.NH 5 -Errors -.LP -Can syntax error. Creates constant x of type type to value. @@ -679,10 +664,6 @@ set (set x:type value) Creates/recreates the variable value of x to value. -.NH 5 -Errors -.LP -Can syntax error. .NH 4 if/elif/else @@ -699,10 +680,6 @@ Executes the function provided if the condition is true. Elif works the same, except only if the previous if statement is false. Else executes only if all previous statements were false. -.NH 5 -Errors -.LP -Can syntax error. .NH 4 for @@ -711,11 +688,6 @@ for Runs the function while the condition is true, and increments i every time the function is called. -.NH 5 -Errors -.LP -Can syntax error. - .NH 4 while @@ -723,10 +695,6 @@ while (while condition function) Runs the function if the condition is true, keeps running until it is false. -.NH 5 -Errors -.LP -Can syntax error. .NH 4 symbol @@ -736,53 +704,6 @@ symbol Returns a function that takes arguments A, B, C (of fixed types), the name of the function, and the file path of the elf. .NH 5 -Errors -.LP -Can syntax error. - -Can throw other errors, via returning an err type. - -.NH 4 -struct -.LP -(struct - _a:type - b:type - c:type - -) - -Returns a struct (a class) that can have a default value, the default value can be set -using an underscore in front of the variable name. A default variable will be returned -if you use the struct without specifying a value. - -Use let to assign it a name: - -(let a:struct (struct - ... - ... - ... - ) - -) - -Then to instantiate the struct use the following: - -(let a:obj struct) - -The struct argument needs to have been set prior. - -To read from the struct use this: - -(if (= a.num b.num) .... ) - -Or if you have set a default value you can use the following: - -(if (= a b.num) .... ) -.NH 5 -Errors -.LP -Can syntax error. .NH 4 Arithmetic operations @@ -813,10 +734,6 @@ All return true or false (=> a b) returns if a => b (=< a b) returns if a =< b -.NH 5 -Errors -.LP -Can syntax error. .NH 4 cast @@ -824,12 +741,6 @@ cast (cast a:generic type:char[]) returns a but cast to data type type, which is a string. -.NH 5 -Errors -.LP -Can syntax error. - -Can throw errors, via err, if value can't be cast to a given type. .NH 4 typeof @@ -837,10 +748,6 @@ typeof (typeof a:generic) returns in a string the type that variable A is. -.NH 5 -Errors -.LP -Can syntax error. .NH 4 terminate @@ -848,10 +755,6 @@ terminate (terminate error:error) Kills the program at the current point, frees all related memory, prints error info stored in error. -.NH 5 -Errors -.LP -Can syntax error. .NH 4 return @@ -859,12 +762,31 @@ return (return a:type) Must be used in defun, returns "a" from the function, "a" must be of the functions return type. -.NH 5 -Errors + +.NH 3 +List of keywords .LP -Can syntax error. +defun + +for + +while + +if -Can throw errors via err. +elif + +else + +exit + +return + +symbol + +set + +let .NH 2 Memory management @@ -874,6 +796,48 @@ Although this isn't the fastest method, it is simple and has less runtime overhe .NH 2 Questionnaire 2 for Rayn M +.NH 3 +How do you find this layout of the language? +.LP +.I "(5-6 points)" +- I like the immutable nature of the language +- I like the simplicity +- I like the low level performance this will have +- I dislike the word terminate +- I like the procedural approach, with the function robustness +- I dislike the brackets! +.NH 3 +Response +.LP +Although he does dislike some of my features I believe them to be core parts of the language so +I will keep them. I will also keep his points in mind though, I don't want to discourage learning +the language due to its abstract syntax. + +However as per his request I will change the terminate keyword to the more normal exit. + +An updated keyword list is as flows: + +defun + +for + +while + +if + +elif + +else + +exit + +return + +symbol + +set + +let .NH 2 What language do you use to make a programming language @@ -945,71 +909,7 @@ becoming impossible to edit code. The file layout looks as follows: - Makefile - ads - Makefile - ast - Makefile - ast.c - ast.h - types.c - types.h - dict - Makefile - dict.c - dict.h - dicttest.c - ll - Makefile - ll.c - ll.h - lltest.c - execution - Makefile - exec.c - exec.h - types.c - types.h - libs - Makefile - graphs - graphs.zpy - io - io.zpy - stdlib - Makefile - stdlib.c - stdlib.zpy - string - string.zpy - proto - ast - Makefile - ast.c - astg.c - astg.h - tokenizer - Makefile - parser.c - parser.h - tokenizer.c - tokenizer.h - types.c - types.h - zpy - Makefile - zpy.c - zpycheck.c - zpycheck - Makefile - errors.c - errors.h - zpycheck.c - zpycheck.h - zpypkg - deps.zpy - download.zpy - zpypkg.zpy +PLACE HERE As you can see this is split up over around 40 files and 16 folders, each file should not go over ~500 lines of code. This is to keep everything as easy to manage as possible. diff --git a/comp/lucas-standen-NEA/writeup/coverpage.ps b/comp/lucas-standen-NEA/writeup/coverpage.ps index 6e032c1..a5f55b6 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: Tue May 21 15:38:13 2024 +%%CreationDate: Thu Jun 6 13:22:18 2024 %%DocumentNeededResources: font Times-Bold %%+ font Times-Italic %%+ font Times-Roman @@ -12,7 +12,7 @@ %%+ file linkedlist.ps %%+ procset grops 1.23 0 %%LanguageLevel: 2 -%%Pages: 20 +%%Pages: 19 %%PageOrder: Ascend %%DocumentMedia: Default 612 792 0 () () %%Orientation: Portrait @@ -52490,284 +52490,281 @@ BP (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 315.6 Q 2.5(yr)-.15 G +(function - a function that can be used)111 231.6 Q 1.005 +(generic - should be a)111 255.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 267.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 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 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 +(hen absolutely needed it is useful.)-2.5 E F1 2.5(3.1.1.3. Arrays)111 +303.6 R F0(Arrays can be sho)111 319.2 Q 2.5(wl)-.25 G(ik)-2.5 E 2.5(es) +-.1 G(o:)-2.5 E(x:type[])111 343.2 Q -.4(Wi)111 367.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 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 +(All arrays are dynamic, represented by a link)111 391.2 Q +(ed list on the back end.)-.1 E F1 2.5(3.1.1.3.1. Strings)111 415.2 R F0 +(Strings, lik)111 430.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 466.8 R(in functions) +2.5 E 2.5(3.1.2.1. defun)111 490.8 R F0 +(\(defun a:type b:type returntype)111 506.4 Q(...)131 518.4 Q(...)131 +530.4 Q(\))111 554.4 Q .398(Returns a function that tak)111 578.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 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 +.397(ed types\), and returns a v)-.15 F .397(alue of return-)-.25 F +(type.)111 590.4 Q F1 2.5(3.1.2.2. let)111 626.4 R F0(\(let x:type v)111 +642 Q(alue\))-.25 E(Creates constant x of type type to v)111 666 Q +(alue.)-.25 E F1 2.5(3.1.2.3. set)111 702 R F0(\(set x:type v)111 717.6 +Q(alue\))-.25 E 0 Cg EP %%Page: 14 14 %%BeginPageSetup BP %%EndPageSetup -/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 +/F0 10/Times-Roman@0 SF(-14-)297.67 48 Q(Creates/recreates the v)111 84 +Q(ariable v)-.25 E(alue of x to v)-.25 E(alue.)-.25 E/F1 10/Times-Bold@0 +SF 2.5(3.1.2.4. if/elif/else)111 120 R F0(\(if condition function\))111 +135.6 Q(\(elif condition function\))111 159.6 Q(\(else function\))111 +183.6 Q(Ex)111 219.6 Q(ecutes the function pro)-.15 E +(vided if the condition is true.)-.15 E(Elif w)111 243.6 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 462 Q -.15(xe) +(vious if statement is f)-.25 E(alse.)-.1 E(Else e)111 267.6 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 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 +-.1 E F1 2.5(3.1.2.5. f)111 303.6 R(or)-.25 E F0 +(\(for i \(condition\) function\))111 319.2 Q (Runs the function while the condition is true, and increments i e)111 -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 -728.4 R(ors)-.18 E 0 Cg EP +343.2 Q -.15(ve)-.25 G(ry time the function is called.).15 E F1 2.5 +(3.1.2.6. while)111 379.2 R F0(\(while condition function\))111 394.8 Q +(Runs the function if the condition is true, k)111 418.8 Q +(eeps running until it is f)-.1 E(alse.)-.1 E F1 2.5(3.1.2.7. symbol)111 +454.8 R F0 +(\(symbol a:type b:type c:type returntype name:char[] elf:char[]\))111 +470.4 Q .763(Returns a function that tak)111 494.4 R .763(es ar)-.1 F +.763(guments A, B, C \(of \214x)-.18 F .764 +(ed types\), the name of the function, and)-.15 F +(the \214le path of the elf.)111 506.4 Q F1(3.1.2.7.1.)111 530.4 Q 2.5 +(3.1.2.8. Arithmetic)111 566.4 R(operations)2.5 E F0(Simple operations) +111 582 Q(\(+ a b\) returns a + b)111 606 Q(\(- a b\) returns a - b)111 +630 Q(\(* a b\) returns a * b)111 654 Q(\(/ a b\) returns a / b)111 678 +Q F1 2.5(3.1.2.9. Comparison)111 714 R F0(All return true or f)111 729.6 +Q(alse)-.1 E 0 Cg EP %%Page: 15 15 %%BeginPageSetup BP %%EndPageSetup -/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 -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 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 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 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 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 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 +/F0 10/Times-Roman@0 SF(-15-)297.67 48 Q(\(= a b\) returns if a = b)111 +84 Q(\(!= a b\) returns if a != b)111 108 Q(\(> a b\) returns if a > b) +111 132 Q(\(< a b\) returns if a < b)111 156 Q +(\(=> a b\) returns if a => b)111 180 Q(\(=< a b\) returns if a =< b)111 +204 Q/F1 10/Times-Bold@0 SF 2.5(3.1.2.10. cast)111 240 R F0 +(\(cast a:generic type:char[]\))111 255.6 Q(returns a b)111 279.6 Q +(ut cast to data type type, which is a string.)-.2 E F1 2.5 +(3.1.2.11. typeof)111 315.6 R F0(\(typeof a:generic\))111 331.2 Q +(returns in a string the type that v)111 355.2 Q(ariable A is.)-.25 E F1 +2.5(3.1.2.12. terminate)111 391.2 R F0(\(terminate error:error\))111 +406.8 Q +(Kills the program at the current point, frees all related memory)111 +430.8 Q 2.5(,p)-.65 G(rints error info stored in error)-2.5 E(.)-.55 E +F1 2.5(3.1.2.13. r)111 466.8 R(etur)-.18 E(n)-.15 E F0 +(\(return a:type\))111 482.4 Q(Must be used in defun, returns "a" from \ +the function, "a" must be of the functions return type.)111 506.4 Q F1 +2.5(3.1.3. List)111 542.4 R(of k)2.5 E(eyw)-.1 E(ords)-.1 E F0(defun)111 +558 Q(for)111 582 Q(while)111 606 Q(if)111 630 Q(elif)111 654 Q(else)111 +678 Q -.15(ex)111 702 S(it).15 E(return)111 726 Q 0 Cg EP %%Page: 16 16 %%BeginPageSetup BP %%EndPageSetup -/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 +/F0 10/Times-Roman@0 SF(-16-)297.67 48 Q(symbol)111 84 Q(set)111 108 Q +(let)111 132 Q/F1 10/Times-Bold@0 SF 2.5(3.2. Memory)111 168 R +(management)2.5 E F0 .54(Memory will be allocated when a v)111 183.6 R +.54(ariable is initialized, and freed when the program stops.)-.25 F +(Al-)5.54 E(though this isn')111 195.6 Q 2.5(tt)-.18 G(he f)-2.5 E +(astest method, it is simple and has less runtime o)-.1 E -.15(ve)-.15 G +(rhead.).15 E F1 2.5(3.3. Questionnair)111 231.6 R 2.5(e2f)-.18 G +(or Rayn M)-2.75 E 2.5(3.3.1. Ho)111 255.6 R 2.5(wd)-.1 G 2.5(oy)-2.5 G +(ou \214nd this lay)-2.75 E(out of the language?)-.25 E/F2 10 +/Times-Italic@0 SF .745(\(5-6 points\))111.08 271.2 R F0 3.245(-Il)3.305 +G(ik)-3.245 E 3.245(et)-.1 G .745 +(he immutable nature of the language - I lik)-3.245 F 3.245(et)-.1 G +.745(he simplicity - I lik)-3.245 F 3.245(et)-.1 G .745(he lo)-3.245 F +(w)-.25 E(le)111 283.2 Q -.15(ve)-.25 G 3.284(lp).15 G .783 +(erformance this will ha)-3.284 F 1.083 -.15(ve - I d)-.2 H(islik).15 E +3.283(et)-.1 G .783(he w)-3.283 F .783(ord terminate - I lik)-.1 F 3.283 +(et)-.1 G .783(he procedural approach,)-3.283 F(with the function rob) +111 295.2 Q(ustness - I dislik)-.2 E 2.5(et)-.1 G(he brack)-2.5 E(ets!) +-.1 E F1 2.5(3.3.2. Response)111 319.2 R F0 .103 +(Although he does dislik)111 334.8 R 2.603(es)-.1 G .103 +(ome of my features I belie)-2.603 F .403 -.15(ve t)-.25 H .103 +(hem to be core parts of the language so I).15 F .863(will k)111 346.8 R +.863(eep them. I will also k)-.1 F .863 +(eep his points in mind though, I don')-.1 F 3.363(tw)-.18 G .863 +(ant to discourage learning)-3.463 F +(the language due to its abstract syntax.)111 358.8 Q(Ho)111 382.8 Q(we) +-.25 E -.15(ve)-.25 G 2.5(ra).15 G 2.5(sp)-2.5 G +(er his request I will change the terminate k)-2.5 E -.15(ey)-.1 G -.1 +(wo).15 G(rd to the more normal e).1 E(xit.)-.15 E(An updated k)111 +406.8 Q -.15(ey)-.1 G -.1(wo).15 G(rd list is as \215o).1 E(ws:)-.25 E +(defun)111 430.8 Q(for)111 454.8 Q(while)111 478.8 Q(if)111 502.8 Q +(elif)111 526.8 Q(else)111 550.8 Q -.15(ex)111 574.8 S(it).15 E(return) +111 598.8 Q(symbol)111 622.8 Q(set)111 646.8 Q(let)111 670.8 Q F1 2.5 +(3.4. What)111 706.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 722.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 0 Cg EP %%Page: 17 17 %%BeginPageSetup BP %%EndPageSetup -/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 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 374.4 Q +/F0 10/Times-Roman@0 SF(-17-)297.67 48 Q(will try and k)111 84 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. What)111 410.4 R -(is C?)2.5 E F0 3.027(Cw)111 426 S .527 +(he project easier to manage.)-2.5 E/F1 10/Times-Bold@0 SF 2.5 +(3.4.1. What)111 120 R(is C?)2.5 E F0 3.027(Cw)111 135.6 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 +(ep)-.1 G(rogram-)-3.026 E .067(ming lo)111 147.6 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 +(as used to create the unix operating)-.1 F .65(system which w)111 159.6 +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 171.6 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 +195.6 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 207.6 R +.102(as found to be able to do all the things that you could do in)-.1 F +(ASM ho)111 219.6 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.4.2. Wh)111 255.6 R 2.5(yi)-.15 G +2.5(sC)-2.5 G(?)-2.5 E F0 .469(As mentioned C can do an)111 271.2 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 +(ast and can tak)-.1 F 2.969(ea)-.1 G(d-)-2.969 E -.25(va)111 283.2 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) +-.15(xe)-.15 G .345(cutables that).15 F .239(can ri)111 295.2 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 +(tions\). It is this that mak)111 307.2 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 +(nd all programming languages, where)-2.659 F(speed is k)111 319.2 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 +-.2 G(ilable are present.).25 E F1 2.5(3.4.3. Ho)111 355.2 R 2.5(wi)-.1 +G 2.5(sC)-2.5 G(?)-2.5 E F0 3.214(Ci)111 370.8 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 +(gcc as it is generally standard in linux en)111 382.8 Q(vironments.)-.4 +E(Man)111 406.8 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 +G .209(nd gnu mak)-2.709 F .208(e. Both of them)-.1 F(ha)111 418.8 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 +(windo)111 430.8 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 F1 2.5(3.4.4. Libraries)111 466.8 R F0 +(The libraries I will use are the follo)111 482.4 Q(wing:)-.25 E 2.5(Cs) +111 506.4 S(tdlib)-2.5 E 2.5(Cu)111 530.4 S(nistd)-2.5 E 2.5(Ce)111 +554.4 S(rrno)-2.5 E(Unix de)111 578.4 Q(vice \214les)-.25 E(Zipp)111 +602.4 Q 2.5(ys)-.1 G(trings)-2.5 E(Zipp)111 626.4 Q 2.5(yg)-.1 G(raphs) +-2.5 E(Zipp)111 650.4 Q 2.5(ys)-.1 G(orts)-2.5 E +(Addition libraries \(may not be implemented\):)111 674.4 Q(Raylib)111 +698.4 Q 2.5(Cs)111 722.4 S(ock)-2.5 E(ets + Zipp)-.1 E 2.5(ys)-.1 G(ock) +-2.5 E(ets)-.1 E 0 Cg EP %%Page: 18 18 %%BeginPageSetup BP %%EndPageSetup /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(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 600 -Q(eep e)-.1 E -.15(ve)-.25 G(rything as easy to manage as possible.).15 -E .562(This le)111 624 R -.15(ve)-.25 G 3.062(lo).15 G 3.062(fm)-3.062 G +(3.4.5. Modularization)111 84 R F0 2.062 -.8(To m)111 99.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 111.6 Q +(The \214le layout looks as follo)111 135.6 Q(ws:)-.25 E(PLA)111 159.6 Q +(CE HERE)-.4 E .712(As you can see this is split up o)111 183.6 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 195.6 Q +(eep e)-.1 E -.15(ve)-.25 G(rything as easy to manage as possible.).15 E +.562(This le)111 219.6 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 636 Q +(ithout it, \214les will be-)-3.062 F(come a mess that can')111 231.6 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 -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 +255.6 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 267.6 Q -.15(xe) +-.15 G(cutable.).15 E F1 2.5(3.4.5.1. Build)111 315.6 R(system)2.5 E F0 +1.221(The entire project is being b)111 331.2 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 343.2 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 \ +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 355.2 Q(Example of mak)111 379.2 Q +(e:)-.1 E(mak)111 403.2 Q 2.5(e-)-.1 G(j2)-2.5 E(This will b)111 427.2 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 +E .34(The project should be b)111 451.2 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 +F .34(uild \215ag to ensure)-.2 F(the program runs as f)111 463.2 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 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 +try compiling with clang and tcc, to compare performance.)111 487.2 Q F1 +2.5(3.5. T)111 523.2 R(ime table)-.18 E F0 .174 +(The \214rst step is to tackle the interpreter)111 538.8 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 303.6 R -.15 -(xe)-.15 G .597(cute Zipp).15 F(y)-.1 E(code ho)111 315.6 Q(we)-.25 E + \214nished, after this point you should be able to e)111 550.8 R -.15 +(xe)-.15 G .597(cute Zipp).15 F(y)-.1 E(code ho)111 562.8 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 339.6 R .124(xt step is zp)-.15 F .125 +-2.5 E .124(The ne)111 586.8 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 351.6 +(his should be ran before code is shipped)-2.625 F(to the user)111 598.8 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 .716 -(Finally I need to mak)111 375.6 R 3.216(ez)-.1 G -.1(py)-3.216 G .716 +(Finally I need to mak)111 622.8 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.016 -.65(y, a)-.1 H .716(nd a).65 F(fe)111 387.6 Q 2.5(wb)-.25 G +2.016 -.65(y, a)-.1 H .716(nd a).65 F(fe)111 634.8 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 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 +111 658.8 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(3.6. Flo)111 +694.8 R 2.5(wt)-.1 G(hr)-2.5 E(ough the system)-.18 E F0 1.403 +(The alogrithum to run code is quite comple)111 710.4 R 3.903(xh)-.15 G +-.25(ow)-3.903 G -2.15 -.25(ev e).25 H 3.903(ri).25 G 3.903(tc)-3.903 G +1.403(an be boiled do)-3.903 F 1.403(wn to a fe)-.25 F 3.903(ws)-.25 G +(imple)-3.903 E(steps:)111 722.4 Q 0 Cg EP +%%Page: 19 19 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(-19-)297.67 48 Q/F1 10/Times-Bold@0 SF -.18(re) +111 84 S .263(ad the text \214le \(strip line br).18 F .263 +(eaks and tabs\) cr)-.18 F .263(eate an empty link)-.18 F .263 +(ed list get the \214rst expr)-.1 F(es-)-.18 E .026(sion fr)111 96 R +.026(om the text \214le \(with be encapsulated with)-.18 F F0(\(\)"") +2.526 E F1 .026(get the function call and its ar)2.526 F .027(gs into a) +-.1 F(tok)111 108 Q .232(en if the ar)-.1 F .231 +(guments of the function ar)-.1 F 2.731(et)-.18 G(her)-2.731 E 2.731(eo) +-.18 G .231(wn function call, then con)-2.831 F -.1(ve)-.4 G .231 +(rt them into a).1 F(tok)111 120 Q .585(en set that tok)-.1 F .585 +(en as the ar)-.1 F .585(gument in the \214rst tok)-.1 F .585 +(en append the r)-.1 F .586(oot tok)-.18 F .586(en to the link)-.1 F(ed) +-.1 E .717(list r)111 132 R .717 +(epeat until the text \214le string is empty allocate memory f)-.18 F +.716(or the pr)-.25 F .716(ogram and pr)-.18 F(epar)-.18 E(e)-.18 E .17 +(the exection step at the start of the link)111 144 R .17(ed list tra) +-.1 F -.1(ve)-.25 G .17(rse to the bottem of the tr).1 F .17 +(ee \(made of to-)-.18 F -.1(ke)111 156 S .28(ns\) execute the lo).1 F +.28(west tok)-.1 F .279(en r)-.1 F .279(epeat until all tok)-.18 F .279 +(ens including the r)-.1 F .279(oot ha)-.18 F .479 -.1(ve b)-.25 H .279 +(een executed).1 F(mo)111 168 Q .2 -.1(ve t)-.1 H 2.5(ot).1 G +(he next node of the link)-2.5 E(ed list r)-.1 E(epeat until the link) +-.18 E(ed list is empty)-.1 E F0 -.4(Wi)111 192 S .482 +(thin each of these steps is man).4 F 2.982(ys)-.15 G .483 +(maller steps. The hardest part will be making the tok)-2.982 F .483 +(ens, as)-.1 F .45(this requires alot of string manipultation. The e)111 +204 R -.15(xe)-.15 G .45(cution will be a recursi).15 F .75 -.15(ve a) +-.25 H .45(logrithum. All trees).15 F +(will be represented via structs \(see section on AST')111 216 Q(s\).) +-.55 E(PUT SOME FLO)111 240 Q 2.5(WC)-.35 G(HAR)-2.5 E(TS HERE)-.6 E F1 +2.5(4. T)111 276 R(echnical Solution)-.92 E 2.5(5. T)111 300 R(esting) +-.92 E 2.5(6. Ev)111 324 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 4898b7c..9644dca 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: Tue May 21 15:38:15 2024 +%%CreationDate: Thu Jun 6 13:22:20 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.ms b/comp/lucas-standen-NEA/writeup/questions-for-rayn.ms deleted file mode 100644 index fc263c6..0000000 --- a/comp/lucas-standen-NEA/writeup/questions-for-rayn.ms +++ /dev/null @@ -1,15 +0,0 @@ -.NH 1 -What do you think about the language definition? -.LP -.B1 -<ANS 1> -.B2 -.NH 1 -Is there anything that you didn't understand? -.LP -<ANS 2> -.NH 1 -Is there anything you would add/change? -.LP -<ANS 3> - diff --git a/comp/lucas-standen-NEA/writeup/questions-for-rayn.ps b/comp/lucas-standen-NEA/writeup/questions-for-rayn.ps deleted file mode 100644 index d2afbb8..0000000 --- a/comp/lucas-standen-NEA/writeup/questions-for-rayn.ps +++ /dev/null @@ -1,276 +0,0 @@ -%!PS-Adobe-3.0 -%%Creator: groff version 1.23.0 -%%CreationDate: Tue May 21 15:38:16 2024 -%%DocumentNeededResources: font Times-Bold -%%+ font Times-Roman -%%DocumentSuppliedResources: procset grops 1.23 0 -%%Pages: 1 -%%PageOrder: Ascend -%%DocumentMedia: Default 612 792 0 () () -%%Orientation: Portrait -%%EndComments -%%BeginDefaults -%%PageMedia: Default -%%EndDefaults -%%BeginProlog -%%BeginResource: procset grops 1.23 0 -%!PS-Adobe-3.0 Resource-ProcSet -/setpacking where{ -pop -currentpacking -true setpacking -}if -/grops 120 dict dup begin -% The ASCII code of the space character. -/SC 32 def -/A/show load def -/B{0 SC 3 -1 roll widthshow}bind def -/C{0 exch ashow}bind def -/D{0 exch 0 SC 5 2 roll awidthshow}bind def -/E{0 rmoveto show}bind def -/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def -/G{0 rmoveto 0 exch ashow}bind def -/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/I{0 exch rmoveto show}bind def -/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def -/K{0 exch rmoveto 0 exch ashow}bind def -/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/M{rmoveto show}bind def -/N{rmoveto 0 SC 3 -1 roll widthshow}bind def -/O{rmoveto 0 exch ashow}bind def -/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/Q{moveto show}bind def -/R{moveto 0 SC 3 -1 roll widthshow}bind def -/S{moveto 0 exch ashow}bind def -/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def -% name size font SF - -/SF{ -findfont exch -[exch dup 0 exch 0 exch neg 0 0]makefont -dup setfont -[exch/setfont cvx]cvx bind def -}bind def -% name a c d font MF - -/MF{ -findfont -[5 2 roll -0 3 1 roll % b -neg 0 0]makefont -dup setfont -[exch/setfont cvx]cvx bind def -}bind def -/level0 0 def -/RES 0 def -/PL 0 def -/LS 0 def -% Enable manual feed. -% MANUAL - -/MANUAL{ -statusdict begin/manualfeed true store end -}bind def -% Guess the page length. -% This assumes that the imageable area is vertically centered on the page. -% PLG - length -/PLG{ -gsave newpath clippath pathbbox grestore -exch pop add exch pop -}bind def -% BP - -/BP{ -/level0 save def -1 setlinecap -1 setlinejoin -DEFS/BPhook known{DEFS begin BPhook end}if -72 RES div dup scale -LS{ -90 rotate -}{ -0 PL translate -}ifelse -1 -1 scale -}bind def -/EP{ -level0 restore -showpage -}def -% centerx centery radius startangle endangle DA - -/DA{ -newpath arcn stroke -}bind def -% x y SN - x' y' -% round a position to nearest (pixel + (.25,.25)) -/SN{ -transform -.25 sub exch .25 sub exch -round .25 add exch round .25 add exch -itransform -}bind def -% endx endy startx starty DL - -% we round the endpoints of the line, so that parallel horizontal -% and vertical lines will appear even -/DL{ -SN -moveto -SN -lineto stroke -}bind def -% centerx centery radius DC - -/DC{ -newpath 0 360 arc closepath -}bind def -/TM matrix def -% width height centerx centery DE - -/DE{ -TM currentmatrix pop -translate scale newpath 0 0 .5 0 360 arc closepath -TM setmatrix -}bind def -% these are for splines -/RC/rcurveto load def -/RL/rlineto load def -/ST/stroke load def -/MT/moveto load def -/CL/closepath load def -% fill the last path -% r g b Fr - -/Fr{ -setrgbcolor fill -}bind def -% c m y k Fk - -/setcmykcolor where{ -pop -/Fk{ -setcmykcolor fill -}bind def -}if -% g Fg - -/Fg{ -setgray fill -}bind def -% fill with the "current color" -/FL/fill load def -/LW/setlinewidth load def -/Cr/setrgbcolor load def -/setcmykcolor where{ -pop -/Ck/setcmykcolor load def -}if -/Cg/setgray load def -% new_font_name encoding_vector old_font_name RE - -/RE{ -findfont -dup maxlength 1 index/FontName known not{1 add}if dict begin -{ -1 index/FID ne -2 index/UniqueID ne -and -{def}{pop pop}ifelse -}forall -/Encoding exch def -dup/FontName exch def -currentdict end definefont pop -}bind def -/DEFS 0 def -% hpos vpos EBEGIN - -/EBEGIN{ -moveto -DEFS begin -}bind def -/EEND/end load def -/CNT 0 def -/level1 0 def -% llx lly newwid wid newht ht newllx newlly PBEGIN - -/PBEGIN{ -/level1 save def -translate -div 3 1 roll div exch scale -neg exch neg exch translate -% set the graphics state to default values -0 setgray -0 setlinecap -1 setlinewidth -0 setlinejoin -10 setmiterlimit -[]0 setdash -/setstrokeadjust where{ -pop -false setstrokeadjust -}if -/setoverprint where{ -pop -false setoverprint -}if -newpath -/CNT countdictstack def -userdict begin -/showpage{}def -% -% Any included setpagedevice should be ignored. -% See: http://www.w-beer.de/doc/ps/. -% -/setpagedevice{}def -mark -}bind def -/PEND{ -cleartomark -countdictstack CNT sub{end}repeat -level1 restore -}bind def -end def -/setpacking where{ -pop -setpacking -}if -%%EndResource -%%EndProlog -%%BeginSetup -%%BeginFeature: *PageSize Default -<< /PageSize [ 612 792 ] /ImagingBBox null >> setpagedevice -%%EndFeature -%%IncludeResource: font Times-Bold -%%IncludeResource: font Times-Roman -grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 -def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron -/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef/.notdef -/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef -/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef -/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent -/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen -/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon -/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O -/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex -/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y -/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft -/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl -/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut -/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash -/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen -/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft -/logicalnot/minus/registered/macron/degree/plusminus/twosuperior -/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior -/ordmasculine/guilsinglright/onequarter/onehalf/threequarters -/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE -/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex -/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis -/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn -/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla -/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis -/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash -/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def -/Times-Roman@0 ENC0/Times-Roman RE/Times-Bold@0 ENC0/Times-Bold RE -%%EndSetup -%%Page: 1 1 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Bold@0 SF 2.5(1. What)72 84 R(do y)2.5 E -(ou think about the language de\214nition?)-.25 E/F1 10/Times-Roman@0 SF -(<ANS 1>)77 99.6 Q .4 LW 540 102.1 72 102.1 DL 540 90.1 540 102.1 DL 72 -90.1 540 90.1 DL 72 102.1 72 90.1 DL F0 2.5(2. Is)72 123.6 R(ther)2.5 E -2.5(ea)-.18 G(nything that y)-2.5 E(ou didn't understand?)-.25 E F1 -(<ANS 2>)72 139.2 Q F0 2.5(3. Is)72 163.2 R(ther)2.5 E 2.5(ea)-.18 G -(nything y)-2.5 E(ou w)-.25 E(ould add/change?)-.1 E F1(<ANS 3>)72 178.8 -Q 0 Cg EP -%%Trailer -end -%%EOF |