diff options
Diffstat (limited to 'comp/lucas-standen-NEA/writeup/coverpage.ps')
-rw-r--r-- | comp/lucas-standen-NEA/writeup/coverpage.ps | 721 |
1 files changed, 418 insertions, 303 deletions
diff --git a/comp/lucas-standen-NEA/writeup/coverpage.ps b/comp/lucas-standen-NEA/writeup/coverpage.ps index f328a24..6cf0175 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: Mon May 6 10:51:43 2024 +%%CreationDate: Mon May 6 12:02:29 2024 %%DocumentNeededResources: font Times-Bold %%+ font Times-Italic %%+ font Times-Roman @@ -8,7 +8,7 @@ %%DocumentSuppliedResources: file ast.ps %%+ procset grops 1.23 0 %%LanguageLevel: 2 -%%Pages: 8 +%%Pages: 9 %%PageOrder: Ascend %%DocumentMedia: Default 612 792 0 () () %%Orientation: Portrait @@ -274,329 +274,447 @@ BP /F0 12/Times-Bold@0 SF(NEA co)264.462 123 Q -.12(ve)-.12 G 3(rp).12 G (age)-3 E/F1 10/Times-Italic@0 SF(Lucas standen)277.25 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. Analysis)111 237 R 2.5(1.1. The)111 261 R(curr) -2.5 E(ent pr)-.18 E(oblem)-.18 E F2 -.15(Fo)136 276.6 S 2.948(rg).15 G -.448(eneral small and simple projects, I write in C. Ho)-2.948 F(we)-.25 -E -.15(ve)-.25 G 2.947(rt).15 G .447(his leads to hours of deb)-2.947 F -(ug-)-.2 E .26(ging due to se)111 288.6 R(gf)-.15 E .26(aults, and memo\ -ry leaks. Due to the languages manual memory management the)-.1 F .362 -(programmer is required to kno)111 300.6 R 2.862(ws)-.25 G 2.861(om) --2.862 G .361(uch information about the hardw)-2.861 F .361(are the)-.1 -F 2.861(yw)-.15 G .361(rite for)-2.861 F 2.861(,a)-.4 G .361(nd the) --2.861 F(second an)111 312.6 Q(ything goes wrong, it is v)-.15 E +/Times-Bold@0 SF 2.5(1. Reading)111 237 R(this document)2.5 E F2 +(This document is writen in rof)136 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 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 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.676(An)111 348.6 S .176(ote on formating of the rof)-2.676 F .176 +(f, the te)-.25 F .175 +(xt is limited to 100 characters per line and is writen in plan)-.15 F +.337(ascii, no utf8 emojis and the lik)111 360.6 R .337 +(e. code snippets are left in plain te)-.1 F .338 +(xt, and the full section of code)-.15 F(the)111 372.6 Q 2.89(ya)-.15 G +.39(re from should be link)-2.89 F .39(ed abo)-.1 F .69 -.15(ve t)-.15 H +.39(hem; assuming the).15 F 2.89(ya)-.15 G .39 +(re from a \214le and not a small e)-2.89 F(xam-)-.15 E .181(ple. An)111 +384.6 R 2.681(yc)-.15 G .182(omments on code snippets will be remo) +-2.681 F -.15(ve)-.15 G 2.682(df).15 G .182(or the sak)-2.682 F 2.682 +(eo)-.1 G 2.682(fr)-2.682 G .182(eadability in the rof)-2.682 F 2.682 +(fd)-.25 G(ocu-)-2.682 E(ment, ho)111 396.6 Q(we)-.25 E -.15(ve)-.25 G +2.5(rt).15 G(he can still be found in the ra)-2.5 E 2.5<778c>-.15 G +(les.)-2.5 E F3 2.5(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)136 472.2 S 2.948(rg) +.15 G .448(eneral small and simple projects, I write in C. Ho)-2.948 F +(we)-.25 E -.15(ve)-.25 G 2.947(rt).15 G .447(his leads to hours of deb) +-2.947 F(ug-)-.2 E .26(ging due to se)111 484.2 R(gf)-.15 E .26(aults, \ +and memory leaks. Due to the languages manual memory management the)-.1 +F .362(programmer is required to kno)111 496.2 R 2.862(ws)-.25 G 2.861 +(om)-2.862 G .361(uch information about the hardw)-2.861 F .361(are the) +-.1 F 2.861(yw)-.15 G .361(rite for)-2.861 F 2.861(,a)-.4 G .361(nd the) +-2.861 F(second 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 336.6 S(eed a language that stops me fr)-2.5 E -(om shooting myself in the f)-.18 E(oot)-.25 E F2 2.584(Ch)111 360.6 S +-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 372.6 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 384.6 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 396.6 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 408.6 Q -.1(wa)-.15 G -.65(y.).1 G F3 2.5(1.2. A)111 444.6 R -(solution)2.5 E/F4 10/Times-BoldItalic@0 SF(Zippy LANG)136.61 460.2 Q F2 -3.378(An)111 484.2 S -.15(ex)-3.378 G 3.378(tg).15 G .878 +(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)136.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 3.307(able. It)111 496.2 R +(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 508.2 R 2.724 +(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 520.2 S(gging tools.).2 E -(The goal of Zipp)111 544.2 Q 2.5(yi)-.1 G 2.5(st)-2.5 G 2.5(om)-2.5 G -(ak)-2.5 E 2.5(ec)-.1 G(odding easier)-2.5 E 2.5(,w)-.4 G -(hile remaining f)-2.5 E(ast, with a interpreter writen in C.)-.1 E F3 -2.5(1.3. Clients)111 580.2 R F2 1.194 -(In a project of this nature, the Client is e)136 595.8 R -.15(ve)-.25 G -1.194(ry programmer ali).15 F -.15(ve)-.25 G 3.694(;w).15 G 1.193 -(hich is a pretty lar)-3.694 F(ge)-.18 E 4.075(scope. T)111 607.8 R -4.075(on)-.8 G(arro)-4.075 E 4.075(wt)-.25 G 1.575(his do)-4.075 F 1.576 -(wn as much as possible, I will intervie)-.25 F 4.076(was)-.25 G 1.576 -(mall handful of people)-4.076 F(throughout the project, of dif)111 -619.8 Q(ferent skill le)-.25 E -.15(ve)-.25 G(ls.).15 E F3 2.5 -(1.3.1. Client)111 655.8 R(1, Amy C)2.5 E F2 .803(My \214rst client is \ -a friend of mine, Amy C, she is a con\214dent programmer who has com-) -136 671.4 R .037(pleted man)111 683.4 R 2.537(yc)-.15 G .038 -(omplicated projects. I am choosing her as a client as she can gi)-2.537 -F .338 -.15(ve m)-.25 H 2.538(et).15 G .038(echnical feed)-2.538 F -(back on my project and its function/utility)111 695.4 Q(.)-.65 E F3 2.5 -(1.3.2. Client)111 719.4 R(2, a technical user)2.5 E 2.5(,b)-.92 G -(ut not a pr)-2.7 E(ogrammer)-.18 E 0 Cg EP +.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(some stuf)136 84 Q 2.5(fa)-.25 G -(bout this person.)-2.5 E/F1 10/Times-Bold@0 SF 2.5(1.3.3. Client)111 -108 R(3, a normie)2.5 E F0(some stuf)136 123.6 Q 2.5(fa)-.25 G(bout ho) --2.5 E 2.5(wt)-.25 G(he normie \214nds the completed project.)-2.5 E F1 -2.5(1.3.4. Client)111 147.6 R(4, myself)2.5 E F0(I')136 163.2 Q .335 --.15(ve w)-.5 H .035(anted to tak).05 F 2.535(eo)-.1 G .034 -(ut a project lik)-2.535 F 2.534(et)-.1 G .034 -(his for a long long time, and this is the perfect oppor)-2.534 F(-)-.2 -E .597(tunity to do so, I will be assessing myself along the w)111 175.2 -R .598(ay of this, b)-.1 F .598(uilding the project to my per)-.2 F(-) --.2 E(sonal speci\214cation.)111 187.2 Q F1 2.5(1.4. Examples)111 223.2 -R(of similar pr)2.5 E(ojects)-.18 E F0 .676(As Zipp)136 238.8 R 3.176 -(yw)-.1 G .676(ill be interpreted, I should compare it to other such la\ -nguages; trying to com-)-3.176 F(pare it to C++/rust/go, isn')111 250.8 -Q 2.5(th)-.18 G(elpful as the)-2.5 E 2.5(ya)-.15 G(re so v)-2.5 E -(ery dif)-.15 E(ferent in the w)-.25 E(ay the)-.1 E 2.5(yf)-.15 G -(unction.)-2.5 E(Zipp)111 274.8 Q 2.724(yi)-.1 G 2.724(sb)-2.724 G 2.724 -(yf)-2.724 G .224 -(ar not the \214rst language, and I'm only one person, so I can')-2.824 -F 2.724(te)-.18 G .224(xpect to beat others in)-2.874 F -2.15 -.25(ev e) -111 286.8 T(rything.).25 E(Belo)111 310.8 Q 2.5(wa)-.25 G(re a fe)-2.5 E -2.5(wl)-.25 G(anguages that zipp)-2.5 E 2.5(ys)-.1 G -(hould be compared to throught de)-2.5 E -.15(ve)-.25 G(lopemen:).15 E -F1 2.5(1.4.1. Python)111 334.8 R F0 .273(Python is a high le)136 350.4 R --.15(ve)-.25 G 2.773(lO).15 G .272(OP language that w)-2.773 F .272 -(as designed in 1991. It w)-.1 F .272(as made to mak)-.1 F 2.772(ep)-.1 -G(ro-)-2.772 E .262 -(gramming easy while still being able to use some of C')111 362.4 R +/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 .07 +(At its lo)136 159.6 R .07 +(west de\214nition a PL is a set of speci\214c w)-.25 F .07 +(ords, that when gi)-.1 F -.15(ve)-.25 G 2.57(nt).15 G 2.57(oac)-2.57 G +.07(omputer in the)-2.57 F .656(right order ha)111 171.6 R .957 -.15 +(ve a r)-.2 H .657(eproducible beha).15 F(viour)-.2 E 3.157(.Am)-.55 G +.657(ore human w)-3.157 F .657(ay of saying that, w)-.1 F .657 +(ould be its ho)-.1 F(w)-.25 E(we control computers.)111 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 .468 +(When someone is looking at code it can often be seen as just that, ho) +136 223.2 R(we)-.25 E -.15(ve)-.25 G 2.967(rt).15 G .467(here are hun-) +-2.967 F .41(dreds of languages that all tak)111 235.2 R 2.91(et)-.1 G +.411(he idea of "code" in v)-2.91 F .411(ery dif)-.15 F .411(ferent w) +-.25 F .411(ays. Some are designed for)-.1 F .913(speci\214c hardw)111 +247.2 R .912(are, some are designed for making general use programs whi\ +le others are highly)-.1 F 2.655(specialized. It)111 259.2 R .156 +(is important to see "code", as more than just one o)2.655 F -.15(ve) +-.15 G .156(rarching term and instead see).15 F +(where 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 1.008 +(Before I start to design a language i should \214rst \214nd e)136 334.8 +R 1.007(xamples of others and \214nd what i)-.15 F -.1(wa)111 346.8 S +(nt my language to be lik).1 E(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 +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 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 454.8 R F0 .272(Python is a high le)136 470.4 R +-.15(ve)-.25 G 2.772(lO).15 G .272(OP language that w)-2.772 F .272 +(as designed in 1991. It w)-.1 F .273(as made to mak)-.1 F 2.773(ep)-.1 +G(ro-)-2.773 E .262 +(gramming easy while still being able to use some of C')111 482.4 R 2.762(sf)-.55 G .262(unctions. Although it has become stan-)-2.762 F -(dard for man)111 374.4 Q 2.5(yu)-.15 G(se cases, it is slo)-2.5 E 2.5 +(dard 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 398.4 Q(.p)-.65 E(ython.or)-.1 E(g/)-.18 E(Zipp)111 -422.4 Q 3.951(ys)-.1 G 1.451(hould tak)-3.951 F 3.951(ep)-.1 G 1.451 -(ythons high le)-4.051 F -.15(ve)-.25 G 3.951(la).15 G 1.451 -(bstractions, as the)-3.951 F 3.951(ym)-.15 G(ak)-3.951 E 3.951(ep)-.1 G -1.45(rograming v)-3.951 F 1.45(ery easy and it)-.15 F -(should try and tak)111 434.4 Q 2.5(en)-.1 G -(otes from its libaries as the)-2.5 E 2.5(ya)-.15 G -(re mostly well writen, and well documented.)-2.5 E F1 2.5(1.4.2. Lisp) -111 458.4 R F0 .549(Lisp is the second e)136 474 R -.15(ve)-.25 G 3.049 -(rp).15 G .549(rogramming language, de)-3.049 F -.15(ve)-.25 G .549 -(loped at MiT).15 F 3.049(,i)-.74 G 3.05(ti)-3.049 G 3.05(st)-3.05 G .55 -(he \214rst functional)-3.05 F 1.45(language, creating man)111 486 R -3.95(yc)-.15 G 1.45(ommon features lik)-3.95 F 3.95(eh)-.1 G 1.45 -(igher order functions, recursion, and g)-3.95 F(arbage)-.05 E 1.68 -(collection. It is generally not used an)111 498 R 1.681 -(ymore as it feels old compared to other functional lan-)-.15 F -(guages, lik)111 510 Q 2.5(eo)-.1 G(caml or hask)-2.5 E(ell.)-.1 E -(https://lisp-lang.or)111 534 Q(g/)-.18 E(Zipp)111 558 Q 3.393(ys)-.1 G -.893(hould try to tak)-3.393 F 3.393(ea)-.1 G .893 -(lot from the syntax of lisp, \(\) mak)-3.393 F 3.392(ei)-.1 G 3.392(te) --3.392 G .892(asy to see what parts of code)-3.392 F(will ef)111 570 Q +(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 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 578.4 R F0 .55(Lisp is the second e)136 594 R -.15 +(ve)-.25 G 3.049(rp).15 G .549(rogramming language, de)-3.049 F -.15(ve) +-.25 G .549(loped at MiT).15 F 3.049(,i)-.74 G 3.049(ti)-3.049 G 3.049 +(st)-3.049 G .549(he \214rst functional)-3.049 F 1.45 +(language, creating man)111 606 R 3.95(yc)-.15 G 1.45 +(ommon features lik)-3.95 F 3.95(eh)-.1 G 1.45 +(igher order functions, recursion, and g)-3.95 F(arbage)-.05 E 1.42 +(collection. It is generally not used an)111 618 R 3.919(ym)-.15 G 1.419 +(ore as it feels old compared to other functional lan-)-3.919 F +(guages, 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(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(1.4.3. P)111 594 R(erl)-.2 E F0 .038(Perl is scripting language des\ -igned for use in linux, when bash is too slo)136 609.6 R 1.339 -.65 -(w, o)-.25 H 2.539(rn).65 G .039(ot suited for)-2.539 F .934(the job)111 -621.6 R 3.434(.P)-.4 G .934 -(erl is often described as the glue of the uni)-3.434 F -.15(ve)-.25 G -.933(rse \(see xkcd https://3d.xkcd.com/224/\).).15 F -(Its syntax is quite strange ho)111 633.6 Q(we)-.25 E -.15(ve)-.25 G 2.5 +2.5(2.4.1.3. P)111 714 R(erl)-.2 E F0 .038(Perl is scripting language d\ +esigned for use in linux, when bash is too slo)136 729.6 R 1.338 -.65 +(w, o)-.25 H 2.538(rn).65 G .038(ot suited for)-2.538 F 0 Cg EP +%%Page: 3 3 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(-3-)300.17 48 Q .933(the job)111 84 R 3.433(.P) +-.4 G .934(erl is often described as the glue of the uni)-3.433 F -.15 +(ve)-.25 G .934(rse \(see xkcd https://3d.xkcd.com/224/\).).15 F +(Its 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 657.6 Q(.perl.or)-.65 E(g/)-.18 E(Zipp)111 681.6 Q -2.805(ys)-.1 G .305(hould tak)-2.805 F 2.805(ef)-.1 G .305(rom perls mi\ -nimalisum, it is a small language that is of a similar size to bash) --2.805 F .407(or zsh, while feeling closer to p)111 693.6 R .406 -(ython. If zipp)-.1 F 2.906(yc)-.1 G .406(an achie)-2.906 F .706 -.15 -(ve a s)-.25 H .406(imilar small size, while remaining).15 F(po)111 -705.6 Q(werful I will be happ)-.25 E -.65(y.)-.1 G 0 Cg EP -%%Page: 3 3 +(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 minimal\ +ism, it is a small language that is of a similar size to bash)-3.083 F +.406(or zsh, while feeling closer to p)111 156 R .406(ython. If zipp)-.1 +F 2.906(yc)-.1 G .406(an achie)-2.906 F .706 -.15(ve a s)-.25 H .407 +(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 +.663(Gleam is a modern language releasing in the past 5 years. It is hi\ +ghly functional, with no)136 243.6 R .228(mutable data, no traditional \ +loops. Instead recursion can be used to replace alot of these features.) +111 255.6 R .947(Gleam compiles to erlang/Beam bytecode, much lik)111 +267.6 R 3.447(ej)-.1 G -.2(av)-3.447 G 3.447(at)-.05 G 3.447(ot)-3.447 G +.946(he jvm, and doing this has made)-3.447 F(Gleam a highly scalable l\ +anguage with good library support out the box.)111 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 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 363.6 R(ell)-.1 E F0 +(Hask)136 379.2 Q 1.186(ell is another modern functional language kno) +-.1 F 1.185(wn for being v)-.25 F 1.185(ery complicated, ho)-.15 F(w-) +-.25 E -2.15 -.25(ev e)111 391.2 T 2.5(ri).25 G(ncredibly po)-2.5 E +(werful. Its syntax feels v)-.25 E +(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 451.2 Q F1 2.5(2.4.2.3. Har)111 +475.2 R(e)-.18 E F0 .718(Hare w)136 490.8 R .717(as designed to be a 10\ +0 year language, and thus stability is its main goal, it is not)-.1 F +.683(set to ha)111 502.8 R .983 -.15(ve a s)-.2 H .683(yntax change an) +.15 F 3.183(yt)-.15 G .683 +(ime soon, and it has strong emphasis on memory safety)-3.183 F 3.184 +(.I)-.65 G 3.184<748c>-3.184 G(ts)-3.184 E(into the same part of the te\ +ch stack as C, and thus it can be used for some v)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 2.805(It)111 562.8 S .305 +(hink Zipp)-2.805 F 2.805(ys)-.1 G .305(hould ha)-2.805 F .605 -.15 +(ve a s)-.2 H .305(trong emphasis on stability).15 F 2.804(,t)-.65 G +2.804(om)-2.804 G(an)-2.804 E 2.804(yt)-.15 G .304(imes ha)-2.804 F .604 +-.15(ve i s)-.2 H -.15(eg).15 G -.1(fa).15 G .304(ulted do to a).1 F +(tin)111 574.8 Q 3.165(ym)-.15 G(istak)-3.165 E .665(e. Zipp)-.1 F 3.165 +(ys)-.1 G .665(hould also look to Hare small size, you can b)-3.165 F +.665(uy a cop)-.2 F 3.166(yo)-.1 G 3.166(fH)-3.166 G .666(are on a) +-3.166 F F1(SIN-)3.166 E(GLE 3 1/2')111 586.8 Q 2.5('F)-.63 G(LOPPY)-2.5 +E 2.5(2.4.3. What)111 622.8 R(should be tak)2.5 E(en away fr)-.1 E +(om these languages?)-.18 E F0 2.784(Iw)136 638.4 S .284 +(as already leaning to)-2.884 F -.1(wa)-.25 G .283 +(rds functional programming when I started this project ho).1 F(we)-.25 +E -.15(ve)-.25 G(r).15 E(no)111 650.4 Q 2.81(wIb)-.25 G(elie)-2.81 E .61 +-.15(ve i)-.25 H(t').15 E 2.81(st)-.55 G .31 +(he only option for producing safe applications. Zipp)-2.81 F 2.81(yw) +-.1 G .31(ill be a functional lan-)-2.81 F +(guage with a strong emphasis on recursion.)111 662.4 Q 2.862(Ia)111 +686.4 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 698.4 Q .916 +(And \214nally I think that syntax should be inspired by Lisp, although\ + Lisp itself can be a messy)111 722.4 R 0 Cg EP +%%Page: 4 4 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF(-3-)300.17 48 Q/F1 10/Times-Bold@0 SF 2.5 -(1.5. Questionnair)111 84 R(es)-.18 E F0 2.133 -(It is important to get feedback from end users, so I will tak)136 99.6 +/F0 10/Times-Roman@0 SF(-4-)300.17 48 Q .198 +(language, with the right changes I am con\214dent that I can mak)111 84 +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 96 Q(.)-.65 E/F1 10/Times-Bold@0 +SF 2.5(2.5. Clients)111 132 R F0 1.194 +(In a project of this nature, the Client is e)136 147.6 R -.15(ve)-.25 G +1.194(ry programmer ali).15 F -.15(ve)-.25 G 3.694(;w).15 G 1.194 +(hich is a pretty lar)-3.694 F(ge)-.18 E 4.076(scope. T)111 159.6 R +4.076(on)-.8 G(arro)-4.076 E 4.076(wt)-.25 G 1.576(his do)-4.076 F 1.576 +(wn as much as possible, I will intervie)-.25 F 4.075(was)-.25 G 1.575 +(mall handful of people)-4.075 F(throughout the project, of dif)111 +171.6 Q(ferent skill le)-.25 E -.15(ve)-.25 G(ls.).15 E F1 2.5 +(2.5.1. Client)111 207.6 R(1, Amy C)2.5 E F0 .803(My \214rst client is \ +a friend of mine, Amy C, she is a con\214dent programmer who has com-) +136 223.2 R .038(pleted man)111 235.2 R 2.538(yc)-.15 G .038 +(omplicated projects. I am choosing her as a client as she can gi)-2.538 +F .337 -.15(ve m)-.25 H 2.537(et).15 G .037(echnical feed)-2.537 F +(back on my project and its function/utility)111 247.2 Q(.)-.65 E F1 2.5 +(2.5.2. Client)111 271.2 R(2, a technical user)2.5 E 2.5(,b)-.92 G +(ut not a pr)-2.7 E(ogrammer)-.18 E F0(some stuf)136 286.8 Q 2.5(fa)-.25 +G(bout this person.)-2.5 E F1 2.5(2.5.3. Client)111 310.8 R(3, a normie) +2.5 E F0(some stuf)136 326.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 350.4 R(4, myself)2.5 E F0(I')136 366 Q .334 -.15(ve w)-.5 H .034 +(anted to tak).05 F 2.534(eo)-.1 G .034(ut a project lik)-2.534 F 2.534 +(et)-.1 G .034(his for a long long time, and this is the perfect oppor) +-2.534 F(-)-.2 E .598 +(tunity to do so, I will be assessing myself along the w)111 378 R .597 +(ay of this, b)-.1 F .597(uilding the project to my per)-.2 F(-)-.2 E +(sonal speci\214cation.)111 390 Q F1 2.5(2.6. Questionnair)111 438 R(es) +-.18 E F0 2.133 +(It is important to get feedback from end users, so I will tak)136 453.6 R 4.633(em)-.1 G 2.133(ultiple questionnaires)-4.633 F .852(throughout \ the project. I will then use them to slightly edit the requirements of \ -my project this)111 111.6 R(should mak)111 123.6 Q 2.5(et)-.1 G +my project this)111 465.6 R(should mak)111 477.6 Q 2.5(et)-.1 G (he \214nal outcome more helpful and what people w)-2.5 E(ant.)-.1 E -(In the section bello)111 147.6 Q 2.5(wy)-.25 G +(In the section bello)111 501.6 Q 2.5(wy)-.25 G (ou will \214nd questionnaires from the analyses stage of my project.) --2.5 E F1 2.5(1.5.1. Questionnair)111 171.6 R 2.5(e1f)-.18 G(or Amy C) --2.75 E/F2 10/Times-BoldItalic@0 SF([30th April 2024])111.87 195.6 Q -(answ)3.81 E(ered by amy)-.1 E 2.5(,s)-.37 G(ee pull request she left) --2.5 E F1 2.5(1.5.1.1. What)111 219.6 R(do y)2.5 E +-2.5 E F1 2.5(2.6.1. Questionnair)111 525.6 R 2.5(e1f)-.18 G(or Amy C) +-2.75 E/F2 10/Times-BoldItalic@0 SF([30th April 2024])111.87 549.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 573.6 R(do y)2.5 E (ou \214nd the most important in a language? \(eg: speed, r)-.25 E -(eadability\))-.18 E F0(Speed, readability)136 235.2 Q 2.5(,d)-.65 G(eb) +(eadability\))-.18 E F0(Speed, readability)136 589.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 F1 3.167(1.5.1.2. What)111 259.2 R .667(tools ar)3.167 F 3.167(ei)-.18 +G F1 3.167(2.6.1.2. What)111 613.2 R .667(tools ar)3.167 F 3.167(ei)-.18 G .668(mportant f)-3.167 F .668(or a language to ha)-.25 F -.1(ve)-.25 G 3.168(?\().1 G .668(eg: pkg-manager)-3.168 F 3.168(,I)-.92 G .668 -(DE integra-)-3.168 F(tion\))111 271.2 Q F0 1.141(IDE inte)136 286.8 R +(DE integra-)-3.168 F(tion\))111 625.2 Q F0 1.141(IDE inte)136 640.8 R 1.141(gration \(things lik)-.15 F 3.641(et)-.1 G 1.141 (ab complete and deb)-3.641 F 1.141(ugging tools\), a package manager) -.2 F 3.64(,a)-.4 G(nd)-3.64 E (the ability to interact with the user through the command line easily) -111 298.8 Q(.)-.65 E F1 3.363(1.5.1.3. What)111 322.8 R(featur)3.363 E +111 652.8 Q(.)-.65 E F1 3.363(2.6.1.3. What)111 676.8 R(featur)3.363 E .863(es do y)-.18 F .863(ou lik)-.25 F 3.363(ef)-.1 G -.18(ro)-3.363 G 3.363(mo).18 G .863(ther languages \(eg: C')-3.363 F 3.363(sa)-.37 G(dv) --3.363 E .863(anced memory man-)-.1 F(agement, hask)111 334.8 Q(ell')-.1 +-3.363 E .863(anced memory man-)-.1 F(agement, hask)111 688.8 Q(ell')-.1 E 2.5(st)-.37 G(erse syntax\))-2.5 E F0 .26(The ability to pass the mem\ -ory reference of an object or function and a collection of b)136 350.4 R -(uilt-)-.2 E(in or standard functions lik)111 362.4 Q 2.5(e")-.1 G -(print", "split", or "sort".)-2.5 E F1 2.5(1.5.1.4. What)111 386.4 R -(do y)2.5 E(ou want to pr)-.25 E +ory reference of an object or function and a collection of b)136 704.4 R +(uilt-)-.2 E(in or standard functions lik)111 716.4 Q 2.5(e")-.1 G +(print", "split", or "sort".)-2.5 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 2.5 +(2.6.1.4. What)111 84 R(do y)2.5 E(ou want to pr)-.25 E (ogram in this language \(eg: websites, lo)-.18 E 2.5(wl)-.1 G -2.3 -.15 (ev e)-2.5 H 2.5(ls).15 G(ystems\))-2.5 E F0 -(Lightweight command line tools and web back ends.)136 402 Q F1 2.5 -(1.5.1.5. Do)111 426 R -.25(yo)2.5 G 2.5(ui).25 G +(Lightweight command line tools and web back ends.)136 99.6 Q F1 2.5 +(2.6.1.5. Do)111 123.6 R -.25(yo)2.5 G 2.5(ui).25 G (ntend to use graphics in the pr)-2.5 E(ograms y)-.18 E(ou write?)-.25 E -F0(No.)136 441.6 Q F1 2.5(1.5.1.6. W)111 465.6 R(ould y)-.75 E(ou pr) +F0(No.)136 139.2 Q F1 2.5(2.6.1.6. W)111 163.2 R(ould y)-.75 E(ou pr) -.25 E(efer a language that f)-.18 E(ocuses on ease of use, or po)-.25 E -(wer of the code?)-.1 E F0 2.5(Il)136 481.2 S(ik)-2.5 E 2.5(eag)-.1 G -(ood balance between the tw)-2.5 E(o.)-.1 E F1 2.5(1.5.1.7. What)111 -505.2 R(wer)2.5 E 2.5(ey)-.18 G(our last 3 pr)-2.75 E +(wer of the code?)-.1 E F0 2.5(Il)136 178.8 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 +202.8 R(wer)2.5 E 2.5(ey)-.18 G(our last 3 pr)-2.75 E (ojects? \(could they ha)-.18 E .2 -.1(ve b)-.25 H -(een written in Zippy?\)).1 E F0 2.938(Aw)136 520.8 S .438 +(een written in Zippy?\)).1 E F0 2.938(Aw)136 218.4 S .438 (ebsite, a small command-line tool and a midi k)-2.938 F -.15(ey)-.1 G -.439(board \(program runs on a Raspberry).15 F(Pi Pico\).)111 532.8 Q F1 -3.391(1.5.1.8. Ho)111 556.8 R 3.391(wm)-.1 G .891(any languages w)-3.391 +.439(board \(program runs on a Raspberry).15 F(Pi Pico\).)111 230.4 Q F1 +3.391(2.6.1.8. Ho)111 254.4 R 3.391(wm)-.1 G .891(any languages w)-3.391 F .891(ould y)-.1 F .891(ou use on a single pr)-.25 F .89 -(oject? \(could Zippy be used in)-.18 F -.25(yo)111 568.8 S -(ur codebase?\)).25 E F0 2.5(It)136 584.4 S +(oject? \(could Zippy be used in)-.18 F -.25(yo)111 266.4 S +(ur codebase?\)).25 E F0 2.5(It)136 282 S (ry to use as little languages in a project as possible, so lik)-2.5 E -(ely not in an e)-.1 E(xisting project.)-.15 E F1 2.5(1.5.1.9. Do)111 -608.4 R -.25(yo)2.5 G 2.5(uc).25 G(ar)-2.5 E 2.5(ef)-.18 G(or lo)-2.75 E +(ely not in an e)-.1 E(xisting project.)-.15 E F1 2.5(2.6.1.9. Do)111 +306 R -.25(yo)2.5 G 2.5(uc).25 G(ar)-2.5 E 2.5(ef)-.18 G(or lo)-2.75 E 2.5(wl)-.1 G -2.3 -.15(ev e)-2.5 H 2.5(lc).15 G(ontr)-2.5 E(ol, or w) -.18 E(ould y)-.1 E(ou pr)-.25 E(efer high le)-.18 E -.1(ve)-.15 G 2.5 -(la).1 G(bstractions?)-2.5 E F0 2.931(It)136 624 S .431(hink lo)-2.931 F -(w-le)-.25 E -.15(ve)-.25 G 2.931(lc).15 G .431(ontrol is v)-2.931 F +(la).1 G(bstractions?)-2.5 E F0 2.931(It)136 321.6 S .431(hink lo)-2.931 +F(w-le)-.25 E -.15(ve)-.25 G 2.931(lc).15 G .431(ontrol is v)-2.931 F .431(ery important, b)-.15 F .432(ut high-le)-.2 F -.15(ve)-.25 G 2.932 (la).15 G .432(bstractions are con)-2.932 F -.15(ve)-.4 G .432 -(nient, so a).15 F(good balance between the tw)111 636 Q 2.5(oi)-.1 G -2.5(sb)-2.5 G(est.)-2.5 E F1 4.181(1.5.1.10. W)111 660 R 1.681(ould y) +(nient, so a).15 F(good balance between the tw)111 333.6 Q 2.5(oi)-.1 G +2.5(sb)-2.5 G(est.)-2.5 E F1 4.181(2.6.1.10. W)111 357.6 R 1.681(ould y) -.75 F 1.681(ou be happy to de)-.25 F -.1(ve)-.15 G 1.681 (lop libraries f).1 F 1.681(or things that ar)-.25 F 1.68(en't alr)-.18 -F 1.68(eady imple-)-.18 F(mented \(eg: an SQL library\))111 672 Q F0 -(Potentially if it is simple enough to implement ne)136 687.6 Q 2.5(wt) --.25 G(hings.)-2.5 E F1 2.5(1.5.2. Notes)111 723.6 R(fr)2.5 E -(om questionnair)-.18 E 2.5(e1)-.18 G 0 Cg EP -%%Page: 4 4 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF(-4-)300.17 48 Q 2.994(Some of the k)136 84 R +F 1.68(eady imple-)-.18 F(mented \(eg: an SQL library\))111 369.6 Q F0 +(Potentially if it is simple enough to implement ne)136 385.2 Q 2.5(wt) +-.25 G(hings.)-2.5 E F1 2.5(2.6.2. Notes)111 421.2 R(fr)2.5 E +(om questionnair)-.18 E 2.5(e1)-.18 G F0 2.994(Some of the k)136 436.8 R 3.294 -.15(ey t)-.1 H 2.994(hings that I'm taking a).15 F -.1(wa)-.15 G 5.494(yf).1 G 2.995(rom this \214rst questionnaire, are my)-5.494 F .461 -(client/users initial needs and use cases. I think it')111 96 R 2.961 +(client/users initial needs and use cases. I think it')111 448.8 R 2.961 (sc)-.55 G .461(lear my language can be of assistance to my)-2.961 F -.842(client, Zipp)111 108 R 3.342(yw)-.1 G .843(ill be a good language \ -for web back ends and small command line tools, which)-3.342 F -(my client e)111 120 Q(xpressed interested in.)-.15 E 2.564<498c>111 144 -S .064(nd the f)-2.564 F .064(act my client is w)-.1 F .064(orried by e) --.1 F -.15(xe)-.15 G .064(cutable size interesting, ho).15 F(we)-.25 E --.15(ve)-.25 G 2.564(rI).15 G .063(doubt it will be an is-)-.001 F -(sue; a ballooning code-base is unlik)111 156 Q -(ely as only one person is writing the project.)-.1 E 2.56(Ia)111 180 S -2.56(ma)-2.56 G .06(lso taking on the f)-2.56 F .06 +.842(client, Zipp)111 460.8 R 3.342(yw)-.1 G .843(ill be a good languag\ +e for web back ends and small command line tools, which)-3.342 F +(my client e)111 472.8 Q(xpressed interested in.)-.15 E 2.564<498c>111 +496.8 S .064(nd the f)-2.564 F .064(act my client is w)-.1 F .064 +(orried by e)-.1 F -.15(xe)-.15 G .064(cutable size interesting, ho).15 +F(we)-.25 E -.15(ve)-.25 G 2.564(rI).15 G .063(doubt it will be an is-) +-.001 F(sue; a ballooning code-base is unlik)111 508.8 Q +(ely as only one person is writing the project.)-.1 E 2.56(Ia)111 532.8 +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 192 -S(ndler should be a priority).2 E 2.5(,p)-.65 G(erhaps the)-2.5 E 2.5 -(yc)-.15 G(ould be written in Zipp)-2.5 E 2.5(ya)-.1 G -(fter the interpreter is done.)-2.5 E/F1 10/Times-Bold@0 SF 2.5 -(1.5.3. The)111 228 R(\214rst elements of the pr)2.5 E(oject)-.18 E F0 -.173(At this stage I can say that I'm con\214dent in my project and its\ - scope. I ha)136 243.6 R .472 -.15(ve a g)-.2 H .172(oal in mind).15 F -(for it.)111 255.6 Q F1(The k)111 279.6 Q(ey things to tak)-.1 E 2.5(ea) --.1 G(way fr)-2.5 E(om this section ar)-.18 E(e:)-.18 E(----)111 303.6 Q -F0(Mak)2.5 E 2.5(eah)-.1 G(igh le)-2.5 E -.15(ve)-.25 G 2.5(ll).15 G +(ants good command line tools, so a pkg-manager and)-.1 F -.2(bu)111 +544.8 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.6.3. The)111 580.8 R +(\214rst elements of the pr)2.5 E(oject)-.18 E F0 .173(At this stage I \ +can say that I'm con\214dent in my project and its scope. I ha)136 596.4 +R .472 -.15(ve a g)-.2 H .172(oal in mind).15 F(for it.)111 608.4 Q F1 +(The k)111 632.4 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 656.4 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 327.6 Q F0 -.25(Ke)2.5 G +(ys)-.15 G(ituations.)-2.5 E F1(----)111 680.4 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 351.6 Q +(werful tools a)-.25 E -.25(va)-.2 G(ilable.).25 E F1(----)111 704.4 Q F0(Ensure the language is well supported with tools lik)2.5 E 2.5(eap) --.1 G(kg-manager)-2.5 E(.)-.55 E F1 2.5(1.6. Abstract)111 387.6 R -(data structur)2.5 E(es and ther)-.18 E 2.5(ei)-.18 G(mplementations) --2.5 E F0 1.241(In lar)136 403.2 R 1.241(ger projects, when a programme\ -r needs a data structure that the language the)-.18 F 3.742(ya)-.15 G -(re)-3.742 E(writing in doesn')111 415.2 Q 2.5(tp)-.18 G(ro)-2.5 E -(vide, the)-.15 E 2.5(yw)-.15 G(ill need to mak)-2.5 E 2.5(et)-.1 G -(heir o)-2.5 E(wn.)-.25 E(Bello)111 439.2 Q 2.5(wa)-.25 G(re a fe)-2.5 E -2.5(we)-.25 G(xamples of these data structures that C doesn')-2.65 E 2.5 -(ta)-.18 G(lready pro)-2.5 E(vide.)-.15 E F1 2.5(1.6.1. Link)111 463.2 R -(ed lists)-.1 E F0 .382(this is an alternati)136 478.8 R .682 -.15(ve i) --.25 H .381 -(mplementation of a list, where you store some data, and the memory).15 -F .043(address to the ne)111 490.8 R .044(xt node. Then you can mo)-.15 -F .344 -.15(ve t)-.15 H .044 +-.1 G(kg-manager)-2.5 E(.)-.55 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 2.5 +(2.7. Abstract)111 84 R(data structur)2.5 E(es and ther)-.18 E 2.5(ei) +-.18 G(mplementations)-2.5 E F0 1.241(In lar)136 99.6 R 1.241(ger proje\ +cts, when a programmer needs a data structure that the language the)-.18 +F 3.742(ya)-.15 G(re)-3.742 E(writing in doesn')111 111.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 135.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.7.1. Link)111 159.6 R(ed lists) +-.1 E F0 .382(this is an alternati)136 175.2 R .682 -.15(ve i)-.25 H +.381(mplementation of a list, where you store some data, and the memory) +.15 F .043(address to the ne)111 187.2 R .044(xt node. Then you can mo) +-.15 F .344 -.15(ve t)-.15 H .044 (hrough the list by reading the data then reading the).15 F -(data of the ne)111 502.8 Q(xt node, and then repeating until the 'ne) +(data of the ne)111 199.2 Q(xt node, and then repeating until the 'ne) -.15 E(xt' part of the node is empty)-.15 E(.)-.65 E 1.106 (In C this is easy to implement as you can \214nd a memory address v)111 -526.8 R 1.105(ery easily with '&' to \214nd)-.15 F .168 -(where a bit of data is stored. I will need to use a ')111 538.8 R .168 +223.2 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 235.2 R .168 (struct', which is a bit lik)-.55 F 2.669(eac)-.1 G .169(lass in C \(ho) --2.669 F(we)-.25 E -.15(ve)-.25 G(r).15 E(you can')111 550.8 Q 2.5(ta) +-2.669 F(we)-.25 E -.15(ve)-.25 G(r).15 E(you can')111 247.2 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 574.8 Q -.2(vo)136 -598.8 S(id *data; // the data of the node).2 E(ll *ne)136 622.8 Q -(xt; // the ne)-.15 E(xt node)-.15 E 2.5(}l)111 646.8 S(l;)-2.5 E .623 -(The pro')111 670.8 R 3.123(so)-.55 G 3.123(fal)-3.123 G(ink)-3.123 E +E 2.5(et)-.1 G(his:)-2.5 E(typedef struct ll {)111 271.2 Q -.2(vo)136 +295.2 S(id *data; // the data of the node).2 E(ll *ne)136 319.2 Q +(xt; // the ne)-.15 E(xt node)-.15 E 2.5(}l)111 343.2 S(l;)-2.5 E .623 +(The pro')111 367.2 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 682.8 Q(xt node.)-.15 E(Link) -111 706.8 Q 1.117(ed lists ha)-.1 F 1.417 -.15(ve a f)-.2 H 1.617 -.25 +(by changing the root node, or the ne)111 379.2 Q(xt node.)-.15 E(Link) +111 403.2 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 718.8 Q +(unless you store it on its o)111 415.2 Q (wn, you cant \214nd the length of it in a f)-.25 E(ast w)-.1 E(ay)-.1 E -(.)-.65 E 0 Cg EP -%%Page: 5 5 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF(-5-)300.17 48 Q .476(In my project I w)111 84 R -.476(ould lik)-.1 F 2.976(et)-.1 G 2.976(ou)-2.976 G .476(se link)-2.976 -F .475(ed list in the AST \(see later sections for info\), and to store) --.1 F(lists in the language.)111 96 Q/F1 10/Times-Bold@0 SF 2.5 -(1.6.2. Dictionaries)111 120 R F0 2.749(Ad)136 135.6 S .249(ictionary i\ -s a simple data structure that just stores, a bit of data, and a number\ - or string)-2.749 F(to identify it.)111 147.6 Q 2.5(Ad)5 G -(ictionary lik)-2.5 E 2.5(eal)-.1 G(ink)-2.5 E -(ed list can be implemented with a struct in c lik)-.1 E 2.5(es)-.1 G -(o:)-2.5 E(typedef struct dict {)111 171.6 Q -.2(vo)136 195.6 S +(.)-.65 E .476(In my project I w)111 439.2 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 451.2 Q F1 2.5(2.7.2. Dictionaries)111 475.2 +R F0 2.749(Ad)136 490.8 S .249(ictionary is a simple data structure tha\ +t just stores, a bit of data, and a number or string)-2.749 F +(to identify it.)111 502.8 Q 2.5(Ad)5 G(ictionary lik)-2.5 E 2.5(eal)-.1 +G(ink)-2.5 E(ed list can be implemented with a struct in c lik)-.1 E 2.5 +(es)-.1 G(o:)-2.5 E(typedef struct dict {)111 526.8 Q -.2(vo)136 550.8 S (id *data; // the data of the dict).2 E(int id; // the id of the dict) -136 219.6 Q 2.5(}d)111 243.6 S(ict;)-2.5 E .462 -(In my project I think I could use a link)111 267.6 R .461 +136 574.8 Q 2.5(}d)111 598.8 S(ict;)-2.5 E .462 +(In my project I think I could use a link)111 622.8 R .461 (ed list represent a zipp)-.1 F 2.961(yv)-.1 G .461 (ariable and an ID that i can use)-3.211 F -(to identify it, this could mak)111 279.6 Q 2.5(ee)-.1 G -.15(xe)-2.65 G +(to identify it, this could mak)111 634.8 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 2.5(1.7. Pr)111 315.6 R -(ototyping hard featur)-.18 E(es)-.18 E 2.5(1.7.1. Abstract)111 339.6 R +(ather than string v)-2.5 E(alues)-.25 E F1 2.5(2.8. Pr)111 670.8 R +(ototyping hard featur)-.18 E(es)-.18 E 2.5(2.8.1. Abstract)111 694.8 R (Syntax T)2.5 E -.18(re)-.74 G(es \(AST\) theory).18 E F0 .117 -(In a programming language man)136 355.2 R 2.617(ya)-.15 G .118 +(In a programming language man)136 710.4 R 2.617(ya)-.15 G .118 (bstract data types will be used to allo)-2.617 F 2.618(wt)-.25 G .118 -(he code to e)-2.618 F -.15(xe)-.15 G(-).15 E .967(cute, ho)111 367.2 R +(he code to e)-2.618 F -.15(xe)-.15 G(-).15 E .967(cute, ho)111 722.4 R (we)-.25 E -.15(ve)-.25 G 3.467(rI).15 G .966(think the hardest part of\ - this is an abstract syntax tree. This is a data structure)-.001 F .376 + this is an abstract syntax tree. This is a data structure)-.001 F 0 Cg +EP +%%Page: 7 7 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(-7-)300.17 48 Q .376 (that holds the code in an ordered form that can be analysed and e)111 -379.2 R -.15(xe)-.15 G .376(cuted in a simple w).15 F(ay)-.1 E 2.876(.I) +84 R -.15(xe)-.15 G .376(cuted in a simple w).15 F(ay)-.1 E 2.876(.I) -.65 G 2.876(ti)-2.876 G 2.876(sa)-2.876 G .084 -(tree structure, with the top node being a root and all lo)111 391.2 R -.084(wer nodes being things needed to calculate)-.25 F .393 -(the root. It can be used not only for code b)111 403.2 R .393 +(tree structure, with the top node being a root and all lo)111 96 R .084 +(wer nodes being things needed to calculate)-.25 F .393 +(the root. It can be used not only for code b)111 108 R .393 (ut also for mathematical e)-.2 F .394(xpressions. I think the easi-) --.15 F(est w)111 415.2 Q(ay to sho)-.1 E 2.5(wi)-.25 G 2.5(ti)-2.5 G 2.5 -(sv)-2.5 G(ia a mathematical e)-2.5 E(xample)-.15 E -.8(Ta)111 439.2 S -.2 -.1(ke t).8 H(he follo).1 E 2.5(we)-.25 G(xpression for e)-2.65 E -(xample:)-.15 E(\(1 + \(10 * \(3 - \(2 * 4\)\)\)\))111 463.2 Q 1.6 -.8 -(We k)111 487.2 T(no).8 E 2.5(wt)-.25 G(hat this is equal to -49)-2.5 E -(Ho)111 511.2 Q(we)-.25 E -.15(ve)-.25 G 2.917(rf).15 G .417 +-.15 F(est w)111 120 Q(ay to sho)-.1 E 2.5(wi)-.25 G 2.5(ti)-2.5 G 2.5 +(sv)-2.5 G(ia a mathematical e)-2.5 E(xample)-.15 E -.8(Ta)111 144 S .2 +-.1(ke t).8 H(he follo).1 E 2.5(we)-.25 G(xpression for e)-2.65 E +(xample:)-.15 E(\(1 + \(10 * \(3 - \(2 * 4\)\)\)\))111 168 Q 1.6 -.8 +(We k)111 192 T(no).8 E 2.5(wt)-.25 G(hat this is equal to -49)-2.5 E +(Ho)111 216 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 523.2 Q 1.6 -.8(To s)111 547.2 T(olv).8 E 2.5 -(et)-.15 G(his we use an AST \(abstract syntax tree\))-2.5 E .187 -(When you solv)111 571.2 R 2.687(et)-.15 G .187(hat e)-2.687 F .187 +(of order of operation)111 228 Q 1.6 -.8(To s)111 252 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 276 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 -583.2 Q 1.6 -.8(We c)111 607.2 T(an represent the steps as a tree lik).8 -E 2.5(es)-.1 G(o:)-2.5 E 14 14 121 121 -121 121 245.5 752.2 PBEGIN +288 Q 1.6 -.8(We c)111 312 T(an represent the steps as a tree lik).8 E +2.5(es)-.1 G(o:)-2.5 E 14 14 121 121 -121 121 245.5 457 PBEGIN %%BeginDocument: ast.ps %!PS-Adobe-3.0 %%Creator: GIMP PostScript file plug-in V 1.17 by Peter Kirchgessner @@ -2152,94 +2270,91 @@ showpage end %%EOF %%EndDocument -end PEND 0 Cg EP -%%Page: 6 6 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF(-6-)300.17 48 Q 1.266 -(As you can see, you need to e)136 84 R -.25(va)-.25 G 1.266 -(luate the e).25 F 1.265(xpression in the most brack)-.15 F 1.265 -(ets \214rst, then the)-.1 F(ne)111 96 Q(xt, and so on, w)-.15 E -(orking you w)-.1 E(ay up)-.1 E -1.1(Yo)111 120 S 2.646(uc)1.1 G .146 +end PEND 1.266(As you can see, you need to e)136 484.6 R -.25(va)-.25 G +1.266(luate the e).25 F 1.265(xpression in the most brack)-.15 F 1.265 +(ets \214rst, then the)-.1 F(ne)111 496.6 Q(xt, and so on, w)-.15 E +(orking you w)-.1 E(ay up)-.1 E -1.1(Yo)111 520.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 132 R .002 +.002(the most deeply nested function \214rst, then w)111 532.6 R .002 (orking up. Each e)-.1 F .002(xpression can be represented in this)-.15 -F(tree, then to sho)111 144 Q 2.5(waw)-.25 G +F(tree, then to sho)111 544.6 Q 2.5(waw)-.25 G (hole program you can create a list of trees)-2.5 E/F1 10/Times-Bold@0 -SF 2.5(1.7.2. Implementing)111 180 R(AST')2.5 E(s)-.37 E F0 .343 -(As a prototype i will mak)136 195.6 R -5.342 2.843(ea p)-.1 H .344 +SF 2.5(2.8.2. Implementing)111 580.6 R(AST')2.5 E(s)-.37 E F0 .343 +(As a prototype i will mak)136 596.2 R -5.342 2.843(ea p)-.1 H .344 (rogram that can tak)-2.843 F 2.844(em)-.1 G .344(athematical e)-2.844 F .344(xpressions and e)-.15 F -.25(va)-.25 G(luate).25 E(them, and allo) -111 207.6 Q(wing for functions \(in the form f\(x\)\).)-.25 E -(It will do this via AST')5 E(s)-.55 E .718(This prototype tak)111 231.6 +111 608.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 632.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 .177 -(into an abstract syntax tree, and \214nally it e)111 243.6 R -.15(xe) +(into an abstract syntax tree, and \214nally it e)111 644.2 R -.15(xe) -.15 G .178(cutes it. This is just a simple prototype and thus it is).15 F 1.849(small in scope. It can only do simple operators \(+-*/\) and re\ -quires litteral v)111 255.6 R 1.849(alues to be sur)-.25 F(-)-.2 E -(rounded by [] so it kno)111 267.6 Q(ws its not another e)-.25 E -(xpression to e)-.15 E -.25(va)-.25 G(luate.).25 E -(typedef struct ast_node ast_node;)111 303.6 Q(typedef enum op {)111 -339.6 Q(ADD = 0,)131 363.6 Q(SUB = 1,)131 387.6 Q(MUL = 2,)131 411.6 Q -(DIV = 3,)131 435.6 Q 2.5(}o)111 459.6 S(p;)-2.5 E -(typedef struct ast_node {)111 495.6 Q(op operation;)131 519.6 Q -(int realLeft;)131 543.6 Q(int realRight;)131 567.6 Q(ast_node *right;) -131 591.6 Q(ast_node *left;)131 615.6 Q 2.5(}a)111 639.6 S(st_node;)-2.5 -E(Abo)111 675.6 Q .335 -.15(ve i)-.15 H 2.535(st).15 G .035 +quires litteral v)111 656.2 R 1.849(alues to be sur)-.25 F(-)-.2 E +(rounded by [] so it kno)111 668.2 Q(ws its not another e)-.25 E +(xpression to e)-.15 E -.25(va)-.25 G(luate.).25 E(https://github)111 +692.2 Q(.com/standenbo)-.4 E +(y/school/tree/master/comp/lucas-standen-NEA/code/proto/ast)-.1 E +(typedef struct ast_node ast_node;)111 728.2 Q 0 Cg EP +%%Page: 8 8 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(-8-)300.17 48 Q(typedef enum op {)111 84 Q +(ADD = 0,)131 108 Q(SUB = 1,)131 132 Q(MUL = 2,)131 156 Q(DIV = 3,)131 +180 Q 2.5(}o)111 204 S(p;)-2.5 E(typedef struct ast_node {)111 240 Q +(op operation;)131 264 Q(int realLeft;)131 288 Q(int realRight;)131 312 +Q(ast_node *right;)131 336 Q(ast_node *left;)131 360 Q 2.5(}a)111 384 S +(st_node;)-2.5 E(Abo)111 420 Q .335 -.15(ve i)-.15 H 2.535(st).15 G .035 (he code for the AST)-2.535 F 2.535(,i)-.74 G 2.535(ts)-2.535 G .035 (tores an operation \(which is just an inte)-2.535 F .035 -(ger\), and it stores a real)-.15 F .676(left and real right v)111 687.6 -R .675(alue, along side tw)-.25 F 3.175(oo)-.1 G .675 +(ger\), and it stores a real)-.15 F .676(left and real right v)111 432 R +.675(alue, along side tw)-.25 F 3.175(oo)-.1 G .675 (ther nodes. The real v)-3.175 F .675(alues are inte)-.25 F .675 (gers, this w)-.15 F .675(ould be)-.1 F .943 -(the 2 numbers in reference in the e)111 699.6 R .944 +(the 2 numbers in reference in the e)111 444 R .944 (xpression. The 2 nodes are a recursi)-.15 F 1.244 -.15(ve d)-.25 H .944 -(ata structure, much).15 F(lik)111 711.6 Q 3.489(ep)-.1 G .988(utting a\ -n object of a class inside the de\214nition of that class itself. The) --3.489 F 3.488(ya)-.15 G .988(re used to store)-3.488 F -.25(va)111 -723.6 S .08(lues that may still be e).25 F .08(xpressions, for e)-.15 F -.081(xample \(+ [1] \(+ [1] [1]\)\) the second part of this e)-.15 F -(xpres-)-.15 E 0 Cg EP -%%Page: 7 7 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF(-7-)300.17 48 Q .533(sion w)111 84 R .533 -(ould be in the "right" v)-.1 F .533(airable. When code is e)-.25 F -.15 -(xe)-.15 G .533(cuted I can check if "left", or "right" are).15 F .61 -(null and if the)111 96 R 3.11(ya)-.15 G .61(re i kno)-3.11 F 3.11(wt) --.25 G .61(hat i am at the lo)-3.11 F .61(west e)-.25 F .61 +(ata structure, much).15 F(lik)111 456 Q 3.489(ep)-.1 G .988(utting an \ +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 468 +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 480 R .533(ould be in the "right" v)-.1 F .533 +(airable. When code is e)-.25 F -.15(xe)-.15 G .533 +(cuted I can check if "left", or "right" are).15 F .61(null and if the) +111 492 R 3.11(ya)-.15 G .61(re i kno)-3.11 F 3.11(wt)-.25 G .61 +(hat i am at the lo)-3.11 F .61(west e)-.25 F .61 (xpression that is only litteral v)-.15 F 3.11(alues. Then)-.25 F(I)3.11 -E(can e)111 108 Q -.15(xe)-.15 G(cute that node and w).15 E(ork my w)-.1 -E(ay up the tree.)-.1 E(The e)111 144 Q -.15(xe)-.15 G -(cution code can be seen here.).15 E(int e)111 180 Q -.15(xe)-.15 G -(c\(ast_node *e).15 E(xp\){)-.15 E(if \(e)131 204 Q(xp->left != NULL\)) --.15 E -.15(ex)151 228 S(p->realLeft = e).15 E -.15(xe)-.15 G(c\(e).15 E -(xp->left\);)-.15 E(if \(e)131 252 Q(xp->right != NULL\))-.15 E -.15(ex) -151 276 S(p->realRight = e).15 E -.15(xe)-.15 G(c\(e).15 E(xp->right\);) --.15 E(if \(e)131 324 Q(xp->operation == ADD\))-.15 E(return e)151 348 Q -(xp->realLeft+ e)-.15 E(xp->realRight;)-.15 E(if \(e)131 372 Q -(xp->operation == SUB\))-.15 E(return e)151 396 Q(xp->realLeft - e)-.15 -E(xp->realRight;)-.15 E(if \(e)131 420 Q(xp->operation == MUL\))-.15 E -(return e)151 444 Q(xp->realLeft * e)-.15 E(xp->realRight;)-.15 E -(if \(e)131 468 Q(xp->operation == DIV\))-.15 E(return e)151 492 Q -(xp->realLeft/ e)-.15 E(xp->realRight;)-.15 E(return 0;)136 516 Q(})111 -540 Q .851(The rest of the code is the process of con)111 576 R -.15(ve) --.4 G .85(rting the string input to litteral v).15 F .85 -(alues and inserting)-.25 F(them into the AST)111 588 Q/F1 10 -/Times-Bold@0 SF 2.5(2. Design)111 636 R 2.5(3. T)111 660 R -(echnical Solution)-.92 E 2.5(4. T)111 684 R(esting)-.92 E 2.5(5. Ev)111 -708 R(aluation)-.1 E 0 Cg EP -%%Page: 8 8 +E(can e)111 504 Q -.15(xe)-.15 G(cute that node and w).15 E(ork my w)-.1 +E(ay up the tree.)-.1 E(The e)111 540 Q -.15(xe)-.15 G +(cution code can be seen here.).15 E(https://github)111 564 Q +(.com/standenbo)-.4 E +(y/school/tree/master/comp/lucas-standen-NEA/code/proto/ast)-.1 E(int e) +111 600 Q -.15(xe)-.15 G(c\(ast_node *e).15 E(xp\){)-.15 E(if \(e)131 +624 Q(xp->left != NULL\))-.15 E -.15(ex)151 648 S(p->realLeft = e).15 E +-.15(xe)-.15 G(c\(e).15 E(xp->left\);)-.15 E(if \(e)131 672 Q +(xp->right != NULL\))-.15 E -.15(ex)151 696 S(p->realRight = e).15 E +-.15(xe)-.15 G(c\(e).15 E(xp->right\);)-.15 E 0 Cg EP +%%Page: 9 9 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF(-8-)300.17 48 Q 0 Cg EP +/F0 10/Times-Roman@0 SF(-9-)300.17 48 Q(if \(e)131 84 Q +(xp->operation == ADD\))-.15 E(return e)151 108 Q(xp->realLeft+ e)-.15 E +(xp->realRight;)-.15 E(if \(e)131 132 Q(xp->operation == SUB\))-.15 E +(return e)151 156 Q(xp->realLeft - e)-.15 E(xp->realRight;)-.15 E +(if \(e)131 180 Q(xp->operation == MUL\))-.15 E(return e)151 204 Q +(xp->realLeft * e)-.15 E(xp->realRight;)-.15 E(if \(e)131 228 Q +(xp->operation == DIV\))-.15 E(return e)151 252 Q(xp->realLeft/ e)-.15 E +(xp->realRight;)-.15 E(return 0;)136 276 Q(})111 300 Q .851 +(The rest of the code is the process of con)111 336 R -.15(ve)-.4 G .85 +(rting the string input to litteral v).15 F .85(alues and inserting)-.25 +F(them into the AST)111 348 Q/F1 10/Times-Bold@0 SF 2.5(3. Design)111 +396 R 2.5(4. T)111 420 R(echnical Solution)-.92 E 2.5(5. T)111 444 R +(esting)-.92 E 2.5(6. Ev)111 468 R(aluation)-.1 E 0 Cg EP %%Trailer end %%EOF |