diff options
Diffstat (limited to 'comp/lucas-standen-NEA/writeup/coverpage.ps')
-rw-r--r-- | comp/lucas-standen-NEA/writeup/coverpage.ps | 1192 |
1 files changed, 597 insertions, 595 deletions
diff --git a/comp/lucas-standen-NEA/writeup/coverpage.ps b/comp/lucas-standen-NEA/writeup/coverpage.ps index 049b9a3..3ca9e13 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 Jun 20 12:51:08 2024 +%%CreationDate: Thu Jul 4 09:06:34 2024 %%DocumentNeededResources: font Times-Bold %%+ font Times-Italic %%+ font Times-Roman @@ -275,390 +275,391 @@ def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron %%BeginPageSetup BP %%EndPageSetup -/F0 12/Times-Bold@0 SF(The solution)274.158 123 Q 2.208 -1.104(To b) -275.214 153 T(ad code)1.104 E/F1 10/Times-Italic@0 SF(Lucas Standen) -276.695 189 Q/F2 10/Times-Roman@0 SF(7949)296 207 Q F1(ABSTRA)282.535 -255 Q(CT)-.3 E/F3 10/Times-Bold@0 SF 2.5(1. Reading)111 279 R -(this document)2.5 E F2(This document is writen in rof)111 294.6 Q 2.5 -(fa)-.25 G(nd can be found online at:)-2.5 E(https://github)111 318.6 Q +/F0 12/Times-Bold@0 SF(The solution T)241.872 123 Q 3(ob)-1.104 G +(ad code)-3 E/F1 10/Times-Italic@0 SF(Lucas Standen)276.695 159 Q/F2 10 +/Times-Roman@0 SF(7949)296 177 Q F1(ABSTRA)282.535 213 Q(CT)-.3 E/F3 10 +/Times-Bold@0 SF 2.5(1. Reading)111 237 R(this document)2.5 E F2 +(This document is writen in rof)111 252.6 Q 2.5(fa)-.25 G +(nd can be found online at:)-2.5 E(https://github)111 276.6 Q (.com/standenbo)-.4 E (y/school/tree/master/comp/lucas-standen-NEA/writeup)-.1 E .714 -(It is using the ms macro of trof)111 342.6 R .714 +(It is using the ms macro of trof)111 300.6 R .714 (f. It can be compiled using the Mak)-.25 F .713(e\214le, or mak)-.1 F .713(e.sh. A table of)-.1 F .454(contents has been generated using pdft\ -ocgen, it is embedded into the pdf, most pdf readers ha)111 354.6 R -.15 -(ve)-.2 G 2.5(ab)111 366.6 S(utton to open it \(\214refox has it in the\ +ocgen, it is embedded into the pdf, most pdf readers ha)111 312.6 R -.15 +(ve)-.2 G 2.5(ab)111 324.6 S(utton to open it \(\214refox has it in the\ top left, in zathura press tab to vie)-2.7 E 2.5(wi)-.25 G(t\).)-2.5 E -2.537(An)111 390.6 S .037(ote on formating of the rof)-2.537 F .037 -(f, the te)-.25 F .036 -(xt is limited to 100 characters per line and is writen in plain)-.15 F -1.111(ascii, no utf8 emojis and the lik)111 402.6 R 1.112 +2.787(An)111 348.6 S .287(ote on formating of the rof)-2.787 F .287 +(f, the te)-.25 F .286 +(xt is limited to 80 characters per line and is writen in plain)-.15 F +1.111(ascii, no utf8 emojis and the lik)111 360.6 R 1.112 (e. Code snippets are left in plain te)-.1 F 1.112 -(xt, while full \214les are con-)-.15 F -.15(ve)111 414.6 S .602 +(xt, while full \214les are con-)-.15 F -.15(ve)111 372.6 S .602 (rted to a ps \214le via https://carbon.no).15 F -.65(w.)-.25 G .602 (sh/ the).65 F 3.102(ys)-.15 G .601(hould be 150mm ^ 2 \(as ps is a v) --3.102 F .601(ector format)-.15 F 1.013(this w)111 426.6 R 1.013(ont lo) +-3.102 F .601(ector format)-.15 F 1.013(this w)111 384.6 R 1.013(ont lo) -.1 F 1.013(wer quality)-.25 F 3.513(,y)-.65 G 1.013 (ou might need to zoom in though\) and then ha)-3.513 F 1.313 -.15(ve t) --.2 H 1.014(here source link).15 F(ed)-.1 E(abo)111 438.6 Q .3 -.15 +-.2 H 1.014(here source link).15 F(ed)-.1 E(abo)111 396.6 Q .3 -.15 (ve t)-.15 H(hem; assuming the).15 E 2.5(ya)-.15 G (re from a \214le and not a small e)-2.5 E(xample.)-.15 E F3 2.5 -(2. Analysis)111 474.6 R 2.5(2.1. The)111 498.6 R(curr)2.5 E(ent pr)-.18 -E(oblem)-.18 E F2 -.15(Fo)111 514.2 S 2.546(rg).15 G .045 +(2. Analysis)111 432.6 R 2.5(2.1. The)111 456.6 R(curr)2.5 E(ent pr)-.18 +E(oblem)-.18 E F2 -.15(Fo)111 472.2 S 2.546(rg).15 G .045 (eneral small and simple projects, I write in C. Ho)-2.546 F(we)-.25 E -.15(ve)-.25 G 2.545(rt).15 G .045(his leads to hours of deb)-2.545 F -.045(ugging due)-.2 F .088(to se)111 526.2 R(gf)-.15 E .088(aults, and \ +.045(ugging due)-.2 F .088(to se)111 484.2 R(gf)-.15 E .088(aults, and \ memory leaks. Due to the languages manual memory management the program\ --)-.1 F .565(mer is required to kno)111 538.2 R 3.065(ws)-.25 G 3.065 +-)-.1 F .565(mer is required to kno)111 496.2 R 3.065(ws)-.25 G 3.065 (om)-3.065 G .564(uch information about the hardw)-3.065 F .564(are the) -.1 F 3.064(yw)-.15 G .564(rite for)-3.064 F 3.064(,a)-.4 G .564 -(nd the second)-3.064 F(an)111 550.2 Q(ything goes wrong, it is v)-.15 E +(nd the second)-3.064 F(an)111 508.2 Q(ything goes wrong, it is v)-.15 E (ague on ho)-.25 E 2.5(wt)-.25 G 2.5<6f8c>-2.5 G 2.5(xt)-2.5 G(hings.) --2.5 E F3 2.5(In)111 574.2 S(eed a language that stops me fr)-2.5 E -(om shooting myself in the f)-.18 E(oot)-.25 E F2 2.584(Ch)111 598.2 S +-2.5 E F3 2.5(In)111 532.2 S(eed a language that stops me fr)-2.5 E +(om shooting myself in the f)-.18 E(oot)-.25 E F2 2.584(Ch)111 556.2 S .084(as been standard for man)-2.584 F 2.584(yd)-.15 G .084(ecades no) -2.584 F 2.584(wa)-.25 G .084(nd its age is sho)-2.584 F .084 (wing, it lacks man)-.25 F 2.585(ym)-.15 G .085(odern features)-2.585 F -(lik)111 610.2 Q 2.605(eO)-.1 G(OP)-2.605 E 2.605(,o)-1.11 G 2.605(rh) +(lik)111 568.2 Q 2.605(eO)-.1 G(OP)-2.605 E 2.605(,o)-1.11 G 2.605(rh) -2.605 G .105(igher le)-2.605 F -.15(ve)-.25 G 2.605(lf).15 G .105 (unctional abstractions, that ha)-2.605 F .405 -.15(ve b)-.2 H .105 (ecome common in modern years due).15 F 1.303 -(to there helpfulness. This is not to f)111 622.2 R 1.303(ault C')-.1 F +(to there helpfulness. This is not to f)111 580.2 R 1.303(ault C')-.1 F 3.803(sa)-.55 G(chie)-3.803 E -.15(ve)-.25 G 1.303(ments either).15 F 3.804(,t)-.4 G 1.304(he language is my personal)-3.804 F .66 -(choice for most projects for a reason, it')111 634.2 R 3.159(sf)-.55 G +(choice for most projects for a reason, it')111 592.2 R 3.159(sf)-.55 G .659(ast and po)-3.259 F .659(werful; an)-.25 F 3.159(ys)-.15 G .659 (olution I mak)-3.159 F 3.159(es)-.1 G .659(hould not cut)-3.159 F -(that a)111 646.2 Q -.1(wa)-.15 G -.65(y.).1 G F3 2.5(2.2. A)111 682.2 R -(solution)2.5 E/F4 10/Times-BoldItalic@0 SF(Zippy LANG)111.61 697.8 Q F2 -3.378(An)111 721.8 S -.15(ex)-3.378 G 3.378(tg).15 G .878 +(that a)111 604.2 Q -.1(wa)-.15 G -.65(y.).1 G F3 2.5(2.2. A)111 640.2 R +(solution)2.5 E/F4 10/Times-BoldItalic@0 SF(Zippy LANG)111.61 655.8 Q F2 +3.378(An)111 679.8 S -.15(ex)-3.378 G 3.378(tg).15 G .878 (eneration language, for general use. Designed for k)-3.378 F .879 -(eeping code simple, neat and read-)-.1 F 0 Cg EP +(eeping code simple, neat and read-)-.1 F 3.307(able. It)111 691.8 R +.807(will be similar to functional languages, kno)3.307 F .807 +(wn for there strict ability to k)-.25 F .806(eep code safe)-.1 F .223 +(and practical. The language should be interpreted lik)111 703.8 R 2.724 +(ep)-.1 G .224(ython, perl and lisp, to allo)-2.824 F 2.724(wf)-.25 G +.224(or easy de-)-2.724 F -.2(bu)111 715.8 S(gging tools.).2 E 0 Cg EP %%Page: 2 2 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF(-2-)300.17 48 Q 3.307(able. It)111 84 R .807 -(will be similar to functional languages, kno)3.307 F .807 -(wn for there strict ability to k)-.25 F .806(eep code safe)-.1 F .223 -(and practical. The language should be interpreted lik)111 96 R 2.724 -(ep)-.1 G .224(ython, perl and lisp, to allo)-2.824 F 2.724(wf)-.25 G -.224(or easy de-)-2.724 F -.2(bu)111 108 S(gging tools.).2 E -(The goal of Zipp)111 132 Q 2.5(yi)-.1 G 2.5(st)-2.5 G 2.5(om)-2.5 G(ak) --2.5 E 2.5(ec)-.1 G(odding easier)-2.5 E 2.5(,w)-.4 G(hile remaining f) --2.5 E(ast, with a interpreter writen in C.)-.1 E/F1 10/Times-Bold@0 SF -2.5(2.3. What)111 168 R(is a pr)2.5 E(ogramming language)-.18 E 2.5 -(2.3.1. A)111 192 R -.1(ve)2.5 G(ry simple explanation).1 E F0 .247 -(At its lo)111 207.6 R .247 +/F0 10/Times-Roman@0 SF(-2-)300.17 48 Q(The goal of Zipp)111 84 Q 2.5 +(yi)-.1 G 2.5(st)-2.5 G 2.5(om)-2.5 G(ak)-2.5 E 2.5(ec)-.1 G +(odding easier)-2.5 E 2.5(,w)-.4 G(hile remaining f)-2.5 E +(ast, with a interpreter writen in C.)-.1 E/F1 10/Times-Bold@0 SF 2.5 +(2.3. What)111 120 R(is a pr)2.5 E(ogramming language)-.18 E 2.5 +(2.3.1. A)111 144 R -.1(ve)2.5 G(ry simple explanation).1 E F0 .247 +(At its lo)111 159.6 R .247 (west de\214nition a PL is a set of speci\214c w)-.25 F .247 (ords, that when gi)-.1 F -.15(ve)-.25 G 2.747(nt).15 G 2.747(oac)-2.747 -G .247(omputer in the right)-2.747 F 1.108(order ha)111 219.6 R 1.408 +G .247(omputer in the right)-2.747 F 1.108(order ha)111 171.6 R 1.408 -.15(ve a r)-.2 H 1.108(eproducible beha).15 F(viour)-.2 E 3.609(.Am) -.55 G 1.109(ore human w)-3.609 F 1.109(ay of saying that, w)-.1 F 1.109 (ould be its ho)-.1 F 3.609(ww)-.25 G(e)-3.609 E(control computers.)111 -231.6 Q F1 2.5(2.3.2. Wh)111 255.6 R 2.5(ya)-.15 G .36 -.18(re t)-2.5 H +183.6 Q F1 2.5(2.3.2. Wh)111 207.6 R 2.5(ya)-.15 G .36 -.18(re t)-2.5 H (her).18 E 2.5(es)-.18 G 2.5(om)-2.5 G(any)-2.5 E F0 .211 (When someone is looking at code it can often be seen as just that, ho) -111 271.2 R(we)-.25 E -.15(ve)-.25 G 2.71(rt).15 G .21 -(here are hundreds of)-2.71 F .557(languages that all tak)111 283.2 R +111 223.2 R(we)-.25 E -.15(ve)-.25 G 2.71(rt).15 G .21 +(here are hundreds of)-2.71 F .557(languages that all tak)111 235.2 R 3.057(et)-.1 G .557(he idea of "code" in v)-3.057 F .558(ery dif)-.15 F .558(ferent w)-.25 F .558(ays. Some are designed for speci\214c)-.1 F -(hardw)111 295.2 Q .87(are, some are designed for making general use pr\ -ograms while others are highly special-)-.1 F 2.695(ized. It)111 307.2 R +(hardw)111 247.2 Q .87(are, some are designed for making general use pr\ +ograms while others are highly special-)-.1 F 2.695(ized. It)111 259.2 R .196(is important to see "code", as more than just one o)2.695 F -.15 (ve)-.15 G .196(rarching term and instead see where).15 F -(the code is being used, and e)111 319.2 Q -.25(va)-.25 G -(luate it from that.).25 E F1 2.5(2.4. Resear)111 367.2 R +(the code is being used, and e)111 271.2 Q -.25(va)-.25 G +(luate it from that.).25 E F1 2.5(2.4. Resear)111 319.2 R (ching, and getting a scope of the pr)-.18 E(oject)-.18 E F0 .264 -(Before I start to design a language i should \214rst \214nd e)111 382.8 +(Before I start to design a language i should \214rst \214nd e)111 334.8 R .263(xamples of others and \214nd what i w)-.15 F .263(ant my)-.1 F -(language to be lik)111 394.8 Q(e.)-.1 E(I')111 418.8 Q 3.658(dl)-.5 G +(language to be lik)111 346.8 Q(e.)-.1 E(I')111 370.8 Q 3.658(dl)-.5 G (ik)-3.658 E 3.658(em)-.1 G 3.658(yl)-3.658 G 1.158 (anguage to feel modern so i should tak)-3.658 F 3.658(ei)-.1 G 1.158 (nspiration from what other modern lan-)-3.658 F .068(guages do, ho)111 -430.8 R(we)-.25 E -.15(ve)-.25 G 2.568(ro).15 G 2.568(nt)-2.568 G .068 +382.8 R(we)-.25 E -.15(ve)-.25 G 2.568(ro).15 G 2.568(nt)-2.568 G .068 (he back)-2.568 F .068(ed i w)-.1 F .068 (ant my language to be stable and f)-.1 F .068 -(ast, for that i should look)-.1 F(at older projects.)111 442.8 Q F1 2.5 -(2.4.1. Examples)111 478.8 R(of older similar pr)2.5 E(ojects, that ar) +(ast, for that i should look)-.1 F(at older projects.)111 394.8 Q F1 2.5 +(2.4.1. Examples)111 430.8 R(of older similar pr)2.5 E(ojects, that ar) -.18 E 2.5(eag)-.18 G(ood base f)-2.5 E(or my language)-.25 E 2.5 -(2.4.1.1. Python)111 502.8 R F0 .534(Python is a high le)111 518.4 R +(2.4.1.1. Python)111 454.8 R F0 .534(Python is a high le)111 470.4 R -.15(ve)-.25 G 3.034(lO).15 G .534(OP language that w)-3.034 F .534 (as designed in 1991. It w)-.1 F .534(as made to mak)-.1 F 3.035(ep)-.1 G(rogram-)-3.035 E .644 -(ming easy while still being able to use some of C')111 530.4 R 3.144 +(ming easy while still being able to use some of C')111 482.4 R 3.144 (sf)-.55 G .643(unctions. Although it has become standard)-3.144 F -(for man)111 542.4 Q 2.5(yu)-.15 G(se cases, it is slo)-2.5 E 2.5(wa) +(for man)111 494.4 Q 2.5(yu)-.15 G(se cases, it is slo)-2.5 E 2.5(wa) -.25 G(nd inef)-2.5 E(\214cient, and v)-.25 E(ery bloated.)-.15 E -(https://www)111 566.4 Q(.p)-.65 E(ython.or)-.1 E(g/)-.18 E(Zipp)111 -590.4 Q 3.395(ys)-.1 G .895(hould tak)-3.395 F 3.395(ep)-.1 G .895 +(https://www)111 518.4 Q(.p)-.65 E(ython.or)-.1 E(g/)-.18 E(Zipp)111 +542.4 Q 3.395(ys)-.1 G .895(hould tak)-3.395 F 3.395(ep)-.1 G .895 (ythons high le)-3.495 F -.15(ve)-.25 G 3.395(la).15 G .895 (bstractions, as the)-3.395 F 3.395(ym)-.15 G(ak)-3.395 E 3.395(ep)-.1 G .895(rogramming v)-3.395 F .895(ery easy and it)-.15 F -(should try and tak)111 602.4 Q 2.5(en)-.1 G +(should try and tak)111 554.4 Q 2.5(en)-.1 G (otes from its libraries as the)-2.5 E 2.5(ya)-.15 G (re mostly well written, and well documented.)-2.5 E F1 2.5 -(2.4.1.2. Lisp)111 626.4 R F0 .976(Lisp is the second e)111 642 R -.15 +(2.4.1.2. Lisp)111 578.4 R F0 .976(Lisp is the second e)111 594 R -.15 (ve)-.25 G 3.476(rp).15 G .976(rogramming language, de)-3.476 F -.15(ve) -.25 G .976(loped at MiT).15 F 3.476(,i)-.74 G 3.476(ti)-3.476 G 3.476 (st)-3.476 G .976(he \214rst functional lan-)-3.476 F .843 -(guage, creating man)111 654 R 3.343(yc)-.15 G .843(ommon features lik) +(guage, creating man)111 606 R 3.343(yc)-.15 G .843(ommon features lik) -3.343 F 3.343(eh)-.1 G .844(igher order functions, recursion, and g) -3.343 F .844(arbage col-)-.05 F .5 -(lection. It is generally not used an)111 666 R 2.999(ym)-.15 G .499 +(lection. It is generally not used an)111 618 R 2.999(ym)-.15 G .499 (ore as it feels old compared to other functional languages,)-2.999 F -(lik)111 678 Q 2.5(eO)-.1 G(caml or Hask)-2.5 E(ell.)-.1 E -(https://lisp-lang.or)111 702 Q(g/)-.18 E(Zipp)111 726 Q 3.392(ys)-.1 G +(lik)111 630 Q 2.5(eO)-.1 G(caml or Hask)-2.5 E(ell.)-.1 E +(https://lisp-lang.or)111 654 Q(g/)-.18 E(Zipp)111 678 Q 3.392(ys)-.1 G .892(hould try to tak)-3.392 F 3.392(ea)-.1 G .892 (lot from the syntax of lisp, \(\) mak)-3.392 F 3.393(ei)-.1 G 3.393(te) --3.393 G .893(asy to see what parts of code)-3.393 F 0 Cg EP +-3.393 G .893(asy to see what parts of code)-3.393 F(will ef)111 690 Q +(fect what, and mak)-.25 E 2.5(et)-.1 G(hings easy to parse.)-2.5 E F1 +2.5(2.4.1.3. P)111 714 R(erl)-.2 E F0 .607(Perl is scripting language d\ +esigned for use in linux, when bash is too slo)111 729.6 R 1.907 -.65 +(w, o)-.25 H 3.107(rn).65 G .607(ot suited for the)-3.107 F 0 Cg EP %%Page: 3 3 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF(-3-)300.17 48 Q(will ef)111 84 Q -(fect what, and mak)-.25 E 2.5(et)-.1 G(hings easy to parse.)-2.5 E/F1 -10/Times-Bold@0 SF 2.5(2.4.1.3. P)111 108 R(erl)-.2 E F0 .607(Perl is s\ -cripting language designed for use in linux, when bash is too slo)111 -123.6 R 1.907 -.65(w, o)-.25 H 3.107(rn).65 G .607(ot suited for the) --3.107 F(job)111 135.6 Q 3.413(.P)-.4 G .913 +/F0 10/Times-Roman@0 SF(-3-)300.17 48 Q(job)111 84 Q 3.413(.P)-.4 G .913 (erl is often described as the glue of the uni)-3.413 F -.15(ve)-.25 G .914(rse \(see xkcd https://3d.xkcd.com/224/\).).15 F(Its)5.914 E -(syntax is quite strange ho)111 147.6 Q(we)-.25 E -.15(ve)-.25 G 2.5(ra) -.15 G(nd it is slo)-2.5 E 1.3 -.65(w. M)-.25 H -(aking it poorly suited to).65 E -.1(wa)-.25 G(rds general use.).1 E -(https://www)111 171.6 Q(.perl.or)-.65 E(g/)-.18 E(Zipp)111 195.6 Q -3.083(ys)-.1 G .583(hould tak)-3.083 F 3.083(ef)-.1 G .583(rom perls mi\ -nimalism, it is a small language that is of a similar size to bash) --3.083 F .302(or zsh, while feeling closer to p)111 207.6 R .302 -(ython. If Zipp)-.1 F 2.802(yc)-.1 G .302(an achie)-2.802 F .602 -.15 -(ve a s)-.25 H .302(imilar small size, while remaining).15 F(po)111 -219.6 Q(werful I will be happ)-.25 E -.65(y.)-.1 G F1 2.5 -(2.4.2. Examples)111 255.6 R(of new similar pr)2.5 E(ojects that ar)-.18 -E 2.5(ea)-.18 G(lso a good base)-2.5 E 2.5(2.4.2.1. Gleam)111 279.6 R F0 +(syntax is quite strange ho)111 96 Q(we)-.25 E -.15(ve)-.25 G 2.5(ra).15 +G(nd it is slo)-2.5 E 1.3 -.65(w. M)-.25 H(aking it poorly suited to).65 +E -.1(wa)-.25 G(rds general use.).1 E(https://www)111 120 Q(.perl.or) +-.65 E(g/)-.18 E(Zipp)111 144 Q 3.083(ys)-.1 G .583(hould tak)-3.083 F +3.083(ef)-.1 G .583(rom perls minimalism, it is a small language that i\ +s of a similar size to bash)-3.083 F .302 +(or zsh, while feeling closer to p)111 156 R .302(ython. If Zipp)-.1 F +2.802(yc)-.1 G .302(an achie)-2.802 F .602 -.15(ve a s)-.25 H .302 +(imilar small size, while remaining).15 F(po)111 168 Q +(werful I will be happ)-.25 E -.65(y.)-.1 G/F1 10/Times-Bold@0 SF 2.5 +(2.4.2. Examples)111 204 R(of new similar pr)2.5 E(ojects that ar)-.18 E +2.5(ea)-.18 G(lso a good base)-2.5 E 2.5(2.4.2.1. Gleam)111 228 R F0 .052(Gleam is a modern language releasing in the past 5 years. It is hi\ -ghly functional, with no mutable)111 295.2 R .432(data, no traditional \ +ghly functional, with no mutable)111 243.6 R .432(data, no traditional \ loops. Instead recursion can be used to replace alot of these features.) -111 307.2 R(Gleam)5.432 E .454 -(compiles to erlang/Beam bytecode, much lik)111 319.2 R 2.954(ej)-.1 G +111 255.6 R(Gleam)5.432 E .454 +(compiles to erlang/Beam bytecode, much lik)111 267.6 R 2.954(ej)-.1 G -.2(av)-2.954 G 2.954(at)-.05 G 2.954(ot)-2.954 G .454 (he jvm, and doing this has made Gleam a)-2.954 F (highly scalable language with good library support out the box.)111 -331.2 Q(https://gleam.run/)111 355.2 Q(Zipp)111 379.2 Q 2.89(ys)-.1 G +279.6 Q(https://gleam.run/)111 303.6 Q(Zipp)111 327.6 Q 2.89(ys)-.1 G .39(hould tak)-2.89 F 2.89(ef)-.1 G .391 (rom the functional elements of Gleam, as the)-2.89 F 2.891(yk)-.15 G .391(eep programs safer)-2.991 F 2.891(,h)-.4 G -.25(ow)-2.891 G -2.15 --.25(ev e).25 H(r).25 E(Zipp)111 391.2 Q 2.5(ys)-.1 G(hould not remo) +-.25(ev e).25 H(r).25 E(Zipp)111 339.6 Q 2.5(ys)-.1 G(hould not remo) -2.5 E .3 -.15(ve a)-.15 H(ll procedural elements, as for loops are v) -.15 E(ery helpful)-.15 E F1 2.5(2.4.2.2. Hask)111 415.2 R(ell)-.1 E F0 -(Hask)111 430.8 Q .913(ell is another modern functional language kno)-.1 +.15 E(ery helpful)-.15 E F1 2.5(2.4.2.2. Hask)111 363.6 R(ell)-.1 E F0 +(Hask)111 379.2 Q .913(ell is another modern functional language kno)-.1 F .912(wn for being v)-.25 F .912(ery complicated, ho)-.15 F(we)-.25 E --.15(ve)-.25 G 3.412(ri).15 G(n-)-3.412 E(credibly po)111 442.8 Q +-.15(ve)-.25 G 3.412(ri).15 G(n-)-3.412 E(credibly po)111 391.2 Q (werful. Its syntax feels v)-.25 E -(ery mathematical, and incredibly terse.)-.15 E(https://www)111 466.8 Q -(.hask)-.65 E(ell.or)-.1 E(g/)-.18 E .224(Perhaps Zipp)111 490.8 R 2.724 +(ery mathematical, and incredibly terse.)-.15 E(https://www)111 415.2 Q +(.hask)-.65 E(ell.or)-.1 E(g/)-.18 E .224(Perhaps Zipp)111 439.2 R 2.724 (yc)-.1 G .224(ould learn from Hask)-2.724 F .225(ell, as it pro)-.1 F .225(vides functional and procedural elements, mak-)-.15 F -(ing it a well rounded language)111 502.8 Q F1 2.5(2.4.2.3. Har)111 -526.8 R(e)-.18 E F0 .701(Hare w)111 542.4 R .701(as designed to be a 10\ +(ing it a well rounded language)111 451.2 Q F1 2.5(2.4.2.3. Har)111 +475.2 R(e)-.18 E F0 .701(Hare w)111 490.8 R .701(as designed to be a 10\ 0 year language, and thus stability is its main goal, it is not set to) --.1 F(ha)111 554.4 Q .489 -.15(ve a s)-.2 H .189(yntax change an).15 F +-.1 F(ha)111 502.8 Q .489 -.15(ve a s)-.2 H .189(yntax change an).15 F 2.689(yt)-.15 G .189 (ime soon, and it has strong emphasis on memory safety)-2.689 F 2.69(.I) -.65 G 2.69<748c>-2.69 G .19(ts into the)-2.69 F (same part of the tech stack as C, and thus it can be used for some v) -111 566.4 Q(ery lo)-.15 E 2.5(wl)-.25 G -2.15 -.25(ev e)-2.5 H 2.5(lw) -.25 G(ork.)-2.6 E(https://harelang.or)111 590.4 Q(g/)-.18 E 3.174(It)111 -614.4 S .674(hink Zipp)-3.174 F 3.174(ys)-.1 G .674(hould ha)-3.174 F +111 514.8 Q(ery lo)-.15 E 2.5(wl)-.25 G -2.15 -.25(ev e)-2.5 H 2.5(lw) +.25 G(ork.)-2.6 E(https://harelang.or)111 538.8 Q(g/)-.18 E 3.174(It)111 +562.8 S .674(hink Zipp)-3.174 F 3.174(ys)-.1 G .674(hould ha)-3.174 F .974 -.15(ve a s)-.2 H .674(trong emphasis on stability).15 F 3.173(,m) -.65 G .673(uch lik)-3.173 F 3.173(eH)-.1 G .673(are, to man)-3.173 F -3.173(yt)-.15 G .673(imes ha)-3.173 F .973 -.15(ve I)-.2 H(se)111 626.4 +3.173(yt)-.15 G .673(imes ha)-3.173 F .973 -.15(ve I)-.2 H(se)111 574.8 Q(gf)-.15 E .175(aulted due to a tin)-.1 F 2.675(ym)-.15 G(istak)-2.675 E .175(e. Zipp)-.1 F 2.675(ys)-.1 G .176(hould also look to Hare')-2.675 F 2.676(ss)-.55 G .176(mall size, you can b)-2.676 F .176(uy a cop)-.2 F -(y)-.1 E(of Hare on a)111 638.4 Q F1(SINGLE 3 1/2')111 662.4 Q 2.5('F) +(y)-.1 E(of Hare on a)111 586.8 Q F1(SINGLE 3 1/2')111 610.8 Q 2.5('F) -.63 G(LOLPY)-2.5 E F0(This is something I too should try to achie)111 -690 Q -.15(ve)-.25 G(.).15 E F1 2.5(2.4.3. What)111 726 R(should be tak) -2.5 E(en away fr)-.1 E(om these languages?)-.18 E 0 Cg EP +638.4 Q -.15(ve)-.25 G(.).15 E F1 2.5(2.4.3. What)111 674.4 R +(should be tak)2.5 E(en away fr)-.1 E(om these languages?)-.18 E F0 +2.722(Iw)111 690 S .222(as already leaning to)-2.822 F -.1(wa)-.25 G +.221(rds functional programming when I started this project ho).1 F(we) +-.25 E -.15(ve)-.25 G 2.721(rn).15 G .721 -.25(ow I)-2.721 H(belie)111 +702 Q .993 -.15(ve i)-.25 H(t').15 E 3.193(st)-.55 G .693 +(he only option for producing safe applications. Zipp)-3.193 F 3.194(yw) +-.1 G .694(ill be a functional language)-3.194 F +(with a strong emphasis on recursion.)111 714 Q 0 Cg EP %%Page: 4 4 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF(-4-)300.17 48 Q 2.722(Iw)111 84 S .222 -(as already leaning to)-2.822 F -.1(wa)-.25 G .221 -(rds functional programming when I started this project ho).1 F(we)-.25 -E -.15(ve)-.25 G 2.721(rn).15 G .721 -.25(ow I)-2.721 H(belie)111 96 Q -.993 -.15(ve i)-.25 H(t').15 E 3.193(st)-.55 G .693 -(he only option for producing safe applications. Zipp)-3.193 F 3.194(yw) --.1 G .694(ill be a functional language)-3.194 F -(with a strong emphasis on recursion.)111 108 Q 2.862(Ia)111 132 S .362 +/F0 10/Times-Roman@0 SF(-4-)300.17 48 Q 2.862(Ia)111 84 S .362 (lso belie)-2.862 F .661 -.15(ve t)-.25 H .361(hat I should tak).15 F 2.861(es)-.1 G .361 (ize of the interpreter into account, as this is important for k)-2.861 -F(eep-)-.1 E(ing the project manageable and consistent.)111 144 Q .916(\ -And \214nally I think that syntax should be inspired by Lisp, although \ -Lisp itself can be a messy)111 168 R .198 +F(eep-)-.1 E(ing the project manageable and consistent.)111 96 Q .916(A\ +nd \214nally I think that syntax should be inspired by Lisp, although L\ +isp itself can be a messy)111 120 R .198 (language, with the right changes I am con\214dent that I can mak)111 -180 R 2.697(eaa)-.1 G(ttracti)-2.697 E .497 -.15(ve l)-.25 H .197 -(anguage for the 21st).15 F(century)111 192 Q(.)-.65 E/F1 10 -/Times-Bold@0 SF 2.5(2.5. Clients)111 228 R F0 .056 -(In a project of this nature, the Client is e)111 243.6 R -.15(ve)-.25 G +132 R 2.697(eaa)-.1 G(ttracti)-2.697 E .497 -.15(ve l)-.25 H .197 +(anguage for the 21st).15 F(century)111 144 Q(.)-.65 E/F1 10 +/Times-Bold@0 SF 2.5(2.5. Clients)111 180 R F0 .056 +(In a project of this nature, the Client is e)111 195.6 R -.15(ve)-.25 G .057(ry programmer ali).15 F -.15(ve)-.25 G 2.557(;w).15 G .057 (hich is a pretty lar)-2.557 F .057(ge scope.)-.18 F -.8(To)5.057 G -(narro)111 255.6 Q 2.949(wt)-.25 G .449(his do)-2.949 F .449 +(narro)111 207.6 Q 2.949(wt)-.25 G .449(his do)-2.949 F .449 (wn as much as possible, I will intervie)-.25 F 2.949(was)-.25 G .448 (mall handful of people throughout the)-2.949 F(project, of dif)111 -267.6 Q(ferent skill le)-.25 E -.15(ve)-.25 G(ls.).15 E F1 2.5 -(2.5.1. Client)111 303.6 R(1, Amy C)2.5 E F0 1.032(My \214rst client is\ +219.6 Q(ferent skill le)-.25 E -.15(ve)-.25 G(ls.).15 E F1 2.5 +(2.5.1. Client)111 255.6 R(1, Amy C)2.5 E F0 1.032(My \214rst client is\ a friend of mine, Amy C, she is a con\214dent programmer who has compl\ -eted)111 319.2 R(man)111 331.2 Q 2.865(yc)-.15 G .365 +eted)111 271.2 R(man)111 283.2 Q 2.865(yc)-.15 G .365 (omplicated projects. I am choosing her as a client as she can gi)-2.865 F .664 -.15(ve m)-.25 H 2.864(et).15 G .364(echnical feed back)-2.864 F -(on my project and its function/utility)111 343.2 Q(.)-.65 E F1 2.5 -(2.5.2. Client)111 367.2 R(2, Rayn M)2.5 E F0 .16 -(Another friend of mine, Rayn M, is a technical computer user)111 382.8 +(on my project and its function/utility)111 295.2 Q(.)-.65 E F1 2.5 +(2.5.2. Client)111 319.2 R(2, Rayn M)2.5 E F0 .16 +(Another friend of mine, Rayn M, is a technical computer user)111 334.8 R 2.661(,h)-.4 G -.25(ow)-2.661 G -2.15 -.25(ev e).25 H 2.661(rh).25 G 2.661(ed)-2.661 G .161(oes not kno)-2.661 F 2.661(wh)-.25 G .661 -.25 -(ow t)-2.661 H(o).25 E .59(program at a high le)111 394.8 R -.15(ve)-.25 +(ow t)-2.661 H(o).25 E .59(program at a high le)111 346.8 R -.15(ve)-.25 G .59(l. He will be a good client as he can sho).15 F 3.089(wm)-.25 G 3.089(eh)-3.089 G 1.089 -.25(ow m)-3.089 H 3.089(yl).25 G .589 -(anguage looks to)-3.089 F 1.233(some one who doesn')111 406.8 R 3.733 +(anguage looks to)-3.089 F 1.233(some one who doesn')111 358.8 R 3.733 (tu)-.18 G 1.233(nderstand the inside w)-3.733 F 1.234 -(orkings, helping me design the structure of the)-.1 F(code.)111 418.8 Q -F1 2.5(2.5.3. Client)111 442.8 R(3, a normie)2.5 E F0(some stuf)111 -458.4 Q 2.5(fa)-.25 G(bout ho)-2.5 E 2.5(wt)-.25 G +(orkings, helping me design the structure of the)-.1 F(code.)111 370.8 Q +F1 2.5(2.5.3. Client)111 394.8 R(3, a normie)2.5 E F0(some stuf)111 +410.4 Q 2.5(fa)-.25 G(bout ho)-2.5 E 2.5(wt)-.25 G (he normie \214nds the completed project.)-2.5 E F1 2.5(2.5.4. Client) -111 482.4 R(4, myself)2.5 E F0(I')111 498 Q .587 -.15(ve w)-.5 H .287 +111 434.4 R(4, myself)2.5 E F0(I')111 450 Q .587 -.15(ve w)-.5 H .287 (anted to tak).05 F 2.787(eo)-.1 G .287(ut a project lik)-2.787 F 2.786 (et)-.1 G .286 (his for a long long time, and this is the perfect opportunity)-2.786 F -1.067(to do so, I will be assessing myself along the w)111 510 R 1.067 +1.067(to do so, I will be assessing myself along the w)111 462 R 1.067 (ay of this, b)-.1 F 1.068(uilding the project to my personal)-.2 F -(speci\214cation.)111 522 Q F1 2.5(2.6. Questionnair)111 558 R(es)-.18 E +(speci\214cation.)111 474 Q F1 2.5(2.6. Questionnair)111 510 R(es)-.18 E F0 .565(It is important to get feedback from end users, so I will tak) -111 573.6 R 3.064(em)-.1 G .564(ultiple questionnaires throughout)-3.064 +111 525.6 R 3.064(em)-.1 G .564(ultiple questionnaires throughout)-3.064 F .399(the project. I will then use them to slightly edit the requireme\ -nts of my project this should mak)111 585.6 R(e)-.1 E -(the \214nal outcome more helpful and what people w)111 597.6 Q(ant.)-.1 -E(In the section bello)111 621.6 Q 2.5(wy)-.25 G +nts of my project this should mak)111 537.6 R(e)-.1 E +(the \214nal outcome more helpful and what people w)111 549.6 Q(ant.)-.1 +E(In the section bello)111 573.6 Q 2.5(wy)-.25 G (ou will \214nd questionnaires from the analyses stage of my project.) --2.5 E F1 2.5(2.6.1. Questionnair)111 645.6 R 2.5(e1f)-.18 G(or Amy C) --2.75 E/F2 10/Times-BoldItalic@0 SF([30th April 2024])111.87 669.6 Q +-2.5 E F1 2.5(2.6.1. Questionnair)111 597.6 R 2.5(e1f)-.18 G(or Amy C) +-2.75 E/F2 10/Times-BoldItalic@0 SF([30th April 2024])111.87 621.6 Q (answ)3.81 E(ered by Amy)-.1 E 2.5(,s)-.37 G(ee pull request she left) --2.5 E F1 2.5(2.6.1.1. What)111 693.6 R(do y)2.5 E +-2.5 E F1 2.5(2.6.1.1. What)111 645.6 R(do y)2.5 E (ou \214nd the most important in a language? \(eg: speed, r)-.25 E -(eadability\))-.18 E F0(Speed, readability)111 709.2 Q 2.5(,d)-.65 G(eb) +(eadability\))-.18 E F0(Speed, readability)111 661.2 Q 2.5(,d)-.65 G(eb) -2.5 E(ugging ease and disk space ef)-.2 E(\214cienc)-.25 E -.65(y.)-.15 -G 0 Cg EP +G F1 3.168(2.6.1.2. What)111 685.2 R .668(tools ar)3.168 F 3.168(ei)-.18 +G .668(mportant f)-3.168 F .668(or a language to ha)-.25 F -.1(ve)-.25 G +3.167(?\().1 G .667(eg: pkg-manager)-3.167 F 3.167(,I)-.92 G .667 +(DE integra-)-3.167 F(tion\))111 697.2 Q F0 .224(IDE inte)111 712.8 R +.224(gration \(things lik)-.15 F 2.724(et)-.1 G .224 +(ab complete and deb)-2.724 F .224(ugging tools\), a package manager)-.2 +F 2.725(,a)-.4 G .225(nd the abil-)-2.725 F +(ity to interact with the user through the command line easily)111 724.8 +Q(.)-.65 E 0 Cg EP %%Page: 5 5 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF(-5-)300.17 48 Q/F1 10/Times-Bold@0 SF 3.168 -(2.6.1.2. What)111 84 R .668(tools ar)3.168 F 3.168(ei)-.18 G .668 -(mportant f)-3.168 F .668(or a language to ha)-.25 F -.1(ve)-.25 G 3.167 -(?\().1 G .667(eg: pkg-manager)-3.167 F 3.167(,I)-.92 G .667 -(DE integra-)-3.167 F(tion\))111 96 Q F0 .224(IDE inte)111 111.6 R .224 -(gration \(things lik)-.15 F 2.724(et)-.1 G .224(ab complete and deb) --2.724 F .224(ugging tools\), a package manager)-.2 F 2.725(,a)-.4 G -.225(nd the abil-)-2.725 F -(ity to interact with the user through the command line easily)111 123.6 -Q(.)-.65 E F1 3.364(2.6.1.3. What)111 147.6 R(featur)3.363 E .863 -(es do y)-.18 F .863(ou lik)-.25 F 3.363(ef)-.1 G -.18(ro)-3.363 G 3.363 -(mo).18 G .863(ther languages \(eg: C')-3.363 F 3.363(sa)-.37 G(dv) --3.363 E .863(anced memory man-)-.1 F(agement, hask)111 159.6 Q(ell')-.1 -E 2.5(st)-.37 G(erse syntax\))-2.5 E F0 .621(The ability to pass the me\ -mory reference of an object or function and a collection of b)111 175.2 -R .621(uilt-in or)-.2 F(standard functions lik)111 187.2 Q 2.5(e")-.1 G -(print", "split", or "sort".)-2.5 E F1 2.5(2.6.1.4. What)111 211.2 R +/F0 10/Times-Roman@0 SF(-5-)300.17 48 Q/F1 10/Times-Bold@0 SF 3.364 +(2.6.1.3. What)111 84 R(featur)3.363 E .863(es do y)-.18 F .863(ou lik) +-.25 F 3.363(ef)-.1 G -.18(ro)-3.363 G 3.363(mo).18 G .863 +(ther languages \(eg: C')-3.363 F 3.363(sa)-.37 G(dv)-3.363 E .863 +(anced memory man-)-.1 F(agement, hask)111 96 Q(ell')-.1 E 2.5(st)-.37 G +(erse syntax\))-2.5 E F0 .621(The ability to pass the memory reference \ +of an object or function and a collection of b)111 111.6 R .621 +(uilt-in or)-.2 F(standard functions lik)111 123.6 Q 2.5(e")-.1 G +(print", "split", or "sort".)-2.5 E F1 2.5(2.6.1.4. What)111 147.6 R (do y)2.5 E(ou want to pr)-.25 E (ogram in this language \(eg: websites, lo)-.18 E 2.5(wl)-.1 G -2.3 -.15 (ev e)-2.5 H 2.5(ls).15 G(ystems\))-2.5 E F0 -(Lightweight command line tools and web back ends.)111 226.8 Q F1 2.5 -(2.6.1.5. Do)111 250.8 R -.25(yo)2.5 G 2.5(ui).25 G +(Lightweight command line tools and web back ends.)111 163.2 Q F1 2.5 +(2.6.1.5. Do)111 187.2 R -.25(yo)2.5 G 2.5(ui).25 G (ntend to use graphics in the pr)-2.5 E(ograms y)-.18 E(ou write?)-.25 E -F0(No.)111 266.4 Q F1 2.5(2.6.1.6. W)111 290.4 R(ould y)-.75 E(ou pr) +F0(No.)111 202.8 Q F1 2.5(2.6.1.6. W)111 226.8 R(ould y)-.75 E(ou pr) -.25 E(efer a language that f)-.18 E(ocuses on ease of use, or po)-.25 E -(wer of the code?)-.1 E F0 2.5(Il)111 306 S(ik)-2.5 E 2.5(eag)-.1 G -(ood balance between the tw)-2.5 E(o.)-.1 E F1 2.5(2.6.1.7. What)111 330 -R(wer)2.5 E 2.5(ey)-.18 G(our last 3 pr)-2.75 E(ojects? \(could they ha) --.18 E .2 -.1(ve b)-.25 H(een written in Zippy?\)).1 E F0 3.854(Aw)111 -345.6 S 1.354(ebsite, a small command-line tool and a midi k)-3.854 F --.15(ey)-.1 G 1.353(board \(program runs on a Raspberry Pi).15 F -(Pico\).)111 357.6 Q F1 3.39(2.6.1.8. Ho)111 381.6 R 3.39(wm)-.1 G .89 -(any languages w)-3.39 F .89(ould y)-.1 F .891(ou use on a single pr) --.25 F .891(oject? \(could Zippy be used in)-.18 F -.25(yo)111 393.6 S -(ur codebase?\)).25 E F0 2.5(It)111 409.2 S +(wer of the code?)-.1 E F0 2.5(Il)111 242.4 S(ik)-2.5 E 2.5(eag)-.1 G +(ood balance between the tw)-2.5 E(o.)-.1 E F1 2.5(2.6.1.7. What)111 +266.4 R(wer)2.5 E 2.5(ey)-.18 G(our last 3 pr)-2.75 E +(ojects? \(could they ha)-.18 E .2 -.1(ve b)-.25 H +(een written in Zippy?\)).1 E F0 3.854(Aw)111 282 S 1.354 +(ebsite, a small command-line tool and a midi k)-3.854 F -.15(ey)-.1 G +1.353(board \(program runs on a Raspberry Pi).15 F(Pico\).)111 294 Q F1 +3.39(2.6.1.8. Ho)111 318 R 3.39(wm)-.1 G .89(any languages w)-3.39 F .89 +(ould y)-.1 F .891(ou use on a single pr)-.25 F .891 +(oject? \(could Zippy be used in)-.18 F -.25(yo)111 330 S +(ur codebase?\)).25 E F0 2.5(It)111 345.6 S (ry to use as little languages in a project as possible, so lik)-2.5 E (ely not in an e)-.1 E(xisting project.)-.15 E F1 2.5(2.6.1.9. Do)111 -433.2 R -.25(yo)2.5 G 2.5(uc).25 G(ar)-2.5 E 2.5(ef)-.18 G(or lo)-2.75 E +369.6 R -.25(yo)2.5 G 2.5(uc).25 G(ar)-2.5 E 2.5(ef)-.18 G(or lo)-2.75 E 2.5(wl)-.1 G -2.3 -.15(ev e)-2.5 H 2.5(lc).15 G(ontr)-2.5 E(ol, or w) -.18 E(ould y)-.1 E(ou pr)-.25 E(efer high le)-.18 E -.1(ve)-.15 G 2.5 -(la).1 G(bstractions?)-2.5 E F0 3.08(It)111 448.8 S .58(hink lo)-3.08 F +(la).1 G(bstractions?)-2.5 E F0 3.08(It)111 385.2 S .58(hink lo)-3.08 F (w-le)-.25 E -.15(ve)-.25 G 3.08(lc).15 G .58(ontrol is v)-3.08 F .579 (ery important, b)-.15 F .579(ut high-le)-.2 F -.15(ve)-.25 G 3.079(la) .15 G .579(bstractions are con)-3.079 F -.15(ve)-.4 G .579 -(nient, so a good).15 F(balance between the tw)111 460.8 Q 2.5(oi)-.1 G -2.5(sb)-2.5 G(est.)-2.5 E F1 4.18(2.6.1.10. W)111 484.8 R 1.68(ould y) +(nient, so a good).15 F(balance between the tw)111 397.2 Q 2.5(oi)-.1 G +2.5(sb)-2.5 G(est.)-2.5 E F1 4.18(2.6.1.10. W)111 421.2 R 1.68(ould y) -.75 F 1.681(ou be happy to de)-.25 F -.1(ve)-.15 G 1.681 (lop libraries f).1 F 1.681(or things that ar)-.25 F 1.681(en't alr)-.18 -F 1.681(eady imple-)-.18 F(mented \(eg: an SQL library\))111 496.8 Q F0 -(Potentially if it is simple enough to implement ne)111 512.4 Q 2.5(wt) --.25 G(hings.)-2.5 E F1 2.5(2.6.2. Notes)111 548.4 R(fr)2.5 E -(om questionnair)-.18 E 2.5(e1)-.18 G F0 .155(Some of the k)111 564 R +F 1.681(eady imple-)-.18 F(mented \(eg: an SQL library\))111 433.2 Q F0 +(Potentially if it is simple enough to implement ne)111 448.8 Q 2.5(wt) +-.25 G(hings.)-2.5 E F1 2.5(2.6.2. Notes)111 484.8 R(fr)2.5 E +(om questionnair)-.18 E 2.5(e1)-.18 G F0 .155(Some of the k)111 500.4 R .455 -.15(ey t)-.1 H .155(hings that I'm taking a).15 F -.1(wa)-.15 G 2.655(yf).1 G .155 (rom this \214rst questionnaire, are my client/users ini-)-2.655 F .719 -(tial needs and use cases. I think it')111 576 R 3.219(sc)-.55 G .719 +(tial needs and use cases. I think it')111 512.4 R 3.219(sc)-.55 G .719 (lear my language can be of assistance to my client, Zipp)-3.219 F(y)-.1 E .698(will be a good language for web back ends and small command line\ - tools, which my client e)111 588 R(x-)-.15 E(pressed interested in.)111 -600 Q 2.563<498c>111 624 S .063(nd the f)-2.563 F .063 + tools, which my client e)111 524.4 R(x-)-.15 E(pressed interested in.) +111 536.4 Q 2.563<498c>111 560.4 S .063(nd the f)-2.563 F .063 (act my client is w)-.1 F .064(orried by e)-.1 F -.15(xe)-.15 G .064 (cutable size interesting, ho).15 F(we)-.25 E -.15(ve)-.25 G 2.564(rId) .15 G .064(oubt it will be an is-)-2.564 F -(sue; a ballooning code-base is unlik)111 636 Q -(ely as only one person is writing the project.)-.1 E 2.56(Ia)111 660 S -2.56(ma)-2.56 G .06(lso taking on the f)-2.56 F .06 +(sue; a ballooning code-base is unlik)111 572.4 Q +(ely as only one person is writing the project.)-.1 E 2.56(Ia)111 596.4 +S 2.56(ma)-2.56 G .06(lso taking on the f)-2.56 F .06 (act that my client w)-.1 F .06 -(ants good command line tools, so a pkg-manager and)-.1 F -.2(bu)111 672 -S(ndler should be a priority).2 E 2.5(,p)-.65 G(erhaps the)-2.5 E 2.5 -(yc)-.15 G(ould be written in Zipp)-2.5 E 2.5(ya)-.1 G -(fter the interpreter is done.)-2.5 E F1 2.5(2.7. The)111 708 R +(ants good command line tools, so a pkg-manager and)-.1 F -.2(bu)111 +608.4 S(ndler should be a priority).2 E 2.5(,p)-.65 G(erhaps the)-2.5 E +2.5(yc)-.15 G(ould be written in Zipp)-2.5 E 2.5(ya)-.1 G +(fter the interpreter is done.)-2.5 E F1 2.5(2.7. The)111 644.4 R (\214rst elements of the pr)2.5 E(oject)-.18 E F0(At this stage I can s\ -ay that I'm con\214dent in my project and its scope. I ha)111 723.6 Q .3 --.15(ve a g)-.2 H(oal in mind for it.).15 E 0 Cg EP +ay that I'm con\214dent in my project and its scope. I ha)111 660 Q .3 +-.15(ve a g)-.2 H(oal in mind for it.).15 E F1(The k)111 684 Q +(ey things to tak)-.1 E 2.5(ea)-.1 G(way fr)-2.5 E(om this section ar) +-.18 E(e:)-.18 E(----)111 708 Q F0(Mak)2.5 E 2.5(eah)-.1 G(igh le)-2.5 E +-.15(ve)-.25 G 2.5(ll).15 G +(anguage with a useable set of features, to replace C in man)-2.5 E 2.5 +(ys)-.15 G(ituations.)-2.5 E 0 Cg EP %%Page: 6 6 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF(-6-)300.17 48 Q/F1 10/Times-Bold@0 SF(The k)111 -84 Q(ey things to tak)-.1 E 2.5(ea)-.1 G(way fr)-2.5 E -(om this section ar)-.18 E(e:)-.18 E(----)111 108 Q F0(Mak)2.5 E 2.5 -(eah)-.1 G(igh le)-2.5 E -.15(ve)-.25 G 2.5(ll).15 G -(anguage with a useable set of features, to replace C in man)-2.5 E 2.5 -(ys)-.15 G(ituations.)-2.5 E F1(----)111 132 Q F0 -.25(Ke)2.5 G -(ep the language readable and easy).25 E 2.5(,w)-.65 G(ith po)-2.5 E -(werful tools a)-.25 E -.25(va)-.2 G(ilable.).25 E F1(----)111 156 Q F0 +/F0 10/Times-Roman@0 SF(-6-)300.17 48 Q/F1 10/Times-Bold@0 SF(----)111 +84 Q F0 -.25(Ke)2.5 G(ep the language readable and easy).25 E 2.5(,w) +-.65 G(ith po)-2.5 E(werful tools a)-.25 E -.25(va)-.2 G(ilable.).25 E +F1(----)111 108 Q F0 (Ensure the language is well supported with tools lik)2.5 E 2.5(eap)-.1 -G(kg-manager)-2.5 E(.)-.55 E F1 2.5(2.8. Moddeling)111 192 R F0 .044 -(In lar)111 207.6 R .044(ger projects, when a programmer needs a data s\ +G(kg-manager)-2.5 E(.)-.55 E F1 2.5(2.8. Moddeling)111 144 R F0 .044 +(In lar)111 159.6 R .044(ger projects, when a programmer needs a data s\ tructure that the language the)-.18 F 2.545(ya)-.15 G .045 -(re writing in)-2.545 F(doesn')111 219.6 Q 2.5(tp)-.18 G(ro)-2.5 E +(re writing in)-2.545 F(doesn')111 171.6 Q 2.5(tp)-.18 G(ro)-2.5 E (vide, the)-.15 E 2.5(yw)-.15 G(ill need to mak)-2.5 E 2.5(et)-.1 G -(heir o)-2.5 E(wn.)-.25 E(Bello)111 243.6 Q 2.5(wa)-.25 G(re a fe)-2.5 E +(heir o)-2.5 E(wn.)-.25 E(Bello)111 195.6 Q 2.5(wa)-.25 G(re a fe)-2.5 E 2.5(we)-.25 G(xamples of these data structures that C doesn')-2.65 E 2.5 -(ta)-.18 G(lready pro)-2.5 E(vide.)-.15 E F1 2.5(2.8.1. Link)111 267.6 R -(ed lists)-.1 E F0 .966(this is an alternati)111 283.2 R 1.266 -.15 +(ta)-.18 G(lready pro)-2.5 E(vide.)-.15 E F1 2.5(2.8.1. Link)111 219.6 R +(ed lists)-.1 E F0 .966(this is an alternati)111 235.2 R 1.266 -.15 (ve i)-.25 H .966 (mplementation of a list, where you store some data, and the memory ad-) -.15 F .568(dress to the ne)111 295.2 R .568(xt node. Then you can mo) +.15 F .568(dress to the ne)111 247.2 R .568(xt node. Then you can mo) -.15 F .868 -.15(ve t)-.15 H .569 (hrough the list by reading the data then reading the).15 F -(data of the ne)111 307.2 Q(xt node, and then repeating until the 'ne) --.15 E(xt' part of the node is empty)-.15 E(.)-.65 E 2.5(Ad)111 331.2 S +(data of the ne)111 259.2 Q(xt node, and then repeating until the 'ne) +-.15 E(xt' part of the node is empty)-.15 E(.)-.65 E 2.5(Ad)111 283.2 S (iagram sho)-2.5 E(wing this can be seen here:)-.25 E 14 14 109 109 -44 -44 251.5 399.2 PBEGIN +44 251.5 351.2 PBEGIN %%BeginDocument: linkedlist.ps %!PS-Adobe-3.0 %%Creator: GIMP PostScript file plug-in V 1.17 by Peter Kirchgessner @@ -1499,78 +1500,78 @@ end %%EndDocument end PEND 1.106 (In C this is easy to implement as you can \214nd a memory address v)111 -426.8 R 1.105(ery easily with '&' to \214nd)-.15 F .168 -(where a bit of data is stored. I will need to use a ')111 438.8 R .168 +378.8 R 1.105(ery easily with '&' to \214nd)-.15 F .168 +(where a bit of data is stored. I will need to use a ')111 390.8 R .168 (struct', which is a bit lik)-.55 F 2.669(eac)-.1 G .169(lass in C \(ho) --2.669 F(we)-.25 E -.15(ve)-.25 G(r).15 E(you can')111 450.8 Q 2.5(ta) +-2.669 F(we)-.25 E -.15(ve)-.25 G(r).15 E(you can')111 402.8 Q 2.5(ta) -.18 G(ttach a function to it\). A simple implementation looks lik)-2.5 -E 2.5(et)-.1 G(his:)-2.5 E(typedef struct ll {)111 474.8 Q -.2(vo)131 -486.8 S(id *data; // the data of the node).2 E(ll *ne)131 498.8 Q -(xt; // the ne)-.15 E(xt node)-.15 E 2.5(}l)111 522.8 S(l;)-2.5 E .623 -(The pro')111 550.4 R 3.123(so)-.55 G 3.123(fal)-3.123 G(ink)-3.123 E +E 2.5(et)-.1 G(his:)-2.5 E(typedef struct ll {)111 426.8 Q -.2(vo)131 +438.8 S(id *data; // the data of the node).2 E(ll *ne)131 450.8 Q +(xt; // the ne)-.15 E(xt node)-.15 E 2.5(}l)111 474.8 S(l;)-2.5 E .623 +(The pro')111 502.4 R 3.123(so)-.55 G 3.123(fal)-3.123 G(ink)-3.123 E .623(ed list are the f)-.1 F .623(act that the)-.1 F 3.122(yc)-.15 G .622(an ha)-3.122 F .922 -.15(ve d)-.2 H .622 (ata appended to the start or end easily).15 F -(by changing the root node, or the ne)111 562.4 Q(xt node.)-.15 E(Link) -111 586.4 Q 1.117(ed lists ha)-.1 F 1.417 -.15(ve a f)-.2 H 1.617 -.25 +(by changing the root node, or the ne)111 514.4 Q(xt node.)-.15 E(Link) +111 538.4 Q 1.117(ed lists ha)-.1 F 1.417 -.15(ve a f)-.2 H 1.617 -.25 (ew d).15 H -.25(ow).25 G 1.117(nsides, for e).25 F 1.117 (xample you can')-.15 F 3.617(tm)-.18 G 1.417 -.15(ove t)-3.617 H 1.117 (hrough them backw).15 F 1.118(ards, and)-.1 F -(unless you store it on its o)111 598.4 Q +(unless you store it on its o)111 550.4 Q (wn, you cant \214nd the length of it in a f)-.25 E(ast w)-.1 E(ay)-.1 E -(.)-.65 E .476(In my project I w)111 622.4 R .476(ould lik)-.1 F 2.976 +(.)-.65 E .476(In my project I w)111 574.4 R .476(ould lik)-.1 F 2.976 (et)-.1 G 2.976(ou)-2.976 G .476(se link)-2.976 F .475 (ed list in the AST \(see later sections for info\), and to store)-.1 F -(lists in the language.)111 634.4 Q F1 2.5(2.8.2. Dictionaries)111 658.4 -R F0 3.511(Ad)111 674 S 1.011(ictionary is a simple data structure that\ +(lists in the language.)111 586.4 Q F1 2.5(2.8.2. Dictionaries)111 610.4 +R F0 3.511(Ad)111 626 S 1.011(ictionary is a simple data structure that\ just stores, a bit of data, and a number or string to)-3.511 F -(identify it.)111 686 Q 2.5(Ad)5 G(ictionary lik)-2.5 E 2.5(eal)-.1 G +(identify it.)111 638 Q 2.5(Ad)5 G(ictionary lik)-2.5 E 2.5(eal)-.1 G (ink)-2.5 E(ed list can be implemented with a struct in c lik)-.1 E 2.5 -(es)-.1 G(o:)-2.5 E(typedef struct dict {)111 710 Q -.2(vo)131 722 S -(id *data;).2 E 0 Cg EP +(es)-.1 G(o:)-2.5 E(typedef struct dict {)111 662 Q -.2(vo)131 674 S +(id *data;).2 E(int id;)131 686 Q 2.5(}d)111 710 S(ict;)-2.5 E 0 Cg EP %%Page: 7 7 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF(-7-)300.17 48 Q(int id;)131 84 Q 2.5(}d)111 108 -S(ict;)-2.5 E .382(In my project I think I could use a link)111 135.6 R -.382(ed list represent a Zipp)-.1 F 2.882(yv)-.1 G .382 +/F0 10/Times-Roman@0 SF(-7-)300.17 48 Q .382 +(In my project I think I could use a link)111 84 R .382 +(ed list represent a Zipp)-.1 F 2.882(yv)-.1 G .382 (ariable and an ID that i can use)-3.132 F -(to identify it, this could mak)111 147.6 Q 2.5(ee)-.1 G -.15(xe)-2.65 G +(to identify it, this could mak)111 96 Q 2.5(ee)-.1 G -.15(xe)-2.65 G (cution f).15 E(aster as i can compare ID')-.1 E 2.5(sr)-.55 G (ather than string v)-2.5 E(alues)-.25 E/F1 10/Times-Bold@0 SF 2.5 -(2.9. Pr)111 183.6 R(ototyping hard featur)-.18 E(es)-.18 E 2.5 -(2.9.1. Abstract)111 207.6 R(Syntax T)2.5 E -.18(re)-.74 G -(es \(AST\) theory).18 E F0 .69(In a programming language man)111 223.2 +(2.9. Pr)111 132 R(ototyping hard featur)-.18 E(es)-.18 E 2.5 +(2.9.1. Abstract)111 156 R(Syntax T)2.5 E -.18(re)-.74 G +(es \(AST\) theory).18 E F0 .69(In a programming language man)111 171.6 R 3.19(ya)-.15 G .691(bstract data types will be used to allo)-3.19 F 3.191(wt)-.25 G .691(he code to e)-3.191 F -.15(xe)-.15 G(cute,).15 E -(ho)111 235.2 Q(we)-.25 E -.15(ve)-.25 G 3.698(rIt).15 G 1.197(hink the\ +(ho)111 183.6 Q(we)-.25 E -.15(ve)-.25 G 3.698(rIt).15 G 1.197(hink the\ hardest part of this is an abstract syntax tree. This is a data struct\ ure that)-3.698 F .376 -(holds the code in an ordered form that can be analysed and e)111 247.2 +(holds the code in an ordered form that can be analysed and e)111 195.6 R -.15(xe)-.15 G .377(cuted in a simple w).15 F(ay)-.1 E 2.877(.I)-.65 G 2.877(ti)-2.877 G 2.877(sat)-2.877 G(ree)-2.877 E .247 -(structure, with the top node being a root and all lo)111 259.2 R .247 +(structure, with the top node being a root and all lo)111 207.6 R .247 (wer nodes being things needed to calculate the)-.25 F .824 -(root. It can be used not only for code b)111 271.2 R .825 +(root. It can be used not only for code b)111 219.6 R .825 (ut also for mathematical e)-.2 F .825(xpressions. I think the easiest) --.15 F -.1(wa)111 283.2 S 2.5(yt).1 G 2.5(os)-2.5 G(ho)-2.5 E 2.5(wi) +-.15 F -.1(wa)111 231.6 S 2.5(yt).1 G 2.5(os)-2.5 G(ho)-2.5 E 2.5(wi) -.25 G 2.5(ti)-2.5 G 2.5(sv)-2.5 G(ia a mathematical e)-2.5 E(xample) --.15 E -.8(Ta)111 307.2 S .2 -.1(ke t).8 H(he follo).1 E 2.5(we)-.25 G -(xpression for e)-2.65 E(xample:)-.15 E .4 LW 111 323.7 111 333.7 DL -210.61 323.7 111 323.7 DL 210.61 333.7 210.61 323.7 DL 111 333.7 210.61 -333.7 DL(\(1 + \(10 * \(3 - \(2 * 4\)\)\)\))113 331.2 Q 1.6 -.8(We k)111 -355.2 T(no).8 E 2.5(wt)-.25 G(hat this is equal to -49)-2.5 E(Ho)111 -379.2 Q(we)-.25 E -.15(ve)-.25 G 2.917(rf).15 G .417 +-.15 E -.8(Ta)111 255.6 S .2 -.1(ke t).8 H(he follo).1 E 2.5(we)-.25 G +(xpression for e)-2.65 E(xample:)-.15 E .4 LW 111 272.1 111 282.1 DL +210.61 272.1 111 272.1 DL 210.61 282.1 210.61 272.1 DL 111 282.1 210.61 +282.1 DL(\(1 + \(10 * \(3 - \(2 * 4\)\)\)\))113 279.6 Q 1.6 -.8(We k)111 +303.6 T(no).8 E 2.5(wt)-.25 G(hat this is equal to -49)-2.5 E(Ho)111 +327.6 Q(we)-.25 E -.15(ve)-.25 G 2.917(rf).15 G .417 (or a computer this is f)-2.917 F .416 (ar harder to understand. This is because it has no understanding)-.1 F -(of order of operation)111 391.2 Q 1.6 -.8(To s)111 415.2 T(olv).8 E 2.5 +(of order of operation)111 339.6 Q 1.6 -.8(To s)111 363.6 T(olv).8 E 2.5 (et)-.15 G(his we use an AST \(abstract syntax tree\))-2.5 E .187 -(When you solv)111 439.2 R 2.687(et)-.15 G .187(hat e)-2.687 F .187 +(When you solv)111 387.6 R 2.687(et)-.15 G .187(hat e)-2.687 F .187 (xpression you kno)-.15 F 2.687(wt)-.25 G 2.687(os)-2.687 G .187 (tart with \(2 * 4\), then 3 - the answer to that and so)-2.687 F(on)111 -451.2 Q 1.6 -.8(We c)111 475.2 T(an represent the steps as a tree lik).8 -E 2.5(es)-.1 G(o:)-2.5 E 14 14 50 50 -87 87 281 586.2 PBEGIN +399.6 Q 1.6 -.8(We c)111 423.6 T(an represent the steps as a tree lik).8 +E 2.5(es)-.1 G(o:)-2.5 E 14 14 50 50 -87 87 281 534.6 PBEGIN %%BeginDocument: ast.ps %!PS-Adobe-3.0 %%Creator: GIMP PostScript file plug-in V 1.17 by Peter Kirchgessner @@ -2692,40 +2693,40 @@ end %%EOF %%EndDocument end PEND/F2 10/Times-Italic@0 SF([Evalutates to 2 * \(2 + 2\)])111.29 -610.2 Q F0 .347(As you can see, you need to e)111 634.2 R -.25(va)-.25 G +558.6 Q F0 .347(As you can see, you need to e)111 582.6 R -.25(va)-.25 G .347(luate the e).25 F .347(xpression in the most brack)-.15 F .346 -(ets \214rst, then the ne)-.1 F .346(xt, and)-.15 F(so on, w)111 646.2 Q -(orking you w)-.1 E(ay up)-.1 E -1.1(Yo)111 670.2 S 2.646(uc)1.1 G .146 +(ets \214rst, then the ne)-.1 F .346(xt, and)-.15 F(so on, w)111 594.6 Q +(orking you w)-.1 E(ay up)-.1 E -1.1(Yo)111 618.6 S 2.646(uc)1.1 G .146 (an e)-2.646 F -.25(va)-.25 G .147(luate code in a similar w).25 F(ay) -.1 E 2.647(,t)-.65 G .147 (reating each operation \(such as +-*/\) as functions, doing)-2.647 F -.002(the most deeply nested function \214rst, then w)111 682.2 R .002 +.002(the most deeply nested function \214rst, then w)111 630.6 R .002 (orking up. Each e)-.1 F .002(xpression can be represented in this)-.15 -F(tree, then to sho)111 694.2 Q 2.5(waw)-.25 G +F(tree, then to sho)111 642.6 Q 2.5(waw)-.25 G (hole program you can create a list of trees)-2.5 E F1 2.5 -(2.9.2. Implementing)111 730.2 R(AST')2.5 E(s)-.37 E 0 Cg EP +(2.9.2. Implementing)111 678.6 R(AST')2.5 E(s)-.37 E F0 .32 +(As a prototype i will mak)111 694.2 R 2.821(eap)-.1 G .321 +(rogram that can tak)-2.821 F 2.821(em)-.1 G .321(athematical e)-2.821 F +.321(xpressions and e)-.15 F -.25(va)-.25 G .321(luate them,).25 F +(and allo)111 706.2 Q(wing for functions \(in the form f\(x\)\).)-.25 E +(It will do this via AST')5 E(s)-.55 E .718(This prototype tak)111 730.2 +R .718(es 173 lines of code, it tak)-.1 F .718 +(es a string as a cmd line ar)-.1 F .717(gument then con)-.18 F -.15(ve) +-.4 G .717(rts it).15 F 0 Cg EP %%Page: 8 8 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF(-8-)300.17 48 Q .32(As a prototype i will mak) -111 84 R 2.821(eap)-.1 G .321(rogram that can tak)-2.821 F 2.821(em)-.1 -G .321(athematical e)-2.821 F .321(xpressions and e)-.15 F -.25(va)-.25 -G .321(luate them,).25 F(and allo)111 96 Q -(wing for functions \(in the form f\(x\)\).)-.25 E -(It will do this via AST')5 E(s)-.55 E .718(This prototype tak)111 120 R -.718(es 173 lines of code, it tak)-.1 F .718 -(es a string as a cmd line ar)-.1 F .717(gument then con)-.18 F -.15(ve) --.4 G .717(rts it).15 F .177 -(into an abstract syntax tree, and \214nally it e)111 132 R -.15(xe)-.15 +/F0 10/Times-Roman@0 SF(-8-)300.17 48 Q .177 +(into an abstract syntax tree, and \214nally it e)111 84 R -.15(xe)-.15 G .178(cutes it. This is just a simple prototype and thus it is).15 F .171(small in scope. It can only do simple operators \(+-*/\) and requi\ -res literal v)111 144 R .17(alues to be surrounded)-.25 F -(by [] so it kno)111 156 Q(ws its not another e)-.25 E(xpression to e) --.15 E -.25(va)-.25 G(luate.).25 E(https://github)111 180 Q +res literal v)111 96 R .17(alues to be surrounded)-.25 F +(by [] so it kno)111 108 Q(ws its not another e)-.25 E(xpression to e) +-.15 E -.25(va)-.25 G(luate.).25 E(https://github)111 132 Q (.com/standenbo)-.4 E (y/school/tree/master/comp/lucas-standen-NEA/code/proto/ast)-.1 E 14 14 -230 230 -426 426 191 630 PBEGIN +230 230 -426 426 191 582 PBEGIN %%BeginDocument: astg.ps %!PS-Adobe-3.0 %%Creator: GIMP PostScript file plug-in V 1.17 by Peter Kirchgessner @@ -15535,43 +15536,44 @@ showpage end %%EOF %%EndDocument -end PEND(Abo)111 657.6 Q .335 -.15(ve i)-.15 H 2.535(st).15 G .035 +end PEND(Abo)111 609.6 Q .335 -.15(ve i)-.15 H 2.535(st).15 G .035 (he code for the AST)-2.535 F 2.535(,i)-.74 G 2.535(ts)-2.535 G .035 (tores an operation \(which is just an inte)-2.535 F .035 -(ger\), and it stores a real)-.15 F .676(left and real right v)111 669.6 +(ger\), and it stores a real)-.15 F .676(left and real right v)111 621.6 R .675(alue, along side tw)-.25 F 3.175(oo)-.1 G .675 (ther nodes. The real v)-3.175 F .675(alues are inte)-.25 F .675 (gers, this w)-.15 F .675(ould be)-.1 F .943 -(the 2 numbers in reference in the e)111 681.6 R .944 +(the 2 numbers in reference in the e)111 633.6 R .944 (xpression. The 2 nodes are a recursi)-.15 F 1.244 -.15(ve d)-.25 H .944 -(ata structure, much).15 F(lik)111 693.6 Q 3.489(ep)-.1 G .988(utting a\ +(ata structure, much).15 F(lik)111 645.6 Q 3.489(ep)-.1 G .988(utting a\ n object of a class inside the de\214nition of that class itself. The) -3.489 F 3.488(ya)-.15 G .988(re used to store)-3.488 F -.25(va)111 -705.6 S .08(lues that may still be e).25 F .08(xpressions, for e)-.15 F +657.6 S .08(lues that may still be e).25 F .08(xpressions, for e)-.15 F .081(xample \(+ [1] \(+ [1] [1]\)\) the second part of this e)-.15 F -(xpres-)-.15 E .533(sion w)111 717.6 R .533(ould be in the "right" v)-.1 +(xpres-)-.15 E .533(sion w)111 669.6 R .533(ould be in the "right" v)-.1 F .533(ariable. When code is e)-.25 F -.15(xe)-.15 G .533 (cuted I can check if "left", or "right" are).15 F .749(null and if the) -111 729.6 R 3.249(ya)-.15 G .749(re i kno)-3.249 F 3.249(wt)-.25 G .749 +111 681.6 R 3.249(ya)-.15 G .749(re i kno)-3.249 F 3.249(wt)-.25 G .749 (hat i am at the lo)-3.249 F .749(west e)-.25 F .749 (xpression that is only literal v)-.15 F 3.249(alues. Then)-.25 F(I) -3.249 E 0 Cg EP +3.249 E(can e)111 693.6 Q -.15(xe)-.15 G(cute that node and w).15 E +(ork my w)-.1 E(ay up the tree.)-.1 E .81(The e)111 729.6 R -.15(xe)-.15 +G 3.31(cf).15 G .81(unction will e)-3.31 F -.15(xe)-.15 G .809(cute the\ + operation, unless there is a deeper node, if there is a deeper).15 F 0 +Cg EP %%Page: 9 9 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF(-9-)300.17 48 Q(can e)111 84 Q -.15(xe)-.15 G -(cute that node and w).15 E(ork my w)-.1 E(ay up the tree.)-.1 E .81 -(The e)111 120 R -.15(xe)-.15 G 3.31(cf).15 G .81(unction will e)-3.31 F --.15(xe)-.15 G .809(cute the operation, unless there is a deeper node, \ -if there is a deeper).15 F(node, then it e)111 132 Q -.15(xe)-.15 G +/F0 10/Times-Roman@0 SF(-9-)300.17 48 Q(node, then it e)111 84 Q -.15 +(xe)-.15 G (cutes it, and places the result in the right or left spot respecti).15 -E -.15(ve)-.25 G(ly).15 E(.)-.65 E(Expressions are tak)111 156 Q +E -.15(ve)-.25 G(ly).15 E(.)-.65 E(Expressions are tak)111 108 Q (en as input with the follo)-.1 E(wing code, and con)-.25 E -.15(ve)-.4 -G(rted into the AST).15 E(:)-.5 E(https://github)111 180 Q +G(rted into the AST).15 E(:)-.5 E(https://github)111 132 Q (.com/standenbo)-.4 E (y/school/tree/master/comp/lucas-standen-NEA/code/proto/ast)-.1 E 14 14 -134 134 -426 426 239 630 PBEGIN +134 134 -426 426 239 582 PBEGIN %%BeginDocument: ast.c.ps %!PS-Adobe-3.0 %%Creator: GIMP PostScript file plug-in V 1.17 by Peter Kirchgessner @@ -50496,41 +50498,41 @@ showpage end %%EOF %%EndDocument -end PEND(Here is an e)111 654 Q(xample input and output:)-.15 E -(./ast "\(+ \(- [3] [1]\) \(- [3] [1]\)\)")113.5 678 Q .4 LW 111 694.5 -111 704.5 DL 120 694.5 111 694.5 DL 120 704.5 120 694.5 DL 111 704.5 120 -704.5 DL(4)113 702 Q -(Note the [] used to tell the program where the literal v)111 726 Q -(alues are.)-.25 E 0 Cg EP +end PEND(Here is an e)111 606 Q(xample input and output:)-.15 E +(./ast "\(+ \(- [3] [1]\) \(- [3] [1]\)\)")113.5 630 Q .4 LW 111 646.5 +111 656.5 DL 120 646.5 111 646.5 DL 120 656.5 120 646.5 DL 111 656.5 120 +656.5 DL(4)113 654 Q +(Note the [] used to tell the program where the literal v)111 678 Q +(alues are.)-.25 E(Ov)111 702 Q .447(erall this w)-.15 F .448 +(as a relati)-.1 F -.15(ve)-.25 G .448(ly successful prototype, ho).15 F +(we)-.25 E -.15(ve)-.25 G 2.948(ri).15 G 2.948(ti)-2.948 G(sn')-2.948 E +2.948(tf)-.18 G .448(ully functional as a language)-2.948 F +(it has \214t the design.)111 714 Q 0 Cg EP %%Page: 10 10 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF(-10-)297.67 48 Q(Ov)111 84 Q .447(erall this w) --.15 F .448(as a relati)-.1 F -.15(ve)-.25 G .448 -(ly successful prototype, ho).15 F(we)-.25 E -.15(ve)-.25 G 2.948(ri).15 -G 2.948(ti)-2.948 G(sn')-2.948 E 2.948(tf)-.18 G .448 -(ully functional as a language)-2.948 F(it has \214t the design.)111 96 -Q 1.014(The rest of the code is the process of con)111 120 R -.15(ve)-.4 -G 1.014(rting the string input to literal v).15 F 1.014 -(alues and inserting)-.25 F(them into the AST)111 132 Q/F1 10 -/Times-Bold@0 SF 2.5(2.9.3. F)111 168 R(eedback)-.25 E F0 .656(From my \ -\214rst Client \(Amy C\), she said that putting the numbers inside squa\ -re brack)111 183.6 R .657(ets w)-.1 F .657(as in-)-.1 F(con)111 195.6 Q --.15(ve)-.4 G .408(nient and anno).15 F .408(ying and it w)-.1 F .407 +/F0 10/Times-Roman@0 SF(-10-)297.67 48 Q 1.014 +(The rest of the code is the process of con)111 84 R -.15(ve)-.4 G 1.014 +(rting the string input to literal v).15 F 1.014(alues and inserting) +-.25 F(them into the AST)111 96 Q/F1 10/Times-Bold@0 SF 2.5(2.9.3. F)111 +132 R(eedback)-.25 E F0 .656(From my \214rst Client \(Amy C\), she said\ + that putting the numbers inside square brack)111 147.6 R .657(ets w)-.1 +F .657(as in-)-.1 F(con)111 159.6 Q -.15(ve)-.4 G .408(nient and anno) +.15 F .408(ying and it w)-.1 F .407 (ould be better if the numbers were separated by spaces instead)-.1 F -(of separate square brack)111 207.6 Q(et surrounded literals.)-.1 E .549 -(As this is a prototype I w)111 231.6 R(on')-.1 E 3.049<748c>-.18 G +(of separate square brack)111 171.6 Q(et surrounded literals.)-.1 E .549 +(As this is a prototype I w)111 195.6 R(on')-.1 E 3.049<748c>-.18 G 3.049(xt)-3.049 G .549(his issue, ho)-3.049 F(we)-.25 E -.15(ve)-.25 G 3.049(ri).15 G 3.049(nt)-3.049 G .549 (he actual language this is a needed fea-)-3.049 F -(ture that I will be implementing.)111 243.6 Q F1 2.5(2.9.4. Mixing)111 -279.6 R(link)2.5 E(ed lists and AST')-.1 E(s)-.37 E F0 1.233(Mixing the\ +(ture that I will be implementing.)111 207.6 Q F1 2.5(2.9.4. Mixing)111 +243.6 R(link)2.5 E(ed lists and AST')-.1 E(s)-.37 E F0 1.233(Mixing the\ se 2 data structures together you can repressent an entire program. A l\ -ink)111 295.2 R 1.233(ed list of)-.1 F(AST')111 307.2 Q 2.5(si)-.55 G +ink)111 259.2 R 1.233(ed list of)-.1 F(AST')111 271.2 Q 2.5(si)-.55 G 2.5(sh)-2.5 G .5 -.25(ow Z)-2.5 H(ipp).25 E 2.5(yw)-.1 G -(ill repressent all code the user writes)-2.5 E(Here is an e)111 331.2 Q -(xample of this:)-.15 E 14 14 142 142 -135 135 235 490.2 PBEGIN +(ill repressent all code the user writes)-2.5 E(Here is an e)111 295.2 Q +(xample of this:)-.15 E 14 14 142 142 -135 135 235 454.2 PBEGIN %%BeginDocument: AST+LL.ps %!PS-Adobe-3.0 %%Creator: GIMP PostScript file plug-in V 1.17 by Peter Kirchgessner @@ -52329,442 +52331,442 @@ showpage end %%EOF %%EndDocument -end PEND .711(In this e)111 517.8 R .711(xample the link)-.15 F .711 +end PEND .711(In this e)111 481.8 R .711(xample the link)-.15 F .711 (ed list is represented by the numbers seen at the top, and the AST')-.1 -F 3.212(sa)-.55 G(re)-3.212 E(the tree')111 529.8 Q 2.5(sm)-.55 G -.15 +F 3.212(sa)-.55 G(re)-3.212 E(the tree')111 493.8 Q 2.5(sm)-.55 G -.15 (ov)-2.5 G(ing do).15 E(wn.)-.25 E .669(As you can see when a v)111 -553.8 R .669(alue is referenced that is from a dif)-.25 F .668 +517.8 R .669(alue is referenced that is from a dif)-.25 F .668 (ferent AST the tree will link to an-)-.25 F .378 -(other one. This will w)111 565.8 R .378 +(other one. This will w)111 529.8 R .378 (ork the same for function calls, ho)-.1 F(we)-.25 E -.15(ve)-.25 G 2.878(ri).15 G .378(nstead of linking to v)-2.878 F .379(alue de\214ni-) --.25 F(tions it will link to function de\214nitions.)111 577.8 Q F1 2.5 -(2.10. Objecti)111 613.8 R -.1(ve)-.1 G(s).1 E 2.5(2.10.1. An)111 637.8 +-.25 F(tions it will link to function de\214nitions.)111 541.8 Q F1 2.5 +(2.10. Objecti)111 577.8 R -.1(ve)-.1 G(s).1 E 2.5(2.10.1. An)111 601.8 R(inter)2.5 E(pr)-.1 E(eter f)-.18 E(or the Zippy language)-.25 E 2.5 -(2.10.1.1. Link)111 661.8 R(ed list of AST')-.1 E(s)-.37 E F0 .033 -(All of a loaded program should be represented as a link)111 677.4 R +(2.10.1.1. Link)111 625.8 R(ed list of AST')-.1 E(s)-.37 E F0 .033 +(All of a loaded program should be represented as a link)111 641.4 R .033(ed list of indi)-.1 F .033(vidual AST')-.25 F .033(s, The de)-.55 F -.15(ve)-.25 G(loper).15 E .528(should be able to access the AST for ea\ -sy hacking. Functions can be represented as a pointer to)111 689.4 R -(another part of the list.)111 701.4 Q F1 2.5(2.10.1.2. A)111 725.4 R -(lisp lik)2.5 E 2.5(es)-.1 G(yntax)-2.5 E 0 Cg EP +sy hacking. Functions can be represented as a pointer to)111 653.4 R +(another part of the list.)111 665.4 Q F1 2.5(2.10.1.2. A)111 689.4 R +(lisp lik)2.5 E 2.5(es)-.1 G(yntax)-2.5 E F0 +(This is to ensure the language can be parsed quickly)111 705 Q 2.5(,a) +-.65 G(nd is easy to write.)-2.5 E F1 2.5(2.10.1.3. Functional)111 729 R +(language)2.5 E 0 Cg EP %%Page: 11 11 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF(-11-)297.67 48 Q -(This is to ensure the language can be parsed quickly)111 84 Q 2.5(,a) --.65 G(nd is easy to write.)-2.5 E/F1 10/Times-Bold@0 SF 2.5 -(2.10.1.3. Functional)111 108 R(language)2.5 E F0 1.366(This language s\ -hould lean into the functional programming paradigm, taking inspiration\ - from)111 123.6 R(other functional languages such as lisp, and gleam.) -111 135.6 Q F1 2.5(2.10.1.3.1. Recursion)111 159.6 R F0(Zipp)111 175.2 Q +/F0 10/Times-Roman@0 SF(-11-)297.67 48 Q 1.366(This language should lea\ +n into the functional programming paradigm, taking inspiration from)111 +84 R(other functional languages such as lisp, and gleam.)111 96 Q/F1 10 +/Times-Bold@0 SF 2.5(2.10.1.3.1. Recursion)111 120 R F0(Zipp)111 135.6 Q 2.621(ym)-.1 G .121(ust support recursi)-2.621 F .421 -.15(ve a)-.25 H .121(lgorithms being implemented into it, this will mak).15 F 2.622(et) -.1 G .122(he AST)-2.622 F 2.622(,h)-.74 G -2.25 -.2(av e)-2.622 H -(nodes linking back to parent nodes in a link)111 187.2 Q(ed list.)-.1 E -F1 2.5(2.10.1.3.2. Higher)111 211.2 R(order functions)2.5 E F0(Zipp)111 -226.8 Q 2.693(ym)-.1 G .192(ust support the usage of higher order funct\ +(nodes linking back to parent nodes in a link)111 147.6 Q(ed list.)-.1 E +F1 2.5(2.10.1.3.2. Higher)111 171.6 R(order functions)2.5 E F0(Zipp)111 +187.2 Q 2.693(ym)-.1 G .192(ust support the usage of higher order funct\ ions, this will mean the AST needs to ha)-2.693 F .492 -.15(ve a)-.2 H -(n).15 E .558(unlimited depth as otherwise the limit w)111 238.8 R .559 +(n).15 E .558(unlimited depth as otherwise the limit w)111 199.2 R .559 (ould be quickly reached, it can')-.1 F 3.059(tb)-.18 G 3.059(eh)-3.059 -G .559(ard-coded, it must)-3.059 F(be dynamic.)111 250.8 Q F1 2.5 -(2.10.1.4. P)111 274.8 R(erf)-.2 E(ormance)-.25 E F0 .584 -(The interpreter must be f)111 290.4 R .584(ast and memory ef)-.1 F .584 +G .559(ard-coded, it must)-3.059 F(be dynamic.)111 211.2 Q F1 2.5 +(2.10.1.4. P)111 235.2 R(erf)-.2 E(ormance)-.25 E F0 .584 +(The interpreter must be f)111 250.8 R .584(ast and memory ef)-.1 F .584 (\214cient, the language is designed to w)-.25 F .583(ork as an alter) --.1 F(-)-.2 E(nati)111 302.4 Q .344 -.15(ve t)-.25 H 2.544(oC).15 G +-.1 F(-)-.2 E(nati)111 262.8 Q .344 -.15(ve t)-.25 H 2.544(oC).15 G 2.544(,o)-2.544 G .044(ne of the f)-2.544 F .045 (astest languages of all time, the interpreter must be f)-.1 F .045 (ast, ho)-.1 F(we)-.25 E -.15(ve)-.25 G 2.545(rm).15 G(emory)-2.545 E -(footprint is not as much of a requirement.)111 314.4 Q F1 2.5 -(2.10.1.5. Safe)111 338.4 R F0 1.269(Code that the user writes must be \ -safe, and not prone to errors. This can be handeled via the)111 354 R -(strong syntax check)111 366 Q(er and type safety)-.1 E(.)-.65 E F1 2.5 -(2.10.2. Standard)111 402 R(library f)2.5 E(or Zippy)-.25 E 2.5 -(2.10.2.1. io)111 426 R F0(The language must ha)111 441.6 Q .3 -.15 +(footprint is not as much of a requirement.)111 274.8 Q F1 2.5 +(2.10.1.5. Safe)111 298.8 R F0 1.269(Code that the user writes must be \ +safe, and not prone to errors. This can be handeled via the)111 314.4 R +(strong syntax check)111 326.4 Q(er and type safety)-.1 E(.)-.65 E F1 +2.5(2.10.2. Standard)111 362.4 R(library f)2.5 E(or Zippy)-.25 E 2.5 +(2.10.2.1. io)111 386.4 R F0(The language must ha)111 402 Q .3 -.15 (ve a s)-.2 H(imple to use I/O library to mak).15 E 2.5(eo)-.1 G -(utputs easy)-2.5 E(.)-.65 E F1 2.5(2.10.2.2. string)111 465.6 R F0 -1.168(The language should ha)111 481.2 R 1.468 -.15(ve a s)-.2 H 1.168 +(utputs easy)-2.5 E(.)-.65 E F1 2.5(2.10.2.2. string)111 426 R F0 1.168 +(The language should ha)111 441.6 R 1.468 -.15(ve a s)-.2 H 1.168 (ting library that pro).15 F 1.168(vides a string type, and man)-.15 F 3.668(yc)-.15 G(omple)-3.668 E 3.668(xa)-.15 G(lgo-)-3.668 E(rithms tha\ t can be applied to them \(concatenation, insertion, appending, splitti\ -ng, stripping\).)111 493.2 Q F1 2.5(2.10.2.3. sorts)111 517.2 R F0 .457 -(The language should ha)111 532.8 R .757 -.15(ve a s)-.2 H .456 +ng, stripping\).)111 453.6 Q F1 2.5(2.10.2.3. sorts)111 477.6 R F0 .457 +(The language should ha)111 493.2 R .757 -.15(ve a s)-.2 H .456 (orting library that pro).15 F .456 (vides algorithms used for sorting \(lik)-.15 F 2.956(em)-.1 G(er)-2.956 -E(ge)-.18 E(sort\).)111 544.8 Q F1 2.5(2.10.2.4. graphs)111 568.8 R F0 -.331(the language must ha)111 584.4 R .632 -.15(ve a g)-.2 H .332 +E(ge)-.18 E(sort\).)111 505.2 Q F1 2.5(2.10.2.4. graphs)111 529.2 R F0 +.331(the language must ha)111 544.8 R .632 -.15(ve a g)-.2 H .332 (raph library).15 F 2.832(,t)-.65 G .332(hat allo)-2.832 F .332 (ws for easy creation and w)-.25 F .332(orking with graphs, it)-.1 F -(should pro)111 596.4 Q(vide man)-.15 E 2.5(ya)-.15 G +(should pro)111 556.8 Q(vide man)-.15 E 2.5(ya)-.15 G (lgorithms to help tra)-2.5 E -.15(ve)-.2 G(rse these graphs).15 E F1 -2.5(2.10.3. T)111 632.4 R(ooling f)-.92 E(or the Zippy language)-.25 E -2.5(2.10.3.1. zpypkg)111 656.4 R F0(Zipp)111 672 Q 3.562(ym)-.1 G 1.062 -(ust pro)-3.562 F 1.062(vide a package manager)-.15 F 3.562(,t)-.4 G -1.061(hat allo)-3.562 F 1.061 -(ws code to be shared between multiple users,)-.25 F(easily)111 684 Q 5 -(.I)-.65 G 2.5(ts)-5 G(hould sync projects via git and allo)-2.5 E 2.5 +2.5(2.10.3. T)111 592.8 R(ooling f)-.92 E(or the Zippy language)-.25 E +2.5(2.10.3.1. zpypkg)111 616.8 R F0(Zipp)111 632.4 Q 3.562(ym)-.1 G +1.062(ust pro)-3.562 F 1.062(vide a package manager)-.15 F 3.562(,t)-.4 +G 1.061(hat allo)-3.562 F 1.061 +(ws code to be shared between multiple users,)-.25 F(easily)111 644.4 Q +5(.I)-.65 G 2.5(ts)-5 G(hould sync projects via git and allo)-2.5 E 2.5 (wt)-.25 G(hem to be stored on an)-2.5 E 2.5(yg)-.15 G -(it host the user lik)-2.5 E(es.)-.1 E F1 2.5(2.10.3.2. Syntax)111 708 R -(check)2.5 E(er)-.1 E F0(Zipp)111 723.6 Q 2.711(ys)-.1 G(houldn')-2.711 -E 2.711(th)-.18 G -2.25 -.2(av e)-2.711 H 2.711(ab)2.911 G .211 +(it host the user lik)-2.5 E(es.)-.1 E F1 2.5(2.10.3.2. Syntax)111 668.4 +R(check)2.5 E(er)-.1 E F0(Zipp)111 684 Q 2.711(ys)-.1 G(houldn')-2.711 E +2.711(th)-.18 G -2.25 -.2(av e)-2.711 H 2.711(ab)2.911 G .211 (uilt in syntax check)-2.911 F(er)-.1 E 2.711(,i)-.4 G .211 -(nstead it should be something that can be run in-)-2.711 F 0 Cg EP +(nstead it should be something that can be run in-)-2.711 F .124 +(dependently of the interpreter)111 696 R 2.624(,t)-.4 G .124 +(his means that a lot of the checking that interpreted languages do,) +-2.624 F .908(can be done once by the de)111 708 R -.15(ve)-.25 G(loper) +.15 E 3.409(,b)-.4 G .909(efore shipping the app, as opposed to e)-3.409 +F -.15(ve)-.25 G .909(ry time the pro-).15 F +(gram is run, which brings do)111 720 Q(wn performance.)-.25 E 0 Cg EP %%Page: 12 12 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF(-12-)297.67 48 Q .124 -(dependently of the interpreter)111 84 R 2.624(,t)-.4 G .124 -(his means that a lot of the checking that interpreted languages do,) --2.624 F .908(can be done once by the de)111 96 R -.15(ve)-.25 G(loper) -.15 E 3.409(,b)-.4 G .909(efore shipping the app, as opposed to e)-3.409 -F -.15(ve)-.25 G .909(ry time the pro-).15 F -(gram is run, which brings do)111 108 Q(wn performance.)-.25 E/F1 10 -/Times-Bold@0 SF 2.5(2.10.4. Integration)111 132 R(with C, via a C API) -2.5 E 2.5(2.10.4.1. C)111 156 R(API)2.5 E F0 -1.1(Yo)111 171.6 S 2.592 -(us)1.1 G .092(hould be able to e)-2.592 F -.15(xe)-.15 G .092 -(cute a string of Zipp).15 F 2.592(yc)-.1 G .092 -(ode in C using a library that is link)-2.592 F .092(ed with inter)-.1 F -(-)-.2 E(preter)111 183.6 Q 2.5(.T)-.55 G(his could allo)-2.5 E 2.5(wZ) --.25 G(ipp)-2.5 E 2.5(yt)-.1 G 2.5(ob)-2.5 G 2.5(eu)-2.5 G -(sed as a con\214guration language lik)-2.5 E 2.5(eL)-.1 G(ua.)-2.5 E F1 -2.5(2.11. Desirable)111 219.6 R(featur)2.5 E(es)-.18 E F0(If time allo) -111 235.2 Q(ws I')-.25 E 2.5(dl)-.5 G(ik)-2.5 E 2.5(et)-.1 G 2.5(oa)-2.5 -G(dd some of the follo)-2.5 E +/F0 10/Times-Roman@0 SF(-12-)297.67 48 Q/F1 10/Times-Bold@0 SF 2.5 +(2.10.4. Integration)111 84 R(with C, via a C API)2.5 E 2.5(2.10.4.1. C) +111 108 R(API)2.5 E F0 -1.1(Yo)111 123.6 S 2.592(us)1.1 G .092 +(hould be able to e)-2.592 F -.15(xe)-.15 G .092(cute a string of Zipp) +.15 F 2.592(yc)-.1 G .092(ode in C using a library that is link)-2.592 F +.092(ed with inter)-.1 F(-)-.2 E(preter)111 135.6 Q 2.5(.T)-.55 G +(his could allo)-2.5 E 2.5(wZ)-.25 G(ipp)-2.5 E 2.5(yt)-.1 G 2.5(ob)-2.5 +G 2.5(eu)-2.5 G(sed as a con\214guration language lik)-2.5 E 2.5(eL)-.1 +G(ua.)-2.5 E F1 2.5(2.11. Desirable)111 171.6 R(featur)2.5 E(es)-.18 E +F0(If time allo)111 187.2 Q(ws I')-.25 E 2.5(dl)-.5 G(ik)-2.5 E 2.5(et) +-.1 G 2.5(oa)-2.5 G(dd some of the follo)-2.5 E (wing features to \215esh out the language:)-.25 E F1 2.5 -(2.11.1. Raylib)111 259.2 R(support)2.5 E F0 .321(Raylib is a po)111 -274.8 R .321(werful g)-.25 F .321(ame engine for C, ho)-.05 F(we)-.25 E +(2.11.1. Raylib)111 211.2 R(support)2.5 E F0 .321(Raylib is a po)111 +226.8 R .321(werful g)-.25 F .321(ame engine for C, ho)-.05 F(we)-.25 E -.15(ve)-.25 G 2.821(ri).15 G 2.821(th)-2.821 G .321 (as been ported to most languages under the)-2.821 F .333(sun due to ho) -111 286.8 R 2.832(ws)-.25 G .332(imple it is. If I ha)-2.832 F .632 -.15 +111 238.8 R 2.832(ws)-.25 G .332(imple it is. If I ha)-2.832 F .632 -.15 (ve t)-.2 H .332(ime, porting Raylib to Zipp).15 F 2.832(yw)-.1 G .332 (ould mak)-2.932 F 2.832(et)-.1 G .332(he language f)-2.832 F(ar)-.1 E -(more useable, as it can be use for graphics programming.)111 298.8 Q -(https://www)111 322.8 Q(.Raylib)-.65 E(.com/)-.4 E F1 2.5(2.11.2. V)111 -358.8 R(im integration.)-.37 E F0(Zipp)111 374.4 Q 3.248(ys)-.1 G .748 +(more useable, as it can be use for graphics programming.)111 250.8 Q +(https://www)111 274.8 Q(.Raylib)-.65 E(.com/)-.4 E F1 2.5(2.11.2. V)111 +310.8 R(im integration.)-.37 E F0(Zipp)111 326.4 Q 3.248(ys)-.1 G .748 (hould ha)-3.248 F 1.048 -.15(ve i)-.2 H(nte).15 E .748 (gration with the V)-.15 F .748 (im editor for syntax highlighting, this can be done via)-.6 F .128 -(generating a link)111 386.4 R .128(ed list of AST')-.1 F 2.628(st)-.55 +(generating a link)111 338.4 R .128(ed list of AST')-.1 F 2.628(st)-.55 G .128(hen colouring function calls a speci\214c colour)-2.628 F 2.628 -(,a)-.4 G .128(nd v)-2.628 F .128(ariables an-)-.25 F(other)111 398.4 Q -2.5(,e)-.4 G(tc, etc.)-2.5 E F1 2.5(2.11.3. LSP)111 422.4 R F0 3.054(AL) -111 438 S .554(SP \(language serv)-3.054 F .555 +(,a)-.4 G .128(nd v)-2.628 F .128(ariables an-)-.25 F(other)111 350.4 Q +2.5(,e)-.4 G(tc, etc.)-2.5 E F1 2.5(2.11.3. LSP)111 374.4 R F0 3.054(AL) +111 390 S .554(SP \(language serv)-3.054 F .555 (er protocol\), is used in code IDE')-.15 F 3.055(st)-.55 G 3.055(oa) -3.055 G .555(uto complete code for you, I')-3.055 F 3.055(dl)-.5 G(ik) --3.055 E(e)-.1 E .144(one for Zipp)111 450 R 1.444 -.65(y. A)-.1 H .144 +-3.055 E(e)-.1 E .144(one for Zipp)111 402 R 1.444 -.65(y. A)-.1 H .144 (lthough I am unsure as to ho).65 F 2.643(wt)-.25 G 2.643(ot)-2.643 G .143(ackle this. I belie)-2.643 F .443 -.15(ve a p)-.25 H .143 -(rogram called treesitter).15 F(can be helpful for this.)111 462 Q F1 -2.5(2.11.4. Netw)111 486 R(orking sock)-.1 E(ets)-.1 E F0 .101 -(If possible I')111 501.6 R 2.601(da)-.5 G .101(lso lik)-2.601 F 2.601 +(rogram called treesitter).15 F(can be helpful for this.)111 414 Q F1 +2.5(2.11.4. Netw)111 438 R(orking sock)-.1 E(ets)-.1 E F0 .101 +(If possible I')111 453.6 R 2.601(da)-.5 G .101(lso lik)-2.601 F 2.601 (et)-.1 G 2.601(op)-2.601 G(ro)-2.601 E .101 (vide bindings for unix netw)-.15 F .101(ork sock)-.1 F .101(ets, ho)-.1 F(we)-.25 E -.15(ve)-.25 G 2.602(rt).15 G .102(his w)-2.602 F .102 -(ould be v)-.1 F(ery)-.15 E(dif)111 513.6 Q .274(\214cult, as I w)-.25 F +(ould be v)-.1 F(ery)-.15 E(dif)111 465.6 Q .274(\214cult, as I w)-.25 F .274(ould need to allo)-.1 F 2.774(wZ)-.25 G(ipp)-2.774 E 2.774(ys)-.1 G .273(tucts to be directly con)-2.774 F -.15(ve)-.4 G .273 (rted to C stucts, when e).15 F -.15(xe)-.15 G(cut-).15 E -(ing ELF symbols \(P)111 525.6 Q(arts of an e)-.15 E -.15(xe)-.15 G -(cuable \214le\).).15 E F1 2.5(3. Design)111 561.6 R 2.5(3.1. Language) -111 585.6 R(speci\214cation)2.5 E F0(Lik)111 601.2 Q 2.698(ea)-.1 G .498 +(ing ELF symbols \(P)111 477.6 Q(arts of an e)-.15 E -.15(xe)-.15 G +(cuable \214le\).).15 E F1 2.5(3. Design)111 513.6 R 2.5(3.1. Language) +111 537.6 R(speci\214cation)2.5 E F0(Lik)111 553.2 Q 2.698(ea)-.1 G .498 -.15(ny o)-2.698 H .198(ther programming language Zipp).15 F 2.699(yn) -.1 G .199(eeds to ha)-2.699 F .499 -.15(ve a d)-.2 H .199 -(e\214ned syntax, as mentioned in the).15 F(objecti)111 613.2 Q -.15(ve) +(e\214ned syntax, as mentioned in the).15 F(objecti)111 565.2 Q -.15(ve) -.25 G 2.5(ss).15 G(ection of Analysis, I w)-2.5 E (ant the language to follo)-.1 E 2.5(wal)-.25 G(isp lik)-2.5 E 2.5(es) --.1 G(yntax.)-2.5 E 3.456(Ia)111 637.2 S .956(lso belie)-3.456 F 1.256 +-.1 G(yntax.)-2.5 E 3.456(Ia)111 589.2 S .956(lso belie)-3.456 F 1.256 -.15(ve h)-.25 H .955(igher order functions should be tak).15 F .955 (en as standard and man)-.1 F 3.455(yc)-.15 G .955(ore functions will) --3.455 F(use them.)111 649.2 Q F1 2.5(3.1.1. Data)111 685.2 R(types)2.5 -E 2.5(3.1.1.1. Basic)111 709.2 R(types)2.5 E F0(i32 - signed inte)111 -724.8 Q(ger of size 32 bits)-.15 E 0 Cg EP +-3.455 F(use them.)111 601.2 Q F1 2.5(3.1.1. Data)111 637.2 R(types)2.5 +E 2.5(3.1.1.1. Basic)111 661.2 R(types)2.5 E F0(i32 - signed inte)111 +676.8 Q(ger of size 32 bits)-.15 E(u32 - unsigned inte)111 700.8 Q +(ger of size 32 bits)-.15 E(i64 - signed inte)111 724.8 Q +(ger of size 64 bits)-.15 E 0 Cg EP %%Page: 13 13 %%BeginPageSetup BP %%EndPageSetup -/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 -(\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 1.005 -(generic - should be a)111 255.6 R -.2(vo)-.2 G 1.005(ided, remo).2 F +/F0 10/Times-Roman@0 SF(-13-)297.67 48 Q(u64 - unsigned inte)111 84 Q +(ger of size 64 bits)-.15 E(char - single ascii code)111 108 Q +(\215oat - standard C \215oat)111 132 Q/F1 10/Times-Bold@0 SF 2.5 +(3.1.1.2. Adv)111 168 R(anced types)-.1 E F0 +(function - a function that can be used)111 183.6 Q 1.005 +(generic - should be a)111 207.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 +(alues to functions)-.25 F(will cause man)111 219.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 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 +255.6 R F0(Arrays can be sho)111 271.2 Q 2.5(wl)-.25 G(ik)-2.5 E 2.5(es) +-.1 G(o:)-2.5 E(x:type[])111 295.2 Q -.4(Wi)111 319.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 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 +(All arrays are dynamic, represented by a link)111 343.2 Q +(ed list on the back end.)-.1 E F1 2.5(3.1.1.3.1. Strings)111 367.2 R F0 +(Strings, lik)111 382.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 418.8 R(in functions) +2.5 E 2.5(3.1.2.1. defun)111 442.8 R F0 +(\(defun a:type b:type returntype)111 458.4 Q(...)131 470.4 Q(...)131 +482.4 Q(\))111 506.4 Q .398(Returns a function that tak)111 530.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 .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 +(type.)111 542.4 Q F1 2.5(3.1.2.2. let)111 578.4 R F0(\(let x:type v)111 +594 Q(alue\))-.25 E(Creates constant x of type type to v)111 618 Q +(alue.)-.25 E F1 2.5(3.1.2.3. set)111 654 R F0(\(set x:type v)111 669.6 +Q(alue\))-.25 E(Creates/recreates the v)111 693.6 Q(ariable v)-.25 E +(alue of x to v)-.25 E(alue.)-.25 E F1 2.5(3.1.2.4. if/elif/else)111 +729.6 R 0 Cg EP %%Page: 14 14 %%BeginPageSetup BP %%EndPageSetup -/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 +/F0 10/Times-Roman@0 SF(-14-)297.67 48 Q(\(if condition function\))111 +84 Q(\(elif condition function\))111 108 Q(\(else function\))111 132 Q +(Ex)111 168 Q(ecutes the function pro)-.15 E +(vided if the condition is true.)-.15 E(Elif w)111 192 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 267.6 Q -.15(xe) +(vious if statement is f)-.25 E(alse.)-.1 E(Else e)111 216 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.5. f)111 303.6 R(or)-.25 E F0 -(\(for i \(condition\) function\))111 319.2 Q +-.1 E/F1 10/Times-Bold@0 SF 2.5(3.1.2.5. f)111 252 R(or)-.25 E F0 +(\(for i \(condition\) function\))111 267.6 Q (Runs the function while the condition is true, and increments i e)111 -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 +291.6 Q -.15(ve)-.25 G(ry time the function is called.).15 E F1 2.5 +(3.1.2.6. while)111 327.6 R F0(\(while condition function\))111 343.2 Q +(Runs the function if the condition is true, k)111 367.2 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 +403.2 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 +418.8 Q .763(Returns a function that tak)111 442.8 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 +(the \214le path of the elf.)111 454.8 Q F1(3.1.2.7.1.)111 478.8 Q 2.5 +(3.1.2.8. Arithmetic)111 514.8 R(operations)2.5 E F0(Simple operations) +111 530.4 Q(\(+ a b\) returns a + b)111 554.4 Q(\(- a b\) returns a - b) +111 578.4 Q(\(* a b\) returns a * b)111 602.4 Q(\(/ a b\) returns a / b) +111 626.4 Q F1 2.5(3.1.2.9. Comparison)111 662.4 R F0 +(All return true or f)111 678 Q(alse)-.1 E(\(= a b\) returns if a = b) +111 702 Q(\(!= a b\) returns if a != b)111 726 Q 0 Cg EP %%Page: 15 15 %%BeginPageSetup BP %%EndPageSetup -/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 +/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/F1 10/Times-Bold@0 SF +2.5(3.1.2.10. cast)111 192 R F0(\(cast a:generic type:char[]\))111 207.6 +Q(returns a b)111 231.6 Q(ut cast to data type type, which is a string.) +-.2 E F1 2.5(3.1.2.11. typeof)111 267.6 R F0(\(typeof a:generic\))111 +283.2 Q(returns in a string the type that v)111 307.2 Q(ariable A is.) +-.25 E F1 2.5(3.1.2.12. terminate)111 343.2 R F0 +(\(terminate error:error\))111 358.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 +382.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 418.8 R(etur)-.18 E(n)-.15 E F0 +(\(return a:type\))111 434.4 Q(Must be used in defun, returns "a" from \ +the function, "a" must be of the functions return type.)111 458.4 Q F1 +2.5(3.1.3. List)111 494.4 R(of k)2.5 E(eyw)-.1 E(ords)-.1 E F0(defun)111 +510 Q(for)111 534 Q(while)111 558 Q(if)111 582 Q(elif)111 606 Q(else)111 +630 Q -.15(ex)111 654 S(it).15 E(return)111 678 Q(symbol)111 702 Q(set) +111 726 Q 0 Cg EP %%Page: 16 16 %%BeginPageSetup BP %%EndPageSetup -/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 +/F0 10/Times-Roman@0 SF(-16-)297.67 48 Q(let)111 84 Q/F1 10/Times-Bold@0 +SF 2.5(3.2. Memory)111 120 R(management)2.5 E F0 .54 +(Memory will be allocated when a v)111 135.6 R .54 +(ariable is initialized, and freed when the program stops.)-.25 F(Al-) +5.54 E(though this isn')111 147.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 +(rhead.).15 E F1 2.5(3.3. Questionnair)111 183.6 R 2.5(e2f)-.18 G +(or Rayn M)-2.75 E 2.5(3.3.1. Ho)111 207.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 +/Times-Italic@0 SF .745(\(5-6 points\))111.08 223.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 +(w)-.25 E(le)111 235.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 +111 247.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 271.2 R F0 .103 +(Although he does dislik)111 286.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 +(hem to be core parts of the language so I).15 F .863(will k)111 298.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) +(the language due to its abstract syntax.)111 310.8 Q(Ho)111 334.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) +358.8 Q -.15(ey)-.1 G -.1(wo).15 G(rd list is as \215o).1 E(ws:)-.25 E +(defun)111 382.8 Q(for)111 406.8 Q(while)111 430.8 Q(if)111 454.8 Q +(elif)111 478.8 Q(else)111 502.8 Q -.15(ex)111 526.8 S(it).15 E(return) +111 550.8 Q(symbol)111 574.8 Q(set)111 598.8 Q(let)111 622.8 Q F1 2.5 +(3.4. What)111 658.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 +(As mentioned before Zipp)111 674.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 +(yi)-.1 G 2.84(tself. I)-2.84 F(will try and k)111 686.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.4.1. What)111 722.4 R +(is C?)2.5 E 0 Cg EP %%Page: 17 17 %%BeginPageSetup BP %%EndPageSetup -/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 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 +/F0 10/Times-Roman@0 SF(-17-)297.67 48 Q 3.027(Cw)111 84 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 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 +(ep)-.1 G(rogram-)-3.026 E .067(ming lo)111 96 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 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 +(as used to create the unix operating)-.1 F .65(system which w)111 108 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 120 Q .377 (The language quickly caught on outside of bell labs after more a)111 -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 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 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 307.2 R .159 +144 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 156 R .102 +(as found to be able to do all the things that you could do in)-.1 F +(ASM ho)111 168 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 10/Times-Bold@0 SF 2.5(3.4.2. Wh)111 204 R +2.5(yi)-.15 G 2.5(sC)-2.5 G(?)-2.5 E F0 .469(As mentioned C can do an) +111 219.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 +231.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 243.6 R -.25(va)-.25 G 2.739(lt).25 G .239(he performance o\ +f handwritten ASM \(often beating it if you enable compiler optimisa-) +-2.739 F .159(tions\). It is this that mak)111 255.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 319.2 Q +(nd all programming languages, where)-2.659 F(speed is k)111 267.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.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 +-.2 G(ilable are present.).25 E F1 2.5(3.4.3. Ho)111 303.6 R 2.5(wi)-.1 +G 2.5(sC)-2.5 G(?)-2.5 E F0 3.214(Ci)111 319.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 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 +(gcc as it is generally standard in linux en)111 331.2 Q(vironments.)-.4 +E(Man)111 355.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 418.8 Q +G .209(nd gnu mak)-2.709 F .208(e. Both of them)-.1 F(ha)111 367.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 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 +(windo)111 379.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 F1 2.5(3.4.4. Libraries)111 415.2 R F0 +(The libraries I will use are the follo)111 430.8 Q(wing:)-.25 E 2.5(Cs) +111 454.8 S(tdlib)-2.5 E 2.5(Cu)111 478.8 S(nistd)-2.5 E 2.5(Ce)111 +502.8 S(rrno)-2.5 E(Unix de)111 526.8 Q(vice \214les)-.25 E(Zipp)111 +550.8 Q 2.5(ys)-.1 G(trings)-2.5 E(Zipp)111 574.8 Q 2.5(yg)-.1 G(raphs) +-2.5 E(Zipp)111 598.8 Q 2.5(ys)-.1 G(orts)-2.5 E +(Addition libraries \(may not be implemented\):)111 622.8 Q(Raylib)111 +646.8 Q 2.5(Cs)111 670.8 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.4.5. Modularization)111 706.8 R F0 2.062 -.8 +(To m)111 722.4 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 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.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 +/F0 10/Times-Roman@0 SF(-18-)297.67 48 Q +(coming impossible to edit code.)111 84 Q +(The \214le layout looks as follo)111 108 Q(ws:)-.25 E(PLA)111 132 Q +(CE HERE)-.4 E .712(As you can see this is split up o)111 156 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 +-.15(ve)-.15 G(r).15 E(~500 lines of code. This is to k)111 168 Q(eep e) +-.1 E -.15(ve)-.25 G(rything as easy to manage as possible.).15 E .562 +(This le)111 192 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 231.6 Q +(ithout it, \214les will be-)-3.062 F(come a mess that can')111 204 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 -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 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 463.2 Q +228 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 240 Q -.15(xe) +-.15 G(cutable.).15 E/F1 10/Times-Bold@0 SF 2.5(3.4.5.1. Build)111 288 R +(system)2.5 E F0 1.221(The entire project is being b)111 303.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 315.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 327.6 Q(Example of mak) +111 351.6 Q(e:)-.1 E(mak)111 375.6 Q 2.5(e-)-.1 G(j2)-2.5 E(This will b) +111 399.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 423.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 435.6 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 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 +try compiling with clang and tcc, to compare performance.)111 459.6 Q F1 +2.5(3.5. T)111 495.6 R(ime table)-.18 E F0 .174 +(The \214rst step is to tackle the interpreter)111 511.2 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 550.8 R -.15 -(xe)-.15 G .597(cute Zipp).15 F(y)-.1 E(code ho)111 562.8 Q(we)-.25 E + \214nished, after this point you should be able to e)111 523.2 R -.15 +(xe)-.15 G .597(cute Zipp).15 F(y)-.1 E(code ho)111 535.2 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 586.8 R .124(xt step is zp)-.15 F .125 +-2.5 E .124(The ne)111 559.2 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 598.8 +(his should be ran before code is shipped)-2.625 F(to the user)111 571.2 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 622.8 R 3.216(ez)-.1 G -.1(py)-3.216 G .716 +(Finally I need to mak)111 595.2 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 634.8 Q 2.5(wb)-.25 G +2.016 -.65(y, a)-.1 H .716(nd a).65 F(fe)111 607.2 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 658.8 Q(ws it is at this point that I will write a Raylib library a\ +111 631.2 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 +667.2 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 682.8 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 +(imple)-3.903 E(steps:)111 694.8 Q F1 -.18(re)111 718.8 S +(ad the text \214le \(strip line br).18 E(eaks and tabs\))-.18 E 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 +/F0 10/Times-Roman@0 SF(-19-)297.67 48 Q/F1 10/Times-Bold@0 SF(cr)111 84 +Q(eate an empty link)-.18 E(ed list)-.1 E .934(get the \214rst expr)111 +99.6 R .934(ession fr)-.18 F .933 +(om the text \214le \(with be encapsulated with)-.18 F F0("\(\)"")3.433 +E F1 .933(get the function)3.433 F(call and its ar)111 111.6 Q +(gs into a tok)-.1 E(en)-.1 E(if the ar)111 127.2 Q +(guments of the function ar)-.1 E 2.5(et)-.18 G(her)-2.5 E 2.5(eo)-.18 G +(wn function call, then)-2.6 E F0(con)2.5 E -.15(ve)-.4 G +(rt them into a tok).15 E(en")-.1 E F1(set that tok)111 142.8 Q +(en as the ar)-.1 E(gument in the \214rst tok)-.1 E(en)-.1 E +(append the r)111 158.4 Q(oot tok)-.18 E(en to the link)-.1 E(ed list) +-.1 E -.18(re)111 174 S(peat until the text \214le string is empty).18 E +(allocate memory f)111 189.6 Q(or the pr)-.25 E(ogram and pr)-.18 E +(epar)-.18 E 2.5(et)-.18 G(he exection step)-2.5 E +(at the start of the link)111 205.2 Q(ed list tra)-.1 E -.1(ve)-.25 G +(rse to the bottem of the tr).1 E(ee)-.18 E F0(\(made of tok)2.5 E +(ens\)")-.1 E F1(execute the lo)111 220.8 Q(west tok)-.1 E(en)-.1 E -.18 +(re)111 236.4 S(peat until all tok).18 E(ens including the r)-.1 E +(oot ha)-.18 E .2 -.1(ve b)-.25 H(een executed).1 E(mo)111 252 Q .2 -.1 +(ve t)-.1 H 2.5(ot).1 G(he next node of the link)-2.5 E(ed list)-.1 E +-.18(re)111 267.6 S(peat until the link).18 E(ed list is empty)-.1 E F0 +-.4(Wi)111 295.2 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 307.2 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 319.2 Q(s\).) +-.55 E(PUT SOME FLO)111 343.2 Q 2.5(WC)-.35 G(HAR)-2.5 E(TS HERE)-.6 E +F1 2.5(4. T)111 379.2 R(echnical Solution)-.92 E 2.5(5. T)111 403.2 R +(esting)-.92 E 2.5(6. Ev)111 427.2 R(aluation)-.1 E 0 Cg EP %%Trailer end %%EOF |