ࡱ> ~( J/ 0|DTimes New Roman|dv 0|( 0DComic Sans MSn|dv 0|( 0?B DTahomaans MSn|dv 0|( 00DWingdings MSn|dv 0|( 0?@DCourier NewSn|dv 0|( 0?1 a.  @n?" dd@  @@`` vn #r7.- O."      6 0e0e     A@  A5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|ES"@8uʚ;2Nʚ; g4]d]dv 0pppp@ <4!d!d` 0,<4dddd` 0,g4CdCdv 0pp@ pp<4BdBd` 0,? % Execute_Program3Execute_Statement: Visualize Recursive StructureExecute_StatementExecute_Statement Cont.Execute_Statement Cont.Execute_Statement Cont.Execute_Statement Cont.Execute_Statement Cont.BL Program ExecutionExecution of a BL program as Program object seems simple when done as one or more recursive operations cooperating to execute the whole program What about executing the program one  step at a time? 8Program Execution Continued& The problem seems to be related to the hierarchical, nested structure of Program objects It is difficult to stop and resume execution, and to keep track of a specific  position in the program How can we execute a BL program in steps?ZCode GenerationTranslate program to  linear (i.e., non-nested) structure, e.g., string of low-level (assembly-like) instructions Primitive instructions are translated directly Control structures are replaced with jump instructions User-defined instructions are inlined&ss  An Example@IF next-is-enemy THEN infect ELSE turnright END IF . . .AA Another ExampleCWHILE next-is-empty DO move infect END WHILE turnleft . . .DDBugsWorld Virtual Machine 8Memory Instruction set (target language) Program counter Target Language;Primitive instructions Unconditional jump Conditional jumpsPrimitive InstructionsEMOVE TURNLEFT TURNRIGHT INFECT SKIP HALT Unconditional Jump JUMP addrD) )$  Conditional Jumps5JUMP_IF_NOT_NEXT_IS_EMPTY addr JUMP_IF_NOT_NEXT_IS_NOT_EMPTY addr JUMP_IF_NOT_NEXT_IS_ENEMY addr JUMP_IF_NOT_NEXT_IS_NOT_ENEMY addr JUMP_IF_NOT_NEXT_IS_FRIEND addr JUMP_IF_NOT_NEXT_IS_NOT_FRIEND addr JUMP_IF_NOT_NEXT_IS_WALL addr JUMP_IF_NOT_NEXT_IS_NOT_WALL addr JUMP_IF_NOT_RANDOM addr JUMP_IF_NOT_TRUE addr66 Handling IF Statements/. . . IF condition THEN block END IF . . .00 Handling IF_ELSE Statements Handling WHILE Statements Handling CALL Statements/ ` 33PP` 3333` ___MMM` 13` 333fpKNāvI` j@v۩ῑ΂H` Q_{>?" dd@(?n<d@ `7 `2@`7``2 n?" ddH@ f @`PR    @ ` ` p>>     (     <!" @   TX$d" @   <'"U_ @   T)d">& @   N,"P @   </"{ @   C x2?d?"mU @   6<6 "`  T Click to edit Master title style! !$  0d8 " "  RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S  6@= "@  B*  6B "@`   D*  6|G "`  D*B  s *޽h ? 13 Default Design%     `k (  T +  "+bb P@ # "Dwoh  s *"PP  Bd" P@bb P 0  # "Nyh  s *"P    Bd"P 0 z   <" a*h   s *"    f?d?"+)   < ?"pP  T Click to edit Master title style! !   0Z " `    W#Click to edit Master subtitle style$ $  6 "`p   F*  6D "`p   H*  68 "`  H*B  s *޽h ? 130 P:(    0I P    \*   0PN     ^* d  c $ ?    0XQ  @  RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S  60U `P   \*   6U `   ^* H  0޽h ? ̙33 p\H(  \ \ 0T- P    B*  \ 0.     D*  \ 64 `P   B*  \ 6h8 `   D* H \ 0޽h ? ̙33  %  ~ 0 (    N8c?"P@  N, ?"  BCode Generator  6| ` mTranslator Architecture(L ` P  #  @  T ?" l @  :Parser  T 8c?"` P L ` P  # 0@   T ?" @  = Tokenizer     T 8c?"` P B  ZD8c?"0B  ZD8c?" B  ZD8c?" B  ZD8c?"P  T ?"p  X"string of characters (source code)##  T ?"p   Fstring of tokens  T ?"q   Fabstract program  T ?"p  V string of integers (object code)!!H  0޽h ? 3333E  ``(  `r ` S t4 `    `  `K ??`z Cprocedure_body Execute_Program ( preserves Program& p ) { object Statement body; p.Swap_Body (body); Execute_Statement (body, p); p.Swap_Body (body); }raa aaaeaAH ` 0޽h ? 13#  o#g#p55"(  x  c $t/ `      fw 8c?"0A 9s =   Z 8c?"@P z  P   P,$D0T 0 P  #  PN G     ;!v     fУ 8c?"   ;BLOCK   T 8c?"G )    T 8c?"     B T8c?"     T8c?"     T 8c?"N     B T8c?"      `H 8c?" J  9...   Z 8c?"0 P B   fD8c?"`    fh 8c?"P  Yroot (s).kind = BLOCK(z PP  PP,$D0yN P   P@{N )3   q%    f  8c?")Y =IF test   T 8c?"0 3  B T8c?"fag)   Z 8c?"P B   fD8c?"Pp   f 8c?"   Vroot (s).kind = IF(z P   P ,$D0T gU  # ` P N .0.   %/%    f  8c?".0^ B IF_ELSE test     T 8c?"+ .  !B T8c?"[f$  " T 8c?"^+ *.  # T8c?"f$  $ Z 8c?"gU B %  fD8c?"  &  f, 8c?" B   [root (s).kind = IF_ELSE(z  @ '  @,$D0T  B  (#  ` @~N P ^  ) I W  *  fT 8c?"P   @ WHILE test    + T 8c?"[ V^  ,B T8c?" T  - Z 8c?" B B .  fD8c?" P 0  /  f 8c?" z  Yroot (s).kind = WHILE(8z    0   ,$D0T  p 1# 0   2  fܛ 8c?"( `X  FCALL instruction  3 Z 8c?" pB 4  fD8c?" P  5  f  8c?"   Xroot (s).kind = CALL(H  0޽h ?   *+, !"# 3333  dF(  dr d S 蹽 `    d T ?" w  procedure_body Execute_Statement ( preserves Statement& s, preserves Program& p ) { case_select (s.Kind ()) { Taaaa aaaa a aaaaaaa a aaaaaAH d 0޽h ? 13  hB(  hx h c $,j `    h TϽ ?"+ v case BLOCK: { object Integer pos; while (pos < s.Length_Of_Block ()) { object Statement nested; s.Remove_From_Block (pos, nested); Execute_Statement (nested, p); s.Add_To_Block (pos, nested); pos++; } } break;fwcccc cc cc cccc cccc cccccccc2cc.cc-cccc cccccH h 0޽h ? 13  lA(  lx l c $( `    l T ?"+% = case IF: { object Integer cond; object Statement body; s.Decompose_If (cond, body); if (Evaluate_Condition (cond)) { Execute_Statement (body, p); } s.Compose_If (cond, body); } break;F>cccc cc cccc cccccc(cc cccc cc,cc cc&cc cccccP5C-f"H l 0޽h ? 13.  pn(  px p c $ر `    p T ?": $ case IF_ELSE: { object Integer cond; object Statement if_body, else_body; s.Decompose_If_Else (cond, if_body, else_body); if (Evaluate_Condition (cond)) { Execute_Statement (if_body, p); } else { Execute_Statement (else_body, p); } s.Compose_If_Else (cond, if_body, else_body); } break;Zcc cc cc cccc cccccc;cc cccc cc/cc cc ccc cc1cc cc9cccccccP:V;.H p 0޽h ? 13  tO(  tx t c $ `    t TF ?": =  I case WHILE: { object Integer cond; object Statement body; s.Decompose_While (cond, body); while (Evaluate_Condition (cond)) { Execute_Statement (body, p); } s.Compose_While (cond, body); } break;HJZcccc cc cccc cccccc+cc cccc cc,cc cc)cc cccccP8F0i"H t 0޽h ? 13f     x (  xx x c $8_ `    x T_ ?"p{ \ J case CALL: { object Text inst; s.Decompose_Call (inst); if ((inst ==  move ) or (inst ==  turnleft ) or (inst ==  turnright ) or (inst ==  infect ) or (inst ==  skip )) { Execute_Primitive_Instruction (inst); } else { object Text inst_copy; object Statement body; p.Remove_From_Context (inst, inst_copy, body); Execute_Statement (body, p); p.Add_To_Context (inst_copy, body); } s.Compose_Call (inst); } break;Pcccc cc cc cc$cc ccccccc&ccccc!cc cc5cc cc ccc ccccccccc>cc,cc3cc cc"cc cccccH x 0޽h ? 13  0(  x  c $ `   x  c $<  "  H  0޽h ? ̙33  $(  r  S 3 `   r  S 4  "  H  0޽h ? 3333  $(  r  S \ `   r  S   "  H  0޽h ? 3333  '60(  0r 0 S \ `   x 0 c $t Pp  >v  60 #"."@@@@@@@0P 0 Zq ??.P  M. . . @` 0 Z ??P . K6 @` 0 Z ??. P  Q TURNRIGHT   @` 0 Z ?? .P  K5 @` 0 Z< ??.   I6 @` 0 Zd ?? .  K4 @`  0 Z ??.   LJUMP @`  0 Z ?? .  K3 @`  0 Z ??.P  NINFECT @`  0 Z  ??P.  K2 @`  0 ZP ??.P I5 @` 0 Z|  ??.P K1 @` 0 Z  ??. aJUMP_IF_NOT_NEXT_IS_ENEMY @` 0 Z%  ??. K0 @`B 0 Zo ??B 0 T1 ??B 0 T1 ??PPB 0 T1 ??  B 0 T1 ??  B 0 T1 ??  B 0 T1 ??P P B 0 Zo ??B 0 Zo ??B  0 T1 ??..B !0 Zo ??N8   50`M@ (0  fL)  8c?"l a KIF_ELSE NEXT_IS_ENEMY )0  f*  8c?"*  A CALL infect   +0 Z<2  8c?"P DCALL turnright -0 ZP6  8c?" `0D ;BLOCK .0 Z9  8c?"`D ;BLOCK /0B N8c?""X 00 Z8c?"X 10 Z8c?""L" 20 N8c?"LH 0 0޽h ?O(0-0/0(0.000-0)010.0+020 3333   i a +-8 A(  8x 8 c $da  `   ~ 8 s * b  Pp    00 8 #"2&@@@@@@@@ 8 Zk  ??N0 M. . . @` 8 Zq  ??N0 K7 @` 8 Zy  ??N  PTURNLEFT   @` 8 Zp  ?? N K6 @`  8 Z\  ??Np   I0 @`  8 Z@  ??p N  K5 @`  8 Z@  ??N0 p  LJUMP @`  8 Zܠ  ??0 Np  K4 @`  8 ZȢ  ??N 0  NINFECT @` 8 Z  ?? N0  K3 @` 8 Z  ??N  LMOVE @` 8 Zк  ??N  K2 @` 8 Z  ??Np I6 @` 8 Z  ??pN K1 @` 8 Z  ??N0p aJUMP_IF_NOT_NEXT_IS_EMPTY @` 8 Z  ??0Np K0 @`B 8 Zo ??00B 8 T1 ??ppB 8 T1 ??B 8 T1 ??  B 8 T1 ??0 0 B 8 T1 ??p p B 8 T1 ??  B 8 T1 ??B 8 Zo ??00B 8 Zo ??00B 8 T1 ??N0N0B  8 Zo ??00 "8 # l  8c?" IWHILE NEXT_IS_EMPTY #8 # l  8c?"PQ ? CALL move   $8  `  8c?"9 DCALL turnright %8  `  8c?"0n ;BLOCK &8  `  8c?"`D ;BLOCK '8 T8c?"}}( (8 T8c?"L}x )8@  `8c?"0}H *8 T8c?"Lx +8  `0  8c?"P A CALL infect   ,8 T8c?"}HH 8 0޽h ?_"8%8'8"8&8(8%8#8)8&8$8*8%8+8,8 3333  0|$(  |r | S 8 `   r | S   "  H | 0޽h ? 13  @,$(  ,r , S P]  `   r , S ]   "   H , 0޽h ? 3333  P $(   r  S < `   r  S     H  0޽h ? 3333  $$(  $r $ S  `   r $ S X  `  H $ 0޽h ? 3333  1),<(  <r < S  `   r < S < P0   z @ +< #"2&@@@@@@@@0  < Z ??P p@ M. . . @` < Zhk  ??pP  Ok+n+2 @` < Z: ??0P p Ok+n+1 @`  < Z ?? P 0 O. . . @`  < Zȫ ?? P  Mk+3 @`  < Z ??P p @p Mblock @` < Z ??p P  Mk+2 @` < Z ??P 0 @p  Mk+n+2 @` < Zd ??0 P p  Mk+1 @` < Z ??P @0  ]JUMP_IF_NOT_condition @` < Z ??P 0  Kk @` < Z, ??P @ M. . . @` < Z ??P  Mk-1 @`B < Zo ??@B < T1 ??@B < T1 ??0 @0 B < T1 ??p @p B < T1 ?? P B < T1 ?? P B < T1 ??0P 0B < T1 ??p@pB < Zo ??@B < Zo ??B < T1 ??P P B  < Zo ??@@B ,< # lD8c?? H < 0޽h ? 3333b   &N@(  @r @ S   `    @ 0X   G. . . IF condition THEN if_block ELSE else_block END IF . . ."H n<H 0 N@ #":.           P  >@ Z ??  O. . . @` ;@ Z<} ?? 0 M. . . @` 9@ Zh ?? 0 S k+n1+n2+4   @` 4@ Z ??p  O. . . @` 1@ Z8% ??   LJUMP @` /@ Z- ??  Pk+n1+2 @` ,@ Zh5 ??   Q k+n1+n2+4   @` *@ ZT7 ??  Pk+n1+3 @` '@ Z> ??  R else_block   @` %@ Z`M ??  Pk+n1+4 @` !@ Z(U ?? P  Pif_block   @` @ ZW ??P p Mk+2 @`  @ Zt_ ?? 0P Nk+n1+4 @` @ Zg ??0 P Mk+1 @` @ Z(o ?? 0 ]JUMP_IF_NOT_condition @` @ Zw ?? 0 Kk @` @ Z ??  M. . . @` @ Z ??  Mk-1 @`B @ Zo ??B @ T1 ??B @ T1 ??00B @ T1 ??PPB @ Zo ??00B @ Zo ??0B @ T1 ??  0B @ Zo ??0B  @ T1 ??p pB &@ T1 ?? B +@ T1 ??  B 0@ T1 ??  B 5@ T1 ??  B ?@ T1 ??B J@ # lD8c?? B K@ # lD8c??M @H @ 0޽h ? 3333  aY$-D(  Dr D S X `    D 0p  `  3. . . WHILE condition DO block END WHILE . . ."4 n<4 0 @ -D #":. @@@@@@@@@@0 @ 'D Z\ ??  Ik @` %D Z ??0  Ok+n+3 @` "D Zx ??   LJUMP @`  D Zx ??0  Ok+n+2 @` D Z| ?? @ M. . . @` D Zh ??0  @ Ok+n+4 @` D ZP ??0 @  Ok+n+1 @`  D Z` ??0 @  O. . . @`  D Zp ??0   Mk+3 @`  D Z ??   Mblock @`  D Z ??0   Mk+2 @`  D Z ?? @ Mk+n+4 @` D Z  ??0 @  Mk+1 @` D Z ?? @ ]JUMP_IF_NOT_condition @` D ZL ??0  @ Kk @` D Z! ??  M. . . @` D ZT) ??0   Mk-1 @`B D Zo ??0 B D T1 ??0 B D T1 ??0 @@B D T1 ??0 B D T1 ??0  B D T1 ??0 B D T1 ??0 @ @ B D T1 ??0  B D Zo ??0 @@B D Zo ??0 0 @B D T1 ??  @B D Zo ??@B !D T1 ??0  B &D T1 ??0 B D # lD8c?? H D 0޽h ? 3333K   !H(  Hr H S l> `     H 0  0  VINSTRUCTION my-instruction IS block END my-instruction . . . my-instruction . . ."W n<W+r 0 0  !H #"*@@@@@@0 0 H Z쯹 ?? 0  M. . . @` H Zx ??0 0  Mk+n @` H Z ??0  Ok+n-1 @`  H Z¹ ??0 p  O. . . @`  H Zʹ ??0 0 p Mk+1 @`  H Zҹ ??   Mblock @`  H Zڹ ??0  0 Kk @` H Z ??  M. . . @` H Z ??0   Mk-1 @`B H Zo ??0 B H T1 ??0 B H T1 ??0 0 0B H T1 ??0 p pB H T1 ??0 B H T1 ??0  B H Zo ??0 0 0 B H Zo ??0 0 0 B H T1 ??  0 B H Zo ??0 B H # lD8c?? H H 0޽h ? 33330 @((  ^ S     c $(f @    H  0޽h ? ̙33rxd(U2M9% ;5X18eIyptzЇLs<B Dt( J/ 0|DTimes New Roman|dv 0|( 0DComic Sans MSnOh+'0' hp  PowerPoint Presentation Paolo Bucciaol Paolo Bucci24lMicrosoft PowerPointon@PA%@@E@ G%g   *& &&#TNPP2OMi & TNPP &&TNPP    --- !------ !1.K,---/gw@ IwIw0- &TJv|&--- $TJ^J^|T|v- $^JhJh|^|<- $hJrJr|h|- $rJvJv|r|---&& --- !2,w9--- &`w&--,- $`wjwj`Цu- $jwtwtjf- $tw~w~t- $~ww~---&& & oH&--&&2- $Io C MIy1- $Iy M WI.- $I W aI)- $I a kI#- $I k uI- $I u Ic- $I  I= - $I I- $I I $I I&&&- & $ o HHo&&-&& &&-&&Io &&2- $Io C MIy1- $Iy M WI.- $I W aI)- $I a kI#- $I k uI- $I u Ic- $I  I= - $I I- $I I $I I&- --&& --- !o?P--- &/&--- $/>>/ $>MM> $M\\M- $\ll\ $l{{l- ${{ $- $ $- $- $- $- $- $- $- $!!- $!00!- $0@@0- $@OO@- $O^^O- $^mm^- $m||m- $||- $- $- $- $- $- $- $- $- $- $##- $#22#- $2AA2- $APPA- $P__P- $_nn_- $n}}n- $}}- $- $- $- $- $- $ $- $- $ $$$- $$33$ $3BB3 $BQQB- $QaaQ $appa $pp- $---&& &_)& &_& 1--a9x----T/-- @BComic Sans MS IwIw0- . 2 Code. .2 F Generator.--y-- @BComic Sans MS IwIw0- .*2 ~Translator Architecture$(.&Bb--A-- @BComic Sans MS IwIw0- .2 3Parser.--aA--&&Jb--A=--  .2 3 Tokenizer .--aI--&&N2-- $P'P*|*|' $z0(z!--&&F2-- $H'H*t*t' $r0(r!--&&>{2-- $@'@*l*l' $j0x(j!--&&6s2-- $8'8*d*d' $b0p(b!--&--h -- @BComic Sans MS IwIw0- .2 D string of   . .2 8 characters   . .2 * (source code)   .--h(--  .2 2 string ofs   . .2 >tokens  .--h$--  .2 -abstract  . .2 0programt .--h--  .2 " string ofs   . .2 %integers . .2  (object code)    .--"System 0-&TNPP &Root EntrydO)0Eb@>Current User/SummaryInformation(@'PowerPoint Document( g CALL Statements  Fonts UsedDesign Template Slide Titles_㏛*buccibucciolo Buccig Serviceseans MSnX M |dv 0|( 0"0DWingdings MSnX M |dv 0|( 0@DCourier NewSnX M |dv 0|( 01 a.  @n?" dd@  @@`` vn #r7.- O."      6 0e0e     A@  A5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|ES"@8uʚ;2Nʚ; g4<d<dv 0pppp@ <4!d!d` 0,D M <4dddd` 0,D M g4CdCdv 0pp@ pp<4BdBd` 0,D M ? % Execute_Program3Execute_Statement: Visualize Recursive StructureExecute_StatementExecute_Statement Cont.Execute_Statement Cont.Execute_Statement Cont.Execute_Statement Cont.Execute_Statement Cont.BL Program ExecutionExecution of a BL program as Program object seems simple when done as one or more recursive operations cooperating to execute the whole program What about executing the program one  step at a time? 8Program Execution Continued& The problem seems to be related to the hierarchical, nested structure of Program objects It is difficult to stop and resume execution, and to keep track of a specific  position in the program How can we execute a BL program in steps?ZCode GenerationTranslate program to  linear (i.e., non-nested) structure, e.g., string of low-level (assembly-like) instructions Primitive instructions are translated directly Control structures are replaced with jump instructions User-defined instructions are inlined&ss  An Example@IF next-is-enemy THEN infect ELSE turnright END IF . . .AA Another ExampleCWHILE next-is-empty DO move infect END WHILE turnleft . . .DDBugsWorld Virtual Machine 8Memory Instruction set (target language) Program counter Target Language;Primitive instructions Unconditional jump Conditional jumpsPrimitive Instructions^MOVE TURNLEFT TURNRIGHT INFECT SKIP HALT (denotes end of program) Unconditional Jump JUMP addrDB B$  Conditional Jumps5JUMP_IF_NOT_NEXT_IS_EMPTY addr JUMP_IF_NOT_NEXT_IS_NOT_EMPTY addr JUMP_IF_NOT_NEXT_IS_ENEMY addr JUMP_IF_NOT_NEXT_IS_NOT_ENEMY addr JUMP_IF_NOT_NEXT_IS_FRIEND addr JUMP_IF_NOT_NEXT_IS_NOT_FRIEND addr JUMP_IF_NOT_NEXT_IS_WALL addr JUMP_IF_NOT_NEXT_IS_NOT_WALL addr JUMP_IF_NOT_RANDOM addr JUMP_IF_NOT_TRUE addr66 Handling IF Statements/. . . IF condition THEN block END IF . . .00 Handling IF_ELSE Statements   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Handling WHILE Statements Handling CALL Statements/     +-8 b(  8x 8 c ${ `  { ~ 8 s *{ Pp {  00 8 #"2&@@@@@@@@ 8 Z8by ??N0 M. . . @` 8 Zdy ?DocumentSummaryInformation8t|dv 0|( 0?B DTahomaans MSn|dv 0|( 00DWingdings MSn|dv 0|( 0?@DCourier NewSn|dv 0|( 0?1 a.  @n?" dd@  @@`` vn #r7.- O."      6 0e0e     A@  A5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|ES"@8uʚ;2Nʚ; g4]d]dv 0pppp@ <4!d!d` 0,<4dddd` 0,g4CdCdv 0pp@ pp<4BdBd` 0,? % Execute_Program3Execute_Statement: Visualize Recursive StructureExecute_StatementExecute_Statement Cont.Execute_Statement Cont.Execute_Statement Cont.Execute_Statement Cont.Execute_Statement Cont.BL Program ExecutionExecution of a BL program as Program object seems simple when done as one or more recursive operations cooperating to execute the whole program What about executing the program one  step at a time? 8Program Execution Continued& The problem seems to be related to the hierarchical, nested structure of Program objects It is difficult to stop and resume execution, and to keep track of a specific  position in the program How can we execute a BL program in steps?ZCode GenerationTranslate program to  linear (i.e., non-nested) structure, e.g., string of low-level (assembly-like) instructions Primitive instructions are translated directly Control structures are replaced with jump instructions User-defined instructions are inlined&ss  An Example@IF next-is-enemy THEN infect ELSE turnright END IF . . .AA Another ExampleCWHILE next-is-empty DO move infect END WHILE turnleft . . .DDBugsWorld Virtual Machine 8Memory Instruction set (target language) Program counter Target Language;Primitive instructions Unconditional jump Conditional jumpsPrimitive Instructions^MOVE TURNLEFT TURNRIGHT INFECT SKIP HALT (denotes end of program) Unconditional Jump JUMP addrDB B$  Conditional Jumps5JUMP_IF_NOT_NEXT_IS_EMPTY addr JUMP_IF_NOT_NEXT_IS_NOT_EMPTY addr JUMP_IF_NOT_NEXT_IS_ENEMY addr JUMP_IF_NOT_NEXT_IS_NOT_ENEMY addr JUMP_IF_NOT_NEXT_IS_FRIEND addr JUMP_IF_NOT_NEXT_IS_NOT_FRIEND addr JUMP_IF_NOT_NEXT_IS_WALL addr JUMP_IF_NOT_NEXT_IS_NOT_WALL addr JUMP_IF_NOT_RANDOM addr JUMP_IF_NOT_TRUE addr66 Handling IF Statements/. . . IF condition THEN block END IF . . .00 Handling IF_ELSE Statements Handling WHILE Statements Handling CALL Statements/  P $(   r  S < `   r  S     H  0޽h ? 3333r/E^  E`t( J/ 0|DTimes New RomanX M |dv 0|( 0DComic Sans MSnX M |dv 0|( 0B DTahoma?N0 K7 @` 8 Zly ??N  PTURNLEFT   @` 8 Zty ?? N՜.+,0D    $ On-screen ShowThe Ohio State UniversitytC Times New RomanComic Sans MSTahoma Wingdings Courier NewDefault DesignPowerPoint PresentationExecute_Program4Execute_Statement: Visualize Recursive StructureExecute_StatementExecute_Statement Cont.Execute_Statement Cont.Execute_Statement Cont.Execute_Statement Cont.Execute_Statement Cont.BL Program ExecutionProgram Execution ContinuedCode Generation An ExampleAnother ExampleBugsWorld Virtual MachineTarget LanguagePrimitive InstructionsConditional JumpsHandling IF StatementsHandling IF_ELSE StatementsHandling WHILE StatementsHandlin K6 @`  8 Z|y ??Np   I0 @`  8 Zxy ??p N  K5 @`  8 Z\y ??N0 p  LJUMP @`  8 ZXy ??0 Np  K4 @`  8 ZDy ??N 0  NINFECT @` 8 Z(y ?? N0  K3 @` 8 Z$y ??N  LMOVE @` 8 Zy ??N  K2 @` 8 Zy ??Np I6 @` 8 Zy ??pN K1 @` 8 Zpy ??N0p aJUMP_IF_NOT_NEXT_IS_EMPTY @` 8 ZTy ??0Np K0 @`B 8 Zo ??00B 8 T1 ??ppB 8 T1 ??B 8 T1 ??  B 8 T1 ??0 0 B 8 T1 ??p p B 8 T1 ??  B 8 T1 ??B 8 Zo ??00B 8 Zo ??00B 8 T1 ??N0N0B  8 Zo ??00 "8 # l y 8c?" IWHILE NEXT_IS_EMPTY #8 # l y 8c?"PQ ? CALL move   $8  `y 8c?"\ e CALL turnleft %8  `y 8c?"0n ;BLOCK &8  `y 8c?"`D ;BLOCK '8 T8c?"}}( (8 T8c?"L}x )8@  `8c?"0}H *8 T8c?"Lx +8  `y 8c?"P A CALL infect   ,8 T8c?"}HH 8 0޽h ?_"8%8'8"8&8(8%8#8)8&8$8*8%8+8,8 3333r` z  `wRoot EntrydO)` W_YCurrent UserASummaryInformation(@'PowerPoint Document( g CALL Statements  Fonts UsedDesign Template Slide Titles#_㏛ "Paolo BucciPaolo Buccig Servicese