diff options
Diffstat (limited to 'comp/lucas-standen-NEA/writeup/coverpage.ps')
-rw-r--r-- | comp/lucas-standen-NEA/writeup/coverpage.ps | 429 |
1 files changed, 213 insertions, 216 deletions
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 |