From bf5101db32613e6ccd3b6cc3043734822cf29bd9 Mon Sep 17 00:00:00 2001 From: Marjolein Zwerver Date: Fri, 30 May 2014 21:11:19 +0200 Subject: [PATCH] aanpassing semantiek & analyse --- .../_semantic_functions_options.o | Bin 0 -> 530 bytes Clean System Files/semantic_functions.abc | 2130 +++++++++++++++++ Clean System Files/semantic_functions.o | Bin 0 -> 41410 bytes an_faculteit.tex | 32 + appendix.tex | 7 +- functions.icl | 122 - img/Thumbs.db | Bin 0 -> 31744 bytes semantic_functions.dcl | 3 + semantic_functions.exe | Bin 0 -> 116224 bytes semantic_functions.icl | 112 + semantic_functions.prj | 239 ++ semantic_functions.prp | 78 + semantics.tex | 43 +- todo.txt | 11 +- 14 files changed, 2630 insertions(+), 147 deletions(-) create mode 100644 Clean System Files/_semantic_functions_options.o create mode 100644 Clean System Files/semantic_functions.abc create mode 100644 Clean System Files/semantic_functions.o delete mode 100644 functions.icl create mode 100644 img/Thumbs.db create mode 100644 semantic_functions.dcl create mode 100644 semantic_functions.exe create mode 100644 semantic_functions.icl create mode 100644 semantic_functions.prj create mode 100644 semantic_functions.prp diff --git a/Clean System Files/_semantic_functions_options.o b/Clean System Files/_semantic_functions_options.o new file mode 100644 index 0000000000000000000000000000000000000000..07a549ffb92fa2e76f82c4caa2a8fc8e39c0e45f GIT binary patch literal 530 zcmZ{g&kn&r5XPt4gcA-9PST@OQ*YqnC0y3hKQ=9CbcHxMIf-}h9wZ*Y6Jf@7Yb#7L zGvE9=-R!r)!G`nc>R$k$i3#9Xo(#A0t^XGnVB!T_a%06ueKcm0Lx7t%&2x=AT730A z?g6-p-s`IC>e@=RHBjA)L>d<8@dSvih$k8p-1K50v#ETA>7$0S*!Lwlh6(`|m8 zLw`6_Fz6ggfEH#0Q;{g;F+B!Z`Rw#?>Q=}AC$~aIIQ2_1Ml}z4#&WSk%Y4dm$!AG1 dilvZ(r_9(WC0ndhDKdJwg;=u9O32V$d;!bmJSG4D literal 0 HcmV?d00001 diff --git a/Clean System Files/semantic_functions.abc b/Clean System Files/semantic_functions.abc new file mode 100644 index 0000000..a84bea9 --- /dev/null +++ b/Clean System Files/semantic_functions.abc @@ -0,0 +1,2130 @@ +.comp 920 00011101001 +.start __semantic_functions_Start +.depend "StdReal" "20111221123336" +.depend "StdChar" "20111221123336" +.depend "StdBool" "20111221123336" +.depend "StdClass" "20111221123336" +.depend "StdList" "20111221123336" +.depend "StdOverloaded" "20111221123336" +.depend "StdInt" "20111221123336" +.depend "semantic_functions" "20140530152128" +.module m_semantic_functions "semantic_functions" "20140530175504" +.endinfo +.implab _cycle_in_spine +.implab _type_error +.implab _hnf +.impdesc _ind +.implab _indirection _eaind +.impdesc e_system_dif +.implab e_system_nif e_system_eaif +.implab e_system_sif +.impdesc e_system_dAP +.implab e_system_nAP e_system_eaAP +.implab e_system_sAP +.impdesc _Nil +.impdesc _Cons +.impdesc _Conss +.implab n_Conss ea_Conss +.impdesc _Consts +.implab n_Consts ea_Consts +.impdesc _Conssts +.implab n_Conssts ea_Conssts +.impdesc _Tuple +.impdesc d_S.1 +.implab n_S.1 ea_S.1 +.impdesc d_S.2 +.implab n_S.2 ea_S.2 +.impdesc d_S.3 +.implab n_S.3 ea_S.3 +.impdesc d_S.4 +.implab n_S.4 ea_S.4 +.impdesc d_S.5 +.implab n_S.5 ea_S.5 +.impdesc d_S.6 +.implab n_S.6 ea_S.6 +.implab _driver +.implab e_StdBool_snot +.impdesc e_StdList_d++ +.implab e_StdList_s++ +.implab e_StdList_n++ e_StdList_ea++ +.implab e_StdList_slength;47 +.implab e_StdInt_s+;6 +.impdesc e_StdInt_d-;7 +.implab e_StdInt_s-;7 +.implab e_StdInt_n-;7 +.impdesc e_StdInt_d*;9 +.implab e_StdInt_n*;9 +.implab e_StdInt_s==;16 +.implab e_StdInt_s<;17 +.export __semantic_functions_Start +.o 0 0 +__semantic_functions_Start + build _ 0 n20 +.d 1 0 + jmp _driver +.n 0 _ ea20 +.o 1 0 +n20 + push_node _cycle_in_spine 0 +.o 1 0 +ea20 +.o 1 0 +s20 +.d 1 0 + jmp s25 +.o 1 0 +s25 + create +.d 1 0 + jsr s26 +.o 1 0 + create + buildI 2 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s1 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s10 +.o 1 0 + create + buildI 3 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s1 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s6 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s11 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s6 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s12 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s11 +.o 1 0 +.d 2 0 + jmp s3 +.o 1 0 +s26 + create +.d 1 0 + jsr s27 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s10 +.o 1 0 + create + buildI 3 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 2 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s1 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s10 +.o 1 0 + create + buildI 4 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s1 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s7 +.o 1 0 + create + buildI 2 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s1 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s3 +.o 1 0 + create + buildI 2 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s1 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s10 +.o 1 0 + create + buildI 3 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s1 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s6 +.o 1 0 + create + buildI 3 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 2 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s1 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s3 +.o 1 0 + create + buildI 2 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 +.d 2 0 + jmp s1 +.o 1 0 +s27 + create +.d 1 0 + jsr s28 +.o 1 0 + create + buildI 2 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s1 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s10 +.o 1 0 + create + buildI 3 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s1 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s6 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s11 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s6 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s12 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s11 +.o 1 0 +.d 2 0 + jmp s3 +.o 1 0 +s28 + create +.d 1 0 + jsr s29 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s10 +.o 1 0 + create + buildI 3 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 2 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s1 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s10 +.o 1 0 + create + buildI 4 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s1 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s7 +.o 1 0 + create + buildI 2 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s1 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s3 +.o 1 0 + create + buildI 2 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s1 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s10 +.o 1 0 + create + buildI 3 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s1 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s6 +.o 1 0 + create + buildI 3 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 2 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s1 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s3 +.o 1 0 + create + buildI 2 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 +.d 2 0 + jmp s1 +.o 1 0 +s29 + create +.d 1 0 + jsr s30 +.o 1 0 + create + buildI 2 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s1 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s10 +.o 1 0 + create + buildI 3 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s1 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s6 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s11 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s6 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s12 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s11 +.o 1 0 +.d 2 0 + jmp s3 +.o 1 0 +s30 + create +.d 1 0 + jsr s31 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s10 +.o 1 0 + create + buildI 3 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 2 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s1 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s10 +.o 1 0 + create + buildI 4 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s1 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s7 +.o 1 0 + create + buildI 2 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s1 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s3 +.o 1 0 + create + buildI 2 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s1 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s10 +.o 1 0 + create + buildI 3 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s1 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s6 +.o 1 0 + create + buildI 3 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 2 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s1 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s3 +.o 1 0 + create + buildI 2 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 +.d 2 0 + jmp s1 +.o 1 0 +s31 + create +.d 1 0 + jsr s32 +.o 1 0 + create + buildI 2 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s1 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s10 +.o 1 0 + create + buildI 3 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s1 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s6 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s11 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s6 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s12 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s11 +.o 1 0 +.d 2 0 + jmp s3 +.o 1 0 +s32 + buildh _Nil 0 + buildI 5 + buildh _Cons 2 + buildI 1 + buildh _Cons 2 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s10 +.o 1 0 + create + buildI 3 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 2 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s1 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s10 +.o 1 0 + create + buildI 4 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s1 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s7 +.o 1 0 + create + buildI 2 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s1 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s3 +.o 1 0 + create + buildI 2 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s1 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s10 +.o 1 0 + create + buildI 3 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s1 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s6 +.o 1 0 + create + buildI 3 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 2 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s1 +.o 1 0 + create + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 +.d 2 0 + jsr s3 +.o 1 0 + create + buildI 2 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 + create + buildI 1 + push_a 2 + update_a 2 3 + update_a 0 2 + pop_a 1 +.d 3 0 + jsr s4 +.o 1 0 +.d 2 0 + jmp s1 +.o 2 0 +s12 + eq_desc _Nil 0 0 + jmp_true case.1 + jmp case.2 +case.1 + fillh _Nil 0 1 + pop_a 1 +.d 1 0 + rtn +case.2 + repl_args 2 2 + jsr_eval 1 + eq_desc _Nil 0 1 + jmp_true case.3 + jmp case.4 +case.3 + buildh _Nil 0 + push_a 1 + fillh _Cons 2 4 + pop_a 2 +.d 1 0 + rtn +case.4 + push_args 1 2 2 + buildh _Nil 0 + update_a 0 4 + pop_a 1 + push_a 0 + jsr_eval 0 + pushI_a 1 + pop_a 1 + push_a 2 + jsr_eval 0 + pushI_a 3 + pop_a 1 + ltI + notB + jmp_false else.5 + push_a 1 + buildI 0 + fillh _Cons 2 6 + pop_a 4 +.d 1 0 + rtn +else.5 + push_a 1 + buildI 1 + fillh _Cons 2 6 + pop_a 4 +.d 1 0 + rtn +.o 2 0 +s11 + eq_desc _Nil 0 0 + jmp_true case.6 + jmp case.7 +case.6 + fillh _Nil 0 1 + pop_a 1 +.d 1 0 + rtn +case.7 + repl_args 2 2 + jsr_eval 0 + eqI_a 0 0 + jmp_true case.8 + jmp case.9 +case.8 + push_a 1 + buildI 1 + fillh _Cons 2 4 + pop_a 2 +.d 1 0 + rtn +case.9 + push_a 1 + buildI 0 + fillh _Cons 2 4 + pop_a 2 +.d 1 0 + rtn +.o 2 0 +s10 + eq_desc _Nil 0 0 + jmp_true case.10 + jmp case.11 +case.10 + fillh _Nil 0 1 + pop_a 1 +.d 1 0 + rtn +case.11 + repl_args 2 2 + push_a 1 + push_a 1 + buildh _Cons 2 + push_a 1 + fillh _Cons 2 4 + pop_a 2 +.d 1 0 + rtn +.o 2 0 +s7 + eq_desc _Nil 0 0 + jmp_true case.12 + jmp case.13 +case.12 + fillh _Nil 0 1 + pop_a 1 +.d 1 0 + rtn +case.13 + repl_args 2 2 + jsr_eval 1 + eq_desc _Nil 0 1 + jmp_true case.14 + jmp case.15 +case.14 + buildh _Nil 0 + push_a 1 + fillh _Cons 2 4 + pop_a 2 +.d 1 0 + rtn +case.15 + push_args 1 2 2 + buildh _Nil 0 + update_a 0 4 + pop_a 1 + push_a 2 + push_a 1 + build _ 2 e_StdInt_n*;9 + push_a 2 + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 + fillh _Cons 2 6 + pop_a 4 +.d 1 0 + rtn +.o 2 0 +s6 + eq_desc _Nil 0 0 + jmp_true case.16 + jmp case.17 +case.16 + fillh _Nil 0 1 + pop_a 1 +.d 1 0 + rtn +case.17 + repl_args 2 2 + jsr_eval 1 + eq_desc _Nil 0 1 + jmp_true case.18 + jmp case.19 +case.18 + buildh _Nil 0 + push_a 1 + fillh _Cons 2 4 + pop_a 2 +.d 1 0 + rtn +case.19 + push_args 1 2 2 + buildh _Nil 0 + update_a 0 4 + pop_a 1 + push_a 2 + push_a 1 + build _ 2 e_StdInt_n-;7 + push_a 2 + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 + fillh _Cons 2 6 + pop_a 4 +.d 1 0 + rtn +.o 3 0 +s4 + eq_desc _Nil 0 1 + jmp_true case.20 + jmp case.21 +case.20 + buildh _Nil 0 + push_a 1 + fillh _Cons 2 4 + pop_a 2 +.d 1 0 + rtn +case.21 + buildh _Nil 0 + push_a 1 + buildh _Cons 2 + push_a 2 + push_a 1 + update_a 1 2 + update_a 0 1 + pop_a 1 + update_a 1 3 + updatepop_a 0 2 +.d 3 0 + jmp e_StdList_s++ +.o 2 0 +s3 + eq_desc _Nil 0 0 + jmp_true case.22 + jmp case.23 +case.22 + fillh _Nil 0 1 + pop_a 1 +.d 1 0 + rtn +case.23 + repl_args 2 2 + pop_a 1 + jmp_eval_upd +.export e_semantic_functions_sroll +.export e_semantic_functions_earoll +.descexp e_semantic_functions_droll e_semantic_functions_nroll e_semantic_functions_lroll 1 0 "roll" +.o 2 0 +e_semantic_functions_lroll + update_a 1 0 + create + update_a 0 2 + pop_a 1 +.d 2 0 + jmp e_semantic_functions_earoll +.n 1 e_semantic_functions_droll e_semantic_functions_earoll +.o 1 0 +e_semantic_functions_nroll + push_node _cycle_in_spine 1 +.o 2 0 +e_semantic_functions_sroll +.o 2 0 +e_semantic_functions_earoll + jsr_eval 0 +.o 2 0 +s1 + eq_desc _Nil 0 0 + jmp_true case.24 + jmp case.25 +case.24 + fillh _Nil 0 1 + pop_a 1 +.d 1 0 + rtn +case.25 + repl_args 2 2 + jsr_eval 1 + eq_desc _Nil 0 1 + jmp_true case.26 + jmp case.27 +case.26 + buildh _Nil 0 + push_a 1 + fillh _Cons 2 4 + pop_a 2 +.d 1 0 + rtn +case.27 + push_args 1 2 2 + buildh _Nil 0 + update_a 0 4 + pop_a 1 + push_a 0 + jsr_eval 0 + pushI_a 1 + pop_a 1 + push_a 2 + jsr_eval 0 + pushI_a 3 + pop_a 1 +.d 0 2 ii + jsr s15 +.o 0 1 i + pushI 0 + push_b 1 + update_b 1 2 + update_b 0 1 + pop_b 1 + eqI + jmp_false else.28 + updatepop_a 1 3 + jmp_eval_upd +else.28 + pushI_a 0 + pushI 0 + ltI + notB + jmp_false else.29 + updatepop_a 1 3 + jmp_eval_upd +else.29 + push_a 1 + jsr_eval 0 +.d 1 0 + jsr e_StdList_slength;47 +.o 0 1 i + pushI_a 0 + push_b 1 + update_b 1 2 + update_b 0 1 + pop_b 1 + ltI + jmp_false else.30 + fill_a 1 4 + pop_a 4 +.d 1 0 + rtn +else.30 + pushI 1 + pushI_a 2 + eqI + jmp_false else.31 + push_a 1 + push_a 1 + buildh _Cons 2 + updatepop_a 0 4 +.d 2 0 + jmp s2 +else.31 + pushI_a 2 + pushI 0 + ltI + jmp_false else.32 + push_a 1 + push_a 1 + buildh _Cons 2 + build e_semantic_functions_droll1 1 e_semantic_functions_nroll1 + buildh _Nil 0 + push_a 2 + buildh _Cons 2 + build e_StdList_d++ 2 e_StdList_n++ + buildh _Nil 0 + buildI 1 + push_a 5 + build _ 2 e_StdInt_n-;7 + buildh _Cons 2 + create + push_a 2 + update_a 1 3 + update_a 2 1 + update_a 0 2 + pop_a 1 + update_a 2 6 + update_a 1 5 + updatepop_a 0 4 +.d 3 0 + jsr e_StdList_s++ +.o 1 0 +.d 2 0 + jmp s1 +else.32 + pushI 0 + pushI_a 2 + ltI + jmp_false else.33 + push_a 1 + push_a 1 + buildh _Cons 2 + buildh _Nil 0 + push_a 2 + push_a 5 + build _ 2 n15 + buildh _Cons 2 + create + push_a 2 + update_a 1 3 + update_a 2 1 + update_a 0 2 + pop_a 1 + update_a 2 6 + update_a 1 5 + updatepop_a 0 4 +.d 3 0 + jsr e_StdList_s++ +.o 1 0 +.d 2 0 + jmp s1 +else.33 + pop_a 3 + jmp s1.1 +s1.1 + pop_a 2 + pushD m_semantic_functions + pushD e_semantic_functions_droll +.d 0 2 ii + jmp _match_error +.export e_semantic_functions_sroll1 +.export e_semantic_functions_earoll1 +.descexp e_semantic_functions_droll1 e_semantic_functions_nroll1 e_semantic_functions_lroll1 1 0 "roll1" +.o 2 0 +e_semantic_functions_lroll1 + update_a 1 0 + create + update_a 0 2 + pop_a 1 +.d 2 0 + jmp e_semantic_functions_earoll1 +.n 1 e_semantic_functions_droll1 e_semantic_functions_earoll1 +.o 1 0 +e_semantic_functions_nroll1 + push_node _cycle_in_spine 1 +.o 2 0 +e_semantic_functions_sroll1 +.o 2 0 +e_semantic_functions_earoll1 + jsr_eval 0 +.o 2 0 +s2 + eq_desc _Cons 2 0 + jmp_true case.34 + jmp s2.1 +case.34 + repl_args 2 2 + jsr_eval 0 + eqI_a 1 0 + jmp_true case.35 + jmp case.36 +case.35 + pop_a 1 + jmp_eval_upd +case.36 + jsr_eval 1 + eq_desc _Cons 2 1 + jmp_true case.37 + pop_a 1 + jmp s2.1 +case.37 + push_args 1 2 2 + buildh _Nil 0 + update_a 0 4 + pop_a 1 + jsr_eval 1 + eq_desc _Cons 2 1 + jmp_true case.38 + pop_a 3 + jmp s2.1 +case.38 + push_args 1 2 2 + buildh _Nil 0 + update_a 0 4 + pop_a 1 + push_a 1 + push_a 3 + buildh _Cons 2 + buildI 1 + push_a 6 + build _ 2 e_StdInt_n-;7 + buildh _Cons 2 + build e_semantic_functions_droll1 1 e_semantic_functions_nroll1 + buildh _Nil 0 + push_a 2 + buildh _Cons 2 + update_a 1 7 + updatepop_a 0 6 +.d 3 0 + jmp e_StdList_s++ +s2.1 + pop_a 2 + pushD m_semantic_functions + pushD e_semantic_functions_droll1 +.d 0 2 ii + jmp _match_error +.n 2 _ +.o 1 0 +n15 + push_node _cycle_in_spine 2 +.d 2 0 + jsr ea15 +.o 0 1 i + fillI_b 0 0 + pop_b 1 +.d 1 0 + rtn +.o 2 0 +ea15 + jsr_eval 1 + jsr_eval 0 + pushI_a 1 + pushI_a 0 + pop_a 2 +.o 0 2 ii +s15 + pushI 0 + push_b 1 + ltI + jmp_false else.39 + push_b 1 + push_b 1 + addI + push_b 2 + push_b 1 + update_b 1 2 + update_b 0 1 + pop_b 1 + update_b 1 3 + updatepop_b 0 2 +.d 0 2 ii + jmp s15 +else.39 + push_b 1 + push_b 1 + ltI + jmp_false else.40 + update_b 0 1 + pop_b 1 +.d 0 1 i + rtn +else.40 + push_b 1 + push_b 1 + subI + push_b 2 + push_b 1 + update_b 1 2 + update_b 0 1 + pop_b 1 + update_b 1 3 + updatepop_b 0 2 +.d 0 2 ii + jmp s15 diff --git a/Clean System Files/semantic_functions.o b/Clean System Files/semantic_functions.o new file mode 100644 index 0000000000000000000000000000000000000000..9b437d228e4ddcbd828f4c307adae9c418114534 GIT binary patch literal 41410 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 literal 0 HcmV?d00001 diff --git a/an_faculteit.tex b/an_faculteit.tex index 695fb4d..7db77ea 100644 --- a/an_faculteit.tex +++ b/an_faculteit.tex @@ -95,3 +95,35 @@ Wat in piet er uit zit als in \ref{fig:img3} \fbox{\includegraphics[natheight=320px, natwidth=256px, height=320px, width=256px]{img3.png}} \end{figure} + +\begin{landscape} +De afleidingsrij voor 1! ziet er als volgt uit:\\ +$ +\langle pointer; not;greater;subtract;push\:1;push \: 1;not;subtract;push \: 1;roll;push \: 1;push \: 3;dup;roll;push \: 1;push \: 2;push \: 1;push \: 1, [\:], [\:], [\:]\rangle \Rightarrow\\ +\langle pointer; not;greater;subtract;push\:1;push \: 1;not;subtract;push \: 1;roll;push \: 1;push \: 3;dup;roll;push \: 1;push \: 2;push \: 1, [\:], [\:], [1]\rangle \Rightarrow\\ +\langle pointer; not;greater;subtract;push\:1;push \: 1;not;subtract;push \: 1;roll;push \: 1;push \: 3;dup;roll;push \: 1;push \: 2, [\:], [\:], [1,1]\rangle \Rightarrow\\ +\langle pointer; not;greater;subtract;push\:1;push \: 1;not;subtract;push \: 1;roll;push \: 1;push \: 3;dup;roll;push \: 1, [\:], [\:], [2,1,1]\rangle \Rightarrow\\ +\langle pointer; not;greater;subtract;push\:1;push \: 1;not;subtract;push \: 1;roll;push \: 1;push \: 3;dup;roll, [\:], [\:], [1,2,1,1]\rangle \Rightarrow\\ +\langle pointer; not;greater;subtract;push\:1;push \: 1;not;subtract;push \: 1;roll;push \: 1;push \: 3;dup, [\:], [\:], [1,1]\rangle \Rightarrow\\ +\langle pointer; not;greater;subtract;push\:1;push \: 1;not;subtract;push \: 1;roll;push \: 1;push \: 3, [\:], [\:], [1,1,1]\rangle \Rightarrow\\ +\langle pointer; not;greater;subtract;push\:1;push \: 1;not;subtract;push \: 1;roll;push \: 1, [\:], [\:], [3,1,1,1]\rangle \Rightarrow\\ +\langle pointer; not;greater;subtract;push\:1;push \: 1;not;subtract;push \: 1;roll, [\:], [\:], [1,3,1,1,1]\rangle \Rightarrow\\ +\langle pointer; not;greater;subtract;push\:1;push \: 1;not;subtract;push \: 1, [\:], [\:], [1,1,1]\rangle \Rightarrow\\ +\langle pointer; not;greater;subtract;push\:1;push \: 1;not;subtract;, [\:], [\:], [1,1,1,1]\rangle \Rightarrow\\ +\langle pointer; not;greater;subtract;push\:1;push \: 1;not, [\:], [\:], [1,1,1]\rangle \Rightarrow\\ +\langle pointer; not;greater;subtract;push\:1;push \: 1, [\:], [\:], [1,1,1]\rangle \Rightarrow\\ +\langle pointer; not;greater;subtract;push\:1, [\:], [\:], [1,1,1,1]\rangle \Rightarrow\\ +\langle pointer; not;greater;subtract, [\:], [\:], [1,1,1,1,1]\rangle \Rightarrow\\ +\langle pointer; not;greater, [\:], [\:], [0,1,1,1]\rangle \Rightarrow\\ +\langle pointer; not, [\:], [\:], [1,1,1]\rangle \Rightarrow\\ +\langle pointer [\:], [\:], [0,1,1]\rangle \Rightarrow\\ +\langle [\:], [\:], [1,1]\rangle\\ +\ +$ +Eerst worden x en y op de stack gepusht zodat de stack [y,x] = [1,1]. +Deze stack is gelijk aan de stack in de termineerende configuratie: 1 = 1! dus y = x!. +Als bewijs dat de wiskundige operaties op de stack goed zijn uitgevoerd staat in +de appendix onder het kopje voorbeelden een stukje code. In het programma +eenfaculteit worden alle wiskundige operaties die bij de commando's horen +achter elkaar uitgevoerd op de stack, waarbij het resultaat [1,1] is. +\end{landscape} \ No newline at end of file diff --git a/appendix.tex b/appendix.tex index 3bacb77..ed1e909 100644 --- a/appendix.tex +++ b/appendix.tex @@ -1 +1,6 @@ -\lstinputlisting[language=Clean, lastline=100]{functions.icl} \ No newline at end of file +\subsection{help functies} +\lstinputlisting[language=Clean, lastline=88]{semantic_functions.icl} +\subsection{voorbeelden} +\begin{landscape} +\lstinputlisting[language=Clean,firstline=90, lastline=120]{semantic_functions.icl} +\end{landscape} diff --git a/functions.icl b/functions.icl deleted file mode 100644 index 8250323..0000000 --- a/functions.icl +++ /dev/null @@ -1,122 +0,0 @@ -implementation module roll - -import StdInt, StdList - -d :: [Int] -> [Int] -d [] = [] -d [a:rest] = rest - -e :: [Int] Int -> [Int] -e [] a = [a] -e [b] a = [a] ++ [b] - -add :: [Int] -> [Int] -add [] = [] -add [a] = [a] -add [a:b:rest] = [b+a:rest] - -sub :: [Int] -> [Int] -sub [] = [] -sub [a] = [a] -sub [a:b:rest] = [b-a:rest] - -mul :: [Int] -> [Int] -mul [] = [] -mul [a] = [a] -mul [a:b:rest] = [b*a:rest] - -div :: [Int] -> [Int] -div [] = [] -div [a] = [a] -div [a:b:rest] = [b/a:rest] - -modc :: [Int] -> [Int] -modc[] = [] -modc[a] = [a] -modc[a:b:rest] = [modulo b a:rest] - -dup :: [Int] -> [Int] -dup[] = [] -dup[a:rest] = [a:a:rest] - -notc :: [Int] -> [Int] -notc[] = [] -notc[0:rest] = [1:rest] -notc[_:rest] = [0:rest] - -gre :: [Int] -> [Int] -gre[] = [] -gre[a] = [a] -gre[a:b:rest] -|a >= b = [0:rest] -|otherwise = [1:rest] - -roll :: [Int] -> [Int] -roll [] = [] -roll [a] = [a] -roll [a:b:rest] -|modulo a b == 0 = rest -|b <= 0 = rest -|b > length rest = rest -|a == 1 = roll1 [b:rest] -|a > 0 = roll ([a-1] ++ [b] ++ roll1 [b:rest]) -|a < 0 = roll ([modulo a b] ++ [b:rest]) - -pointer :: [Int] -> [Int] -pointer [] = [] -pointer [a:rest] = rest - -//outnum_s :: stack_output stack -> stack_output -outnum_s :: [Int] [Int] -> [Int] -outnum_s _ [] = [] -outnum_s _ [a:rest] = rest - -outnum_so :: [Int] [Int] -> [Int] -outnum_so so [] = so -outnum_so so [a:rest] = add_to_s a so - -//innum_s :: stack_input stack -> stack -innum_s :: [Int] [Int] -> [Int] -innum_s [] _ = [] -innum_s [a:rest] s = add_to_s a s - -innum_si :: [Int] [Int] -> [Int] -innum_si [] s = [] -innum_si [a:rest] s = rest - -//help functions -roll1 :: [Int] -> [Int] -roll1 [1:rest] = rest -roll1 [b:c:d:rest] = [d] ++ roll1[b-1:c:rest] - -modulo :: Int Int -> Int -modulo a b -|a<0 = modulo (a+b) b -|a [a] -add_to_s a [] = [a] -add_to_s a b = b ++ [a] - -x = 5 -y = 1 -stack = [] -so = [] -si = [] - -Start = start51 - -start21 = (notc(gre(sub(push 1(push 1(notc(sub(push 1(roll(push 1(push 3(dup(roll(push 1(push 2[2,1]))))))))))))))) -start22 = roll(push 1(push 2(pop(roll(push 2(push 3(sub(push 1(roll(push 1(push 3(dup(roll(push 1(push 2(pop(roll(push 1(push 2(mul(roll(push 1(push 4(dup(roll(push 2(push 3(dup[1,2])))))))))))))))))))))))))))) -start23 = pointer(notc(gre(sub(push 1(push 1(notc(sub(push 1(roll(push 1(push 3(dup(roll(push 1(push 2(push 1 (push 2 stack))))))))))))))))) - -start51 = (notc(gre(sub(push 1(push 1(notc(sub(push 1(roll(push 1(push 3(dup(roll(push 1(push 2[120,1]))))))))))))))) -start52 = roll(push 1(push 2(pop(roll(push 2(push 3(sub(push 1(roll(push 1(push 3(dup(roll(push 1(push 2(pop(roll(push 1(push 2(mul(roll(push 1(push 4(dup(roll(push 2(push 3(dup[60,2])))))))))))))))))))))))))))) -start53 = pointer(notc(gre(sub(push 1(push 1(notc(sub(push 1(roll(push 1(push 3(dup(roll(push 1(push 2[60,2]))))))))))))))) -start54 = roll(push 1(push 2(pop(roll(push 2(push 3(sub(push 1(roll(push 1(push 3(dup(roll(push 1(push 2(pop(roll(push 1(push 2(mul(roll(push 1(push 4(dup(roll(push 2(push 3(dup[20,3])))))))))))))))))))))))))))) -start55 = pointer(notc(gre(sub(push 1(push 1(notc(sub(push 1(roll(push 1(push 3(dup(roll(push 1(push 2[20,3]))))))))))))))) -start56 = roll(push 1(push 2(pop(roll(push 2(push 3(sub(push 1(roll(push 1(push 3(dup(roll(push 1(push 2(pop(roll(push 1(push 2(mul(roll(push 1(push 4(dup(roll(push 2(push 3(dup[5,4])))))))))))))))))))))))))))) -start57 = pointer(notc(gre(sub(push 1(push 1(notc(sub(push 1(roll(push 1(push 3(dup(roll(push 1(push 2[5,4]))))))))))))))) -start58 = roll(push 1(push 2(pop(roll(push 2(push 3(sub(push 1(roll(push 1(push 3(dup(roll(push 1(push 2(pop(roll(push 1(push 2(mul(roll(push 1(push 4(dup(roll(push 2(push 3(dup[1,5])))))))))))))))))))))))))))) -start59 = pointer(notc(gre(sub(push 1(push 1(notc(sub(push 1(roll(push 1(push 3(dup(roll(push 1(push 2(push y (push x stack))))))))))))))))) diff --git a/img/Thumbs.db b/img/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..ca9c33b5d4a7ab6a876570a74017f51ce87171ad GIT binary patch literal 31744 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 [Int] +roll1 :: [Int] -> [Int] \ No newline at end of file diff --git a/semantic_functions.exe b/semantic_functions.exe new file mode 100644 index 0000000000000000000000000000000000000000..ac11aa1f0df6724012baf289c0d0fe34566441e5 GIT binary patch literal 116224 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 literal 0 HcmV?d00001 diff --git a/semantic_functions.icl b/semantic_functions.icl new file mode 100644 index 0000000..adf2ba2 --- /dev/null +++ b/semantic_functions.icl @@ -0,0 +1,112 @@ +implementation module semantic_functions + +import StdInt, StdList + +d :: [Int] -> [Int] +d [] = [] +d [a:rest] = rest + +e :: Int [Int] -> [Int] +e a [] = [a] +e a b = [a] ++ b + +add :: [Int] -> [Int] +add [] = [] +add [a] = [a] +add [a:b:rest] = [b+a:rest] + +sub :: [Int] -> [Int] +sub [] = [] +sub [a] = [a] +sub [a:b:rest] = [b-a:rest] + +mul :: [Int] -> [Int] +mul [] = [] +mul [a] = [a] +mul [a:b:rest] = [b*a:rest] + +div :: [Int] -> [Int] +div [] = [] +div [a] = [a] +div [a:b:rest] = [b/a:rest] + +modc :: [Int] -> [Int] +modc[] = [] +modc[a] = [a] +modc[a:b:rest] = [modulo b a:rest] + +dup :: [Int] -> [Int] +dup[] = [] +dup[a:rest] = [a:a:rest] + +notc :: [Int] -> [Int] +notc[] = [] +notc[0:rest] = [1:rest] +notc[_:rest] = [0:rest] + +gre :: [Int] -> [Int] +gre[] = [] +gre[a] = [a] +gre[a:b:rest] +|a >= b = [0:rest] +|otherwise = [1:rest] + +roll :: [Int] -> [Int] +roll [] = [] +roll [a] = [a] +roll [a:b:rest] +|modulo a b == 0 = rest +|b <= 0 = rest +|b > length rest = rest +|a == 1 = roll1 [b:rest] +|a > 0 = roll ([a-1] ++ [b] ++ roll1 [b:rest]) +|a < 0 = roll ([modulo a b] ++ [b:rest]) + +roll1 :: [Int] -> [Int] +roll1 [1:rest] = rest +roll1 [b:c:d:rest] = [d] ++ roll1[b-1:c:rest] + +//outnum_so :: stack_output stack -> stack_output +outnum_so :: [Int] [Int] -> [Int] +outnum_so so [] = so +outnum_so so [a:rest] = add_to_s a so + +//innum_s :: stack_input stack -> stack +innum_s :: [Int] [Int] -> [Int] +innum_s [] _ = [] +innum_s [a:rest] s = add_to_s a s + +//help functions +modulo :: Int Int -> Int +modulo a b +|a<0 = modulo (a+b) b +|a [a] +add_to_s a [] = [a] +add_to_s a b = b ++ [a] + +x = 5 +y = 1 +stack = [] + +Start = vijffaculteit + +eenfaculteit = d(notc(gre(sub(e 1(e 1(notc(sub(e 1(roll(e 1(e 3(dup(roll(e 1(e 2[1,1]))))))))))))))) + +tweefaculteit = d(notc(gre(sub(e 1(e 1(notc(sub(e 1(roll(e 1(e 3(dup(roll(e 1(e 2 tweefaculteit1))))))))))))))) +tweefaculteit1 = roll(e 1(e 2(d(roll(e 2(e 3(sub(e 1(roll(e 1(e 3(dup(roll(e 1(e 2(d(roll(e 1(e 2(mul(roll(e 1(e 4(dup(roll(e 2(e 3(dup tweefaculteit2)))))))))))))))))))))))))))) +tweefaculteit2 = d(notc(gre(sub(e 1(e 1(notc(sub(e 1(roll(e 1(e 3(dup(roll(e 1(e 2(e 1 (e 2 stack))))))))))))))))) + +vijffaculteit = d(notc(gre(sub(e 1(e 1(notc(sub(e 1(roll(e 1(e 3(dup(roll(e 1(e 2 vijffaculteit1))))))))))))))) +vijffaculteit1 = roll(e 1(e 2(d(roll(e 2(e 3(sub(e 1(roll(e 1(e 3(dup(roll(e 1(e 2(d(roll(e 1(e 2(mul(roll(e 1(e 4(dup(roll(e 2(e 3(dup vijffaculteit2)))))))))))))))))))))))))))) +vijffaculteit2 = d(notc(gre(sub(e 1(e 1(notc(sub(e 1(roll(e 1(e 3(dup(roll(e 1(e 2 vijffaculteit3))))))))))))))) +vijffaculteit3 = roll(e 1(e 2(d(roll(e 2(e 3(sub(e 1(roll(e 1(e 3(dup(roll(e 1(e 2(d(roll(e 1(e 2(mul(roll(e 1(e 4(dup(roll(e 2(e 3(dup vijffaculteit4)))))))))))))))))))))))))))) +vijffaculteit4 = d(notc(gre(sub(e 1(e 1(notc(sub(e 1(roll(e 1(e 3(dup(roll(e 1(e 2 vijffaculteit5))))))))))))))) +vijffaculteit5 = roll(e 1(e 2(d(roll(e 2(e 3(sub(e 1(roll(e 1(e 3(dup(roll(e 1(e 2(d(roll(e 1(e 2(mul(roll(e 1(e 4(dup(roll(e 2(e 3(dup vijffaculteit6)))))))))))))))))))))))))))) +vijffaculteit6 = d(notc(gre(sub(e 1(e 1(notc(sub(e 1(roll(e 1(e 3(dup(roll(e 1(e 2 vijffaculteit7))))))))))))))) +vijffaculteit7 = roll(e 1(e 2(d(roll(e 2(e 3(sub(e 1(roll(e 1(e 3(dup(roll(e 1(e 2(d(roll(e 1(e 2(mul(roll(e 1(e 4(dup(roll(e 2(e 3(dup [1,5])))))))))))))))))))))))))))) +//[1,5] is the outcome of vijffaculteit8, but it won't run if not substituted +vijffaculteit8 = d(notc(gre(sub(e 1(e 1(notc(sub(e 1(roll(e 1(e 3(dup(roll(e 1(e 2(e y (e x stack))))))))))))))))) + diff --git a/semantic_functions.prj b/semantic_functions.prj new file mode 100644 index 0000000..f034c2d --- /dev/null +++ b/semantic_functions.prj @@ -0,0 +1,239 @@ +Version: 1.4 +Global + ProjectRoot: . + Built: True + Target: StdEnv + Exec: {Project}\semantic_functions.exe + CodeGen + CheckStacks: False + CheckIndexes: True + Application + HeapSize: 2097152 + StackSize: 512000 + ExtraMemory: 81920 + IntialHeapSize: 204800 + HeapSizeMultiplier: 4096 + ShowExecutionTime: False + ShowGC: False + ShowStackSize: False + MarkingCollector: False + StandardRuntimeEnv: True + Profile + Memory: False + MemoryMinimumHeapSize: 0 + Time: False + Stack: False + Output + Output: ShowConstructors + Font: Courier + FontSize: 9 + WriteStdErr: False + Link + LinkMethod: Static + GenerateRelocations: False + GenerateLinkMap: False + LinkResources: False + ResourceSource: + GenerateDLL: False + ExportedNames: + Paths + Path: {Project} + Precompile: + Postlink: +MainModule + Name: semantic_functions + Dir: {Project} + Compiler + NeverMemoryProfile: False + NeverTimeProfile: False + StrictnessAnalysis: True + ListTypes: StrictExportTypes + ListAttributes: True + Warnings: True + Verbose: True + ReadableABC: False + ReuseUniqueNodes: True + Fusion: False +OtherModules + Module + Name: StdArray + Dir: {Application}\Libraries\StdEnv + Compiler + NeverMemoryProfile: False + NeverTimeProfile: False + StrictnessAnalysis: True + ListTypes: StrictExportTypes + ListAttributes: True + Warnings: True + Verbose: True + ReadableABC: False + ReuseUniqueNodes: True + Fusion: False + Module + Name: StdBool + Dir: {Application}\Libraries\StdEnv + Compiler + NeverMemoryProfile: False + NeverTimeProfile: False + StrictnessAnalysis: True + ListTypes: StrictExportTypes + ListAttributes: True + Warnings: True + Verbose: True + ReadableABC: False + ReuseUniqueNodes: True + Fusion: False + Module + Name: StdChar + Dir: {Application}\Libraries\StdEnv + Compiler + NeverMemoryProfile: False + NeverTimeProfile: False + StrictnessAnalysis: True + ListTypes: StrictExportTypes + ListAttributes: True + Warnings: True + Verbose: True + ReadableABC: False + ReuseUniqueNodes: True + Fusion: False + Module + Name: StdClass + Dir: {Application}\Libraries\StdEnv + Compiler + NeverMemoryProfile: False + NeverTimeProfile: False + StrictnessAnalysis: True + ListTypes: StrictExportTypes + ListAttributes: True + Warnings: True + Verbose: True + ReadableABC: False + ReuseUniqueNodes: True + Fusion: False + Module + Name: StdEnum + Dir: {Application}\Libraries\StdEnv + Compiler + NeverMemoryProfile: False + NeverTimeProfile: False + StrictnessAnalysis: True + ListTypes: StrictExportTypes + ListAttributes: True + Warnings: True + Verbose: True + ReadableABC: False + ReuseUniqueNodes: True + Fusion: False + Module + Name: StdInt + Dir: {Application}\Libraries\StdEnv + Compiler + NeverMemoryProfile: False + NeverTimeProfile: False + StrictnessAnalysis: True + ListTypes: StrictExportTypes + ListAttributes: True + Warnings: True + Verbose: True + ReadableABC: False + ReuseUniqueNodes: True + Fusion: False + Module + Name: StdList + Dir: {Application}\Libraries\StdEnv + Compiler + NeverMemoryProfile: False + NeverTimeProfile: False + StrictnessAnalysis: True + ListTypes: StrictExportTypes + ListAttributes: True + Warnings: True + Verbose: True + ReadableABC: False + ReuseUniqueNodes: True + Fusion: False + Module + Name: StdMisc + Dir: {Application}\Libraries\StdEnv + Compiler + NeverMemoryProfile: False + NeverTimeProfile: False + StrictnessAnalysis: True + ListTypes: StrictExportTypes + ListAttributes: True + Warnings: True + Verbose: True + ReadableABC: False + ReuseUniqueNodes: True + Fusion: False + Module + Name: StdOverloaded + Dir: {Application}\Libraries\StdEnv + Compiler + NeverMemoryProfile: False + NeverTimeProfile: False + StrictnessAnalysis: True + ListTypes: StrictExportTypes + ListAttributes: True + Warnings: True + Verbose: True + ReadableABC: False + ReuseUniqueNodes: True + Fusion: False + Module + Name: StdReal + Dir: {Application}\Libraries\StdEnv + Compiler + NeverMemoryProfile: False + NeverTimeProfile: False + StrictnessAnalysis: True + ListTypes: StrictExportTypes + ListAttributes: True + Warnings: True + Verbose: True + ReadableABC: False + ReuseUniqueNodes: True + Fusion: False + Module + Name: StdString + Dir: {Application}\Libraries\StdEnv + Compiler + NeverMemoryProfile: False + NeverTimeProfile: False + StrictnessAnalysis: True + ListTypes: StrictExportTypes + ListAttributes: True + Warnings: True + Verbose: True + ReadableABC: False + ReuseUniqueNodes: True + Fusion: False + Module + Name: _SystemArray + Dir: {Application}\Libraries\StdEnv + Compiler + NeverMemoryProfile: False + NeverTimeProfile: False + StrictnessAnalysis: True + ListTypes: StrictExportTypes + ListAttributes: True + Warnings: True + Verbose: True + ReadableABC: False + ReuseUniqueNodes: True + Fusion: False + Module + Name: _SystemEnum + Dir: {Application}\Libraries\StdEnv + Compiler + NeverMemoryProfile: False + NeverTimeProfile: False + StrictnessAnalysis: True + ListTypes: StrictExportTypes + ListAttributes: True + Warnings: True + Verbose: True + ReadableABC: False + ReuseUniqueNodes: True + Fusion: False diff --git a/semantic_functions.prp b/semantic_functions.prp new file mode 100644 index 0000000..131e5bc --- /dev/null +++ b/semantic_functions.prp @@ -0,0 +1,78 @@ +Version: 1.4 +MainModule + Name: semantic_functions + Dir: {Project} + Dcl + WindowPosition + X: 10 + Y: 10 + SizeX: 800 + SizeY: 640 + DclOpen: False + IclOpen: True +OtherModules + Module + Name: StdArray + Dir: {Application}\Libraries\StdEnv + DclOpen: False + IclOpen: False + Module + Name: StdBool + Dir: {Application}\Libraries\StdEnv + DclOpen: False + IclOpen: False + Module + Name: StdChar + Dir: {Application}\Libraries\StdEnv + DclOpen: False + IclOpen: False + Module + Name: StdClass + Dir: {Application}\Libraries\StdEnv + DclOpen: False + IclOpen: False + Module + Name: StdEnum + Dir: {Application}\Libraries\StdEnv + DclOpen: False + IclOpen: False + Module + Name: StdInt + Dir: {Application}\Libraries\StdEnv + DclOpen: False + IclOpen: False + Module + Name: StdList + Dir: {Application}\Libraries\StdEnv + DclOpen: False + IclOpen: False + Module + Name: StdMisc + Dir: {Application}\Libraries\StdEnv + DclOpen: False + IclOpen: False + Module + Name: StdOverloaded + Dir: {Application}\Libraries\StdEnv + DclOpen: False + IclOpen: False + Module + Name: StdReal + Dir: {Application}\Libraries\StdEnv + DclOpen: False + IclOpen: False + Module + Name: StdString + Dir: {Application}\Libraries\StdEnv + DclOpen: False + IclOpen: False + Module + Name: _SystemArray + Dir: {Application}\Libraries\StdEnv + DclOpen: False + IclOpen: False + Module + Name: _SystemEnum + Dir: {Application}\Libraries\StdEnv + DclOpen: False + IclOpen: False diff --git a/semantics.tex b/semantics.tex index 7812014..00eca8a 100644 --- a/semantics.tex +++ b/semantics.tex @@ -9,7 +9,9 @@ Om deze redenen hebben we gekozen voor sos.\\ Een toestand in onze semantiek wordt beschreven door drie stacks; input, output en programma. Respectievelijk benoemen we deze met $s_i, s_o, s$ en beschrijven ze de STDIN, STDOUT en interne stack van het programma. Stacks worden -gerepresenteerd als: $s=[e_0, e_1, \dots, e_n]$ waarbij $e_i\in\mathbb{Z}$\\ +gerepresenteerd als: $s=[e_0, e_1, \dots, e_n]$ waarbij $e_i\in\mathbb{Z}$ + en waarbij het bovenste element op de stack gerepresenteerd word door het + eerste element in de lijst.\\ Het transitie systeem zal twee verschillende transities kennen, namelijk:\\ $\langle S, s_i, s_o, s\rangle\Rightarrow\langle S', s_i', s_o', s'\rangle$ en\\ $\langle S, s_i, s_o, s\rangle\Rightarrow\langle s_i', s_o', s'\rangle$\\ @@ -30,7 +32,7 @@ Deze functie haalt het bovenste element van de stack en gooit deze weg.\\ extend functie (e, r. 9):\\ Om een stack uit te kunnen breiden met een element gebruiken we de volgende functie:\\ -$$\mathcal{E} : Stack\rightarrow (\mathbb{Z} \rightarrow Stack)$$\\ +$$\mathcal{E} : \mathbb{Z}\rightarrow (Stack\rightarrow Stack)$$\\ Deze functie neemt een stack en een integer en voegt de integer toe bovenop de stack.\\ @@ -100,24 +102,27 @@ Deze functie haalt de bovenste twee elementen van de stack en stopt 1 bovenop de stack als het tweede bovenste element een hogere waarde heeft als dat van het bovenste element. Anders word 1 bovenop de stack gestopt.\\ -pointer functie (pointer, r. 65):\\ +out number (output stack) functie (outnum, r. 79):\\ +Deze functie past de output stack aan als er een integer naartoe geschreven word:\\ +$$\mathcal{OUTN_{SO}} : Stack \rightarrow Stack$$\\ +Deze functie haalt het bovenste element van de stack en stopt dit element bovenop de output stack.\\ -out number functie (outnum, r. 74):\\ - -in number functie (innum, r. 83):\\ - - - - - -(switch, outchar, inchar)\\ +in number (stack) functie (innum, r. 84):\\ +Deze functie past de stack aan als er een integer naartoe geschreven word:\\ +$$\mathcal{INN_S} : Stack \rightarrow Stack$$\\ +Deze functie haalt het bovenste element van de input stack en stopt dit element bovenop de output stack.\\ +(outchar, inchar)\\ Met behulp van deze gedefinieerde functies kunnen we nu de volgende semantiekregels opstellen:\\ - - \begin{alignat*}{2} +{[comp^1_{sos}]}\qquad & +\frac{\langle S_1, s\rangle \Rightarrow \langle S'_1, s'\rangle} +{\langle S_1 ;S_2, s\rangle \Rightarrow \langle S'_1;S_2, s'\rangle}\\ +{[comp^2_{sos}]}\qquad & +\frac{\langle S_1, s\rangle \Rightarrow \langle s'\rangle} +{\langle S_1 ;S_2, s\rangle \Rightarrow \langle S_2, s'\rangle}\\ {[pop_{sos}]}\qquad & \langle pop, s_i, s_o, s\rangle \Rightarrow \langle s_i, s_o,\mathcal{D}(s)\rangle\\ @@ -148,6 +153,9 @@ Met behulp van deze gedefinieerde functies kunnen we nu de volgende semantiekreg {[pointer_{sos}]} \qquad & \langle pointer, s_i, s_o, s\rangle \Rightarrow \langle s_i, s_o, \mathcal{D}(s)\rangle\\ +{[switch_{sos}]} \qquad & +\langle switch, s_i, s_o, s\rangle \Rightarrow +\langle s_i, s_o, \mathcal{D}(s)\rangle\\ {[push_{sos}]} \qquad & \langle push \: n, s_i, s_o, s\rangle \Rightarrow \langle s_i, s_o, \mathcal{E}(n,s)\rangle\\ @@ -156,18 +164,15 @@ Met behulp van deze gedefinieerde functies kunnen we nu de volgende semantiekreg \langle s_i, s_o, \mathcal{ROLL}(s)\rangle\\ {[innum_{sos}]} \qquad & \langle innum, s_i, s_o, s\rangle \Rightarrow -\langle \mathcal{INN_{SI}}(s_i), s_o, \mathcal{INN_S}(s)\rangle\\ +\langle \mathcal{D}(s_i), s_o, \mathcal{INN_S}(s)\rangle\\ {[outnum_{sos}]} \qquad & \langle outnum, s_i, s_o, s\rangle \Rightarrow -\langle s_i, \mathcal{OUTN_{SO}}(s_o),\mathcal{OUTN_S}(s)\rangle\\ +\langle s_i, \mathcal{OUTN_{SO}}(s_o),\mathcal{D}(s)\rangle\\ {[inchar_{sos}]} \qquad & \langle inchar, s_i, s_o, s\rangle \Rightarrow \langle s_i, s_o, s\rangle\\ {[outchar_{sos}]} \qquad & \langle outchar, s_i, s_o, s\rangle \Rightarrow \langle s_i, s_o, s\rangle\\ -{[switch_{sos}]} \qquad & -\langle switch, s_i, s_o, s\rangle \Rightarrow -\langle s_i, s_o, s\rangle\\ \end{alignat*} diff --git a/todo.txt b/todo.txt index 95e3e0b..bdc9a01 100644 --- a/todo.txt +++ b/todo.txt @@ -12,9 +12,10 @@ annoteren Piet' programma in paint uitleg terminatie Piet' programma Marjolein: -BEZIG wiskundige operaties op stacks definieren -BEZIG onderscheid wiskundige deel -BEZIG natuurlijke taal toevoegen voor semantiekbeschrijving -BEZIG toevoegen functies/regels aan semantiek -toepassen semantiekregels op faculteitsprogramma in Piet' +KLAAR wiskundige operaties op stacks definieren +KLAAR onderscheid wiskundige deel +KLAAR natuurlijke taal toevoegen voor semantiekbeschrijving +KLAAR toevoegen functies/regels aan semantiek +BEZIG toepassen semantiekregels op faculteitsprogramma in Piet' +inchar/outchar eventueel toevoegen aan semantiek? verdere uitleg Piet' -- 2.20.1