project= new = n N c C K E B K v V f F l r L G . prog:?B & str$(!B ".bra"):?N & X:?C & put$(str$("Enter name for program [" !N "]:")) & (get':~|!N):?n & @( !n : ( ?B ".bra" | ?B&str$(!n ".bra"):?n ) ) & put$(str$("Enter name for class [" !C "]:")) & (get':~|!C):?c & out$"Enter description of program (finish with two empty lines):" & :?K & 0:?E & whl ' ( get'(,STR):~:?L & !K \n !L:?K & 0:?E | 1+!E:<2:?E&!K \n:?K ) & rev$(str$!K):?K & whl'@(!K:(\n|" "|\t) ?K) & rev$!K:?K & str$("{" !n (!K:|\n !K) "}\n\n"):?K & put$(str$!K,!n,NEW) & ( G = L v . :?L & out $ ( str $ ( "Enter the names of " !arg " for class " !c ". Finish with an empty line." ) ) & whl ' (get':~:?v&!v !L:?L) & !L ) & G$"member variables":?V & G$methods:?F & ' ( $c x S . $c:?x & (S=new=.) & whl ' ( !F:%?f ?F & '(($($f)=.) ()$($S)) : (=?S) ) & whl ' ( !V:%?v ?V & '(($($v)=) ()$($S)) : (=?S) ) & '$($S):(=?!x) & lst$($c,$n,APP) ) : (=?l) & l$ & ' ( get'$n & rmv$(str$($B ".bak")) & ren$($n.str$($B ".bak")) & put$($K,$n,NEW) & lst'($c,$n,APP) & put'(\n,$n,APP) & lst'(r,$n,APP) & put$(str$("\nnew'" ()$c ";\n"),$n,APP) ) : (=?r) & put$(\n,!n,APP) & lst$(r,!n,APP) & put$(str$("\nnew$" !c ";\n"),!n,APP) & out$done;