%!PS-Adobe-2.0 %%DocumentFonts: (atend) %%Title: F:\\LPT\\COMPR\\COMPREH.DOC %%Creator: Lotus Manuscript %%For: EWvA, MRK %%CreationDate: February 26, 1993 %%Pages: (atend) %%BoundingBox: 0 0 595 841 %%EndComments % PostScript Prologue (initialization) for Manuscript % Copyright (c) 1985,1986,1987,1988 Lotus Development Corporation % There is no user servicable code in this file. % set timeouts to infinite statusdict begin 0 setjobtimeout /manualfeedtimeout 3600 def /waittimeout 0 def end % correct bug correction in rev 41.0 /idiv{div cvi}bind def % define User Dictionary /msdict 300 dict def msdict begin /bd{bind def}bind def % Define commonly used things /delay{usertime 5000 add{dup usertime lt{pop exit}if}loop}bd /mfeed{statusdict begin /manualfeed true def end}bd /afeed{statusdict begin /manualfeed false def end}bd /bfeed{ afeed statusdict begin /setpapertray where {pop setpapertray}{pop} ifelse end}bd /dpi{0.24 dup scale}bd % These two are called for each page /inpage false def /begpage{save dpi /inpage true def}bd /endpage{inpage {restore showpage}if }bd % for possible banner /fileinfo {pop pop pop}bd /enddocument {end} bd % these are also used by eqn & gmf /ld{load def}bd /x/exch ld /cu{300 mul 72 div}bd /m/moveto ld /t/translate ld /rm/rmoveto ld /cp/currentpoint ld /st/stroke ld /ln/lineto ld /rlt/rlineto ld /slw/setlinewidth ld /ff/findfont ld /scf/scalefont ld /sf/setfont ld /fs{x /pt x def ff pt cu scf sf}bd % linedraw /li{4 2 roll setlinewidth 3 1 roll moveto 0.0 rlineto st}bd % outline factor /olwid 40.0 def % stroke width for outline /uoslw {pt cu x div slw}bd % relative horizontal move /xm{x currentpoint pop sub 0.0 rmoveto}bd % The basic show /s/show ld % move horizontal and show /ms{xm s}bd % variations % outline show - first printer attribute /ppss{dup cp 3 -1 roll false charpath st x 3 -1 roll stringwidth pop add x moveto}bd /pss{olwid uoslw { ( ) dup 0 4 -1 roll put ppss}forall}bd /ps{pss}bd /mps{xm ps}bd % graybox show - second printer attribute /gb{cp 3 -1 roll pt cu dup 4 div neg 0 x rm dup 0 x rlt x 0 rlt neg 0 x rlt closepath currentgray .9 setgray fill setgray m}bd /usi{dup stringwidth pop gb}bd /us{usi s}bd /xum{x cp pop sub dup gb 0 rmoveto}bd % combinations of PD1 and PD2 /ups{usi pss}bd /mups{xm ups}bd /mus{xm us}bd % define a new encoding vector (code page 850 based) /PC 256 array def StandardEncoding PC copy pop /dotaccent/bullet /quotesingle/quotedblleft/quotedblright/quotesinglbase /quotedblbase/guilsinglleft/guilsinglright/.notdef /ellipsis/perthousand/.notdef/.notdef/paragraph/section/dagger/daggerdbl /OE/oe/fi/fl/endash/emdash/fraction/Ydieresis PC 6 26 getinterval astore pop /Ccedilla/udieresis/eacute/acircumflex/adieresis/agrave/aring/ccedilla /ecircumflex/edieresis/egrave/idieresis/icircumflex/igrave/Adieresis/Aring /Eacute/ae/AE/ocircumflex/odieresis/ograve/ucircumflex/ugrave /ydieresis/Odieresis/Udieresis/oslash/sterling/Oslash/.notdef/florin /aacute/iacute/oacute/uacute/ntilde/Ntilde/ordfeminine/ordmasculine /questiondown/.notdef/.notdef/onehalf/onequarter/exclamdown/guillemotleft/guillemotright /.notdef/.notdef/.notdef/.notdef/.notdef/Aacute/Acircumflex/Agrave /.notdef/.notdef/.notdef/.notdef/.notdef/cent/yen/.notdef /.notdef/grave/.notdef/circumflex/tilde/.notdef/atilde/Atilde /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/currency /eth/Eth/Ecircumflex/Edieresis/Egrave/dotlessi/Iacute/Icircumflex /Idieresis/.notdef/.notdef/.notdef/.notdef/brokenbar/Igrave/.notdef /Oacute/germandbls/Ocircumflex/Ograve/otilde/Otilde/.notdef/thorn /Thorn/Uacute/Ucircumflex/Ugrave/yacute/Yacute/.notdef/acute /.notdef/.notdef/.notdef/threequarters/paragraph/section/.notdef/cedilla /ring/dieresis/periodcentered/onesuperior/threesuperior/twosuperior/.notdef/.notdef PC 128 128 getinterval astore pop % duplicate fonts with a new encoding vector /recd 5 dict def /pcft {recd begin /ncs PC def /nfn x def /bfn x def /bfd bfn findfont def /nf bfd maxlength dict def bfd{x dup dup /FID ne x /Encoding ne and {x nf 3 1 roll put}{pop pop}ifelse }forall nf/FontName nfn put nf/Encoding ncs put nfn nf definefont pop end}bd /fs{x /pt x def ff pt cu scf sf}bd % used by eqn /Times-Roman/TR pcft /Times-Bold/TRB pcft /Times-Italic/TRI pcft /Times-BoldItalic/TRBI pcft /Helvetica/HV pcft /Helvetica-Bold/HVB pcft /Helvetica-Oblique/HVO pcft /Helvetica-BoldOblique/HVBO pcft /Courier/CR pcft /Courier-Bold/CRB pcft /Sym{/Symbol fs}bd % Bit map image data decompression code /xx 0 def /yy 0 def /xbytes 0 def /lbuf 1200 string def /obuf 600 string def /bval def /blacks 96 string def /whites 96 string def 0 1 95 {whites x 255 put} for /dispatch [ { dup 47 le {32 sub 4 bitshift x pop 1}{ dup 63 le {x pop 48 sub bval x get 3 copy put x 1 add x 0} { dup 79 le {62 sub} { 80 sub { 3 copy put x 1 add x } repeat 0 }ifelse }ifelse }ifelse }bind { 32 sub add 3 copy put x 1 add x 0 } bind { 32 sub x pop add 255 0 }bind { 32 sub x pop 3 copy getinterval whites 0 3 index getinterval x copy pop add 255 0 }bind { 32 sub x pop 3 copy getinterval blacks 0 3 index getinterval x copy pop add 0 0 }bind ]def % read a raster line and unpack /readx{ obuf 0 255 0 currentfile lbuf readline pop {x dispatch x get exec} forall pop pop pop 0 xbytes getinterval}bd /mspic{ /yy x def/xx x def /xbytes xx 8 idiv def xx yy 1 [xx 0 0 0 yy sub 0 yy]{readx}image}bd /Helvetica/fA pcft/FA{/fA fs}bd /Helvetica-Oblique/fAI pcft/FAI{/fAI fs}bd /Helvetica-Bold/fAB pcft/FAB{/fAB fs}bd /Helvetica-BoldOblique/fAIB pcft/FAIB{/fAIB fs}bd /Times-Roman/fB pcft/FB{/fB fs}bd /Times-Italic/fBI pcft/FBI{/fBI fs}bd /Times-Bold/fBB pcft/FBB{/fBB fs}bd /Times-BoldItalic/fBIB pcft/FBIB{/fBIB fs}bd /Courier/fH pcft/FH{/fH fs}bd /Courier-Oblique/fHI pcft/FHI{/fHI fs}bd /Courier-Bold/fHB pcft/FHB{/fHB fs}bd /Courier-BoldOblique/fHIB pcft/FHIB{/fHIB fs}bd /AvantGarde-Book/fL pcft/FL{/fL fs}bd /AvantGarde-BookOblique/fLI pcft/FLI{/fLI fs}bd /AvantGarde-Demi/fLB pcft/FLB{/fLB fs}bd /AvantGarde-DemiOblique/fLIB pcft/FLIB{/fLIB fs}bd (F:\\LPT\\COMPR\\COMPREH.DOC)(EWvA, MRK)(February 26, 1993)fileinfo %%EndProlog %%Page: 0 1 delay mfeed begpage 18 FAB 531 2978 m (The CLiP Style of Literate Programming)s 12 FBB 770 2684 m (Eric. W. van Ammers and Mark R. Kramer)s 12 FB 931 2474 m (Computer Science Department)s 873 2414 m (Wageningen Agricultural University)s 681 2354 m (Dreijenplein 2, 6703 HB Wageningen, The Netherlands)s 728 2294 m (voice: +31 \(0\)8370 83356, fax: +31 \(0\)8370 84731)s 960 2234 m (e-mail: ammers@rcl.wau.nl)s 12 FBB 484 1844 m (Abstract:)s 12 FB 531 1784 m (Literate)s 699(programming)ms 985(is)ms 1032(a)ms 1068(method)ms 1231(to)ms 1283(integrate)ms 1472(programs)ms 1674(with)ms 1777(their)ms 1882(docu-)ms 484 1724 m (mentation.)s 724(Compilable)ms 986(modules)ms 1183(are)ms 1273(no)ms 1351(separate)ms 1543(entities,)ms 1728(but)ms 1820(they)ms 1934(are)ms 484 1664 m (extracted)s 679(from)ms 789(the)ms 863(documentation.)ms 531 1604 m (Most)s 648(literate)ms 802(programming)ms 1089(tools)ms 1201(use)ms 1283(explicit)ms 1448(commands)ms 1680(in)ms 1733(the)ms 1809(formatter)ms 484 1544 m (input)s 600(files)ms 700(to)ms 753(guide)ms 878(the)ms 953(extraction)ms 1167(process.)ms 1343(The)ms 1435(CLiP)ms 1554(approach)ms 1751(presented)ms 1957(in)ms 484 1484 m (this)s 575(paper)ms 706(relies)ms 833(on)ms 903(coding)ms 1058(style)ms 1172(instead.)ms 1346(This)ms 1454(makes)ms 1601(the)ms 1682(code)ms 1795(extraction)ms 484 1424 m (completely)s 718(independent)ms 975(of)ms 1030(the)ms 1103(text)ms 1191(processing)ms 1417(environment.)ms 1695(Thus)ms 1808(CLiP)ms 1926(can)ms 484 1364 m (even)s 590(be)ms 650(used)ms 754(in)ms 806(combination)ms 1068(with)ms 1170(a)ms 1204(modern)ms 1370(wordprocessor.)ms 531 1304 m (In)s 594(addition)ms 780(the)ms 862(CLiP)ms 990(mechanism)ms 1239(is)ms 1294(independent)ms 1560(of)ms 1624(programming)ms 1918(lan-)ms 484 1244 m (guages)s 635(as)ms 689(well,)ms 800(and)ms 885(the)ms 958(CLiP)ms 1077(style)ms 1183(is)ms 1229(easily)ms 1358(adapted)ms 1526(to)ms 1578(any)ms 1663(language.)ms 12 FBB 484 1064 m (Keywords:)s 12 FB 531 1004 m (Literate)s 697(programming,)ms 993(Language)ms 1202(independent)ms 1458(literate)ms 1608(programming,)ms 1904(Text)ms 484 944 m (processing)s 716(independent)ms 978(literate)ms 1135(programming,)ms 1438(Multi-file/multi-module)ms 1937(lit-)ms 484 884 m (erate)s 593(programming,)ms 890(Documentation,)ms 1224(Coding)ms 1383(style.)ms 8 FB 295 204 m (The)s 355(CLiP)ms 433(Style)ms 510(of)ms 546(Literate)ms 658(Programming)ms 850(\(4.074,)ms 953(26-feb-93\))ms 12 FB 2075 204 m ( 1 )s 50 2 2130 216 li 50 2 2020 216 li endpage %%Page: 1 2 delay mfeed begpage 12 FAB 295 3176 m (1 Introduction)s 12 FB 295 3089 m (Maintenance)s 566(is)ms 613(the)ms 688(dominating)ms 929(cost)ms 1023(factor)ms 1153(of)ms 1208(a)ms 1244(software)ms 1429(system.)ms 1594(Estimations)ms 1844(are)ms 1918(that)ms 2007(mainten-)ms 295 3029 m (ance)s 395(programmers)ms 671(spend)ms 797(up)ms 857(to)ms 905(50%)ms 1006(of)ms 1057(their)ms 1158(time)ms 1256(simply)ms 1401(trying)ms 1530(to)ms 12 FBI 1578(understand)ms 12 FB 1812(what)ms 1919(the)ms 1989(code)ms 2093(does)ms 295 2969 m ([Parikh)s 464(and)ms 558(Zvegintov)ms 786(1983].)ms 938(Also)ms 1054(it)ms 1104(has)ms 1193(been)ms 1310(observed)ms 1512(over)ms 1624(and)ms 1718(over)ms 1829(that)ms 1926(conventional)ms 295 2909 m (documentation)s 606(is)ms 654(often)ms 771(inadequate)ms 1002(for)ms 1075(maintenance)ms 1342(purposes.)ms 1547(Programmers)ms 1831(on)ms 1895(a)ms 1932(maintenance)ms 295 2849 m (job)s 374(tend)ms 477(to)ms 531(ignore)ms 675(the)ms 752(documentation)ms 1066(and)ms 1154(rely)ms 1248(on)ms 1314(the)ms 1391(code)ms 1501(listings)ms 1662(instead.)ms 1832(The)ms 1925(fact)ms 2016(that)ms 2107(in)ms 2162(a)ms 295 2789 m (conventional)s 569(set-up)ms 707(the)ms 783(documentation)ms 1096(and)ms 1184(the)ms 1261(code)ms 1371(are)ms 1448(distinct)ms 1611(documents,)ms 1856(is)ms 1905(generally)ms 2107(rec-)ms 295 2729 m (ognized)s 466(as)ms 521(a)ms 556(contributing)ms 813(factor)ms 943(since)ms 1059(it)ms 1100(presents)ms 1277(a)ms 1312(serious)ms 1467(obstacle)ms 1643(to)ms 1695(keep)ms 1803(the)ms 1877(code)ms 1985(consistent)ms 295 2669 m (with)s 395(its)ms 454(description.)ms 700(The)ms 789(problem)ms 967(made)ms 1087(Brooks)ms 1243(ponder)ms 1393(on)ms 1455(the)ms 1527(idea)ms 1622(of)ms 1675("self-documenting)ms 2057(code",)ms 295 2609 m (that)s 385(is)ms 433(an)ms 495(improved)ms 702(documentation)ms 1014(method)ms 1179(which)ms 1316(integrates)ms 1526(high)ms 1630(quality)ms 1783(documentation)ms 2096(with)ms 295 2549 m (actual)s 426(code)ms 533([Brooks)ms 707(1982].)ms 342 2489 m (Literate)s 514(programming)ms 804(promises)ms 1001(a)ms 1041(significant)ms 1269(step)ms 1367(towards)ms 1542(more)ms 1662(comprehensible)ms 1996(programs)ms 295 2429 m ([Knuth)s 450(1984].)ms 593(The)ms 684(basic)ms 800(idea)ms 897(is)ms 944(twofold.)ms 1126(Firstly)ms 1270(the)ms 1345(program)ms 1528(code)ms 1636(and)ms 1722(its)ms 1782(description)ms 2018(are)ms 2093(inte-)ms 295 2369 m (grated)s 434(in)ms 487(such)ms 594(a)ms 630(way)ms 728(that)ms 818(compilable)ms 1054(units)ms 1166(can)ms 1250(be)ms 1312(extracted)ms 1510(automatically,)ms 1809(thus)ms 1907(implementing)ms 295 2309 m (the)s 374(ideal)ms 490(of)ms 551(self-documenting)ms 920(code)ms 1033(in)ms 1091(an)ms 1157(even)ms 1270(more)ms 1391(extreme)ms 1571(form.)ms 1700(Secondly)ms 1905(the)ms 1985(integrated)ms 295 2249 m (document)s 504(is)ms 549(no)ms 611(longer)ms 750(presented)ms 954(as)ms 1007(a)ms 1041(plain)ms 1153(ASCII-file,)ms 1391(but)ms 1467(rather)ms 1596(as)ms 1649(a)ms 1683(type-set)ms 1853(document)ms 2062(where)ms 295 2189 m (all)s 357(sorts)ms 464(of)ms 518(\(typo\)graphical)ms 839(features)ms 1010(can)ms 1092(be)ms 1151(applied)ms 1311(to)ms 1362(increase)ms 1539(its)ms 1598(explanatory)ms 1847(power.)ms 342 2129 m (Evidently)s 575(literate)ms 752(programming)ms 1063(requires)ms 1263(a)ms 1324(mechanism)ms 1591(to)ms 1668(create)ms 1826(compilable)ms 2087(units)ms 355 2069 m ( henceforth)s 595(called)ms 12 FBI 728(modules )ms 12 FB 981(from)ms 1092(the)ms 1167(documentation)ms 1478(files.)ms 1590(Such)ms 1704(a)ms 1740(mechanism)ms 1982(is)ms 2029(called)ms 2162(a)ms 295 2009 m (module)s 465(extractor.)ms 675(In)ms 737(most)ms 854(literate)ms 1013(programming)ms 1306(settings)ms 1479(the)ms 1560(documentation)ms 1878(is)ms 1931(produced)ms 2137(be)ms 295 1949 m (means)s 433(of)ms 486(a)ms 519(formatter.)ms 728(In)ms 780(that)ms 866(case)ms 963(the)ms 1035(literate)ms 1185(programmer)ms 1442(has)ms 1520(in)ms 1570(fact)ms 1655(to)ms 1705(work)ms 1819(with)ms 1918(four)ms 2012(different)ms 295 1889 m (languages)s 509(simultaneously,)ms 839(namely)ms 1001(the)ms 1077(explanation)ms 1325(language)ms 1520(\(typically)ms 1726(English\),)ms 1923(the)ms 1998(program-)ms 295 1829 m (ming)s 407(language)ms 597(\(e.g.)ms 695(Pascal\),)ms 862(the)ms 932(language)ms 1122(to)ms 1171(instruct)ms 1330(the)ms 1401(formatter)ms 1596(and)ms 1678(the)ms 1749(language)ms 1939(to)ms 1987(command)ms 295 1769 m (the)s 368(module)ms 531(extractor)ms 721([Reenskaug)ms 969(1989].)ms 342 1709 m (The)s 430(CLiP)ms 546(approach)ms 740(distinguishes)ms 1012(itself)ms 1123(from)ms 1231(other)ms 1344(literate)ms 1494(programming)ms 1777(environments)ms 2060(in)ms 2109(that)ms 295 1649 m (it)s 340(applies)ms 12 FBI 500(style)ms 12 FB 609(\(or)ms 686(programming)ms 976(conventions\))ms 1252(rather)ms 1387(than)ms 12 FBI 1491(commands)ms 12 FB 1722(to)ms 1779(conduct)ms 1955(the)ms 2035(module)ms 295 1589 m (extraction)s 510(process.)ms 688(This)ms 793(concept)ms 964(sets)ms 1054(the)ms 1131(programmer)ms 1394(entirely)ms 1562(free)ms 1656(to)ms 1710(use)ms 1792(any)ms 1880(text)ms 1971(processing)ms 295 1529 m (system)s 445(he)ms 504(prefers.)ms 667(In)ms 720(fact)ms 807(CLiP)ms 924(cooperates)ms 1149(just)ms 1233(as)ms 1287(easily)ms 1415(with)ms 1515(a)ms 1549(batch)ms 1669(oriented)ms 1845(formatter)ms 2042(as)ms 2096(with)ms 295 1469 m (an)s 354(interactive)ms 577(word-processor.)ms 912(A)ms 960(second)ms 1111(important)ms 1317(quality)ms 1468(of)ms 1522(CLiP)ms 1639(is)ms 1685(that)ms 1772(it)ms 1812(processes)ms 2015(virtually)ms 295 1409 m (any)s 379(programming)ms 664(language.)ms 869(However,)ms 1078(in)ms 1129(this)ms 1214(respect)ms 1368(it)ms 1408(is)ms 1454(not)ms 1530(unique.)ms 342 1349 m (The)s 436(rest)ms 526(of)ms 584(this)ms 674(paper)ms 802(consists)ms 977(of)ms 1036(five)ms 1131(main)ms 1248(parts.)ms 1375(In)ms 1434(section 2)ms 1630(we)ms 1705(discuss)ms 1867(the)ms 1945(literate)ms 2101(pro-)ms 295 1289 m (gramming)s 518(paradigm.)ms 738(We)ms 826(then)ms 930(continue)ms 1121(with)ms 1228(an)ms 1294(exposition)ms 1521(of)ms 1581(the)ms 1660(CLiP)ms 1784(approach)ms 1986(which)ms 2126(we)ms 295 1229 m (illustrate)s 480(by)ms 541(an)ms 599(example)ms 779(in)ms 828(the)ms 900(appendices.)ms 1145(In)ms 1198(section 4)ms 1387(the)ms 1459(CLiP)ms 1575(technique)ms 1780(is)ms 1824(compared)ms 2032(to)ms 2082(other)ms 295 1169 m (literate)s 443(programming)ms 726(tools)ms 833(around.)ms 994(Section 5)ms 1192(summarizes)ms 1440(the)ms 1512(experiences)ms 1758(that)ms 1842(have)ms 1947(been)ms 2051(gained)ms 295 1109 m (so)s 357(far.)ms 443(Finally)ms 603(we)ms 680(reflect)ms 825(on)ms 894(some)ms 1017(important)ms 1230(developments)ms 1526(of)ms 1586(literate)ms 1743(programming)ms 2033(that)ms 2126(we)ms 295 1049 m (foresee.)s 12 FAB 295 926 m (2 The literate programming paradigm)s 12 FB 295 839 m (Knuth's)s 468(original)ms 636(paper)ms 760(describes)ms 958(literate)ms 1110(programming)ms 1394(as)ms 1448([Knuth)ms 1603(1984])ms 484 779 m ("Instead)s 659(of)ms 711(imagining)ms 925(that)ms 1010(our)ms 1087(main)ms 1198(task)ms 1289(is)ms 1333(to)ms 1383(instruct)ms 1543(a)ms 12 FBI 1576(computer)ms 12 FB 1776(what)ms 1883(to)ms 1933(do,)ms 484 719 m (let)s 553(us)ms 616(concentrate)ms 866(rather)ms 1001(on)ms 1070(explaining)ms 1301(to)ms 12 FBI 1359(human)ms 12 FBI 1514(beings)ms 12 FB 1663(what)ms 1780(we)ms 1857(want)ms 1973(a)ms 484 659 m (computer)s 685(to)ms 736(do".)ms 295 599 m (We)s 378(would)ms 518(like)ms 607(to)ms 660(add)ms 747(the)ms 822(phrase)ms 967("in)ms 1040(such)ms 1146(a)ms 1183(way)ms 1280(that)ms 1370(it)ms 1412(can)ms 1495(be)ms 1557(interpreted)ms 1788(by)ms 1852(a)ms 1889(computer")ms 2112(and)ms 295 539 m (consider)s 476(this)ms 561(an)ms 621(almost)ms 767(perfect)ms 918(definition.)ms 342 479 m (Thus)s 451(a)ms 483(literate)ms 631(program)ms 810(contains)ms 986(the)ms 12 FBI 1057(actual)ms 1192(code)ms 12 FB 1296(\(the)ms 1383(lines)ms 1487(that)ms 1571(end-up)ms 1720(in)ms 1768(the)ms 1839(modules\))ms 2035(divided)ms 295 419 m (in)s 346(suitable)ms 513(chunks.)ms 680(In)ms 734(general)ms 893(each)ms 997(of)ms 1051(those)ms 1169(chunks)ms 1322(will)ms 1412(be)ms 1472(accompanied)ms 1748(with)ms 1849(a)ms 12 FBI 1883(description)ms 12 FB 2121(\(an)ms 295 359 m (explanation)s 541(in)ms 593(a)ms 629(suitable)ms 797(form\).)ms 937(The)ms 1028(author)ms 1169(integrates)ms 1377(the)ms 1451(two)ms 1539(in)ms 1591(a)ms 1627(way)ms 1723(that)ms 1812(in)ms 1864(his)ms 1935(opinion)ms 2101(pro-)ms 8 FB 295 204 m (The)s 355(CLiP)ms 433(Style)ms 510(of)ms 546(Literate)ms 658(Programming)ms 850(\(4.074,)ms 953(26-feb-93\))ms 12 FB 2075 204 m ( 2 )s 50 2 2130 216 li 50 2 2020 216 li 50 2 912 2081 li 50 2 300 2081 li endpage %%Page: 2 3 delay mfeed begpage 12 FB 295 3179 m (vides)s 414(the)ms 489(best)ms 583(explanation)ms 831(of)ms 886(the)ms 961(program.)ms 1157(This)ms 1260(integrated)ms 1473(text)ms 1562(we)ms 1635(will)ms 1726(call)ms 1812(the)ms 12 FBI 1887(documentation)ms 12 FB 295 3119 m (of)s 348(the)ms 421(system.)ms 584(To)ms 652(have)ms 758(a)ms 792(computer)ms 993(interpret)ms 1174(the)ms 1247(code,)ms 1366(the)ms 1439(documentation)ms 1748(has)ms 1827(to)ms 1878(be)ms 1937(processed)ms 2146(to)ms 295 3059 m (realise)s 438(modules.)ms 632(In)ms 686(this)ms 771(section)ms 925(we)ms 996(will)ms 1086(explore)ms 1249(the)ms 1322(ingredients)ms 1557(to)ms 1608(achieve)ms 1773(this)ms 1858(objective.)ms 11 FAB 295 2939 m (2.1 Explanation to human beings)s 12 FB 295 2857 m (Programming)s 583(is)ms 630(a)ms 665(painful)ms 821(process)ms 984(involving)ms 1189(many)ms 1314(distinct)ms 1474(steps.)ms 1600(With)ms 1714(every)ms 1838(step)ms 1932(we)ms 2004(associate)ms 295 2797 m (a)s 332(design)ms 478(decision)ms 660(which)ms 797(in)ms 851(turn)ms 947(is)ms 996(implemented)ms 1272(by)ms 1338(a)ms 1375(certain)ms 1526(amount)ms 1692(of)ms 1749('real')ms 1872(code.)ms 1994(A)ms 2046(literate)ms 295 2737 m (program)s 480(documents)ms 712(the)ms 788(relation)ms 957(between)ms 1139(code)ms 1249(and)ms 1337(design)ms 1483(decision)ms 1665(as)ms 1722(an)ms 1785(integrated)ms 2001(entity.)ms 2143(In)ms 295 2677 m (this)s 376(way)ms 469(the)ms 539(ideal)ms 646(of)ms 697(self-documenting)ms 1056(code)ms 1160(is)ms 1203(closely)ms 1354(approximated.)ms 1651(As)ms 1716(an)ms 1772(additional)ms 1982(advantage)ms 295 2617 m (the)s 370(programmer)ms 631(tends)ms 751(to)ms 804(express)ms 969(the)ms 1044(design)ms 1189(step)ms 1284(in)ms 1337(terms)ms 1462(of)ms 1518(actual)ms 1652(names)ms 1794(as)ms 1850(they)ms 1950(show)ms 2070(in)ms 2123(the)ms 295 2557 m (program)s 475(code.)ms 594(In)ms 647(a)ms 681(conventional)ms 950(environment,)ms 1227(where)ms 1361(description)ms 1594(and)ms 1678(program)ms 1859(code)ms 1965(are)ms 2037(distinct)ms 295 2497 m (documents,)s 535(the)ms 607(tendency)ms 799(is)ms 843(rather)ms 971(to)ms 1021(express)ms 1182(descriptions)ms 1435(in)ms 1485(more)ms 1598(abstract)ms 1765(terms)ms 1887(and)ms 1971(names)ms 2109(that)ms 295 2437 m (often)s 410(do)ms 472(not)ms 549(return)ms 681(as)ms 735(identifiers)ms 950(in)ms 1001(the)ms 1075(program.)ms 342 2377 m (Design)s 500(steps)ms 616(per)ms 696(se)ms 755(are)ms 832(fairly)ms 957(autonomous)ms 1218(entities.)ms 1391(It)ms 1438(is)ms 1488(by)ms 1555(their)ms 1663(mutual)ms 1818(relationship)ms 2071(that)ms 2162(a)ms 295 2317 m (certain)s 443(desired)ms 601(functionality)ms 869(is)ms 916(realised.)ms 1096(Therefore)ms 1306(the)ms 1380(hierarchy)ms 1582(of)ms 1637(the)ms 1711(design)ms 1854(steps)ms 1967(is)ms 2013(a)ms 2048(crucial)ms 295 2257 m (factor)s 424(to)ms 477(understand)ms 709(the)ms 784(structure)ms 972(of)ms 1027(a)ms 1062(software)ms 1248(system.)ms 1413(This)ms 1515(hierarchy)ms 1717(usually)ms 1875(does)ms 1980(not)ms 2057(reflect)ms 295 2197 m (the)s 373(chronological)ms 665(order)ms 787(of)ms 846(the)ms 924(design)ms 1072(decisions)ms 1275(that)ms 1367(have)ms 1479(been)ms 1590(made)ms 1716([Parnas)ms 1883(1986].)ms 2029(Literate)ms 295 2137 m (programming)s 591(invites)ms 748(the)ms 833(programmer)ms 1104(to)ms 1167(explain)ms 1338(the)ms 1423(hierarchy)ms 1636(in)ms 1699(any)ms 1795(order)ms 1924(he)ms 1996(considers)ms 295 2077 m (appropriate)s 537(and)ms 624(in)ms 678(terms)ms 804(of)ms 860(the)ms 936(code)ms 1045(that)ms 1135(is)ms 1183(actually)ms 1356(involved.)ms 1559(Whether)ms 1746(this)ms 1833(exposition)ms 2056(is)ms 2104(top-)ms 295 2017 m (down,)s 431(bottom-up,)ms 664(middle-out)ms 896(or)ms 950(any)ms 1035(other)ms 1150(suitable)ms 1318(way)ms 1414(is)ms 1460(entirely)ms 1625(up)ms 1687(to)ms 1739(the)ms 1812(author.)ms 342 1957 m (The)s 430(freedom)ms 608(to)ms 657(present)ms 813(the)ms 884(design)ms 1026(hierarchy)ms 1225(in)ms 1275(the)ms 1347(order)ms 1463(desired)ms 1619(by)ms 1680(the)ms 1751(programmer/author)ms 2151(is)ms 295 1897 m (considered)s 534(a)ms 578(vital)ms 690(aspect)ms 837(of)ms 901(the)ms 985(literate)ms 1146(programming)ms 1441(paradigm)ms 1652([Bentley)ms 1847(1986a/b].)ms 2059(Knuth)ms 295 1837 m (appreciates)s 532(this)ms 617(property)ms 800(in)ms 851(that)ms 939(it)ms 980("...)ms 1051(allows)ms 1194(a)ms 1229(person)ms 1375(to)ms 1427(express)ms 1590(programs)ms 1791(in)ms 1843(a)ms 1878('stream)ms 2041(of)ms 2096(con-)ms 295 1777 m (sciousness')s 535(order.")ms 686([Knuth)ms 840(1984].)ms 342 1717 m (Programming)s 636(is)ms 689(not)ms 773(a)ms 815(rational)ms 988(design)ms 1138(process)ms 1308([Parnas)ms 1478(1986].)ms 1627(Design)ms 1788(steps)ms 1908(are)ms 1989(proposed,)ms 295 1657 m (explored,)s 497(thrown)ms 654(away)ms 775(and)ms 862(replaced)ms 1047(by)ms 1112(alternatives.)ms 1371(For)ms 1455(this)ms 1543(reason)ms 1689(it)ms 1732(is)ms 1780(customary)ms 2004(in)ms 2058(a)ms 2096(con-)ms 295 1597 m (ventional)s 494(environment)ms 760(to)ms 812(produce)ms 986(the)ms 1060(description)ms 1296(of)ms 1351(a)ms 1386(program)ms 1569(only)ms 1671(after)ms 1775(its)ms 1836(design)ms 1980(has)ms 2059(stabil-)ms 295 1537 m (ized.)s 402(With)ms 513(literate)ms 663(programming)ms 947(the)ms 1019(work)ms 1134(process)ms 1295(is)ms 1340(much)ms 1462(more)ms 1576(flexible.)ms 1753(Since)ms 1875(the)ms 1948(code)ms 2054(and)ms 2137(its)ms 295 1477 m (description)s 536(are)ms 616(one)ms 707(and)ms 799(the)ms 879(same)ms 1001(document)ms 1217(it)ms 1264(is)ms 1317(easy)ms 1425(to)ms 1483(jot)ms 1555(down)ms 1685(any)ms 1776(noteworthy)ms 2023(remarks)ms 295 1417 m (together)s 467(with)ms 565(the)ms 635(related)ms 780(code.)ms 895(Whether)ms 1076(or)ms 1127(not)ms 1200(these)ms 1311(remarks)ms 1481(will)ms 1568(mature)ms 1716(into)ms 1802(actual)ms 1930(descriptions,)ms 295 1357 m (depends)s 470(mainly)ms 621(on)ms 683(the)ms 756(way)ms 851(the)ms 924(design)ms 1066(stabilizes.)ms 1276(But)ms 1360(the)ms 1433(remarks)ms 1606(as)ms 1660(such)ms 1763(are)ms 1836(secured)ms 2001(and)ms 2085(there)ms 295 1297 m (is)s 340(no)ms 403(chance)ms 554(they)ms 653(will)ms 743(be)ms 803(accidentally)ms 1057(forgotten)ms 1253(in)ms 1304(the)ms 1378(final)ms 1482(documentation.)ms 342 1237 m (A)s 392(literate)ms 546(program)ms 730(can)ms 814(\(and)ms 918(should\))ms 1083(be)ms 1144(organized)ms 1356(as)ms 1413(a)ms 1450(textbook)ms 1639(and)ms 1726(a)ms 1763(notorious)ms 1967(example)ms 2151(is)ms 295 1177 m (the)s 373(TEX-program)ms 673(by)ms 740(Knuth)ms 882([Knuth)ms 1040(1986].)ms 1187(Thus,)ms 1316(for)ms 1391(the)ms 1469(sake)ms 1575(of)ms 1634(explaining)ms 1862(the)ms 1940(documented)ms 295 1117 m (program,)s 492(we)ms 565(can)ms 650(make)ms 774(use)ms 856(of)ms 913(all)ms 978(those)ms 1099(features)ms 1273(that)ms 1363(are)ms 1440(used)ms 1547(for)ms 1620(ordinary)ms 1805(textbooks)ms 2015(too.)ms 2107(The)ms 295 1057 m (benefits)s 470(of)ms 529(the)ms 607(so)ms 668(called)ms 12 FBI 805(book)ms 919(format)ms 1069(paradigm)ms 12 FB 1281(are)ms 1359(described)ms 1567(by)ms 1634(Oman)ms 1774(and)ms 1863(Cook,)ms 2001(who)ms 2104(also)ms 295 997 m (conducted)s 516(experimental)ms 793(studies)ms 948(to)ms 1003(verify)ms 1138(those)ms 1260(claims)ms 1406([Oman)ms 1561(1990a/1990b].)ms 1867(It)ms 1914(turns)ms 2030(out)ms 2109(that)ms 295 937 m (organizing)s 526(information)ms 779(as)ms 838(components)ms 1097(of)ms 1155(a)ms 1195(book)ms 1312(\(i.e.)ms 1407(preface,)ms 1584(table)ms 1698(of)ms 1757(contents,)ms 1954(indices)ms 2112(and)ms 295 877 m (pagination,)s 537(chapters,)ms 734(sections,)ms 926(paragraphs,)ms 1177(sentences,)ms 1399(punctuation,)ms 1667(type)ms 1771(style,)ms 1897(character)ms 2098(case)ms 295 817 m (etc.\))s 398(provides)ms 586(a)ms 624(variety)ms 779(of)ms 836(access)ms 980(methods)ms 1165(which)ms 1303(have)ms 1414(a)ms 1452(significant)ms 1679(impact)ms 1831(on)ms 1897(program)ms 2082(com-)ms 295 757 m (prehension.)s 539(Also)ms 647(facilities)ms 832(like)ms 919(figures,)ms 1084(schemes,)ms 1278(drawings,)ms 1487(tables,)ms 1629(etc.)ms 1713(greatly)ms 1864(extend)ms 2011(the)ms 2085(scale)ms 295 697 m (of)s 349(gadgets)ms 514(that)ms 601(can)ms 683(be)ms 743(thrown)ms 897(in)ms 949(for)ms 1019(explanatory)ms 1268(proposes.)ms 11 FAB 295 576 m (2.2 Interpretation by a computer)s 12 FB 295 494 m (The)s 387(relationship)ms 637(between)ms 818(design)ms 963(decisions)ms 1164(becomes)ms 1353(manifest)ms 1540(when)ms 1663(a)ms 1700(design)ms 1845(step)ms 1940(is)ms 1987(expressed)ms 295 434 m (in)s 350(terms)ms 477(of)ms 536(design)ms 683(steps)ms 799(described)ms 1007(elsewhere)ms 1223(in)ms 1279(the)ms 1356(literate)ms 1512(program.)ms 1710(Of)ms 1779(course)ms 1926(conventional)ms 295 374 m (references)s 514(to)ms 566(names)ms 708(are)ms 782(solved)ms 927(by)ms 990(the)ms 1065(language)ms 1259(environment)ms 1526(in)ms 1579(question.)ms 1774(But)ms 1860(in)ms 1913(a)ms 1949(literate)ms 2101(pro-)ms 8 FB 295 204 m (The)s 355(CLiP)ms 433(Style)ms 510(of)ms 546(Literate)ms 658(Programming)ms 850(\(4.074,)ms 953(26-feb-93\))ms 12 FB 2075 204 m ( 3 )s 50 2 2130 216 li 50 2 2020 216 li endpage %%Page: 3 4 delay mfeed begpage 12 FB 295 3179 m (gramming)s 518(environment)ms 789(the)ms 868(order)ms 991(of)ms 1051(the)ms 1130(code)ms 1242(fragments)ms 1460(has)ms 1545(to)ms 1602(be)ms 1667(indicated)ms 1868(as)ms 1928(well.)ms 2044(This)ms 2151(is)ms 295 3119 m (accomplished)s 596(by)ms 674(placeholders)ms 953(that)ms 1055(refer)ms 1177(to)ms 1243(other)ms 1372(code)ms 1494(fragments)ms 1721(in)ms 1787(the)ms 1875(documentation.)ms 295 3059 m (Typically,)s 510(a)ms 544(pseudostatement)ms 888(is)ms 933(a)ms 966(placeholder)ms 1211(for)ms 1281(the)ms 1353(code)ms 1459(fragment)ms 1651(of)ms 1703(the)ms 1776(supplemental)ms 2054(design)ms 295 2999 m (step.)s 409(At)ms 481(module-generation-time)ms 986(a)ms 1029(literate)ms 1190(programming)ms 1484(system)ms 1644(will)ms 12 FBI 1744(automatically)ms 12 FB 2040(expand)ms 295 2939 m (every)s 419(placeholder)ms 667(into)ms 758(the)ms 833(intended)ms 1019(code)ms 1128(described)ms 1333(elsewhere)ms 1547(in)ms 1600(the)ms 1675(documentation.)ms 1998(Since)ms 2123(the)ms 295 2879 m (module)s 463(generation)ms 692(process)ms 861(is)ms 913(not)ms 995(disturbed)ms 1199(by)ms 1268(human)ms 1422(intervention,)ms 1695(the)ms 1774(modules)ms 1962(necessarily)ms 295 2819 m (reflect)s 435(the)ms 508(code)ms 615(as)ms 669(it)ms 709(appears)ms 874(in)ms 926(the)ms 999(documentation.)ms 1321(This)ms 1423(property)ms 1604(of)ms 1658(literate)ms 1810(programs)ms 2011(has)ms 2090(been)ms 295 2759 m (dubbed)s 12 FBI 454(verisimilitude)ms 12 FB 742([Van)ms 854(Wyk)ms 964(1990].)ms 342 2699 m (The)s 435(documentation)ms 747(of)ms 804(a)ms 842(computer)ms 1046(program)ms 1231(in)ms 1285(general)ms 1448(extends)ms 1616(over)ms 1720(many)ms 1847(different)ms 2034(files.)ms 2148(A)ms 295 2639 m (program)s 478(itself)ms 593(is)ms 641(seldom)ms 800(monolithic;)ms 1045(virtually)ms 1228(always)ms 1382(it)ms 1424(is)ms 1472(composed)ms 1689(of)ms 1745(several)ms 1901(independently)ms 295 2579 m (compilable)s 529(modules.)ms 722(Sometimes)ms 956(it)ms 996(may)ms 1094(be)ms 1153(convenient)ms 1384(to)ms 1435(be)ms 1494(able)ms 1589(to)ms 1640(derive)ms 1777(several)ms 1930(versions)ms 2109(of)ms 2162(a)ms 295 2519 m (program)s 477(\(e.g.)ms 578(a)ms 613(test)ms 695(version)ms 855(containing)ms 1079(additional)ms 1292(debugging)ms 1516(code)ms 1623(or)ms 1677(different)ms 1862(versions)ms 2041(for)ms 2112(dif-)ms 295 2459 m (ferent)s 425(platforms\).)ms 660(For)ms 744(these)ms 861(reasons)ms 1025(it)ms 1066(is)ms 1114(highly)ms 1256(desirable)ms 1450(that)ms 1540(a)ms 1576(literate)ms 1729(programming)ms 2015(environ-)ms 295 2399 m (ment)s 408(does)ms 513(not)ms 590(impose)ms 748(restrictions)ms 983(on)ms 1047(the)ms 1121(way)ms 1218(the)ms 1292(modules)ms 1475(relate)ms 1599(to)ms 1652(the)ms 1726(documentation.)ms 2049(Thus)ms 2162(a)ms 295 2339 m (literate)s 444(programming)ms 727(tool)ms 816(should)ms 960(be)ms 1018(able)ms 1112(to)ms 1162(extract)ms 1309(an)ms 1367(arbitrary)ms 1550(set)ms 1616(of)ms 1669(program)ms 1849(modules)ms 2029(from)ms 2137(an)ms 295 2279 m (arbitrary)s 479(set)ms 547(of)ms 601(documentation)ms 911(files.)ms 12 FAB 295 2156 m (3 The CLiP approach to literate programming)s 12 FB 295 2069 m (In)s 352(the)ms 429(CLiP)ms 550(approach)ms 749(the)ms 826(preparation)ms 1069(of)ms 1126(printed)ms 1284(documentation)ms 1597(is)ms 1646(totally)ms 1789(decoupled)ms 2010(from)ms 2123(the)ms 295 2009 m (code)s 400(extraction.)ms 623(The)ms 712(one)ms 795(and)ms 878(only)ms 978(function)ms 1156(of)ms 1208(the)ms 1280(tool)ms 1369(CLiP)ms 1486(itself)ms 1597(is)ms 1641(to)ms 1691(extract)ms 1838(the)ms 1910(code)ms 2015(from)ms 2123(the)ms 295 1949 m (documentation;)s 618(CLiP)ms 736(stands)ms 874(for)ms 945("Code)ms 1083(from)ms 1193(Literate)ms 1361(Program".)ms 342 1889 m (CLiP)s 459(can)ms 540(be)ms 599(used)ms 703(in)ms 754(combination)ms 1016(with)ms 1117(any)ms 1201(formatting)ms 1424(tool)ms 1513(and/or)ms 1653(word-processor,)ms 1988(as)ms 2042(long)ms 2143(as)ms 295 1829 m (plain)s 411(text)ms 503(files)ms 606(are)ms 683(available)ms 881(as)ms 939(source)ms 1086(files)ms 1189(for)ms 1264(the)ms 1342(module)ms 1508(extraction.)ms 1737(With)ms 1854('traditional')ms 2110(for-)ms 295 1769 m (matters)s 455(like)ms 543(troff)ms 644(or)ms 699(\(La\)TeX)ms 887(the)ms 961(input)ms 1077(files)ms 1176(of)ms 1231(the)ms 1305(formatter)ms 1504(can)ms 1586(be)ms 1646(used)ms 1751(\(see)ms 1844(fig. 1a\).)ms 2014(To)ms 2083(use)ms 2162(a)ms 295 1709 m (modern)s 459(word-processor,)ms 794(the)ms 867(CLiP)ms 985(source)ms 1127(files)ms 1225(have)ms 1331(to)ms 1381(be)ms 1440(generated)ms 1647(by)ms 1708(a)ms 1742(suitable)ms 1910(ASCII-export)ms 295 1649 m (from)s 404(the)ms 478(word-processor)ms 801(\(see)ms 894(fig. 1b\).)ms 396 479 m (Figure 1a: CLiP and a word-processor)s 1414 479 m (Figure 1b: CLiP and a formatter)s /-save0- save def /showpage {} def 1381 569 translate 2362 2990 div 300 72 div mul 3342 4230 div 300 72 div mul scale 72 300 div 72 300 div scale 0 setlinecap 0 setlinejoin 5 setmiterlimit /itr {transform round exch round exch itransform}bind def /diag{ { 2{x cvi dup dx mod sub}repeat 2 copy newpath cnt{ dy add 2 copy moveto 4 2 roll x dx add x 2 copy lineto stroke 4 2 roll }repeat pop pop }if pop pop }bind def /hatch{ gsave 1 slw [] 0 setdash eoclip /dx x def /dy dx def pathbbox 4 copy 3 -1 roll sub 3 -2 roll sub sub dx idiv 2 add /cnt x def x pop 2 index x dx add 4 2 roll 4 index diag /dy dy neg def 3 index diag pop pop grestore }bind def newpath 1 slw [] 0 setdash 23 275 itr m 209 275 itr ln 209 13 itr ln 23 13 itr ln 23 275 itr ln st 35 275 itr m 35 287 itr ln 221 287 itr ln 221 25 itr ln 209 25 itr ln st 221 36 itr m 233 36 itr ln 233 299 itr ln 46 299 itr ln 46 287 itr ln st 58 299 itr m 58 311 itr ln 244 311 itr ln 244 49 itr ln 233 49 itr ln st 244 60 itr m 256 60 itr ln 256 323 itr ln 70 323 itr ln 70 311 itr ln st [] 0 setdash /HV findfont 10 scalefont setfont 33 262 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 34 250 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 34 238 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 34 226 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 34 214 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 34 202 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 34 190 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 34 178 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 34 166 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 34 155 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 34 143 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 34 131 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 34 119 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 34 107 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 34 95 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 34 83 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 34 71 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 34 59 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 34 47 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 34 35 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath /TR findfont 49 scalefont setfont 347 323 itr m (Compiler/Linker) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 13 1195 itr m (Wordprocessor) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath [] 0 setdash 522 171 itr m 834 171 itr ln st 487 91 t 85 84 scale 0 0 1 -67.5 67.6 arc 1 85 div 1 84 div scale -487 -91 t st 800 91 t 84 84 scale 0 0 1 -67.3 67.4 arc 1 84 div 1 84 div scale -800 -91 t st 834 15 itr m 522 15 itr ln st [] 0 setdash /HV findfont 49 scalefont setfont 713 136 itr m (Executables) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm dup stringwidth pop round cvi neg 2 idiv 0 rm show newpath /HV findfont 41 scalefont setfont 713 76 itr m (\(binary\)) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm dup stringwidth pop round cvi neg 2 idiv 0 rm show newpath [] 0 setdash 522 598 itr m 834 598 itr ln st 487 517 t 85 85 scale 0 0 1 -67.3 67.4 arc 1 85 div 1 85 div scale -487 -517 t st 800 517 t 84 85 scale 0 0 1 -67.1 67.2 arc 1 84 div 1 85 div scale -800 -517 t st 834 442 itr m 522 442 itr ln st [] 0 setdash /HV findfont 49 scalefont setfont 713 563 itr m (Modules) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm dup stringwidth pop round cvi neg 2 idiv 0 rm show newpath /HV findfont 41 scalefont setfont 713 503 itr m (\(ASCII\)) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm dup stringwidth pop round cvi neg 2 idiv 0 rm show newpath [] 0 setdash 721 868 itr m 721 634 itr ln st 721 597 itr m 730 634 itr ln 712 634 itr ln closepath 0.00 0.00 0.00 setrgbcolor gsave eofill grestore 0.00 setgray st 721 442 itr m 721 207 itr ln st 721 170 itr m 730 207 itr ln 712 207 itr ln closepath 0.00 0.00 0.00 setrgbcolor gsave eofill grestore 0.00 setgray st [] 0 setdash /TR findfont 49 scalefont setfont 554 749 itr m (CLiP) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath [] 0 setdash 523 1257 itr m 835 1257 itr ln st 487 1177 t 85 85 scale 0 0 1 -67.3 67.4 arc 1 85 div 1 85 div scale -487 -1177 t st 800 1177 t 84 85 scale 0 0 1 -67.1 67.2 arc 1 84 div 1 85 div scale -800 -1177 t st 835 1101 itr m 523 1101 itr ln st [] 0 setdash /HV findfont 49 scalefont setfont 713 1222 itr m (Source files) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm dup stringwidth pop round cvi neg 2 idiv 0 rm show newpath /HV findfont 41 scalefont setfont 713 1163 itr m (\(?????\)) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm dup stringwidth pop round cvi neg 2 idiv 0 rm show newpath [] 0 setdash 523 1024 itr m 835 1024 itr ln st 487 944 t 85 85 scale 0 0 1 -67.3 67.4 arc 1 85 div 1 85 div scale -487 -944 t st 800 944 t 84 85 scale 0 0 1 -67.1 67.2 arc 1 84 div 1 85 div scale -800 -944 t st 835 868 itr m 523 868 itr ln st [] 0 setdash /HV findfont 49 scalefont setfont 713 989 itr m (Export files) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm dup stringwidth pop round cvi neg 2 idiv 0 rm show newpath /HV findfont 41 scalefont setfont 713 930 itr m (\(ASCII\)) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm dup stringwidth pop round cvi neg 2 idiv 0 rm show newpath [] 0 setdash 217 1138 itr m 217 944 itr ln 530 944 itr ln st 566 944 itr m 530 953 itr ln 530 935 itr ln closepath 0.00 0.00 0.00 setrgbcolor gsave eofill grestore 0.00 setgray st 372 1176 itr m 530 1176 itr ln st 566 1176 itr m 530 1186 itr ln 530 1167 itr ln closepath 0.00 0.00 0.00 setrgbcolor gsave eofill grestore 0.00 setgray st 140 1138 itr m 140 360 itr ln st 140 323 itr m 149 360 itr ln 130 360 itr ln closepath 0.00 0.00 0.00 setrgbcolor gsave eofill grestore 0.00 setgray st -save0- restore /-save0- save def /showpage {} def 424 569 translate 2362 3223 div 300 72 div mul 2788 3803 div 300 72 div mul scale 72 300 div 72 300 div scale 0 setlinecap 0 setlinejoin 5 setmiterlimit /itr {transform round exch round exch itransform}bind def /diag{ { 2{x cvi dup dx mod sub}repeat 2 copy newpath cnt{ dy add 2 copy moveto 4 2 roll x dx add x 2 copy lineto stroke 4 2 roll }repeat pop pop }if pop pop }bind def /hatch{ gsave 1 slw [] 0 setdash eoclip /dx x def /dy dx def pathbbox 4 copy 3 -1 roll sub 3 -2 roll sub sub dx idiv 2 add /cnt x def x pop 2 index x dx add 4 2 roll 4 index diag /dy dy neg def 3 index diag pop pop grestore }bind def newpath 1 slw [] 0 setdash 14 303 itr m 219 303 itr ln 219 14 itr ln 14 14 itr ln 14 303 itr ln st 27 303 itr m 27 316 itr ln 232 316 itr ln 232 27 itr ln 219 27 itr ln st 232 40 itr m 245 40 itr ln 245 329 itr ln 39 329 itr ln 39 316 itr ln st 52 329 itr m 52 343 itr ln 257 343 itr ln 257 54 itr ln 245 54 itr ln st 257 67 itr m 270 67 itr ln 270 356 itr ln 65 356 itr ln 65 343 itr ln st [] 0 setdash /HV findfont 12 scalefont setfont 25 288 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 25 275 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 25 262 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 25 249 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 25 236 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 25 223 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 25 210 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 25 196 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 25 183 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 25 170 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 25 157 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 25 144 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 25 131 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 25 118 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 25 105 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 25 91 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 25 78 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 25 65 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 25 52 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath 25 39 itr m (~~~~~~~~~~~~~~~~~~~~~~~~) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath /TR findfont 54 scalefont setfont 370 356 itr m (Compiler/Linker) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath [] 0 setdash 350 1039 itr m 566 1039 itr ln st 606 1039 itr m 566 1049 itr ln 566 1028 itr ln closepath 0.00 0.00 0.00 setrgbcolor gsave eofill grestore 0.00 setgray st [] 0 setdash 176 1064 itr m (Editor) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath [] 0 setdash 554 188 itr m 898 188 itr ln st 516 100 t 93 93 scale 0 0 1 -67.3 67.4 arc 1 93 div 1 93 div scale -516 -100 t st 860 100 t 93 93 scale 0 0 1 -67.3 67.4 arc 1 93 div 1 93 div scale -860 -100 t st 898 16 itr m 554 16 itr ln st [] 0 setdash /HV findfont 54 scalefont setfont 764 150 itr m (Executables) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm dup stringwidth pop round cvi neg 2 idiv 0 rm show newpath /HV findfont 45 scalefont setfont 764 84 itr m (\(binary\)) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm dup stringwidth pop round cvi neg 2 idiv 0 rm show newpath [] 0 setdash 554 658 itr m 898 658 itr ln st 516 570 t 93 93 scale 0 0 1 -67.3 67.4 arc 1 93 div 1 93 div scale -516 -570 t st 860 570 t 93 93 scale 0 0 1 -67.3 67.4 arc 1 93 div 1 93 div scale -860 -570 t st 898 486 itr m 554 486 itr ln st [] 0 setdash /HV findfont 54 scalefont setfont 764 619 itr m (Modules) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm dup stringwidth pop round cvi neg 2 idiv 0 rm show newpath /HV findfont 45 scalefont setfont 764 554 itr m (\(ASCII\)) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm dup stringwidth pop round cvi neg 2 idiv 0 rm show newpath [] 0 setdash 555 1127 itr m 898 1127 itr ln st 516 1039 t 93 93 scale 0 0 1 -67.3 67.4 arc 1 93 div 1 93 div scale -516 -1039 t st 860 1039 t 93 93 scale 0 0 1 -67.3 67.4 arc 1 93 div 1 93 div scale -860 -1039 t st 898 955 itr m 555 955 itr ln st [] 0 setdash /HV findfont 54 scalefont setfont 764 1089 itr m (Source files) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm dup stringwidth pop round cvi neg 2 idiv 0 rm show newpath /HV findfont 45 scalefont setfont 764 1024 itr m (\(ASCII\)) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm dup stringwidth pop round cvi neg 2 idiv 0 rm show newpath [] 0 setdash 781 956 itr m 781 697 itr ln st 781 657 itr m 792 697 itr ln 771 697 itr ln closepath 0.00 0.00 0.00 setrgbcolor gsave eofill grestore 0.00 setgray st 782 486 itr m 782 227 itr ln st 782 187 itr m 792 227 itr ln 772 227 itr ln closepath 0.00 0.00 0.00 setrgbcolor gsave eofill grestore 0.00 setgray st 654 953 itr m 654 911 itr ln 185 911 itr ln 185 396 itr ln st 185 356 itr m 195 396 itr ln 174 396 itr ln closepath 0.00 0.00 0.00 setrgbcolor gsave eofill grestore 0.00 setgray st [] 0 setdash /TR findfont 54 scalefont setfont 614 824 itr m (CLiP) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show newpath /TR findfont 54 scalefont setfont 99 526 itr m 90 rotate (Formatter) currentfont /FontBBox get 3 get currentfont /FontMatrix get 3 get mul 0.800 mul neg 0 exch rm show -90 rotate newpath -save0- restore 8 FB 295 204 m (The)s 355(CLiP)ms 433(Style)ms 510(of)ms 546(Literate)ms 658(Programming)ms 850(\(4.074,)ms 953(26-feb-93\))ms 12 FB 2075 204 m ( 4 )s 50 2 2130 216 li 50 2 2020 216 li endpage %%Page: 4 5 delay mfeed begpage 12 FB 295 3179 m (The)s 386(independence)ms 675(of)ms 730(text)ms 819(processing)ms 1046(and)ms 1132(CLiPping)ms 1340(was)ms 1432(one)ms 1517(of)ms 1573(our)ms 1653(initial)ms 1783(requirements.)ms 2071(Other)ms 295 3119 m (requirements)s 567(included)ms 751(a)ms 785(total)ms 886(independence)ms 1173(of)ms 1226(target)ms 1352(\(programming\))ms 1669(language)ms 1861(and)ms 1945(the)ms 2018(freedom)ms 295 3059 m (to)s 346(describe)ms 526(several)ms 681(modules)ms 863(in)ms 915(one)ms 1000(document)ms 1211(or)ms 1265(a)ms 1300(set)ms 1369(of)ms 1424(related)ms 1573(documents.)ms 1815(We)ms 1897(return)ms 2030(to)ms 2082(these)ms 295 2999 m (ideas)s 412(in)ms 466(section)ms 622(3.3.)ms 712(Last)ms 813(but)ms 892(not)ms 971(least)ms 1077(we)ms 1150(wanted)ms 1309(the)ms 1385(code)ms 1495(contained)ms 1704(in)ms 1758(the)ms 1834(documentation)ms 2146(to)ms 295 2939 m (look)s 396(natural.)ms 560(More)ms 681(specifically,)ms 936(it)ms 976(should)ms 1122(not)ms 1199(contain)ms 1358(special)ms 1510(commands)ms 1739(for)ms 1810(the)ms 1883(code)ms 1990(extractor.)ms 342 2879 m (The)s 436(placeholders)ms 705(introduced)ms 935(in)ms 991(the)ms 1068(process)ms 1234(of)ms 1293(literate)ms 1448(programming)ms 1737(must)ms 1850(look)ms 1956(natural,)ms 2123(yet)ms 295 2819 m (have)s 408(to)ms 467(be)ms 533(distinguished)ms 820(from)ms 936('normal')ms 1131(code.)ms 1257(Placeholders)ms 1532(may)ms 1637(be)ms 1704(used)ms 1815(to)ms 1874(represent)ms 2076(pseu-)ms 295 2759 m (do-statements,)s 597(but)ms 672(also)ms 764(to)ms 815(indicate)ms 985(locations)ms 1177(where)ms 1311(definitions,)ms 1550(declarations,)ms 1815(externals)ms 2008(etc.)ms 2090(have)ms 295 2699 m (to)s 347(be)ms 409(included.)ms 607(In)ms 663(fact)ms 752(the)ms 827(nature)ms 966(of)ms 1022(the)ms 1097('code')ms 1239(to)ms 1292(be)ms 1353(inserted)ms 1525(does)ms 1631(not)ms 1709(really)ms 1837(matter:)ms 1993(even)ms 2101(data)ms 295 2639 m (files)s 397(may)ms 500(be)ms 564(organised)ms 775(in)ms 831(this)ms 920(way.)ms 1033(Usually,)ms 1218(in)ms 1273(algorithm)ms 1484(development)ms 1759(the)ms 1837(placeholders)ms 2107(\(i.e.)ms 295 2579 m (pseudocode\))s 562(are)ms 639(represented)ms 884(in)ms 938(the)ms 1015(form)ms 1127(of)ms 1184(comments)ms 1405(inside)ms 1539(fragments)ms 1754(of)ms 1811(code.)ms 1933(CLiP)ms 2054(adopts)ms 295 2519 m (this)s 382(convention)ms 620(for)ms 694(all)ms 759(other)ms 877(placeholders)ms 1146(as)ms 1203(well.)ms 1317(Thus)ms 1432(in)ms 1487(the)ms 1563(CLiP)ms 1684(approach)ms 1883(all)ms 1948(information)ms 295 2459 m (relevant)s 466(to)ms 515(the)ms 587(code)ms 692(extraction)ms 902(is)ms 946(represented)ms 1187(by)ms 1247(a)ms 1280(naturally)ms 1468(looking)ms 1631(coding)ms 1778(style,)ms 1895(viz.)ms 1979(comments)ms 295 2399 m (that)s 382(resemble)ms 575(pseudo-statements.)ms 342 2339 m (This)s 440(representation)ms 733(is)ms 777(expounded)ms 1006(in)ms 1054(the)ms 1125(following)ms 1330(subsections:)ms 1584(first)ms 1674(we)ms 1743(look)ms 1841(at)ms 1887(the)ms 1958(bare)ms 2054(syntax)ms 295 2279 m (of)s 352(CLiP,)ms 486(next)ms 588(some)ms 709(additional)ms 925(conventions)ms 1182(are)ms 1259(presented.)ms 1479(In)ms 1537(section)ms 1694(3.3)ms 1772(we)ms 1847(investigate)ms 2079(some)ms 295 2219 m (advanced)s 495(ways)ms 609(of)ms 662(using)ms 782(CLiP.)ms 912(The)ms 1001(appendices)ms 1234(A)ms 1282(and)ms 1366(B)ms 1411(contain)ms 1569(a)ms 1603(small,)ms 1735(yet)ms 1808(complete,)ms 2015(example)ms 295 2159 m (of)s 345(a)ms 377(literate)ms 525(program)ms 704(in)ms 752(CLiP)ms 867(style)ms 970(which)ms 1102(is)ms 1144(augmented)ms 1373(with)ms 1471(line)ms 1556(numbers.)ms 1750(The)ms 1837(numbers)ms 2018(between)ms 295 2099 m ("<")s 376(and)ms 461(">")ms 542(in)ms 594(the)ms 667(discussion)ms 888(below)ms 1023(refer)ms 1130(to)ms 1181(these)ms 1296(lines.)ms 11 FAB 295 1979 m (3.1 Basic syntax of CLiP)s 12 FB 295 1897 m (In)s 350(the)ms 424(structure)ms 613(of)ms 668(a)ms 704(CLiP-document,)ms 1050(as)ms 1105(far)ms 1174(as)ms 1229(module)ms 1393(extraction)ms 1606(is)ms 1653(concerned,)ms 1885(we)ms 1957(may)ms 2057(distin-)ms 295 1837 m (guish)s 415(four)ms 511(syntax)ms 654(levels:)ms 342 1777 m (1.)s 391(division)ms 564(in)ms 615(active)ms 746(parts)ms 855(with)ms 956(a)ms 990(special)ms 1141(meaning)ms 1325(to)ms 1375(CLiP)ms 1493(\(code)ms 1616(fragments\))ms 1844(and)ms 1928(passive)ms 2087(parts)ms 392 1717 m (which)s 526(CLiP)ms 644(ignores)ms 804(\(descriptions\),)ms 342 1657 m (2.)s 392(structure)ms 579(of)ms 633(the)ms 707(active)ms 839(parts:)ms 962(the)ms 1036(segments,)ms 342 1597 m (3.)s 392(internal)ms 557(structure)ms 744(of)ms 798(segments,)ms 342 1537 m (4.)s 392(the)ms 465(concrete)ms 647(syntax.)ms 295 1477 m (The)s 382(first)ms 473(three)ms 583(levels)ms 710(constitute)ms 915(the)ms 986(abstract)ms 1152(syntax)ms 1293(in)ms 1342(which)ms 1474(the)ms 1545(basic)ms 1658(entities)ms 1813(are)ms 1884(complete)ms 2078(lines.)ms 295 1417 m (At)s 357(the)ms 431(fourth)ms 565(level)ms 675(the)ms 749(internal)ms 914(structure)ms 1101(of)ms 1155(these)ms 1271(lines)ms 1378(is)ms 1424(taken)ms 1544(into)ms 1635(account.)ms 342 1357 m (The)s 432(purpose)ms 604(of)ms 659(the)ms 733(extraction)ms 946(tool)ms 1037(is)ms 1084(to)ms 1136(process)ms 1299(only)ms 1401(those)ms 1519(lines)ms 1627(that)ms 1715('look)ms 1834(like')ms 1939(code)ms 2046(or)ms 2101(pro-)ms 295 1297 m (gramming)s 517(language)ms 715(comments)ms 938(\(all)ms 1021(numbered)ms 1238(lines\).)ms 1379(To)ms 1452(keep)ms 1563(the)ms 1642(parser)ms 1781(independent)ms 2042(of)ms 2101(pro-)ms 295 1237 m (gramming)s 520(languages,)ms 753(only)ms 862(comment)ms 1068(lines)ms 1183(with)ms 1292(a)ms 1334(special)ms 1493(appearance)ms 1738(trigger)ms 1892(the)ms 1973(process)ms 2143(of)ms 295 1177 m (CLiPping.)s 514(We)ms 596(call)ms 681(these)ms 796(lines)ms 903(CLiP-lines)ms 1132(.)ms 342 1117 m (At)s 412(the)ms 494(first)ms 595(level)ms 713(of)ms 775(syntax)ms 926(we)ms 1005(distinguish)ms 1245(descriptions)ms 1508(\(all)ms 1595(unnumbered)ms 1865(lines\))ms 1997(and)ms 2090(code)ms 295 1057 m (fragments,)s 519(in)ms 571(the)ms 644(terminology)ms 901(of)ms 956(CLiP)ms 1074(called)ms 1206('stubs')ms 1354(\(e.g.)ms 1456(1-7,)ms 1547(8-32,)ms 1664(37-38,)ms 1805(39-41,)ms 1947(49-75\):)ms 10 FL 531 969 m (Source-file)s 753(==)ms 815(Description)ms 1063(\()ms 1090(Stub)ms 1202(Description)ms 1439(\))ms 7.2 FB 1455 991 m (*)s 12 FB 295 892 m (At)s 356(the)ms 428(second)ms 578(level)ms 686(the)ms 758(internal)ms 922(structure)ms 1108(of)ms 10 FL 1161(Stub)ms 12 FB (s)s 1280(is)ms 1325(introduced.)ms 1562(Each)ms 1673(stub)ms 1768(starts)ms 1884(with)ms 1985(a)ms 2018(segment)ms 295 832 m (of)s 351(CLiP-lines)ms 583(stating)ms 732(the)ms 808(name)ms 931(\(and)ms 1035(optionally)ms 1253(some)ms 1374(properties\))ms 1606(of)ms 1662(the)ms 1739(stub)ms 1837(.)s 465(The)ms 556(stub)ms 653(ends)ms 758(with)ms 860(a)ms 895(segment)ms 1075(of)ms 1130(CLiP-lines)ms 1360(containing)ms 1585(a)ms 1620(special)ms 1772('end)ms 1874(string')ms 2018(<41,)ms 2122(75,)ms 295 712 m (109>.)s 421(Any)ms 519(segment)ms 696(of)ms 749(CLiP-lines)ms 977(in)ms 1027(between)ms 1205(constitutes)ms 1430(a)ms 10 FL 1463(Slot-segment)ms 12 FB 1735(<54-57,)ms 1904(61-64,)ms 2055(68-70,)ms 295 652 m (105-107>.)s 516(Note)ms 628(that)ms 717('slot')ms 837(is)ms 885(the)ms 960(CLiP)ms 1080(terminology)ms 1339(for)ms 1411(a)ms 1448(placeholder.)ms 1708(All)ms 1786(non-CLiP-lines)ms 2109(in)ms 2162(a)ms 295 592 m (stub)s 390(establish)ms 578(the)ms 10 FL 651(Code-segment)ms 12 FB (s)s 991(<52-53,)ms 1161(58-60,)ms 1303(65-67,)ms 1444(71-74,)ms 1586(89-104,)ms 1752(108>:)ms 10 FL 531 504 m (Stub)s 631(==)ms 693(Stub-segment)ms 984(\()ms 1011(Code-segment)ms 1330(|)ms 1369(Slot-segment)ms 1642(\))ms 7.2 FB 1658 526 m (*)s 10 FL 1684 504 m (End-segment)s 8 FB 295 204 m (The)s 355(CLiP)ms 433(Style)ms 510(of)ms 546(Literate)ms 658(Programming)ms 850(\(4.074,)ms 953(26-feb-93\))ms 12 FB 2075 204 m ( 5 )s 50 2 2130 216 li 50 2 2020 216 li endpage %%Page: 5 6 delay mfeed begpage 12 FB 295 3179 m (Although)s 498(descriptions)ms 754(do)ms 818(not)ms 896(have)ms 1005(an)ms 1066(internal)ms 1233(structure,)ms 1435(we)ms 1507(introduce)ms 1710(the)ms 1786(notion)ms 1928(of)ms 1984(a)ms 10 FL 2020(Descrip-)ms 10 FL 295 3119 m (tion-segment)s 12 FB 573(for)ms 644(completeness)ms 926(sake:)ms 10 FL 531 3031 m (Description)s 768(==)ms 830(Description-segment)ms 12 FB 295 2954 m (The)s 10 FL 392(Stub-segments)ms 12 FB (,)s 10 FL 720(Slot-segments)ms 12 FB 1018(and)ms 10 FL 1110(End-segments)ms 12 FB 1413(consist)ms 1572(entirely)ms 1745(of)ms 1806(consecutive)ms 2062(CLiP-)ms 295 2894 m (lines.)s 415(Each)ms 529(one)ms 615(starts)ms 734(with)ms 837(a)ms 873(CLiP-line)ms 1084(that)ms 1173(contains)ms 1354(additional)ms 1567(characters)ms 1784(<49,)ms 1888(54,)ms 1965(61>)ms 2057(to)ms 2109(dis-)ms 295 2834 m (tinguish)s 471(it)ms 515(from)ms 628(ordinary)ms 813(comments)ms 1034(<10,)ms 1141(11,)ms 1219(12,)ms 1297(117,)ms 1401(123>)ms 1520(as)ms 1577(well)ms 1679(as)ms 1736(from)ms 1849(other)ms 1968(CLiP-lines)ms 295 2774 m (<50,)s 399(51,)ms 476(55,)ms 552(56>.)ms 657(Such)ms 771(starting)ms 934(lines,)ms 1055(named)ms 10 FL 1203(L1)ms 12 FB 1259(and)ms 10 FL 1345(L2)ms 12 FB (,)s 1414(basically)ms 1605(have)ms 1714(the)ms 1789(same)ms 1905(structure.)ms 2107(The)ms 295 2714 m (distinction)s 519(is)ms 566(made)ms 687(according)ms 898(to)ms 950(the)ms 1025(contents)ms 1205(of)ms 1260(the)ms 1334(lines.)ms 1454(Additional)ms 1682(lines)ms 1790(of)ms 1845(one)ms 1930(of)ms 1985(these)ms 2101(seg-)ms 12 FB 295 2654 m (ments)s 431(should)ms 581(belong)ms 734(to)ms 790(category)ms 10 FL 979(L3)ms 12 FB 1039(<27,)ms 1146(28,)ms 1226(50,)ms 1305(51>.)ms 10 FL 1430(Code-segments)ms 12 FB 1771(and)ms 10 FL 1860(Description-seg-)ms 10 FL 295 2594 m (ments)s 12 FB 429(are)ms 502(made)ms 623(up)ms 686(of)ms 740(non-CLiP-lines,)ms 1073(called)ms 10 FL 1205(L4)ms 12 FB 1260(here)ms 1359(<18,)ms 1462(19,)ms 1537(52,)ms 1612(53,)ms 1687(137,)ms 1787(138,)ms 1887(139>:)ms 10 FL 531 2506 m (Stub-segment ==)s 1098(L1)ms 1163(L3)ms 7.2 FB 1206 2528 m (*)s 10 FL 531 2456 m (Slot-segment ==)s 1098(L1)ms 1163(L3)ms 7.2 FB 1206 2478 m (*)s 10 FL 531 2406 m (End-segment ==)s 1098(L2)ms 1163(L3)ms 7.2 FB 1205 2428 m (*)s 10 FL 531 2356 m (Code-segment ==)s 1098(L4)ms 7.2 FB 1141 2378 m (*)s 10 FL 531 2306 m (Description-segment ==)s 1098(L4)ms 7.2 FB 1140 2328 m (*)s 12 FB 295 2229 m (Note)s 407(that)ms 10 FL 497(Stub-segment)ms 12 FB (s)s 812(and)ms 10 FL 899(Slot-segment)ms 12 FB (s)s 1195(have)ms 1305(the)ms 1381(same)ms 1500(syntax.)ms 1658(They)ms 1776(are)ms 1852(distinguished)ms 2134(by)ms 12 FB 295 2169 m (the)s 369(fact)ms 458(that)ms 547(the)ms 622(first)ms 717(segment)ms 897(of)ms 953(a)ms 989(stub)ms 1086(is)ms 1133(always)ms 1286(a)ms 10 FL 1322(Stub-segment)ms 12 FB 1615(while)ms 1740(all)ms 1804(others)ms 1940(are)ms 10 FL 2015(Slot-seg-)ms 10 FL 295 2109 m (ment)s 12 FB (s.)s 342 2049 m (The)s 433(appearance)ms 672(of)ms 728(CLiP-lines)ms 959(is)ms 1006(largely)ms 1159(free)ms 1251(to)ms 1304(the)ms 1379(user.)ms 1489(They)ms 1606(start)ms 1706(and)ms 1793(end)ms 1879(with)ms 1982(sequences)ms 10 FL 295 1989 m (comm-start)s 12 FB 537(and)ms 10 FL 621(comm-end)ms 12 FB 859(intended)ms 1043(to)ms 1093(delimit)ms 1245(comment)ms 1443(lines)ms 1548(of)ms 1601(the)ms 1673(programming)ms 1957(language)ms 2148(at)ms 295 1929 m (hand)s 401(\(")ms 11 FH (\(*)s 12 FB (")s 523(and)ms 605(")ms 11 FH (*\))s 12 FB (")s 710(in)ms 759(our)ms 835(example\).)ms 1043(To)ms 1108(distinguish)ms 1337(CLiP-lines)ms 1563(from)ms 1670(other)ms 1782(comment)ms 1978(lines)ms 2082(these)ms 295 1869 m (sequences)s 511(are)ms 585(extended)ms 780(with)ms 882(one)ms 968(ore)ms 1045(more)ms 1162(special)ms 1314(characters,)ms 1543(the)ms 10 FL 1618(CLiP-char)ms 12 FB 1824(\(in)ms 1894(our)ms 1974(case)ms 2074(")ms 11 FH (*)s 12 FB ("\))s 2172(.)ms 295 1809 m (The)s 383(number)ms 547(of)ms 10 FL 600(CLiP-char)ms 12 FB (s)s 823(constitutes)ms 1048(the)ms 1121(difference)ms 1334(between)ms 10 FL 1512(L1)ms 12 FB 1565(and)ms 10 FL 1648(L2)ms 12 FB 1702(on)ms 1763(the)ms 1835(one)ms 1918(hand)ms 2026(\(several)ms 295 1749 m (additional)s 10 FL 507(CLiP-char)ms 12 FB (s)s 733(<49,)ms 836(54,)ms 911(75>\))ms 1019(and)ms 10 FL 1103(L3)ms 12 FB 1158(on)ms 1221(the)ms 1295(other)ms 1410(hand)ms 1520(\(exactly)ms 1694(one)ms 1778(additional)ms 10 FL 1991(CLiP-char)ms 12 FB 295 1689 m (<50,)s 396(51,)ms 469(55,)ms 543(56>\).)ms 661(In)ms 713(practice)ms 882(we)ms 951(emphasize)ms 1173(the)ms 1245(distinction)ms 1467(by)ms 1528(using)ms 1647(a)ms 1680(longer)ms 1818(row)ms 1907(of)ms 10 FL 1959(CLiP-char)ms 12 FB (s.)s 10 FL 531 1601 m (L1)s 584(==)ms 646(comm-start)ms 901(\(CLiP-char\))ms 6 FL 1125 1620 m (2+)s 10 FL 1177 1601 m (text)s 1276(\(CLiP-char\))ms 6 FL 1500 1620 m (2+)s 10 FL 1552 1601 m (comm-end)s 531 1551 m (L2)s 584(==)ms 646(comm-start)ms 901(\(CLiP-char\))ms 6 FL 1125 1570 m (2+)s 10 FL 1177 1551 m (end-string)s 1400(text)ms 1498(\(CLiP-char\))ms 6 FL 1722 1570 m (2+)s 10 FL 1775 1551 m (comm-end)s 531 1501 m (L3)s 584(==)ms 646(comm-start)ms 901(CLiP-char)ms 1118(text)ms 1216(CLiP-char)ms 1432(comm-end)ms 531 1451 m (L4)s 584(==)ms 646({)ms 12 FB (anything)s 849(else)ms 939(including)ms 1140(ordinary)ms 1322(comments)ms 10 FL (})s 12 FB 295 1374 m (The)s 10 FL 388(text)ms 12 FB 478(of)ms 535(a)ms 573(complete)ms 771(stub)ms 870(segment)ms 1052(or)ms 1109(slot)ms 1197(segment)ms 1379(effectuates)ms 1611(the)ms 1687(name)ms 1811(of)ms 1868(the)ms 1944(stub)ms 2043(or)ms 2100(slot.)ms 295 1314 m (These)s 426(names)ms 565(are)ms 638(used)ms 741(by)ms 802(CLiP)ms 920(to)ms 970(match)ms 1104(stubs)ms 1218(to)ms 1269(their)ms 1372(corresponding)ms 1670(slots.)ms 1785(In)ms 1839(addition)ms 2014(a)ms 2048(stub)ms 2143(or)ms 295 1254 m (slot)s 377(may)ms 473(contain)ms 630(a)ms 662(number)ms 824(of)ms 876(options)ms 1033(following)ms 1237(the)ms 1308(name.)ms 1439(Each)ms 1549(option)ms 1687(is)ms 1730(introduced)ms 1954(by)ms 2014(a)ms 2046(special)ms 10 FL 295 1194 m (option-marker)s 12 FB 592(<16,)ms 696(17,)ms 771(106>.)ms 342 1134 m (The)s 439(actual)ms 578(representations)ms 901(of)ms 962(the)ms 1043(various)ms 1210(syntactic)ms 1408(categories)ms 1631(are)ms 1712(run-time)ms 1904(parameters)ms 2143(of)ms 295 1074 m (CLiP.)s 425(For)ms 507(Pascal)ms 647(we)ms 718(use)ms 10 FL 531 986 m (comm-start ==)s 956(")ms 11 FH (\(*)s 10 FL (")s 531 936 m (comm-end ==)s 956(")ms 11 FH (*\))s 10 FL (")s 531 886 m (CLiP-char ==)s 956(")ms 11 FH (*)s 10 FL (")s 531 836 m (end-string ==)s 956(")ms 11 FH (End)s 1079(of)ms 10 FL (")s 531 786 m (option-marker ==)s 956(")ms 11 FH (#)s 10 FL (")s 11 FAB 295 684 m (3.2 Conventions)s 12 FB 295 602 m (The)s 391(syntax)ms 541(presented)ms 751(above)ms 890(is)ms 942(a)ms 983(good)ms 1102(starting)ms 1271(point)ms 1393(for)ms 1470(an)ms 1536(intuitive)ms 1722(presentation)ms 1985(of)ms 2046(literate)ms 295 542 m (programs.)s 507(Yet,)ms 604(it)ms 643(gives)ms 760(the)ms 833(opportunity)ms 1077(to)ms 1128(augment)ms 1311(the)ms 1384(notation)ms 1559(with)ms 1660(a)ms 1694(specialized)ms 1927(project)ms 2078(style.)ms 295 482 m (Our)s 384(experience)ms 613(indicates)ms 803(that)ms 890(some)ms 1008(additional)ms 1220(conventions)ms 1473(are)ms 1547(even)ms 1653(necessary)ms 1859(to)ms 1910(reach)ms 2031(our)ms 2109(aim)ms 295 422 m (of)s 352('explaining)ms 596(the)ms 673(code)ms 784(to)ms 839(humans')ms 1027(and)ms 1116('almost)ms 1282(incidentally)ms 1534(explaining)ms 1762(it)ms 1805(to)ms 1861(the)ms 1938(computer)ms 2143(as)ms 295 362 m (well'.)s 8 FB 295 204 m (The)s 355(CLiP)ms 433(Style)ms 510(of)ms 546(Literate)ms 658(Programming)ms 850(\(4.074,)ms 953(26-feb-93\))ms 12 FB 2075 204 m ( 6 )s 50 2 2130 216 li 50 2 2020 216 li endpage %%Page: 6 7 delay mfeed begpage 12 FB 342 3179 m (In)s 394(this)ms 477(section)ms 629(we)ms 698(restrict)ms 848(ourselves)ms 1048(to)ms 1097(the)ms 1169(conventions)ms 1422(used)ms 1524(in)ms 1574(the)ms 1646(example)ms 1826(of)ms 1878(the)ms 1950(appendices.)ms 295 3119 m (The)s 386(conventions)ms 641(partly)ms 771(deal)ms 867(with)ms 970(rules)ms 1080(for)ms 1152(organising)ms 1376(the)ms 1451(documentation)ms 1761(and)ms 1847(its)ms 1907(appearance)ms 2146(in)ms 295 3059 m (the)s 370(type-set)ms 542(form,)ms 666(which)ms 802(aspects)ms 960(are)ms 1035(independent)ms 1294(of)ms 1349(CLiP.)ms 1481(Partly)ms 1615(they)ms 1715(elaborate)ms 1912(the)ms 1987(use)ms 2068(of)ms 2123(the)ms 295 2999 m (CLiP)s 413(syntax.)ms 342 2939 m (In)s 396(the)ms 470(type-set)ms 641(documentation)ms 951(all)ms 1013(code)ms 1120(should)ms 1266(appear)ms 1412(in)ms 1464(a)ms 1499(non-proportional)ms 1851(font,)ms 1956(to)ms 2008(aid)ms 2082(navi-)ms 295 2879 m (gation)s 431(in)ms 481(module)ms 642(listings)ms 798(during)ms 940(debugging.)ms 1175(In)ms 1228(this)ms 1311(way)ms 1406(all)ms 1467(code)ms 1573(appears)ms 1737(in)ms 1787(the)ms 1859(modules)ms 2040(exactly)ms 295 2819 m (as)s 357(it)ms 405(shows)ms 550(up)ms 621(in)ms 680(the)ms 762(documentation.)ms 1092(Furthermore)ms 1362(all)ms 1432(identifiers)ms 1656(that)ms 1751(are)ms 1833(mentioned)ms 2064(in)ms 2123(the)ms 295 2759 m (descriptions)s 549(should)ms 695(be)ms 754(in)ms 806(the)ms 879(same)ms 994(font)ms 1088(as)ms 1142(the)ms 1215(code)ms 1322(fragments)ms 1535(\(maybe)ms 1697(in)ms 1748(another)ms 1911(size\).)ms 342 2699 m (Sections)s 523(of)ms 576(the)ms 650(documentation)ms 959(should)ms 1104(reflect)ms 1244(single)ms 1375(design)ms 1517(steps)ms 1629(with)ms 1730(all)ms 1792(corresponding)ms 2090(code)ms 295 2639 m (included.)s 492(In)ms 546(particular,)ms 763(variables)ms 956(introduced)ms 1183(in)ms 1234(the)ms 1308(code)ms 1415(of)ms 1470(a)ms 1504(section)ms 1659(should)ms 1805(be)ms 1865(explained)ms 2072(in)ms 2123(the)ms 295 2579 m (description)s 528(of)ms 580(that)ms 666(section,)ms 831(and)ms 914(the)ms 986(actual)ms 1117(declarations)ms 1369(should)ms 1513(be)ms 1572(included)ms 1755(in)ms 1805(the)ms 1877(same)ms 1990(section)ms 2143(as)ms 295 2519 m (well.)s 404(To)ms 470(reduce)ms 614(the)ms 685(visual)ms 816(overhead,)ms 1022(a)ms 1055(stub)ms 1149(can)ms 1229(contain)ms 1386(a)ms 1419(special)ms 1569(option)ms 1707("quick",)ms 1882(which)ms 2015(instructs)ms 295 2459 m (CLiP)s 412(that)ms 500(the)ms 573(stub)ms 669(is)ms 714(ended)ms 846(by)ms 908(an)ms 968(empty)ms 1105(line)ms 1192(or)ms 1246(a)ms 1280(CLiP-line)ms 1490(\(this)ms 1591(complication)ms 1864(is)ms 1910(not)ms 1986(dealt)ms 2096(with)ms 295 2399 m (in)s 346(section)ms 500(3.1.)ms 588(Examples)ms 797(are)ms 871(<33-34,)ms 1041(35-36,)ms 1182(37-38,)ms 1324(42-43,)ms 1466(44-46>\).)ms 342 2339 m (There)s 470(are)ms 544(essentially)ms 767(two)ms 855(kinds)ms 976(of)ms 1030(slots:)ms 1148(pseudostatements)ms 1513(and)ms 1597(other)ms 1712(slots.)ms 1829(Pseudostatements)ms 295 2279 m (are)s 371(important)ms 581(for)ms 654(the)ms 731(explanation)ms 980(of)ms 1037(an)ms 1099(algorithms,)ms 1341(so)ms 1401(pseudostatements)ms 1769(should)ms 1918(catch)ms 2039(the)ms 2115(eye)ms 295 2219 m (<26-29,)s 466(54-57,)ms 609(61-64>.)ms 780(Most)ms 896(other)ms 1013(slots)ms 1119(serve)ms 1238(as)ms 1293('syntactic')ms 1518(placeholders)ms 1785(to)ms 1837(indicate)ms 2010(the)ms 2085(posi-)ms 295 2159 m (tions)s 402(of)ms 454(\(e.g.\))ms 569(declarations.)ms 834(Therefore)ms 1041(they)ms 1137(are)ms 1209(kept)ms 1305(to)ms 1354(one)ms 1436(single)ms 1566(line)ms 1651(with)ms 1750(a)ms 1783(short)ms 1893(slot)ms 1975(name)ms 2094(<16,)ms 295 2099 m (17,)s 370(20>.)ms 342 2039 m (We)s 425(write)ms 542(pseudo-statements)ms 925(as)ms 981(framed)ms 1137(comments)ms 1357(with)ms 1460(a)ms 1496(short)ms 1610(identification)ms 1891(in)ms 1944(the)ms 2019(top)ms 2097(line.)ms 295 1979 m (This)s 397(identification)ms 676(is)ms 723(not)ms 800(strictly)ms 952(needed,)ms 1119(but)ms 1196(it)ms 1237(aids)ms 1331(in)ms 1383(the)ms 1457(process)ms 1620(of)ms 1675(finding)ms 1833(relations)ms 2018(between)ms 295 1919 m (slots)s 398(and)ms 481(stubs.)ms 608(The)ms 697(remainder)ms 912(of)ms 965(a)ms 998(slot)ms 1082(describes)ms 1280(the)ms 1352(operation)ms 1552(of)ms 1606(the)ms 1678(pseudostatement)ms 2023(in)ms 2073(terms)ms 295 1859 m (of)s 358(the)ms 440(variables)ms 643(involved.)ms 852(Thus)ms 973(the)ms 1056(corresponding)ms 1364(stub)ms 1468(may)ms 1576(be)ms 1645(understood)ms 1889(independently,)ms 295 1799 m (essentially)s 518(avoiding)ms 706(Thimbleby's)ms 974('dynamic)ms 1175(binding)ms 1340(problem')ms 1536([Thimbleby)ms 1785(1986].)ms 11 FAB 295 1679 m (3.3 Advanced features)s 12 FB 295 1597 m (The)s 385(CLiP)ms 503(tool)ms 593(is)ms 639(able)ms 735(to)ms 786(combine)ms 971(multiple)ms 1150(source)ms 1293(files.)ms 1404(This)ms 1505(allows)ms 1649(structuring)ms 1878(the)ms 1951(explanation)ms 295 1537 m (of)s 346(a)ms 378(program)ms 557(into)ms 645(separate)ms 818(levels)ms 945(of)ms 996(detail.)ms 1130(Each)ms 1240(level)ms 1347(of)ms 1398(understanding)ms 1691(abstracts)ms 1876(from)ms 1983(the)ms 2054(details)ms 295 1477 m (of)s 349(a)ms 385(lower)ms 512(level.)ms 634(Therefore,)ms 857(in)ms 909(the)ms 983(CLiP)ms 1102(approach)ms 1298(it)ms 1339(is)ms 1386(customary)ms 1607(to)ms 1659(split)ms 1758(the)ms 1833(documentation)ms 2143(of)ms 295 1417 m (one)s 379(module)ms 542(into)ms 632(separate)ms 808(documents)ms 1037(according)ms 1247(to)ms 1299(this)ms 1383(hierarchy.)ms 342 1357 m (Conversely,)s 592(it)ms 631(is)ms 674(also)ms 765(possible)ms 940(to)ms 989(document)ms 1197(several)ms 1349(modules)ms 1529(in)ms 1578(one)ms 1661(\(set)ms 1744(of\))ms 1812(source)ms 1953(file\(s\).)ms 2096(This)ms 295 1297 m (feature)s 444(is)ms 488(typically)ms 674(used)ms 776(to)ms 826(include)ms 984(data)ms 1078(files)ms 1175(in)ms 1225(the)ms 1296(documentation:)ms 1618(e.g.)ms 1701(test)ms 1781(data,)ms 1888(tables)ms 2015(and)ms 2098(help)ms 295 1237 m (files.)s 407(In)ms 463(the)ms 538(case)ms 638(of)ms 694(Modula-2)ms 905(programs)ms 1108(this)ms 1195(mechanism)ms 1436(proves)ms 1584(very)ms 1687(useful)ms 1823(too)ms 1901(for)ms 1973(generating)ms 295 1177 m (specification)s 563(and)ms 648(implementation)ms 975(modules)ms 1157(from)ms 1268(the)ms 1342(same)ms 1457(sources)ms 1620(file.)ms 1712(Thus)ms 1825(the)ms 1899(procedure)ms 2112(and)ms 295 1117 m (function)s 474(headings)ms 664(need)ms 771(to)ms 822(be)ms 882(specified)ms 1075(only)ms 1176(once.)ms 342 1057 m (The)s 429(operation)ms 628(of)ms 679(CLiP)ms 795(may)ms 891(be)ms 948(tuned)ms 1068(by)ms 1128(means)ms 1266(of)ms 1317(options)ms 1474(in)ms 1523(slot)ms 1605(or)ms 1657(stub)ms 1750(segments.)ms 1958(The)ms 2046(default)ms 295 997 m (mechanism)s 532(is)ms 576(designed)ms 764(such)ms 865(that)ms 951(options)ms 1108(are)ms 1179(not)ms 1253(normally)ms 1444(needed.)ms 1608(The)ms 1696(remainder)ms 1909(of)ms 1960(this)ms 2043(section)ms 295 937 m (discusses)s 493(the)ms 567(most)ms 676(important)ms 883(options)ms 1043(in)ms 1095(the)ms 1168(context)ms 1328(of)ms 1382(their)ms 1486(most)ms 1596(frequent)ms 1775(application.)ms 12 FBB 295 847 m (Declaration)s 557(slots:)ms 681(options)ms 849("multiple")ms 1094(and)ms 1188("leader")ms 12 FB 342 787 m (The)s 432(default)ms 583(mechanism)ms 824(of)ms 878(CLiP)ms 996(relates)ms 1139(each)ms 1244(placeholder)ms 1490(to)ms 1541(exactly)ms 1698(one)ms 1783(code)ms 1890(fragment.)ms 2096(This)ms 295 727 m (is)s 337(a)ms 369(useful)ms 500(choice)ms 640(for)ms 708(placeholders)ms 970(representing)ms 1227(pseudocode,)ms 1485(but)ms 1558(not)ms 1631(for)ms 1699('syntactic')ms 1919(placeholders,)ms 295 667 m (such)s 400(as)ms 456(a)ms 492(fixed)ms 609(location)ms 784(where)ms 920(variable)ms 1096(declarations)ms 1351(have)ms 1460(to)ms 1513(be)ms 1574(included.)ms 1773(It)ms 1817(is)ms 1865(very)ms 1968(illogical)ms 2146(to)ms 295 607 m (declare)s 450(all)ms 512(variables)ms 704(at)ms 751(once,)ms 869(where)ms 1003(the)ms 1075(actual)ms 1206(code)ms 1312(is)ms 1357(split)ms 1454(into)ms 1544(manageable)ms 1794(parts.)ms 1915(Therefore)ms 2123(the)ms 295 547 m (option)s 436("multiple")ms 657(is)ms 704(used)ms 809(to)ms 861(indicate)ms 1033(a)ms 1069(slot)ms 1154(where)ms 1290(more)ms 1406(than)ms 1506(one)ms 1592(stub)ms 1689(can)ms 1771(be)ms 1832(included)ms 2018(<16,)ms 2122(17,)ms 295 487 m (20>.)s 8 FB 295 204 m (The)s 355(CLiP)ms 433(Style)ms 510(of)ms 546(Literate)ms 658(Programming)ms 850(\(4.074,)ms 953(26-feb-93\))ms 12 FB 2075 204 m ( 7 )s 50 2 2130 216 li 50 2 2020 216 li endpage %%Page: 7 8 delay mfeed begpage 12 FB 342 3179 m (Another)s 518(peculiarity)ms 744(of)ms 798(declarations)ms 1052(is)ms 1098(that)ms 1185(some)ms 1303(languages)ms 1516(\(notably)ms 1695(Pascal\))ms 1851(require)ms 2005(that)ms 2093(each)ms 295 3119 m (type)s 391(of)ms 444(declaration)ms 677(is)ms 721(introduced)ms 945(by)ms 1006(its)ms 1064(own)ms 1161(keyword.)ms 1359(This)ms 1459(leads)ms 1572(to)ms 1622(problems)ms 1819(when)ms 1938(the)ms 2010(keyword)ms 295 3059 m (is)s 339(either)ms 465(included)ms 648(in)ms 699(the)ms 771(first)ms 863(corresponding)ms 1161(stub)ms 1255(\(which)ms 1406(might)ms 1534(be)ms 1592(replaced)ms 1773(during)ms 1915(maintenance\))ms 295 2999 m (or)s 346(in)ms 395(front)ms 502(of)ms 554(the)ms 625(slot)ms 707(\(if)ms 764(no)ms 824(stub)ms 917(is)ms 961(specified,)ms 1164(the)ms 1235(program)ms 1414(is)ms 1457(syntactically)ms 1720(incorrect\).)ms 1937(To)ms 2002(deal)ms 2096(with)ms 295 2939 m (these)s 411(problems,)ms 624(CLiP)ms 744(allows)ms 889(the)ms 964("leader")ms 1141(option)ms 1283(in)ms 1337(a)ms 1373(stub)ms 1471(<33,)ms 1575(35>.)ms 1680(A)ms 1731(leader)ms 1867(stub)ms 1965(is)ms 2012(included)ms 295 2879 m (only)s 400(if)ms 447(at)ms 499(least)ms 607(one)ms 696(regular)ms 854(stub)ms 954(is)ms 1003(present)ms 1164(in)ms 1220(the)ms 1297(documentation;)ms 1625(otherwise)ms 1835(the)ms 1913(leader)ms 2051(stub)ms 2151(is)ms 295 2819 m (ignored.)s 12 FBB 295 2729 m (Data)s 410(files:)ms 525(option)ms 674("comment)ms 911(off")ms 12 FB 342 2669 m (Comments)s 570(are)ms 643(normally)ms 836(extracted)ms 1031(with)ms 1132(the)ms 1205(code.)ms 1323(This)ms 1424(is)ms 1469(important)ms 1676(to)ms 1727(guide)ms 1850(the)ms 1923(navigation)ms 2146(in)ms 295 2609 m (the)s 370(extracted)ms 568(code,)ms 689(especially)ms 903(in)ms 957(the)ms 1032(process)ms 1196(of)ms 1252(debugging)ms 1478(\(see)ms 1573(also)ms 1668(section)ms 1824(5\).)ms 1892(But)ms 1979(comments)ms 295 2549 m (are)s 368(not)ms 444(desired)ms 601(in)ms 653(data)ms 748(files.)ms 859(With)ms 972(the)ms 1045(option)ms 1186("Comment)ms 1416(off")ms 1507(we)ms 1578(direct)ms 1704(CLiP)ms 1822(to)ms 1873(extract)ms 2022(only)ms 2123(the)ms 295 2489 m (code)s 401(segments)ms 600(<1,)ms 678(143>.)ms 342 2429 m (It)s 385(is)ms 431(also)ms 524(possible)ms 701(to)ms 753(suppress)ms 938(comments)ms 1156(locally)ms 1305(by)ms 1368(specifying)ms 1589("Comment)ms 1820(off")ms 1911(in)ms 1963(a)ms 1998(slot.)ms 2096(This)ms 295 2369 m (is)s 351(very)ms 463(useful)ms 609(in)ms 671(a)ms 717(list)ms 801(of)ms 866(variable)ms 1050(declarations:)ms 1329(all)ms 1402(declarations)ms 1667(are)ms 1752(included)ms 1947(without)ms 2123(the)ms 295 2309 m (\(superfluous\))s 574(comment)ms 772(stating)ms 918(the)ms 992(slot-name.)ms 12 FBB 295 2219 m (Testing)s 465(and)ms 558(debugging)ms 793(code:)ms 920(option)ms 1068("optional")ms 12 FB 342 2159 m (In)s 400(the)ms 478(process)ms 645(of)ms 703(debugging)ms 931(one)ms 1020(often)ms 1139(needs)ms 1270(to)ms 1326(include)ms 1490(code)ms 1601(for)ms 1676(the)ms 1754(purpose)ms 1929(of)ms 1987(tracing)ms 2143(or)ms 295 2099 m (dumping)s 487(tables.)ms 630(According)ms 856(to)ms 909(the)ms 985(literate)ms 1138(programming)ms 1425(credo)ms 1550(we)ms 1623(do)ms 1687(not)ms 1766(want)ms 1877(to)ms 1931(edit)ms 2020(the)ms 2096(gen-)ms 295 2039 m (erated)s 428(modules,)ms 620(or)ms 673(even)ms 778(the)ms 850(source)ms 992(files,)ms 1101(for)ms 1171(this)ms 1254(purpose.)ms 1436(So)ms 1499(we)ms 1569(include)ms 1727(slots)ms 1829(that)ms 1915(normally)ms 2107(will)ms 295 1979 m (be)s 353(left)ms 431(blank,)ms 566(indicated)ms 761(by)ms 822(the)ms 895(option)ms 1034("optional")ms 1250(<105-106>.)ms 1497(This)ms 1597(option)ms 1736(instructs)ms 1917(the)ms 1990(CLiP)ms 2107(tool)ms 295 1919 m (not)s 370(to)ms 420(complain)ms 618(if)ms 660(the)ms 732(slot)ms 816(is)ms 861(not)ms 936(satisfied.)ms 1127(Those)ms 1260(slots)ms 1364(serve)ms 1481(as)ms 1534(placeholders)ms 1798(for)ms 1868(debugging)ms 2090(code)ms 295 1859 m (that)s 387(is)ms 438(kept)ms 542(in)ms 598(separate)ms 780(documents)ms 1014(\(e.g.)ms 1120(appendix)ms 1321(B\).)ms 1401(Whether)ms 1591(or)ms 1650(not)ms 1732(the)ms 1810(debugging)ms 2039(code)ms 2151(is)ms 295 1799 m (included)s 479(depends)ms 656(solely)ms 788(on)ms 850(the)ms 924(set)ms 992(of)ms 1046(source)ms 1189(files)ms 1287(that)ms 1375(is)ms 1421(supplied)ms 1603(for)ms 1674(a)ms 1708(run)ms 1787(of)ms 1842(CLiP.)ms 12 FBB 295 1709 m (Partial)s 454(implementations:)ms 839(option)ms 988("default")ms 12 FB 342 1649 m (It)s 385(is)ms 431(very)ms 532(useful)ms 667(to)ms 719(test)ms 801(each)ms 905(level)ms 1015(of)ms 1069(a)ms 1104(program)ms 1286(without)ms 1452(all)ms 1514(details)ms 1657(filled)ms 1776(in.)ms 1840(When)ms 1972(the)ms 2046(literate)ms 295 1589 m (program)s 479(is)ms 527(structured)ms 742(as)ms 798(explained)ms 1007(in)ms 1061(the)ms 1137(first)ms 1232(paragraph)ms 1447(of)ms 1504(this)ms 1591(section,)ms 1760(a)ms 1797(level)ms 1909(of)ms 1965(abstraction)ms 295 1529 m (corresponds)s 549(to)ms 600(a)ms 634(set)ms 702(of)ms 757(source)ms 899(files.)ms 1010(In)ms 1065(order)ms 1182(to)ms 1234(test)ms 1316(such)ms 1420(a)ms 1454(level,)ms 1577(the)ms 1650(source)ms 1793(files)ms 1891(should)ms 2037(contain)ms 295 1469 m (some)s 413(default)ms 564(actions)ms 718(to)ms 770(be)ms 829(taken)ms 950(instead)ms 1104(of)ms 1158(those)ms 1277(missing)ms 1445(details,)ms 1600(e.g.)ms 1685(writing)ms 1842(a)ms 1877(message)ms 2059("func-)ms 295 1409 m (tion)s 384(...)ms 432(not)ms 507(yet)ms 580(implemented".)ms 885(This)ms 985(code)ms 1091(is)ms 1135(included)ms 1319(in)ms 1369(a)ms 1402(stub)ms 1497(with)ms 1597(the)ms 1669(option)ms 1808("default")ms 1999(<42-43>,)ms 295 1349 m (which)s 429(is)ms 475(only)ms 576(extracted)ms 772(when)ms 893(no)ms 956(regular)ms 1110(stub)ms 1205(is)ms 1251(supplied)ms 1433(for)ms 1504(the)ms 1578(corresponding)ms 1876(slot.)ms 342 1289 m (A)s 391(related)ms 540(situation)ms 726(occurs)ms 870(in)ms 922(lines)ms 1030(42-43)ms 1160(of)ms 1214(the)ms 1289(example)ms 1472(where)ms 1607(we)ms 1679(have)ms 1786(a)ms 1822(so)ms 1880(called)ms 12 FBI 2012(partially)ms 12 FBI 295 1229 m (defined)s 12 FB 456(data)ms 553(type)ms 11 FH 653(TEXT_LINE)ms 12 FB (.)s 941(First)ms 1047(a)ms 1083(temporary)ms 1302(declaration)ms 1538(is)ms 1586(given,)ms 1723(adequate)ms 1915(to)ms 1968(the)ms 2043(current)ms 295 1169 m (abstraction)s 526(level.)ms 649(Later)ms 767(on,)ms 842(in)ms 893(section)ms 1047(A.4,)ms 1146(it)ms 1186(is)ms 1232(refined)ms 1386(to)ms 1437(its)ms 1497(final)ms 1601(form.)ms 12 FBB 295 1079 m (Other)s 435(applications)ms 706(of)ms 760(the)ms 839("default")ms 1057(option)ms 12 FB 342 1019 m (The)s 438("default")ms 636(option)ms 783(is)ms 835(very)ms 942(useful)ms 1083(too)ms 1165(during)ms 1315(the)ms 1394(development)ms 1671(of)ms 1731(multiple)ms 1917(versions)ms 2102(of)ms 2162(a)ms 295 959 m (program.)s 488(In)ms 542(its)ms 601(simplest)ms 780(form)ms 889(it)ms 929(is)ms 974(almost)ms 1119(identical)ms 1303(to)ms 1354(the)ms 1427(previous)ms 1611(example.)ms 1805(Operations)ms 2037(that)ms 2123(are)ms 295 899 m (not)s 374(allowed)ms 547(in)ms 602(some)ms 723(versions)ms 905(are)ms 981(separated)ms 1185(into)ms 1279(different)ms 1466(source)ms 1612(files;)ms 1727(a)ms 1765(default)ms 1919(stub)ms 2018(contains)ms 295 839 m (code)s 401(to)ms 453(generate)ms 635(a)ms 669(message)ms 851(like)ms 939("operation)ms 1161(...)ms 1211(not)ms 1287(allowed)ms 1458(in)ms 1509(this)ms 1594(version".)ms 342 779 m (Default)s 507(stubs)ms 625(may)ms 726(also)ms 822(be)ms 884(used)ms 991(for)ms 1064(porting)ms 1224(and)ms 1312(tuning.)ms 1467(In)ms 1524(this)ms 1611(case)ms 1713(the)ms 1789(default)ms 1943(stub)ms 2041(gives)ms 2162(a)ms 295 719 m (general)s 456(solution,)ms 643(but)ms 721(not)ms 799(necessarily)ms 1035(an)ms 1096(efficient)ms 1277(one.)ms 1390(Well)ms 1501(tuned)ms 1626(\(but)ms 1721(machine)ms 1904(specific\))ms 2090(code)ms 295 659 m (may)s 396(be)ms 458(included)ms 645(by)ms 710(use)ms 792(of)ms 848(an)ms 911(additional)ms 1126(source)ms 1271(file.)ms 1365(As)ms 1436(a)ms 1473(premium)ms 1669(the)ms 1745(main)ms 1860(document)ms 2072(is)ms 2121(not)ms 295 599 m (clobbered)s 504(with)ms 606(all)ms 668(the)ms 742(tricks)ms 865(that)ms 953(are)ms 1026(sometimes)ms 1253(needed)ms 1407(to)ms 1458(gain)ms 1557(the)ms 1630(desired)ms 1787(efficiency.)ms 8 FB 295 204 m (The)s 355(CLiP)ms 433(Style)ms 510(of)ms 546(Literate)ms 658(Programming)ms 850(\(4.074,)ms 953(26-feb-93\))ms 12 FB 2075 204 m ( 8 )s 50 2 2130 216 li 50 2 2020 216 li endpage %%Page: 8 9 delay mfeed begpage 12 FAB 295 3176 m (4 Comparison with other literate programming tools)s 12 FB 295 3089 m (The)s 382(most)ms 488(widely)ms 633(known)ms 779(system)ms 927(for)ms 995(literate)ms 1143(programming)ms 1424(is)ms 1467(without)ms 1629(doubt)ms 1752(Knuth's)ms 1922(WEB)ms 2043([Knuth)ms 295 3029 m (1984,)s 416(Bentley)ms 581(and)ms 662(Knuth)ms 796(1986a,)ms 940(1986b,)ms 1087(Sewell)ms 1232(1989].)ms 1371(WEB)ms 1491(consists)ms 1658(of)ms 1709(two)ms 1793(programs,)ms 2004(WEAVE)ms 295 2969 m (and)s 382(TANGLE,)ms 610(that)ms 701(generate)ms 886(a)ms 923(TeX-file)ms 1111(and)ms 1199(a)ms 1236(Pascal-module)ms 1546(respectively.)ms 1816(By)ms 1890(now)ms 1991(WEB)ms 2118(has)ms 295 2909 m (been)s 401(adapted)ms 568(to)ms 619(a)ms 654(number)ms 818(of)ms 872(other)ms 987(programming)ms 1271(languages.)ms 1495(CWEB)ms 1652([Levy)ms 1783(1987])ms 1912(for)ms 1982(c,)ms 2029(MWEB)ms 295 2849 m ([Sewell)s 459(1987])ms 588(for)ms 658(Modula-2,)ms 879(FWEB)ms 1030([Avenarius)ms 1264(and)ms 1348(Oppermann)ms 1596(1990])ms 1724(for)ms 1794(Fortran)ms 1953(and)ms 2037(various)ms 295 2789 m (other)s 412(WEBs.)ms 569(With)ms 683(Ramsey's)ms 895(Spider)ms 1039([Ramsey)ms 1232(1989])ms 1362(it)ms 1405(is)ms 1452(even)ms 1561(possible)ms 1739(to)ms 1792(generate)ms 1976(an)ms 2037(XWEB)ms 295 2729 m (for)s 368(your)ms 475(favourite)ms 670(language)ms 866(X.)ms 929(Apart)ms 1058(from)ms 1171(the)ms 1247(target)ms 1376(programming)ms 1663(language,)ms 1871(all)ms 1936(these)ms 2054(WEBs)ms 295 2669 m (share)s 413(the)ms 486(properties)ms 699(of)ms 753(WEB;)ms 890(therefore)ms 1083(we)ms 1154(refer)ms 1261(to)ms 1312(them)ms 1425(collectively)ms 1671(as)ms 1725(the)ms 1798(WEB)ms 1922(family.)ms 342 2609 m (In)s 396(table 1)ms 543(we)ms 615(compare)ms 799(CLiP)ms 918(with)ms 1020(those)ms 1138(other)ms 1253(tools)ms 1363(of)ms 1418(which)ms 1553(we)ms 1624(know)ms 1748(sufficient)ms 1949(details:)ms 2107(The)ms 295 2549 m (WEB)s 418(family,)ms 573(Thimbleby's)ms 841(Cweb)ms 970([Thimbleby)ms 1218(1986],)ms 1360(c-no-web)ms 1561([Fox)ms 1667(1990],)ms 1809(HSD)ms 1921([Tung)ms 2055(1989],)ms 295 2489 m (LIPED)s 452([Bishop)ms 627(1992],)ms 772(and)ms 860(a)ms 898(nameless)ms 1098(Smalltalk)ms 1305(environment)ms 1574([Reenskaug)ms 1826(1989].)ms 1971(We)ms 2057(ignore)ms 295 2429 m (VAMP,)s 464(the)ms 538(predecessor)ms 786(of)ms 840(CLiP)ms 958([Ammers)ms 1160(1992].)ms 12 FBI 295 2369 m ([note)s 410(to)ms 458(the)ms 528(referee:)ms 696(possibly)ms 869(we)ms 934(missed)ms 1080(some)ms 1192(important)ms 1399(other)ms 1514(tools;)ms 1637(we)ms 1702(plan)ms 1801(to)ms 1849(expand)ms 2003(this)ms 2085(table)ms 12 FBI 295 2309 m (in)s 346(the)ms 420(final)ms 524(version].)ms 12 FB 342 2249 m (Most)s 458(tools)ms 569(are)ms 643(coupled)ms 815(to)ms 867(one)ms 953(specific)ms 1122(programming)ms 1408(language)ms 1602(\(row)ms 1710(1\).)ms 1777(As)ms 1846(mentioned)ms 2071(in)ms 2123(the)ms 295 2189 m (first)s 387(paragraph,)ms 612(each)ms 716(member)ms 893(of)ms 947(the)ms 1020(WEB)ms 1144(family)ms 1287(is)ms 1332(tailored)ms 1498(to)ms 1549(one)ms 1633(particular)ms 1837(language.)ms 2043(LIPED)ms 295 2129 m (is)s 351(independent)ms 618(of)ms 682(programming)ms 977(language)ms 1180(in)ms 1242(the)ms 1326(sense)ms 1457(that)ms 1554(it)ms 1605(is)ms 1661(controlled)ms 1886(by)ms 1959(a)ms 2004(language)ms 295 2069 m (description.)s 541(CLiP's)ms 694(mechanism)ms 933(is)ms 978(totally)ms 1117(independent)ms 1373(of)ms 1426(the)ms 1498(target)ms 1624(language,)ms 1828(so)ms 1884(e.g.)ms 1968(job)ms 2043(control)ms 295 2009 m (procedures)s 529(and)ms 617(data)ms 716(files)ms 817(\(row)ms 927(2\))ms 984(can)ms 1069(be)ms 1131(extracted)ms 1330(as)ms 1387(well.)ms 1501(The)ms 1594(only)ms 1698(other)ms 1816(system)ms 1971(addressing)ms 295 1949 m (data)s 390(files)ms 489(is)ms 535(the)ms 608(Smalltalk)ms 813(environment.)ms 342 1889 m (The)s 435(majority)ms 619(of)ms 676(the)ms 753(literate)ms 907(programming)ms 1194(tools)ms 1307(is)ms 1355(coupled)ms 1529(to)ms 1583(one)ms 1671(or)ms 1728(a)ms 1765(few)ms 1855(batch)ms 1979(formatters)ms 295 1829 m (\(row)s 409(3\).)ms 483(The)ms 580(Smalltalk)ms 792(environment)ms 1064(and)ms 1156(LIPED)ms 1318(have)ms 1432(their)ms 1543(own)ms 1649(text)ms 1744(processing)ms 1978(interfaces.)ms 295 1769 m (LIPED)s 449(may)ms 547(be)ms 607(interfaced)ms 819(to)ms 871(an)ms 931(arbitrary)ms 1115(text)ms 1203(formatter)ms 1401(by)ms 1464(means)ms 1604(of)ms 1658(a)ms 1693(trick:)ms 1811(it)ms 1851(uses)ms 1950(printer)ms 2096(con-)ms 295 1709 m (figuration)s 507(files)ms 609(which)ms 746(can)ms 831(be)ms 894(used)ms 1001(to)ms 1056(generate)ms 1240(formatter)ms 1442(input)ms 1560(\(e.g.)ms 1665(LaTeX-files\).)ms 1954(CLiP)ms 2075(is)ms 2123(the)ms 295 1649 m (only)s 392(tool)ms 479(suitable)ms 644(for)ms 711(use)ms 787(with)ms 885(a)ms 916(word-processor)ms 1236(\(see)ms 1325(fig. 1b\))ms 1481(because)ms 1649(all)ms 1708(information)ms 1953(for)ms 2020(the)ms 2090(code)ms 295 1589 m (extractor)s 483(is)ms 526(visible)ms 670(in)ms 719(the)ms 791(documentation.)ms 1111(Alternatively)ms 1385(its)ms 1443(source)ms 1583(files)ms 1680(may)ms 1776(be)ms 1834(edited)ms 1967(by)ms 2027(any)ms 2109(text)ms 295 1529 m (editor)s 427(\(row)ms 536(4\).)ms 606(The)ms 699(Smalltalk)ms 906(environment,)ms 1187(LIPED)ms 1344(and)ms 1431(HSD)ms 1547(have)ms 1657(integrated)ms 1872(special)ms 2026(purpose)ms 295 1469 m (editors)s 447(which)ms 585(add)ms 674(functions)ms 876(for)ms 951(navigating)ms 1179(in)ms 1234(the)ms 1311(literate)ms 1466(programs)ms 1672(as)ms 1730(on)ms 1796(line)ms 1887(documentation)ms 295 1409 m (\(row)s 401(5\).)ms 342 1349 m (CLiP)s 461(is)ms 509(quite)ms 624(unique)ms 774(in)ms 827(extracting)ms 1042(multiple)ms 1223(modules)ms 1407(from)ms 1518(multiple)ms 1699(source)ms 1844(files)ms 1945(\(rows)ms 2073(6)ms 2112(and)ms 295 1289 m (7\).)s 367(Perhaps)ms 544(LIPED)ms 704(shares)ms 847(this)ms 937(feature,)ms 1107(but)ms 1189(this)ms 1280(is)ms 1332(not)ms 1414(entirely)ms 1585(clear)ms 1700(from)ms 1816(the)ms 1895(literature.)ms 2107(The)ms 295 1229 m (Smalltalk)s 497(environment)ms 761(interfaces)ms 967(to)ms 1017(the)ms 1089(Smalltalk)ms 1292(library)ms 1437(for)ms 1506(storing)ms 1656(and)ms 1740(retrieving)ms 1945(all)ms 2007(pieces)ms 2143(of)ms 295 1169 m (information.)s 342 1109 m (Suppression)s 600(of)ms 655(details)ms 799(\(row)ms 907(8\))ms 962(in)ms 1015(very)ms 1117(easy)ms 1220(in)ms 1272(CLiP)ms 1392(by)ms 1455(its)ms 1516(ability)ms 1658(to)ms 1710(process)ms 1874(multiple)ms 2054(source)ms 295 1049 m (files.)s 407(By)ms 479(the)ms 554(same)ms 670(mechanism)ms 912(CLiP)ms 1031(is)ms 1078(able)ms 1175(to)ms 1228(handle)ms 1375(debugging)ms 1599(code)ms 1708(\(row)ms 1816(9\))ms 1871(and)ms 1957(to)ms 2010(integrate)ms 295 989 m (multiple)s 475(versions)ms 656(\(row)ms 765(10\))ms 846(of)ms 901(the)ms 977(same)ms 1094(program)ms 1277(\(see)ms 1372(section)ms 1528(3.3\).)ms 1634(Debugging)ms 1870(code)ms 1979(is)ms 2026(handled)ms 295 929 m (in)s 342(the)ms 412(WEB)ms 532(family)ms 671(and)ms 752(in)ms 800(cweb)ms 914(by)ms 973(macro's)ms 1143(that)ms 1227(expand)ms 1380(either)ms 1503(to)ms 1550(comment)ms 1745(delimiters)ms 1954(\(effectively)ms 295 869 m ('commenting)s 572(out')ms 664(the)ms 737(debugging)ms 959(code\))ms 1082(or)ms 1134(to)ms 1185(whitespace)ms 1418(at)ms 1466(the)ms 1538(users)ms 1652(choice.)ms 1806(WEB)ms 1929(uses)ms 2026('change)ms 295 809 m (files')s 414(for)ms 489(various)ms 653(purposes,)ms 860(one)ms 949(of)ms 1007(them)ms 1124(versioning)ms 1351(\(for)ms 1443(more)ms 1562(details)ms 1710(see)ms 1790(e.g.)ms 1879(Sewell)ms 2032([Sewell)ms 295 749 m (1989])s 422(or)ms 474(Appelt)ms 621(and)ms 704(Horn)ms 818([1986]\).)ms 991(We)ms 1071(use)ms 1148(the)ms 1220(term)ms 1323('versioning')ms 1578(\(row)ms 1683(10\))ms 1760(because)ms 1929(neither)ms 2079(CLiP)ms 295 689 m (nor)s 377(WEB)ms 503(do)ms 569(perform)ms 745(real)ms 836('version)ms 1015(management'.)ms 1315(LIPED)ms 1473(includes)ms 1655(version)ms 1817(information)ms 2069(in)ms 2123(the)ms 295 629 m (names)s 434(of)ms 488(code)ms 594(fragments.)ms 819(The)ms 908(Smalltalk)ms 1112(environment)ms 1377(relies)ms 1497(on)ms 1559(the)ms 1632(underlying)ms 1861(system)ms 2011(for)ms 2082(these)ms 295 569 m (purposes.)s 8 FB 295 204 m (The)s 355(CLiP)ms 433(Style)ms 510(of)ms 546(Literate)ms 658(Programming)ms 850(\(4.074,)ms 953(26-feb-93\))ms 12 FB 2075 204 m ( 9 )s 50 2 2130 216 li 50 2 2020 216 li endpage %%Page: 9 10 delay mfeed begpage 10 FB 870 3180 m (CLiP)s 1052 3180 m (...WEB)s 1227 3180 m (cweb)s 1350 3180 m (c-no-web)s 1565 3180 m (HSD)s 1737 3180 m (LIPED)s 1921 3180 m (Smalltalk-env)s 337 3104 m (1)s 379 3104 m (Programming language)s 884 3104 m (any)s 1050 3104 m (see text)s 1262 3104 m (c)s 1419 3104 m (c)s 1598 3104 m (c)s 1737 3104 m (several)s 1958 3104 m (Smalltalk)s 337 3054 m (2)s 379 3054 m (Data files etc.)s 886 3054 m (yes)s 1093 3054 m (no)s 1250 3054 m (no)s 1408 3054 m (no)s 1586 3054 m (no)s 1775 3054 m (no)s 2010 3054 m (yes)s 337 2978 m (3)s 379 2978 m (Text processing env.)s 884 2978 m (any)s 1076 2978 m (TeX)s 1234 2978 m (troff)s 1356 2978 m (\(La\)TeX)s 1548 2978 m (LaTeX)s 1733 2978 m (see text)s 1980 2978 m (special)s 337 2928 m (4)s 379 2928 m (Editing)s 854 2928 m (editor /)s 1083 2928 m (any)s 1241 2928 m (any)s 1398 2928 m (any)s 1546 2928 m (built-in)s 1735 2928 m (built-in)s 1976 2928 m (built-in)s 834 2878 m (wordproc)s 1065 2878 m (editor)s 1222 2878 m (editor)s 1380 2878 m (editor)s 1558 2878 m (editor)s 1747 2878 m (editor)s 1989 2878 m (editor)s 337 2828 m (5)s 379 2828 m (On line documentation)s 893 2828 m (no)s 1093 2828 m (no)s 1250 2828 m (no)s 1408 2828 m (no)s 1579 2828 m (yes)s 1768 2828 m (yes)s 2010 2828 m (yes)s 337 2752 m (6)s 379 2752 m (Nr. of source files)s 868 2752 m (many)s 1103 2752 m (1)s 1261 2752 m (1)s 1418 2752 m (1)s 1597 2752 m (1)s 1776 2752 m (1?)s 1968 2752 m (\(library\))s 337 2702 m (7)s 379 2702 m (Nr. of modules)s 868 2702 m (many)s 1103 2702 m (1)s 1261 2702 m (1)s 1418 2702 m (1)s 1597 2702 m (1)s 1776 2702 m (1?)s 1968 2702 m (\(library\))s 337 2652 m (8)s 379 2652 m (Suppressing details)s 886 2652 m (yes)s 1093 2652 m (no)s 1250 2652 m (no)s 1408 2652 m (no)s 1586 2652 m (no)s 1775 2652 m (no)s 2017 2652 m (no)s 337 2602 m (9)s 379 2602 m (Debugging code)s 886 2602 m (yes)s 1086 2602 m (yes)s 1243 2602 m (yes)s 1408 2602 m (no)s 1586 2602 m (no)s 1775 2602 m (no)s 2010 2602 m (yes)s 316 2552 m (10)s 379 2552 m (Versioning)s 886 2552 m (yes)s 1086 2552 m (yes)s 1250 2552 m (no)s 1408 2552 m (no)s 1586 2552 m (no)s 1768 2552 m (yes)s 2010 2552 m (yes)s 316 2476 m (11)s 379 2476 m (Documentation structure)s 882 2476 m (free)s 1054 2476 m (limited)s 1239 2476 m (free)s 1386 2476 m (fixed)s 1564 2476 m (fixed)s 1764 2476 m (free)s 2005 2476 m (free)s 316 2426 m (12)s 379 2426 m (Code formatting)s 893 2426 m (no)s 1086 2426 m (yes)s 1250 2426 m (no)s 1408 2426 m (no)s 1579 2426 m (yes)s 1768 2426 m (yes)s 2010 2426 m (yes)s 316 2376 m (13)s 379 2376 m (Automatic index)s 893 2376 m (no)s 1086 2376 m (yes)s 1234 2376 m (yes?)s 1408 2376 m (no)s 1586 2376 m (no)s 1754 2376 m (\(yes\))s 1996 2376 m (\(yes\))s 12 FB 669 2274 m (Table 1: Properties of various literate programming tools)s 342 2154 m (The)s 435(last)ms 520(part)ms 613(of)ms 671(the)ms 747(table)ms 860(relates)ms 1006(to)ms 1061(the)ms 1138('book)ms 1270(format)ms 1419(paradigm'.)ms 1668(All)ms 1748(tools)ms 1861(allow)ms 1987(automatic)ms 295 2094 m (generation)s 521(of)ms 578(a)ms 615(table)ms 728(of)ms 785(contents,)ms 979(use)ms 1061(of)ms 1118(type)ms 1219(faces,)ms 1350(semi-automatic)ms 1673(indexing)ms 1864(etc.)ms 1950(Indexing)ms 2143(of)ms 295 2034 m (program)s 476(identifiers)ms 691(is)ms 736(fully)ms 842(automatic)ms 1051(\(row)ms 1158(11\))ms 1236(in)ms 1287(the)ms 1360(WEB)ms 1483(family.)ms 1638(The)ms 1728(Smalltalk)ms 1932(environment)ms 295 1974 m (and)s 382(LIPED)ms 539(use)ms 620(an)ms 683(internal)ms 851(representation)ms 1149(that)ms 1239(allows)ms 1385(automated)ms 1609(interfacing)ms 1840(to)ms 1894(the)ms 1971(semi-auto-)ms 295 1914 m (matic)s 418(mechanism)ms 658(of)ms 712(a)ms 747(text)ms 835(formatter.)ms 1046(With)ms 1158(CLiP)ms 1276(indexing)ms 1464(fully)ms 1571(depends)ms 1747(on)ms 1810(the)ms 1883(text)ms 1971(processing)ms 295 1854 m (tools)s 409(used;)ms 531(no)ms 598(automatic)ms 812(means)ms 956(are)ms 1034(available)ms 1231(to)ms 1287(generate)ms 1473(cross)ms 1593(reference)ms 1795(lists)ms 1893(in)ms 1948(the)ms 2026(type-set)ms 295 1794 m (documentation.)s 616(Neither)ms 778(does)ms 882(the)ms 955(CLiP)ms 1073(approach)ms 1268(support)ms 1430(formatting)ms 1654(of)ms 1707(the)ms 1781(code)ms 1887(\(row)ms 1994(12\))ms 2072(in)ms 2123(the)ms 295 1734 m (documentation,)s 617(but)ms 693(this)ms 778(is)ms 824(felt)ms 903(as)ms 957(an)ms 1017(advantage)ms 1232(rather)ms 1361(than)ms 1460(a)ms 1494(disadvantage)ms 1768(\(see)ms 1861(section)ms 2015(5\).)ms 342 1674 m (In)s 396(most)ms 507(systems,)ms 691(including)ms 893(CLiP,)ms 1024(the)ms 1099(literate)ms 1251(programmer)ms 1511(is)ms 1558(totally)ms 1699(free)ms 1789(to)ms 1842(choose)ms 1994(a)ms 2029(suitable)ms 295 1614 m (structure)s 479(of)ms 531(documentation)ms 838(\(row)ms 942(13\).)ms 1031(In)ms 1082(WEB,)ms 1216(however,)ms 1410(only)ms 1509(two)ms 1594(levels)ms 1720(of)ms 1772(sections)ms 1943(are)ms 2014(allowed.)ms 295 1554 m (HSD)s 405(generates)ms 604(the)ms 675(documentation)ms 983(as)ms 1035(a)ms 1067(preorder)ms 1247(traversal)ms 1430(of)ms 1482(the)ms 1553(tree)ms 1638(of)ms 1690(code)ms 1795(fragments.)ms 2018(Because)ms 295 1494 m (the)s 368(source)ms 510(files)ms 608(of)ms 662(c-no-web)ms 862(are)ms 935(the)ms 1008(c)ms 1042(modules)ms 1224(with)ms 1324(embedded)ms 1542(formatting)ms 1765(commands,)ms 2006(the)ms 2079(order)ms 295 1434 m (of)s 349(the)ms 422(code)ms 529(is)ms 575(\(necessarily\))ms 843(retained)ms 1017(in)ms 1068(the)ms 1142(printed)ms 1296(documentation.)ms 12 FAB 295 1310 m (5 Experiences)s 12 FB 295 1224 m (Many)s 430(authors)ms 597(have)ms 710(reported)ms 896(their)ms 1006(experiences)ms 1261(with)ms 1369(literate)ms 1527(programming)ms 1819(in)ms 1877(general)ms 2043([Knuth)ms 295 1164 m (1984,)s 417(Thimbleby)ms 646(1986,)ms 768(Van)ms 861(Wyk)ms 967(1987,)ms 1090(Reenskaug)ms 1319(1989,)ms 1441(Oman)ms 1572(1990b,)ms 1720(Ramsey)ms 1890(1991,)ms 2012(Ammers)ms 295 1104 m (1992,)s 421(Smith)ms 554(1992,)ms 681(Levy)ms 797(1993].)ms 940(Here)ms 1051(we)ms 1124(report)ms 1257(on)ms 1321(our)ms 1401(experiences)ms 1651(with)ms 1754(the)ms 1829(CLiP)ms 1948(approach)ms 2146(in)ms 295 1044 m (particular.)s 342 984 m (The)s 432(CLiP)ms 551(system)ms 703(has)ms 783(been)ms 891(operational)ms 1129(for)ms 1201(about)ms 1325(two)ms 1413(years)ms 1532(on)ms 1595(VAX/VMS.)ms 1851(Since)ms 1976(a)ms 2011(year)ms 2110(it)ms 2151(is)ms 295 924 m (also)s 392(available)ms 590(for)ms 665(MS-DOS)ms 871(systems.)ms 1059(CLiP)ms 1182(\(and)ms 1287(its)ms 1352(predecessor)ms 1605(VAMP\))ms 1783(has)ms 1867(been)ms 1978(used)ms 2087(for)ms 2162(a)ms 295 864 m (variety)s 450(of)ms 509(middle)ms 665(size)ms 760(programs)ms 966(\(10k)ms 1075(-)ms 1109(30k)ms 1201(lines)ms 1312(of)ms 1371(code\).)ms 1512(The)ms 1606(textprocessing)ms 1912(environments)ms 295 804 m (range)s 416(from)ms 523(the)ms 594(formatters)ms 809(Runoff)ms 961(and)ms 1043(Latex)ms 1167(to)ms 1216(the)ms 1287(word-processors)ms 1627(Lotus)ms 1751(Manuscript)ms 1989(and)ms 2071(Word)ms 295 744 m (Perfect.)s 465(The)ms 558(programming)ms 846(languages)ms 1062(have)ms 1172(mainly)ms 1327(been)ms 1438(Fortran,)ms 1613(Pascal,)ms 1769(Turbo)ms 1907(Pascal)ms 2051(Vision)ms 295 684 m (and)s 379(Modula-2.)ms 342 624 m (We)s 422(have)ms 528(found)ms 656(that)ms 742(the)ms 815(CLiP)ms 932(style)ms 1038(of)ms 1091(programming)ms 1374(is)ms 1419(sufficiently)ms 1658(intuitive)ms 1836(to)ms 1887(be)ms 1945(very)ms 2045(easy)ms 2146(to)ms 295 564 m (learn)s 409(and)ms 495(use.)ms 588(This)ms 692(is)ms 739(at)ms 789(least)ms 895(partly)ms 1026(due)ms 1112(to)ms 1166(the)ms 1241(fact)ms 1330(that)ms 1419(the)ms 1495(CLiP)ms 1614(programmer)ms 1876(deals)ms 1993(with)ms 2096(only)ms 295 504 m (two)s 382(languages)ms 595(and)ms 679(a)ms 714(couple)ms 860(of)ms 914(style)ms 1022(concepts)ms 1209(rather)ms 1338(than)ms 1437(with)ms 1539(four)ms 1634(independent)ms 1891(languages)ms 2104(\(see)ms 295 444 m (section)s 460(1\).)ms 538(In)ms 603(this)ms 699(respect)ms 864(CLiP)ms 993(is)ms 1050(undoubtedly)ms 1324(superior)ms 1511(over)ms 1623(other)ms 1750(literate)ms 1912(programming)ms 295 384 m (approaches.)s 8 FB 295 204 m (The)s 355(CLiP)ms 433(Style)ms 510(of)ms 546(Literate)ms 658(Programming)ms 850(\(4.074,)ms 953(26-feb-93\))ms 12 FB 2050 204 m ( 10 )s 50 2 2130 216 li 50 2 1995 216 li 1886 4 295 2352 li 4 172 2177 2440 li 4 172 807 2440 li 1886 4 295 2528 li 4 272 2177 2666 li 4 272 807 2666 li 1886 4 295 2804 li 4 222 2177 2917 li 4 222 807 2917 li 1886 4 295 3030 li 4 122 2177 3093 li 4 122 807 3093 li 1886 4 295 3156 li 4 54 2177 3185 li 4 54 807 3185 li endpage %%Page: 10 11 delay mfeed begpage 12 FB 342 3179 m (The)s 436(fact)ms 527(that)ms 618(the)ms 696(author/programmer)ms 1101(is)ms 1151(free)ms 1245(to)ms 1300(use)ms 1383(his)ms 1458(own)ms 1561(preferred)ms 1760(text)ms 1852(processing)ms 2082(envi-)ms 295 3119 m (ronment)s 474(is)ms 520(very)ms 622(convenient)ms 855(and)ms 940(makes)ms 1080(it)ms 1121(rather)ms 1251(easy)ms 1353(to)ms 1404(accept)ms 1545(the)ms 1619(CLiP)ms 1738(system.)ms 1902(CLiP)ms 2021(imposes)ms 295 3059 m (virtually)s 474(no)ms 533(limits)ms 657(on)ms 717(the)ms 788(way)ms 881(a)ms 912(text)ms 997(processing)ms 1221(system)ms 1369(is)ms 1412(being)ms 1533(used.)ms 1647(In)ms 1698(particular)ms 1900(CLiP)ms 2015(supports)ms 295 2999 m (the)s 368(use)ms 447(of)ms 501(any)ms 586(sort)ms 673(of)ms 727(illustrations)ms 976(for)ms 1047(explanatory)ms 1295(purposes,)ms 1498(which)ms 1632(is)ms 1678(generally)ms 1876(recognized)ms 2108(as)ms 2162(a)ms 295 2939 m (important)s 504(advantage)ms 723([Thimbleby)ms 974(1986,)ms 1102(Reenskaug)ms 1337(1989,)ms 1465(Ramsey)ms 1642(1991].)ms 1787(We)ms 1871(found)ms 2004(it)ms 2047(a)ms 2085(great)ms 295 2879 m (help)s 393(being)ms 517(able)ms 613(to)ms 664(explain)ms 824(data)ms 919(structures)ms 1126(not)ms 1203(only)ms 1304(by)ms 1367(words,)ms 1514(but)ms 1590(also)ms 1683(in)ms 1735(terms)ms 1858(of)ms 1912(diagrams.)ms 342 2819 m (We)s 420(consider)ms 599(CLiP's)ms 749(independence)ms 1033(of)ms 1084(a)ms 1116(programming)ms 1397(language)ms 1586(a)ms 1618(definite)ms 1780(advantage.)ms 2004(Together)ms 295 2759 m (with)s 401(its)ms 465(ability)ms 610(to)ms 666(extract)ms 819(several)ms 978(modules)ms 1164(from)ms 1278(a)ms 1318(set)ms 1390(of)ms 1449(files)ms 1552(it)ms 1597(provides)ms 1787(a)ms 1826(much)ms 1954(appreciated)ms 295 2699 m (flexibility.)s 514(We)ms 592(not)ms 666(only)ms 764(extract)ms 910(the)ms 980(program)ms 1159(modules,)ms 1350(but)ms 1424(also)ms 1514(various)ms 1670(additional)ms 1880(files)ms 1975(the)ms 2046(system)ms 295 2639 m (may)s 393(need)ms 500(for)ms 571(proper)ms 714(use)ms 793(and)ms 878(maintenance.)ms 1155(The)ms 1246(appendices)ms 1480(display)ms 1637(an)ms 1697(example.)ms 342 2579 m (A)s 392(general)ms 553(problem)ms 734(with)ms 837(literate)ms 990(programming)ms 1276(tools)ms 1388(is)ms 1435(called)ms 1569(the)ms 1644(preprocessor)ms 1913(problem.)ms 2107(The)ms 295 2519 m (compiler)s 485(and)ms 571(debugger)ms 770(will)ms 861(give)ms 960(their)ms 1064(reports)ms 1216(with)ms 1318(respect)ms 1473(to)ms 1525(the)ms 1599(line)ms 1687(numbers)ms 1872(of)ms 1927(the)ms 2001(extracted)ms 295 2459 m (modules)s 477(rather)ms 607(than)ms 706(the)ms 780(original)ms 949(documentation.)ms 1272(For)ms 1354(this)ms 1439(reason)ms 1583(the)ms 1657(modules)ms 1840(have)ms 1947(to)ms 1999(be)ms 2059(exam-)ms 295 2399 m (ined)s 393(next)ms 492(to)ms 544(the)ms 618(documentation)ms 928(and)ms 1013(the)ms 1087(references)ms 1306(are)ms 1380(indirect.)ms 1558(This)ms 1659(is)ms 1706(a)ms 1741(nuisance,)ms 1941(especially)ms 2154(if)ms 295 2339 m (the)s 370(layout)ms 509(of)ms 566(the)ms 641(modules)ms 825(has)ms 906(little)ms 1012(correspondence)ms 1340(to)ms 1394(the)ms 1469(code)ms 1578(lines)ms 1687(of)ms 1743(the)ms 1819(documentation.)ms 2143(In)ms 295 2279 m (our)s 375(view)ms 486(Knuth)ms 624(is)ms 671(definitely)ms 876(wrong)ms 1018(in)ms 1070(asserting)ms 1262(that)ms 1350(the)ms 1425(intermediate)ms 1689(modules)ms 1872(can)ms 1955(\(and)ms 2057(in)ms 2110(fact)ms 295 2219 m (should\))s 456(be)ms 514(ignored,)ms 691(the)ms 763(reason)ms 905(why)ms 1003(his)ms 1072(WEB)ms 1195(system)ms 1345(produces)ms 1537(deliberately)ms 1784(unreadable)ms 2015(modules)ms 295 2159 m ([Knuth)s 446(1984].)ms 586(CLiP)ms 702(does)ms 804(not)ms 878(format)ms 1021(the)ms 1093(code)ms 1197(fragments,)ms 1420(neither)ms 1569(in)ms 1618(the)ms 1690(documentation)ms 1997(nor)ms 2074(in)ms 2123(the)ms 295 2099 m (extracted)s 499(modules.)ms 702(Therefore)ms 920(the)ms 1003(code)ms 1118(fragments)ms 1339(look)ms 1449(very)ms 1560(much)ms 1692(alike)ms 1810(in)ms 1870(both)ms 1980(situations.)ms 295 2039 m (Although)s 495(this)ms 578(does)ms 681(not)ms 756(eliminate)ms 954(the)ms 1026(preprocessor)ms 1293(problem)ms 1471(of)ms 1524(course,)ms 1678(it)ms 1717(makes)ms 1856(it)ms 1895(much)ms 2018(easier)ms 2146(to)ms 295 1979 m (deal)s 390(with)ms 492([Ramsey)ms 682(1991].)ms 342 1919 m (The)s 436(most)ms 550(prominent)ms 773(disadvantage)ms 1051(of)ms 1110(CLiP)ms 1232(is)ms 1282(its)ms 1347(inability)ms 1530(to)ms 1586(produce)ms 1764(an)ms 1828(index)ms 1956(of)ms 2015(program)ms 295 1859 m (identifiers)s 508(fully)ms 614(automatically.)ms 910(This)ms 1010(problem)ms 1188(is)ms 1233(inherent)ms 1408(to)ms 1458(CLiPs)ms 1594(language)ms 1786(independence.)ms 2084(With)ms 295 1799 m (CLiP)s 411(one)ms 494(has)ms 571(to)ms 621(create)ms 751(an)ms 809(X-ref)ms 929(list)ms 1001(the)ms 1072(same)ms 1186(way)ms 1280(as)ms 1333(one)ms 1416(would)ms 1552(create)ms 1682(the)ms 1754(index)ms 1876(of)ms 1928(a)ms 1961(book.)ms 2084(Thus)ms 295 1739 m (the)s 368(text)ms 456(processing)ms 682(system)ms 833(completely)ms 1068(determines)ms 1300(the)ms 1374(degree)ms 1519(of)ms 1573(support)ms 1736(for)ms 1807(this)ms 1892(activity.)ms 342 1679 m (If)s 385(CLiP)ms 500(is)ms 543(used)ms 644(with)ms 743(a)ms 775(word-processor,)ms 1108(one)ms 1190(has)ms 1266(to)ms 1315(export)ms 1453(ASCII-files)ms 1696(from)ms 1803(the)ms 1873(word-processor)ms 295 1619 m (files)s 398(before)ms 542(CLiP)ms 665(can)ms 752(proceed.)ms 939(This)ms 1045(implies)ms 1210(a)ms 1249(small)ms 1374(amount)ms 1541(of)ms 1600(overhead)ms 1800(which)ms 1940(we)ms 2015(consider)ms 295 1559 m (neglectable.)s 12 FAB 295 1436 m (6 Future developments)s 12 FB 295 1349 m (The)s 386(quest)ms 506(for)ms 578(techniques)ms 806(to)ms 859(write)ms 976(comprehensible)ms 1306(programs)ms 1509(started)ms 1656(in)ms 1709(the)ms 1784(early)ms 1898(seventies)ms 2096(with)ms 295 1289 m (structured)s 508(programming)ms 795([Dijkstra)ms 986(1972,)ms 1113(Wirth)ms 1244(1971/1974].)ms 1501(Literate)ms 1670(programming)ms 1957(is)ms 2004(a)ms 2040(signifi-)ms 295 1229 m (cant)s 391(step)ms 485(forwards,)ms 688(formulated)ms 921(by)ms 984(Lins)ms 1087(as)ms 1141("Literate)ms 1331(programming)ms 1616(=)ms 1658(structured)ms 1871(programming)ms 2156(+)ms 295 1169 m (structured)s 507(documentation")ms 837([Lins)ms 955(1989].)ms 1097(What)ms 1218(more)ms 1333(can)ms 1415(we)ms 1486(expect)ms 1629(in)ms 1680(the)ms 1754(future?)ms 342 1109 m (A)s 397(fairly)ms 524(obvious)ms 701(idea)ms 804(is)ms 856(to)ms 914(replace)ms 1077(the)ms 1158(book)ms 1277(format)ms 1429(by)ms 1498(hypertext)ms 1706(structures.)ms 1932(Experiments)ms 295 1049 m (indicate)s 465(that)ms 552(the)ms 626(way)ms 721(in)ms 772(which)ms 907(information)ms 1155(is)ms 1201(disclosed)ms 1399(by)ms 1461(means)ms 1601(of)ms 1655(different)ms 1839(access)ms 1979(paths)ms 2097(is)ms 2143(of)ms 295 989 m (eminent)s 477(importance)ms 722(for)ms 802(its)ms 870(comprehensibility)ms 1252([Oman)ms 1412(1990a/1990b].)ms 1723(Since)ms 1855(a)ms 1898(hypertext)ms 2108(is)ms 2162(a)ms 295 929 m (generalization)s 589(of)ms 642(the)ms 715(conventional)ms 984(book)ms 1096(format)ms 1240(there)ms 1352(can)ms 1433(be)ms 1491(no)ms 1553(doubt)ms 1678(that)ms 1764(it)ms 1803(provides)ms 1987(a)ms 2021(superior)ms 295 869 m (paradigm)s 498(in)ms 551(this)ms 638(respect.)ms 806(In)ms 862(addition)ms 1040(a)ms 1077(hypertext)ms 1280(easily)ms 1411(accommodates)ms 1723(a)ms 1759(multimedia)ms 2001(approach)ms 295 809 m (to)s 347(code)ms 455(explanation.)ms 714(It)ms 758(would)ms 897(for)ms 969(instance)ms 1146(be)ms 1207(possible)ms 1384(to)ms 1437(explain)ms 1598(the)ms 1672(behaviour)ms 1886(of)ms 1941(a)ms 1977(given)ms 2101(data)ms 295 749 m (structure)s 482(by)ms 544(an)ms 604(animation)ms 817(in)ms 868(moving)ms 1033(images)ms 1188(rather)ms 1317(than)ms 1415(by)ms 1478(a)ms 1512(description)ms 1747(in)ms 1799(plain)ms 1911(English.)ms 342 689 m (It)s 384(is)ms 429(possible)ms 605(to)ms 656(formalize)ms 859(the)ms 932(design)ms 1074(steps)ms 1186(that)ms 1273(we)ms 1343(make)ms 1463(to)ms 1514(\(de\)compose)ms 1784(a)ms 1818(system)ms 1969(in)ms 2020(terms)ms 2143(of)ms 295 629 m (a)s 336(particular)ms 547(model.)ms 704(For)ms 793(instance)ms 976(Back)ms 1099(and)ms 1190(Morris)ms 1346(have)ms 1460(formalized)ms 1696(the)ms 1776(stepwise)ms 1968(refinement)ms 295 569 m (technique)s 502(as)ms 556(proposed)ms 752(by)ms 815(Dijkstra)ms 989(and)ms 1074(Wirth)ms 1204(in)ms 1255(the)ms 1329(early)ms 1442(seventies)ms 1638([Wirth)ms 1784(1971/1974,)ms 2023(Dijkstra)ms 295 509 m (1972,)s 424(Back)ms 545(1980,)ms 675(Morris)ms 828(1987].)ms 975(Let)ms 1059(us)ms 1121(consider)ms 1308(the)ms 1386(programming)ms 1676(process)ms 1843(as)ms 1902(a)ms 1942(sequence)ms 2143(of)ms 295 449 m (design)s 434(steps)ms 543(each)ms 644(of)ms 695(which)ms 826(is)ms 869(implemented)ms 1139(by)ms 1198(a)ms 1229(certain)ms 1374(amount)ms 1533(of)ms 1584(code.)ms 1700(In)ms 1751(the)ms 1821(context)ms 1978(of)ms 2028(a)ms 2060(model)ms 295 389 m (it)s 333(is)ms 376(possible)ms 551(to)ms 600(validate)ms 768(the)ms 840(code)ms 945(of)ms 997(every)ms 1118(step)ms 1209(with)ms 1308(respect)ms 1460(to)ms 1509(the)ms 1581(corresponding)ms 1877(design)ms 2018(decision)ms 295 329 m (and)s 379(to)ms 431(support)ms 593(the)ms 667(validation)ms 879(process)ms 1042(by)ms 1104(means)ms 1244(of)ms 1299(a)ms 1333(tool.)ms 8 FB 295 204 m (The)s 355(CLiP)ms 433(Style)ms 510(of)ms 546(Literate)ms 658(Programming)ms 850(\(4.074,)ms 953(26-feb-93\))ms 12 FB 2050 204 m ( 11 )s 50 2 2130 216 li 50 2 1995 216 li endpage %%Page: 11 12 delay mfeed begpage 12 FB 342 3179 m (The)s 432(metaphor)ms 634(of)ms 689(a)ms 725(literate)ms 876(program)ms 1059(as)ms 1114(a)ms 1149(textbook)ms 1337(can)ms 1420(be)ms 1480(carried)ms 1632(through)ms 1801(even)ms 1908(further)ms 2058(to)ms 2110(that)ms 295 3119 m (of)s 354(a)ms 393(mathematical)ms 680(textbook.)ms 885(A)ms 939(mathematical)ms 1226(textbook)ms 1418(does)ms 1527(not)ms 1608(explain)ms 1773(a)ms 1813(theory)ms 1958(in)ms 2014(terms)ms 2143(of)ms 295 3059 m (theorems)s 488(that)ms 573(are)ms 644(proven)ms 793(by)ms 853(formal)ms 996(techniques.)ms 1233(Instead)ms 1387(it)ms 1425(derives)ms 1579(its)ms 1636(proofs)ms 1774(by)ms 1834('informal)ms 2033(rigour',)ms 295 2999 m (that)s 392(is)ms 447(the)ms 531(proofs)ms 681(are)ms 764(written)ms 928(in)ms 989(natural)ms 1151(language)ms 1353(but)ms 1440(in)ms 1501(a)ms 1545(very)ms 1657(precise)ms 1820(and)ms 1915(unambiguous)ms 295 2939 m (formulation.)s 555(Using)ms 686(the)ms 758(same)ms 872(technique)ms 1078(a)ms 1112(literate)ms 1262(program)ms 1443(can,)ms 1537(at)ms 1584(least)ms 1688(in)ms 1738(principle,)ms 1940(be)ms 1998(modelled)ms 295 2879 m (as)s 356(an)ms 423(informal)ms 615(correctness)ms 860(argument)ms 1069(for)ms 1147(the)ms 1228(implemented)ms 1509(system.)ms 1680(This)ms 1789(seems)ms 1931(an)ms 1998(attractive)ms 295 2819 m (thought)s 457(especially)ms 666(in)ms 714(a)ms 746(context)ms 903(where)ms 1034(\(de\)composition)ms 1371(steps)ms 1481(can)ms 1559(be)ms 1616(validated)ms 1809(by)ms 1868(automatic)ms 2075(tools.)ms 295 2759 m (In)s 349(our)ms 428(department)ms 665(we)ms 736(are)ms 810(exploring)ms 1014(this)ms 1099(path.)ms 12 FAB 295 2636 m (7 Conclusions)s 12 FB 342 2549 m (Our)s 434(experiences)ms 685(with)ms 789(literate)ms 943(programming)ms 1231(in)ms 1285(general)ms 1447(and)ms 1534(with)ms 1638(CLiP)ms 1759(in)ms 1813(particular)ms 2020(are)ms 2096(very)ms 295 2489 m (positive.)s 478(CLiP)ms 597(is)ms 644(easy)ms 746(to)ms 798(use)ms 877(and)ms 963(its)ms 1023(flexibility)ms 1233(is)ms 1280(very)ms 1382(much)ms 1506(appreciated.)ms 1762(We)ms 1844(fully)ms 1952(confirm)ms 2123(the)ms 295 2429 m (observation)s 541(of)ms 595(others)ms 730(that)ms 818(the)ms 892(improvement)ms 1172(in)ms 1223(quality)ms 1375(of)ms 1430(the)ms 1504(final)ms 1608(product)ms 1774(by)ms 1837(far)ms 1905(outweighs)ms 2123(the)ms 295 2369 m (initial)s 427(overhead)ms 627(that)ms 718(inevitably)ms 934(goes)ms 1042(with)ms 1147(producing)ms 1366(a)ms 1405(program)ms 1590(in)ms 1646(literate)ms 1801(form)ms 1914([Knuth)ms 2072(1984,)ms 295 2309 m (Levy)s 412(1993].)ms 555(The)ms 647(advantages)ms 883(are)ms 959(even)ms 1067(more)ms 1184(prominent)ms 1404(when)ms 1527(it)ms 1569(comes)ms 1711(to)ms 1764(the)ms 1839(maintenance)ms 2106(of)ms 2162(a)ms 295 2249 m (program.)s 342 2189 m (All)s 415(of)ms 467(the)ms 538(present)ms 692(literate)ms 841(programming)ms 1123(tools)ms 1230(have)ms 1335(originated)ms 1547(from)ms 1654(people)ms 1798(in)ms 1847(need)ms 1951(of)ms 2002(a)ms 2035(module)ms 295 2129 m (extractor)s 484(for)ms 553(at)ms 601(best)ms 693(a)ms 727(limited)ms 880(variety)ms 1030(of)ms 1083(environments.)ms 1380(This)ms 1480(is)ms 1525(considered)ms 1753(a)ms 1787(serious)ms 1940(drawback)ms 2146(to)ms 295 2069 m (make)s 415(literate)ms 565(programming)ms 849(a)ms 883(generally)ms 1081(accepted)ms 1268(technique)ms 1474([Van)ms 1585(Wyk)ms 1694(1990].)ms 1835(CLiP)ms 1953(is)ms 1998(unique)ms 2146(in)ms 295 2009 m (that)s 388(it)ms 435(has)ms 520(been)ms 633(designed)ms 829(to)ms 887(be)ms 953(a)ms 994(truly)ms 1107(general)ms 1273(literate)ms 1430(programming)ms 1721(tool.)ms 1830(Consequently)ms 2123(the)ms 295 1949 m (system)s 446(misses)ms 592(a)ms 626(few)ms 714(features,)ms 897(but)ms 974(this)ms 1058(is)ms 1104(not)ms 1181(experienced)ms 1435(as)ms 1489(a)ms 1523(serious)ms 1678(limitation.)ms 12 FAB 295 1826 m (8 References)s 12 FB 295 1739 m (Ammers)s 483(E.W.)ms 601(van)ms 689(and)ms 777(M.R.)ms 896(Kramer,)ms 1077(VAMP:)ms 1251(A)ms 1303(Tool)ms 1413(for)ms 1487(Programming)ms 1778(Independent)ms 2041(of)ms 2098(Pro-)ms 436 1679 m (gramming)s 656(Language)ms 868(and)ms 956(Formatter,)ms 12 FBI 1180(Proceedings)ms 1445(of)ms 1499(the)ms 1575(6th)ms 1654(Annual)ms 1814(Computer)ms 2029(Confer-)ms 12 FBI 436 1619 m (ence)s 540(CompEuro'92,)ms 851(The)ms 938(Hague,)ms 1097(371-376)ms 12 FB (.)s 295 1544 m (Avenarius)s 509(A.)ms 566(and)ms 648(S.)ms 697(Oppermann)ms 942(\(1990\),)ms 1096(FWEB:)ms 1258(A)ms 1303(Literate)ms 1468(Programming)ms 1751(System)ms 1908(for)ms 1975(Fortran8x,)ms 12 FBI 436 1484 m (ACM)s 554(Sigplan)ms 719(Notices)ms 881(25,)ms 956(1,)ms 1006(52-58)ms 12 FB (.)s 295 1409 m (Back)s 413(R.J.)ms 507(\(1980\),)ms 669(Correctness)ms 921(Preserving)ms 1151(Program)ms 1339(Refinements:)ms 1621(Proof,)ms 1761(Theory)ms 1921(and)ms 2010(Applica-)ms 436 1349 m (tions,)s 558(MC)ms 648(Tract)ms 766(131,)ms 12 FBI 866(Mathematical)ms 1156(Centre)ms 1305(Tracts)ms 12 FB (,)s 1458(Amsterdam.)ms 295 1274 m (Bentley)s 463(J.)ms 509(and)ms 594(D.E.)ms 699(Knuth)ms 837(\(1986a\),)ms 1019(Programming)ms 1307(Pearls:)ms 1457(Literate)ms 1625(Programming,)ms 12 FBI 1926(Communica-)ms 12 FBI 436 1214 m (tions)s 545(of)ms 597(the)ms 670(ACM)ms 788(29,)ms 863(5,)ms 913(364-369)ms 12 FB (.)s 295 1139 m (Bentley)s 469(J.,)ms 533(D.E.)ms 644(Knuth)ms 788(and)ms 879(D.)ms 947(McIlroy)ms 1130(\(1986b\),)ms 1320(Programming)ms 1615(Pearls:)ms 1770(A)ms 1825(Literate)ms 2000(Program,)ms 12 FBI 436 1079 m (Communications)s 787(of)ms 838(the)ms 912(ACM)ms 1030(29,)ms 1105(6,)ms 1155(471-483)ms 12 FB (.)s 295 1004 m (Bishop)s 453(J.M.)ms 559(and)ms 648(K.M.)ms 771(Gregson)ms 957(\(1992\),)ms 1120(Literate)ms 1293(Programming)ms 1585(and)ms 1674(the)ms 1752(LIPED)ms 1911(Environment,)ms 12 FBI 436 944 m (Structured)s 659(Programming)ms 952(13,)ms 1027(1,)ms 1077(23-34)ms 12 FB (.)s 295 869 m (Brooks)s 462(F.P.)ms 565(\(1982\),)ms 733(The)ms 834(Mythical)ms 1037(Man-Month:)ms 1315(Essays)ms 1474(on)ms 1546(software)ms 1741(Engineering,)ms 12 FBI 2021(Addison)ms 12 FBI 436 809 m (Wesley)s 12 FB (,)s 602(Reading,)ms 794(Massachusets.)ms 295 734 m (Dijkstra)s 472(E.W.)ms 590(\(1972\),)ms 752(Notes)ms 885(on)ms 951(Structured)ms 1175(Programming,)ms 1479(pages)ms 1609(1-82)ms 1716(in)ms 1771(Structured)ms 1996(Program-)ms 436 674 m (ming)s 551(\(O.-J.)ms 677(Dahl,)ms 799(E.W.)ms 915(Dijkstra)ms 1088(and)ms 1173(C.A.R.)ms 1326(Hoare\),)ms 12 FBI 1490(Academic)ms 1699(Press)ms 12 FB (,)s 1835(London.)ms 295 599 m (Fox)s 385(J.)ms 429(\(1990\),)ms 588(Webless)ms 769(Literate)ms 937(Programming,)ms 12 FBI 1237(TUGboat)ms 1439(11,)ms 1514(4,)ms 1564(511-513)ms 12 FB (.)s 295 524 m (Knuth)s 432(D.E.)ms 536(\(1984\),)ms 694(Literate)ms 862(Programming,)ms 12 FBI 1162(The)ms 1250(Computer)ms 1462(Journal,)ms 1643(27,)ms 1718(2,)ms 1768(97-111)ms 12 FB (.)s 295 449 m (Knuth)s 432(D.E.)ms 536(\(1986\),)ms 694(TeX:)ms 810(The)ms 900(Program,)ms 12 FBI 1097(Addison)ms 1274(Wesley)ms 12 FB (.)s 295 374 m (Levy)s 410(S.)ms 463(\(1987\),)ms 621(WEB)ms 744(Adapted)ms 926(to)ms 978(C:)ms 1038(Another)ms 1214(Approach,)ms 12 FBI 1436(TUGboat)ms 1637(8,)ms 1687(1,)ms 1737(12-13)ms 12 FB (.)s 8 FB 295 204 m (The)s 355(CLiP)ms 433(Style)ms 510(of)ms 546(Literate)ms 658(Programming)ms 850(\(4.074,)ms 953(26-feb-93\))ms 12 FB 2050 204 m ( 12 )s 50 2 2130 216 li 50 2 1995 216 li endpage %%Page: 12 13 delay mfeed begpage 12 FB 295 3179 m (Lins)s 396(C.)ms 454(\(1989\),)ms 613(A)ms 661(First)ms 765(Look)ms 883(at)ms 932(Literate)ms 1100(Programming,)ms 12 FBI 1400(Structured)ms 1624(Programming)ms 1917(10,)ms 1992(1,)ms 2042(60-62)ms 12 FB (.)s 295 3104 m (Morris)s 455(J.M.)ms 568(\(1987\),)ms 738(A)ms 798(Theoretical)ms 1050(Basis)ms 1183(for)ms 1265(Stepwise)ms 1470(Refinement)ms 1728(and)ms 1824(the)ms 1910(Programming)ms 436 3044 m (Calculus,)s 12 FBI 636(Science)ms 801(of)ms 852(Computer)ms 1065(Programming)ms 1358(9,)ms 1408(287-306)ms 12 FB (.)s 295 2969 m (Oman)s 435(P.W.)ms 553(and)ms 643(C.R.)ms 753(Cook)ms 880(\(1990a\),)ms 1066(The)ms 1162(Book)ms 1288(Paradigm)ms 1498(for)ms 1575(Improved)ms 1787(Maintenance,)ms 12 FBI 2076(IEEE)ms 12 FBI 436 2909 m (Software)s 626(7,)ms 676(1,)ms 726(39-45)ms 12 FB (.)s 295 2834 m (Oman)s 428(P.W.)ms 539(and)ms 623(C.R.)ms 725(Cook)ms 845(\(1990b\),)ms 1027(Typographic)ms 1294(Style)ms 1408(is)ms 1452(More)ms 1572(than)ms 1669(Cosmic,)ms 12 FBI 1846(Communications)ms 12 FBI 436 2774 m (of)s 487(the)ms 561(ACM)ms 679(33,)ms 754(5,)ms 804(506-520)ms 12 FB (.)s 295 2699 m (Parikh)s 437(G.)ms 497(and)ms 581(N.)ms 642(Zvegintov)ms 859(\(eds.\))ms 983(\(1983\).)ms 1141(Tutorial)ms 1314(on)ms 1376(Software)ms 1568(Maintenance,)ms 12 FBI 1851(IEEE/)ms 1985(Computer)ms 12 FBI 436 2639 m (Society)s 592(Press)ms 12 FB (,)s 729(Silver)ms 860(Spring,)ms 1019(Md.)ms 295 2564 m (Parnas)s 445(D.L.)ms 553(and)ms 642(C.)ms 705(Clemants)ms 911(\(1986\),)ms 1073(A)ms 1126(Rational)ms 1313(Design)ms 1471(Process:)ms 1655(How)ms 1769(and)ms 1858(Why)ms 1972(to)ms 2027(Fake)ms 2142(It,)ms 12 FBI 436 2504 m (Software)s 626(Engineering)ms 886(12,)ms 961(2,)ms 1011(251-257)ms 12 FB (.)s 295 2429 m (Ramsey)s 469(N.)ms 530(\(1989\),)ms 689(Weaving)ms 883(a)ms 918(Language)ms 1128(Independent)ms 1389(WEB,)ms 12 FBI 1525(Communications)ms 1877(of)ms 1929(the)ms 2003(ACM)ms 2122(32,)ms 12 FBI 436 2369 m (9,)s 486(1051-1055)ms 12 FB (.)s 295 2294 m (Ramsey)s 465(N.)ms 523(and)ms 605(C.)ms 660(Marceau)ms 845(\(1991\),)ms 1000(Literate)ms 1165(Programming)ms 1450(on)ms 1509(a)ms 1541(Team)ms 1664(Project,)ms 12 FBI 1828(Software)ms 2015(Practice)ms 12 FBI 436 2234 m (and)s 523(Experience)ms 760(21,)ms 835(7,)ms 885(677-683)ms 12 FB (.)s 295 2159 m (Reenskaug)s 531(T.)ms 591(and)ms 681(A.L.)ms 789(Skaar)ms 920(\(1989\),)ms 1083(An)ms 1162(Environment)ms 1440(for)ms 1515(Literate)ms 1688(Smalltalk)ms 1897(Programming,)ms 12 FBI 436 2099 m (OOPSLA'89)s 701(Proceedings,)ms 976(337-345)ms 12 FB (.)s 295 2024 m (Sewell)s 453(E.W.)ms 578(\(1987\),)ms 745(How)ms 865(to)ms 926(MANGLE)ms 1162(your)ms 1275(Software:)ms 1492(The)ms 1592(WEB)ms 1725(System)ms 1894(for)ms 1975(Modula-2,)ms 12 FBI 436 1964 m (TUGboat)s 637(8,)ms 687(2,)ms 737(118-122)ms 12 FB (.)s 295 1889 m (Sewell)s 454(E.W.)ms 580(\(1989\),)ms 749(Weaving)ms 953(a)ms 999(Program:)ms 1208(Literate)ms 1387(Programming)ms 1685(in)ms 1748(WEB,)ms 12 FBI 1894(Van)ms 1998(Nostrand)ms 12 FBI 436 1829 m (Reinhold)s 12 FB (.)s 295 1754 m (Smith)s 433(L.M.C.)ms 597(and)ms 688(M.H.)ms 812(Samadzadeh)ms 1083(\(1992\),)ms 1247(Measuring)ms 1480(Complexity)ms 1734(and)ms 1825(Stability)ms 2013(of)ms 2073(WEB)ms 436 1694 m (Programs,)s 12 FBI 652(Structured)ms 876(Programming)ms 1169(13,)ms 1244(1,)ms 1294(35-50)ms 12 FB (.)s 295 1619 m (Soloway)s 481(E,)ms 536(J.)ms 580(Pinto,)ms 710(S.)ms 762(Letovsky,)ms 972(D)ms 1020(Littman)ms 1190(and)ms 1274(R.)ms 1331(Lampert)ms 1513(\(1988\),)ms 1670(Designing)ms 1887(documentation)ms 436 1559 m (to)s 487(Compensate)ms 747(for)ms 817(Delocalized)ms 1069(Plans,)ms 12 FBI 1202(Communications)ms 1553(of)ms 1605(the)ms 1678(ACM)ms 1797(31,)ms 1872(11,)ms 1947(1259-1267)ms 12 FB (.)s 295 1484 m (Thimbleby)s 523(H.)ms 581(\(1986\),)ms 736(Experiences)ms 990(of)ms 12 Sym 1050(\242)ms 12 FB (Literate)s 1227(Programming)ms 12 Sym (\242)s 12 FB 1533(using)ms 1650(Cweb)ms 1776(\(a)ms 1824(variant)ms 1973(of)ms 2023(Knuth's)ms 436 1424 m (WEB\),)s 12 FBI 588(The)ms 676(Computer)ms 888(Journal)ms 1056(29,)ms 1131(3,)ms 1181(201-211)ms 12 FB (.)s 295 1349 m (Tung)s 414(S.-H.)ms 534(\(1989\),)ms 693(A)ms 744(Structured)ms 966(Method)ms 1136(for)ms 1208(Literate)ms 1377(Programming,)ms 12 FBI 1679(Structured)ms 1904(Programming)ms 12 FBI 436 1289 m (10,)s 511(2,)ms 561(113-120)ms 12 FB (.)s 295 1214 m (Van)s 388(Wyk)ms 496(C.J.)ms 584(\(1990\),)ms 740(Literate)ms 906(Programming:)ms 1205(An)ms 1277(Assessment,)ms 12 FBI 1536(Communications)ms 1885(of)ms 1935(the)ms 2006(ACM)ms 2122(33,)ms 12 FBI 436 1154 m (3,)s 486(361-365)ms 12 FB (.)s 295 1079 m (Wirth)s 422(N.)ms 481(\(1971\),)ms 637(Program)ms 820(Development)ms 1100(by)ms 1161(Stepwise)ms 1352(Refinement,)ms 12 FBI 1608(Communications)ms 1958(of)ms 2007(the)ms 2079(ACM)ms 12 FBI 436 1019 m (14,)s 511(4,)ms 561(221-227)ms 12 FB (.)s 295 944 m (Wirth)s 425(N.)ms 487(\(1974\),)ms 646(On)ms 720(the)ms 795(Composition)ms 1066(of)ms 1121(Well-Structured)ms 1457(Programs,)ms 12 FBI 1674(ACM)ms 1793(Computing)ms 2029(Surveys)ms 12 FBI 436 884 m (6,)s 486(4,)ms 536(247-259)ms 12 FB (.)s 8 FB 295 204 m (The)s 355(CLiP)ms 433(Style)ms 510(of)ms 546(Literate)ms 658(Programming)ms 850(\(4.074,)ms 953(26-feb-93\))ms 12 FB 2050 204 m ( 13 )s 50 2 2130 216 li 50 2 1995 216 li endpage %%Trailer enddocument %%Pages: 13 %%DocumentFonts: %%+ Helvetica-Bold %%+ Times-Roman %%+ Times-Italic %%+ Times-Bold %%+ Courier %%+ AvantGarde-Book %%EOF