%! % This is the prolog used by OzTeX 1.6 to convert a DVI file into PostScript. % Set dev to "LW" if LaserWriter, "LINO" if Linotronic, or "?" if unknown: /dev (?) def statusdict /product known { statusdict /product get (LaserWriter) anchorsearch { pop pop /dev (LW) def } { pop } ifelse statusdict /product get (Linotype) anchorsearch { pop pop /dev (LINO) def } { pop } ifelse } if /@setup { % set up OzTeX's coordinate system /res exch def % desired resolution (defines dots per inch) /voff exch def % vertical offset (in dots) /hoff exch def % horizontal offset (in dots) /ht exch def % paper height (in dots) /wd exch def % paper width (in dots) /land wd ht gt def % print in landscape orientation? /oshift ht res sub neg def % vertical shift (in dots) for portrait origin dev (?) eq % unknown device? { land { % landscape 90 rotate % rotate axes 90deg anticlockwise 72 res div dup neg scale % units now device dots res dup translate % move to TeX origin voff neg hoff translate % adjust TeX origin if necessary } { % portrait 72 res div dup neg scale % units now device dots res oshift translate % move to TeX origin hoff voff translate % adjust TeX origin if necessary } ifelse } if dev (LW) eq % LaserWriter? { % Display model and version in OzTeX window: % (\rmodel = ) print statusdict /product get print % (\rversion = ) print version print (\r) print flush land { % landscape 90 rotate % rotate axes 90deg anticlockwise 72 res div dup neg scale % units now device dots res dup translate % move to TeX origin voff neg hoff translate % adjust TeX origin if necessary % Model-specific adjustments to origin can be made here: statusdict /product get (LaserWriter) eq { -90 0 translate % move left a bit } { statusdict /product get (LaserWriter Plus) eq { -32 0 translate % move left a bit } { statusdict /product get (LaserWriter II NTX) eq { -20 0 translate % move left a bit } { statusdict /product get (LaserWriter IIg) eq { 0 0 translate } { % some other model 0 0 translate } ifelse } ifelse } ifelse } ifelse } { % portrait 72 res div dup neg scale % units now device dots res oshift translate % move to TeX origin hoff voff translate % adjust TeX origin if necessary % Model-specific adjustments to origin can be made here: statusdict /product get (LaserWriter) eq { 0 22 translate % move down a bit } { statusdict /product get (LaserWriter Plus) eq { 0 0 translate } { statusdict /product get (LaserWriter II NTX) eq { 0 14 translate % move down a bit } { statusdict /product get (LaserWriter IIg) eq { 0 0 translate } { % some other model 0 0 translate } ifelse } ifelse } ifelse } ifelse } ifelse % The matrix produced above can cause scaling problems, % so round each matrix value to nearest integer and use setmatrix: matrix currentmatrix dup dup 0 get round cvi 0 exch put dup dup 1 get round cvi 1 exch put dup dup 2 get round cvi 2 exch put dup dup 3 get round cvi 3 exch put dup dup 4 get round cvi 4 exch put dup dup 5 get round cvi 5 exch put setmatrix % Display new matrix in OzTeX window: % matrix currentmatrix % dup 0 get ( ) cvs print ( ) print % dup 1 get ( ) cvs print ( ) print % dup 2 get ( ) cvs print ( ) print % dup 3 get ( ) cvs print ( ) print % dup 4 get ( ) cvs print ( ) print % dup 5 get ( ) cvs print (\r) print flush % pop } if dev (LINO) eq % Linotronic? { land { % landscape 90 rotate % rotate axes 90deg anticlockwise 72 res div dup neg scale % units now device dots res dup translate % move to TeX origin voff neg hoff translate % adjust TeX origin if necessary } { % portrait newpath clippath pathbbox % push LLx LLy URx URy (URy = ht in pts) /paperht exch 72 div def % paper height in inches pop pop pop % remove URx LLy LLx 72 res div dup neg scale % units now device dots res paperht res mul neg res add translate % move to TeX origin hoff voff translate % adjust TeX origin if necessary } ifelse } if % Some fine-tuning of the code used to draw a rule is necessary. % Use page 18 in nasty.dvi to check results: dev (LW) eq % LaserWriter? { version cvr 38.0 le % early model? { land { % landscape /r % set a wd by ht rule at h,v { newpath moveto % move to h,v /ht exch 1 sub def % reduce height by 1 /wd exch 1 sub def % ditto for width wd 0 rlineto 0 ht neg rlineto wd neg 0 rlineto fill } bind def } { % portrait /r % set a wd by ht rule at h,v { newpath 1 add moveto % move to h,v+1 /ht exch 1 sub def % reduce height by 1 /wd exch 1 sub def % ditto for width wd 0 rlineto 0 ht neg rlineto wd neg 0 rlineto fill } bind def } ifelse } if version cvr 2000.0 gt % IIg or newer model? { /r % set a wd by ht rule at h,v { newpath 1 add moveto % move to h,v+1 /ht exch def % set height /wd exch def % set width wd 0 rlineto 0 ht neg rlineto wd neg 0 rlineto fill } bind def } if } if /mtrx 6 array def mtrx currentmatrix pop % save our new transformation matrix } def % end of @setup % @saveVM and @restoreVM are only used if we are conserving VM % by downloading font bitmaps more often: /@saveVM {/prefontVM save def} def /@restoreVM {prefontVM restore} def /@newfont % create new font dict { /maxchcode exch def /fontid exch def fontid 7 dict def fontid load begin /FontType 3 def /FontMatrix [1 0 0 -1 0 0] def % -1 because y scale is negative /FontBBox [0 0 1 1] def /BitMaps maxchcode 1 add array def /BuildChar {CharBuilder} def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for % The above 2 lines fix a definefont error that occurs on some printers % (eg. the LaserWriter NTX-J). If you have an old LaserWriter and % now get VM errors then you might want to revert to the old code: % % /Encoding maxchcode 1 add array def % 0 1 maxchcode {Encoding exch /.notdef put} for end fontid fontid load definefont pop } def % The char data, a bitmap descriptor, is an array with 6 elements; % element 0 is either a hex string or an array of hex strings (the latter % is required for large PK chars with more than 65535 hex digits): /ch-image {ch-data 0 get dup type /stringtype ne {N get /N N 1 add def} if } def % hex string /ch-width {ch-data 1 get} def % the number of pixels across /ch-height {ch-data 2 get} def % the number of pixels tall /ch-xoff {ch-data 3 get} def % number of pixels to left of origin /ch-yoff {ch-data 4 get} def % number of pixels below origin /ch-advw {ch-data 5 get} def % advance width % The following character builder looks up the char data in the BitMaps array % and paints the character: /CharBuilder % image one char { /ch-code exch def % save the char code /font-dict exch def % and the font dict /ch-data font-dict /BitMaps get ch-code get def /N 0 def ch-advw 0 ch-xoff neg ch-height ch-yoff sub 1 sub neg % -xo , -(ht-yo-1) ch-width ch-xoff sub 1 sub ch-yoff % (wd-xo-1) , yo setcachedevice ch-width ch-height true [1 0 0 -1 ch-xoff ch-yoff] % bitmap sent top to bottom {ch-image} imagemask } def /sf {setfont} def % set current font /dc % define new character { /ch-code exch def /ch-data exch def % The following code should be enabled if you have an old LaserWriter. % It attempts to overcome a bug that causes the printer to crash % and print a test page rather then report a VMerror. % % vmstatus % returns: savelevel vmused vmmax % 10000 sub gt % is vmused > (vmmax-10000)? % { pop VMERROR } % causes error message (avoiding crash) % { pop } % pop savelevel % ifelse currentfont /BitMaps get ch-code ch-data put currentfont /Encoding get ch-code dup ( ) cvs cvn put % generate unique name } bind def /@bop0 {pop} def % begin DVI page n /@bop1 % begin setting DVI page n { pop % throw away page number initgraphics % start with a clean slate mtrx setmatrix % switch to our TeX coordinate system /prepageVM save def % save state of VM at start of page } def /@eop % end DVI page n { pop % throw away page number prepageVM restore % restore VM to state at start of page showpage } def /@end { } def % end of file % h and s are used to typeset downloaded bitmap fonts: /h {exch 0 rmoveto show} bind def % move right by dh and show (...) /s {3 1 roll moveto show} bind def % move to h,v and show (...) % H and S are used to typeset PostScript fonts. % We can't use relative horizontal positioning because the advance widths in % a PostScript font are not integers and rounding errors would accumulate: /H {exch v moveto show} bind def % move to h,v and show (...) /S % ditto, and save v position { 3 1 roll 1 add % v+1 to match baseline of bitmap fonts dup /v exch def moveto show } bind def % r is used to typeset a rule: /r % set a wd by ht rule at h,v { newpath moveto % move to h,v /ht exch 1 sub def % reduce height by 1 /wd exch 1 sub def % ditto for width wd 0 rlineto 0 ht neg rlineto wd neg 0 rlineto fill } bind def % Following procedures are invoked as the result of \special{file}. % We change all scaling and graphics back to defaults, but shift the origin % to the current position on the page: /@bsp { /vmag exch def % vertical scaling /hmag exch def % horizontal scaling moveto % move to h,v gsave /prespecialVM save def % save showpage, TeX procedures etc. currentpoint transform initgraphics itransform translate hmag vmag scale land { 90 rotate } if % rotate axes if landscape /showpage { } def % user does not have to remove showpage } bind def /@esp { prespecialVM restore % restore saved showpage value etc. grestore } bind def % Following procedures are invoked as the result of \special{epsf=file}. % Note that @bepsf and @eepsf are currently identical to @bsp and @esp % but it is a good idea to allow for future changes: /@bepsf { /vmag exch def % vertical scaling /hmag exch def % horizontal scaling moveto % move to h,v gsave /prespecialVM save def % save showpage, TeX procedures etc. currentpoint transform initgraphics itransform translate hmag vmag scale land { 90 rotate } if % rotate axes if landscape /showpage { } def % user does not have to remove showpage } bind def /@eepsf { prespecialVM restore % restore saved showpage value etc. grestore } bind def % Here is the code to handle bitmaps generated by PICT/PNTG \specials: /@bitmap { /vmag exch def % vertical scaling /hmag exch def % horizontal scaling /vres exch def % vertical resolution of bitmap /hres exch def % horizontal resolution of bitmap /ht exch def % height /wd exch def % width /hexstring ht string def gsave 1 add translate % set origin to h,v+1 res hres div wd mul hmag mul res vres div ht mul vmag mul neg scale wd ht true [ wd 0 0 ht neg 0 ht ] { currentfile hexstring readhexstring pop } imagemask grestore } def % Here are the definitions needed to handle PostScript fonts: /sp % scaled pts to device dots { 16#10000 div % scaled pts to pts res mul 72.27 div % pts to device dots } bind def /PSfont { /fontname exch def % printer font name /dotsize exch def % scaled dot size /done false def % check if fontname is one of the special printer font names % appearing in the current config file's PS font list: fontname /Slanted-Times-Roman eq { /Times-Roman findfont [1 0 .167 -1 0 0] makefont dotsize scalefont setfont /done true def } if % other nice tricks can be included here if the appropriate PS font % specification is added to the current config file: % fontname /Extended-Times-Roman eq % { /Times-Roman findfont [1.2 0 0 -1 0 0] makefont % dotsize scalefont setfont % /done true def % } if done not { fontname findfont [1 0 0 -1 0 0] makefont dotsize scalefont setfont } if } bind def % count 0 gt % { (\r *** Bug in DVItoPS.ps: stuff left on stack *** \r) print flush % } if % --------------- end of OzTeX's prolog --------------- 2480 3496 0 0 300 @setup 1 @bop0 /cmr10.746 127 @newfont /cmr17.300 127 @newfont /cmr10.432 127 @newfont cmr17.300 sf [ 48 50 -4 48 49] 82 dc [<001FC00000F0780001C01C00070007000F0007801E0003C01C0001C03C0001E03C0001 E0780000F0780000F0780000F0F80000F8F80000F8F80000F8F80000F8F80000F8F80000 F8F80000F8F80000F8780000F07C0001F03C0001E03C0001E01E0003C01E0003C00F0007 8007800F0001C01C0000F07800001FC000> 32 31 -2 30 33] 111 dc [<01FC100E03301800F0300070600030E00030E00010E00010E00010F00010F800007E00 003FF0001FFF000FFFC003FFE0003FF00001F80000F880003C80003C80001CC0001CC000 1CE0001CE00018F00038F00030EC0060C301C080FE00> 24 31 -2 30 26] 115 dc [ 48 49 -4 48 50] 78 dc [<78FCFCFCFC78> 8 6 -6 5 18] 46 dc [ 72 50 -1 48 68] 87 dc [<07000F801F801F800F8007000000000000000000000000000000000000000000000001 801F80FF80FF800F80078007800780078007800780078007800780078007800780078007 800780078007800780078007800780078007800FC0FFF8FFF8> 16 48 -2 47 18] 105 dc [<01803F80FF80FF800F8007800780078007800780078007800780078007800780078007 800780078007800780078007800780078007800780078007800780078007800780078007 80078007800780078007800780078007800780078007800FC0FFFCFFFC> 16 50 -2 49 18] 108 dc [<00FE00000303C0000C00E00010007000100038003C003C003E001C003E001E003E001E 0008001E0000001E0000001E0000001E00000FFE0000FC1E0003E01E000F801E001F001E 003E001E003C001E007C001E00F8001E04F8001E04F8001E04F8003E04F8003E0478003E 047C005E043E008F080F0307F003FC03E0> 32 31 -3 30 33] 97 dc [<0180FE001FC0003F83078060F000FF8C03C1807800FF9001E2003C000FA001E4003C00 07A000F4001E0007C000F8001E0007C000F8001E00078000F0001E00078000F0001E0007 8000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E000780 00F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000 F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0 001E00078000F0001E00078000F0001E000FC001F8003F00FFFC1FFF83FFF0FFFC1FFF83 FFF0> 56 31 -2 30 56] 109 dc cmr10.746 sf [ 64 71 -3 70 67] 70 dc [<01FE00003FC000FFFE001FFFC000FFFE001FFFC000FFFE001FFFC00003FE00007FC000 01FE00003FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000 FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE 00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00 001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE0000 1FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001F C00000FE00001FC00000FE00001FC00000FE00003FC00000FE00003FC00000FE00003FC0 0000FE00007FC000007E00007FC000007E0000FFC000007F0000DFC000003F0001DFE000 001F80039FF000000FC0071FFFC00007F01E1FFFC00001FFF81FFFC000003FE01FE000> 56 46 -4 44 57] 117 dc [<01FC007F800000FFFC03FFF00000FFFC0781FC0000FFFC1E00FE000003FC38007F0000 01FC70003F000000FCE0003F800000FCC0003F800000FDC0001FC00000FD80001FC00000 FF80001FC00000FF00001FC00000FF00001FC00000FF00001FC00000FE00001FC00000FE 00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00 001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE0000 1FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001F C00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC0 0000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC00000FE00001FC000 03FF80007FF000FFFFFE1FFFFFC0FFFFFE1FFFFFC0FFFFFE1FFFFFC0> 56 45 -4 44 57] 110 dc [<00007F80000003FFF000000FC0FC00003F003F00007E001F8001FC000FC003F8000FE0 07F00007F007F00003F00FE00003F81FE00003F81FC00001FC3FC00001FC3FC00001FC7F C00001FC7F800001FE7F800000FE7F800000FEFF800000FEFF800000FEFFFFFFFFFEFFFF FFFFFEFF80000000FF80000000FF80000000FF80000000FF80000000FF80000000FF8000 00007F800000007F800000007FC00000003FC00000003FC000000E3FC000000E1FE00000 1E0FE000001C0FF000003C07F000003803F800007801FC0000F000FC0001E0007F0003C0 001F8007800007E03E000001FFF80000003FC000> 40 47 -3 45 46] 101 dc [<01FE00FFFE00FFFE00FFFE0003FE0001FE0000FE0000FE0000FE0000FE0000FE0000FE 0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE 0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE 0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE 0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE 0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0003FF80FFFFFEFFFFFEFFFF FE> 24 72 -3 71 28] 108 dc [ 104 72 -2 70 106] 87 dc [<01FE0000000000FFFE0000000000FFFE0000000000FFFE000000000003FE0000000000 01FE000000000000FE000000000000FE000000000000FE000000000000FE000000000000 FE000000000000FE000000000000FE000000000000FE000000000000FE000000000000FE 000000000000FE000000000000FE000000000000FE000000000000FE000000000000FE00 0000000000FE000000000000FE000000000000FE000000000000FE000000000000FE0000 00000000FE000000000000FE00FF00000000FE07FFF0000000FE1F01FC000000FE78007F 000000FEF0001F800000FFE0000FC00000FFC00007E00000FF800007F00000FF000003F8 0000FF000001FC0000FE000001FE0000FE000001FE0000FE000000FF0000FE000000FF00 00FE000000FF8000FE000000FF8000FE0000007F8000FE0000007F8000FE0000007FC000 FE0000007FC000FE0000007FC000FE0000007FC000FE0000007FC000FE0000007FC000FE 0000007FC000FE0000007FC000FE0000007FC000FE0000007FC000FE0000007F8000FE00 00007F8000FE000000FF8000FE000000FF0000FE000000FF0000FE000000FF0000FE0000 01FE0000FE000001FC0000FF000003FC0000FF000003F80000FF800007F00000FFC0000F E00000F9E0001FC00000F8F0003F800000F078007E000000F01E03F8000000E00FFFE000 00000001FE000000> 56 73 -3 71 57] 98 dc [ 72 71 -3 70 77] 72 dc [<0003FE000000001FFFC00000007E03F0000001F000FC000003C0007E00000780003F00 0007C0003F80000FF0001FC0000FF8000FE0000FF8000FE0000FF8000FE0000FF80007F0 000FF80007F00007F00007F00001C00007F00000000007F00000000007F00000000007F0 0000000007F000000001FFF00000007FFFF0000003FF87F000001FF007F000007F8007F0 0001FE0007F00003FC0007F0000FF80007F0001FF00007F0001FE00007F0003FC00007F0 007FC00007F0007F800007F01C7F800007F01CFF000007F01CFF000007F01CFF000007F0 1CFF00000FF01CFF00000FF01CFF00001FF01CFF80001BF01C7F80003BF01C3FC00071F8 381FE000E1F8380FF001C0FC7003FC0780FFE000FFFE003FC0001FF8001F80> 48 47 -4 45 52] 97 dc [<00003FE0000001FFFE000007E01F80001F8003C0007F0000F000FE00007801FC0000F8 03F80003FC07F00007FC0FF00007FC0FE00007FC1FE00007FC1FE00007FC3FC00003F83F C00000E07FC00000007FC00000007F800000007F80000000FF80000000FF80000000FF80 000000FF80000000FF80000000FF80000000FF80000000FF80000000FF80000000FF8000 00007F800000007FC00000007FC00000007FC00000003FC000000E3FE000000E1FE00000 1E1FE000001C0FF000001C07F000003803F800007801FC00007000FE0000E0007F0003C0 001F800780000FE03F000001FFFC0000003FE000> 40 47 -3 45 46] 99 dc [<01FE0000000000FFFE0000000000FFFE0000000000FFFE000000000003FE0000000000 01FE000000000000FE000000000000FE000000000000FE000000000000FE000000000000 FE000000000000FE000000000000FE000000000000FE000000000000FE000000000000FE 000000000000FE000000000000FE000000000000FE000000000000FE000000000000FE00 0000000000FE000000000000FE000000000000FE000000000000FE000000000000FE0000 00000000FE000000000000FE000000000000FE001FFFFE0000FE001FFFFE0000FE001FFF FE0000FE0007FFE00000FE0003FF000000FE0003FC000000FE0003F8000000FE0003E000 0000FE0007C0000000FE000F80000000FE001F00000000FE003E00000000FE007C000000 00FE00F000000000FE01E000000000FE03C000000000FE0FC000000000FE1FE000000000 FE3FE000000000FE7FF000000000FEFFF800000000FFE3F800000000FFC1FC00000000FF 81FE00000000FF00FF00000000FE007F00000000FC007F80000000FC003FC0000000FC00 1FC0000000FC001FE0000000FC000FF0000000FC0007F0000000FC0003F8000000FC0003 FC000000FC0001FC000000FC0000FE000000FC0000FF000000FC00007F800000FC00007F C00000FC00007FE00003FF0000FFF000FFFFFC07FFFF80FFFFFC07FFFF80FFFFFC07FFFF 80> 56 72 -3 71 55] 107 dc [<01FC01F800FFFC0FFE00FFFC1E1F00FFFC383F8003FC707FC001FCE07FC000FCC07FC0 00FDC07FC000FD807FC000FD803F8000FF800E0000FF00000000FF00000000FF00000000 FF00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE 00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00 000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0000 0000FE00000000FE00000000FE00000000FE00000000FF00000003FF800000FFFFFF8000 FFFFFF8000FFFFFF8000> 40 45 -3 44 40] 114 dc [<1F003F807FC0FFE0FFE0FFE0FFF0FFF07FF03FB01F3000300030003000300070006000 60006000E000C001C001800380030007000E000C001C0038003000> 16 31 -9 71 29] 39 dc [<001FF8060000FFFF0E0003F007FE000F8001FE001F0000FE003E00007E003C00003E00 7C00003E007800001E00F800001E00F800000E00F800000E00FC00000E00FC00000E00FE 00000E00FF000000007FC00000007FF80000003FFFE000003FFFFE00001FFFFF800007FF FFE00003FFFFF80000FFFFFC00001FFFFE000001FFFF0000000FFF00000001FF80000000 7F80E000003FC0E000001FC0E000000FC0F000000FC0F0000007C0F0000007C0F8000007 C0F8000007C0FC00000780FC00000F80FE00000F80FE00000F00FF00001E00FF80003C00 F9E0007800F0F803F000E03FFFC000C007FC0000> 40 47 -3 45 41] 115 dc [ 88 71 -3 70 95] 77 dc cmr10.432 sf [ 48 42 -1 40 45] 86 dc [<00100000700001F0000FF000FEF000F0F00000F00000F00000F00000F00000F00000F0 0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0 0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0 0000F00001F8007FFFE07FFFE0> 24 40 -5 39 30] 49 dc [<78FCFCFCFC78> 8 6 -5 5 17] 46 dc [<007F000001C1C0000780F0000F0078000E0038001C001C003C001E003C001E003C001E 0078000F0078000F0078000F0078000F00F8000F80F8000F80F8000F80F8000F80F8000F 80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F 80F8000F8078000F0078000F0078000F0078000F003C001E003C001E003C001E001C001C 000E0038000F0078000780F00001C1C000007F0000> 32 41 -2 39 30] 48 dc [<001F000070C000E1E001C3E003C3E00381C00780800780000780000780000780000780 00078000078000078000078000FFFE00FFFE000780000780000780000780000780000780 000780000780000780000780000780000780000780000780000780000780000780000780 0007800007800007800007C000FFFE00FFFE00> 24 42 -1 41 18] 102 dc [<007F000001C1C000070070000E0038001C001C003C001E003C001E0078000F0078000F 00F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F8078000F 0078000F003C001E003C001E001E003C000E0038000700700001C1C000007F0000> 32 26 -2 25 30] 111 dc [<0787C0FF98E0FF91F00FA1F007C1F007C0E007C0000780000780000780000780000780 0007800007800007800007800007800007800007800007800007800007800007800007C0 00FFFE00FFFE00> 24 26 -1 25 23] 114 dc [ 40 41 -2 40 39] 70 dc [<07800780FF80FF80FF80FF800F800F8007800780078007800780078007800780078007 800780078007800780078007800780078007800780078007800780078007800780078007 80078007800780078007800F8007800F800380178001C027C000E047FC003F87FC> 32 26 -1 25 33] 117 dc [<0783F800FF8C1C00FF900E000FA0070007A0078007C0078007C0078007800780078007 800780078007800780078007800780078007800780078007800780078007800780078007 80078007800780078007800780078007800780078007800780FFFCFFFCFFFCFFFC> 32 26 -1 25 33] 110 dc [<007E0003C3800700E00E00F01C00703C00783C003878003C78003CF8003CF8003CFFFF FCF80000F80000F80000F80000F800007800007C00003C00043C00041E00080E00100700 2001C0C0007F00> 24 26 -2 25 27] 101 dc [<0780FF80FF800F80078007800780078007800780078007800780078007800780078007 800780078007800780078007800780078007800780078007800780078007800780078007 800780078007800780FFFCFFFC> 16 42 -1 41 17] 108 dc [ 64 42 -1 40 61] 87 dc [<07800000FF800000FF8000000F80000007800000078000000780000007800000078000 00078000000780000007800000078000000780000007800000078000000783F000078C1C 0007B0070007A0038007C003C0078001E0078001E0078000F0078000F0078000F8078000 F8078000F8078000F8078000F8078000F8078000F8078000F0078000F0078001F0078001 E0078001C007C003C00740078007200E0006181C000407E000> 32 42 -1 41 33] 98 dc [<007F000003FFC0000701F0000C00F80010007C001C007C003E007E003E003E003E003E 001E003E000C007E0000007C0000007C00000078000000F0000000E0000001C000000700 0000FF00000001E0000000F0000000780000003C0000003E0000001F0000001F0000001F 8000001F8030001F8078001F80FC001F80FC001F80FC001F00F8001F0040003F0040003E 0030007C001800F8000F01F00003FFC000007F0000> 32 41 -2 39 30] 51 dc [ 56 41 -2 40 55] 77 dc [<01FC00000E0780001001C0003C00E0003E00F0003E0078001C00780008007800000078 000000780000007800007FF80003E078000F8078001F0078003E0078007C007800780078 20F8007820F8007820F8007820F800F8207C00F8203C013C401F063FC007F80F00> 32 26 -2 25 30] 97 dc [ 32 38 -1 25 32] 121 dc [<007F000001FFC00007C1E0000F0070001E0038001C003C003C001C0078001E0078001E 00F8000F00F8000F00F8000F00F8000F00F8000F80F8000F80F8000F80F8000F8078000F 8078001F803C001F803C001F801C002F800E004F800700CF8003810F80007E0F8000000F 0000000F0000000F0000001E0000001E0000001E0000003C001C003C003E0078003E0070 003C00E0001801C0001C0780000FFE000003F80000> 32 41 -2 39 30] 57 dc [<00FE0007FF800E07E01803F02001F82000F840007C40007CF8007EFC007EFC003EFC00 3EFC003E78007E00007E00007C00007C0000F80000F80001F00001E00003C00007800007 00000E00001C0000380000700000600000C0000180020300020600040C00041800041000 0C3FFFFC7FFFF8FFFFF8FFFFF8> 24 40 -3 39 30] 50 dc 1 @bop1 cmr17.300 sf 603 1151(Ross)s 21(N.)h 21(Williams)h cmr10.746 sf 206 823(F)s -9(unnelW)h -8(eb)h 36(Hac)h -3(k)h -3(er's)h 34(Man)h -3(ual)h cmr10.432 sf 519 1343(V1.0)s 19(for)h 20(F)h -5(unnelW)h -5(eb)h 20(V3.0)h 725 1536(Ma)s -2(y)h 20(1992)h 1 @eop 2 @bop0 /cmr10.300 127 @newfont /cmsy10.300 127 @newfont cmsy10.300 sf [<0001FC0000000FFF8000003E03E00000F000780001C0001C000380000E000700000700 0E000003801C000001C018000000C038000000E030000000607000000070600000003060 00000030E000000038C000000018C000000018C000000018C000000018C000000018C000 000018C000000018E0000000386000000030600000003070000000703000000060380000 00E018000000C01C000001C00E0000038007000007000380000E0001C0001C0000F00078 00003E03E000000FFF80000001FC0000> 40 39 -2 29 42] 13 dc cmr10.300 sf [<001F808000E0618001801980070007800E0003801C0003801C00018038000180780000 807800008070000080F0000000F0000000F0000000F0000000F0000000F0000000F00000 00F0000000700000807800008078000080380000801C0001001C0001000E000200070004 000180080000E03000001FC000> 32 30 -2 28 30] 67 dc [<03F0000E1C00180600300300700380600180E001C0E001C0E001C0E001C0E001C0E001 C06001807003803003001806000E1C0003F000> 24 18 -1 17 21] 111 dc [ 24 26 -1 17 23] 112 dc [ 24 26 -1 17 22] 121 dc [ 16 18 -1 17 16] 114 dc [<18003C003C0018000000000000000000000000000000FC001C001C001C001C001C001C 001C001C001C001C001C001C001C001C001C001C00FF80> 16 29 -1 28 12] 105 dc [<00038003C4C00C38C01C3880181800381C00381C00381C00381C001818001C38000C30 0013C0001000003000001800001FF8001FFF001FFF803003806001C0C000C0C000C0C000 C06001803003001C0E0007F800> 24 28 -1 18 21] 103 dc [ 24 29 -1 28 23] 104 dc [<04000400040004000C000C001C003C00FFE01C001C001C001C001C001C001C001C001C 001C101C101C101C101C100C100E2003C0> 16 26 -1 25 16] 116 dc [<07E00C301878307870306000E000E000E000E000E000E00060007004300418080C3007 C0> 16 18 -2 17 18] 99 dc [<030007003F00C700070007000700070007000700070007000700070007000700070007 00070007000700070007000700070007000F80FFF8> 16 28 -4 27 21] 49 dc [<03C00C301818300C700C600EE006E006E007E007E007E007E0076007700F300F18170C 2707C700060006000E300C780C78187010203030C00F80> 16 29 -2 27 21] 57 dc [<07C01830201C400C400EF00FF80FF807F8077007000F000E000E001C001C0038007000 6000C00180030006010C01180110023FFE7FFEFFFE> 16 28 -2 27 21] 50 dc [ 32 29 -2 27 31] 82 dc [<1F9030704030C010C010E010F8007F803FE00FF000F880388018C018C018E010D0608F C0> 16 18 -1 17 16] 115 dc [ 32 28 -2 27 31] 78 dc [<60F0F060> 8 4 -4 3 12] 46 dc [ 40 29 -1 27 43] 87 dc [ 16 29 -1 28 12] 108 dc [<1FC000307000783800781C00301C00001C00001C0001FC000F1C00381C00701C00601C 00E01C40E01C40E01C40603C40304E801F8700> 24 18 -2 17 21] 97 dc [ 40 18 -1 17 36] 109 dc [ 24 28 -2 27 28] 80 dc [<03E00C301818300C700E6006E006FFFEE000E000E000E00060007002300218040C1803 E0> 16 18 -1 17 18] 101 dc [ 24 18 -1 17 23] 110 dc [<003F0000070000070000070000070000070000070000070000070000070000070003E7 000C1700180F00300700700700600700E00700E00700E00700E00700E00700E007006007 00700700300700180F000C370007C7E0> 24 29 -2 28 23] 100 dc [ 24 29 -1 28 22] 107 dc [ 24 29 -1 28 23] 98 dc [ 24 18 -1 17 23] 117 dc [ 24 18 -1 17 22] 118 dc [<00F8018C071E061E0E0C0E000E000E000E000E000E00FFE00E000E000E000E000E000E 000E000E000E000E000E000E000E000E000E000E007FE0> 16 29 0 28 13] 102 dc 2 @bop1 cmsy10.300 sf 372 2675(\015)s cmr10.300 sf 177 2675(Cop)s -1(yrigh)h -1(t)h 384 2674(c)s 428 2675(1992)s 12(Ross)h 14(N.)h 14(Willia)h -1(m)h -1(s.)h 177 2750(P)s -1(ermission)h 17(is)h 17(gran)h -1(ted)h 17(to)h 18(mak)h -1(e)h 15(and)h 18(distribute)h 18(v)h -1(erbatim)h 15(copies)h 18(of)h 17(this)h 18(man)h -1(ual)h 14(pro)h -1(vided)h 18(that)h 17(the)h 177 2800(cop)s -1(yrigh)h -1(t)h 14(notice)h 14(and)h 14(this)h 14(p)h 1(ermission)h 12(notice)h 15(are)h 14(preserv)h -1(ed)h 16(on)h 14(all)h 12(copies.)h 1053 2940(1)s 1772 2 177 2597 r 1772 2 177 2835 r 2 @eop 3 @bop0 3 @bop1 cmr10.300 sf 1053 2940(2)s 3 @eop 4 @bop0 /cmbx10.746 127 @newfont /cmbx10.300 127 @newfont /cmmi10.300 127 @newfont cmbx10.746 sf [<000000003FFE00000E0000000FFFFFC0001E0000007FFFFFF8003E000003FFFFFFFE00 FE00000FFFFFFFFF81FE00003FFFF800FFC3FE0000FFFF80000FF7FE0001FFFC000003FF FE0007FFF0000001FFFE000FFFC00000007FFE001FFF800000003FFE003FFF000000001F FE007FFE000000000FFE00FFFC0000000007FE01FFF80000000007FE03FFF00000000003 FE03FFF00000000001FE07FFE00000000001FE07FFE00000000000FE0FFFC00000000000 FE0FFFC000000000007E1FFFC000000000007E1FFF8000000000007E3FFF800000000000 7E3FFF8000000000003E3FFF8000000000003E7FFF8000000000003E7FFF000000000000 3E7FFF000000000000007FFF00000000000000FFFF00000000000000FFFF000000000000 00FFFF00000000000000FFFF00000000000000FFFF00000000000000FFFF000000000000 00FFFF00000000000000FFFF00000000000000FFFF00000000000000FFFF000000000000 00FFFF00000000000000FFFF00000000000000FFFF000000000000007FFF000000000000 007FFF000000000000007FFF000000000000007FFF8000000000003E3FFF800000000000 3E3FFF8000000000003E3FFF8000000000003E1FFF8000000000003E1FFFC00000000000 3E0FFFC000000000007C0FFFC000000000007C07FFE000000000007C07FFE00000000000 F803FFF00000000000F803FFF00000000001F801FFF80000000001F000FFFC0000000003 E0007FFE0000000007E0003FFF000000000FC0001FFF800000001F80000FFFC00000003F 000007FFF0000000FE000001FFFC000001FC000000FFFF80000FF80000003FFFF8007FF0 0000000FFFFFFFFFC000000003FFFFFFFF00000000007FFFFFFC00000000000FFFFFE000 00000000003FFE000000> 72 73 -7 71 86] 67 dc [<00000FFF0000000000FFFFF000000007FFFFFE0000001FFFFFFF8000003FFC03FFC000 00FFE0007FF00001FF80001FF80003FF00000FFC0007FE000007FE000FFE000007FF000F FC000003FF001FFC000003FF803FFC000003FFC03FF8000001FFC03FF8000001FFC07FF8 000001FFE07FF8000001FFE07FF8000001FFE0FFF8000001FFF0FFF8000001FFF0FFF800 0001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF80000 01FFF0FFF8000001FFF0FFF8000001FFF07FF8000001FFE07FF8000001FFE07FF8000001 FFE07FF8000001FFE03FFC000003FFC03FFC000003FFC01FFC000003FF801FFE000007FF 800FFE000007FF0007FF00000FFE0003FF80001FFC0001FFC0003FF80000FFE0007FF000 007FFC03FFE000001FFFFFFF80000007FFFFFE00000000FFFFF0000000000FFF000000> 56 46 -3 45 59] 111 dc [<007FC001FFC00000FFFFC00FFFF80000FFFFC03FFFFE0000FFFFC0FFFFFF0000FFFFC1 FC07FF8000FFFFC3E003FFC00003FFC7C001FFC00001FFCF0001FFE00001FFDE0000FFE0 0001FFDC0000FFE00001FFFC0000FFF00001FFF80000FFF00001FFF00000FFF00001FFF0 0000FFF00001FFF00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF0 0001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE0 0000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF0 0001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE0 0000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF0 0001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE0 0000FFF000FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFF E0FFFFFFC07FFFFFE0> 64 46 -4 45 66] 110 dc [<0001F000000001F000000001F000000001F000000001F000000001F000000003F00000 0003F000000003F000000007F000000007F000000007F00000000FF00000000FF0000000 1FF00000003FF00000003FF00000007FF0000001FFF0000003FFF000000FFFFFFFC0FFFF FFFFC0FFFFFFFFC0FFFFFFFFC0FFFFFFFFC000FFF0000000FFF0000000FFF0000000FFF0 000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF000 0000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF00000 00FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF001F000FFF001F000 FFF001F000FFF001F000FFF001F000FFF001F000FFF001F000FFF001F000FFF001F0007F F001E0007FF803E0003FF803E0003FFC07C0001FFE0F80000FFFFF800007FFFE000001FF FC0000001FF000> 40 66 -2 65 46] 116 dc [<00001FFE00000001FFFFE0000007FFFFF800001FFFFFFE00007FFC07FF0000FFE001FF 8001FFC0007FC003FF80003FE007FF00003FF00FFE00001FF01FFE00000FF81FFC00000F F83FFC00000FFC3FFC000007FC7FFC000007FC7FF8000007FC7FF8000007FE7FF8000007 FEFFF8000007FEFFF8000007FEFFFFFFFFFFFEFFFFFFFFFFFEFFFFFFFFFFFEFFFFFFFFFF FCFFF800000000FFF800000000FFF800000000FFF8000000007FF8000000007FF8000000 007FFC000000003FFC000000003FFC000000003FFC0000001C1FFE0000003E0FFE000000 3E07FF0000007E07FF000000FC03FF800001F801FFC00003F0007FF0001FE0003FFE00FF C0001FFFFFFF800007FFFFFE000000FFFFF80000000FFF8000> 48 46 -3 45 54] 101 dc [<000FFF00E0007FFFF3E001FFFFFFE007FFFFFFE00FF800FFE01FC0001FE03F80000FE0 3F000007E07F000003E07F000003E0FF000003E0FF000003E0FF800003E0FFC0000000FF F0000000FFFE000000FFFFF800007FFFFFC0007FFFFFF0003FFFFFFC001FFFFFFF000FFF FFFF8007FFFFFFC003FFFFFFE000FFFFFFF0003FFFFFF00003FFFFF800001FFFF8000000 FFFC0000001FFC7800000FFCF8000007FCF8000003FCFC000003FCFC000003FCFE000003 F8FE000003F8FF000003F8FF800007F0FFC0000FF0FFF0001FE0FFFC00FFC0FFFFFFFF80 FC7FFFFE00F81FFFF800E003FF8000> 40 46 -4 45 47] 115 dc cmbx10.300 sf [ 32 28 -2 27 33] 80 dc [ 24 18 -1 17 20] 114 dc [<01FC000F07001C03803C01C07801C07801E0F801E0F801E0FFFFE0F80000F80000F800 007800007C00603C00601E00C00F038001FC00> 24 18 -1 17 22] 101 dc [<007F0001E38003C7C00787C00F87C00F83800F80000F80000F80000F80000F8000FFF8 00FFF8000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80 000F80000F80000F80007FF8007FF800> 24 29 0 28 15] 102 dc [<0FF8001C1E003E0F803E07803E07C01C07C00007C0007FC007E7C01F07C03C07C07C07 C0F807C0F807C0F807C0780BC03E13F80FE1F8> 24 18 -1 17 23] 97 dc [<03FC000E0E001C1F003C1F00781F00780E00F80000F80000F80000F80000F80000F800 007800007801803C01801C03000E0E0003F800> 24 18 -2 17 21] 99 dc [<1801801FFF001FFE001FFC001FF8001FC00018000018000018000018000019F8001E0E 00180F801007800007C00007E00007E00007E07807E0F807E0F807E0F807C0F007C0600F 80381F001FFE0007F000> 24 27 -2 26 24] 53 dc [<00038000000380000007C0000007C0000007C000000FE000000FE000001FF000001BF0 00001BF0000031F8000031F8000061FC000060FC0000E0FE0000C07E0000C07E0001803F 0001FFFF0003FFFF8003001F8003001F8006000FC006000FC00E000FE00C0007E0FFC07F FEFFC07FFE> 32 28 -2 27 36] 65 dc [ 24 29 -1 28 25] 107 dc [ 24 18 -1 17 27] 110 dc [<01FC000F07801C01C03C01E07800F07800F0F800F8F800F8F800F8F800F8F800F8F800 F87800F07800F03C01E01E03C00F078001FC00> 24 18 -1 17 24] 111 dc [ 32 18 -1 17 34] 119 dc [ 16 29 -1 28 14] 108 dc [<000FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F001F9 F00F07F01C03F03C01F07801F07801F0F801F0F801F0F801F0F801F0F801F0F801F07801 F07801F03C01F01C03F00F0FFE03F9FE> 24 29 -2 28 27] 100 dc [<03F8F00E0F381E0F381C07303C07803C07803C07803C07801C07001E0F000E0E001BF8 001000001800001800001FFF001FFFC00FFFE01FFFF07801F8F00078F00078F000787000 707800F01E03C007FF00> 24 27 -1 17 24] 103 dc [ 40 18 -1 17 40] 109 dc [<0300030003000300070007000F000F003FFCFFFC1F001F001F001F001F001F001F001F 001F001F0C1F0C1F0C1F0C0F08079803F0> 16 26 -1 25 19] 116 dc [<1FD830786018E018E018F000FF807FE07FF01FF807FC007CC01CC01CE01CE018F830CF C0> 16 18 -2 17 19] 115 dc [<6000007FFFE07FFFE07FFFC07FFF807FFF80E00300C00600C00C00C018000030000030 0000600000E00000E00001E00001C00003C00003C00003C00003C00007C00007C00007C0 0007C00007C00007C000038000> 24 28 -3 27 24] 55 dc [<1E003F003F003F003F001E00000000000000000000000000FF00FF001F001F001F001F 001F001F001F001F001F001F001F001F001F001F00FFE0FFE0> 16 30 -1 29 14] 105 dc [ 32 28 -2 27 37] 78 dc [<03F8000FFE001E0F003C07807807807803C0F803C0F803C0F803E0F803E0F803E0F803 E07807E03807E03C0BE00E1BE003E3E00003E00003C00003C03807C07C07807C0700780F 00383C001FF8000FE000> 24 27 -2 26 24] 57 dc [<00600001E0000FE000FFE000F3E00003E00003E00003E00003E00003E00003E00003E0 0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0 0003E0007FFF807FFF80> 24 27 -3 26 24] 49 dc [ 32 28 -2 27 30] 70 dc [ 24 18 -1 17 27] 117 dc [ 48 28 -1 27 49] 87 dc [ 24 29 -1 28 27] 98 dc [ 32 28 -2 27 37] 68 dc [<07F8001FFE00383F80780FC0FC07C0FC07E0FC03E0FC03E07803E00007E00007C00007 C0000F80001F00001E0000380000700000E0000180600300600600600800E01FFFC03FFF C07FFFC0FFFFC0FFFFC0> 24 27 -2 26 24] 50 dc [ 16 28 -1 27 18] 73 dc [ 24 26 -1 17 27] 112 dc cmmi10.300 sf [<60F0F060> 8 4 -4 3 12] 58 dc cmr10.300 sf [ 40 28 -2 27 38] 77 dc [ 24 28 -2 27 27] 70 dc [ 16 28 -1 27 15] 73 dc [<07E01830201C201C781E780E781E381E001C001C00180030006007E00030001C001C00 0E000F000F700FF80FF80FF80FF00E401C201C183007E0> 16 29 -2 27 21] 51 dc [ 32 18 -1 17 30] 119 dc [<07E0801C1980300580700380600180E00180E00080E00080E00080F00000F800007C00 007FC0003FF8001FFE0007FF0000FF80000F800007C00003C00001C08001C08001C08001 C0C00180C00180E00300D00200CC0C0083F800> 24 30 -2 28 23] 83 dc [<7F8FF00F03800F030007020003840001C80001D80000F00000700000780000F800009C 00010E00020E000607000403801E07C0FF0FF8> 24 18 0 17 22] 120 dc [<000C00000C00001C00003C00003C00005C0000DC00009C00011C00031C00021C00041C 000C1C00081C00101C00301C00201C00401C00C01C00FFFFC0001C00001C00001C00001C 00001C00001C00001C0001FFC0> 24 28 -1 27 21] 52 dc [ 32 28 -2 27 32] 68 dc [<007E0001C1800301800703C00E03C00E01800E00000E00000E00000E00000E0000FFFF C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01 C00E01C00E01C00E01C00E01C07F87F8> 24 29 0 28 23] 12 dc [<00F0030C06040C0E181E301E300C700070006000E3E0E430E818F00CF00EE006E007E0 07E007E007E007600760077006300E300C18180C3003E0> 16 29 -2 27 21] 54 dc [<7FFC70386038407040F040E041C003C0038007000F040E041C043C0C380870087038FF F8> 16 18 -1 17 18] 122 dc [<300C3FF83FF03FC020002000200020002000200023E024302818301C200E000E000F00 0F000F600FF00FF00FF00F800E401E401C2038187007C0> 16 29 -2 27 21] 53 dc [<03E00C301008200C20066006600660067006780C3E083FB01FE007F007F818FC307E60 1E600FC007C003C003C003C00360026004300C1C1007E0> 16 29 -2 27 21] 56 dc [<000600000006000000060000000F0000000F0000000F00000017800000178000001780 000023C0000023C0000023C0000041E0000041E0000041E0000080F0000080F0000180F8 000100780001FFF80003007C0002003C0002003C0006003E0004001E0004001E000C001F 001E001F00FF80FFF0> 32 29 -1 28 31] 65 dc [<7FFFFFC0700F01C0600F00C0400F0040400F0040C00F0020800F0020800F0020800F00 20000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00 00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000001F80 0003FFFC00> 32 28 -1 27 30] 84 dc [<4000007FFF807FFF007FFF004002008004008004008008000010000010000020000060 0000400000C00000C00001C0000180000180000380000380000380000380000780000780 00078000078000078000078000030000> 24 29 -2 27 21] 55 dc [ 24 28 -2 27 26] 76 dc [ 24 28 -2 27 28] 69 dc [<03C00C301818300C300C700E60066006E007E007E007E007E007E007E007E007E007E0 07E007E007E00760066006700E300C300C18180C3007E0> 16 29 -2 27 21] 48 dc [ 24 28 -2 27 29] 66 dc [ 32 28 -2 27 31] 72 dc [<60F0F8680808081010204080> 8 12 -4 28 12] 39 dc [ 32 29 -2 27 31] 85 dc 4 @bop1 cmbx10.746 sf 177 397(Con)s -3(ten)h -3(ts)h cmbx10.300 sf 177 679(Preface)s 1592(5)h 177 794(Ac)s -1(kno)h -1(wledgemen)h -2(ts)h 1349(7)h 177 909(Presen)s -1(tati)h -1(on)h 13(Notes)h 1347(9)h 177 1024(1)s 38(F)h -4(unnelW)h -4(eb)h 14(Design)h 1268(11)h 177 2466(2)s 38(F)h -4(unnelW)h -4(eb)h 14(Implemen)h -2(tati)h -1(on)h 1078(27)h cmmi10.300 sf 833 1098(:)s 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 575 1172(:)s 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 898 1245(:)s 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 1124 1319(:)s 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 1027 1393(:)s 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 1318 1467(:)s 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 769 1540(:)s 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 1092 1614(:)s 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 930 1688(:)s 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 801 1761(:)s 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 801 1835(:)s 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 866 1909(:)s 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 866 1982(:)s 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 1092 2056(:)s 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 1382 2130(:)s 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 1608 2204(:)s 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 736 2277(:)s 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 543 2351(:)s 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 575 2540(:)s 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 1092 2614(:)s 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 1188 2687(:)s 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 607 2761(:)s 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 640 2835(:)s 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h cmr10.300 sf 239 1098(1.1)s 42(Motiv)h -2(ation)h 12(for)h 14(F)h -3(unnelW)h -3(eb)h 1092(11)h 239 1172(1.2)s 42(Inden)h -1(tation)h 1362(12)h 239 1245(1.3)s 42(Review)h 14(of)h 13(F)h -3(unnelW)h -3(eb)h 13(Syn)h -1(tax)h 1037(14)h 335 1319(1.3.1)s 46(Review)h 13(of)h 14(Macro)h 14(De\014nition)h 13(Syn)h -1(tax)h 800(14)h 335 1393(1.3.2)s 46(Review)h 13(of)h 14(Macro)h 14(Call)h 12(Syn)h -1(tax)h 906(16)h 335 1467(1.3.3)s 46(Review)h 13(of)h 14(P)h -1(arameterized)h 14(Macro)h 14(Call)h 13(Syn)h -1(tax)h 631(16)h 239 1540(1.4)s 42(Do)h 1(cumen)h -1(t)h 13(Structuring)h 1165(16)h 239 1614(1.5)s 42(Discussion)h 14(of)h 13(Some)h 13(Miscellaneous)h 14(Issues)h 845(18)h 239 1688(1.6)s 42(Automated)h 13(Regression)h 14(T)h -3(esting)h 1015(18)h 239 1761(1.7)s 42(Comm)h -1(and)h 12(Line)h 13(In)h -1(terface)h 1122(18)h 239 1835(1.8)s 42(File)h 13(Name)h 13(Managemen)h -1(t)h 1137(19)h 335 1909(1.8.1)s 46(Filename)h 12(Extensions)h 1065(20)h 335 1982(1.8.2)s 46(Filename)h 12(Inheritance)h 1057(20)h 335 2056(1.8.3)s 46(P)h -1(ortable)h 14(Structure)h 15(of)h 14(File)h 13(Names)h 835(21)h 239 2130(1.9)s 42(Sp)h 1(ecifying)h 13(Constrain)h -1(ts)h 15(on)h 13(the)h 15(Num)h -1(b)h 1(er)h 13(of)h 13(Instan)h -1(tiations)h 563(22)h 239 2204(1.10)s 21(The)h 14(Relationship)h 13(Bet)h -1(w)h -1(een)h 15(Do)h 1(cumen)h -1(t)h 13(Structure)h 16(and)h 14(Macro)h 14(Structure)h 318(23)h 239 2277(1.11)s 21(Diagnostic)h 13(Messages)h 1203(25)h 239 2351(1.12)s 21(Summ)h -1(ary)h 1396(25)h 239 2540(2.1)s 42(In)h -1(tro)h 1(duction)h 1345(27)h 239 2614(2.2)s 42(History)h 14(of)h 13(F)h -3(unnelW)h -3(eb)h 13(Implemen)h -1(tatio)h -1(ns)h 856(27)h 239 2687(2.3)s 42(Wh)h -1(y)h 13(F)h -3(unnelW)h -3(eb)h 14(W)h -3(asn't)h 12(Used)h 15(to)h 14(W)h -3(rite)h 14(Itself)h 754(28)h 239 2761(2.4)s 42(Co)h 1(ding)h 13(St)h -1(yle)h 1338(28)h 239 2835(2.5)s 42(Use)h 15(of)h 13(Memory)h 1294(29)h 1053 2940(3)s 4 @eop 5 @bop0 cmbx10.300 sf [<03F8001FFE003C1F003C0F807C07C07E07C07C07C03807C0000F80000F80001E00003C 0003F800001E00000F800007C00007C00007E03007E07807E0FC07E0FC07E0FC07C0780F 80781F001FFE0007F800> 24 27 -2 26 24] 51 dc [ 40 28 -2 27 45] 77 dc [<003FC00001F0300003C0380007C07C000F807C000F807C000F8038000F8000000F8000 000F8000000F800000FFFFFC00FFFFFC000F807C000F807C000F807C000F807C000F807C 000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C 007FE1FF807FE1FF80> 32 29 0 28 27] 12 dc [<000180000380000780000F80001F80003F80006F8000CF80008F80018F80030F80060F 800C0F80180F80300F80600F80C00F80FFFFF8FFFFF8000F80000F80000F80000F80000F 80000F8001FFF801FFF8> 24 27 -1 26 24] 52 dc [<000FF008007FFE3801FC07F807E001F80F8000781F0000783F0000383E0000387E0000 187C000018FC000000FC000000FC000000FC000000FC000000FC000000FC007FFFFC007F FF7C0001F87E0001F83E0001F83F0001F81F0001F80F8001F807E001F801FC07F8007FFE 78000FF818> 32 28 -3 27 38] 71 dc [ 32 28 -2 27 37] 85 dc [ 24 28 -2 27 29] 76 dc [ 40 28 -1 27 36] 86 dc [ 32 28 -2 27 34] 66 dc [ 40 28 -2 27 36] 82 dc [ 24 18 -1 17 25] 120 dc cmr10.300 sf [ 32 29 -1 27 31] 86 dc [<003F800000E0E0000380380007001C000E000E001C0007003C00078038000380780003 C0780003C0700001C0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001 E0F00001E0700001C0780003C0780003C0380003803C0007801C0007000E000E0007001C 000380380000E0E000003F8000> 32 30 -2 28 32] 79 dc [<003F07E00001C09C18000380F018000701F03C000E01E03C000E00E018000E00E00000 0E00E000000E00E000000E00E000000E00E00000FFFFFFFC000E00E01C000E00E01C000E 00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00 E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C007FC7FC FF80> 40 29 0 28 35] 14 dc [<001F808000E0618001801980070007800E0003801C0003801C00018038000180780000 807800008070000080F0000000F0000000F0000000F0000000F0000000F0000000F000FF F0F0000F80700007807800078078000780380007801C0007801C0007800E00078007000B 800180118000E06080001F8000> 32 30 -2 28 33] 71 dc [<0FE03038401CE00EF00EF00EF00E000C001C0030006000C00080018001000100010001 0001000100000000000000000000000300078007800300> 16 29 -2 28 20] 63 dc [<00030003000700060006000E000C001C0018001800380030003000700060006000E000 C000C001C001800380030003000700060006000E000C000C001C00180018003800300070 0060006000E000C000C000> 16 41 -2 30 21] 47 dc [ 16 2 0 9 14] 45 dc 5 @bop1 cmbx10.300 sf 177 382(3)s 38(F)h -4(unnelW)h -4(eb)h 14(Mo)h 1(di\014cation)h 1145(35)h 177 1171(4)s 38(F)h -4(unnelW)h -4(eb)h 14(F)h -4(uture)h 1270(43)h 177 2482(A)s 26(GNU)h 16(General)h 14(Publi)h -1(c)h 14(License)h 14(V)h -4(ersion)h 14(2)h 841(49)h 177 2599(B)s 28(References)h 1436(57)h 177 2715(Index)s 1605(57)h cmr10.300 sf 239 42(2.6)s 42(The)h 14(Heap)h 1394(29)h 239 116(2.7)s 42(The)h 14(Stac)h -1(k)h 1388(30)h 239 191(2.8)s 42(Static)h 14(V)h -3(ariables)h 1285(30)h 239 266(2.9)s 42(Implem)h -1(en)h -1(ting)h 12(T)h -3(ext)h 14(Inden)h -1(tation)h 1002(30)h 239 457(3.1)s 42(In)h -1(tro)h 1(duction)h 1345(35)h 239 531(3.2)s 42(The)h 14(Danger)h 14(of)h 13(Mo)h 1(difying)h 13(Languages)h 906(35)h 239 606(3.3)s 42(Authorit)h -1(y)h 14(vs)h 14(User)h 15(Securit)h -1(y)h 1084(36)h 239 681(3.4)s 42(What)h 13(I)h 14(W)h -3(an)h -1(t)h 13(to)h 14(Protect)h 1131(37)h 239 756(3.5)s 42(Mo)h 1(difying)h 12(the)h 15(Man)h -1(uals)h 1149(38)h 239 830(3.6)s 42(Ho)h -1(w)h 13(Cop)h -1(yrigh)h -1(t)h 13(La)h -1(w)h 14(W)h -3(orks)h 1078(38)h 239 905(3.7)s 42(Managemen)h -1(t)h 13(of)h 13(the)h 14(O\016cial)h 13(F)h -3(unnelW)h -3(eb)h 860(39)h 239 980(3.8)s 42(A)h 14(GNU)h 14(V)h -3(ersion?)h 1264(41)h 239 1054(3.9)s 42(Summ)h -1(ary)h 1396(41)h 239 1245(4.1)s 42(Do)h 1(cumen)h -1(tation)h 1292(43)h 239 1320(4.2)s 42(Comm)h -1(and)h 12(Line)h 13(In)h -1(terface)h 1122(43)h 239 1395(4.3)s 42(Shell)h 13(In)h -1(terpreter)h 1277(43)h 239 1469(4.4)s 42(Language)h 13(Design)h 1263(44)h 239 1544(4.5)s 42(Scanner/Mapp)h 1(er)h 1269(44)h 239 1619(4.6)s 42(P)h -1(arser)h 1458(45)h 239 1694(4.7)s 42(Analyser)h 1413(45)h 239 1768(4.8)s 42(T)h -3(angle)h 1450(45)h 239 1843(4.9)s 42(W)h -3(ea)h -1(v)h -1(e)h 1455(45)h 239 1918(4.10)s 21(Lister)h 1468(46)h 239 1993(4.11)s 21(Diagnostics)h 1364(47)h 239 2067(4.12)s 21(Sp)h 1(eed)h 1466(47)h 239 2142(4.13)s 21(Correctness)h 1364(47)h 239 2217(4.14)s 21(T)h -3(est)h 14(Suite)h 1389(47)h 239 2291(4.15)s 21(Mac)h -1(hine-Sp)h 1(eci\014c)h 15(Changes)h 1103(48)h 239 2366(4.16)s 21(Summ)h -1(ary)h 1396(48)h 1053 2940(4)s cmmi10.300 sf 543 42(:)s 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 543 116(:)s 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 640 191(:)s 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 930 266(:)s 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 575 457(:)s 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 1027 531(:)s 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 866 606(:)s 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 801 681(:)s 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 769 756(:)s 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 866 830(:)s 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 1059 905(:)s 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 672 980(:)s 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 543 1054(:)s 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 640 1245(:)s 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 801 1320(:)s 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 672 1395(:)s 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 672 1469(:)s 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 672 1544(:)s 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 478 1619(:)s 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 510 1694(:)s 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 478 1768(:)s 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 478 1843(:)s 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 478 1918(:)s 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 575 1993(:)s 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 478 2067(:)s 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 575 2142(:)s 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 543 2217(:)s 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 833 2291(:)s 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 543 2366(:)s 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 21(:)h 20(:)h 20(:)h 5 @eop 6 @bop0 cmbx10.746 sf [ 72 71 -4 70 81] 80 dc [<00FF803F8000FFFF80FFF000FFFF83FFFC00FFFF87FFFE00FFFF8FC3FF00FFFF8F07FF 0003FF9E0FFF8001FFBC0FFF8001FFB80FFF8001FFF80FFF8001FFF00FFF8001FFF007FF 0001FFF007FF0001FFE003FE0001FFE000F80001FFE000000001FFE000000001FFC00000 0001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC00000 0001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC00000 0001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC00000 0001FFC000000001FFC000000001FFC000000001FFC000000001FFC0000000FFFFFFE000 00FFFFFFE00000FFFFFFE00000FFFFFFE00000FFFFFFE00000> 48 46 -4 45 49] 114 dc [<000000FFC000000007FFF80000003FFFFC000000FFFFFF000001FFC1FF000007FF03FF 80000FFC03FF80000FF807FFC0001FF807FFC0003FF007FFC0003FF007FFC0003FE003FF 80007FE003FF80007FE001FF00007FE000FE00007FE0003800007FE0000000007FE00000 00007FE0000000007FE0000000007FE0000000007FE0000000007FE0000000007FE00000 00007FE0000000007FE0000000FFFFFFFE0000FFFFFFFE0000FFFFFFFE0000FFFFFFFE00 00FFFFFFFE0000007FF0000000007FF0000000007FF0000000007FF0000000007FF00000 00007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF00000 00007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF00000 00007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF00000 00007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF00000 00007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF00000 00007FF00000003FFFFFF800003FFFFFF800003FFFFFF800003FFFFFF800003FFFFFF800 00> 48 72 -3 71 36] 102 dc [<0007FFFC000000007FFFFFC0000001FFFFFFF8000003FFFFFFFE000007FE001FFF0000 07FF0003FFC0000FFF8001FFE0000FFF8000FFF0000FFF80007FF0000FFF80007FF8000F FF80007FF80007FF00003FFC0007FF00003FFC0003FE00003FFC0000F800003FFC000000 00003FFC00000000003FFC00000000003FFC00000000003FFC00000007FFFFFC000000FF FFFFFC000007FFFFFFFC00003FFFE03FFC0000FFFE003FFC0003FFF0003FFC0007FFC000 3FFC000FFF00003FFC001FFE00003FFC003FFC00003FFC007FF800003FFC007FF800003F FC00FFF000003FFC00FFF000003FFC00FFF000003FFC00FFF000003FFC00FFF000003FFC 00FFF000007FFC007FF80000FFFC007FF80001EFFC003FFC0003EFFC003FFF0007CFFF00 0FFFC03F8FFFF807FFFFFF07FFFC01FFFFFC03FFFC007FFFF001FFFC0003FF80007FF8> 56 46 -3 45 58] 97 dc [<00001FFFC0000000FFFFF8000007FFFFFE00001FFFFFFF80007FFC00FFC000FFE001FF C001FFC003FFE003FF8003FFE007FF0003FFE00FFE0003FFE00FFE0003FFE01FFC0001FF C01FFC0001FFC03FFC0000FF803FFC00003E007FF8000000007FF8000000007FF8000000 00FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF8000000 00FFF800000000FFF800000000FFF800000000FFF8000000007FF8000000007FF8000000 007FFC000000003FFC000000003FFC000000001FFC000000F81FFE000000F80FFE000000 F80FFF000001F007FF800003F003FFC00007E001FFE0000FC000FFF0001F80007FFE00FF 00001FFFFFFE000007FFFFF8000000FFFFE00000001FFE0000> 48 46 -4 45 53] 99 dc cmbx10.300 sf [<78FCFCFCFC78> 8 6 -3 5 13] 46 dc [<78FCFCFEFE7A0202040408083040> 8 14 -3 5 13] 44 dc [ 24 26 -1 17 25] 121 dc cmr10.300 sf [<60F0F0F0F0F0F0F060606060606060606060606060000000000060F0F060> 8 30 -4 29 12] 33 dc [<60F0F0701010101020204080> 8 12 -4 3 12] 44 dc [<60F0F0600000000000000000000060F0F060> 8 18 -4 17 12] 58 dc [<004000800100020006000C000C0018001800300030007000600060006000E000E000E0 00E000E000E000E000E000E000E000E000E000600060006000700030003000180018000C 000C0006000200010000800040> 16 42 -3 30 16] 40 dc [<800040002000100018000C000C000600060003000300038001800180018001C001C001 C001C001C001C001C001C001C001C001C001C0018001800180038003000300060006000C 000C0018001000200040008000> 16 42 -2 30 16] 41 dc 6 @bop1 cmbx10.746 sf 177 399(Preface)s cmbx10.300 sf 177 1328(Ross)s 15(N.)h 17(Willi)h -1(ams)h 177 1378(Adelaide,)s 14(Australi)h -1(a)h 177 1428(Ma)s -1(y)h 16(1992)h cmr10.300 sf 177 639(This)s 15(man)h -1(ual)h 12(is)h 15(for)h 14(hac)h -1(k)h -1(ers!)h 22(An)h -1(y)h -1(one)h 15(who)h 15(w)h -1(an)h -1(ts)h 14(to)h 15(bash,)h 15(diddle,)h 14(frob,)h 14(grind,)h 15(mangl)h -1(e,)h 13(patc)h -1(h,)h 15(p)h 1(ok)h -1(e,)h 177 689(toggle,)s 13(t)h -1(widdle,)h 13(zap,)h 14(or)h 13(generally)h 14(hac)h -1(k)h 14(F)h -3(unnelW)h -3(eb)h 13(should)h 14(at)h 14(least)h 14(tak)h -1(e)h 14(a)h 13(lo)h 1(ok)h 13(at)h 14(this)h 14(man)h -1(ual)h -1(.)h 177 764(This)s 14(do)h 1(cumen)h -1(t)h 13(has)h 14(b)h 1(een)h 15(created)h 16(to)h 14(serv)h -1(e)h 15(t)h -1(w)h -1(o)h 13(purp)h 1(oses:)h 228 880(1.)s 20(T)h -3(o)h 12(act)h 13(as)h 12(a)h 13(rep)h 1(ository)h 13(for)h 12(sp)h 1(eci\014c)h 15(design)h 12(and)h 13(implem)h -1(en)h -1(tatio)h -1(n)h 11(informati)h -1(on)h 11(not)h 12(appropriate)h 13(to)h 281 930(b)s 1(e)h 14(included)h 14(in)h 14(program)h 12(commen)h -1(ts.)h 228 1013(2.)s 20(T)h -3(o)h 13(guide)h 14(those)h 14(in)h -1(terested)h 16(in)h 13(mo)h 1(difying)h 11(the)h 15(program.)h 177 1129(As)s 13(a)h 13(result,)h 13(this)h 13(do)h 1(cumen)h -1(t)h 12(has)h 13(gro)h -1(wn)h 13(in)h 12(\014ts)h 14(and)h 12(starts.)h 19(This)h 13(man)h -1(ual)h 10(is)h 13(not)h 12(a)h 13(particularly)h 12(p)h 1(olished)h 177 1179(or)s 13(w)h -1(ell-balanced)h 11(do)h 1(cumen)h -1(t)h 12(but)h 13(it)h 12(should)h 13(b)h 1(e)h 13(of)h 12(assistance)h 13(to)h 13(those)h 13(\(including)h 12(m)h -1(yself)h 3(\))h 11(in)h -1(v)h -1(olv)h -1(ed)h 11(with)h 177 1229(mo)s 1(difyi)h -1(ng)h 12(F)h -3(unnelW)h -3(eb.)h 1053 2940(5)s 6 @eop 7 @bop0 7 @bop1 cmr10.300 sf 1053 2940(6)s 7 @eop 8 @bop0 /cmtt10.300 127 @newfont cmbx10.746 sf [<0000000003E000000000000000000007F000000000000000000007F000000000000000 00000FF80000000000000000000FF80000000000000000000FF80000000000000000001F FC0000000000000000001FFC0000000000000000003FFE0000000000000000003FFE0000 000000000000007FFF0000000000000000007FFF0000000000000000007FFF0000000000 00000000FFFF800000000000000000FFFF800000000000000001FFFFC000000000000000 01FFFFC00000000000000001FFFFC00000000000000003FFFFE00000000000000003EFFF E00000000000000007EFFFF00000000000000007CFFFF00000000000000007C7FFF00000 00000000000FC7FFF8000000000000000F83FFF8000000000000001F83FFFC0000000000 00001F03FFFC000000000000001F01FFFC000000000000003F01FFFE000000000000003E 00FFFE000000000000007E00FFFF000000000000007C007FFF00000000000000FC007FFF 80000000000000F8007FFF80000000000000F8003FFF80000000000001F8003FFFC00000 00000001F0001FFFC0000000000003F0001FFFE0000000000003E0001FFFE00000000000 03E0000FFFE0000000000007E0000FFFF0000000000007C00007FFF000000000000FC000 07FFF800000000000F800007FFF800000000000F800003FFF800000000001F800003FFFC 00000000001F000001FFFC00000000003FFFFFFFFFFE00000000003FFFFFFFFFFE000000 00007FFFFFFFFFFF00000000007FFFFFFFFFFF00000000007FFFFFFFFFFF0000000000FC 0000007FFF8000000000F80000003FFF8000000001F80000003FFFC000000001F0000000 3FFFC000000001F00000001FFFC000000003F00000001FFFE000000003E00000000FFFE0 00000007E00000000FFFF000000007C00000000FFFF000000007C000000007FFF0000000 0FC000000007FFF80000000F8000000003FFF80000001F8000000003FFFC0000001F0000 000003FFFC0000007FC000000001FFFC0000FFFFFFC00007FFFFFFFF80FFFFFFC00007FF FFFFFF80FFFFFFC00007FFFFFFFF80FFFFFFC00007FFFFFFFF80FFFFFFC00007FFFFFFFF 80> 88 72 -4 71 90] 65 dc [<007FC000000000FFFFC000000000FFFFC000000000FFFFC000000000FFFFC000000000 FFFFC00000000003FFC00000000001FFC00000000001FFC00000000001FFC00000000001 FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FF C00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0 0000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000 00000001FFC0007FFFF801FFC0007FFFF801FFC0007FFFF801FFC0007FFFF801FFC0007F FFF801FFC0000FFE0001FFC00007F00001FFC0000FE00001FFC0003FC00001FFC0007F80 0001FFC000FE000001FFC001FC000001FFC007F8000001FFC00FF0000001FFC01FC00000 01FFC03F80000001FFC0FF00000001FFC1FE00000001FFC3FF00000001FFCFFF80000001 FFDFFFC0000001FFFFFFC0000001FFFFFFE0000001FFFFFFF0000001FFFCFFF8000001FF F87FFC000001FFE03FFC000001FFC01FFE000001FFC01FFF000001FFC00FFF800001FFC0 07FFC00001FFC003FFC00001FFC001FFE00001FFC001FFF00001FFC000FFF80001FFC000 7FFC0001FFC0003FFC0001FFC0001FFE0001FFC0000FFF0001FFC0000FFF8001FFC0000F FFC0FFFFFF807FFFFFFFFFFF807FFFFFFFFFFF807FFFFFFFFFFF807FFFFFFFFFFF807FFF FF> 56 72 -4 71 63] 107 dc [ 80 46 -3 45 86] 119 dc [<007FC000FFFFC000FFFFC000FFFFC000FFFFC000FFFFC00003FFC00001FFC00001FFC0 0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0 0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0 0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0 0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0 0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0 0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0 0001FFC00001FFC00001FFC00001FFC000FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF 80> 32 72 -4 71 32] 108 dc [<00000000007FC00000000000FFFFC00000000000FFFFC00000000000FFFFC000000000 00FFFFC00000000000FFFFC0000000000003FFC0000000000001FFC0000000000001FFC0 000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC000000000 0001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0 000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC000000000 0001FFC0000000000001FFC0000000000001FFC0000000000001FFC00000000FFC01FFC0 000000FFFF81FFC0000007FFFFE1FFC000001FFFFFF9FFC000007FFC03FFFFC00000FFF0 007FFFC00001FFC0001FFFC00003FF80000FFFC00007FF000007FFC0000FFE000003FFC0 000FFE000003FFC0001FFC000003FFC0001FFC000003FFC0003FFC000003FFC0003FFC00 0003FFC0007FF8000003FFC0007FF8000003FFC0007FF8000003FFC000FFF8000003FFC0 00FFF8000003FFC000FFF8000003FFC000FFF8000003FFC000FFF8000003FFC000FFF800 0003FFC000FFF8000003FFC000FFF8000003FFC000FFF8000003FFC000FFF8000003FFC0 007FF8000003FFC0007FF8000003FFC0007FF8000003FFC0003FF8000003FFC0003FFC00 0003FFC0003FFC000003FFC0001FFC000003FFC0001FFC000003FFC0000FFE000007FFC0 0007FF00000FFFC00003FF00001FFFC00001FFC0003FFFC00000FFE000FFFFE000007FF8 07FBFFFF80001FFFFFF3FFFF800007FFFFC3FFFF800001FFFF03FFFF8000001FF803FFFF 80> 64 72 -4 71 66] 100 dc [<00000000001F8000007FF000FFE00007FFFF03FFF0001FFFFFC7FFF0007FFFFFFFC7F8 00FFE03FFE0FF801FF800FFC0FF803FF0007FE0FF807FE0003FF07F007FE0003FF07F00F FC0001FF81C00FFC0001FF80000FFC0001FF80001FFC0001FFC0001FFC0001FFC0001FFC 0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC0000FFC0001FF80000FFC00 01FF80000FFC0001FF800007FE0003FF000007FE0003FF000003FF0007FE000001FF800F FC000000FFE03FF8000001FFFFFFF0000001DFFFFFC0000003C7FFFF00000003C07FF000 000007C0000000000007C0000000000007C0000000000007C0000000000007E000000000 0007F0000000000007F8000000000007FFFFFFF0000007FFFFFFFF000003FFFFFFFFE000 03FFFFFFFFF80001FFFFFFFFFE0001FFFFFFFFFF0000FFFFFFFFFF80007FFFFFFFFF8003 FFFFFFFFFFC00FFFFFFFFFFFC01FF800001FFFE03FE0000001FFE07FC00000007FF07FC0 0000003FF0FF800000001FF0FF800000001FF0FF800000001FF0FF800000001FF0FF8000 00001FF07FC00000003FE07FC00000003FE03FE00000007FC03FF0000000FFC01FFC0000 03FF800FFF00000FFF0003FFF000FFFC0000FFFFFFFFF000003FFFFFFFC0000007FFFFFE 000000003FFFC00000> 56 68 -3 46 59] 103 dc [<007FC001FFC00000FFE00000FFFFC00FFFF80007FFFC0000FFFFC03FFFFE001FFFFF00 00FFFFC0FFFFFF007FFFFF8000FFFFC1FC07FF80FE03FFC000FFFFC3E003FFC1F001FFE0 0003FFC7C001FFC3E000FFE00001FFCF0001FFE78000FFF00001FFDE0000FFEF00007FF0 0001FFDC0000FFEE00007FF00001FFFC0000FFFE00007FF80001FFF80000FFFC00007FF8 0001FFF00000FFF800007FF80001FFF00000FFF800007FF80001FFF00000FFF800007FF8 0001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF8 0001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF8 0001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF8 0001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF8 0001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF8 0001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF8 0001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF8 0001FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF8 0001FFE00000FFF000007FF80001FFE00000FFF000007FF800FFFFFFC07FFFFFE03FFFFF F0FFFFFFC07FFFFFE03FFFFFF0FFFFFFC07FFFFFE03FFFFFF0FFFFFFC07FFFFFE03FFFFF F0FFFFFFC07FFFFFE03FFFFFF0> 96 46 -4 45 101] 109 dc cmbx10.300 sf [ 24 18 -1 17 25] 118 dc [ 32 28 -2 27 37] 72 dc [<07F8201FFEE03C07E07801E07000E0F000E0F00060F00060F80000FE0000FFE0007FFE 003FFF003FFF800FFFC007FFE0007FE00003F00001F00000F0C000F0C000F0C000E0E000 E0F001C0FC03C0EFFF0083FC00> 24 28 -3 27 27] 83 dc [<07FFF007FFF0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F 80001F80001F80001F80001F80001F80001F80001F80001F80301F80781F80FC1F80FC1F 80FC1F00783E00387C000FF000> 24 28 -1 27 25] 74 dc cmtt10.300 sf [<003F00007F00003F0000070000070000070000070003C7000FF7003FFF003C1F00780F 00F00700F00700E00700E00700E00700E00700F00700F00F00781F007C3F003FFFE01FF7 F007C7E0> 24 25 -1 24 22] 100 dc [<1FE0007FF8007FFC00783C00301E00000E00000E0003FE001FFE007E0E00F00E00E00E 00E00E00F01E00F83E007FFFE03FE7E00F83E0> 24 18 -2 17 22] 97 dc [<7F1FC0FF1FE07F1FC01C07001E0F000E0E000E0E000E0E00071C00071C00071C00071C 0003B80003B80003B80001F00001F00000E000> 24 18 -1 17 22] 118 dc [<03E00FF81FFC3C1E780E7007E007FFFFFFFFFFFFE000E000700778073C0F1FFE0FFC03 F0> 16 18 -3 17 22] 101 dc [<00F80003FE000FFF001F0F803E3F803C7F8078FFC071E7C0F1C3C0E3C3C0E381C0E381 C0E381C0E381C0E381C0E3C3C0F1C38071E78078FF003C7E003E3C001F03C00FFFC003FF 0000FC00> 24 25 -2 24 22] 64 dc [<03F80FFE1FFE3C1E780C7000F000E000E000E000E000F000700778073E0F1FFE0FFC03 F0> 16 18 -3 17 22] 99 dc [<0FEC3FFC7FFCF03CE01CE01CF0007F801FF007FC003EE00EE00EF00EF81EFFFCFFF8C7 E0> 16 18 -3 17 22] 115 dc [<70F8F8F870> 8 5 -8 4 22] 46 dc [ 24 25 -2 24 22] 108 dc [<018003C003C0018000000000000000007FC07FC07FC001C001C001C001C001C001C001 C001C001C001C001C001C07FFFFFFF7FFF> 16 26 -3 25 22] 105 dc [<7E1F80FE3F807E1F800E03800E03800E03800E03800E03800E03800E03800E03800E03 800E03800E07800F0F800FFFF007FFF803E3F0> 24 18 0 17 22] 117 dc [ 24 18 0 17 22] 109 dc [<03E0000FF8001FFC003C1E00780F00700700E00380E00380E00380E00380E00380F007 80700700780F003C1E001FFC000FF80003E000> 24 18 -2 17 22] 111 dc [<7E3C00FEFF007FFF800F87800F03800F03800E03800E03800E03800E03800E03800E03 800E03800E03800E03807FC7F0FFE7F87FC7F0> 24 18 0 17 22] 110 dc [<0300000700000700000700000700007FFF00FFFF00FFFF000700000700000700000700 0007000007000007000007010007038007038007078007878003FF0003FE0000F800> 24 23 -1 22 22] 116 dc [ 24 18 -1 17 22] 114 dc [<003000780078003000000000000000001FF81FF81FF800380038003800380038003800 380038003800380038003800380038003800380038003800386070F0F0FFE07FC03F80> 16 35 -2 25 22] 106 dc [<7F1FC0FF9FE07F1FC01C07000E07000E0E000E0E00070E00071C00071C00039C00039C 0003980001B80001B80000F00000F00000F00000E00000E00000E00001C00079C0007BC0 007F80003F00003C0000> 24 27 -1 17 22] 121 dc [ 24 18 -1 17 22] 119 dc [<7E0000FE00007E00000E00000E00000E00000E00000E3E000EFF800FFFC00F83E00F01 E00E00F00E00F00E00700E00700E00700E00700E00F00F00E00F01E00F83C00FFFC00EFF 00063C00> 24 25 0 24 22] 98 dc [<7E0000FE00007E00000E00000E00000E00000E00000E7FE00E7FE00E7FE00E0F000E1E 000E3C000E78000EF0000FF0000FF8000FBC000F1E000E0E000E07000E07807F87F0FFCF F07F87F0> 24 25 0 24 22] 107 dc [<7E0000FE00007E00000E00000E00000E00000E00000E3C000EFF000FFF800F87800F03 800F03800E03800E03800E03800E03800E03800E03800E03800E03800E03807FC7F0FFE7 F87FC7F0> 24 25 0 24 22] 104 dc cmr10.300 sf [<00C001E001E000C000000000000000000000000000000FE000E000E000E000E000E000 E000E000E000E000E000E000E000E000E000E000E000E000E000E000E060E0F0C0F1C061 803E00> 16 37 3 28 13] 106 dc [<7FF0FFC00FC03E000780180003C0180003E0100001E0200001F0600000F04000007880 00007D8000003D0000001E0000001F0000000F0000000F8000000F80000013C0000023E0 000021E0000041F00000C0F8000080780001007C0003003C0002001E0006001F001F003F 80FFC0FFF0> 32 28 -1 27 31] 88 dc [ 32 28 -2 27 32] 75 dc 8 @bop1 cmbx10.746 sf 177 399(Ac)s -3(kno)h -3(wledgemen)h -3(ts)h cmbx10.300 sf 488 645(Da)s -1(vid)h 18(Hulse)h 430 1018(Simon)s 14(Hac)h -1(k)h -1(ett)h 438 1193(Jerem)s -1(y)h 17(Begg)h 450 1317(Barry)s 57(Dwy)h -1(er)h 772(Roger)h 57(Brissend)h -1(en)h 177 1591(Ross)s 15(N.)h 17(Willi)h -1(ams)h 177 1641(Adelaide,)s 14(Australi)h -1(a)h 177 1691(Ma)s -1(y)h 16(1992)h cmtt10.300 sf 781 645(dave@cs.adela)s -1(ide.e)h -1(du.au)h 768 1018(simon@internod)s -1(e.com)h -1(.au)h 744 1193(jeremy@vsm.c)s -1(om.au)h 832 1317(dwyer@cs.ad)s -1(elaid)h -1(e.edu)h -1(.au)h 193 1367(rjb@koala.harv)s -1(ard.e)h -1(du)h cmr10.300 sf 177 645(Man)s -1(y)h 16(thanks)h 17(to)h 294(\()h 503(\))h 15(for)h 17(translating)h 16(the)h 17(original)h 15(v)h -1(ersion)h 177 695(of)s 15(F)h -3(unnelW)h -3(eb)h 15(\(F)h -3(unnelW)h -3(eb)h 16(V1\))h 15(from)h 14(Ada)h 16(in)h -1(to)h 15(C)h 15(and)h 16(getting)h 15(it)h 16(to)h 15(w)h -1(ork)h 15(on)h 16(Unix)h 15(and)h 16(a)h 15(PC.)h 15(The)h 177 744(C)s 17(co)h 1(de)h 18(written)h 17(b)h -1(y)h 17(Da)h -1(vid)h 15(\(F)h -3(unnelW)h -3(eb)h 17(V2\))h 16(formed)h 16(the)h 17(basis)h 17(of)h 17(F)h -3(unnelW)h -3(eb)h 16(V3,)h 17(but)h 17(w)h -1(as)h 17(en)h -1(tirely)h 177 794(rewritten)s 18(during)h 17(the)h 18(in)h -1(tensiv)h -1(e)h 17(re\014nemen)h -1(t)h 18(and)h 16(feature-injection)h 18(p)h 1(erio)h 1(d)h 17(leading)h 16(up)h 17(to)h 17(this)h 18(release)h 177 844(\(F)s -3(unnelW)h -3(eb)h 12(V3)h 12(is)h 11(ab)h 1(out)h 12(three)h 13(times)h 11(the)h 13(size)h 13(of)h 11(F)h -3(unnelW)h -3(eb)h 11(V2\).)h 18(Nev)h -1(ertheless,)h 14(without)h 12(this)h 12(imp)h 1(or-)h 177 894(tan)s -1(t)h 13(\014rst)h 15(translation)h 12(step,)h 14(I)h 14(w)h -1(ould)h 12(probably)h 13(not)h 13(ha)h -1(v)h -1(e)h 13(found)h 13(the)h 14(motiv)h -2(atio)h -1(n)h 12(to)h 13(dev)h -1(elop)h 13(F)h -3(unnelW)h -3(eb)h 177 944(to)s 14(its)h 14(presen)h -1(t)h 15(state.)h 177 1018(Thanks)s 14(go)h 12(to)h 335(\()h 482(\))h 11(of)h 13(In)h -1(terno)h 1(de)h 14(Systems)h 13(Pt)h -1(y)h 14(Ltd)h 13(for)h 13(the)h 177 1068(use)s 18(of)h 16(his)h 17(Sun,)h 18(Mac,)h 18(and)h 16(PC,)h 17(for)h 17(assistance)h 18(in)h 17(p)h 1(orting)h 16(F)h -3(unnelW)h -3(eb)h 17(to)h 17(the)h 17(Sun)h 18(and)h 16(PC,)h 17(and)h 17(for)h 177 1118(helpful)s 13(discussions.)h 177 1193(Thanks)s 16(go)h 16(to)h 305(\()h 372(\))h 14(of)h 16(VSM)h 16(Soft)h -1(w)h -1(are)h 15(Services)h 18(for)h 15(the)h 17(use)h 17(of)h 15(his)h 177 1243(V)s -5(AX,)h 14(and)h 14(for)h 14(assistance)h 15(with)h 13(the)h 15(VMS-sp)h 1(eci\014c)h 15(co)h 1(de.)h 177 1317(Thanks)s 50(to)h 417(\()h 525(\))h 48(and)h 177 1367(\()s 460(\))h 16(for)h 18(trying)h 18(out)h 18(F)h -3(unnelW)h -3(eb)h 18(V)h -3(ersion)h 18(1)h 18(in)h 18(1987)h 17(and)h 18(pro)h -1(viding)h 17(v)h -2(aluable)h 177 1417(feedbac)s -1(k.)h 177 1492(Thanks)s 14(to)h 14(Donald)h 13(Kn)h -1(uth)h 14(for)h 13(establishing)h 14(the)h 14(idea)h 14(of)h 13(literate)h 14(programm)h -1(ing)h 12(in)h 13(the)h 15(\014rst)h 14(place.)h 1053 2940(7)s 8 @eop 9 @bop0 9 @bop1 cmr10.300 sf 1053 2940(8)s 9 @eop 10 @bop0 /cmti10.300 127 @newfont /cmcsc10.300 127 @newfont cmcsc10.300 sf [<00200000700000700000700000B80000B80000B800011C00011C00011C00020E00020E 0004070004070007FF000803800803800803801801C03803C0FE0FF8> 24 21 -1 20 25] 97 dc cmmi10.300 sf [<0000038000000F0000003C000000F0000003C000000F0000003C000000F0000003C000 000F0000003C000000F0000000F00000003C0000000F00000003C0000000F00000003C00 00000F00000003C0000000F00000003C0000000F0000000380> 32 24 -3 21 32] 60 dc [ 32 24 -3 21 32] 62 dc cmti10.300 sf [<0001FC000703000C03001C07001C0300180000380000380000380000380000700007FF FC00701C00701C00701C00E03800E03800E03800E03800E07001C07001C07001C07001C0 E201C0E201C0E20380E4038064038038038000030000070000060000C60000E40000CC00 00700000> 24 37 1 28 23] 12 dc [<3C3C26C2468747078E068E000E000E001C001C001C001C003800380038003800700030 00> 16 18 -4 17 18] 114 dc [<01F006080C080C1C18181C001F001FC00FF007F0007800386030E030C030806060C01F 00> 16 18 -3 17 17] 115 dc [<00C001C001C001C00380038003800380FFE00700070007000E000E000E000E001C001C 001C001C00384038403840388019000E00> 16 26 -3 25 14] 116 dc [<03CC063C0C3C181C3838303870387038E070E070E070E070E0E2C0E2C0E261E462643C 38> 16 18 -5 17 21] 97 dc [<1E0300270700470700470700870E00870E000E0E000E0E001C1C001C1C001C1C001C1C 003838803838801838801839001C5900078E00> 24 18 -4 17 22] 117 dc [<0FC00001C00001C0000380000380000380000380000700000700000700000700000E78 000E8C000F0E000E0E001C0E001C0E001C0E001C0E00381C00381C00381C003838007038 80703880707080707100E03200601C00> 24 29 -3 28 21] 104 dc [<01E007180C0C180C380C300E700E700EE01CE01CE01CE018E038E030E06060C031801E 00> 16 18 -5 17 21] 111 dc [<1E03270747074707870E870E0E0E0E0E1C1C1C1C1C1C1C1C38383838183818381C7007 F00070007000E0E0C0E1C0818047003C00> 16 26 -4 17 20] 121 dc [<01E007100C1018083810701070607F80E000E000E000E000E000E0086010602030C01F 00> 16 18 -5 17 19] 101 dc cmbx10.746 sf [<00FC0001FF0003FF8007FFC00FFFC01FFFE01FFFE01FFFE01FFFE01FFFE01FFFE00FFF C007FFC003FF8001FF0000FC000000000000000000000000000000000000000000000000 00000000000000000000007FC0FFFFC0FFFFC0FFFFC0FFFFC0FFFFC003FFC001FFC001FF C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC0FFFFFFFFFFFFFFFFFFFFFF FFFFFFFF> 24 73 -4 72 32] 105 dc [ 88 71 -4 70 93] 78 dc cmtt10.300 sf [<01800380038007800F807F80FF80738003800380038003800380038003800380038003 8003800380038003807FF87FFC7FF8> 16 25 -4 24 22] 49 dc [<3FFE003FFE003FFE003800003800003800003800003800003800003800003BF0003FFC 003FFE003C0F00300700000780000380600380F00380F00780F00F00F81F007FFE001FF8 0007E000> 24 25 -2 24 22] 53 dc [<03E0000FF8001FFC001E3C00380E00780F00700700700700E00380E00380E00380E003 80E00380E00380E00380E00380F00780700700700700780F003C1E001E3C001FFC000FF8 0003E000> 24 25 -2 24 22] 48 dc [<03E3C00FFFE01FFFE01E3CC03C1E00380E00380E00380E003C1E001E3C001FFC001FF8 003BE0003800003800001FFC001FFF003FFFC07803C0F001E0E000E0E000E0E000E0F001 E07C07C03FFF800FFE0003F800> 24 28 -1 17 22] 103 dc [<7E3E00FEFF807FFFC00F83E00F01E00E00F00E00F00E00700E00700E00700E00700E00 F00F00E00F01E00F83C00FFFC00EFF000E3C000E00000E00000E00000E00000E00000E00 007FC000FFE0007FC000> 24 27 0 17 22] 112 dc cmbx10.300 sf [<78FCFCFCFC7800000000000078FCFCFCFC78> 8 18 -3 17 13] 58 dc [ 8 41 -4 30 13] 91 dc [ 8 41 -1 30 13] 93 dc [<7FFFFFE07FFFFFE0781F81E0701F80E0601F8060E01F8070C01F8030C01F8030C01F80 30C01F8030001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F80 00001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800007FFFE 0007FFFE00> 32 28 -2 27 33] 84 dc [ 32 28 -2 27 37] 75 dc [ 24 29 -1 28 27] 104 dc [<03F8000FFF001C07803003803001C07001C07801C07E01C07F83807FC3003FF6001FFC 000FFE0007FF801DFF80387FC0781FE0F007E0F003E0F001E0F001E0F001E07801C07803 803E07801FFE0003F800> 24 27 -2 26 24] 56 dc [<007E0003FF000781800F03C01E07C03C07C03C0380780000780000F80000F8F800FB0E 00FA0780FC0380FC03C0F803E0F803E0F803E0F803E07803E07803E07803C03C03C03C07 801E0F0007FE0003F800> 24 27 -2 26 24] 54 dc cmr10.300 sf [<03C1000C3300180B00300F00700700700700E00700E00700E00700E00700E00700E007 00600700700700300F00180F000C370007C7000007000007000007000007000007000007 00000700003FE0> 24 26 -2 17 22] 113 dc 10 @bop1 cmcsc10.300 sf 1644 883(a)s 1431 1008(a)s 1695 1058(a)s 754 1282(a)s cmmi10.300 sf 190 689(<)s 189(><)h 76(>)h cmti10.300 sf 222 689(\014rstauthor)s 64(ye)h -2(ar)h cmbx10.746 sf 177 399(Presen)s -3(tation)h 42(Notes)h cmtt10.300 sf 316 888(akt150@cscgpo.)s -1(anu.e)h -1(du.au)h 1538 1013(verbatim)s cmbx10.300 sf 177 639(References:)s 177 689([)s 393(])h 177 764(Sp)s 1(ecial)h 11(terms:)h 177 839(T)s -1(yp)h 1(esetting)h -1(:)h 1740 888([Kn)s -1(uth84])h 177 938([Lamp)s 1(ort86])h 177 1013(Graphics:)s 177 1187(Kno)s -1(wn)h 13(t)h -1(yp)h 1(esetti)h -1(ng)h 11(probl)h -1(ems:)h cmr10.300 sf 456 639(All)s 24(reference)h 1(s)h 28(are)h 25(set)h 27(in)h 25(b)h 1(old)h 24(and)h 26(are)h 25(cited)h 26(in)h 25(square)h 26(brac)h -1(k)h -1(ets)h 27(in)h 25(the)h 26(form)h 596 689(.)s 19(All)h 13(references)h 16(cited)h 14(in)h 13(the)h 13(text)h 14(app)h 1(ear)h 14(in)h 13(the)h 14(reference)h 15(list)h 13(and)h 13(the)h 14(index.)h 487 764(New)s 12(or)h 11(imp)h 1(ortan)h -1(t)h 10(terminolog)h -1(y)h 10(has)h 11(b)h 1(een)h 13(set)h 12(in)h 11(b)h 1(old)h 11(face)h 12(and)h 11(app)h 1(ears)h 12(in)h 11(the)h 12(index.)h 510 839(This)s 41(do)h 1(cumen)h -1(t)h 40(w)h -1(as)h 40(prepared)h 42(b)h -1(y)h 40(the)h 41(author)h 40(using)h 41(Andrew)h 41(T)h -3(rev)h -1(or-)h 177 888(ro)s -1(w's)h 29(\()h 525(\))h 28(implem)h -1(en)h -1(tatio)h -1(n)h 28(\(OzT)h -3(eX\))h 30(of)h 29(the)h 30(T)h 1558 897(E)s 1581 888(X/L)s 4(T)h 1686 901(E)s 1709 888(X)s 447 938(t)s -1(yp)h 1(esetting)h 15(system)h 13(running)h 14(on)h 14(a)h 13(Macin)h -1(tosh-SE.)h 394 1013(All)s 11(diagram)h -1(s)h 10(ha)h -1(v)h -1(e)h 11(b)h 1(een)h 13(constructed)h 13(out)h 11(of)h 11(text)h 12(using)h 11(the)h 12(L)h 4(T)h 1473 1026(E)s 1496 1013(X)s 197(en)h -1(vironmen)h -1(t)h 177 1063(so)s 17(as)h 16(to)h 17(allo)h -1(w)h 15(this)h 16(do)h 1(cumen)h -1(t)h 16(to)h 17(b)h 1(e)h 17(disseminated)h 15(electronically)h 17(and)h 16(prin)h -1(ted)h 17(using)h 16(L)h 4(T)h 1737 1076(E)s 1761 1063(X)s 16(without)h 177 1112(access)s 16(to)h 14(the)h 14(author's)h 14(dra)h -1(wing)h 13(to)h 1(ols.)h 805 1187(While)s 11(ev)h -1(ery)h 12(attempt)h 11(has)h 12(b)h 1(een)h 12(made)h 10(to)h 12(giv)h -1(e)h 11(a)h 11(go)h 1(o)h 1(d)h 11(presen)h -1(tation)h 177 1237(within)s 12(the)h 13(time)h 11(a)h -1(v)h -2(ailabl)h -1(e,)h 11(some)h 12(shortcuts)h 14(ha)h -1(v)h -1(e)h 12(had)h 12(to)h 12(b)h 1(e)h 13(tak)h -1(en.)h 18(In)h 13(particular,)h 12(the)h 13(author)h 12(has)h 13(b)h 1(een)h 177 1287(unable)s 14(to)h 14(w)h -1(ork)h 13(out)h 14(ho)h -1(w)h 14(to)h 13(get)h 14(L)h 4(T)h 796 1300(E)s 820 1287(X)s 14(to)h 14(suppress)h 15(blank)h 14(pages)h 14(at)h 13(the)h 15(start)h 14(of)h 14(c)h -1(hapters.)h 1053 2940(9)s 10 @eop 11 @bop0 11 @bop1 cmr10.300 sf 1042 2940(10)s 11 @eop 12 @bop0 /cmbx10.622 127 @newfont /cmbx10.432 127 @newfont /cmr7.300 127 @newfont /cmr6.300 127 @newfont /cmr8.300 127 @newfont cmr6.300 sf [<0C003C00CC000C000C000C000C000C000C000C000C000C000C000C000C00FF80> 16 16 -2 15 15] 49 dc cmr7.300 sf [<0C001C00EC000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C 00FFC0> 16 19 -3 18 17] 49 dc cmbx10.622 sf [<0000001FFF000070000001FFFFE000F000000FFFFFFC01F000007FFFFFFF03F00001FF FE007F87F00007FFE0000FEFF0000FFF000003FFF0003FFE000001FFF0007FF8000000FF F000FFF00000007FF001FFE00000003FF003FFC00000001FF003FF800000001FF007FF80 0000000FF00FFF0000000007F00FFF0000000007F01FFE0000000007F01FFE0000000003 F03FFC0000000003F03FFC0000000003F07FFC0000000001F07FFC0000000001F07FFC00 00000001F07FF8000000000000FFF8000000000000FFF8000000000000FFF80000000000 00FFF8000000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF800 0000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF80000000000 00FFF80000000000007FF80000000000007FFC0000000000007FFC0000000000F07FFC00 00000000F03FFC0000000000F03FFC0000000000F01FFE0000000000F01FFE0000000001 F00FFF0000000001E00FFF0000000003E007FF8000000003E003FF8000000007C003FFC0 00000007C001FFE00000000F8000FFF00000001F00007FF80000003E00003FFE0000007C 00000FFF000001F8000007FFE00007F0000001FFFE003FC00000007FFFFFFF800000000F FFFFFC0000000001FFFFF000000000001FFF000000> 64 61 -5 59 71] 67 dc [<00FF00000000FFFF00000000FFFF00000000FFFF00000000FFFF0000000007FF000000 0003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF000000 0003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF000000 0003FF0000000003FF0000000003FF0000000003FF0000000003FF007FC00003FF01FFF8 0003FF07FFFE0003FF1F03FF0003FF3C01FF0003FF7801FF8003FF7000FF8003FFE000FF C003FFC000FFC003FFC000FFC003FF8000FFC003FF8000FFC003FF0000FFC003FF0000FF C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF C003FF0000FFC003FF0000FFC0FFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFF FF> 48 60 -4 59 55] 104 dc [<001FFF00000001FFFFF0000007FFFFFC00000FF807FF00001FF801FF80001FFC00FFC0 001FFC007FE0001FFC007FE0001FFC007FF0001FFC003FF0000FF8003FF00007F0003FF0 0001C0003FF0000000003FF0000000003FF0000000003FF0000000FFFFF000000FFFFFF0 00007FF83FF00003FF803FF00007FE003FF0001FFC003FF0003FF8003FF0007FF0003FF0 007FE0003FF000FFE0003FF000FFC0003FF000FFC0003FF000FFC0003FF000FFC0007FF0 00FFC0007FF000FFE000FFF0007FF001DFF0003FF803DFF8001FFC0F8FFFF00FFFFE0FFF F001FFFC07FFF0003FE000FFF0> 48 38 -3 37 48] 97 dc [<00FF01FF8000FFFF0FFFF000FFFF3FFFFC00FFFFFE03FF00FFFFF001FFC003FFE0007F E003FF80007FF003FF80003FF803FF00001FF803FF00001FFC03FF00000FFC03FF00000F FE03FF00000FFE03FF00000FFE03FF000007FF03FF000007FF03FF000007FF03FF000007 FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007 FF03FF00000FFE03FF00000FFE03FF00000FFE03FF00001FFC03FF00001FFC03FF00001F F803FF80003FF003FFC0007FF003FFE000FFE003FFF001FF8003FFFC07FF0003FF3FFFFC 0003FF0FFFF00003FF01FF000003FF0000000003FF0000000003FF0000000003FF000000 0003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF000000 0003FF0000000003FF0000000003FF00000000FFFFFC000000FFFFFC000000FFFFFC0000 00FFFFFC000000> 48 55 -3 37 55] 112 dc [<0007800000078000000780000007800000078000000F8000000F8000000F8000000F80 00001F8000001F8000003F8000003F8000007F800000FF800001FF800007FF80001FFFFF F0FFFFFFF0FFFFFFF0FFFFFFF001FF800001FF800001FF800001FF800001FF800001FF80 0001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF80 0001FF800001FF800001FF800001FF800001FF803C01FF803C01FF803C01FF803C01FF80 3C01FF803C01FF803C01FF803C00FF807800FFC078007FC0F8007FE1F0001FFFE00007FF C00001FF00> 32 55 -2 54 38] 116 dc [<0001FFC000000FFFF800003FFFFE0000FF80FF0001FE003F8007FC001FC00FF8000FE0 0FF8000FF01FF00007F03FF00007F83FF00007F87FE00007F87FE00003FC7FE00003FC7F E00003FCFFE00003FCFFFFFFFFFCFFFFFFFFFCFFFFFFFFFCFFE0000000FFE0000000FFE0 000000FFE00000007FE00000007FE00000007FE00000003FE00000003FF000003C1FF000 003C1FF000003C0FF800007807FC0000F803FE0001F001FF0007E000FFC03FC0003FFFFF 000007FFFC000000FFE000> 40 38 -3 37 45] 101 dc [<00FE03F000FFFE0FFE00FFFE3FFF80FFFE3C7FC0FFFE707FC007FEF0FFE003FEE0FFE0 03FEC0FFE003FFC0FFE003FF80FFE003FF807FC003FF803F8003FF800E0003FF00000003 FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF 00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00 000003FF00000003FF00000003FF00000003FF00000003FF000000FFFFFE0000FFFFFE00 00FFFFFE0000FFFFFE0000> 40 38 -3 37 41] 114 dc [<00001E000000003E00000000FE00000003FE0000003FFE0000FFFFFE0000FFFFFE0000 FFFFFE0000FFCFFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000000 0FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000F FE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE 0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE00 00000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000 000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000000 0FFE0000000FFE00007FFFFFFFC07FFFFFFFC07FFFFFFFC07FFFFFFFC0> 40 56 -7 55 49] 49 dc cmtt10.300 sf [<01C00001C00001C00001C00071C700F9CF807FFF001FFC0007F00007F0001FFC007FFF 00F9CF8071C70001C00001C00001C00001C000> 24 18 -2 21 22] 42 dc [<00E00001F00001F00001B00001B00003B80003B80003B800031800071C00071C00071C 00071C00071C000E0E000E0E000FFE000FFE001FFF001C07001C07001C07007F1FC0FF1F E07F1FC0> 24 25 -1 24 22] 65 dc [<7FFFC0FFFFC07FFFC01C01C01C01C01C01C01C01C01C00001C00001C1C001C1C001FFC 001FFC001FFC001C1C001C1C001C00001C00E01C00E01C00E01C00E01C00E07FFFE0FFFF E07FFFE0> 24 25 -1 24 22] 69 dc [ 24 25 -1 24 22] 87 dc [<7FF800FFFE007FFF001C0F001C07801C03801C03801C03801C07801C07001FFF001FFE 001FFE001C1F001C03801C03C01C01C01C01C01C01C01C01C01C03C01C07807FFF80FFFF 007FFC00> 24 25 -1 24 22] 66 dc cmbx10.746 sf [ 72 70 -4 69 75] 70 dc [<007FE000003FF000FFFFE0007FFFF000FFFFE0007FFFF000FFFFE0007FFFF000FFFFE0 007FFFF000FFFFE0007FFFF00003FFE00001FFF00001FFE00000FFF00001FFE00000FFF0 0001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE0 0000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF0 0001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE0 0000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF0 0001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE0 0000FFF00001FFE00000FFF00001FFE00001FFF00001FFE00001FFF00001FFE00001FFF0 0001FFE00003FFF00000FFE00007FFF00000FFE0000F7FF000007FE0001F7FF000007FF0 003E7FF800003FFC00FC7FFFE0001FFFFFF87FFFE00007FFFFE07FFFE00001FFFF807FFF E000003FFE007FFFE0> 64 46 -4 45 66] 117 dc [ 120 72 -3 70 123] 87 dc [<007FC00000000000FFFFC00000000000FFFFC00000000000FFFFC00000000000FFFFC0 0000000000FFFFC0000000000003FFC0000000000001FFC0000000000001FFC000000000 0001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0 000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC000000000 0001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0 000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC00FFC0000 0001FFC07FFFC0000001FFC3FFFFF0000001FFCFFFFFFC000001FFDFF00FFF000001FFFF 8003FF800001FFFE0001FFC00001FFF800007FE00001FFF000007FF00001FFE000003FF8 0001FFE000001FFC0001FFE000001FFC0001FFE000001FFE0001FFE000001FFE0001FFE0 00000FFF0001FFE000000FFF0001FFE000000FFF0001FFE000000FFF0001FFE000000FFF 8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE0 00000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF 8001FFE000000FFF0001FFE000000FFF0001FFE000000FFF0001FFE000001FFE0001FFE0 00001FFE0001FFE000001FFC0001FFE000001FFC0001FFE000003FF80001FFF000003FF8 0001FFF800007FF00001FFFC0000FFE00001FFFE0001FFC00001FFBF0007FF800001FF1F E01FFE000001FE0FFFFFFC000001FC03FFFFF0000001F800FFFF80000001F0001FF80000 00> 64 72 -4 71 66] 98 dc [ 80 71 -4 70 91] 68 dc cmbx10.432 sf [<000E00001E00007E0007FE00FFFE00FFFE00F8FE0000FE0000FE0000FE0000FE0000FE 0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE 0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE 007FFFFE7FFFFE7FFFFE> 24 39 -5 38 34] 49 dc [<1C007F00FF80FF80FF80FF80FF807F001C00> 16 9 -5 8 19] 46 dc [ 64 41 -3 40 65] 77 dc [<003FE00001FFFC0003F07E000FC01F801F800FC03F800FE03F0007E07F0007F07F0007 F07F0007F0FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007 F87F0007F07F0007F03F800FE03F800FE01F800FC00FC01F8007F07F0001FFFC00003FE0 00> 32 27 -2 26 34] 111 dc [<00700000700000700000700000F00000F00000F00001F00003F00003F00007F0001FFF F0FFFFF0FFFFF007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0 0007F00007F00007F00007F03807F03807F03807F03807F03807F03807F03803F87001F8 F000FFE0001F80> 24 38 -1 37 27] 116 dc [<07001FC01FE03FE03FE03FE01FE01FC007000000000000000000000000000000FFE0FF E0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F E00FE00FE00FE00FE0FFFEFFFEFFFE> 16 43 -3 42 20] 105 dc [ 40 27 -1 26 36] 118 dc [<01FF800007FFF0000F81FC001FC0FE001FC07F001FC07F001FC03F800F803F8000003F 8000003F8000003F80000FFF8000FFFF8007FC3F801FE03F803F803F807F803F807F003F 80FE003F80FE003F80FE003F80FE007F80FF007F807F00FFC03F83DFFC0FFF0FFC01FC03 FC> 32 27 -2 26 33] 97 dc [ 40 27 -3 26 38] 110 dc [<0007F0003FFC00FE3E01FC7F03F87F03F87F07F07F07F03E07F00007F00007F00007F0 0007F00007F00007F000FFFFC0FFFFC0FFFFC007F00007F00007F00007F00007F00007F0 0007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0 0007F00007F00007F0007FFF807FFF807FFF80> 24 42 -2 41 21] 102 dc [ 24 27 -2 26 28] 114 dc [ 40 41 -3 40 43] 70 dc [ 40 27 -3 26 38] 117 dc [<003FE00001FFF80003F07E000FE03F001FC01F803F800FC03F800FC07F000FC07F0007 E0FF0007E0FF0007E0FF0007E0FFFFFFE0FFFFFFE0FF000000FF000000FF000000FF0000 007F0000007F8000003F8000E03F8001E01FC001C00FE003C003F81F8000FFFE00001FF0 00> 32 27 -2 26 32] 101 dc [ 16 42 -3 41 20] 108 dc [ 72 41 -1 40 71] 87 dc [ 40 42 -2 41 38] 98 dc cmti10.300 sf [<01FFFC00003C070000380380003801C0003801C0003801C0007003C0007003C0007003 C00070038000E0078000E0070000E00E0000E0380001FFE00001C0000001C0000001C000 0003800000038000000380000003800000070000000700000007000000070000000F0000 00FFE00000> 32 28 -3 27 28] 80 dc [<00F3018F030F06070E0E0C0E1C0E1C0E381C381C381C381C383830383038187818F00F 700070007000E000E0C0C0E1C0C3007E00> 16 26 -3 17 19] 103 dc [<3C1E0780266318C04683A0E04703C0E08E0380E08E0380E00E0380E00E0380E01C0701 C01C0701C01C0701C01C070380380E0388380E0388380E0708380E0710701C0320300C01 C0> 32 18 -4 17 34] 109 dc [<01800380010000000000000000000000000000001C002600470047008E008E000E001C 001C001C0038003800710071007100720072003C00> 16 28 -4 27 13] 105 dc [<3C3C002646004687004707008E07008E07000E07000E07001C0E001C0E001C0E001C1C 00381C40381C40383840383880701900300E00> 24 18 -4 17 23] 110 dc [<1F800380038007000700070007000E000E000E000E001C001C001C001C003800380038 0038007000700070007000E400E400E400E40068003800> 16 29 -4 28 11] 108 dc [<0003F020001E0C60003002E000E003C001C001C0038001C0070000C00E0000801E0000 801C0000803C0000803C000000780000007800000078000000F0000000F0000000F00000 00F0000000F0000400F0000400F0000400F0000800700008007000100038002000180040 000C0180000706000001F80000> 32 30 -6 28 30] 67 dc [<01F007080C08181C3838300070007000E000E000E000E000E000E008E010602030C01F 00> 16 18 -5 17 19] 99 dc [<0003C0000670000C70001C60001C00001C0000380000380000380000380000380003FF 8000700000700000700000700000700000E00000E00000E00000E00000E00001C00001C0 0001C00001C00001C000038000038000038000030000030000070000C60000E60000CC00 00780000> 24 37 1 28 13] 102 dc [<0000180000001800000038000000380000007800000078000000B8000001B800000138 000002380000023C0000041C0000041C0000081C0000181C0000101C0000201C0000201C 00007FFC0000401C0000801C0001801C0001001C0002001C0002001C0004000E000C000E 001C001E00FF00FFC0> 32 29 -2 28 31] 65 dc [<01FE0007F8003E000780002E000F00002E001700002E001700002E002700004E002E00 004E004E00004E004E00004E008E00008E011C00008E011C00008E021C00008E021C0001 070438000107043800010708380001071038000207107000020720700002072070000207 407000040740E000040780E000040700E0000C0700E0001C0601E000FF861FFC00> 40 28 -3 27 37] 77 dc cmr8.300 sf [<001000003800003800003800005C00005C00005C00008E00008E00008E000107000107 0003078002038002038007FFC00401C00401C00800E00800E01800E03800F0FE03FE> 24 23 -1 22 26] 65 dc [<1F4060C0C040C040E000FF007F801FC001E080608060C060E0C09F00> 16 14 -1 13 14] 115 dc [<183C3C1800000000007C1C1C1C1C1C1C1C1C1C1C1C1CFF> 8 23 0 22 10] 105 dc [<080008000800180018003800FF80380038003800380038003800380038403840384038 401C800F00> 16 20 -1 19 14] 116 dc [ 24 23 0 22 20] 104 dc [<1FC0386038301038003803F81E3830387038E039E039E07970FF1F1E> 16 14 -1 13 18] 97 dc [ 24 20 0 13 20] 112 dc [<0FC0186030307038E018FFF8E000E000E000600070083010183007C0> 16 14 -1 13 16] 101 dc [ 24 14 0 13 20] 110 dc [<60F0F070101020204040> 8 10 -3 3 10] 44 dc [ 24 14 -1 13 25] 119 dc [<07C018303018600C600CE00EE00EE00EE00EE00E701C3018183007C0> 16 14 -1 13 18] 111 dc [ 32 14 0 13 30] 109 dc [<03E006700E701C201C001C001C001C001C00FF801C001C001C001C001C001C001C001C 001C001C001C001C00FF80> 16 23 0 22 11] 102 dc [ 16 23 0 22 10] 108 dc [ 24 14 0 13 20] 117 dc [<07F01838303870106000E000E000E000E000600070083008183007C0> 16 14 -1 13 16] 99 dc [ 24 23 0 22 19] 107 dc [ 16 20 -1 13 19] 121 dc [ 16 14 0 13 14] 114 dc [<60F0F060> 8 4 -3 3 10] 46 dc [ 16 23 -1 22 13] 73 dc [<007E00000E00000E00000E00000E00000E00000E00000E00000E0007CE001C3E00300E 00700E00600E00E00E00E00E00E00E00E00E00600E00700E00301E00182E0007CFC0> 24 23 -1 22 20] 100 dc [<0300078007800300000000000000000000001F80038003800380038003800380038003 8003800380038003800380038003804380E300E7007C00> 16 29 2 22 11] 106 dc [<00FC100383300E00B01C0070380030300030700010600010E00010E00000E00000E000 00E00000E00000E000106000107000103000203800201C00400E008003830000FC00> 24 23 -2 22 25] 67 dc [ 32 23 -1 22 32] 77 dc [<03000700FF000700070007000700070007000700070007000700070007000700070007 00070007007FF0> 16 21 -2 20 18] 49 dc [<07C0183030186018E00CE00CE00EE00EE00E601E301E186E0F8E000E000C001C701870 18603020C01F80> 16 21 -1 20 18] 57 dc [<07E018302018600C600C700C78183E101F600FC00FF018F8607C601EC00EC006C006C0 04600C38300FE0> 16 21 -1 20 18] 56 dc [<01F00608080C181C301C70006000E000E3E0EC30F018F00CE00EE00EE00E600E600E30 0C3018183007C0> 16 21 -1 20 18] 54 dc [<00FC000782000E07001C07001C02001C00001C00001C00001C0000FFFF001C07001C07 001C07001C07001C07001C07001C07001C07001C07001C07001C07001C0700FF1FE0> 24 23 0 22 20] 12 dc [ 16 14 -1 13 19] 118 dc cmr10.300 sf [<08081010202040404040808080808080B0B0F8F878783030> 16 12 -6 28 21] 92 dc [<6060F0F0F8F8686808080808080810101010202040408080> 16 12 -1 28 21] 34 dc [<007FC001C1C00303C00703C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFFF C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01 C00E01C00E01C00E01C00E01C07FCFF8> 24 29 0 28 23] 13 dc [<1FFF00F800780078007800780078007800780078007800780078007800780078007800 780078007800787078F878F878F878F0F040E021C01F00> 16 29 -1 27 21] 74 dc 12 @bop1 cmr6.300 sf 223 2783(1)s cmr7.300 sf 1824 2221(1)s cmbx10.622 sf 177 381(Chapter)s 34(1)h cmtt10.300 sf 567 1665(@*@*)s 479(@*)h 304 1765(@A)s 48(@E)h 1065 2186(WEB)s cmbx10.746 sf 177 617(F)s -10(unnelW)h -10(eb)h 41(Design)h cmbx10.432 sf 177 2066(1.1)s 70(Motiv)h -4(ation)h 22(for)h 24(F)h -6(unnelW)h -6(eb)h cmbx10.300 sf 1059 911(F)s -4(unnelW)h -4(eb)h 16(V1)h 1577 2236([Ben)s -1(tl)h -1(ey86])h 1378 2286([Kn)s -1(uth83])h cmti10.300 sf 442 2236(Pr)s -2(o)h -2(gr)h -2(amming)h 17(Pe)h -2(arls)h 215(Communic)h -2(ations)h 18(of)h 18(the)h 18(A)h -1(CM)h cmr8.300 sf 241 2795(As)s 14(it)h 14(happ)h 1(ens)h -1(,)h 13(this)h 13(w)h -1(as)h 14(somewhat)h 13(of)h 13(a)h 14(luc)h -1(ky)h 12(encoun)h -1(ter)h -1(.)h 21(I)h 14(had)h 13(only)h 13(just)h 13(joined)h 12(the)h 13(A)h -1(CM)h 15(and)h 13(the)h 14(Ma)h -1(y)h 13(1986)h 177 2835(issue)s 11(of)h 11(CA)h -1(CM)h 14(in)h 11(whic)h -1(h)h 11(the)h 10(column)h 10(app)h 1(eare)h -1(d)h 10(w)h -1(as)h 12(the)h 10(\014rst)h 11(issue)h 11(I)h 11(receiv)h -1(ed.)h cmr10.300 sf 177 861(This)s 18(c)h -1(hapter)h 20(con)h -1(tains)h 18(notes)h 19(on)h 18(the)h 19(design)h 18(of)h 18(F)h -3(unnelW)h -3(eb.)h 31(These)h 19(notes)h 19(w)h -1(ere)h 20(not)h 18(created)h 20(\\from)h 177 911(scratc)s -1(h",)h 17(as)h 16(the)h 16(original)h 14(v)h -1(ersion)h 16(of)h 15(F)h -3(unnelW)h -3(eb)h 15(\()h 313(\))h 16(w)h -1(as)h 16(designed)h 16(and)h 16(constructed)h 177 961(in)s 13(a)h 14(h)h -1(urry)h 13(late)h 14(in)h 13(1986,)h 12(and)h 13(no)h 14(design)h 13(notes)h 15(w)h -1(ere)h 14(ev)h -1(er)h 15(recorded.)h 19(These)h 15(notes)h 14(are)h 14(in)h 13(fact)h 14(the)h 14(result)h 177 1011(of)s 14(a)h 15(complete)h 14(review)h 15(of)h 14(the)h 15(F)h -3(unnelW)h -3(eb)h 14(design)h 15(that)h 15(to)h 1(ok)h 14(place)h 15(in)h 14(late)h 15(1991)h 13(as)h 15(part)h 15(of)h 14(the)h 15(pro)h 1(cess)h 177 1061(of)s 13(upgrading)h 14(it)h 13(for)h 14(public)h 13(release.)h 177 1139(Throughout)s 12(the)h 13(design)h 13(pro)h 1(cess)h 14(I)h 13(tried)h 13(to)h 12(stic)h -1(k)h 12(to)h 13(the)h 13(principles)h 13(of)h 11(simplicit)h -1(y)h 10(and)h 12(clarit)h -1(y)h -3(.)h 17(As)h 13(a)h 12(rule,)h 177 1188(it)s 17(w)h -1(as)h 18(considered)h 19(more)h 17(imp)h 1(ortan)h -1(t)h 16(that)h 18(a)h 17(feature)h 18(b)h 1(e)h 19(simple)h 16(and)h 17(not)h 18(allo)h -1(w)h 16(the)h 18(user)h 19(to)h 18(outsmart)h 177 1238(himself)s 15(than)h 16(it)h 16(w)h -1(as)h 16(for)h 16(the)h 17(feature)h 16(to)h 17(b)h 1(e)h 16(particularly)h 16(crisp.)h 26(F)h -3(or)h 15(example,)h 15(the)h 17(F)h -3(unnelW)h -3(eb)h 16(macro)h 177 1288(calling)s 13(syn)h -1(tax)h 13(is)h 14(not)h 14(as)h 14(crisp)h 14(as)h 14(the)h 15(C)h 14(syn)h -1(tax,)h 13(but)h 14(is)h 14(more)h 13(visible.)h 177 1366(T)s -3(o)h 15(some)h 14(exten)h -1(t)h 16(the)h 16(design)h 15(review)h 16(w)h -1(as)h 15(in\015uenced)h 17(b)h -1(y)h 15(the)h 16(requiremen)h -1(ts)h 15(of)h 15(bac)h -1(kw)h -1(ard)h 15(compatibil)h -1(it)h -1(y)h -4(.)h 177 1416(During)s 12(the)h 13(review)h 13(it)h 13(w)h -1(as)h 12(hard)h 13(not)h 12(to)h 13(think)h 12(ab)h 1(out)h 12(all)h 12(the)h 13(source)h 14(\014les)h 12(in)h 13(F)h -3(unnelW)h -3(eb)h 12(V1)h 12(format)h 11(that)h 177 1466(I)s 14(ha)h -1(v)h -1(e)h 13(written)h 15(o)h -1(v)h -1(er)h 14(the)h 14(y)h -1(ears)h 14(that)h 14(w)h -1(ould)h 13(ha)h -1(v)h -1(e)h 14(to)h 13(b)h 1(e)h 15(con)h -1(v)h -1(erted)h 15(w)h -1(ere)h 14(I)h 14(to)h 14(signi\014can)h -1(tly)h 12(deviate)h 15(from)h 177 1516(the)s 16(old)h 15(input)h 15(language.)h 22(Luc)h -1(kily)h 14(it)h 15(turned)h 17(out)h 15(that)h 16(there)h 16(w)h -1(as)h 16(little)h 14(clash)h 16(b)h 1(et)h -1(w)h -1(een)h 17(these)h 17(in)h -1(terests,)h 177 1565(and)s 17(the)h 18(resulting)h 17(design)h 17(is)h 17(b)h 1(oth)h 17(clean)h 17(and)h 17(do)h 1(es)h 18(not)h 17(require)h 18(m)h -1(uc)h -1(h)h 16(con)h -1(v)h -1(ersion)h 17(of)h 16(old)h 17(source)h 18(\014les.)h 177 1615(The)s 17(main)h 14(revision)h 16(is)h 17(in)h 16(the)h 17(do)h 1(cumen)h -1(t)h 15(structuring)h 18(facilit)h -1(y)h -3(.)h 23(F)h -3(unnelW)h -3(eb)h 16(V1)h 16(had)h 16(just)h 17(t)h -1(w)h -1(o)h 16(lev)h -1(els)h 16(of)h 177 1665(heading)s 13(indicated)h 13(b)h -1(y)h 114(\(for)h 13(ma)h 2(jor)h 11(headings\))h 14(and)h 70(\(for)h 13(minor)h 11(headings\).)h 18(This)h 13(sc)h -1(heme)h 14(\(whic)h -1(h)h 177 1715(w)s -1(as)h 16(copied)h 16(from)h 14(Kn)h -1(uth's)h 16(W)h -3(eb\))h 15(has)h 16(b)h 1(een)h 17(replaced)h 17(b)h -1(y)h 15(a)h 16(hierarc)h -1(hical)h 15(sc)h -1(heme)h 16(of)h 15(\014v)h -1(e)h 16(heading)h 16(lev)h -1(els)h 177 1765(lev)s -1(els)h 14(\()h 44(.)h 7(.)h 7(.)h 42(\).)h 177 1843(This)s 18(c)h -1(hapter)h 19(is)h 17(rather)h 19(unstructure)h 1(d,)h 20(acting)h 17(as)h 18(it)h 18(has,)h 18(mainly)h 16(as)h 18(a)h 17(dumping)h 16(ground)h 18(for)h 17(random)h 177 1893(ideas)s 14(ab)h 1(out)h 14(F)h -3(unnelW)h -3(eb.)h 177 2186(During)s 16(1986,)h 15(I)h 16(w)h -1(as)h 16(exp)h 1(osed)h 18(to)h 16(Donald)h 15(Kn)h -1(uth's)h 98(literate)h 17(programm)h -1(i)h -1(ng)h 14(system)h 16(in)h 16(the)h 17(form)h 14(of)h 177 2236(Jon)s 17(Ben)h -1(tley's)h 405(column)h 15(in)h 800(.)h 44(This)h 177 2286(prompted)s 17(me)h 16(to)h 17(obtain)h 17(a)h 17(cop)h -1(y)h 17(of)h 17(the)h 18(rep)h 1(ort)h 18(on)h 17(the)h 18(W)h -3(eb)h 17(system)h 226(and)h 17(to)h 17(try)h 18(out)h 17(the)h 177 2336(program)s 12(whic)h -1(h)h 14(had)h 14(b)h 1(een)h 15(installed)h 13(on)h 14(the)h 14(lo)h 1(cal)h 13(V)h -3(axen.)h 177 2414(W)s -3(eb)h 14(w)h -1(as)h 13(the)h 15(b)h 1(est)h 14(system)h 14(that)h 14(I)h 13(had)h 14(seen)h 15(for)h 13(pro)h 1(ducing)h 14(prin)h -1(ted)h 14(and)h 14(online,)h 13(inline)h 12(do)h 1(cumen)h -1(tation.)h 177 2464(T)s -3(o)h 16(me)h 16(the)h 18(most)h 16(extraordinary)h 17(asp)h 1(ect)h 18(of)h 17(the)h 17(system)h 17(w)h -1(as)h 17(its)h 17(success)h 20(despite)h 18(the)h 17(fact)h 17(that)h 17(it)h 17(had)h 177 2514(b)s 1(een)h 18(built)h 16(in)h -1(to)h 17(the)h 17(horribly)h 17(an)h -1(tiquated)h 16(\014le/batc)h -1(h)h 17(pro)h 1(cessing)h 18(systems)h 17(that)h 17(w)h -1(e)h 18(all)h 15(kno)h -1(w)h 17(and)h 16(lo)h -1(v)h -1(e)h 177 2563(\(and)s 15(use\).)h 20(I)h 15(had)h 14(imagi)h -1(ned)h 13(sophisticated)h 15(do)h 1(cumen)h -1(tation)h 14(systems)h 14(b)h 1(efore)h 15(this)h 15(time,)h 13(but)h 15(had)h 14(alw)h -1(a)h -1(ys)h 177 2613(assumed)s 16(that)h 17(they)h 17(w)h -1(ould)h 16(b)h 1(e)h 18(parts)h 17(of)h 16(complex)h 15(programm)h -1(ing)h 14(en)h -1(vironmen)h -1(ts.)h 26(Kn)h -1(uth)h 17(sho)h -1(w)h -1(ed)h 17(that,)h 177 2663(to)s 16(some)h 14(exten)h -1(t,)h 17(it)h 15(can)h 16(b)h 1(e)h 16(done)h 16(using)h 15(1960s)h 15(soft)h -1(w)h -1(are)h 16(tec)h -1(hnology)h 15(\(excluding)h 16(the)h 16(1980s)h 15(t)h -1(yp)h 1(esetting)h 177 2713(tec)s -1(hnology\).)h 18(This)h 14(w)h -1(as)h 14(exciting.)h 1042 2940(11)s 709 2 177 2757 r 12 @eop 13 @bop0 cmsy10.300 sf [<07E01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF807E0> 16 16 -2 17 21] 15 dc cmbx10.432 sf [<00FF800003FFF0000FFFFC003F03FF007C00FF807C007FC0FE007FC0FF003FE0FF003F E0FF003FE0FF001FE07E001FE03C003FE000003FE000003FC000003FC000007F8000007F 800000FF000001FE000001FC000003F0000007E000000FC000001F0000003E0000007C00 E0007800E000F000E001E001C0038001C0070001C00FFFFFC01FFFFFC03FFFFFC07FFFFF C0FFFFFF80FFFFFF80FFFFFF80> 32 39 -3 38 34] 50 dc [ 24 41 -2 40 26] 73 dc [<00003FF80000003FF80000003FF800000003F800000003F800000003F800000003F800 000003F800000003F800000003F800000003F800000003F800000003F800000003F80000 0003F800001FE3F80000FFFBF80003F03FF8000FE00FF8001FC007F8003F8003F8003F80 03F8007F8003F8007F0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003 F800FF0003F800FF0003F800FF0003F800FF0003F8007F0003F8007F0003F8003F8003F8 003F8007F8001FC00FF8000FE01FF80003F03FFF8000FFF3FF80003FC3FF80> 40 42 -2 41 38] 100 dc cmtt10.300 sf [<001F00007F8000FF8001E78001C30001C00001C0007FFF00FFFF00FFFF0001C00001C0 0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0003FFE007FFF 003FFE00> 24 25 -1 24 22] 102 dc [<00C00001C00001C00001C00007F0001FFC003FFF007DCF00F1C780E1C780E1C780E1C7 80F1C30079C0007FC0001FF00007FC0001FE0001CF0001C780F1C380F1C380F1C380E1C7 80F1C78079DF003FFE001FFC0007E00001C00001C00000C000> 24 32 -2 28 22] 36 dc [<000180000780001F80003E0000F80001F00007C0000F80003E0000FC0000F00000FC00 003E00000F800007C00001F00000F800003E00001F80000780000180> 24 21 -2 22 22] 60 dc [<07E3001FFF007FFF00781F00F00F00E00700E00700E00000F000007800007F80001FF0 0007FC0000FE00000F00000780000380000380E00380E00380F00780F80F00FFFE00FFFC 00C7F000> 24 25 -2 24 22] 83 dc [ 24 21 -2 22 22] 62 dc [<7FFF00FFFF80FFFF80000000000000000000000000000000FFFF80FFFF807FFF00> 24 11 -2 17 22] 61 dc [<001F80007F8001FF8001E00001C00001C00001C00001C00001C00001C00001C00001C0 0001C00003C0007F8000FF0000FF00007F800003C00001C00001C00001C00001C00001C0 0001C00001C00001C00001C00001E00001FF80007F80001F80> 24 32 -2 28 22] 123 dc [ 24 3 -2 13 22] 45 dc [ 24 32 -2 28 22] 125 dc [<1FFC003FFE007FFF00780F00F00780E00380E00380E00380E00380E00380E00380E003 80E00380E00380E00380E00380E00380E00380E00380F00780F00780780F007FFF003FFE 001FFC00> 24 25 -2 24 22] 79 dc [<7FFF80FFFF80FFFF80E00700E00F00E01E00E01C00003C0000780000700000F00001E0 0001C00003C0000780000700000F00001E03801C03803C0380780380700380FFFF80FFFF 80FFFF80> 24 25 -2 24 22] 90 dc [<03E30007FF001FFF003E1F003C0F00780F00780700700700F00000E00000E00000E000 00E00000E03F80E07FC0E03F80F00700700700780F00780F003C0F003E1F001FFF0007FF 0003E700> 24 25 -2 24 22] 71 dc cmr10.300 sf [<007E1F0001C1B1800303E3C00703C3C00E03C1800E01C0000E01C0000E01C0000E01C0 000E01C0000E01C000FFFFFC000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0 000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0 000E01C0007F87FC00> 32 29 0 28 24] 11 dc 13 @bop1 cmsy10.300 sf 239 247(\017)s 239 327(\017)s 239 507(\017)s 239 686(\017)s 239 816(\017)s 239 896(\017)s 239 1026(\017)s 239 1156(\017)s cmbx10.432 sf 177 1990(1.2)s 70(Inden)h -2(tation)h cmbx10.300 sf 1346 2103(inden)s -1(t)h -1(ed)h 12(macro)h 13(call)h 1169 2153(no)s 13(inden)h -2(tat)h -1(ion)h 20(blank)h 12(inden)h -1(t)h -1(ati)h -1(on)h 177 2202(text)s 15(inden)h -1(t)h -1(ati)h -1(on)h 177 2835(No)s 16(inden)h -1(t)h -1(ati)h -1(on:)h cmtt10.300 sf 520 1461(tt)s 21(font)h 177 2308(@$@==)s -1(@{@-)h 177 2358(Aardvark)s 177 2408(Walrus@})s 177 2508(@O@=)s -1(=@{@-)h 177 2557(Zebra@)h 177 2607(Giraffe)s 177 2657(@})s 1066 2763(Sloth)s cmr10.300 sf 177 42(The)s 16(W)h -3(eb)h 16(system)h 15(w)h -1(as)h 16(en)h -1(ticing)h 15(and)h 16(promising)h 13(but)h 16(to)h 16(me)h 14(su\013ered)h 18(from)h 14(man)h -1(y)h 14(dra)h -1(wbac)h -1(ks,)h 16(man)h -1(y)h 13(of)h 177 91(whic)s -1(h)h 16(Kn)h -1(uth)h 16(had)h 16(promoted)h 15(as)h 16(adv)h -2(an)h -1(tages.)h 23(The)h 17(follo)h -1(wi)h -1(ng)h 14(highly)h 15(sub)h 2(jectiv)h -1(e)h 17(list)h 15(of)h 15(disadv)h -2(an)h -1(tages)h 177 141(formed)s 13(a)h 13(springb)h 1(oard)h 14(for)h 14(the)h 14(construction)h 15(of)h 14(F)h -3(unnelW)h -3(eb.)h 281 247(W)s -3(eb)h 13(can)h 15(only)h 13(pro)h 1(cess)h 15(P)h -1(ascal)h 14(programs.)h 281 327(W)s -3(eb)h 16(can)h 17(pro)h 1(duce)h 18(only)h 16(one)h 17(output)h 16(\014le.)h 27(In)h 16(man)h -1(y)h 15(instances)h 18(it)h 16(is)h 16(desirable)h 17(to)h 17(generate)h 18(more)h 281 377(than)s 18(one)h 19(output)h 19(\014le.)h 31(F)h -3(or)h 18(example,)h 18(when)h 19(programm)h -1(ing)h 16(in)h 18(Ada,)h 19(it)h 18(is)h 18(desirable)h 19(to)h 18(write)h 19(a)h 281 427(pac)s -1(k)h -2(age)h 13(sp)h 1(eci\014cation)h 15(and)h 14(a)h 13(pac)h -1(k)h -2(age)h 14(b)h 1(o)h 1(dy)h 14(together)h 15(in)h 13(the)h 15(same)h 13(\014le.)h 281 507(W)s -3(eb)h 15(enforces)h 16(Kn)h -1(uth's)h 15(individual)h 13(st)h -1(yle)h 16(of)h 14(inden)h -1(tation.)h 21(W)h -3(eb)h 15(supplies)h 15(comm)h -1(ands)h 14(to)h 15(o)h -1(v)h -1(er-ride)h 281 557(the)s 16(automatic)h 14(inden)h -1(tation)h 15(but)h 15(it)h 15(is)h 16(an)h 15(uphill)h 14(battle)h 16(and)h 15(the)h 16(co)h 1(de)h 17(b)h 1(ecomes)h 15(clogged)h 16(up)h 15(with)h 281 606(format)s 12(directiv)h -1(es.)h 281 686(W)s -3(eb)h 20(do)h 1(es)h 22(not)h 21(cater)h 21(for)h 21(non-standard)h 21(P)h -1(ascal)h 20(programs.)h 38(In)h 21(particular,)h 21(all)h 20(iden)h -1(ti\014ers)h 21(are)h 281 736(truncated)s 15(to)h 14(ab)h 1(out)h 14(eigh)h -1(t)h 13(c)h -1(haracters.)h 281 816(W)s -3(eb)h 13(formats)h 13(the)h 14(program)h 13(output)h 14(\014le)h 14(in)h -1(to)h 13(a)h 13(form)h 13(that)h 13(is)h 14(unreadable)h 14(to)h 14(h)h -1(umans.)h 281 896(W)s -3(eb)h 11(do)h 1(es)h 13(not)h 12(pro)h -1(vide)h 12(an)h 11(include)h 12(facilit)h -1(y)h -3(.)h 15(This)h 12(w)h -1(as)h 12(considered)h 13(a)h 12(feature)h 12(essen)h -1(tial)h 13(for)h 11(supp)h 1(ort-)h 281 946(ing)s 13(macro)h 13(libraries.)h 281 1026(W)s -3(eb)h 13(pro)h -1(vides)h 14(macros)h 13(with)h 13(at)h 14(most)h 12(one)h 14(parameter.)h 18(Kn)h -1(uth)h 14(describ)h 1(es)h 16(a)h 13(hac)h -1(k)h 14(that)h 14(can)h 14(extract)h 281 1076(a)s 11(m)h -1(ultiple)h 10(parameter)h 11(macro)h 11(facilit)h -1(y)h 10(from)h 10(a)h 11(single)h 11(parameter)h 12(one,)h 12(but)h 12(it)h 11(is)h 11(hardly)h 12(satisfactory)h -3(.)h 281 1156(W)s -3(eb)h 13(do)h 1(es)h 15(not)h 14(pro)h -1(vide)h 14(conditionals.)h 177 1262(Most)s 19(of)h 17(these)h 20(ob)h 2(jections)h 19(b)h 1(oiled)h 17(do)h -1(wn)h 18(to)h 18(t)h -1(w)h -1(o)h 18(p)h 1(oin)h -1(ts:)h 27(that)h 18(W)h -3(eb)h 18(is)h 18(far)h 18(to)h 1(o)h 18(sp)h 1(ecialized,)h 20(and)h 18(that)h 177 1312(Kn)s -1(uth's)h 19(\\Occam's)h 18(Razor")h 19(had)h 19(cut)h 19(to)h 1(o)h 19(far.)h 33(What)h 18(I)h 19(w)h -1(an)h -1(ted)h 19(w)h -1(as)h 19(a)h 18(do)h 1(cumen)h -1(tation)h 18(system)h 19(that)h 177 1362(emplo)s -1(y)h -1(ed)h 11(all)h 11(the)h 13(same)h 12(principles)h 13(as)h 12(W)h -3(eb)h 12(but)h 13(w)h -1(as)h 13(far)h 12(more)h 11(general.)h 18(The)h 13(result)h 13(w)h -1(as)h 12(F)h -3(unnelW)h -3(eb)h 12(V1,)h 177 1412(whic)s -1(h)h 14(can)h 14(pro)h 1(cess)h 16(programs)h 12(in)h 13(an)h -1(y)h 14(language)h 13(or)h 14(an)h -1(y)h 13(com)h -1(binatio)h -1(n)h 12(of)h 13(languages)h 14(at)h 13(the)h 15(cost)h 14(of)h 13(t)h -1(yp)h 1(e-)h 177 1461(setting)s 14(the)h 15(text)h 14(in)h 167(.)h 177 1533(Originally)s -3(,)h 13(it)h 15(w)h -1(as)h 15(in)h -1(tended)h 16(that)h 15(F)h -3(unnelW)h -3(eb)h 14(w)h -1(ould)h 15(b)h 1(e)h 16(t)h -1(yp)h 1(esetter)h 17(indep)h 1(enden)h -1(t)h 17(as)h 15(w)h -1(ell)h 14(as)h 16(language)h 177 1583(indep)s 1(enden)h -1(t.)h 23(It)h 15(w)h -1(as)h 14(in)h -1(tended)h 16(that)h 15(a)h 14(format)h 13(\014le)h 15(consisting)h 15(of)h 15(a)h 14(set)h 16(of)h 14(pro)h 1(ductions)h 16(describing)h 15(ho)h -1(w)h 177 1633(the)s 16(do)h 1(cumen)h -1(t)h 14(\014le)h 16(w)h -1(as)h 15(to)h 14(b)h 1(e)h 16(formatted)h 14(w)h -1(ould)h 14(b)h 1(e)h 16(handed)h 16(to)h 14(F)h -3(unnelW)h -3(eb)h 15(along)h 14(with)h 15(the)h 15(input)h 15(\014le.)h 177 1683(In)s 19(the)h 19(end,)h 19(time)h 17(pressure)h 1(s)h 20(forced)h 19(me)h 18(to)h 18(tak)h -1(e)h 18(the)h 19(bac)h -1(k)h 19(do)h 1(or)h 18(and)h 18(hac)h -1(k)h 19(up)h 18(a)h 18(T)h 1627 1692(E)s 1650 1683(X)s 19(do)h 1(cumen)h -1(t)h 18(\014le)h 177 1732(generator.)s 19(This)h 14(comprom)h -1(ise)h 12(has)h 14(found)h 13(its)h 14(w)h -1(a)h -1(y)h 13(in)h -1(to)h 13(F)h -3(unnelW)h -3(eb)h 13(V3.0)h 13(whic)h -1(h)h 13(is)h 14(still)h 12(relian)h -1(t)h 14(on)h 13(T)h 1883 1741(E)s 1906 1732(X,)s 177 1782(although)s 12(V3.0)h 12(at)h 13(least)h 13(encourages)h 14(input)h 13(\014les)h 13(to)h 13(b)h 1(e)h 13(t)h -1(yp)h 1(esetter)h 15(indep)h 1(enden)h -1(t.)h 19(It)h 13(is)h 13(hop)h 1(ed)h 13(that)h 13(future)h 177 1832(v)s -1(ersions)h 15(of)h 13(F)h -3(unnelW)h -3(eb)h 13(will)h 13(include)h 14(more)h 12(sophisticated)h 15(t)h -1(yp)h 1(esetting)h 15(facilities.)h 177 2103(A)s 12(macro)h 11(call)h 12(that)h 12(do)h 1(es)h 13(not)h 12(app)h 1(ear)h 13(at)h 12(the)h 13(left)h 11(margin)h 11(is)h 12(called)h 12(an)h 431(and)h 12(seems)h 177 2153(to)s 11(lead)h 12(to)h 11(three)h 12(di\013eren)h -1(t)h 13(alternativ)h -1(es)h 11(for)h 11(its)h 12(expansion:)h 319(,)h 377(,)h 9(and)h 517 2202(.)s 16(Here)h 15(are)h 14(examples)h 13(of)h 13(eac)h -1(h)h 15(kind)h 13(of)h 13(inden)h -1(tation.)h 18(First)h 14(the)h 14(example)h 13(problem.)h 177 2763(There)s 15(are)h 15(three)h 15(w)h -1(a)h -1(ys)h 13(that)h 14(the)h 15(second)h 15(line)h 13(of)h 13(the)h 138(macro)h 12(can)h 14(b)h 1(e)h 15(inden)h -1(ted.)h 1042 2940(12)s 13 @eop 14 @bop0 cmti10.300 sf [<001F80000380000380000700000700000700000700000E00000E00000E00000E0003DC 00063C000C3C00181C00383800303800703800703800E07000E07000E07000E07000E0E2 00C0E200C0E20061E4006264003C3800> 24 29 -5 28 21] 100 dc cmtt10.300 sf [ 24 25 -1 24 22] 77 dc [<00E001E007C007000F001E003C0038007800700070007000F000E000E000E000E000E0 00E000E000F000700070007000780038003C001E000F00070007C001E000E0> 16 33 -6 28 22] 40 dc [ 16 33 -4 28 22] 41 dc [<7F1FC07F3FC07F1FC00F1C00073C0003B80003F00001F00000E00001E00001F00003B8 00073C00071C000E0E007F1FC0FF3FE07F1FC0> 24 18 -1 17 22] 120 dc [<70F8F8F870000000000000000070F8F8F870> 8 18 -8 17 22] 58 dc [<01C00001C00001C00001C00001C00001C00001C00001C000FFFF80FFFF80FFFF8001C0 0001C00001C00001C00001C00001C00001C00001C000> 24 19 -2 21 22] 43 dc [<387C7C7C380000000000000000387C7C7C3C1C3C38F8F060> 8 24 -7 17 22] 59 dc 14 @bop1 cmti10.300 sf 1834 2002(clarity)s 1147 2051(danger)s cmbx10.300 sf 177 252(Blank)s 15(inden)h -1(t)h -1(ati)h -1(on:)h 177 572(T)s -4(ext)h 16(inden)h -2(tati)h -1(on)h -1(:)h cmtt10.300 sf 286 42(ZebraAardvark)s 286 91(Walrus)s 286 141(Giraffe)s 286 362(ZebraAardvark)s 395 412(Walrus)s 286 462(Giraffe)s 286 683(ZebraAardvark)s 286 733(ZebraWalrus)s 286 783(Giraffe)s 1530 1043(--)s 177 2271(--Misuse)s 20(of)h 22(blank)h 20(\(and)h 21(no\))h 22(indentation)h -1(.)h 177 2320(--@)s 340 2490(--)s 670(@)h 703 2539(--)s 1146 2589(@)s 177 2785(--Misuse)s 20(of)h 22(text)h 21(indentation)h -1(:)h 177 2835(a++;)s 21(@)h cmr10.300 sf 177 893(No)s 16(inden)h -1(tation)h 15(is)h 16(useful)h 16(where)h 18(the)h 16(user)h 17(wishes)h 17(to)h 16(deal)h 16(with)h 16(the)h 16(output)h 16(stream)h 16(as)h 16(a)h 16(pure)h 17(output)h 177 943(stream.)s 17(Blank)h 11(inden)h -1(tation)h 11(is)h 11(useful)h 11(when)h 12(the)h 12(user)h 13(wishes)h 12(to)h 11(generate)h 12(inden)h -1(ted)h 12(computer)h 11(programs.)h 177 993(T)s -3(ext)h 15(inden)h -1(tation)h 14(is)h 14(useful)h 15(where)h 16(the)h 15(user)h 16(wishes)h 15(to)h 15(pre\014x)h 15(eac)h -1(h)h 16(line)h 14(of)h 14(an)h 14(en)h -1(tire)h 16(macro)h 13(in)h -1(v)h -1(o)h 1(cation)h 177 1043(with)s 9(a)h 10(string.)h 16(This)h 10(can)h 9(b)h 1(e)h 11(useful)h 9(for)h 9(commen)h -1(ting)h 7(out)h 10(co)h 1(de)h 10(\(e.g.)h 9(in)h 9(Ada)h 9(using)h 54(\),)h 9(and)h 10(for)h 9(prep)h 1(ending)h 177 1092(things)s 14(lik)h -1(e)h 13(a)h 14(dollar)h 12(sign)h 14(at)h 14(the)h 14(start)h 15(of)h 13(eac)h -1(h)h 14(line)h 14(an)h 13(a)h 14(V)h -5(AX)h 15(VMS)h 14(DCL)h 13(script)h 15(comm)h -1(and)h 12(\014le.)h 177 1168(F)s -3(unnelW)h -3(eb)h 13(V1)h 14(pro)h -1(vided)h 14(a)h 13(c)h -1(hoice)h 15(of)h 13(no)h 14(inden)h -1(tation)h 13(or)h 14(blank)h 13(inden)h -1(tation.)h 17(The)h 14(c)h -1(hoice)h 15(w)h -1(as)h 14(made)h 12(in)h 177 1218(the)s 15(comm)h -1(and)h 12(line)h 13(and)h 14(could)h 14(not)h 13(b)h 1(e)h 15(o)h -1(v)h -1(erridden.)h 177 1294(The)s 14(design)h 15(questions)h 14(are)h 14(as)h 14(follo)h -1(ws:)h 228 1414(1.)s 20(Whic)h -1(h)h 13(of)h 14(the)h 14(three)h 15(kinds)h 14(of)h 13(inden)h -1(tation)h 14(should)h 13(F)h -3(unnelW)h -3(eb)h 14(supp)h 1(ort?)h 228 1499(2.)s 20(What)h 13(should)h 14(b)h 1(e)h 15(the)h 14(gran)h -1(ularit)h -1(y)h 13(of)h 13(sw)h -1(apping)h 13(b)h 1(et)h -1(w)h -1(een)h 15(inden)h -1(tation)h 14(mo)h 1(des?)h 228 1585(3.)s 20(Are)h 15(particular)h 13(inden)h -1(tation)h 14(mo)h 1(des)h 13(dangerous?)h 228 1671(4.)s 20(Is)h 14(the)h 15(presence)h 16(of)h 13(particular)h 14(com)h -1(binatio)h -1(ns)h 13(of)h 13(inden)h -1(tation)h 13(mo)h 1(des)h 13(confusing)h 14(to)h 14(the)h 14(user?)h 228 1756(5.)s 20(Ho)h -1(w)h 13(and)h 14(when)h 15(should)h 13(the)h 15(c)h -1(hoice)h 14(of)h 13(inden)h -1(tation)h 14(b)h 1(e)h 14(sp)h 1(eci\014ed?)h 177 1876(All)s 17(sorts)h 18(of)h 17(sc)h -1(hemes)h 17(w)h -1(ere)h 19(considered,)h 19(including)h 16(a)h 17(\014nely)h 17(grained)h 17(system)h 18(in)h 16(whic)h -1(h)h 18(the)h 18(user)h 18(could)h 177 1926(sp)s 1(ecify)h 13(at)h 13(the)h 13(p)h 1(oin)h -1(t)h 12(of)h 12(call)h 12(whic)h -1(h)h 12(inden)h -1(tation)h 12(mo)h 1(de)h 11(should)h 13(b)h 1(e)h 13(used)h 13(for)h 13(the)h 13(called)h 12(macro)h 11(expansion.)h 177 2002(After)s 10(a)h 9(lot)h 9(of)h 9(though)h -1(t,)h 9(the)h 11(domi)h -1(nan)h -1(t)h 8(factor)h 9(that)h 10(should)h 9(a\013ect)h 10(the)h 10(design)h 10(w)h -1(as)h 9(decided)h 10(to)h 10(b)h 1(e)h 10(the)h 177 2051(in)s 14(the)h 14(user's)h 15(mind)h 12(of)h 13(the)h 15(inden)h -1(tation)h 13(facilit)h -1(y)h 12(and)h 14(the)h 150(asso)h 1(ciated)h 14(with)h 14(misunderstanding)h 13(it.)h 177 2101(Here)s 12(are)h 11(t)h -1(w)h -1(o)h 10(examples)h 9(that)h 11(sho)h -1(w)h 10(ho)h -1(w)h 10(easily)h 10(a)h 11(confusion)h 10(or)h 10(misunderstanding)h 10(of)h 10(the)h 11(inden)h -1(ting)h 10(b)h 1(eing)h 177 2151(used)s 15(can)h 14(cause)h 15(danger.)h 18(The)h 15(\014rst)h 14(example)h 13(sho)h -1(ws)h 14(ho)h -1(w)h 14(blank)h 13(or)h 14(no)h 13(inden)h -1(tation)h 13(migh)h -1(t)h 12(b)h 1(e)h 15(misused.)h 177 2440(Here)s 19(the)h 19(user)h 19(has)h 19(assumed)h 17(that)h 18(text)h 19(inden)h -1(tation)h 17(is)h 18(in)h 18(action)h 18(and)h 18(has)h 18(placed)h 18(an)h 18(Ada)h 18(comm)h -1(en)h -1(t)h 177 2490(sym)s -1(b)h 1(ol)h 12(\\)h 44(")h 12(b)h 1(efore)h 14(the)h 14(in)h -1(v)h -1(o)h 1(cation)h 12(of)h 13(the)h 14(macro)h 221(in)h 13(the)h 14(hop)h 1(e)h 14(that)h 13(the)h 14(en)h -1(tire)h 14(text)h 14(of)h 13(the)h 177 2539(macro)s 10(w)h -1(ould)h 11(b)h 1(e)h 11(pre\014xed)h 13(b)h -1(y)h 11(\\)h 44(".)h 16(The)h 12(result)h 12(could)h 11(b)h 1(e)h 12(passed)h 12(b)h -1(y)h 11(the)h 12(compiler)h 9(whic)h -1(h)h 12(w)h -1(ould)h 10(activ)h -2(ate)h 177 2589(all)s 13(but)h 14(the)h 14(\014rst)h 15(statemen)h -1(t)h 14(in)h 13(the)h 15(expansion)h 14(of)h 13(macro)h 211(.)h 177 2665(The)s 14(next)h 15(example)h 12(demonstrates)h 15(ho)h -1(w)h 13(text)h 15(inden)h -1(tation)h 13(could)h 14(b)h 1(e)h 14(misused.)h 1042 2940(13)s 14 @eop 15 @bop0 /cmbx12.300 127 @newfont cmbx10.432 sf [<007F800003FFF00007FFFC001F81FE001F00FF003F80FF003F807F803FC07F803F807F 803F807F801F007F800000FF800000FF000000FF000001FE000003F8000007F00000FFC0 0000FFF0000001FC000000FF0000007F8000007FC000003FC000003FE000003FE000003F E03C003FE07E003FE0FF003FE0FF003FE0FF003FC0FF007FC0FE007F807C00FF803F01FF 001FFFFC0007FFF00000FF8000> 32 39 -3 38 34] 51 dc [ 48 41 -3 40 52] 82 dc [ 48 27 -1 26 50] 119 dc [<007F806003FFF0E00FFFFFE01F807FE03F001FE07E0007E07E0003E07C0003E0FC0001 E0FC0001E0FC0000E0FE0000E0FE0000E0FF000000FFC000007FFE00007FFFE0003FFFFC 003FFFFF001FFFFF8007FFFFC003FFFFE000FFFFF00007FFF000007FF000000FF8000007 F8000003F8E00003F8E00001F8E00001F8E00001F8F00001F8F00001F0F80003F0FC0003 E0FF0007E0FFE01FC0FFFFFF00E0FFFE00C01FF000> 32 41 -4 40 38] 83 dc [ 40 39 -1 26 36] 121 dc [ 40 27 -1 26 36] 120 dc cmbx12.300 sf [<00180000780001F800FFF800FFF80001F80001F80001F80001F80001F80001F80001F8 0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8 0001F80001F80001F80001F80001F80001F8007FFFE07FFFE0> 24 32 -4 31 28] 49 dc [<387CFEFEFE7C38> 8 7 -4 6 16] 46 dc [<00FE0007FFC00F07E01E03F03F03F03F81F83F81F83F81F81F03F81F03F00003F00003 E00007C0001F8001FE0001FF000007C00001F00001F80000FC0000FC3C00FE7E00FEFF00 FEFF00FEFF00FEFF00FC7E01FC7801F81E07F00FFFC001FE00> 24 32 -2 31 28] 51 dc [ 40 34 -2 33 42] 82 dc [<00FE0007FF800F87C01E01E03E01F07C00F07C00F8FC00F8FC00F8FFFFF8FFFFF8FC00 00FC0000FC00007C00007C00007E00003E00181F00300FC07003FFC000FF00> 24 22 -2 21 26] 101 dc [ 32 22 -1 21 30] 118 dc [<1C003F007F007F007F003F001C000000000000000000000000000000FF00FF001F001F 001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FF E0> 16 36 -2 35 16] 105 dc [ 40 22 -1 21 40] 119 dc [<00FE0007FFC00F83E01E00F03E00F87C007C7C007C7C007CFC007EFC007EFC007EFC00 7EFC007EFC007EFC007E7C007C7C007C3E00F81F01F00F83E007FFC000FE00> 24 22 -2 21 28] 111 dc [<003F8000FFC001E3E003C7E007C7E00F87E00F83C00F80000F80000F80000F80000F80 000F8000FFFC00FFFC000F80000F80000F80000F80000F80000F80000F80000F80000F80 000F80000F80000F80000F80000F80000F80000F80000F80000F80007FF8007FF800> 24 35 -1 34 17] 102 dc [ 48 34 -2 33 53] 77 dc [<07FC001FFF803F07C03F03E03F01E03F01F01E01F00001F00001F0003FF003FDF01FC1 F03F01F07E01F0FC01F0FC01F0FC01F0FC01F07E02F07E0CF81FF87F07E03F> 24 22 -2 21 27] 97 dc [<00FF8007FFE00F83F01F03F03E03F07E03F07C01E07C0000FC0000FC0000FC0000FC00 00FC0000FC00007C00007E00007E00003E00301F00600FC0E007FF8000FE00> 24 22 -2 21 25] 99 dc [ 24 22 -2 21 23] 114 dc [ 40 34 -2 33 43] 68 dc [<000FF000007FFC0001F80E0003E01F0007C03F000F803F000F803F000F801E000F800C 000F8000000F8000000F8000000F800000FFFFFF00FFFFFF000F801F000F801F000F801F 000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F 000F801F000F801F000F801F000F801F000F801F000F801F007FF0FFE07FF0FFE0> 32 35 -1 34 31] 12 dc [ 32 22 -2 21 31] 110 dc [<0180000180000180000180000380000380000780000780000F80003F8000FFFF00FFFF 000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F81 800F81800F81800F81800F81800F830007C30003FE0000F800> 24 32 -1 31 22] 116 dc [<01FC0407FF8C1F03FC3C007C7C003C78001C78001CF8000CF8000CFC000CFC0000FF00 00FFE0007FFF007FFFC03FFFF01FFFF80FFFFC03FFFE003FFE0003FF00007F00003F0000 3FC0001FC0001FC0001FE0001EE0001EF0003CFC003CFF00F8C7FFE080FF80> 24 34 -3 33 31] 83 dc [ 32 32 -1 21 30] 121 dc [ 32 22 -1 21 30] 120 dc cmtt10.300 sf [<7FF800FFFE007FFF001C0F801C03801C03C01C01C01C01C01C01C01C03C01C03801C0F 801FFF001FFE001FF8001C00001C00001C00001C00001C00001C00001C00007F0000FF80 007F0000> 24 25 -1 24 22] 80 dc [<01F18007FF800FFF801F0F803C0780780780780380700380F00000E00000E00000E000 00E00000E00000E00000E00000F000007003807803807803803C07801F0F000FFE0007FC 0001F000> 24 25 -2 24 22] 67 dc 15 @bop1 cmbx10.300 sf 177 1593(Decision:)s cmti10.300 sf 1305 366(c)s -2(onfusion)h cmbx10.432 sf 177 1907(1.3)s 70(Review)h 20(of)h 24(F)h -6(unnelW)h -6(eb)h 22(Syn)h -2(tax)h cmbx12.300 sf 177 2415(1.3.1)s 55(Review)h 18(of)h 18(Macro)h 19(De\014nition)h 18(Syn)h -2(tax)h cmtt10.300 sf 837 42(@)s 633(a)h 859 91(a++;)s 806(@)h 1012 141(a)s 1835 2173(==)s 177 2685(@$@==@{@-)h 177 2735(Open)s 21(the)h 21(door)h 177 2785(Say)s 21(out)h 177 2835(Close)s 21(the)h 21(door@})h cmr10.300 sf 177 42(Here)s 15(the)h 15(user)h 15(has)h 14(placed)h 14(the)h 15(call)h 13(to)h 224(after)h 14(the)h 15(incremen)h -1(ting)h 13(of)h 13(v)h -2(ariable)h 35(.)h 18(The)h 14(result)h 15(is)h 177 91(that)s 13(there)h 14(is)h 12(a)h 13(go)h 1(o)h 1(d)h 12(c)h -1(hance)h 14(that)h 12(the)h 14(\\)h 88(")h 11(prep)h 1(ended)h 15(to)h 12(eac)h -1(h)h 14(line)h 12(of)h 12(the)h 13(expansion)h 13(of)h 177 141(will)s 13(b)h 1(e)h 14(passed)h 15(b)h -1(y)h 14(the)h 14(compiler)h 13(and)h 13(will)h 13(cause)h 50(to)h 14(b)h 1(e)h 15(o)h -1(v)h -1(erincremen)h -1(ted.)h 177 216(These)s 16(examples)h 14(are)h 15(not)h 15(to)h 14(b)h 1(e)h 16(laughed)h 14(at.)h 20(It)h 15(is)h 15(p)h 1(ossible)h 14(that)h 15(F)h -3(unnelW)h -3(eb)h 14(will)h 14(b)h 1(e)h 15(used)h 16(widely)h -3(,)h 13(and)h 177 266(the)s 15(problems)h 13(ab)h 1(o)h -1(v)h -1(e)h 14(ma)h -1(y)h 13(cause)h 15(problems)h 13(in)h 14(critical)h 14(systems.)h 20(The)h 14(examples)h 14(ab)h 1(o)h -1(v)h -1(e)h 14(are)h 15(particularly)h 177 316(scary)s 16(b)h 1(ecause)h 16(they)h 16(are)h 15(re\015exiv)h -1(e.)h 22(One)h 15(cannot)h 15(simply)h 13(pin)h 14(the)h 16(blame)h 13(on)h 15(one)h 15(particular)h 14(inden)h -1(tation)h 177 366(form.)s 17(A)h 14(little)h 14(though)h -1(t)h 13(rev)h -1(eals)h 15(that)h 14(the)h 15(greatest)h 15(danger)h 15(lies)h 14(in)h 198(in)h 14(the)h 14(user's)h 16(mind.)h 16(If)h 14(the)h 177 416(user)s 15(is)h 14(confused)h 15(b)h 1(et)h -1(w)h -1(een)h 15(text)h 14(or)h 14(blank)h 13(inden)h -1(ting,)h 13(problems)h 13(will)h 13(arise.)h 177 491(There)s 20(seem)h 18(to)h 19(b)h 1(e)h 19(t)h -1(w)h -1(o)h 18(w)h -1(a)h -1(ys)h 18(to)h 18(solv)h -1(e)h 19(the)h 19(problem.)h 31(The)h 19(\014rst)h 19(is)h 18(to)h 19(ban)h 18(all)h 17(macro)h 18(calls)h 18(that)h 18(are)h 177 541(preceded)s 17(b)h -1(y)h 15(non-blank)h 14(text.)h 23(This)h 15(is)h 15(not)h 15(a)h 14(go)h 1(o)h 1(d)h 15(option)h 14(b)h 1(ecause)h 17(there)h 17(are)h 15(so)h 15(man)h -1(y)h 13(cases)h 17(where)h 16(it)h 177 591(is)s 16(desirable)h 16(to)h 15(expand)h 16(more)h 15(than)h 15(one)h 16(single)h 16(line)h 15(macros)h 15(on)h 15(the)h 16(same)h 15(line.)h 23(A)h 16(second)h 16(option)h 15(is)h 16(to)h 177 640(eliminate)s 14(one)h 16(of)h 16(the)h 16(t)h -1(w)h -1(o)h 16(forms)h 14(so)h 16(as)h 16(to)h 16(reduce)h 18(the)h 16(p)h 1(oten)h -1(tial)h 16(for)h 15(am)h -1(biguit)h -1(y)h 13(in)h 16(the)h 16(user's)h 17(mind.)h 23(I)h 177 690(c)s -1(ho)h 1(ose)h 17(the)h 17(latter)h 16(option.)h 24(Of)h 16(the)h 16(t)h -1(w)h -1(o)h 16(forms,)h 15(the)h 16(clear)h 17(c)h -1(hoice)h 16(for)h 16(eliminati)h -1(on)h 14(is)h 16(text)h 17(inden)h -1(ting)h 15(for)h 177 740(the)s 15(follo)h -1(wi)h -1(ng)h 12(reasons:)h 228 858(1.)s 20(It)h 14(actually)h 13(in)h -1(tro)h 1(duces)h 15(extra)h 14(text)h 15(whic)h -1(h)h 13(giv)h -1(es)h 14(it)h 14(an)h 13(a)h 14(priori)h 13(p)h 1(oten)h -1(tial)h 13(for)h 14(problems.)h 228 942(2.)s 20(It)h 14(is)h 14(harder)h 14(to)h 14(implem)h -1(en)h -1(t)h 12(and)h 14(w)h -1(ould)h 13(slo)h -1(w)h 13(do)h -1(wn)h 14(T)h -3(angle.)h 228 1026(3.)s 20(It)h 14(w)h -1(ould)h 13(not)h 14(b)h 1(e)h 14(compatible)h 12(with)h 14(F)h -3(unnelW)h -3(eb)h 13(V1)h 14(whic)h -1(h)h 14(uses)h 15(blank)h 13(inden)h -1(tation.)h 177 1144(The)s 18(only)h 17(other)h 18(decision)h 18(is)h 17(the)h 19(lev)h -1(el)h 17(of)h 17(gran)h -1(ularit)h -1(y)h 16(of)h 17(c)h -1(hoice)h 18(b)h 1(et)h -1(w)h -1(een)h 19(the)h 18(remaining)h 16(options:)h 25(no)h 177 1194(inden)s -1(tation)h 11(and)h 12(blank)h 11(inden)h -1(tation.)h 17(F)h -3(unnelW)h -3(eb)h 11(V1)h 12(allo)h -1(w)h -1(ed)h 10(this)h 12(c)h -1(hoice)h 12(to)h 12(b)h 1(e)h 12(made)h 11(in)h 11(the)h 13(comm)h -1(and)h 177 1243(line.)s 27(In)h 17(retrosp)h 1(ec)h 1(t,)h 19(this)h 17(w)h -1(as)h 17(bad)h 17(design)h 17(b)h 1(ecause)h 19(the)h 18(user)h 18(migh)h -1(t)h 15(un)h -1(wittingly)h 15(co)h 1(de)h 18(certain)h 18(macro)h 177 1293(calls)s 12(relying)h 13(on)h 12(one)h 13(or)h 13(the)h 13(other)h 14(mo)h 1(de.)h 16(A)h 13(b)h 1(etter)h 14(system)h 13(is)h 12(to)h 13(allo)h -1(w)h 11(the)h 13(user)h 14(to)h 13(sp)h 1(ecify)h 13(whic)h -1(h)h 13(mo)h 1(de)h 177 1343(in)s 14(the)h 14(input)h 14(\014le)h 14(itself.)h 17(This)h 14(has)h 14(b)h 1(een)h 15(done)h 14(in)h 14(F)h -3(unnelW)h -3(eb)h 13(V3.)h 177 1418(Again,)s 20(to)h 20(a)h -1(v)h -1(oid)h 19(confusion,)h 21(it)h 20(seems)h 20(sensible)h 21(to)h 20(allo)h -1(w)h 18(the)h 21(user)h 21(only)h 19(one)h 20(inden)h -1(tation)h 20(mo)h 1(de)h 19(p)h 1(er)h 177 1468(F)s -3(unnelW)h -3(eb)h 14(input)h 15(\014le.)h 20(In)h 15(most)h 13(cases,)h 16(the)h 16(user)h 15(will)h 14(b)h 1(e)h 15(happ)h -1(y)h 14(with)h 15(blank)h 14(inden)h -1(tation)h 14(\(the)h 15(default\))h 177 1518(and)s 14(there)h 15(will)h 12(b)h 1(e)h 15(no)h 14(need)h 15(for)h 13(c)h -1(hange)h 14(an)h -1(yw)h -1(a)h -1(y)h -3(.)h 385 1593(Implem)s -1(en)h -1(t)h 13(only)h 14(\\no)h 14(inden)h -1(tation")h 13(and)h 14(\\blank)h 14(inden)h -1(tation".)h 18(Mak)h -1(e)h 14(the)h 15(c)h -1(hoice)h 15(of)h 14(inden-)h 177 1643(tation)s 17(a)h 17(static)h 18(attribute)h 18(of)h 17(a)h 17(particular)h 18(F)h -3(unnelW)h -3(eb)h 17(run)h 17(that)h 18(is)h 17(sp)h 1(eci\014ed)h 19(in)h 17(the)h 19(input)h 17(\014le.)h 29(This)h 177 1693(solution)s 13(is)h 14(the)h 15(same)h 13(as)h 14(F)h -3(unnelW)h -3(eb)h 13(V1)h 14(except)h 15(that)h 14(the)h 15(c)h -1(hoice)h 14(has)h 14(b)h 1(een)h 15(mo)h -1(v)h -1(ed)h 13(from)h 12(the)h 15(comm)h -1(and)h 177 1743(line)s 14(to)h 13(the)h 15(input)h 13(\014le.)h 177 2023(One)s 12(of)h 10(the)h 12(distressing)h 12(asp)h 1(ects)h 13(of)h 10(F)h -3(unnelW)h -3(eb)h 11(V1)h 10(w)h -1(as)h 11(its)h 11(clumsy)h 10(macro)h 10(de\014nition)h 11(and)h 11(calling)h 9(syn)h -1(tax.)h 177 2073(Compared)s 14(to)h 15(\(sa)h -1(y\))h 15(the)h 15(C)h 15(prepro)h 1(cess)h 1(or,)h 16(F)h -3(unnelW)h -3(eb's)h 14(macro)h 14(call)h 14(syn)h -1(tax)h 15(is)h 15(lik)h -1(e)h 14(a)h 14(freigh)h -1(t)h 15(train)h 15(in)h 14(a)h 177 2123(c)s -1(hina)h 16(sho)h -1(w.)h 24(During)h 15(the)h 16(F)h -3(unnelW)h -3(eb)h 15(redesign,)h 17(a)h 16(complete)h 15(review)h 16(of)h 16(this)h 15(syn)h -1(tax)h 16(to)h 1(ok)h 16(place)h 16(to)h 16(try)h 177 2173(to)s 15(neaten)h 16(it)h 15(up.)h 22(Surprisingly)h -3(,)h 14(the)h 16(V1)h 15(syn)h -1(tax)h 15(surviv)h -1(ed)h 16(unscathed)h 16(with)h 15(the)h 16(exception)h 16(that)h 15(\\)h 44(")h 14(in)h 177 2223(macro)s 16(de\014nitions)h 18(w)h -1(as)h 17(made)h 17(optional.)h 27(The)h 18(surviv)h -2(al)h 17(of)h 17(this)h 17(clumsy)h 17(syn)h -1(tax)h 17(w)h -1(as)h 18(a)h 17(pro)h 1(duct)h 18(of)h 17(the)h 177 2272(design)s 14(goal)h 13(of)h 13(making)h 12(ev)h -1(erything)h 14(simple,)h 12(explicit,)h 13(and)h 13(not)h 14(sub)h 2(ject)h 16(to)h 13(subtle)h 15(errors.)h 177 2518(F)s -3(unnelW)h -3(eb)h 20(V1)h 21(used)h 21(a)h 20(macro)h 20(de\014nition)h 20(syn)h -1(tax)h 21(that)h 20(resulted)h 22(in)h 20(macro)h 20(de\014nitions)h 20(suc)h -1(h)h 21(as)h 21(the)h 177 2568(follo)s -1(wing.)h 1042 2940(14)s 15 @eop 16 @bop0 cmsy10.300 sf [<003C00E001C00180038003800380038003800380038003800380038003800380038003 0007001C00F0001C00070003000380038003800380038003800380038003800380038003 800380018001C000E0003C> 16 41 -3 30 21] 102 dc [ 16 41 -3 30 21] 103 dc cmtt10.300 sf [<07E0001FFC007FFE00781F00780F00780700000700000F00000F00003E0007FC0007F8 0007FC00001E00000700000780000380000380F00380F00780F00700F81F007FFE003FFC 0007E000> 24 25 -2 24 22] 51 dc [<387C7E7E3E0E1E3C7CF860> 8 11 -7 4 22] 44 dc [<07E0001FF8007FFE00783F00F00F00F00780F00380F003800003800003800007800007 00000F00001E00003C0000780000F00003E0000780000F00001E03803C03807FFF80FFFF 807FFF80> 24 25 -2 24 22] 50 dc 16 @bop1 cmsy10.300 sf 677 141(f)s 114(g)h 517 191(f)s 117(g)h cmbx10.300 sf 177 1238(Decision:)s 177 2835(Decision:)s cmtt10.300 sf 1511 42(@$)s 1823 91(@<)s 177 141(@>)s 434(@)h 113(@)h 431(@-)h 495 191(@)s 116(@)h 690 260(+=)s 135(==)h 1618 310(+=)s 177 458(@$@@{)h 177 507(Open)s 21(the)h 21(door)h 177 557(Say)s 21(out)h 177 607(Close)s 21(the)h 21(door@})h 538 705(+=)s 177 921(@)h 177 971(Open)s 21(the)h 21(door)h 177 1021(Say)s 21(out)h 177 1071(Close)s 21(the)h 21(door@})h 1113 1238(+=)s 88(==)h 177 1385(@$@@{)h 177 1435(Open)s 21(the)h 21(door)h 177 1485(Say)s 21(out)h 177 1534(Close)s 21(the)h 21(door@})h 177 1779(@$@@\(@3@\)=)h -1(=@{@-)h 177 1829(Open)s 21(the)h 21(door)h 177 1879(Say)s 21(out)h 177 1929(Close)s 21(the)h 21(door@})h 177 2124(@$@@\(@1@,@)h -1(2@,@3)h -1(@\)==@)h -1({@-)h 177 2174(Open)s 21(the)h 21(door)h 177 2224(Say)s 21(out)h 177 2273(Close)s 21(the)h 21(door@})h 177 2518(@$@@3==@{@)h -1(-)h 177 2568(Open)s 21(the)h 21(door)h 177 2618(Say)s 21(out)h 177 2668(Close)s 21(the)h 21(door@})h 888 2835(@\(@3@\))s cmr10.300 sf 177 42(This)s 16(is)h 15(messy)h -3(,)h 15(but)h 16(I)h 16(couldn't)h 15(think)h 16(of)h 15(an)h -1(ything)h 15(b)h 1(etter)h 17(at)h 15(the)h 17(time.)h 22(The)h 75(is)h 16(necessary)h 18(to)h 15(cue)h 17(a)h 177 91(de\014nition.)s 21(Without)h 14(it,)h 15(the)h 15(de\014nition)h 15(migh)h -1(t)h 13(someho)h -1(w)h 13(b)h 1(e)h 16(mistak)h -1(en)h 14(for)h 14(an)h 15(in)h -1(v)h -1(o)h 1(cation.)h 20(The)h 74(and)h 234 141(delimi)s -1(t)h 11(the)h 14(name.)h 17(The)h 69(and)h 68(delimit)h 11(the)h 13(text.)h 19(The)h 70(is)h 12(a)h 13(pro)h 1(duct)h 14(of)h 12(the)h 14(rule)h 13(\\exactly)h 13(the)h 177 191(text)s 15(b)h 1(et)h -1(w)h -1(een)h 15(the)h 71(and)h 57(".)h 177 260(The)s 14(only)h 13(real)h 14(target)h 14(is)h 14(the)h 14(\\)h 44(")h 13(and)h 13(\\)h 44(")h 13(whic)h -1(h)h 14(really)h 13(break)h 14(all)h 13(the)h 14(rules)h 14(and)h 14(should)h 13(b)h 1(e)h 15(c)h -1(hanged.)h 177 310(Unfortunately)s 14(I)h 15(couldn't)h 13(think)h 14(of)h 14(an)h -1(ything)h 13(to)h 14(c)h -1(hange)h 15(them)h 13(to.)h 19(If)h 14(there)h 16(w)h -1(as)h 14(no)h 72(mec)h -1(hanism,)h 12(w)h -1(e)h 177 360(could)s 14(use:)h 177 705(In)s 14(fact,)h 13(elimi)h -1(nating)h 68(is)h 14(think)h -2(able)h 12(b)h 1(ecause)h 16(it)h 13(do)h 1(es)h 14(not)h 14(app)h 1(ear)h 14(in)h 13(man)h -1(y)h 11(of)h 13(m)h -1(y)h 12(existing)h 13(F)h -3(unnelW)h -3(eb)h 177 754(source)s 15(\014les.)h 19(This)h 14(indicates)h 14(at)h 13(least)h 15(that)h 13(it)h 14(w)h -1(as)h 14(not)h 14(needed)h 15(m)h -1(uc)h -1(h)h 13(b)h -1(y)h 13(m)h -1(yself.)h 177 824(A)s 14(minim)h -2(ali)h -1(st)h 13(construct)h 15(could)h 14(b)h 1(e)h 177 1168(but)s 14(this)h 14(is)h 14(to)h 1(o)h 14(dangerous)h 14(for)h 14(m)h -1(y)h 12(tastes.)h 383 1238(F)s -3(or)h 11(compatibi)h -1(li)h -1(t)h -1(y)h 9(reasons,)h 12(retain)h 12(the)h 11(old)h 65(and)h 66(constructs,)h 13(but)h 11(mak)h -1(e)h 9(them)h 11(optional.)h 177 1287(The)s 14(new)h 15(syn)h -1(tax)h 14(for)h 13(de\014ning)h 14(macros)h 13(is:)h 177 1632(Next)s 12(w)h -1(e)h 11(turn)h 12(to)h 11(parameterized)h 11(macro)h 10(de\014nitions.)h 17(A)h 11(con)h -1(v)h -1(en)h -1(tional)h 10(F)h -3(unnelW)h -3(eb)h 11(parameterized)h 11(macro)h 177 1682(de\014nition)s 14(lo)h 1(oks)h 13(lik)h -1(e)h 13(this:)h 177 2026(whic)s -1(h)h 14(is)h 14(a)h 13(bit)h 14(messy)h -3(.)h 17(The)h 14(natural)h 14(alternativ)h -1(e)h 13(is)h 14(ev)h -1(en)h 15(w)h -1(orse:)h 177 2371(Th)s -1(us,)h 12(just)h 12(sp)h 1(ecifying)h 11(the)h 12(n)h -1(um)h -1(b)h 1(er)h 11(of)h 11(parameters)h 12(seems)h 12(sensible.)h 18(Ho)h -1(w)h -1(ev)h -1(er,)h 12(p)h 1(erhaps)h 12(the)h 12(syn)h -1(tax)h 12(could)h 177 2421(b)s 1(e)h 15(trimm)h -1(ed)h 12(to)h 177 2765(I)s 14(decided)h 15(to)h 14(reject)h 15(this)h 14(in)h 13(fa)h -1(v)h -1(our)h 13(of)h 14(the)h 14(old)h 13(syn)h -1(tax.)h 384 2835(Retain)s 14(the)h 14(old)h 13(syn)h -1(tax)h 14(of)h 13(.)h 7(.)h 7(.)h 131(.)h 7(.)h 7(.)h 1042 2940(15)s 16 @eop 17 @bop0 cmbx10.432 sf [<00000E0000001E0000003E0000007E000000FE000000FE000001FE000003FE0000077E 00000E7E00000E7E00001C7E0000387E0000707E0000E07E0000E07E0001C07E0003807E 0007007E000E007E000E007E001C007E0038007E0070007E00E0007E00FFFFFFF8FFFFFF F8FFFFFFF80000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE 00007FFFF8007FFFF8007FFFF8> 32 39 -2 38 34] 52 dc [ 48 41 -3 40 53] 68 dc [<001FF80000FFFE0003F01F000FE03F801FC03F803F803F803F803F807F801F007F0000 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 007F0000007F8000003F8001C03FC001C01FC003C00FE0078003F01F0000FFFC00001FE0 00> 32 27 -2 26 31] 99 dc [ 56 27 -3 26 60] 109 dc [<00FF81F003FFE7FC0FC1FE7C1F80FC7C3F80FE7C3F007E107F007F007F007F007F007F 007F007F007F007F007F007F003F007E003F80FE001F80FC000FC1F8001FFFE00018FF80 00380000003C0000003C0000003E0000003FFFF8003FFFFF001FFFFFC00FFFFFE007FFFF F01FFFFFF07E0007F87C0001F8F80001F8F80000F8F80000F8F80000F8FC0001F87E0003 F03F0007E00FC01F8003FFFE00007FF000> 32 40 -2 26 34] 103 dc cmbx12.300 sf [<03FC000FFF003C1FC07007E07C07F0FE03F0FE03F8FE03F8FE01F87C01F83803F80003 F80003F00003F00007E00007C0000F80001F00003E0000380000700000E01801C0180380 180700180E00380FFFF01FFFF03FFFF07FFFF0FFFFF0FFFFF0> 24 32 -3 31 28] 50 dc [<0003FE0080001FFF818000FF01E38001F8003F8003E0001F8007C0000F800F80000780 1F800007803F000003803F000003807F000001807E000001807E00000180FE00000000FE 00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE000000007E00 0000007E000001807F000001803F000001803F000003801F800003000F8000030007C000 060003F0000C0001F800380000FF00F000001FFFC0000003FE0000> 40 34 -3 33 40] 67 dc [ 16 35 -2 34 16] 108 dc [ 32 34 -2 33 38] 80 dc [ 48 22 -2 21 48] 109 dc [<7FFFF07FFFF07C03E07007C0600FC0E01F80C01F00C03E00C07E0000FC0000F80001F0 0003F03007E03007C0300F80701F80703F00603E00E07C03E0FFFFE0FFFFE0> 24 22 -2 21 25] 122 dc [<0001FE000001FE0000003E0000003E0000003E0000003E0000003E0000003E0000003E 0000003E0000003E0000003E0000003E0001FC3E0007FFBE000F81FE001F007E003E003E 007E003E007C003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC003E 00FC003E007C003E007C003E003E007E001E00FE000F83BE0007FF3FC001FC3FC0> 32 35 -2 34 31] 100 dc cmtt10.300 sf [<60F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0600000000060F0F060> 8 25 -9 24 22] 33 dc [ 24 25 -1 24 22] 70 dc [<1C303F78FFF8F7E061C0> 16 5 -4 24 22] 126 dc [ 24 25 -1 24 22] 86 dc [ 16 11 -4 24 22] 34 dc 17 @bop1 cmbx10.300 sf 177 1291(Decision:)s 177 2366(Decision:)s cmbx10.432 sf 177 2538(1.4)s 70(Do)h 2(cum)h -1(e)h -1(n)h -2(t)h 21(Structuring)h cmbx12.300 sf 177 42(1.3.2)s 55(Review)h 18(of)h 18(Macro)h 19(Call)h 19(Syn)h -2(tax)h 177 1540(1.3.3)s 55(Review)h 18(of)h 18(P)h -2(arameterized)h 17(Macro)h 19(Call)h 18(Syn)h -2(tax)h cmtt10.300 sf 177 270(Open)s 21(the)h 21(door)h 177 320(@)h 195(@!)h 21(FunnelWeb~V1)h 20(style.)h 177 370(Close)s 21(the)h 21(door)h 177 470(Open)s 21(the)h 21(door)h 177 520(@@)h 177 569(Close)s 21(the)h 21(door)h 177 669(Open)s 21(the)h 21(door)h 177 719(@"Say)s 21(out@")h 177 769(Close)s 21(the)h 21(door)h 177 868(Open)s 21(the)h 21(door)h 177 918(@\(Say)s 21(out@\))h 177 968(Close)s 21(the)h 21(door)h 177 1068(Open)s 21(the)h 21(door)h 177 1117(@)h 177 1167(Close)s 21(the)h 21(door)h 1052 1340(@@)h 177 1769(@@\(@"fir)h -1(stpar)h -1(am@")h 19(@,)h 22(@"Secondpar)h -1(am@")h 19(@,)h 22(@"thirdparam)h -1(@")h 20(@\))h 1280 1893(@")s 177 2066(@@\(first)h -1(param)h -1(@,Sec)h -1(ondpa)h -1(ram@,)h -1(thir)h -1(dpara)h -1(m@\))h 554 2239(@")s cmr10.300 sf 177 147(Here)s 15(are)h 15(some)h 13(ideas)h 14(for)h 13(alternativ)h -1(es)h 14(to)h 14(the)h 14(F)h -3(unnelW)h -3(eb)h 14(V1)h 13(macro)h 13(call)h 13(syn)h -1(tax.)h 397 1291(Con)s -1(tin)h -1(ue)h 20(with)h 20(the)h 20(old)h 20(notation.)h 36(It)h 20(ma)h -1(y)h 18(not)h 20(b)h 1(e)h 21(neat,)h 22(but)h 20(at)h 20(least)h 21(it)h 19(is)h 20(clear)h 21(and)h 177 1340(consisten)s -1(t.)h 24(The)h 16(main)h 13(temptation)h 14(is)h 15(the)h 16(format)h 269(whic)h -1(h)h 15(lo)h 1(oks)h 15(rather)h 17(go)h 1(o)h 1(d.)h 22(Ho)h -1(w)h -1(ev)h -1(er,)h 177 1390(it)s 14(breaks)h 14(the)h 15(sp)h 1(ecial)h 14(sequence)h 16(rational)h 13(and)h 13(hence)h 16(is)h 13(to)h 1(o)h 14(confusing.)h 177 1646(F)s -3(unnelW)h -3(eb)h 14(V1)h 13(pro)h -1(vided)h 14(a)h 14(messy)h 13(parameterized)h 14(macro)h 13(call)h 13(syn)h -1(tax:)h 177 1893(This)s 16(syn)h -1(tax)h 16(can)h 16(b)h 1(e)h 16(cleaned)h 17(up)h 16(considerably)h 16(b)h -1(y)h 16(making)h 13(the)h 76(sym)h -1(b)h 1(ols)h 15(optional.)h 22(This)h 16(results)h 17(in)h 177 1942(calls)s 14(suc)h -1(h)h 14(as)h 14(the)h 15(follo)h -1(wi)h -1(ng:)h 177 2189(As)s 17(the)h 17(\014rst)h 17(form)h 15(allo)h -1(ws)h 15(the)h 17(alignm)h -1(en)h -1(t)h 15(of)h 15(complicated)h 16(parameters)h 16(b)h -1(y)h 16(allo)h -1(wing)h 14(white)h 17(space)h 17(to)h 16(b)h 1(e)h 177 2239(inserted)s 17(outside)h 16(the)h 60(,)h 15(and)h 16(the)h 16(second)h 17(form)h 14(is)h 15(cleaner,)h 17(b)h 1(oth)h 16(are)h 16(retained)h 16(simply)h 14(b)h -1(y)h 15(making)h 13(the)h 177 2289(quotes)s 15(optional.)h 384 2366(Mak)s -1(e)h 14(the)h 15(double)h 13(quotes)h 15(optional.)h 177 2657(Exp)s 1(erience)h 19(with)h 17(F)h -3(unnelW)h -3(eb)h 16(V1,)h 17(whic)h -1(h)h 17(pro)h -1(vided)h 17(only)h 16(t)h -1(w)h -1(o)h 17(lev)h -1(els)h 17(of)h 16(headings)h 17(\(ma)h 2(jor)h 16(and)h 16(minor\))h 177 2707(pro)s -1(v)h -1(ed)h 10(that)h 11(there)h 11(w)h -1(as)h 10(a)h 10(strong)h 10(need)h 11(for)h 10(fully)h 9(hierarc)h -1(hical)h 10(m)h -1(ulti)h -1(ple-lev)h -1(el)h 8(headings.)h 17(The)h 10(only)h 10(question)h 177 2757(w)s -1(as)h 14(ho)h -1(w)h 13(it)h 14(should)h 14(b)h 1(e)h 14(done.)h 177 2835(Here)s 15(are)h 15(some)h 13(ideas)h 14(that)h 14(w)h -1(ere)h 14(considered.)h 1042 2940(16)s 17 @eop 18 @bop0 cmtt10.300 sf [<7FE000FFF8007FFC001C1E001C0F001C07001C07001C07001C07001C0F001C1E001FFC 001FF8001FFC001C1C001C0E001C0E001C0E001C0E001C0E201C0E701C0E707F07E0FF87 E07F03C0> 24 25 -1 24 22] 82 dc [<7FFFE0FFFFE0FFFFE0E0E0E0E0E0E0E0E0E0E0E0E000E00000E00000E00000E00000E0 0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00007FC000FFE 0007FC00> 24 25 -1 24 22] 84 dc [ 16 25 -3 24 22] 73 dc [<03E0000FF8003FFC007C1E00780F00F00700E00700E00780E00780E00380F00780F007 80780F803FFF803FFB800FE380000780000700300F00780E00781E00787C007FF8003FE0 000F8000> 24 25 -2 24 22] 57 dc 18 @bop1 cmsy10.300 sf 239 2518(\017)s 239 2601(\017)s 239 2835(\017)s cmr10.300 sf 177 2351(Cho)s 1(osing)h 19(b)h 1(et)h -1(w)h -1(een)h 21(these)h 21(alternativ)h -1(es)h 19(w)h -1(as)h 20(not)h 19(easy)h -3(.)h 35(The)h 20(follo)h -1(wing)h 17(though)h -1(ts)h 20(con)h -1(tributed)h 20(to)h 19(the)h 177 2400(decision.)s 281 2518(Syn)s -1(taxes)h 14(that)h 14(require)h 15(visual)h 13(coun)h -1(ting)h 13(are)h 15(probably)h 13(not)h 14(a)h 13(go)h 1(o)h 1(d)h 14(idea.)h 281 2601(Syn)s -1(taxes)h 14(that)h 13(do)h 13(not)h 14(delimit)h 11(the)h 14(heading)h 13(name)h 12(someho)h -1(w)h 13(are)h 13(lik)h -1(ely)h 12(to)h 14(cause)h 14(problems)h 13(where)h 281 2651(heading)s 18(names)h 17(are)h 18(omitted.)h 30(Users)h 19(will)h 17(b)h 1(e)h 19(tempted)h 18(to)h 18(start)h 18(paragraphs)h 19(after)h 18(the)h 19(start)h 18(of)h 281 2701(heading)s 14(sym)h -1(b)h 1(ol)h 13(and)h 14(the)h 15(result)h 15(is)h 14(that)h 15(the)h 15(\014rst)h 15(line)h 14(of)h 14(the)h 15(paragraph)h 14(will)h 13(b)h 1(e)h 15(suc)h -1(k)h -1(ed)h 15(in)h -1(to)h 14(the)h 281 2751(heading.)s 281 2835(Ov)s -1(erloading)h 13(the)h 58(,)h 13(.)h 7(.)h 7(.)h -1(,)h 71(sequences)h 16(is)h 14(undesirable.)h 1042 2940(17)s cmtt10.300 sf 177 42(@*@)h 177 91(@**@)h 177 141(@***@)h 177 241(@*@)h 177 291(@*@*@)h 177 340(@*@*@*@)h 177 440(@s@)h 177 490(@ss@)h 177 540(@sss@)h 177 639(@s@)h 177 689(@s@s@)h 177 739(@s@s@s@)h 177 839(@S@)h 177 888(@SS@)h 177 938(@SSS@)h 177 1038(@S@)h 177 1088(@S@S@)h 177 1137(@S@S@S@)h 177 1237(@A@)h 238(--)h 22(The)h 21(syntax)h 20(finally)h 21(chosen.)h 177 1287(@B@)h 177 1337(@C@)h 177 1436(@A)s 22(Main)h 21(Program)h 177 1486(@B)s 22(Read)h 21(the)h 21(Message)h 177 1536(@C)s 22(Encrypt)h 20(the)h 21(Buffer)h 177 1636(@*A)s 21(Main)h 21(Program)h 177 1685(@*B)s 21(Read)h 21(the)h 21(Message)h 177 1735(@*C)s 21(Encrypt)h 21(the)h 21(Buffer)h 177 1835(@1@)h 177 1885(@2@)h 177 1934(@3@)h 177 1984(\(using)s 21(@A..@I@)h 20(as)h 21(macro)h 21(parameters)h 20(or)h 21(overload)h 20(@1..@9\))h 177 2084(@*@1@)h 177 2134(@*@2@)h 177 2183(@*@3@)h 177 2233(\(using)s 21(@A..@I@)h 20(as)h 21(macro)h 21(parameters)h 20(or)h 21(overload)h 20(@1..@9\))h 585 2835(@1)s 99(@9)h 18 @eop 19 @bop0 cmtt10.300 sf [ 24 25 -1 24 22] 76 dc [<7FF800FFFE007FFF001C0F001C07801C03C01C01C01C01C01C01E01C00E01C00E01C00 E01C00E01C00E01C00E01C00E01C00E01C01C01C01C01C03C01C07801C0F807FFF00FFFE 007FF800> 24 25 0 24 22] 68 dc cmti10.300 sf [<1E01832703874703874703838707018707010E07010E07011C0E021C0E021C0E021C0E 04180C04181C04181C081C1C100C263007C3C0> 24 18 -4 17 28] 119 dc [<01FFFFC0003C01C0003800C00038008000380080003800800070008000700080007020 800070200000E0400000E0400000E0C00000FFC00001C0800001C0800001C0800001C080 0003810000038000000380000003800000070000000700000007000000070000000F0000 00FFF00000> 32 28 -3 27 27] 70 dc [ 40 29 -9 27 41] 87 dc [<3F00070007000E000E000E000E001C001C001C001C0039C03E60383038307038703870 387038E070E070E070E060E0E0C0C0C1C0618063003C00> 16 29 -5 28 19] 98 dc [<7FF0FF800F001C000E0018000E0010000E0010000E0010001C0020001C0020001C0020 001C00200038004000380040003800400038004000700080007000800070008000700080 00E0010000E0010000E0010000E0020000E0020000E0040000E004000060080000303000 00104000000F800000> 32 29 -9 27 31] 85 dc [<183C3C3C0404080810204080> 8 12 -9 28 13] 39 dc cmbx10.432 sf [<0C0003000F803F000FFFFE000FFFFE000FFFFC000FFFF8000FFFE0000FFFC0000FFE00 000E0000000E0000000E0000000E0000000E0000000E0000000E7FC0000FFFF8000F80FE 000E007F000C003F8000003F8000001FC000001FC000001FE000001FE018001FE07E001F E0FE001FE0FE001FE0FE001FE0FE001FE0FE001FC078003FC078003F803C007F001F01FE 000FFFFC0003FFF00000FF8000> 32 39 -3 38 34] 53 dc [<03FE300FFFF03E03F07800F07000F0F00070F00070F80070FC0000FFE000FFFE007FFF C03FFFE01FFFF007FFF800FFFC0003FC0000FCE0007CE0003CF0003CF0003CF80078FC00 78FF01F0F7FFC0C1FF00> 24 27 -2 26 27] 115 dc [<0007F000003FFC0000FFFF0001FC0F0007F01F800FE03F800FC03F801FC03F803F803F 803F801F007F8000007F0000007F0000007F000000FF000000FF0FC000FF3FF800FF70FE 00FFE03F00FFC03F80FF801FC0FF801FC0FF801FC0FF001FE0FF001FE0FF001FE0FF001F E07F001FE07F001FE07F001FE07F001FE03F801FC03F801FC01F803F800FC03F8007E0FF 0003FFFC0000FFF000003FC000> 32 39 -3 38 34] 54 dc [<000003800000000007C00000000007C0000000000FE0000000000FE0000000000FE000 0000001FF0000000001FF0000000003FF8000000003FF8000000003FF80000000073FC00 00000073FC00000000F3FE00000000E1FE00000000E1FE00000001C0FF00000001C0FF00 000003C0FF80000003807F80000007807FC0000007003FC0000007003FC000000E003FE0 00000E001FE000001E001FF000001C000FF000001FFFFFF000003FFFFFF800003FFFFFF8 0000780007FC0000700003FC0000700003FC0000E00001FE0000E00001FE0001E00001FF 0001C00000FF0001C00000FF00FFFE001FFFFEFFFE001FFFFEFFFE001FFFFE> 48 41 -2 40 52] 65 dc [<7FFFFFFFFFC07FFFFFFFFFC07FFFFFFFFFC07F803FC03FC07E003FC007C078003FC003 C078003FC003C070003FC001C0F0003FC001E0F0003FC001E0E0003FC000E0E0003FC000 E0E0003FC000E0E0003FC000E0E0003FC000E000003FC0000000003FC0000000003FC000 0000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000 0000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000 0000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000 0000003FC00000007FFFFFE000007FFFFFE000007FFFFFE000> 48 40 -2 39 48] 84 dc [<380000003E0000003FFFFFF03FFFFFF03FFFFFF07FFFFFE07FFFFFC07FFFFFC07FFFFF 8070000F0070001E0070003C00E0003800E0007800E000F0000001E0000003C0000003C0 000007800000078000000F0000001F0000001F0000001F0000003F0000003F0000003E00 00007E0000007E0000007E0000007E000000FE000000FE000000FE000000FE000000FE00 0000FE000000FE000000FE000000FE000000380000> 32 41 -4 40 34] 55 dc [<00003FF001800003FFFE0780000FFFFF8F80003FF007FF8000FF8001FF8001FE00007F 8007FC00003F8007F800001F800FF000000F801FE000000F803FE0000007803FC0000007 807FC0000003807FC0000003807FC000000380FF8000000000FF8000000000FF80000000 00FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000 00FF8000000000FF80000000007FC0000000007FC0000003807FC0000003803FC0000003 803FE0000003801FE0000007800FF00000070007F800000F0007FC00001E0001FE00003C 0000FF8000F800003FF007F000000FFFFFC0000003FFFF000000003FF80000> 48 41 -4 40 50] 67 dc [ 40 41 -3 40 41] 76 dc cmbx10.300 sf [<001FE02000FFF8E003F80FE007C003E00F8001E01F0000E03E0000E03E0000607E0000 607C000060FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC0000 007C0000607E0000603E0000603E0000C01F0000C00F80018007C0030003F80E0000FFFC 00001FE000> 32 28 -3 27 34] 67 dc [<003FE00001F07C0003C01E000F800F801F0007C01E0003C03E0003E07E0003F07C0001 F07C0001F0FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001 F87C0001F07E0003F07E0003F03E0003E03F0007E01F0007C00F800F8003C01E0001F07C 00003FE000> 32 28 -3 27 36] 79 dc [ 16 4 -1 10 16] 45 dc [<3FFF803C1F00303F00303E00607C0060FC0060F80001F00003F00007E00007C1800F81 801F81801F03803E03007E07007C0F00FFFF00> 24 18 -1 17 21] 122 dc 19 @bop1 cmtt10.300 sf 471 42(@A)s 48(@E)h 393 91(@E)s 1317(@F)h 605 141(@O)s 177 495(.fw)s 1105(.fw)h 645 1084(@)s 862 2835(.CLD)s cmti10.300 sf 293 2301(within)s 13(F)h -3(unnelWeb)h 723 2481(F)s -3(unnelWeb)h 17(User's)h 14(Manual)h cmbx10.432 sf 177 321(1.5)s 70(Discussion)h 21(of)h 24(Som)h -1(e)h 21(Miscel)h -1(l)h -1(aneous)h 22(Issues)h 177 1314(1.6)s 70(Autom)h -1(ated)h 21(Regression)h 22(T)h -6(esting)h 177 2661(1.7)s 70(Com)h -1(m)h -3(and)h 22(Line)h 22(In)h -2(terface)h cmbx10.300 sf 177 42(Decision:)s 1877 91(F)s 177 445(Commen)s -1(t)h 18(dupli)h -1(cation)h -1(:)h 669 544(Decision)s -1(:)h 177 625(Out-of-date)s 17(do)h 1(cumen)h -1(tat)h -1(ion)h -1(:)h 1227 674(Decision:)s 177 904(Meta-macro-lev)s -1(el)h 16(parameterizati)h -1(on:)h 1290 954(Decision:)s 177 1084(Clumsy)s 16(notation)h -1(:)h 594(Decision:)h cmr10.300 sf 389 42(Use)s 61(.)h 7(.)h 7(.)h 58(with)h 16(optional)h 15(follo)h -1(wi)h -1(ng)h 14(macro)h 15(name)h 15(syn)h -1(tax)h 16(for)h 16(the)h 17(section)h 17(name.)h 24(Note:)h 177 91(W)s -3(e)h 15(stop)h 15(at)h 73(b)h 1(ecause)h 17(\014v)h -1(e)h 15(lev)h -1(els)h 15(is)h 15(probably)h 14(su\016cien)h -1(t,)h 16(and)h 14(w)h -1(e)h 16(ma)h -1(y)h 13(wish)h 14(later)h 16(to)h 14(use)h 75(for)h 44(ile)h 177 141(\(to)s 14(augmen)h -1(t)h 13(or)h 13(replace)h 59(\).)h 671 445(If)s 17(the)h 18(F)h -3(unnelW)h -3(eb)h 17(user)h 18(inserts)h 18(commen)h -1(ts)h 15(in)h -1(to)h 17(the)h 18(target)h 17(co)h 1(de)h 18(\(in)h 17(the)h 255 495(\014le\))s 12(as)h 12(w)h -1(ell)h 11(as)h 12(in)h -1(to)h 12(the)h 12(do)h 1(cumen)h -1(tation)h 11(\(free)h 13(text\))h 13(part)h 12(of)h 12(the)h 90(\014le,)h 12(then)h 13(it)h 11(is)h 12(p)h 1(ossible)h 12(for)h 12(the)h 177 544(situation)s 13(to)h 14(get)h 14(a)h 14(bit)h 13(silly)h -3(.)h 224(This)h 14(is)h 14(a)h 13(problem)h 13(for)h 13(the)h 15(programm)h -1(er,)h 12(not)h 14(for)h 13(F)h -3(unnelW)h -3(eb.)h 786 625(Sometim)s -1(es)h 15(it)h 17(is)h 16(all)h 16(to)h 1(o)h 17(easy)h 17(for)h 16(the)h 18(programm)h -1(er)h 15(to)h 17(mo)h 1(dify)h 14(the)h 177 674(co)s 1(de)h 18(without)h 16(up)h 1(dating)h 16(the)h 17(surrounding)h 17(do)h 1(cumen)h -1(tation.)h 237(This)h 16(is)h 17(a)h 16(serious)h 17(and)h 16(ma)h 2(jor)h 177 724(problem.)s 27(In)h 17(an)h 17(automated)h 16(en)h -1(vironmen)h -1(t,)h 16(it)h 17(ma)h -1(y)h 15(b)h 1(e)h 18(p)h 1(ossible)h 17(to)h 17(create)h 19(a)h 17(system)h 17(of)h 16(dep)h 1(endencies)h 177 774(b)s 1(et)h -1(w)h -1(een)h 17(scraps)h 17(of)h 14(co)h 1(de)h 16(and)h 16(scraps)h 16(of)h 15(do)h 1(cumen)h -1(tation.)h 21(Ho)h -1(w)h -1(ev)h -1(er,)h 16(it)h 15(is)h 15(hard)h 16(to)h 15(see)h 16(ho)h -1(w)h 15(a)h 15(to)h 1(ol)h 15(suc)h -1(h)h 177 824(as)s 14(F)h -3(unnelW)h -3(eb)h 13(could)h 14(pro)h -1(vide)h 14(supp)h 1(ort)h 15(for)h 13(prev)h -1(en)h -1(tion)h 14(of)h 14(this)h 14(sort)h 14(of)h 13(error.)h 949 904(Sometim)s -1(es,)h 15(when)h 17(using)h 16(F)h -3(unnelW)h -3(eb,)h 16(the)h 16(facilit)h -1(y)h 15(to)h 16(use)h 177 954(one)s 11(macro)h 10(to)h 11(construct)h 13(the)h 11(name)h 10(of)h 11(another)h 11(has)h 11(b)h 1(een)h 12(needed.)h 225(Allo)h -1(wing)h 9(macro)h 10(names)h 10(to)h 177 1004(b)s 1(e)h 14(constructed)h 15(w)h -1(ould)h 13(lose)h 13(the)h 14(simple)h 11(nature)h 14(of)h 13(the)h 14(prepro)h 1(cessor)h 15(and)h 13(so)h 14(this)h 13(suggestion)h 13(is)h 13(rejected.)h 559 1084(The)s 51(notation)h 13(can)h 15(b)h 1(e)h 15(clumsy)h -3(.)h 226(This)h 15(is)h 14(necessary)h 16(to)h 15(mai)h -1(n)h -1(tain)h 12(the)h 177 1134(simplicit)s -1(y)h 12(of)h 13(the)h 14(translation.)h 177 1438(Automated)s 13(regression)h 15(testing)h 14(is)h 14(extremely)h 14(imp)h 1(ortan)h -1(t)h 12(for)h 13(t)h -1(w)h -1(o)h 14(reasons:)h 228 1568(1.)s 20(It)h 14(pro)h -1(vides)h 14(con\014dence)h 16(that)h 14(c)h -1(hanges)h 14(made)h 13(to)h 14(the)h 14(program)h 12(ha)h -1(v)h -1(e)h 14(not)h 14(in)h -1(tro)h 1(duced)h 15(bugs.)h 228 1662(2.)s 20(It)h 11(allo)h -1(ws)h 9(p)h 1(ortabilit)h -1(y)h 9(problems)h 10(to)h 10(b)h 1(e)h 12(pinp)h 1(oin)h -1(ted)h 10(when)h 11(the)h 11(program)h 9(is)h 11(mo)h -1(v)h -1(ed)h 9(to)h 10(a)h 10(new)h 12(mac)h -1(hine.)h 177 1792(The)s 15(simplest)h 13(w)h -1(a)h -1(y)h 13(to)h 14(set)h 15(up)h 15(automated)h 12(regression)h 16(testing)h 14(is)h 14(to)h 14(construct)h 16(a)h 14(suite)h 15(of)h 13(test)h 15(cases)h 16(\(and)h 177 1842(their)s 14(solutions\))h 12(and)h 13(then)h 14(write)h 13(a)h 13(script)h 13(in)h 13(the)h 13(target)h 14(mac)h -1(hine's)h 11(command)h 11(language)h 12(to)h 12(run)h 14(through)h 177 1892(the)s 18(suite.)h 29(Unfortunately)h -3(,)h 17(there)h 19(is)h 17(no)h 17(comm)h -1(and)h 15(language)h 17(that)h 17(is)h 17(shared)h 18(among)h 16(the)h 18(mac)h -1(hines)h 16(to)h 177 1941(whic)s -1(h)h 15(F)h -3(unnelW)h -3(eb)h 14(m)h -1(ust)h 14(b)h 1(e)h 15(p)h 1(orted.)h 22(These)h 16(mac)h -1(hines)h 14(are)h 16(at)h 14(least:)h 20(Macin)h -1(tosh,)h 15(IBM-PC,)h 15(Sun,)h 15(VMS)h 177 1991(V)s -3(ax.)h 177 2072(One)s 16(option)h 14(is)h 15(simply)h 13(to)h 15(rewrite)h 16(the)h 16(script)h 16(in)h 14(eac)h -1(h)h 16(mac)h -1(hine's)h 13(particular)h 15(comm)h -1(and)h 13(language.)h 21(This)h 177 2121(w)s -1(ould)h 15(b)h 1(e)h 17(a)h 15(feasible)h 16(option)h 15(w)h -1(ere)h 17(it)h 15(not)h 16(for)h 15(the)h 17(fact)h 16(that)h 16(the)h 16(Macin)h -1(tosh)h 16(\(the)h 16(mac)h -1(hine)h 15(up)h 1(on)h 16(whic)h -1(h)h 177 2171(F)s -3(unnelW)h -3(eb)h 14(w)h -1(as)h 13(dev)h -1(elop)h 1(ed\))h 15(do)h 1(es)h 15(not)h 13(ha)h -1(v)h -1(e)h 14(a)h 14(comm)h -1(and)h 12(language!)h 177 2252(After)s 13(some)h 12(though)h -1(t,)h 12(I)h 12(decided)h 14(that)h 12(the)h 13(b)h 1(est)h 14(solution)h 12(to)h 12(the)h 13(problem)h 11(w)h -1(as)h 13(to)h 12(create)h 14(a)h 12(comm)h -1(and)h 11(lan-)h 177 2301(guage)s 338(.)h 18(F)h -3(unnelW)h -3(eb)h 12(could)h 12(then)h 13(b)h 1(e)h 12(in)h -1(v)h -1(ok)h -1(ed)h 12(in)h 11(t)h -1(w)h -1(o)h 12(mo)h 1(des,)h 11(one-shot)h 13(comm)h -1(and)h 10(line)h 177 2351(or)s 15(in)h -1(teractiv)h -1(e/script.)h 20(This)h 15(approac)h -1(h)h 14(had)h 14(the)h 15(b)h 1(ene\014t)h 16(of)h 14(pro)h -1(viding)h 13(total)h 14(con)h -1(trol)h 14(o)h -1(v)h -1(er)h 14(the)h 16(comm)h -1(and)h 177 2401(language)s 13(and)h 14(its)h 14(complete)h 13(p)h 1(ortabilit)h -1(y)h -3(.)h 177 2481(The)s 14(result)h 15(is)h 14(describ)h 1(ed)h 16(in)h 13(the)h 496(.)h 177 2785(F)s -3(unnelW)h -3(eb)h 12(V1)h 12(w)h -1(as)h 12(implem)h -1(en)h -1(ted)h 11(in)h 12(Ada)h 12(and)h 12(runs)h 13(on)h 12(a)h 12(VMS)h 12(V)h -5(AX.)h 13(As)h 13(suc)h -1(h)h 13(it)h 11(has)h 13(a)h 12(full)h 11(VMS)h 12(DCL)h 177 2835(comma)s -1(nd)h 12(line)h 14(in)h -1(terface.)h 18(Here)h 15(is)h 14(the)h 15(\\)h 88(")h 12(\014le)h 14(for)h 14(the)h 14(DCL)h 14(comm)h -1(and)h 12(line)h 13(in)h -1(terface.)h 1042 2940(18)s 19 @eop 20 @bop0 cmbx10.432 sf [<003FC00001FFF00003FFFC000FC07E000F003F001F001F001E001F803E000F803E000F 803F000F803F800F803FC01F803FF01F003FFC3F001FFE7E001FFFF8000FFFE00007FFF8 0001FFFC0001FFFF0007FFFF801F8FFF803F03FFC07E01FFC07C007FE0FC001FE0F8000F E0F80007E0F80003E0F80003E0F80003E0FC0003C07C0007C07E0007803F000F801FC03F 000FFFFC0003FFF800007FC000> 32 39 -3 38 34] 56 dc [ 48 41 -3 40 54] 78 dc cmti10.300 sf [<07870004D98008E0C008E0C011C0E011C0E001C0E001C0E00381C00381C00381C00381 800703800703000707000706000E8C000E70000E00000E00001C00001C00001C00001C00 003C0000FF8000> 24 26 -1 17 21] 112 dc cmtt10.300 sf [<7F07F0FF8FF87F07F01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01 C01C01C01C01C01C01C01C01C01C01C01C01C01C01C00E03800E038007070007FF0003FE 0000F800> 24 25 0 24 22] 85 dc [<7E1FC0FF3FE07F1FC01D07001D87001D87001D87001DC7001DC7001CC7001CC7001CE7 001CE7001CE7001C67001C67001C77001C77001C37001C37001C37001C17007F1F00FF9F 007F0F00> 24 25 -1 24 22] 78 dc [<07F0001FFC003FFE007C1F00F00780E00380E00380E003807007007C1F001FFC0007F0 001FFC003C1E00700700F00780E00380E00380E00380F007807007007C1F003FFE001FFC 0007F000> 24 25 -2 24 22] 56 dc [ 24 26 -2 25 22] 55 dc [ 24 3 -2 -2 22] 95 dc [<07C7001FF7003FFF007C3F00781F00F00F00F00700E00700E00700E00700E00700F007 00F00F00781F007C3F003FFF001FF70007C7000007000007000007000007000007000007 00003FE0007FF0003FE0> 24 27 -2 17 22] 113 dc [<7F1F807F3F807F1F800E1E000E1C00073C0007380003B80003F00001F00001E00000E0 0001E00001F00003F00003B80007B800071C00071C000E0E000E0E001C07007F1FC0FF1F E07F1FC0> 24 25 -1 24 22] 88 dc [<1FFC003FFE007FFF00780F00F00780E00380E00380E00380E00380E00380E00380E003 80E00380E00380E00380E00380E00380E00380E0E380E1E380F0F780787F007FFF003FFE 001FFC00001C00001E00000E00000F00000700000700> 24 31 -2 24 22] 81 dc 20 @bop1 cmbx10.432 sf 177 1925(1.8)s 70(File)h 21(Nam)h -1(e)h 21(Manageme)h -1(n)h -2(t)h cmti10.300 sf 742 1174(dep)s -2(end)h 723 1729(F)s -3(unnelWeb)h 17(User's)h 14(Manual)h cmtt10.300 sf 177 42(!)s 22(FUNNELWEB)h 20(Command)h 20(Definition)h 177 91(!)s 22(===========)h -1(=====)h -1(=====)h -1(=====)h -1(==)h 177 141(!)s 22(Ross)h 21(Williams.)h 20(28)h 21(April)h 21(1987.)h 177 241(module)s 21(command_tab)h -1(le)h 243 291(define)s 20(verb)h 21(dummy_command)h 243 340(parameter)s 19(p1)h 240(,)h 21(label=input_fi)h -1(le)h 63(,value\(required)h -1(,type)h -1(=$fi)h -1(le\))h 243 390(qualifier)s 19(include_files,)h 19(label=include_)h -1(files)h -1(,valu)h -1(e\(typ)h -1(e=$fi)h -1(le\))h 20(,default)h 243 440(qualifier)s 19(output_files)h 20(,)h 21(label=output_f)h -1(iles)h 19(,value\(type=$fi)h -1(le\))h 20(,default)h 243 490(qualifier)s 19(delete)h 152(,)h 21(label=delete)h 565(,default)h 243 540(qualifier)s 19(tex_file)h 108(,)h 21(label=tex_file)h 106(,value\(type=$fi)h -1(le\))h 20(,default)h 243 589(qualifier)s 19(listing_file)h 20(,)h 21(label=listing_)h -1(file)h 19(,value\(type=$fi)h -1(le\))h 20(,default)h 243 639(qualifier)s 19(brief)h 174(,)h 21(label=brief,va)h -1(lue\(t)h -1(ype=$)h -1(numbe)h -1(r,def)h -1(ault=)h -1(5\),d)h -1(efaul)h -1(t)h 243 689(qualifier)s 19(screen)h 152(,)h 21(label=screen)h 150(,value\(type=$nu)h -1(mber,)h -1(defa)h -1(ult=0)h -1(\))h 243 739(qualifier)s 19(trace)h 174(,)h 21(label=trace)h 243 789(qualifier)s 19(file_spec)h 86(,)h 21(label=file_spe)h -1(c)h 243 839(qualifier)s 19(compare)h 344 1378(-X)s 470(-Q)h cmr10.300 sf 177 981(As)s 16(p)h 1(ortabilit)h -1(y)h 15(w)h -1(as)h 15(a)h 16(k)h -1(ey)h 16(goal)h 14(of)h 15(F)h -3(unnelW)h -3(eb)h 15(V3,)h 16(it)h 15(w)h -1(as)h 16(ob)h -1(vious)h 15(that)h 16(the)h 16(comm)h -1(and)h 14(line)h 15(in)h -1(terface)h 177 1031(w)s -1(ould)h 13(ha)h -1(v)h -1(e)h 14(to)h 14(b)h 1(e)h 14(redesigned.)h 20(The)h 14(design)h 14(goals)h 13(for)h 14(the)h 14(new)h 14(command)h 11(line)h 14(in)h -1(terface)h 14(w)h -1(ere:)h 228 1174(1.)s 20(The)h 15(in)h -1(terface)h 15(should)h 14(not)h 152(on)h 14(case.)h 21(Ho)h -1(w)h -1(ev)h -1(er,)h 14(it)h 14(m)h -1(ust)h 14(allo)h -1(w)h 12(case-sensitiv)h -1(e)h 16(\014lenames)h 14(to)h 281 1224(b)s 1(e)h 14(transmitted)h 14(on)h 13(systems)h 15(that)h 13(ha)h -1(v)h -1(e)h 14(case-sensitiv)h -1(e)h 16(\014lenames.)h 228 1328(2.)s 20(Eac)h -1(h)h 13(option)h 12(m)h -1(ust)h 12(ha)h -1(v)h -1(e)h 13(a)h 12(symmetric)h 11(p)h 1(ositiv)h -1(e)h 13(and)h 13(negativ)h -1(e)h 12(form.)h 16(F)h -3(or)h 13(example,)h 11(it)h 12(is)h 13(confusing)h 281 1378(for)s 71(to)h 14(turn)h 14(on)h 14(a)h 13(feature)h 15(and)h 71(to)h 14(turn)h 14(it)h 14(o\013.)h 228 1482(3.)s 20(The)h 14(in)h -1(terface)h 15(m)h -1(ust)h 13(b)h 1(e)h 14(extensible)h 15(to)h 14(allo)h -1(w)h 12(inclusion)h 13(of)h 13(more)h 13(features)h 15(at)h 14(a)h 14(later)h 14(date.)h 228 1586(4.)s 20(Options)h 14(should)h 14(b)h 1(e)h 14(consisten)h -1(t)h 15(and)h 14(memo)h -1(rable.)h 177 1729(The)s 14(result)h 15(is)h 14(describ)h 1(ed)h 16(in)h 13(the)h 496(.)h 177 2056(File)s 20(names)h 19(presen)h -1(t)h 22(a)h 20(host)h 20(of)h 20(problems)h 19(for)h 20(a)h 19(program)h 19(lik)h -1(e)h 19(F)h -3(unnelW)h -3(eb.)h 36(First,)h 22(F)h -3(unnelW)h -3(eb)h 20(can)h 177 2106(generate)s 16(so)h 15(man)h -1(y)h 13(di\013eren)h -1(t)h 16(kinds)h 15(of)h 14(\014les)h 15(that)h 15(con)h -1(v)h -1(en)h -1(tions)h 15(m)h -1(ust)h 14(b)h 1(e)h 16(adopted)h 15(to)h 15(prev)h -1(en)h -1(t)h 15(them)h 15(from)h 177 2156(b)s 1(ecoming)h 9(unmanageable.)h 15(Second,)h 11(the)h 10(constrain)h -1(ts)h 10(on)h 10(\014le)h 10(names,)h 9(and)h 10(ev)h -1(en)h 10(the)h 11(structure)h 12(of)h 9(\014le)h 10(names)h 177 2205(themselv)s -1(es)h 16(v)h -2(aries)h 15(considerably)h 16(from)h 14(mac)h -1(hine)h 14(to)h 15(mac)h -1(hine.)h 22(These)h 17(t)h -1(w)h -1(o)h 15(problems)h 14(ha)h -1(v)h -1(e)h 16(com)h -1(bined)h 14(to)h 177 2255(result)s 14(in)h 12(the)h 14(sophisticated)h 14(and)h 12(rather)h 14(complicated)h 12(w)h -1(a)h -1(y)h 12(in)h 13(whic)h -1(h)h 13(F)h -3(unnelW)h -3(eb)h 12(V3)h 13(handles)h 13(\014lenames.)h 177 2340(T)s -3(o)h 13(summari)h -1(ze,)h 13(the)h 14(three)h 15(problems)h 13(are:)h 228 2483(1.)s 20(What)h 13(\014lename)h 13(extensions)h 15(should)h 14(b)h 1(e)h 14(c)h -1(hosen)h 15(for)h 14(v)h -2(arious)h 13(kinds)h 14(of)h 13(\014le?)h 228 2588(2.)s 20(What)h 13(\014lename)h 13(inheritance)h 15(should)h 13(tak)h -1(e)h 14(place?)h 228 2692(3.)s 20(Ho)h -1(w)h 13(should)h 14(F)h -3(unnelW)h -3(eb)h 14(cop)h 1(e)h 14(with)h 14(the)h 14(v)h -2(ariations)h 13(in)h 13(\014lename)h 13(structure)h 16(b)h 1(et)h -1(w)h -1(een)h 15(mac)h -1(hines?)h 177 2835(The)s 14(follo)h -1(wing)h 12(three)h 15(sections)h 15(address)h 15(these)h 15(questions.)h 1042 2940(19)s 20 @eop 21 @bop0 cmbx12.300 sf [<00FE0003FFC00601E00C00701800701800383800383C00383F00383F80783FE0701FF8 E01FFFC00FFF8007FFC003FFE007FFF01E7FF83C1FFC7807FC7801FEF000FEF0003EF000 1EF0001EF0001CF8001C7800383C00381F01F00FFFC001FF00> 24 32 -2 31 28] 56 dc [ 32 34 -2 33 35] 70 dc [ 32 34 -2 33 37] 69 dc [<0FF3003FFF00781F00600700E00300E00300F00300FC00007FE0007FF8003FFE000FFF 0001FF00000F80C00780C00380E00380E00380F00700FC0E00EFFC00C7F000> 24 22 -2 21 22] 115 dc [ 24 34 -1 33 21] 73 dc [ 32 35 -2 34 31] 104 dc cmtt10.300 sf [<07FE07FF07FE0038003800380038003800380038003800380038003800380038003800 3800386038F038F0707FF07FE01F80> 16 25 -3 24 22] 74 dc 21 @bop1 cmbx12.300 sf 177 42(1.8.1)s 55(Filename)h 17(Extensions)h 177 1023(1.8.2)s 55(Filename)h 17(Inheritance)h cmtt10.300 sf 177 421(FunnelWeb)s 107(:)h 22(.fw)h 177 471(Product)s 151(:)h 22(None.)h 177 521(Documentation)s 19(:)h 22(.tex)h 177 570(Listing)s 151(:)h 22(.lis)h 177 620(Journal)s 151(:)h 22(.jrn)h 243 1302(fw)s 21(sloth)h 21(+J)h 21(+L)h 21(+T)h 1099 1426(sloth.jrn)s 29(sloth.lis)h 114(sloth.tex)h 872 1476(sloth)s 804 1692(@i)s 739(@o)h 462 1742(+x)s 134(+f)h 120(+i)h 138(+j)h 143(+l)h 134(+t)h 192(+o)h 483 1792(.fws)s 90(.fw)h 98(.fwi)h 94(.jrn)h 99(.lis)h 90(.tex)h 804 1842(+f)s 138(+f)h 143(+f)h 134(+f)h 1851 2785(x.y)s cmr10.300 sf 177 147(F)s -3(unnelW)h -3(eb)h 11(is)h 12(capable)h 11(of)h 11(reading)h 12(and)h 11(writing)h 11(a)h 11(v)h -2(ariet)h -1(y)h 11(of)h 11(di\013eren)h -1(t)h 13(kinds)h 12(of)h 11(\014les.)h 17(In)h 12(particular,)h 11(F)h -3(un-)h 177 197(nelW)s -3(eb)h 11(m)h -1(ust)h 10(often)h 11(op)h 1(erates)h 12(in)h 11(an)h 11(en)h -1(vironmen)h -1(t)h 10(where)h 12(the)h 11(same)h 10(information)h 9(is)h 10(stored)h 12(in)h 11(man)h -1(y)h 9(forms)h 177 247(\(e.g.)s 16(prog.fw,)h 15(prog.c,)h 17(pro)h 1(c.exe\).)h 26(File)h 16(extensions)h 18(are)h 16(an)h 17(essen)h -1(tial)h 16(to)h 1(ol)h 16(in)h 16(managi)h -1(ng)h 15(this)h 16(situation.)h 177 297(The)s 14(\014lename)h 13(extensions)h 15(c)h -1(hosen)h 15(for)h 14(F)h -3(unnelW)h -3(eb)h 13(are:)h 177 744(Lo)s -1(w)h -1(ercase)h 15(will)h 13(b)h 1(e)h 14(used)h 15(in)h 13(systems)h 14(that)h 14(are)h 15(case)h 14(sensitiv)h -1(e.)h 177 822(Readers)s 14(who)h 13(are)h 14(w)h -1(ondering)h 12(ho)h -1(w)h 13(F)h -3(unnelW)h -3(eb)h 13(cop)h 1(es)h 14(in)h 13(en)h -1(vironmen)h -1(ts)h 12(suc)h -1(h)h 14(as)h 13(UNIX)h 14(where)h 14(there)h 14(are)h 177 872(no)s 14(\014le)h 14(extensions)h 15(should)h 13(refer)h 15(to)h 14(Section)h 14(1.8.3.)h 177 1129(Inheritance)s 14(in)h 11(\014lenames)h 12(refers)h 14(to)h 12(ho)h -1(w)h 12(input)h 12(and)h 12(output)h 12(\014les)h 13(inherit)h 12(parts)h 13(of)h 12(their)h 13(name)h 11(from)h 10(other)h 177 1178(\014lenames)s 13(and)h 14(their)h 14(en)h -1(vironmen)h -1(t.)h 17(F)h -3(or)h 14(example)h 12(if)h 13(the)h 15(comm)h -1(and)h 177 1426(w)s -1(as)h 18(issued,)h 20(y)h -1(ou)h 18(w)h -1(ould)h 17(exp)h 1(ect)h 20(to)h 18(see)h 19(output)h 19(\014les)h 216(,)h 215(,)h 17(and)h 216(.)h 29(The)h 177 1476(output)s 14(\014le)h 15(names)h 13(ha)h -1(v)h -1(e)h 14(inherited)h 14(the)h 15(\\)h 110(".)h 17(The)h 15(follo)h -1(wi)h -1(ng)h 12(table)h 14(giv)h -1(es)h 14(the)h 15(hierarc)h -1(h)h -1(y)h 14(devised)h 15(for)h 177 1526(F)s -3(unnelW)h -3(eb.)h 462 1641(Script)s 70(Input)h 64(Include)h 50(Journal)h 50(List)h 108(Do)h 1(cumen)h -1(t)h 49(Pro)h 1(duct)h 391 1692(1)s 391 1742(2)s 391 1792(3)s 50(\\)h 88(")h 48(\\)h 66(")h 56(\\)h 88(")h 52(\\)h 88(")h 57(\\)h 88(")h 48(\\)h 88(")h 391 1842(4)s 391 1892(5)s 50(DefDir)h 55(Defdir)h 50(Defdir)h 68(Defdir)h 73(Defdir)h 64(Defdir)h 122(Defdir)h 177 2015(The)s 14(follo)h -1(wing)h 12(notes)h 14(explain)h 14(the)h 14(table.)h 228 2139(1.)s 20(This)h 14(sc)h -1(heme)h 14(is)h 14(simil)h -1(ar)h 12(to)h 14(that)h 14(used)h 14(in)h 14(F)h -3(unnelW)h -3(eb)h 13(V1.)h 228 2229(2.)s 20(The)h 14(journal,)h 13(list,)h 12(and)h 14(do)h 1(cumen)h -1(tation)h 12(\014les)h 15(all)h 12(fall)h 12(in)h 14(the)h 14(same)h 13(pattern)h 14(and)h 14(can)h 14(b)h 1(e)h 14(considered)h 281 2278(as)s 14(a)h 14(single)h 13(case.)h 228 2368(3.)s 20(Lev)h -1(el)h 15(1)h 16(has)h 15(the)h 16(highest)h 16(priorit)h -1(y)h 14(b)h 1(ecause)h 18(it)h 15(is)h 15(a)h 15(direct)h 16(sp)h 1(eci\014cation)h 16(b)h -1(y)h 16(the)h 16(user)h 16(in)h 15(the)h 16(input)h 281 2418(\014le.)s 228 2507(4.)s 20(Lev)h -1(el)h 14(2)h 13(comes)h 14(next)h 14(b)h 1(ecause)h 15(this)h 14(is)h 14(also)h 13(a)h 13(direct)h 15(sp)h 1(eci\014cation)h 14(from)h 12(the)h 15(user)h 15(on)h 13(the)h 15(comm)h -1(and)h 281 2557(line.)s 228 2646(5.)s 20(Lev)h -1(el)h 13(3)h 12(pro)h -1(vides)h 13(the)h 14(default)h 12(\014le)h 13(extensions.)h 19(Pro)h 1(duct)h 14(\014les)h 13(do)h 13(not)h 12(inherit)h 13(an)h 13(extension)h 13(as)h 13(they)h 281 2696(could)s 14(b)h 1(e)h 14(of)h 13(an)h -1(y)h 14(t)h -1(yp)h 1(e.)h 228 2785(6.)s 20(Lev)h -1(el)h 12(5)h 13(is)h 12(built)h 12(in)h -1(to)h 11(most)h 12(op)h 1(erating)h 12(systems')h 12(\014le)h 13(sp)h 1(eci\014cation)h 13(systems.)h 17(If)h 13(I)h 12(sp)h 1(ecify)h 13(\014le)h 12(\\)h 66(",)h 281 2835(it)s 13(is)h 14(tak)h -1(en)h 14(to)h 14(mean)h 13(on)h 13(the)h 15(default)h 13(disk)h 14(in)h 13(the)h 15(default)h 13(directory)h -3(.)h 1042 2940(20)s 1394 2 366 1606 r 2 50 365 1656 r 2 50 436 1656 r 2 50 615 1656 r 2 50 778 1656 r 2 50 961 1656 r 2 50 1147 1656 r 2 50 1326 1656 r 2 50 1562 1656 r 2 50 1759 1656 r 1394 2 366 1658 r 2 50 365 1707 r 2 50 436 1707 r 2 50 615 1707 r 2 50 778 1707 r 2 50 961 1707 r 2 50 1147 1707 r 2 50 1326 1707 r 2 50 1562 1707 r 2 50 1759 1707 r 2 50 365 1757 r 2 50 436 1757 r 2 50 615 1757 r 2 50 778 1757 r 2 50 961 1757 r 2 50 1147 1757 r 2 50 1326 1757 r 2 50 1562 1757 r 2 50 1759 1757 r 2 50 365 1807 r 2 50 436 1807 r 2 50 615 1807 r 2 50 778 1807 r 2 50 961 1807 r 2 50 1147 1807 r 2 50 1326 1807 r 2 50 1562 1807 r 2 50 1759 1807 r 2 50 365 1857 r 2 50 436 1857 r 2 50 615 1857 r 2 50 778 1857 r 2 50 961 1857 r 2 50 1147 1857 r 2 50 1326 1857 r 2 50 1562 1857 r 2 50 1759 1857 r 2 50 365 1907 r 2 50 436 1907 r 2 50 615 1907 r 2 50 778 1907 r 2 50 961 1907 r 2 50 1147 1907 r 2 50 1326 1907 r 2 50 1562 1907 r 2 50 1759 1907 r 1394 2 366 1909 r 21 @eop 22 @bop0 cmbx12.300 sf [ 32 35 -2 34 31] 98 dc [ 32 22 -2 21 31] 117 dc [ 40 34 -2 33 44] 78 dc cmtt10.300 sf [<000180000380000380000700000700000E00000E00001C00001C000038000038000070 0000700000E00000E00001C00001C0000380000380000700000700000E00000E00001C00 001C0000380000380000700000700000E00000E00000C00000> 24 32 -2 28 22] 47 dc [ 16 32 -8 28 22] 91 dc [ 16 32 -1 28 22] 93 dc [ 24 32 -2 28 22] 92 dc 22 @bop1 cmbx12.300 sf 177 757(1.8.3)s 55(P)h -2(ortable)h 19(Structure)h 18(of)h 19(File)h 17(Names)h cmtt10.300 sf 1284 191(sloth)s 62(sloth.tex)h 1459 390(sloth.lis)s 96(sloth.tex)h 1079 440(sloth.fw)s 243 1059(UNIX)s 64(/device/dir1/)h -1(dir2/)h -1(name)h 243 1108(VMS)s 86(node::device:)h -1([dir1)h -1(.dir2)h -1(]name)h -1(.ext)h -1(;vn)h 243 1158(MSDOS)s 42(device:\\dir1\\)h -1(dir2\\)h -1(name.)h -1(ext)h 243 1208(MAC)s 86(device:dir1:d)h -1(ir2:n)h -1(ame)h 1529 1711(sloth)s 1470 1761(sloth)s 60(sloth.fw)h 426 1811(walrus)s 641(walrus)h 63(walrus.lis)h 660 2032(sloth)s 990(sloth.fw)h 678 2132(sloth)s 270 2519(sloth.lis)s 1295 2702(.)s 233 2835(.)s cmr10.300 sf 228 42(7.)s 20(Lev)h -1(el)h 15(4)h 15(lo)h 1(oks)h 15(straigh)h -1(tforw)h -1(ard,)h 14(but)h 16(secretly)h 17(conceals)h 16(a)h 15(di\016cult)h 14(design)h 16(decision.)h 22(By)h 15(the)h 16(time)h 281 91(w)s -1(e)h 19(get)h 19(do)h -1(wn)h 18(to)h 18(this)h 19(lev)h -1(el)h 18(of)h 18(inheritance,)h 20(w)h -1(e)h 18(kno)h -1(w)h 19(for)h 18(sure)h 19(that)h 19(the)h 19(\014lename)h 17(has)h 19(already)h 281 141(pic)s -1(k)h -1(ed)h 15(up)h 15(a)h 14(\014le)h 15(extension.)h 21(So)h 15(all)h 13(that)h 15(is)h 15(left)h 14(to)h 15(inherit)h 15(is)h 15(the)h 15(path)h 15(and)h 14(the)h 16(\014lename)h 13(prop)h 1(er.)h 281 191(Ob)s -1(viously)h 13(w)h -1(e)h 14(ha)h -1(v)h -1(e)h 14(to)h 14(inherit)h 14(the)h 15(\014lename)h 13(prop)h 1(er)h 15(\(e.g.)h 141(in)h 212(\),)h 11(but)h 15(should)h 14(w)h -1(e)h 281 241(inherit)s 17(the)h 17(input)h 17(\014le)h 17(path?)h 26(If)h 17(w)h -1(e)h 17(do)h 16(inherit)h 17(the)h 17(input)h 17(\014le)h 17(path,)h 17(\014les)h 17(will)h 15(b)h 1(e)h 18(placed)h 17(in)h 16(the)h 281 291(same)s 15(directory)h 16(as)h 16(the)h 16(input)h 16(\014le.)h 23(If)h 16(w)h -1(e)h 16(don't)h 15(inherit)h 16(the)h 16(input)h 15(\014le)h 16(path,)h 16(\014les)h 16(will)h 14(b)h 1(e)h 17(placed)h 281 340(in)s 13(the)h 14(curren)h -1(t)h 15(directory)h -3(.)h 18(The)h 14(c)h -1(hoice)h 14(I)h 13(ha)h -1(v)h -1(e)h 14(made)h 12(is)h 13(to)h 13(send)h 15(all)h 12(the)h 14(logging)h 12(t)h -1(yp)h 1(e)h 14(\014les)h 13(in)h -1(to)h 13(the)h 281 390(same)s 14(directory)h 17(as)h 15(the)h 16(input)h 15(\014le.)h 23(This)h 15(means,)h 15(for)h 15(example,)h 14(that)h 226(and)h 281 440(will)s 12(generally)h 14(land)h 13(in)h 13(the)h 15(same)h 13(directory)h 14(as)h 190(.)h 17(Ho)h -1(w)h -1(ev)h -1(er,)h 13(I)h 14(ha)h -1(v)h -1(e)h 14(decided)h 15(that)h 14(output)h 281 490(\014les)s 12(should)h 11(b)h 1(e)h 12(sen)h -1(t)h 12(to)h 11(the)h 12(default)h 11(directory)h 12(\(if)h 11(not)h 11(earlier)h 12(sp)h 1(eci\014ed\))h 13(as)h 11(this)h 11(is)h 12(where)h 12(the)h 12(action)h 281 540(is.)s 19(In)h 15(normal)h 12(use,)h 15(the)h 15(mai)h -1(n)h 13(pro)h 1(duct)h 15(of)h 14(F)h -3(unnelW)h -3(eb)h 14(will)h 12(b)h 1(e)h 15(pro)h 1(duct)h 16(\014les)h 14(and)h 14(so)h 15(the)h 15(user)h 15(will)h 281 589(exp)s 1(ect)h 15(them)h 13(to)h 14(app)h 1(ear)h 15(in)h 13(the)h 14(curren)h -1(t)h 16(directory)h 14(b)h -1(y)h 14(default.)h 177 871(Another)s 17(problem)h 15(with)h 15(\014le)h 16(names)h 15(is)h 16(the)h 17(v)h -2(ariation)h 14(of)h 15(their)h 17(structure)h 18(b)h 1(et)h -1(w)h -1(een)h 17(en)h -1(vironmen)h -1(ts.)h 24(Here)h 177 921(are)s 14(examples)h 13(of)h 14(some)h 13(of)h 13(the)h 14(formats)h 13(that)h 14(prev)h -2(ail:)h 177 1345(Isn't)s 14(it)h 14(amazing)h 11(that)h 14(none)h 14(of)h 14(these)h 15(p)h 1(opular)h 14(systems)h 14(use)h 14(the)h 15(same)h 13(format?)h 177 1429(The)s 16(solution)h 15(to)h 15(dealing)h 15(with)h 15(these)h 17(di\013eren)h -1(t)h 16(formats)h 14(is)h 15(to)h 16(classify)h 15(them)h 15(as)h 15(non-p)h 1(ortable)h 15(and)h 16(hide)h 177 1479(the)s 16(functions)h 15(that)h 15(manipul)h -1(ate)h 14(them)h 14(in)h 14(the)h 16(mac)h -1(hine-sp)h 1(eci\014c)h 15(mo)h 1(dule)h 13(of)h 15(F)h -3(unnelW)h -3(eb.)h 20(Luc)h -1(kily)h 14(there)h 177 1528(are)s 14(not)h 14(man)h -1(y)h 12(suc)h -1(h)h 15(functions.)h 177 1612(The)s 15(mai)h -1(n)h 12(problem)h 13(is)h 14(coping)h 13(with)h 14(\014le)h 14(systems)h 14(that)h 14(do)h 14(not)h 14(explicitly)h 12(supp)h 1(ort)h 15(\014le)h 14(extensions.)h 19(With)h 177 1661(so)s 14(man)h -1(y)h 12(p)h 1(ossible)h 14(input)h 13(and)h 13(output)h 14(\014les,)h 14(F)h -3(unnelW)h -3(eb)h 13(all)h 12(but)h 14(needs)h 15(suc)h -1(h)h 15(extensions.)h 19(Mac)h -1(hines)h 14(that)h 177 1711(do)s 15(not)h 15(supp)h 1(ort)h 16(them)h 14(p)h 1(ose)h 15(di\016cult)h 15(design)h 15(decisions.)h 22(If)h 14(the)h 16(user)h 16(sp)h 1(eci\014es)h 17(\\)h 110(")h 13(as)h 15(an)h 15(input)h 15(\014le)h 177 1761(on)s 12(suc)h -1(h)h 12(a)h 12(non-extension-supp)h 1(orting)h 12(system,)h 12(should)h 12(F)h -3(unnelW)h -3(eb)h 11(lo)h 1(ok)h 11(for)h 132(or)h 188(?)h 16(If)h 11(the)h 177 1811(user)s 15(sp)h 1(eci\014es)h 160(as)h 14(a)h 14(listing)h 13(\014le,)h 13(should)h 14(it)h 13(generate)h 160(or)h 234(?)h 177 1894(Some)s 13(p)h 1(ossible)h 14(solutions)h 13(are:)h 228 2032(1.)s 20(Regard)h 14(the)h 14(\014lename)h 136(as)h 14(ha)h -1(ving)h 12(an)h 14(empt)h -1(y)h 13(extension.)h 19(It)h 14(will)h 12(then)h 15(default)h 13(to)h 190(.)h 228 2132(2.)s 20(Regard)h 20(the)h 21(\014lename)h 147(as)h 21(ha)h -1(ving)h 19(a)h 19(blank)h 20(but)h 20(full)h 19(extension.)h 37(That)h 20(is,)h 21(it)h 20(cannot)h 20(b)h 1(e)h 281 2181(o)s -1(v)h -1(erwritten)h 14(b)h -1(y)h 14(inheritance,)h 14(but)h 14(it)h 14(remains)h 13(blank.)h 228 2282(3.)s 20(Pro)h -1(vide)h 16(an)h 16(extra)h 17(syn)h -1(tactic)h 16(mec)h -1(hanism)h 14(to)h 16(allo)h -1(w)h 15(the)h 17(user)h 17(to)h 16(sp)h 1(ecify)h 17(one)h 16(or)h 16(other)h 17(of)h 15(the)h 17(t)h -1(w)h -1(o)h 281 2331(options)s 13(ab)h 1(o)h -1(v)h -1(e.)h 177 2469(My)s 15(solution)h 13(w)h -1(as)h 15(to)h 14(c)h -1(ho)h 1(ose)h 16(the)h 15(\014rst)h 15(option.)h 19(Use)h 16(of)h 14(F)h -3(unnelW)h -3(eb)h 14(results)h 15(in)h 14(lots)h 15(of)h 14(\014les)h 15(lying)h 13(around)h 177 2519(\(e.g.)s 212(\))h 13(and)h 14(it)h 14(is)h 14(hard)h 15(to)h 14(see)h 16(ho)h -1(w)h 14(the)h 15(user)h 16(will)h 12(cop)h 1(e)h 16(with)h 14(them)h 14(all)h 13(without)h 14(some)h 13(kind)h 14(of)h 177 2569(naming)s 12(discipline.)h 17(If)h 14(a)h 13(naming)h 12(discipline)h 13(has)h 14(to)h 14(b)h 1(e)h 15(used,)h 14(it)h 14(mig)h -1(h)h -1(t)h 12(as)h 14(w)h -1(ell)h 13(b)h 1(e)h 15(the)h 14(F)h -3(unnelW)h -3(eb)h 14(one.)h 177 2652(Th)s -1(us)h 15(the)h 15(names)h 13(of)h 14(all)h 13(\014les)h 15(read)h 14(and)h 15(written)h 14(b)h -1(y)h 15(F)h -3(unnelW)h -3(eb)h 13(will)h 13(ha)h -1(v)h -1(e)h 14(a)h 14(\014le)h 15(extension)h 15(of)h 13(from)h 13(zero)h 177 2702(to)s 14(three)h 15(letters)h 15(separated)h 15(from)h 13(the)h 14(rest)h 15(of)h 13(the)h 15(\014lename)h 13(b)h -1(y)h 13(a)h 14(\\)h 22(".)h 177 2785(The)s 11(only)h 10(exception)h 12(is)h 11(pro)h 1(duct)h 11(\014les)h 11(whose)h 12(extension)h 11(is)h 11(left)h 10(unde\014ned.)h 19(Pro)h 1(duct)h 12(\014les)h 11(need)h 12(not)h 10(con)h -1(tain)h 177 2835(a)s 14(\\)h 22(")h 18(and)h 13(a)h 14(\014le)h 14(extension,)h 14(although)h 13(they)h 14(can)h 14(inherit)h 14(one)h 14(if)h 13(the)h 15(user)h 15(wishes.)h 1042 2940(21)s 22 @eop 23 @bop0 cmmi10.300 sf [<381F004E61804681C04701C08F01C08E01C00E01C00E01C01C03801C03801C03801C07 00380710380710380E10380E20700640300380> 24 18 -2 17 25] 110 dc cmbx10.432 sf [<007F800001FFF00007FFF8000FE0FE001FC07E003F803F007F003F807F003F80FF001F C0FF001FC0FF001FC0FF001FC0FF001FE0FF001FE0FF001FE0FF001FE07F003FE07F003F E07F003FE03F807FE01F80FFE00FE1DFE003FF9FE0007E1FE000001FE000001FC000001F C000001FC000003FC01F003F803F803F803F807F003F807F003F80FE003F01FC001E03F8 000FFFE00007FF800001FE0000> 32 39 -3 38 34] 57 dc [ 40 39 -2 26 38] 112 dc [ 40 42 -3 41 38] 104 dc [ 24 6 -1 16 23] 45 dc cmtt10.300 sf [<0FE03FF87FFCF01EF00EF00E601E007C00F801F003E003C00380038003800380030000 000000000000000300078007800300> 16 25 -3 24 22] 63 dc 23 @bop1 cmmi10.300 sf 1769 1149(n)s cmbx10.432 sf 177 42(1.9)s 70(Sp)h 2(ecifying)h 31(Constrain)h -2(ts)h 33(on)h 34(the)h 32(Num)h -3(b)h 2(er)h 31(of)h 34(Instan)h -2(tia-)h 334 116(tions)s cmtt10.300 sf 1885 605(@Z)s 279 655(@M)s 243 770(0..1)s 217(@$@)h -1(@Z==.)h -1(..)h 308 819(1)s 218(@$@)h -1(==...)h 308 869(1..n)s 152(@$@)h -1(@M==.)h -1(..)h 243 919(0.....n)s 151(@$@)h -1(@Z@M=)h -1(=...)h 1682 1446(@?)s 98(@M)h 347 1496(@$)s 1219 1610(@?)s 393(@M)h 1124 1693(@$@@\(@5@\)=)h -1(=@{@-)h 177 2022(This)s 21(is)h 22(a)h 21(short)h 21(macro.)h 177 2072(With)s 21(only)h 21(a)h 22(line)h 21(or)h 21(two@})h 177 2172(@$@@?@M@\()h -1(@5@\)=)h -1(=@{@-)h 177 2222(This)s 21(is)h 22(a)h 21(short)h 21(macro.)h 177 2271(With)s 21(only)h 21(a)h 22(line)h 21(or)h 21(two@})h 177 2371(@$@@\(@5@\))h -1(@?@M=)h -1(=@{@-)h 177 2421(This)s 21(is)h 22(a)h 21(short)h 21(macro.)h 177 2471(With)s 21(only)h 21(a)h 22(line)h 21(or)h 21(two@)h 177 2635(@$)s 1714 2735(==)s 68(+=)h 910 2785(01==)s 1329 2835(==)s cmr10.300 sf 177 232(Exp)s 1(erience)h 17(with)h 14(F)h -3(unnelW)h -3(eb)h 14(V1)h 14(demonstrated)h 15(the)h 15(need)h 15(to)h 15(b)h 1(e)h 15(able)h 14(to)h 14(sp)h 1(ecify)h 15(in)h 15(macro)h 13(de\014nitions)h 177 281(ho)s -1(w)h 12(man)h -1(y)h 11(times)h 12(it)h 12(w)h -1(as)h 13(exp)h 1(ected)h 14(that)h 13(the)h 13(macro)h 12(w)h -1(ould)h 12(b)h 1(e)h 13(used.)h 18(F)h -3(unnelW)h -3(eb)h 13(V1)h 12(generates)h 14(an)h 13(error)h 177 331(if)s 13(a)h 13(macro)h 12(is)h 13(not)h 13(used,)h 14(but)h 14(p)h 1(ermits)h 13(macros)h 12(to)h 14(b)h 1(e)h 14(called)h 13(more)h 12(than)h 13(once.)h 19(This)h 13(caused)h 15(problems)h 12(for)h 177 381(macro)s 13(libraries,)h 13(whic)h -1(h)h 14(w)h -1(ould)h 13(b)h 1(e)h 14(included,)h 14(but)h 14(whose)h 14(macros)h 13(w)h -1(ere)h 15(often)h 14(not)h 14(called.)h 177 455(By)s 14(default,)h 12(F)h -3(unnelW)h -3(eb)h 13(V3)h 14(requires)h 14(that)h 14(eac)h -1(h)h 13(macro)h 13(\(except)h 15(for)h 13(the)h 14(ones)h 13(attac)h -1(hed)h 14(to)h 14(output)h 13(\014les\))h 177 505(b)s 1(e)h 19(called)h 17(exactly)h 18(once.)h 30(Ho)h -1(w)h -1(ev)h -1(er,)h 19(it)h 18(also)h 17(pro)h -1(vides)h 18(syn)h -1(tax)h 18(that)h 17(allo)h -1(ws)h 17(the)h 18(user)h 19(to)h 18(sp)h 1(ecify)h 18(that)h 18(a)h 177 555(macro)s 13(b)h 1(e)h 14(allo)h -1(w)h -1(ed)h 12(to)h 14(b)h 1(e)h 14(called)h 13(zero)h 15(times)h 12(or)h 14(man)h -1(y)h 12(times.)h 17(This)h 13(allo)h -1(ws)h 13(a)h 13(macro)h 12(to)h 14(b)h 1(e)h 14(sp)h 1(eci\014ed)h 15(with)h 177 605(the)s 14(follo)h -1(wing)h 11(p)h 1(ermissible)h 13(ranges)h 14(of)h 13(n)h -1(um)h -1(b)h 1(ers)h 13(of)h 13(calls)h 13(dep)h 1(ending)h 14(on)h 13(the)h 14(presence)h 16(or)h 14(absence)h 15(of)h 13(\\)h 44(")h 177 655(and)s 14(\\)h 44(":)h 177 1034(The)s 14(only)h 14(t)h -1(w)h -1(o)h 13(problems)h 13(with)h 13(this)h 14(sc)h -1(heme)h 14(are:)h 228 1149(1.)s 20(It)h 11(is)h 11(incompatible)h 10(with)h 11(F)h -3(unnelW)h -3(eb)h 10(V1)h 12(\014les,)h 11(as)h 12(the)h 11(default)h 11(in)h 11(F)h -3(unnelW)h -3(eb)h 11(V1)h 11(is)h 11(1)h 7(.)h 7(.)h 7(.)h 41(whereas)h 281 1198(the)s 16(default)h 16(in)h 15(new)h 16(F)h -3(unnelW)h -3(eb)h 15(is)h 16(1.)h 23(This)h 16(is)h 15(not)h 16(a)h 16(big)h 15(problem)h 14(b)h 1(ecause)h 17(most)h 15(macros)h 15(in)h 15(the)h 281 1248(old)s 13(\014les)h 14(w)h -1(ere)h 15(used)h 15(exactly)h 14(once.)h 19(Only)h 13(a)h 14(few)h 14(macros)h 13(will)h 12(ha)h -1(v)h -1(e)h 14(to)h 14(b)h 1(e)h 14(c)h -1(hanged.)h 228 1331(2.)s 20(What)h 13(should)h 14(the)h 15(syn)h -1(tax)h 13(b)h 1(e?)h 19(\(ab)h 1(o)h -1(v)h -1(e)h 14(is)h 14(a)h 13(sneak)h 15(preview)h 14(only!\))h 177 1446(The)s 14(initial)h 11(prop)h 1(osal)h 13(for)h 13(syn)h -1(tax)h 13(w)h -1(as)h 13(to)h 13(allo)h -1(w)h 12(the)h 14(user)h 14(to)h 13(insert)h 14(zero,)h 14(one,)h 13(or)h 13(b)h 1(oth)h 13(of)h 75(and)h 70(just)h 177 1496(after)s 14(the)h 72(of)h 13(a)h 14(macro)h 13(de\014nition.)h 17(Ho)h -1(w)h -1(ev)h -1(er,)h 14(this)h 14(has)h 14(the)h 15(follo)h -1(wi)h -1(ng)h 12(dra)h -1(wbac)h -1(ks:)h 228 1610(1.)s 20(It)h 14(uses)h 15(t)h -1(w)h -1(o)h 13(sequence)h 1(s)h 16(that)h 14(are)h 14(desirable)h 14(to)h 14(reserv)h -1(e)h 16(\()h 62(for)h 14(conditionals)h 13(and)h 71(for)h 13(macro\).)h 228 1693(2.)s 20(It)h 14(stops)h 14(the)h 15(user)h 15(from)h 12(searc)h -1(hing)h 14(for)h 14(the)h 14(string)h 203(to)h 13(\014nd)h 14(the)h 15(de\014nition)h 13(of)h 14(a)h 13(macro.)h 177 1808(These)s 14(are)h 12(signi\014can)h -1(t)h 12(problems.)h 17(Here)h 13(are)h 13(some)h 11(alternativ)h -1(e)h 12(ideas)h 13(for)h 12(where)h 13(to)h 12(p)h 1(osition)h 12(the)h 13(mo)h 1(di\014ers)h 177 1858(in)s 14(the)h 14(macro)h 13(de\014nition:)h 177 2586(The)s 14(\014rst)h 13(form)h 11(puts)h 14(me)h 12(o\013)h 13(b)h 1(ecause)h 14(I)h 13(think)h 13(that)h 13(it)h 12(is)h 13(a)h 13(go)h 1(o)h 1(d)h 12(visual)h 12(rule)h 13(to)h 13(start)h 14(all)h 12(the)h 13(macros)h 12(with)h 221 2635(.)s 17(The)h 12(second)h 13(form)h 10(puts)h 13(me)h 10(o\013)h 12(b)h 1(ecause)h 14(it)h 11(detac)h -1(hes)h 13(the)h 13(macro)h 10(name)h 11(from)h 10(the)h 13(parameter)h 11(list,)h 11(th)h -1(us)h 177 2685(making)s 11(it)h 13(lo)h 1(ok)h 12(less)h 14(lik)h -1(e)h 13(a)h 13(call,)h 12(whic)h -1(h)h 13(is)h 14(desirable)h 13(syn)h -1(tactic)h 14(resonance.)h 20(The)h 13(third)h 14(form)h 11(is)h 14(messy)h 13(but)h 177 2735(probably)s 15(w)h -1(ork)h -2(able.)h 23(Because)h 17(w)h -1(e)h 16(are)h 16(righ)h -1(t)h 16(next)h 16(to)h 15(the)h 16(tested)h 18(constan)h -1(t)h 16(string)h 16(\(either)h 76(or)h 59(\))h 16(w)h -1(e)h 177 2785(could)s 15(augmen)h -1(t)h 13(it)h 14(further.)h 21(F)h -3(or)h 15(example,)h 115(could)h 14(allo)h -1(w)h 13(a)h 14(macro)h 14(to)h 14(b)h 1(e)h 16(called)h 14(from)h 13(0)h 14(to)h 15(1)h 14(times.)h 177 2835(The)s 14(main)h 12(problem)h 13(with)h 13(this)h 14(is)h 14(that)h 14(w)h -1(e)h 14(are)h 14(trying)h 14(to)h 14(phase)h 14(out)h 71(an)h -1(yw)h -1(a)h -1(y!)h 1042 2940(22)s 23 @eop 24 @bop0 cmbx10.432 sf [<003F800001FFF00007E0FC000FC07E001F803F001F803F003F001F803F001F807F001F C07F001FC07F001FC07F001FC0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001F E0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001F E07F001FC07F001FC07F001FC07F001FC03F001F803F001F801F803F001F803F000FC07E 0007E0FC0001FFF000003F8000> 32 39 -3 38 34] 48 dc [ 48 41 -3 40 49] 66 dc cmbx10.300 sf [ 32 28 -2 27 31] 69 dc [<7FFE1FFE007FFE1FFE0007F001800003F803800001FC07000000FC06000000FE0C0000 007F1C0000003F380000003FB00000001FE00000000FE00000000FE000000007F0000000 03F800000007F80000000FFC0000000CFE000000187E000000387F000000703F80000060 1F800000C01FC00001C00FE000018007F000030007F000FFF03FFF80FFF03FFF80> 40 28 -1 27 36] 88 dc cmtt10.300 sf [<00F80003FE000FFF001F0F003E0F003C0F00780600700000F00000F3F800EFFE00FFFE 00F80F00F00780F00780E00380F00380F00380700380780780780F003C1F001FFE000FF8 0003E000> 24 25 -2 24 22] 54 dc [<007C0000FC0000DC0001DC00039C00039C00071C000F1C000E1C001E1C003C1C00381C 00781C00F01C00FFFFE0FFFFE0FFFFE0001C00001C00001C00001C00001C0001FFC001FF C001FFC0> 24 25 -1 24 22] 52 dc cmr10.300 sf [ 48 1 0 11 42] 124 dc 24 @bop1 cmsy10.300 sf 239 1110(\017)s 239 1194(\017)s 239 1279(\017)s 239 1363(\017)s 239 1448(\017)s cmbx10.432 sf 177 750(1.10)s 70(The)h 25(Relati)h -1(onship)h 24(Bet)h -2(w)h -2(een)h 23(Do)h 2(cum)h -1(en)h -2(t)h 23(Structure)h 25(and)h 368 825(Macro)s 24(Structure)h cmbx10.300 sf 177 292(Decision:)s 177 1642(Basically)s 13(a)h 14(T)h 439 1651(E)s 464 1642(X)s 15(\014le:)h 177 2342(Confusion)s 11(in)h 13(F)h -4(unnelW)h -4(eb)h 11(V1)h 14(Heading)h 12(Num)h -1(b)h 1(ering:)h 177 2567(Hierarc)s -1(hical)h 10(n)h -1(um)h -1(berin)h -1(g)h 10(is)h 12(messy)h 11(for)h 12(macros:)h cmtt10.300 sf 1059 167(@?)s 669 217(@Z)s 1416 292(@Z)s 257(@M)h 177 486(@$@@\(@5@\))h -1(@Z@M+)h -1(=@{@-)h 177 536(This)s 21(is)h 22(a)h 21(short)h 21(macro.)h 177 585(With)s 21(only)h 21(a)h 22(line)h 21(or)h 21(two@})h 1233 1642(.fw)s 382 1691(.fw)s 177 1791(@)s 1312 2091(@A)s 21(@B)h 21(@C)h 1182 2217(@)s 243 2835(Write)s 20(out)h 21(the)h 22(output[6.7.)h -1(4.3])h cmr10.300 sf 177 42(Nev)s -1(ertheless)h 1(,)h 16(all)h 13(the)h 16(logic)h 13(p)h 1(oin)h -1(ts)h 15(to)h 14(after)h 15(the)h 15(parameter)h 15(list)h 14(as)h 15(the)h 15(b)h 1(est)h 16(place)h 15(to)h 14(lo)h 1(cate)h 15(this)h 15(infor-)h 177 91(mation.)s 177 167(After)s 21(some)h 18(though)h -1(t,)h 21(it)h 19(w)h -1(as)h 20(decided)h 21(that)h 20(the)h 20(\\)h 44(")h 35(sequence)h 22(b)h 1(e)h 20(reserv)h -1(ed)h 22(for)h 20(a)h 19(p)h 1(ossible)h 20(future)h 177 217(conditional)s 13(facilit)h -1(y)h -3(,)h 11(and)h 14(so)h 71(w)h -1(as)h 14(used)h 15(instead.)h 384 292(The)s 15(p)h 1(osition)h 13(is)h 14(after)h 14(the)h 14(parameter)h 14(list.)h 17(The)h 15(notation)h 13(is)h 71(for)h 13(zero,)h 15(and)h 71(for)h 13(man)h -1(y)h -3(.)h 177 368(Example)s 13(of)h 13(\014nal)h 13(syn)h -1(tax:)h 177 942(Ha)s -1(ving)h 15(already)h 16(decided)h 17(up)h 1(on)h 16(a)h 16(fully)h 14(hierarc)h -1(hical)h 16(do)h 1(cumen)h -1(t)h 16(structure,)h 18(I)h 16(determined)h 16(to)h 16(re\014ne)h 17(the)h 177 992(details.)s 18(The)h 14(issues)h 15(to)h 14(b)h 1(e)h 15(addressed)h 15(w)h -1(ere)h 15(as)h 14(follo)h -1(ws:)h 281 1110(Ho)s -1(w)h 13(should)h 14(the)h 15(hierarc)h -1(hical)h 13(structure)h 16(connect)h 16(to)h 13(the)h 15(macro)h 13(structure?)h 281 1194(Ho)s -1(w)h 13(can)h 15(bac)h -1(kw)h -1(ards)h 14(compatibil)h -1(it)h -1(y)h 11(b)h 1(e)h 15(ac)h -1(hiev)h -1(ed?)h 18(Should)h 14(it?)h 281 1279(Should)s 13(the)h 15(macros)h 13(b)h 1(e)h 14(cross)h 15(reference)h 1(d)h 16(b)h -1(y)h 13(section)h 15(or)h 14(b)h -1(y)h 14(de\014nition?)h 281 1363(Should)s 13(nameless)h 14(sections)h 15(inherit)h 14(macro)h 12(names)h 13(as)h 14(headings?)h 281 1448(Should)s 13(w)h -1(e)h 14(simply)h 12(use)h 15(T)h 708 1457(E)s 731 1448(X)s 14(macros)h 13(to)h 14(structure)h 16(the)h 14(do)h 1(cumen)h -1(t?)h 177 1566(After)s 15(some)h 13(though)h -1(t,)h 13(I)h 14(arriv)h -1(ed)h 14(at)h 13(the)h 15(follo)h -1(wi)h -1(ng)h 12(though)h -1(ts:)h 607 1642(One)s 13(option)h 12(is)h 12(simply)h 10(to)h 12(treat)h 13(eac)h -1(h)h 90(\014le)h 13(as)h 12(a)h 12(T)h 1481 1651(E)s 1504 1642(X)s 12(\014le)h 13(laced)h 12(with)h 12(macros.)h 177 1691(That)s 18(is,)h 18(a)h 101(\014le)h 18(could)h 17(b)h 1(e)h 19(structured)h 20(as)h 18(a)h 17(real)h 18(T)h 1117 1700(E)s 1140 1691(X)s 18(\014le)h 18(from)h 16(whic)h -1(h)h 18(F)h -3(unnelW)h -3(eb)h 17(could)h 18(extract)h 177 1741(macro)s 13(de\014nitions.)h 18(This)h 13(approac)h -1(h)h 14(is)h 14(feasible)h 13(b)h 1(ecause)h 16(T)h 1157 1750(E)s 1180 1741(X)s 14(could)h 13(b)h 1(e)h 15(programm)h -1(ed)h 12(to)h 14(resp)h 1(ond)h 15(to)h 13(the)h 212 1791(sequences)s 15(in)h 12(the)h 14(same)h 12(w)h -1(a)h -1(y)h 12(that)h 13(F)h -3(unnelW)h -3(eb)h 12(resp)h 1(onds)h 14(to)h 13(them.)h 17(Th)h -1(us,)h 12(there)h 14(w)h -1(ould)h 12(b)h 1(e)h 14(no)h 12(need)h 14(for)h 177 1841(W)s -3(ea)h -1(v)h -1(e.)h 177 1916(I)s 15(rejected)h 17(this)h 15(approac)h -1(h,)h 15(\014rst)h 15(b)h 1(ecause)h 17(it)h 15(is)h 15(to)h 1(o)h 14(t)h -1(yp)h 1(esetter)h 1(-dep)h 1(e)h 1(nden)h -1(t,)h 17(and)h 15(second)h 16(b)h 1(ecause)h 17(it)h 14(com-)h 177 1966(plicates)s 16(the)h 17(inclusion)h 15(of)h 16(an)h -1(y)h 15(sort)h 16(of)h 16(complicated)h 14(p)h 1(ost-pro)h 1(cess)h 1(ing)h 17(in)h 15(the)h 17(do)h 1(cumen)h -1(tation)h 15(\014le.)h 24(This)h 177 2016(w)s -1(ould)h 13(ha)h -1(v)h -1(e)h 14(to)h 14(b)h 1(e)h 14(implem)h -1(en)h -1(ted)h 13(in)h 13(T)h 818 2025(E)s 841 2016(X.)s 177 2091(A)s 14(b)h 1(etter)h 15(approac)h -1(h)h 14(is)h 13(to)h 14(use)h 14(an)h 14(in)h -1(v)h -1(en)h -1(ted)h 14(section)h 14(notation)h 13(\(e.g.)h 192(\).)h 13(This)h 14(main)h -1(tai)h -1(ns)h 12(F)h -3(unnel-)h 177 2141(W)s -3(eb's)h 12(t)h -1(yp)h 1(esette)h 1(r)h 15(indep)h 1(endence)h 15(and)h 12(can)h 13(easily)h 12(b)h 1(e)h 14(con)h -1(v)h -1(erted)h 14(in)h -1(to)h 12(T)h 1365 2150(E)s 1388 2141(X)s 13(sectioning)h 12(macros)h 12(b)h -1(y)h 13(W)h -3(ea)h -1(v)h -1(e.)h 177 2217(In)s 13(the)h 14(same)h 12(spirit,)h 12(it)h 13(migh)h -1(t)h 11(b)h 1(e)h 14(w)h -1(orth)h 13(in)h -1(tro)h 1(ducing)h 12(a)h 13(few)h 48(sequences)h 15(for)h 13(certain)h 14(general)h 13(t)h -1(yp)h 1(esetting)h 177 2267(op)s 1(erations)h 14(suc)h -1(h)h 15(as)h 14(italics)h 13(and)h 14(program)h 12(co)h 1(de.)h 1227 2342(F)s -3(unnelW)h -3(eb)h 12(V1)h 12(uses)h 13(t)h -1(w)h -1(o)h 12(lev)h -1(els)h 12(of)h 11(section)h 177 2392(headings,)s 16(but)h 16(n)h -1(um)h -1(b)h 1(ers)h 15(all)h 14(the)h 16(headings)h 16(sequen)h -1(tially)h -3(.)h 22(In)h 16(this,)h 15(it)h 16(is)h 15(a)h 15(little)h 15(confused.)h 24(Clearly)h 15(with)h 177 2442(a)s 20(fully)h 18(hierarc)h -1(hical)h 19(do)h 1(cumen)h -1(t)h 20(structure,)h 22(the)h 21(headings)h 19(cannot)h 20(b)h 1(e)h 20(n)h -1(um)h -1(b)h 1(ered)h 20(sequen)h -1(tially)h 19(|)h 19(the)h 177 2492(n)s -1(um)h -1(b)h 1(ering)h 13(m)h -1(ust)h 13(re\015ect)h 15(the)h 15(structure)h 16(\(e.g.)h 13(3.2.1\).)h 1105 2567(Unfortunately)s -3(,)h 11(hierarc)h -1(hical)h 10(n)h -1(um)h -1(b)h 1(ering)h 10(is)h 10(messy)h 177 2617(and)s 14(confusing)h 13(when)h 15(applied)h 13(to)h 14(macro)h 12(names.)h 18(In)h 14(F)h -3(unnelW)h -3(eb)h 13(V1's)h 14(t)h -1(yp)h 1(eset)h 15(output,)h 14(eac)h -1(h)h 14(macro)h 13(call)h 177 2667(has)s 15(app)h 1(ended)h 15(in)h 14(square)h 15(brac)h -1(k)h -1(ets)h 16(the)h 15(n)h -1(um)h -1(b)h 1(er)h 14(of)h 13(the)h 15(section)h 16(in)h 14(whic)h -1(h)h 14(the)h 15(macro)h 13(is)h 14(de\014ned.)h 21(Use)h 15(of)h 177 2716(hierarc)s -1(hical)h 14(n)h -1(um)h -1(b)h 1(ering)h 12(w)h -1(ould)h 14(b)h 1(e)h 14(somewhat)h 13(messy)h -3(.)h 17(F)h -3(or)h 14(example,)h 12(a)h 13(macro)h 13(call)h 13(migh)h -1(t)h 12(lo)h 1(ok)h 13(lik)h -1(e.)h 1042 2940(23)s 24 @eop 25 @bop0 25 @bop1 cmsy10.300 sf 239 1640(\017)s 239 1741(\017)s 239 1842(\017)s 239 1943(\017)s 239 2045(\017)s 239 2146(\017)s 239 2473(\017)s 239 2574(\017)s 239 2676(\017)s 239 2777(\017)s cmti10.300 sf 696 702(input)s 14(format)h 158(typ)h -2(eset)h 13(output)h cmtt10.300 sf 243 180(This)s 21(macro)h 20(is)h 22(used)h 21(in)h 21(3.4.5,)h 21(1.2,)h 21(7.8.9,)h 20(7.4,)h 21(2.2.1.1.)h 1563 752(.fw)s 692 951(.fw)s 1198 1640(@A)s 25(@B)h 1149 1741(@<@>)s cmbx10.300 sf 177 319(Separate)s 12(n)h -1(um)h -1(b)h 1(eri)h -1(ng)h 11(for)h 13(macros)h 14(and)h 13(headings)h -1(:)h 177 652(Input)s 14(format)h 14(matters)h 13(more)h 15(than)h 14(output)h 13(format:)h 177 1168(Naming)s 17(sections:)h cmr10.300 sf 177 42(Simil)s -1(arly)h -4(,)h 12(cross)h 15(reference)h 16(lists)h 14(w)h -1(ould)h 13(b)h 1(e)h 15(messy:)h 1143 319(One)s 13(idea)h 12(is)h 12(to)h 12(use)h 12(hierarc)h -1(hical)h 12(n)h -1(um)h -1(b)h 1(ering)h 11(for)h 177 369(the)s 13(sections,)h 14(but)h 13(to)h 12(n)h -1(um)h -1(b)h 1(er)h 12(the)h 13(macros)h 12(sequen)h -1(tially)h -3(.)h 16(This)h 13(could)h 12(b)h 1(e)h 13(a)h 13(little)h 12(confusing)h 12(in)h 12(do)h 1(cumen)h -1(ts)h 177 419(without)s 15(m)h -1(uc)h -1(h)h 15(structure,)h 17(but)h 16(w)h -1(ould)h 15(b)h 1(e)h 16(v)h -1(ery)h 16(m)h -1(uc)h -1(h)h 15(less)h 16(messy)h 15(than)h 16(cross)h 16(referencing)h 17(using)h 16(hierar-)h 177 469(c)s -1(hical)h 15(n)h -1(um)h -1(b)h 1(ering.)h 22(Also,)h 15(it)h 15(will)h 14(b)h 1(e)h 16(easier)h 16(to)h 16(\014nd)h 15(macros)h 15(indexed)h 16(b)h -1(y)h 15(a)h 15(sequen)h -1(tial)h 16(n)h -1(um)h -1(b)h 1(er)h 15(than)h 15(b)h -1(y)h 177 519(section,)s 15(whic)h -1(h)h 15(has)h 15(a)h 15(less)h 15(direct)h 16(relationship)h 14(with)h 15(page)h 15(bulk)h 14(and)h 15(n)h -1(um)h -1(b)h 1(er.)h 20(By)h 15(macro)h 13(n)h -1(um)h -1(b)h 1(ering)h 14(is)h 177 568(mean)s -1(t)h 13(the)h 14(sequen)h -1(tial)h 14(n)h -1(um)h -1(b)h 1(ering)h 13(of)h 13(eac)h -1(h)h 14(macro)h 13(b)h 1(o)h 1(dy)h 14(part)h 14(through)h 14(the)h 15(whole)h 13(do)h 1(cumen)h -1(t.)h 1197 652(A)s -1(t)h 13(this)h 14(p)h 1(oin)h -1(t)h 12(w)h -1(e)h 14(realize)h 14(that)h 13(a)h 13(distinction)h 177 702(should)s 12(b)h 1(e)h 12(made)h 10(b)h 1(et)h -1(w)h -1(een)h 13(the)h 251(and)h 11(the)h 261(.)h 18(The)h 12(critical)h 11(issue)h 12(here)h 13(is)h 12(not)h 11(ho)h -1(w)h 177 752(the)s 16(program)h 14(should)h 15(b)h 1(e)h 17(formatted)h 14(for)h 15(prin)h -1(ting,)h 15(but)h 15(rather)h 17(the)h 16(format)h 13(of)h 15(its)h 97(\014le.)h 22(The)h 16(t)h -1(yp)h 1(eset)h 177 802(output)s 14(can)h 15(alw)h -1(a)h -1(ys)h 13(b)h 1(e)h 14(c)h -1(hanged)h 15(simply)h 12(b)h -1(y)h 14(\014ddling)h 13(with)h 13(W)h -3(ea)h -1(v)h -1(e.)h 18(Ho)h -1(w)h -1(ev)h -1(er,)h 14(as)h 14(so)h 1(on)h 14(as)h 15(the)h 14(do)h 1(cumen)h -1(t)h 177 851(structuring)s 14(features)h 13(of)h 12(F)h -3(unnelW)h -3(eb)h 12(are)h 13(\014xed,)h 12(they)h 13(will)h 11(b)h 1(e)h 13(used)h 14(in)h 12(dozens)h 13(or)h 12(h)h -1(undreds)h 14(of)h 12(do)h 1(cumen)h -1(ts)h 177 901(and)s 15(it)h 15(will)h 14(b)h 1(e)h 16(v)h -1(ery)h 16(di\016cult)h 15(indeed)h 16(to)h 15(c)h -1(hange)h 16(them.)h 21(Therefore,)h 17(the)h 16(imp)h 1(ortan)h -1(t)h 14(thing)h 14(is)h 16(to)h 15(pro)h -1(vide)h 177 951(as)s 14(sensible)h 15(and)h 14(expressiv)h -1(e)h 15(a)h 93(format)h 12(as)h 14(p)h 1(ossible.)h 177 1035(It)s 11(is)h 11(therefore)h 12(a)h 10(separate)h 12(decision)h 11(as)h 11(to)h 10(whether)h 12(w)h -1(e)h 11(should)h 11(n)h -1(um)h -1(b)h 1(er)h 10(macros)h 10(b)h -1(y)h 10(section)h 11(or)h 11(b)h -1(y)h 11(sequence)h 177 1085(n)s -1(um)h -1(b)h 1(er.)h 17(The)h 15(imp)h 1(ortan)h -1(t)h 12(thing)h 13(is)h 14(to)h 14(address)h 15(the)h 14(format)h 13(and)h 13(rules)h 15(for)h 13(the)h 15(expression)h 15(of)h 13(structure.)h 556 1168(The)s 16(naming)h 13(of)h 15(sections)h 16(requires)h 17(some)h 14(though)h -1(t.)h 22(In)h 16(man)h -1(y)h 13(cases)h 17(\(esp)h 1(ecially)h 15(in)h 177 1218(the)s 19(case)h 19(of)h 17(high-lev)h -1(el)h 17(sections\))h 19(the)h 18(writer)h 19(will)h 16(pro)h -1(vide)h 18(an)h 18(explicit)h 17(name)h 17(for)h 18(a)h 17(section.)h 31(In)h 18(other)h 177 1268(cases,)s 15(pro)h -1(vision)h 13(of)h 13(suc)h -1(h)h 14(a)h 14(name)h 12(will)h 13(merely)h 13(duplicate)h 13(the)h 15(name)h 12(of)h 13(the)h 15(macro)h 12(con)h -1(tained)h 14(within)h 13(the)h 177 1318(section.)s 23(It)h 15(therefore)h 17(mak)h -1(es)h 14(sense)h 17(to)h 15(allo)h -1(w)h 13(the)h 16(user)h 16(to)h 15(omit)h 14(the)h 15(name)h 14(from)h 14(a)h 15(section,)h 15(with)h 15(W)h -3(ea)h -1(v)h -1(e)h 177 1368(naming)s 10(the)h 14(section)h 13(after)h 13(the)h 13(\014rst)h 14(macro)h 11(de\014nition)h 12(in)h 12(the)h 14(section.)h 18(If)h 12(a)h 13(macro)h 11(is)h 12(unnamed)h 12(and)h 12(there)h 177 1417(is)s 14(no)h 14(macro)h 12(in)h 14(the)h 14(section,)h 14(an)h 14(error)h 15(can)h 14(b)h 1(e)h 14(generated.)h 177 1501(All)s 13(these)h 16(though)h -1(ts)h 14(lead)h 13(to)h 14(the)h 14(follo)h -1(wing)h 12(sc)h -1(heme:)h 281 1640(Do)s 1(cumen)h -1(ts)h 13(will)h 13(b)h 1(e)h 14(hierarc)h -1(hically)h 14(structured)h 16(using)h 57(,)h 71(etc.)h 281 1741(Eac)s -1(h)h 14(section)h 15(can)h 14(b)h 1(e)h 14(giv)h -1(en)h 14(a)h 13(name)h 13(delimited)h 12(b)h -1(y)h 102(.)h 281 1842(Sections)s 15(that)h 14(do)h 13(not)h 14(ha)h -1(v)h -1(e)h 14(names)h 13(inherit)h 14(the)h 14(name)h 13(of)h 13(their)h 14(\014rst)h 15(macro.)h 281 1943(If)s 13(a)h 14(section)h 15(do)h 1(es)h 14(not)h 14(ha)h -1(v)h -1(e)h 14(a)h 13(name)h 13(or)h 14(a)h 14(macro,)h 12(it)h 13(is)h 14(erroneous.)h 281 2045(Sections)s 15(will)h 12(b)h 1(e)h 15(n)h -1(um)h -1(b)h 1(ered)h 13(hierarc)h -1(hically)h 13(either)h 15(b)h -1(y)h 14(F)h -3(unnelW)h -3(eb)h 13(or)h 14(b)h -1(y)h 14(T)h 1551 2054(E)s 1574 2045(X.)s 281 2146(Macro)s 12(b)h 1(o)h 1(dy)h 11(parts)h 12(will)h 10(b)h 1(e)h 12(n)h -1(um)h -1(b)h 1(ered)h 11(sequen)h -1(tially)h 11(b)h -1(y)h 11(F)h -3(unnelW)h -3(eb)h 11(and)h 12(cross)h 12(reference)h 1(d)h 13(b)h -1(y)h 11(these)h 281 2196(n)s -1(um)h -1(b)h 1(ers.)h 177 2334(All)s 13(this)h 14(results)h 15(in)h 14(a)h 13(system)h 14(whic)h -1(h:)h 281 2473(Pro)s -1(vides)h 14(a)h 14(hierarc)h -1(hical)h 14(do)h 1(cumen)h -1(t)h 13(structuring)h 15(capabilit)h -1(y)h -3(.)h 281 2574(Is)s 14(t)h -1(yp)h 1(esetter)h 16(indep)h 1(enden)h -1(t.)h 281 2676(Do)s 1(es)h 14(not)h 14(require)h 15(duplication)h 13(b)h 1(et)h -1(w)h -1(een)h 15(heading)h 13(and)h 14(macro)h 13(names.)h 281 2777(Separates)s 14(the)h 13(heading)h 12(and)h 13(macro)h 11(systems)h 13(so)h 12(that)h 13(W)h -3(ea)h -1(v)h -1(e)h 12(can)h 13(b)h 1(e)h 13(con\014gured)h 14(at)h 12(a)h 12(later)h 13(date)h 13(to)h 281 2827(cross)s 15(reference)h 16(in)h 14(di\013eren)h -1(t)h 15(w)h -1(a)h -1(ys)h 13(without)h 14(requiring)h 13(input)h 14(\014les)h 14(to)h 14(b)h 1(e)h 15(rew)h -1(ork)h -1(ed.)h 1042 2940(24)s 25 @eop 26 @bop0 cmtt10.300 sf [<183C3E1E0E0E0E1E1C3C78F060> 8 13 -7 24 22] 39 dc 26 @bop1 cmbx10.432 sf 177 42(1.11)s 70(Diagnostic)h 22(Messages)h 177 2129(1.12)s 70(Summ)h -3(ary)h cmr10.300 sf 177 157(In)s 14(F)h -3(unnelW)h -3(eb,)h 13(all)h 13(error)h 15(messages)h 14(commence)h 13(with)h 14(an)h 14(indicator)h 13(indicating)h 13(the)h 15(sev)h -1(erit)h -1(y)h 15(of)h 13(the)h 15(error)h 177 207(message.)s 18(Here)h 15(are)h 14(some)h 13(of)h 14(the)h 14(formats)h 12(that)h 14(I)h 14(in)h -1(v)h -1(estigated)h 14(b)h 1(efore)h 15(settling)h 13(on)h 14(the)h 15(\014nal)h 13(format:)h 177 2245(This)s 16(rather)h 18(unstructured)h 18(c)h -1(hapter)h 18(has)h 16(addressed)h 18(some)h 16(of)h 15(the)h 17(k)h -1(ey)h 17(design)h 16(decisions)h 17(of)h 16(F)h -3(unnelW)h -3(eb.)h 177 2295(In)s 14(man)h -1(y)h 12(cases,)h 15(the)h 15(alternativ)h -1(es)h 14(ha)h -1(v)h -1(e)h 14(b)h 1(een)h 15(unpleasan)h -1(t,)h 13(but)h 14(I)h 14(am)h 13(con\014den)h -1(t)h 14(that)h 14(in)h 14(all)h 13(cases,)h 14(a)h 14(fully)h 177 2345(w)s -1(ork)h -2(able)h 13(solution)h 13(has)h 14(b)h 1(een)h 15(found.)h 1042 2940(25)s cmtt10.300 sf 177 323(W--Error)s 20(creating)h 20(sloth.)h 177 373(E--Error)s 20(opening)h 21(output)h 20(file.)h 177 423(S--I'm)s 21(a)h 21(teapot.)h 177 473(F--Can't)s 20(open)h 21(output)h 21(file.)h 177 572(W-Error)s 21(creating)h 20(sloth.)h 177 622(E-Error)s 21(opening)h 20(output)h 20(file.)h 177 672(S-I'm)s 21(a)h 22(teapot.)h 177 722(F-Can't)s 21(open)h 20(output)h 21(file.)h 177 822(W:Error)s 21(creating)h 20(sloth.)h 177 871(E:Error)s 21(opening)h 20(output)h 20(file.)h 177 921(S:I'm)s 21(a)h 22(teapot.)h 177 971(F:Can't)s 21(open)h 20(output)h 21(file.)h 177 1071(W:)s 22(Error)h 20(creating)h 20(sloth.)h 152(--)h 21(Format)h 21(chosen.)h 177 1120(E:)s 22(Error)h 20(opening)h 21(output)h 20(file.)h 177 1170(S:)s 22(I'm)h 21(a)h 21(teapot.)h 177 1220(F:)s 22(Can't)h 20(open)h 21(output)h 21(file.)h 177 1320(War-Error)s 20(creating)h 20(sloth.)h 177 1369(Err-Error)s 20(opening)h 20(output)h 21(file.)h 177 1419(Sev-I'm)s 21(a)h 21(teapot.)h 177 1469(Fat-Can't)s 20(open)h 21(output)h 21(file.)h 177 1569(W-Old)s 21(fashioned)h 20(feature.)h 177 1668(W-Old)s 21(fashioned)h 20(feature.)h 177 1768(W--Old)s 21(fashioned)h 20(feature.)h 177 1868(W:)s 22(Old)h 21(fashioned)h 20(feature.)h 177 1967(W:Old)s 21(fashioned)h 20(feature.)h 26 @eop 27 @bop0 27 @bop1 cmr10.300 sf 1042 2940(26)s 27 @eop 28 @bop0 cmbx10.622 sf [<0007FE0000007FFFE00001FFFFF80003FFFFFE000FF01FFF001FC007FFC03F0003FFE0 7E0001FFE07FC000FFF07FE000FFF8FFF0007FF8FFF0007FF8FFF0003FFCFFF0003FFCFF F0003FFCFFF0003FFC7FE0003FFC7FE0003FFC1F80003FFC0000003FFC0000003FF80000 007FF80000007FF80000007FF0000000FFE0000000FFE0000001FFC0000003FF80000003 FF00000007FE0000000FF80000001FF00000001FE00000003F800000007F00000000FE00 000001FC00000003F0003C0007E0003C000FC0003C001F800078003F000078007C000078 00F80000F800F00000F801FFFFFFF803FFFFFFF007FFFFFFF00FFFFFFFF01FFFFFFFF03F FFFFFFF07FFFFFFFF0FFFFFFFFF0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0> 40 56 -5 55 49] 50 dc cmbx10.746 sf [ 40 71 -3 70 45] 73 dc [<007FC00FFC000000FFFFC07FFFC00000FFFFC3FFFFF00000FFFFCFFFFFFC0000FFFFDF F01FFF0000FFFFFF8007FF800003FFFE0001FFC00001FFF80000FFE00001FFF00000FFF0 0001FFE000007FF80001FFE000003FFC0001FFE000003FFC0001FFE000003FFE0001FFE0 00001FFE0001FFE000001FFF0001FFE000001FFF0001FFE000001FFF0001FFE000000FFF 0001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE0 00000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF 8001FFE000000FFF8001FFE000000FFF0001FFE000001FFF0001FFE000001FFF0001FFE0 00001FFE0001FFE000001FFE0001FFE000003FFC0001FFE000003FFC0001FFE000007FF8 0001FFF000007FF80001FFF80000FFF00001FFFC0001FFE00001FFFE0003FFC00001FFFF 0007FF800001FFFFE03FFE000001FFEFFFFFFC000001FFE3FFFFF0000001FFE0FFFF8000 0001FFE01FF800000001FFE0000000000001FFE0000000000001FFE0000000000001FFE0 000000000001FFE0000000000001FFE0000000000001FFE0000000000001FFE000000000 0001FFE0000000000001FFE0000000000001FFE0000000000001FFE0000000000001FFE0 000000000001FFE0000000000001FFE00000000000FFFFFFC000000000FFFFFFC0000000 00FFFFFFC000000000FFFFFFC000000000FFFFFFC000000000> 64 66 -4 45 66] 112 dc cmbx10.432 sf [ 48 41 -3 40 54] 72 dc 28 @bop1 cmbx10.622 sf 177 375(Chapter)s 34(2)h cmbx10.300 sf 502 1454([USDOD83])s cmbx10.746 sf 177 606(F)s -10(unnelW)h -10(eb)h 41(Implemen)h -3(tation)h cmbx10.432 sf 177 869(2.1)s 70(In)h -2(tro)h 2(duction)h 177 1241(2.2)s 70(History)h 22(of)h 24(F)h -6(unnelW)h -6(eb)h 22(Impl)h -1(e)h -1(m)h -2(e)h -1(n)h -2(tati)h -1(ons)h cmr10.300 sf 177 982(This)s 13(c)h -1(hapter)h 13(con)h -1(tains)h 13(notes)h 13(on)h 13(the)h 13(actual)h 12(C)h 13(co)h 1(de)h 13(that)h 13(implem)h -1(en)h -1(ts)h 11(F)h -3(unnelW)h -3(eb)h 12(V3.)h 18(This)h 12(c)h -1(hapter)h 14(is)h 177 1032(rather)s 15(patc)h -1(h)h -1(y)h -3(.)h 20(It)h 14(has)h 15(acted)h 15(mainly)h 12(as)h 14(a)h 15(dumping)h 12(ground)h 14(for)h 15(ideas)h 14(that)h 15(I)h 14(b)h 1(othered)h 16(to)h 14(write)h 15(ab)h 1(out)h 177 1082(during)s 14(dev)h -1(elopmen)h -1(t.)h 177 1354(The)s 16(\014rst)h 17(implem)h -1(en)h -1(tation)h 13(of)h 16(F)h -3(unnelW)h -3(eb)h 15(\(F)h -3(unnelW)h -3(eb)h 15(V1\))h 16(w)h -1(as)h 16(written)h 16(in)h 16(Ada)h 16(in)h 15(Decem)h -1(b)h 1(er)h 16(1986.)h 177 1404(The)s 15(pro)h 2(ject)h 16(w)h -1(as)h 14(initially)h 12(canned)h 15(as)h 15(requiring)h 14(to)h 1(o)h 14(m)h -1(uc)h -1(h)h 14(time,)h 13(but)h 14(w)h -1(as)h 15(resurrecte)h 1(d)h 16(when)h 15(I)h 15(decided)h 177 1454(to)s 13(commi)h -1(t)h 11(to)h 14(Ada)h 259(and)h 13(realized)h 14(that)h 13(I)h 13(needed)h 15(a)h 13(program)h 12(to)h 13(write)h 13(to)h 13(help)h 13(me)h 13(to)h 13(learn)h 177 1504(Ada.)s 18(F)h -3(unnelW)h -3(eb)h 13(V1)h 14(w)h -1(as,)h 14(in)h 13(fact,)h 13(m)h -1(y)h 13(\014rst)h 14(Ada)h 14(program.)h 16(It)h 14(to)h 1(ok)h 14(ab)h 1(out)h 14(one)h 14(mon)h -1(th)h 12(to)h 14(write.)h 177 1576(F)s -3(unnelW)h -3(eb)h 21(V1)h 21(w)h -1(as)h 21(used)h 22(in)h -1(tensiv)h -1(ely)h 21(b)h -1(y)h 21(m)h -1(yself)h 19(to)h 22(write)h 21(Ada)h 21(programs)h 20(from)h 20(Jan)h -1(uary)h 21(1986)h 20(to)h 177 1626(July)s 18(1989)h 17(at)h 18(whic)h -1(h)h 18(time)h 17(I)h 18(\014nished)h 19(m)h -1(y)h 17(Ph.D.)h 17(and)h 18(lost)h 18(access)h 20(to)h 18(the)h 19(V)h -5(AX.)h 18(During)h 18(this)h 18(time)h 17(at)h 177 1676(least)s 16(t)h -1(w)h -1(en)h -1(t)h -1(y)h 16(thousand)h 16(lines)h 15(of)h 15(co)h 1(de)h 16(w)h -1(ere)h 17(generated)h 17(using)h 15(F)h -3(unnelW)h -3(eb.)h 23(Hardly)h 15(an)h -1(y)h -1(one)h 16(but)h 15(m)h -1(yself)h 177 1726(used)s 15(F)h -3(unnelW)h -3(eb.)h 177 1798(After)s 14(losing)h 13(access)h 15(to)h 13(Ada)h 14(and)h 13(the)h 14(V)h -3(ax)h 13(\(and)h 13(hence)h 15(to)h 13(F)h -3(unnelW)h -3(eb\),)h 13(I)h 13(w)h -1(as)h 14(forced)h 14(bac)h -1(k)h 13(to)h 14(program-)h 177 1848(ming)s 9(the)h 11(non-literate)h 11(w)h -1(a)h -1(y)h -3(.)h 16(F)h -3(rom)h 9(time)h 9(to)h 11(time)h 9(I)h 11(found)h 11(that)h 10(I)h 11(needed)h 12(to)h 11(use)h 12(some)h 10(of)h 10(m)h -1(y)h 9(old)h 10(programs)h 177 1898(that)s 15(I)h 14(had)h 15(written)h 15(using)h 14(Ada)h 15(and)h 14(F)h -3(unnelW)h -3(eb.)h 19(I)h 15(knew)h 15(that)h 14(Ada)h 15(w)h -1(ould)h 14(b)h 1(ecome)h 14(a)h -1(v)h -2(ailabl)h -1(e)h 13(on)h 15(more)h 177 1947(mac)s -1(hines,)h 13(but)h 14(certainly)h 14(F)h -3(unnelW)h -3(eb)h 14(w)h -1(ouldn't.)h 17(I)h 14(recognised)h 15(a)h 14(strong)h 14(need)h 15(for)h 13(a)h 14(p)h 1(ortable)h 14(v)h -1(ersion)h 14(of)h 177 1997(F)s -3(unnelW)h -3(eb)h 14(written)h 14(in)h 13(C)h 14(but)h 14(didn't)h 14(ha)h -1(v)h -1(e)h 13(the)h 15(time)h 12(or)h 14(energy)h 15(to)h 14(create)h 15(one.)h 177 2070(Ab)s 1(out)h 20(this)h 20(time)h 19(\(late)h 20(1989\),)h 20(Da)h -1(vid)h 19(Hulse,)h 21(at)h 20(the)h 20(time)h 19(a)h 19(studen)h -1(t)h 21(in)h 20(Computer)h 19(Science)h 21(at)h 20(the)h 177 2119(Univ)s -1(ersit)h -1(y)h 16(of)h 15(Adelaide,)h 16(v)h -1(olun)h -1(teered)h 17(to)h 15(translate)h 16(the)h 17(4000)h 15(line)h 15(Ada)h 16(v)h -1(ersion)h 16(of)h 15(F)h -3(unnelW)h -3(eb)h 15(in)h -1(to)h 15(C.)h 177 2169(T)s -3(o)h 13(m)h -1(y)h 11(kno)h -1(wledge)h 14(this)h 13(translation)h 13(pro)h 1(cess)h 15(to)h 1(ok)h 13(ab)h 1(out)h 13(three)h 15(w)h -1(eeks)h 14(\(in)h 13(Decem)h -1(b)h 1(er)h 14(1989\).)h 17(The)h 14(result)h 177 2219(w)s -1(as)h 14(called)h 14(F)h -3(unnelW)h -3(eb)h 13(V2)h 14(and)h 13(w)h -1(as)h 14(formall)h -1(y)h 12(signed)h 14(in)h -1(to)h 13(the)h 15(public)h 13(domain)h 12(on)h 14(5)h 13(Ma)h -1(y)h 14(1992.)h 177 2291(In)s 18(general,)h 19(Da)h -1(vid)h 16(Hulse)h 19(did)h 17(a)h 18(go)h 1(o)h 1(d)h 18(job.)h 29(Ho)h -1(w)h -1(ev)h -1(er,)h 19(the)h 19(resultan)h -1(t)h 18(co)h 1(de)h 19(su\013ered)h 20(from)h 16(one)h 18(or)h 18(few)h 177 2341(serious)s 15(defects,)h 15(the)h 14(most)h 13(serious)h 15(of)h 13(whic)h -1(h)h 14(w)h -1(as)h 13(a)h 14(lac)h -1(k)h 13(of)h 14(p)h 1(ortabilit)h -1(y)h -3(.)h 177 2414(Lac)s -1(k)h 10(of)h 10(p)h 1(ortabilit)h -1(y)h 9(of)h 9(the)h 11(C)h 10(co)h 1(de,)h 12(com)h -1(bined)h 8(with)h 10(the)h 11(need)h 11(for)h 10(a)h 10(rather)h 11(solid)h 10(design)h 10(review,)h 11(com)h -1(bined)h 177 2463(with)s 17(the)h 17(need)h 18(to)h 16(strengthen)h 19(the)h 17(program)h 15(to)h 17(bring)h 16(it)h 16(up)h 17(to)h 17(pro)h 1(duction)h 17(standard,)h 17(resulted)h 18(in)h 16(m)h -1(y)h 177 2513(p)s 1(erforming)h 10(a)h 12(complete)h 11(rew)h -1(orking)h 11(of)h 11(the)h 13(co)h 1(de.)h 18(The)h 12(C)h 12(co)h 1(de)h 12(w)h -1(as)h 12(en)h -1(tirely)h -3(,)h 11(but)h 12(incremen)h -1(tally)h -3(,)h 10(replaced)h 177 2563(or)s 20(reformatted.)h 36(The)h 21(co)h 1(de)h 20(w)h -1(as)h 20(also)h 20(strengthened)h 22(and)h 20(new)h 20(features)h 21(w)h -1(ere)h 21(added.)h 37(This)h 20(pro)h 1(cess)h 177 2613(to)s 1(ok)h 17(ab)h 1(out)h 18(t)h -1(w)h -1(o)h 17(mon)h -1(ths)h 16(\(No)h -1(v)h -1(em)h -1(b)h 1(er)h 17(and)h 18(Decem)h -1(b)h 1(er)h 18(1991\).)h 28(A)h 17(further)h 19(t)h -1(w)h -1(o)h 17(mon)h -1(ths)h 16(\(appro)h -1(x\))h 18(w)h -1(ere)h 177 2663(sp)s 1(en)h -1(t)h 13(writing)h 12(do)h 1(cumen)h -1(tation,)h 11(constructing)h 13(a)h 12(regression)h 13(test)h 14(suite,)h 12(p)h 1(orting)h 12(the)h 13(program)h 11(to)h 12(di\013eren)h -1(t)h 177 2712(mac)s -1(hines,)h 13(and)h 13(sorting)h 14(out)h 14(the)h 14(legal)h 13(issues)h 15(in)h -1(v)h -1(olv)h -1(ed)h 13(in)h 13(its)h 14(release.)h 177 2785(I)s 14(w)h -1(ould)h 13(lik)h -1(e)h 14(to)h 14(tak)h -1(e)h 14(this)h 14(opp)h 1(ortunit)h -1(y)h 14(to)h 14(record)h 15(a)h 14(debt)h 14(of)h 14(gratitude)h 14(to)h 14(Da)h -1(vid)h 13(Hulse)h 14(who)h 14(translated)h 177 2835(F)s -3(unnelW)h -3(eb)h 13(from)h 11(Ada)h 13(to)h 12(C.)h 13(Although)h 12(m)h -1(y)h 11(rew)h -1(orking)h 13(of)h 12(his)h 13(C)h 13(co)h 1(de)h 14(obliterated)h 13(most)h 11(of)h 13(his)h 12(co)h 1(de,)h 14(his)h 1042 2940(27)s 28 @eop 29 @bop0 cmbx10.432 sf [<1C007F00FF80FF80FFC0FFC0FFC07FC01CC000C000C001C0018001800380070006000E 001C0038003000> 16 21 -5 41 19] 39 dc [ 48 41 -3 40 53] 85 dc cmr8.300 sf [<7FFFF86038184038084038088038048038048038040038000038000038000038000038 0000380000380000380000380000380000380000380000380000380000380007FFC0> 24 23 -1 22 25] 84 dc [ 24 23 0 22 20] 98 dc cmbx10.300 sf [<03F8000F1E001C07003C07803803807803C07803C07803C0F803E0F803E0F803E0F803 E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E07803C07803C03803803C07 801C07000F1E0003F800> 24 27 -2 26 24] 48 dc 29 @bop1 cmr7.300 sf 935 1347(1)s cmr6.300 sf 223 2823(1)s cmti10.300 sf 1736 2039(some)s cmbx10.432 sf 177 308(2.3)s 70(Wh)h -2(y)h 23(F)h -6(unnelW)h -6(eb)h 23(W)h -6(asn't)h 24(Used)h 22(to)h 23(W)h -6(rite)h 22(Itself)h 177 1095(2.4)s 70(Co)h 2(ding)h 22(St)h -2(yle)h cmr8.300 sf 241 2835(The)s 11(standard)h 9(is)h 12(curren)h -1(tly)h 9(una)h -1(v)h -2(aila)h -1(ble)h -1(,)h 10(but)h 11(is)h 11(lik)h -1(ely)h 10(to)h 11(b)h 1(e)h 11(released)h 10(or)h 11(published)h 9(ev)h -1(en)h -1(tual)h -1(ly)h -3(.)h cmbx10.300 sf 177 1538(P)s -1(ortabil)h -1(i)h -1(t)h -2(y:)h 1017 1588([Rabino)s -1(wi)h -1(tz90])h 259 1638([Horton90])s 177 1687([Kernighan88])s 93([ANSI])h 177 1764(Iden)s -1(ti\014)h -1(ers:)h 16([Rabino)h -1(wi)h -1(tz90])h cmtt10.300 sf 177 2209(bp)s 22(-)h 21(Body)h 21(Part.)h 177 2259(cm)s 22(-)h 21(Compare.)h 20(Used)h 21(to)h 22(prefix)h 20(comparison)h 20(routines)h 20(that)h 21(return)h 21([-1,0,1].)h 177 2309(dc)s 22(-)h 21(Document)h 20(component.)h 177 2359(dm)s 22(-)h 21(Dump)h 21(package.)h 177 2408(el)s 22(-)h 21(Element.)h 177 2458(eq)s 22(-)h 21(Equal.)h 21(Used)h 21(to)h 21(prefix)h 21(comparison)h 19(routines)h 20(that)h 21(return)h 21(a)h 22(boolean.)h 177 2508(ex)s 22(-)h 21(Expression.)h 177 2558(f)s 44(-)h 21(Global)h 21(files.)h 177 2608(ll)s 22(-)h 21(List)h 21(of)h 21(lists.)h 177 2658(ln)s 22(-)h 21(Line)h 21(record.)h 177 2707(ls)s 22(-)h 21(List)h 21(Package.)h 177 2757(lr)s 22(-)h 21(Lister)h 21(package.)h cmr10.300 sf 177 42(translation)s 14(w)h -1(as)h 14(piv)h -1(otal)h 12(to)h 14(the)h 15(dev)h -1(elopmen)h -1(t)h 13(pro)h 1(cess.)h 21(Without)h 14(his)h 14(e\013ort)h 15(in)h 13(mo)h -1(ving)h 12(from)h 12(Ada)h 14(to)h 14(C,)h 177 91(I'm)s 13(not)h 16(sure)h 16(that)h 15(I)h 15(w)h -1(ould)h 15(ha)h -1(v)h -1(e)h 15(m)h -1(ustered)h 15(the)h 16(energy)h 16(and)h 15(time)h 14(to)h 15(complete)h 15(the)h 16(pro)h 1(cess)h 17(and)h 15(bring)h 177 141(F)s -3(unnelW)h -3(eb)h 14(up)h 13(to)h 14(its)h 14(curren)h -1(t)h 15(standard.)h 177 426(After)s 19(Kn)h -1(uth)h 19(created)h 19(the)h 19(W)h -3(eb)h 18(literate)h 19(prepro)h 1(cessing)h 20(system,)h 18(he)h 19(re-wrote)h 19(it)h 18(using)h 18(W)h -3(eb)h 18(and)h 18(dis-)h 177 476(tributed)s 13(the)h 13(source)h 13(co)h 1(de)h 13(in)h 12(W)h -3(eb)h 12(source)h 14(form.)h 15(T)h -3(o)h 12(allo)h -1(w)h 10(the)h 13(W)h -3(eb)h 12(source)h 13(co)h 1(de)h 14(to)h 12(b)h 1(e)h 12(tangled)h 12(b)h -1(y)h 12(users)h 177 526(not)s 14(y)h -1(et)h 14(ha)h -1(ving)h 13(a)h 13(cop)h -1(y)h 14(of)h 14(W)h -3(eb,)h 13(he)h 14(also)h 13(included)h 14(the)h 15(tangled)h 13(P)h -1(ascal)h 14(co)h 1(de)h 15(for)h 13(the)h 15(T)h -3(angler.)h 177 602(While)s 18(this)h 18(approac)h -1(h)h 19(is)h 18(heroic)h 19(and)h 19(serv)h -1(es)h 20(to)h 18(con)h -1(v)h -1(ey)h 19(a)h 18(comm)h -1(itm)h -1(en)h -1(t)h 17(and)h 18(a)h 18(con\014dence)h 20(in)h 19(literate)h 177 652(programm)s -1(ing,)h 11(it)h 13(seemed)h 14(to)h 14(me)h 12(that)h 14(writing)h 13(F)h -3(unnelW)h -3(eb)h 13(in)h 13(F)h -3(unnelW)h -3(eb)h 13(w)h -1(ould)h 13(simply)h 12(b)h 1(e)h 14(asking)h 13(for)h 177 702(trouble.)s 18(F)h -3(or)h 11(a)h 11(start,)h 13(it)h 11(w)h -1(ould)h 11(b)h 1(e)h 12(v)h -1(ery)h 12(hard)h 12(to)h 12(mo)h 1(dif)h -1(y)h 10(an)h -1(y)h 11(feature)h 13(of)h 11(F)h -3(unnelW)h -3(eb)h 11(that)h 12(had)h 11(b)h 1(een)h 13(used)h 177 752(to)s 18(write)h 18(F)h -3(unnelW)h -3(eb,)h 17(and)h 18(the)h 18(though)h -1(t)h 18(of)h 17(what)h 17(w)h -1(ould)h 17(happ)h 1(en)h 18(if)h 17(the)h 18(w)h -1(orking)h 17(executable)h 19(b)h 1(ecame)h 177 801(inop)s 1(erativ)h -1(e)h 14(for)h 13(some)h 13(reason)h 15(do)h 1(es)h 15(not)h 13(b)h 1(ear)h 15(thinking)h 13(up)h 1(on.)h 177 878(One)s 18(mill)h -1(ion)h 15(billion)h 15(computer)h 17(programs)h 16(w)h -1(ere)h 19(written)h 18(in)h 16(the)h 18(non-literate)h 18(st)h -1(yle)h 17(b)h 1(efore)h 18(F)h -3(unnelW)h -3(eb)h 177 928(w)s -1(as)h 14(created.)h 20(Wh)h -1(y)h 13(not)h 14(one)h 14(more?)h 177 1213(Although)s 15(F)h -3(unnelW)h -3(eb)h 15(w)h -1(asn't)h 15(co)h 1(ded)h 16(under)h 16(an)h -1(y)h 15(particular)h 15(co)h 1(ding)h 15(standard,)h 16(it)h 15(w)h -1(as)h 15(co)h 1(ded)h 16(in)h 15(accor-)h 177 1263(dance)s 11(with)h 9(a)h 9(fairly)h 9(strict)h 10(p)h 1(ersonal)h 10(st)h -1(yle)h 10(of)h 9(C)h 9(whic)h -1(h)h 10(dev)h -1(elop)h 1(ed)h 10(during)h 10(the)h 10(dev)h -1(elopmen)h -1(t)h 9(of)h 9(F)h -3(unnelW)h -3(eb.)h 177 1312(This)s 17(st)h -1(yle)h 16(w)h -1(as)h 17(subsequen)h -1(tly)h 18(em)h -1(b)h 1(o)h 1(died)h 15(in)h 16(a)h 16(real)h 17(C)h 16(co)h 1(ding)h 17(standard)h 17(prepared)h 17(for)h 17(the)h 17(South)h 16(Aus-)h 177 1362(tralian)s 10(Go)h -1(v)h -1(ernmen)h -1(t)h 10(Departmen)h -1(t)h 11(of)h 10(Lands.)h 36(Unfortunately)h -3(,)h 11(F)h -3(unnelW)h -3(eb)h 11(w)h -1(as)h 11(not)h 11(formall)h -1(y)h 9(dev)h -1(elop)h 1(ed)h 177 1412(under)s 16(the)h 16(standard)h 16(and)h 15(so)h 15(some)h 15(holes)h 15(remain)h 14(in)h 15(F)h -3(unnelW)h -3(eb's)h 15(co)h 1(ding)h 15(st)h -1(yle.)h 22(This)h 15(section)h 16(aims)h 14(to)h 177 1462(describ)s 1(e)h 16(some)h 13(of)h 13(the)h 15(more)h 12(imp)h 1(ortan)h -1(t)h 13(asp)h 1(ects)h 15(of)h 13(the)h 15(co)h 1(ding)h 14(st)h -1(yle.)h 445 1538(This)s 19(w)h -1(as)h 19(a)h 19(ma)h 2(jor)h 17(goal)h 18(of)h 19(the)h 19(F)h -3(unnelW)h -3(eb)h 19(implem)h -1(en)h -1(tatio)h -1(n.)h 32(Tw)h -1(o)h 19(excellen)h -1(t)h 20(b)h 1(o)h 1(oks)h 177 1588(guided)s 19(this)h 19(mo)h -1(v)h -1(e)h 17(to)h 19(p)h 1(ortabilit)h -1(y)h -3(.)h 31(They)h 19(w)h -1(ere)h 348(\(whic)h -1(h)h 19(deals)h 19(with)h 18(C)h 19(co)h 1(de)h 20(itself)h 3(\))h 177 1638(and)s 255(\(whic)h -1(h)h 15(deals)h 16(with)h 15(the)h 16(p)h 1(ortabilit)h -1(y)h 14(of)h 14(v)h -2(arious)h 15(library)h 15(calls\).)h 22(Other)h 16(w)h -1(orks)h 16(suc)h -1(h)h 16(as)h 484 1687(and)s 172(w)h -1(ere)h 15(also)h 13(helpful.)h 730 1764(length)s 11(sp)h 1(eci\014es)h 14(that)h 13(for)h 12(wide)h 12(p)h 1(ortabilit)h -1(y)h -3(,)h 11(iden)h -1(ti\014ers)h 13(of)h 12(blo)h 1(c)h -1(k)h 12(and)h 13(\014le)h 177 1814(scop)s 1(e)h 16(should)h 15(b)h 1(e)h 16(unique)h 15(to)h 15(eigh)h -1(t)h 14(c)h -1(haracters,)h 17(and)h 15(iden)h -1(ti\014ers)h 16(of)h 14(program)h 13(scop)h 1(e)h 16(should)h 15(b)h 1(e)h 16(unique)h 15(to)h 177 1863(six)s 12(c)h -1(haracters.)h 19(I)h 11(ha)h -1(v)h -1(e)h 12(gone)h 11(further)h 13(in)h 11(F)h -3(unnelW)h -3(eb)h 11(and)h 12(actually)h 10(made)h 11(these)h 13(restrictions)h 13(actual)h 11(limi)h -1(ts)h 177 1913(on)s 14(iden)h -1(ti\014er)h 14(length.)h 177 1989(Because)s 18(names)h 15(m)h -1(ust)h 15(b)h 1(e)h 17(so)h 16(short,)h 16(a)h 16(system)h 16(of)h 15(abbreviations)h 16(w)h -1(as)h 16(dev)h -1(elop)h 1(ed)h 16(to)h 16(organize)h 16(the)h 17(iden-)h 177 2039(ti\014ers)s 16(used)h 17(within)h 14(F)h -3(unnelW)h -3(eb.)h 23(Eac)h -1(h)h 15(abbreviation)h 15(consists)h 17(of)h 14(a)h 16(letter)h 16(pair.)h 22(Here)h 17(are)h 122(of)h 15(the)h 177 2089(abbreviations)s 14(used:)h 1042 2940(28)s 709 2 177 2796 r 29 @eop 30 @bop0 cmsy10.300 sf [<1F00308070406060E0E0E0E0E040E00060007000300018001C003300718061C0E0C0E0 E0E0E0E0E060E070C031C0198007000300018001C000C000E040E0E0E0E0E0C0C041C021 801F00> 16 37 -3 28 18] 120 dc 30 @bop1 cmsy10.300 sf 1054 2510(x)s cmbx10.432 sf 177 1218(2.5)s 70(Use)h 22(of)h 23(Mem)h -1(ory)h 177 1721(2.6)s 70(The)h 22(Heap)h cmbx10.300 sf 177 756(P)s -1(oin)h -1(t)h -1(ers:)h 177 831(T)s -1(yp)h 1(es:)h 177 956(File)s 17(names:)h cmtt10.300 sf 177 42(ma)s 22(-)h 21(Macro.)h 177 91(mc)s 22(-)h 21(Macro)h 21(Call.)h 177 141(mn)s 22(-)h 21(Macro)h 21(Name.)h 177 191(op)s 22(-)h 21(Options)h 20(package.)h 177 241(pr)s 22(-)h 21(Parser.)h 177 291(ps)s 22(-)h 21(Position)h 20(record.)h 177 340(sc)s 22(-)h 21(Scrap)h 21(record.)h 177 390(sn)s 22(-)h 21(Section.)h 177 440(tb)s 22(-)h 21(Table)h 21(package.)h 177 490(ty)s 22(-)h 21(Typesetter)h 20(directive.)h 177 540(wf)s 22(-)h 21(Write)h 21(file)h 21(package.)h 177 589(wl)s 22(-)h 21(Write)h 21(with)h 21(EOL)h 21(\(misc.c\).)h 177 639(wr)s 22(-)h 21(Write)h 217(\(misc.c\).)h 1267 756(p)s 910 831(t)s 177 881(p)s 16(tb)h 15(t)h 1300 2735(malloc)s 454 2785(memory)s cmr10.300 sf 381 756(V)s -3(ariables)h 14(or)h 14(t)h -1(yp)h 1(es)h 14(denoting)h 14(p)h 1(oin)h -1(ters)h 14(start)h 15(with)h 13(\\)h 38(".)h 334 831(Names)s 13(denoting)h 13(t)h -1(yp)h 1(es)h 14(end)h 14(in)h 13(\\)h 37(".)h 18(Th)h -1(us,)h 13(a)h 13(t)h -1(yp)h 1(e)h 14(for)h 13(a)h 13(p)h 1(oin)h -1(ter)h 13(to)h 13(a)h 13(table)h 13(w)h -1(ould)h 13(b)h 1(e)h 14(named)h 296 881(.)s 441 956(All)s 16(\014les)h 17(used)h 17(in)h 16(F)h -3(unnelW)h -3(eb)h 16(ha)h -1(v)h -1(e)h 16(\014le)h 16(names)h 16(that)h 17(are)h 16(from)h 15(one)h 17(to)h 16(eigh)h -1(t)h 16(c)h -1(haracters)h 177 1005(long)s 13(and)h 13(\014le)h 13(extensions)h 15(that)h 13(are)h 14(from)h 12(one)h 13(to)h 14(three)h 14(c)h -1(haracters)h 16(long.)h 17(This)h 13(ensures)h 15(that)h 14(the)h 14(\014les)h 14(can)h 177 1055(b)s 1(e)h 15(p)h 1(ortably)h 13(mo)h -1(v)h -1(ed)h 12(to)h 14(all)h 13(kinds)h 14(of)h 13(mac)h -1(hines,)h 12(ev)h -1(en)h 15(MSDOS!)h 177 1334(F)s -3(unnelW)h -3(eb)h 15(is)h 16(not)h 16(a)h 16(mem)h -1(ory-stressed)h 16(program.)h 23(Ho)h -1(w)h -1(ev)h -1(er,)h 16(during)h 15(its)h 16(dev)h -1(elopmen)h -1(t,)h 15(problems)h 15(with)h 177 1384(the)s 15(managem)h -1(en)h -1(t)h 13(of)h 13(memory)h 12(seemed)h 15(to)h 14(crop)h 14(up)h 15(again)h 13(and)h 14(again.)h 18(This)h 14(section)h 15(do)h 1(cumen)h -1(ts)h 14(some)h 13(of)h 177 1434(these)s 15(problems)h 13(and)h 14(the)h 15(solutions)h 13(adopted.)h 177 1509(There)s 22(are)h 20(three)h 22(places)h 20(where)h 22(mem)h -1(ory)h 18(can)h 21(b)h 1(e)h 21(obtained:)h 30(the)h 21(heap,)h 21(the)h 21(stac)h -1(k,)h 22(and)h 20(from)h 18(static)h 177 1558(v)s -2(ariables.)h 17(The)h 15(follo)h -1(wi)h -1(ng)h 12(three)h 15(sections)h 15(deal)h 14(with)h 13(eac)h -1(h)h 15(of)h 13(these)h 15(areas.)h 177 1837(One)s 17(of)h 16(the)h 17(great)h 17(frustrations)h 16(of)h 16(b)h 1(eing)h 17(a)h 16(user)h 17(is)h 16(to)h 17(\014nd)h 16(that)h 17(a)h 16(computer)h 16(program)h 14(is)h 17(complai)h -1(ning)h 177 1887(ab)s 1(out)h 14(lac)h -1(k)h 13(of)h 13(memory)h 12(when)h 14(one)h 14(kno)h -1(ws)h 14(full)h 12(w)h -1(ell)h 14(that)h 14(one)h 14(has)h 14(allo)h 1(cated)h 13(at)h 14(least)h 14(ten)h 14(times)h 13(as)h 14(m)h -1(uc)h -1(h)h 177 1937(memory)s 13(to)h 16(the)h 16(program)h 14(as)h 16(it)h 15(w)h -1(ould)h 15(ev)h -1(er)h 17(need)h 16(to)h 16(do)h 15(its)h 16(job.)h 23(The)h 16(reason)h 16(for)h 16(suc)h -1(h)h 16(error)h 17(messages)h 177 1987(usually)s 18(has)h 19(to)h 19(do)h 18(with)h 18(the)h 20(programm)h -1(er)h 17(setting)h 19(a)h 19(\014xed)h 19(\\reasonable")h 19(lim)h -1(it)h 17(to)h 18(a)h 19(particular)h 18(data)h 177 2037(structure)s 17(and)h 14(then)h 15(lo)h 1(c)h -1(king)h 13(it)h 15(up)h 14(in)h -1(to)h 14(an)h 14(arra)h -1(y)h 14(whose)h 15(b)h 1(ound)h 15(is)h 14(sp)h 1(eci\014ed)h 16(b)h -1(y)h 14(a)h 14(constan)h -1(t.)h 21(While)h 13(the)h 177 2086(use)s 15(of)h 13(arra)h -1(ys)h 14(can)h 14(increase)h 15(the)h 14(sp)h 1(eed)h 15(of)h 13(a)h 14(program,)h 11(it)h 13(also)h 14(means)h 12(that)h 14(the)h 15(user)h 14(cannot)h 14(increase)h 15(the)h 177 2136(capacit)s -1(y)h 14(of)h 14(the)h 15(program)h 13(without)h 14(obtaining)h 13(the)h 15(source)h 16(co)h 1(de)h 15(and)h 15(recompiling)h 12(it,)h 14(whic)h -1(h)h 14(is)h 14(usually)h 14(a)h 177 2186(daun)s -1(ting)h 13(option.)h 177 2261(The)s 13(alternativ)h -1(e)h 13(is)h 12(to)h 13(use)h 14(the)h 13(heap)h 13(for)h 12(all)h 12(data)h 12(structures)h 15(that)h 13(can)h 13(gro)h -1(w)h 12(in)h 13(prop)h 1(ortion)h 12(to)h 13(the)h 13(size)h 13(of)h 177 2311(the)s 12(user's)h 12(input.)h 17(This)h 11(rule)h 12(has)h 11(b)h 1(een)h 12(follo)h -1(w)h -1(ed)h 10(rigorously)h 10(in)h 11(F)h -3(unnelW)h -3(eb.)h 16(This)h 11(means)h 11(that)h 11(as)h 11(memory)h 177 2360(spaces)s 12(increase,)h 12(users)h 12(will)h 9(b)h 1(e)h 11(able)h 11(to)h 10(hand)h 11(their)h 10(v)h -1(ersion)h 11(of)h 10(F)h -3(unnelW)h -3(eb)h 10(more)h 10(mem)h -1(ory)h 9(without)h 10(ha)h -1(ving)h 177 2410(to)s 14(recompile)h 13(it.)h 998 2510(|)s 46(|)h 177 2635(Some)s 16(problems)h 15(arose)h 18(early)h 16(on)h 17(the)h 17(Macin)h -1(tosh)h 17(in)h 16(the)h 17(use)h 18(of)h 16(the)h 17(heap.)h 27(It)h 17(seems)h 17(that)h 16(some)h 16(of)h 16(the)h 177 2685(allo)s 1(cations)h 18(I)h 20(w)h -1(as)h 19(attempting)h 18(to)h 19(mak)h -1(e)h 18(w)h -1(ere)h 20(failing)h 17(for)h 19(some)h 19(obscure)h 21(reason,)h 20(p)h 1(ossibly)h 19(m)h -1(y)h 18(fault.)h 177 2735(Whatev)s -1(er)h 14(it)h 13(w)h -1(as,)h 13(it)h 13(w)h -1(en)h -1(t)h 13(a)h -1(w)h -1(a)h -1(y)h 13(when)h 13(I)h 14(replaced)h 14(direct)h 14(calls)h 13(to)h 157(with)h 13(calls)h 13(to)h 13(a)h 13(mini)h 11(pac)h -1(k)h -2(age)h 177 2785(I)s 14(wrote)h 14(\(called)h 145(\))h 12(that)h 14(allo)h 1(cated)h 13(large)h 13(c)h -1(h)h -1(unks)h 14(of)h 13(memory)h 11(and)h 14(then)h 14(doled)h 13(out)h 14(small)h 11(pieces)h 15(as)h 177 2835(required)s 15(b)h -1(y)h 14(the)h 14(rest)h 15(of)h 13(the)h 15(program.)h 1042 2940(29)s 14 2 1292 756 r 14 2 898 831 r 14 2 202 881 r 14 2 262 881 r 30 @eop 31 @bop0 cmbx10.432 sf [ 32 42 -2 41 36] 107 dc [ 56 41 -1 40 52] 86 dc 31 @bop1 cmtt10.300 sf 629 272(malloc)s 692 2835(sc)s 15(t)h 217(sc)h 15(postn)h cmti10.300 sf 1067 1970(in)s 13(the)h 13(entir)h -2(e)h 12(pr)h -2(o)h -2(gr)h -2(am)h cmbx10.432 sf 177 981(2.7)s 70(The)h 22(Stac)h -2(k)h 177 1796(2.8)s 70(Static)h 21(V)h -6(ariables)h 177 2480(2.9)s 70(Im)h -1(pl)h -1(em)h -3(en)h -2(ti)h -1(ng)h 21(T)h -6(ext)h 23(Inden)h -2(tation)h cmr10.300 sf 177 42(Ha)s -1(ving)h 13(a)h 14(pac)h -1(k)h -2(age)h 13(to)h 14(manage)h 12(all)h 13(the)h 14(memory)h 12(allo)h 1(cation)h 12(had)h 14(t)h -1(w)h -1(o)h 13(other)h 14(b)h 1(ene\014ts.)h 177 122(First,)s 18(only)h 17(one)h 18(c)h -1(hec)h -1(k)h 18(w)h -1(as)h 18(required)h 18(in)h 17(the)h 18(en)h -1(tire)h 18(program)h 16(to)h 17(see)h 19(if)h 17(mem)h -1(ory)h 16(had)h 17(run)h 18(out)h 17(\(in)h 17(the)h 177 172(memory)s 16(pac)h -1(k)h -2(age\),)h 18(and)h 18(if)h 18(that)h 18(failed,)h 17(the)h 19(program)h 17(could)h 18(b)h 1(e)h 18(brough)h -1(t)h 18(to)h 18(a)h 18(screaming)h 18(halt.)h 30(This)h 177 222(organization)s 20(w)h -1(as)h 20(far)h 20(preferable)h 22(to)h 20(ha)h -1(ving)h 20(eac)h -1(h)h 21(piece)h 21(of)h 20(co)h 1(de)h 22(that)h 21(needed)h 22(to)h 20(allo)h 1(cate)h 20(memory)h 177 272(ha)s -1(ving)h 13(to)h 14(c)h -1(hec)h -1(k)h 15(to)h 13(see)h 15(if)h 158(had)h 14(failed.)h 177 352(Second,)s 21(the)h 20(decision)h 20(to)h 19(construct)h 21(a)h 20(mini)h -1(-shell)h 17(within)h 19(F)h -3(unnelW)h -3(eb)h 19(to)h 19(supp)h 1(ort)h 21(regression)h 20(testing)h 177 402(mean)s -1(t)h 11(that)h 12(F)h -3(unnelW)h -3(eb)h 12(prop)h 1(er)h 13(could)h 12(b)h 1(e)h 12(run)h 13(man)h -1(y)h 10(times)h 11(in)h 12(an)h -1(y)h 11(giv)h -1(en)h 12(in)h -1(v)h -1(o)h 1(cation)h 11(of)h 11(F)h -3(unnelW)h -3(eb.)h 17(As)h 177 452(a)s 10(consequence)h 13(it)h 10(w)h -1(as)h 11(necessary)h 12(to)h 11(mak)h -1(e)h 9(sure)h 11(that)h 11(there)h 11(w)h -1(as)h 11(no)h 10(memo)h -1(ry)h 9(leak)h -2(age)h 10(b)h 1(et)h -1(w)h -1(een)h 12(in)h -1(v)h -1(o)h 1(cations)h 177 502(of)s 18(F)h -3(unnelW)h -3(eb)h 19(prop)h 1(er.)h 33(This)h 19(w)h -1(as)h 19(accomplished)h 17(b)h -1(y)h 19(rew)h -1(orking)h 19(the)h 19(memo)h -1(ry)h 17(pac)h -1(k)h -2(age)h 19(to)h 18(op)h 1(erate)h 20(a)h 177 551(w)s -1(atermark)h 12(system.)h 17(The)h 14(user)h 14(of)h 12(the)h 14(pac)h -1(k)h -2(age,)h 12(when)h 13(requesting)h 14(memo)h -1(ry)h -3(,)h 11(could)h 12(request)h 15(\\temp)h 1(orary")h 177 601(or)s 15(\\p)h 1(ermanen)h -1(t".)h 22(If)h 15(p)h 1(ermanen)h -1(t,)h 15(the)h 16(memo)h -1(ry)h 14(pac)h -1(k)h -2(age)h 15(forgot)h 14(that)h 16(it)h 15(had)h 15(allo)h 1(cated)h 15(the)h 16(mem)h -1(ory)h -3(.)h 20(If)h 177 651(temp)s 1(orary)h -3(,)h 12(the)h 14(mem)h -1(ory)h 11(pac)h -1(k)h -2(age)h 13(places)h 14(the)h 14(allo)h 1(cated)h 13(blo)h 1(c)h -1(k)h 13(on)h 13(a)h 13(list.)h 17(There)h 14(w)h -1(as)h 13(then)h 14(a)h 13(function)h 13(in)h 177 701(the)s 12(memory)h 9(pac)h -1(k)h -2(age)h 12(that)h 11(could)h 12(b)h 1(e)h 12(called)h 11(to)h 11(deallo)h 1(cate)h 12(all)h 10(the)h 12(temp)h 1(orary)h 11(memory)h -4(.)h 16(Th)h -1(us,)h 11(so)h 12(long)h 11(as)h 177 751(all)s 13(requests)h 16(for)h 14(mem)h -1(ory)h 12(within)h 13(F)h -3(unnelW)h -3(eb)h 14(prop)h 1(er)h 15(w)h -1(ere)h 15(for)h 13(temp)h 1(orary)h 14(mem)h -1(ory)h -3(,)h 11(and)h 14(that)h 14(memory)h 177 800(w)s -1(as)h 14(freed)h 15(at)h 13(the)h 15(end)h 14(of)h 14(ev)h -1(ery)h 14(run,)h 14(one)h 14(could)h 14(b)h 1(e)h 14(sure)h 15(that)h 14(there)h 15(w)h -1(as)h 14(no)h 14(memo)h -1(ry)h 12(leak)h -2(age.)h 177 1105(F)s -3(or)h 13(a)h 12(while)h 12(during)h 13(the)h 13(dev)h -1(elopmen)h -1(t)h 12(of)h 12(F)h -3(unnelW)h -3(eb)h 12(a)h 13(particularly)h 12(nast)h -1(y)h 13(bug)h 12(pro)h -1(v)h -1(ed)h 13(extremely)h 13(hard)h 177 1155(to)s 16(\014nd.)h 26(The)h 17(symptom)h 13(w)h -1(as)h 16(that)h 17(F)h -3(unnelW)h -3(eb)h 16(w)h -1(ould)h 15(crash,)h 17(sometimes)h 15(at)h 16(random,)h 15(but)h 16(more)h 16(often)h 177 1205(up)s 1(on)h 17(en)h -1(tering)h 17(a)h 17(particular)h 16(function.)h 27(In)h 16(the)h 18(end)h 17(ab)h 1(out)h 17(a)h 16(da)h -1(y)h 17(of)h 16(sp)h 1(eci\014c)h 18(debugging)h 16(w)h -1(as)h 17(required)h 177 1255(b)s 1(efore)h 15(the)h 14(problem)h 12(w)h -1(as)h 14(trac)h -1(k)h -1(ed)h 15(do)h -1(wn)h 13(to)h 14(a)h 13(stac)h -1(k)h 14(problem.)h 17(It)h 14(turned)h 14(out)h 14(that)h 14(someho)h -1(w)h 12(\(either)h 15(the)h 177 1305(fault)s 14(of)h 14(the)h 16(Macin)h -1(tosh)h 14(or)h 15(the)h 15(THINK)h 16(C)h 14(language)h 14(system\),)h 15(only)h 14(6K)h 14(w)h -1(as)h 15(b)h 1(eing)h 15(allo)h 1(cated)h 14(for)h 14(stac)h -1(k)h 177 1354(space!!!!!!!)s 177 1435(This)s 13(exp)h 1(erience)h 14(led)h 13(me)h 11(imm)h -1(ediately)h 10(to)h 13(go)h 12(through)h 12(the)h 14(en)h -1(tire)h 13(program)h 11(and)h 12(eliminate)h 11(\(or)h 12(remo)h -1(v)h -1(e)h 12(to)h 177 1485(the)s 15(heap\))h 14(an)h -1(y)h 13(automatic)h 12(v)h -2(ariable)h 13(declarations)h 14(that)h 14(used)h 15(more)h 13(than)h 14(one)h 14(h)h -1(undred)h 14(or)h 14(so)h 14(b)h -1(ytes.)h 177 1565(The)s 14(lesson)h 14(is)h 14(clearly)h 13(that)h 14(C)h 13(programs)h 13(that)h 13(use)h 15(more)h 12(than)h 14(a)h 13(few)h 14(thousand)h 13(b)h -1(ytes)h 15(of)h 13(stac)h -1(k)h 14(space)h 14(are)h 177 1615(risking)s 13(their)h 15(p)h 1(ortabilit)h -1(y)h -3(.)h 16(All)h 13(large)h 14(data)h 13(structures)h 16(should)h 14(b)h 1(e)h 15(placed)h 14(in)h 13(the)h 15(heap.)h 177 1920(Static)s 11(v)h -2(ariables)h 9(also)h 10(pro)h -1(v)h -1(ed)h 10(a)h 10(problem)h 9(on)h 11(the)h 11(Macin)h -1(tosh.)h 16(It)h 11(turns)h 11(out)h 10(that)h 11(the)h 11(Macin)h -1(tosh)h 10(THINK)h 11(C)h 177 1970(compiler)s 11(do)h 1(es)h 12(not)h 12(allo)h -1(w)h 10(more)h 11(than)h 12(32K)h 11(of)h 11(statics)h 391(.)h 17(F)h -3(or)h 11(a)h 12(while)h 11(this)h 12(restriction)h 177 2020(w)s -1(as)h 17(a)h 16(serious)h 18(threat)h 18(to)h 16(the)h 18(program)h 15(as)h 17(it)h 16(w)h -1(as)h 17(disco)h -1(v)h -1(ered)h 18(that)h 17(constan)h -1(t)h 17(strings)h 17(w)h -1(ere)h 18(included)h 17(in)h 177 2070(this)s 14(total!)h 18(Ho)h -1(w)h -1(ev)h -1(er,)h 14(some)h 13(searc)h -1(hing)h 14(rev)h -1(ealed)h 15(a)h 13(compiler)h 13(option)h 13(that)h 14(remo)h -1(v)h -1(ed)h 13(the)h 15(strings)h 14(from)h 12(the)h 177 2119(static)s 14(category)h -3(.)h 177 2200(Nev)s -1(ertheless)h 1(,)h 17(the)h 16(32K)h 16(lim)h -1(it)h 13(is)h 16(rather)h 16(sev)h -1(ere.)h 25(Again,)h 15(it)h 15(seems)h 16(that)h 15(for)h 16(p)h 1(ortabilit)h -1(y)h 14(reasons,)h 16(C)h 16(pro-)h 177 2250(grams)s 15(that)h 16(use)h 16(a)h 16(lot)h 15(of)h 16(static)h 16(v)h -2(ariables)h 15(are)h 16(risking)h 16(their)h 16(p)h 1(ortabilit)h -1(y)h -3(.)h 22(As)h 16(a)h 16(result,)h 17(the)h 16(F)h -3(unnelW)h -3(eb)h 177 2300(co)s 1(de)h 15(a)h -1(v)h -1(oids)h 13(static)h 14(v)h -2(ariables)h 13(where)h 15(p)h 1(ossible)h 14(in)h 14(fa)h -1(v)h -1(our)h 13(of)h 13(the)h 14(heap.)h 177 2605(A)s -1(t)h 21(one)h 21(p)h 1(oin)h -1(t)h 20(during)h 20(the)h 21(dev)h -1(elopmen)h -1(t)h 20(of)h 20(F)h -3(unnelW)h -3(eb,)h 21(text)h 22(inden)h -1(tation)h 20(w)h -1(as)h 20(fully)h 20(impl)h -1(em)h -1(en)h -1(ted.)h 177 2654(Ho)s -1(w)h -1(ev)h -1(er,)h 12(it)h 12(w)h -1(as)h 12(subsequen)h -1(tly)h 13(remo)h -1(v)h -1(ed)h 11(b)h 1(ecause)h 13(it)h 12(w)h -1(as)h 12(considered)h 13(a)h 12(dangerous)h 12(feature.)h 18(This)h 12(section)h 177 2704(records)s 17(the)h 16(w)h -1(a)h -1(y)h 15(in)h 15(whic)h -1(h)h 16(text)h 16(inden)h -1(tation)h 15(w)h -1(as)h 15(implem)h -1(en)h -1(ted)h 14(so)h 16(that)h 16(if)h 14(the)h 16(feature)h 17(ev)h -1(er)h 16(has)h 16(to)h 15(b)h 1(e)h 177 2754(put)s 14(bac)h -1(k,)h 14(this)h 14(tec)h -1(hnique)h 14(can)h 15(b)h 1(e)h 14(used)h 15(again.)h 177 2835(1.)s 18(Create)h 15(a)h 13(new)h 15(\014eld)h 14(in)h 13(the)h 109(record)h 16(call)h 182(.)h 1042 2940(30)s 14 2 739 2835 r 14 2 1037 2835 r 31 @eop 32 @bop0 cmtt10.300 sf [<03800007E0000FE0001E70001C70001C70001C70001C77E01CE7E01DE7E00FC7000F8E 000F0E001E0E003F1C007F1C00739C00E3F800E1F800E0F1C0E0F1C071F9C07FFFC03F9F 801E0700> 24 25 -1 24 22] 38 dc [<7F0FE0FF8FF07F0FE01C07801C0F001C0E001C1C001C3C001C78001CF0001CE0001DF0 001FF0001FF8001F38001E1C001C1C001C0E001C0E001C07001C07001C03807F07E0FF8F F07F07E0> 24 25 0 24 22] 75 dc 32 @bop1 cmr10.300 sf 177 342(2.)s 17(Mo)h 1(dify)h 10(the)h 12(scanner)h 13(so)h 11(that)h 11(it)h 11(generates)h 13(this)h 11(\014eld.)h 18(Sendtext)h 12(should)h 11(b)h 1(e)h 12(mo)h 1(di\014ed)h 10(so)h 11(that)h 11(it)h 11(accepts)h 177 391(an)s 14(argumen)h -1(t)h 13(for)h 13(the)h 175(v)h -2(alue.)h 177 2835(Then)s 15(all)h 12(the)h 15(calls)h 13(to)h 14(sendtext)h 15(ha)h -1(v)h -1(e)h 14(to)h 14(b)h 1(e)h 14(c)h -1(hanged:)h 1042 2940(31)s cmtt10.300 sf 308 42(char)s 21(*sc_postn;)h 20(/*)h 21(Pointer)h 20(in)h 22(the)h 21(range)h 21([sc_first,s)h -1(c_las)h -1(t+1].)h 237(*/)h 657 91(/*)s 21(It)h 21(is)h 22(the)h 21(minimum)h 20(possible)h 20(value)h 21(of)h 22(sc_postn)h 20(for)h 108(*/)h 657 141(/*)s 21(which)h 21(EOL)h 21(does)h 21(not)h 21(appear)h 21(in)h 21(*sc_postn..*s)h -1(c_la)h -1(st.)h 85(*/)h 657 191(/*)s 21(i.e.)h 21(Points)h 21(to)h 21(the)h 21(byte)h 21(following)h 20(the)h 21(first)h 21(EOL)h 21(in)h 65(*/)h 657 241(/*)s 21(the)h 21(scrap)h 21(or)h 21(sc_first)h 20(if)h 22(EOL)h 21(does)h 21(not)h 21(appear.)h 173(*/)h 556 391(p)s 15(postn)h 177 492(LOCAL)s 21(void)h 21(sendtext)h 20(P_\(\(p_ps_t,ch)h -1(ar)h 20(*,char)h 20(*,char)h 21(*,bool\)\);)h 177 542(LOCAL)s 21(void)h 21(sendtext\(p_t)h -1(kps,p)h -1(_firs)h -1(t,p_l)h -1(ast,)h -1(p_pos)h -1(tn,is)h -1(_whit)h -1(e\))h 177 592(/*)s 22(Appends)h 20(a)h 21(text)h 21(token)h 21(to)h 22(the)h 21(end)h 21(of)h 21(the)h 21(token)h 21(list.)h 544(*/)h 177 642(/*)s 22(IN:)h 21(p_ps)h 21(is)h 21(a)h 22(pointer)h 20(to)h 21(a)h 22(position)h 20(structure)h 20(giving)h 21(the)h 21(position)h 20(of)h 21(the)h 65(*/)h 177 691(/*)s 109(first)h 20(character)h 20(of)h 22(the)h 21(token.)h 914(*/)h 177 741(/*)s 22(IN:)h 21(p_first)h 20(and)h 21(p_last)h 21(point)h 21(to)h 21(the)h 21(first)h 21(and)h 21(last)h 21(byte)h 21(of)h 21(the)h 22(text)h 20(scrap.)h 21(*/)h 177 791(/*)s 22(IN:)h 21(p_postn)h 20(has)h 21(the)h 21(same)h 21(definition)h 20(as)h 21(sc_postn)h 21(\(see)h 21(fwdata.h\).)h 259(*/)h 177 841(/*)s 22(IN:)h 21(is_white)h 20(should)h 20(be)h 22(set)h 21(to)h 21(TRUE)h 21(iff)h 21(scrap)h 21(is)h 22(entirely)h 20(whitespace.)h 150(*/)h 177 891(p_ps_t)s 21(p_tkps;)h 177 941(char)s 43(*p_first;)h 177 990(char)s 43(*p_last;)h 177 1040(char)s 43(*p_postn;)h 177 1090(bool)s 65(is_white;)h 177 1140({)s 199 1190(tk_t)s 21(token;)h 199 1289(/*)s 21(Empty)h 21(text)h 21(scraps)h 21(should)h 20(never)h 21(be)h 21(generated.)h 20(*/)h 199 1339(assert\(p_fir)s -1(st<=p)h -1(_last)h -1(,"sen)h -1(dtext)h -1(:)h 20(Text)h 21(scrap)h 21(bounds)h 20(are)h 21(bad."\);)h 199 1439(/*)s 21(If)h 22(ch=EOL)h 20(then)h 21(we)h 22(should)h 20(be)h 22(scanning)h 20(more)h 21(text,)h 20(not)h 22(shipping)h 20(it!)h 21(*/)h 199 1488(assert\(ch!=E)s -1(OL,"s)h -1(entte)h -1(xt:)h 20(Shipping)h 20(text)h 21(while)h 20(still)h 21(more)h 21(to)h 22(scan."\);)h 199 1588(/*)s 21(Check)h 21(that)h 21(p_postn)h 20(is)h 22(in)h 21(range.)h 21(See)h 21(definition)h 20(in)h 21(fwdata.h.)h 20(*/)h 199 1638(assert\(p_fir)s -1(st<=p)h -1(_post)h -1(n)h 20(&&)h 21(p_postn<=p_las)h -1(t+1,)h 352 1688("sendtext:)s 19(p_postn)h 21(is)h 21(out)h 21(of)h 22(range."\);)h 199 1787(/*)s 21(Debug:)h 21(Check)h 21(the)h 21(p_postn)h 20(field)h 21(using)h 21(a)h 21(brute)h 21(force)h 21(check.)h 20(*/)h 199 1837({)s 221 1887(char)s 21(*i,*j;)h 221 1937(j=p_first;)s 221 1987(for)s 21(\(i=p_first;i)h -1(<=p_l)h -1(ast;i)h -1(++\))h 286 2036(if)s 22(\(*i==EOL\))h 352 2086(j=i+1;)s 221 2136(assert\(j==p)s -1(_post)h -1(n,"se)h -1(ndtex)h -1(t:)h 20(sc_postn)h 20(field)h 21(is)h 21(incorrect."\);)h 199 2186(})s 199 2286(/*)s 21(Load)h 21(the)h 21(text)h 21(token.)h 21(*/)h 199 2335(token.tk_kin)s -1(d)h 173(=)h 21(TK_TEXT;)h 199 2385(ASSIGN\(token)s -1(.tk_p)h -1(s,*p_)h -1(tkps\))h -1(;)h 199 2435(token.tk_sc.)s -1(sc_fi)h -1(rst)h 20(=)h 21(p_first;)h 199 2485(token.tk_sc.)s -1(sc_la)h -1(st)h 42(=)h 21(p_last;)h 199 2535(token.tk_sc.)s -1(sc_po)h -1(stn)h 20(=)h 21(p_postn;)h 199 2584(token.tk_whi)s -1(te)h 151(=)h 21(is_white;)h 199 2634(token.tk_par)s -1(no)h 151(=)h 21(0;)h 199 2684(ls_add\(token)s -1(_list)h -1(,PV)h 20(&token\);)h 177 2734(})s 14 2 581 391 r 32 @eop 33 @bop0 cmtt10.300 sf [ 8 32 -9 28 22] 124 dc [<7F1FC0FFBFE07F1FC01C07001C07001C07001C07001C07001C07001C07001FFF001FFF 001FFF001C07001C07001C07001C07001C07001C07001C07001C07001C07007F1FC0FFBF E07F1FC0> 24 25 -1 24 22] 72 dc 33 @bop1 cmsy10.300 sf 239 2605(\017)s 239 2835(\017)s cmti10.300 sf 1265 2450(b)s -2(ase)h cmr10.300 sf 177 1442(The)s 14(dump)h 13(co)h 1(de)h 15(needs)h 15(to)h 14(b)h 1(e)h 14(c)h -1(hanged)h 15(to)h 1(o!)h 177 2400(3.)s 37(Ov)h -1(er)h 22(in)h 20(the)h 21(T)h -3(angle)h 19(mo)h 1(dule,)h 20(create)h 22(a)h 20(massiv)h -1(e)h 19(arra)h -1(y)h 20(of)h 20(p)h 1(oin)h -1(ters)h 21(to)h 20(scraps)h 22(to)h 20(b)h 1(e)h 21(used)h 22(as)h 20(a)h 177 2450(stac)s -1(k.)h 19(Main)h -1(tain)h 13(p)h 1(oin)h -1(ters)h 14(in)h -1(to)h 14(the)h 14(stac)h -1(k)h 15(called)h 180(and)h 102(\(simila)h -1(r)h 13(to)h 14(the)h 14(blank)h 13(inden)h -1(tation)h 177 2500(v)s -2(ariables\).)h 18(Implem)h -1(en)h -1(t)h 12(the)h 15(follo)h -1(wi)h -1(ng:)h 281 2605(T)s -3(o)h 14(write)h 16(out)h 15(a)h 15(scrap,)h 16(scan)h 15(it)h 15(b)h -1(yte)h 16(b)h -1(y)h 15(b)h -1(yte.)h 22(Output)h 16(eac)h -1(h)h 16(b)h -1(yte.)h 22(When)h 15(y)h -1(ou)h 15(hit)h 15(an)h 15(EOL,)h 15(p)h 1(op)h 281 2655(the)s 15(stac)h -1(k)h 15(bac)h -1(k)h 15(to)h 102(.)h 20(Then)h 15(write)h 15(out)h 15(an)h 14(EOL)h 15(follo)h -1(w)h -1(ed)h 13(b)h -1(y)h 15(the)h 15(stac)h -1(k)h 15(con)h -1(ten)h -1(ts)h 16(but)h 15(writing)h 281 2705(eac)s -1(h)h 12(scrap)h 13(only)h 12(from)h 131(to)h 12(end)h 12(end)h 13(of)h 11(eac)h -1(h)h 13(scrap.)h 18(When)h 12(y)h -1(ou)h 12(ha)h -1(v)h -1(e)h 12(\014nished)h 12(the)h 13(new)h 12(scrap,)h 281 2755(push)s 14(it)h 14(on)h 14(the)h 14(stac)h -1(k.)h 281 2835(When)s 14(y)h -1(ou)h 13(hit)h 14(a)h 14(new)h 14(macro)h 13(to)h 13(expand,)h 14(sa)h -1(v)h -1(e)h 102(.)h 17(Restore)h 15(it)h 13(later.)h 1042 2940(32)s cmtt10.300 sf 177 42(/*)s 22(@)h 21(instructs)h 20(FunnelWeb)h 20(to)h 21(replace)h 21(the)h 21(special)h 20(construct)h 20(with)h 21(the)h 21(*/)h 177 91(/*)s 22(special)h 20(character.)h 20(Luckily)h 20(one)h 21(appears)h 20(just)h 21(before)h 21(the)h 21(@)h 22(!!)h 108(*/)h 177 141(/*)s 22(Note:)h 20(FALSE)h 21(is)h 21(OK)h 22(because)h 20(space)h 21(is)h 21(not)h 21(a)h 22(legal)h 21(specialch.)h 150(*/)h 177 191(/*)s 22(Note:)h 20(Setting)h 21(parameter)h 20(p_postn)h 20(to)h 21(p_ch-1)h 21(is)h 21(OK)h 22(as)h 21(EOL)h 21(is)h 22(not)h 21(a)h 21(*/)h 177 241(/*)s 152(legal)h 21(specialch.)h 913(*/)h 177 291(sendtext\(&ps_)s -1(spec,)h -1(p_ch-)h -1(1,p_c)h -1(h-1,p)h -1(_ch-1)h -1(,FAL)h -1(SE\);)h 177 340(break;)s 177 440(/*)s 22(+)h 21(instructs)h 20(FunnelWeb)h 20(to)h 21(insert)h 21(an)h 21(EOL.)h 21(We)h 22(can't)h 20(look)h 21(to)h 22(the)h 21(end)h 21(of)h 21(*/)h 177 490(/*)s 22(the)h 21(previous)h 20(line)h 21(to)h 21(find)h 21(an)h 22(EOL)h 21(as)h 21(this)h 21(might)h 21(be)h 21(the)h 21(first)h 21(line.)h 64(*/)h 177 540(/*)s 22(Running)h 20(ahead)h 21(to)h 21(the)h 21(end)h 21(of)h 22(the)h 21(line)h 21(is)h 21(expensive,)h 20(and)h 21(having)h 21(the)h 64(*/)h 177 589(/*)s 22(liner)h 20(mini-package)h 20(maintain)h 20(a)h 21(variable)h 20(for)h 22(it)h 21(would)h 21(be)h 21(extra)h 173(*/)h 177 639(/*)s 22(housekeepi)h -1(ng.)h 20(Instead)h 20(of)h 21(all)h 22(this,)h 20(we)h 22(just)h 21(point)h 20(to)h 22(a)h 21(static.)h 151(*/)h 177 689({CONST)s 21(static)h 20(char)h 21(stateol)h 21(=)h 21(EOL;)h 199 739(sendtext\(&ps)s -1(_spec)h -1(,&sta)h -1(teol,)h -1(&stat)h -1(eol,\()h -1(&sta)h -1(teol\))h -1(+1,TR)h -1(UE\);})h 177 789(break;)s 177 888(/*)s 22(If)h 21(we)h 21(hit)h 21(something)h 20(that)h 21(ends)h 21(a)h 22(text)h 21(token)h 21(*/)h 177 938(/*)s 22(then)h 21(we)h 21(can)h 21(transmit)h 20(a)h 22(white)h 21(text)h 21(token.)h 64(*/)h 177 988(if)s 22(\(ch==speci)h -1(alch)h 19(||)h 22(ch==EOFCH\))h 243 1038({sendtext\()s -1(&ps_s)h -1(tart,)h -1(p_fir)h -1(st,p_)h -1(ch-1,)h -1(MAX\()h -1(p_sol)h -1(,p_fi)h -1(rst\),)h -1(TRUE\))h -1(;)h 20(return;})h 177 1137(/*)s 22(Otherwise)h 19(we)h 22(have)h 21(some)h 21(more)h 21(\(non-white\))h 19(text)h 21(to)h 22(scan.)h 20(*/)h 177 1187(/*)s 22(We)h 21(can)h 21(then)h 21(send)h 21(a)h 22(non-white)h 20(text)h 21(token.)h 303(*/)h 177 1237(while)s 21(\(ch!=special)h -1(ch)h 20(&&)h 21(ch!=EOFCH\))h 243 1287(NEXTCH;)s 177 1337(sendtext\(&ps_)s -1(start)h -1(,p_fi)h -1(rst,p)h -1(_ch-1)h -1(,MAX\()h -1(p_so)h -1(l,p_f)h -1(irst\))h -1(,FALS)h -1(E\);)h 352 1548(wf_str\(p_w)s -1(f,"\\")h -1("\);)h 177 1597(assert\(token-)s -1(>tk_s)h -1(c.sc_)h -1(first)h 19(!=NULL,"dm_tk)h -1(ls:)h 20(NULL)h 21(ptr1."\);)h 177 1647(assert\(token-)s -1(>tk_s)h -1(c.sc_)h -1(last)h 41(!=NULL,"dm_tk)h -1(ls:)h 20(NULL)h 21(ptr2."\);)h 177 1697(for)s 21(\(i=token->tk_s)h -1(c.sc_)h -1(first)h -1(;)h 20(i<=token->tk)h -1(_sc.s)h -1(c_las)h -1(t;)h 20(i++\))h 221 1747({)s 243 1797(if)s 21(\(i==token->t)h -1(k_sc.)h -1(sc_po)h -1(stn\))h 308 1846(wf_str\(p_wf,)s -1(""\))h -1(;)h 243 1896(if)s 21(\(*i=='\\n'\))h 308 1946(wf_wl\(p_wf,")s -1("\);)h 243 1996(else)s 308 2046(dm_byte\(p_wf)s -1(,*\(\(u)h -1(byte_)h 19(*\))h 22(i\)\);)h 221 2095(})s 177 2145(if)s 22(\(i==token-)h -1(>tk_s)h -1(c.sc_)h -1(postn)h -1(\))h 243 2195(wf_str\(p_w)s -1(f,")h -1("\);)h 177 2245(wf_str\(p_wf,")s -1(\\""\);)h 177 2295(})s 1017 2450(current)s 609 2655(base)s 665 2705(postn)s 1085 2835(base)s 33 @eop 34 @bop0 34 @bop1 cmtt10.300 sf 262 42(postn)s 177 158(The)s 21(rain)h 21(in)h 22(Spain)h 177 208(falls)s 21(mainly)h 20(@)h 1260 324(@)h 230(falls)h 177 374(mainly)s 439 423(postn)s cmr10.300 sf 177 42(The)s 137(\014eld)h 14(solv)h -1(es)h 14(the)h 15(big)h 13(problem)h 13(of)h 13(ho)h -1(w)h 13(to)h 14(cop)h 1(e)h 15(with)h 13(something)h 13(lik)h -1(e)h 13(this:)h 177 324(The)s 21(trouble)h 21(is)h 20(that)h 21(w)h -1(e)h 21(w)h -1(an)h -1(t)h 20(to)h 20(text)h 21(inden)h -1(t)h 21(the)h 21(lines)h 21(in)h 389(with)h 20(just)h 21(\\)h 330 374(".)s 31(Ho)h -1(w)h -1(ev)h -1(er,)h 20(this)h 19(string)h 18(is)h 18(only)h 18(part)h 19(of)h 18(a)h 18(scrap.)h 33(The)h 19(solution)h 17(is)h 19(to)h 18(get)h 19(the)h 19(scanner)h 20(to)h 177 423(record,)s 16(in)h 14(the)h 140(\014eld)h 15(of)h 14(eac)h -1(h)h 15(scrap,)h 16(the)h 15(p)h 1(osition)h 14(of)h 15(the)h 15(\014rst)h 16(b)h -1(yte)h 15(with)h 15(a)h 14(EOL-free)h 16(run)h 15(to)h 15(the)h 177 473(end)s 15(of)h 13(the)h 14(scrap.)h 177 548(This)s 16(sc)h -1(heme)h 16(is)h 16(v)h -1(ery)h 17(e\016cien)h -1(t)h 16(b)h 1(ecause)h 18(all)h 15(w)h -1(e)h 16(are)h 17(doing)h 15(is)h 16(pushing)h 16(and)h 16(p)h 1(opping)h 15(p)h 1(oin)h -1(ters)h 17(to)h 16(scraps)h 177 598(on)s 16(a)h 16(stac)h -1(k)h 17(arra)h -1(y)h -3(.)h 25(The)h 16(main)h 14(disadv)h -2(an)h -1(tage)h 16(is)h 16(that)h 16(the)h 17(arra)h -1(y)h 16(m)h -1(ust)h 16(necessarily)h 17(b)h 1(e)h 17(\014nite)h 16(and)h 17(w)h -1(ould)h 177 648(imp)s 1(ose)h 13(a)h 14(lim)h -1(it)h 12(on)h 13(the)h 15(depth)h 14(of)h 14(inden)h -1(tation)h 13(nesting)h 14(\(not)h 14(a)h 14(big)h 13(problem\).)h 1042 2940(33)s 34 @eop 35 @bop0 35 @bop1 cmr10.300 sf 1042 2940(34)s 35 @eop 36 @bop0 cmbx10.622 sf [<0003FF8000001FFFF000007FFFFE0000FE03FF0003F001FFC007E000FFE007C0007FF0 0FF0007FF00FFC007FF81FFC007FF81FFE007FF81FFE007FF81FFE007FF81FFE007FF81F FE007FF80FFC007FF80FFC007FF003F000FFF0000000FFE0000000FFE0000001FFC00000 01FF80000003FF00000007FC0000001FF800000FFFC000000FFF8000000FFFF800000003 FE00000001FF80000000FFE00000007FF00000003FF80000003FFC0000003FFE0000001F FE0000001FFE0200001FFF1FC0001FFF3FE0001FFF7FF0001FFFFFF8001FFFFFF8001FFF FFF8001FFFFFF8001FFFFFF8001FFEFFF8003FFEFFF0003FFC7FE0003FFC7FC0007FF83F 80007FF01FE000FFE00FFC03FFC003FFFFFF8001FFFFFE00003FFFF0000007FF8000> 40 57 -4 55 49] 51 dc cmbx10.746 sf [ 104 71 -4 70 113] 77 dc [<00000007FF800000000001FFFFF0000000000FFFFFFC000000003FFFFFFE00000000FF FC00FF00000001FFC0003F80000007FF00007FC000000FFE0001FFC000001FFC0001FFE0 00001FF80003FFE000003FF00003FFE000003FF00003FFE000007FE00003FFE000007FE0 0003FFE000007FE00003FFE000007FE00003FFE000007FE00001FFC000007FE00000FF80 00007FE000003E0000007FE00000000000007FE00000000000007FE00000000000007FE0 0000000000007FE00000000000007FE00000000000007FE0003FFFF000FFFFFFFFFFFFF0 00FFFFFFFFFFFFF000FFFFFFFFFFFFF000FFFFFFFFFFFFF000FFFFFFFFFFFFF000007FF0 0000FFF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0 00007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0 00007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0 00007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0 00007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0 00007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0 00007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0 00007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0003FFFFF E03FFFFFE03FFFFFE03FFFFFE03FFFFFE03FFFFFE03FFFFFE03FFFFFE03FFFFFE03FFFFF E0> 64 72 -2 71 66] 12 dc 36 @bop1 cmtt10.300 sf 1687 2735(@!)s cmbx10.622 sf 177 377(Chapter)s 34(3)h cmbx10.746 sf 177 609(F)s -10(unnelW)h -10(eb)h 41(Mo)h 3(di\014catio)h 1(n)h cmti10.300 sf 1250 1964(only)s 1616 2064(F)s -3(unnelWeb)h 18(User's)h 177 2113(Manual)s cmbx10.300 sf 295 2362(Remo)s -1(ving)h 13(features:)h 295 2635(Mo)s 1(difying)h 18(features:)h cmbx10.432 sf 177 875(3.1)s 70(In)h -2(tro)h 2(duction)h 177 1301(3.2)s 70(The)h 22(Danger)h 24(of)h 23(Mo)h 2(difying)h 23(Languages)h cmr10.300 sf 177 990(This)s 19(c)h -1(hapter)h 20(deals)h 19(with)h 19(mo)h 1(di\014cations)h 17(to)h 19(F)h -3(unnelW)h -3(eb.)h 33(Although)h 19(the)h 19(GNU)h 19(license)h 20(under)h 20(whic)h -1(h)h 177 1040(F)s -3(unnelW)h -3(eb)h 10(is)h 11(distributed)h 12(allo)h -1(ws)h 9(an)h -1(y)h -1(one)h 11(to)h 10(mo)h 1(dify)h 9(F)h -3(unnelW)h -3(eb)h 10(and)h 11(distribute)h 11(the)h 11(mo)h 1(di\014ed)h 10(v)h -1(ersions,)h 177 1090(there)s 15(are)h 14(a)h 13(n)h -1(um)h -1(b)h 1(er)h 12(of)h 13(dangers)h 14(in)h 13(doing)h 13(this.)h 17(This)h 14(c)h -1(hapter)h 14(explains)h 13(the)h 14(dangers)h 14(and)h 13(presen)h -1(ts)h 16(some)h 177 1140(issues)s 15(that)h 14(y)h -1(ou)h 14(should)h 13(think)h 14(ab)h 1(out)h 14(if)h 13(y)h -1(ou)h 13(in)h -1(tend)h 14(to)h 14(distribute)h 14(mo)h 1(di\014ed)h 13(v)h -1(ersions)h 14(of)h 13(F)h -3(unnelW)h -3(eb.)h 177 1417(Whenev)s -1(er)h 15(someone)h 13(mo)h 1(di\014es)h 13(a)h 14(computer)h 13(program)h 12(they)h 15(should)h 13(alw)h -1(a)h -1(ys)h 13(ask)h 14(themselv)h -1(es)h 14(\\what)h 13(is)h 14(the)h 177 1467(impact)s 10(of)h 11(these)h 12(c)h -1(hanges)h 12(going)h 11(to)h 11(b)h 1(e)h 12(on)h 11(users".)h 18(F)h -3(or)h 11(mature)h 11(pro)h 1(ducts,)h 12(the)h 12(degree)h 13(of)h 11(impact)h 9(is)h 12(largely)h 177 1516(determined)s 17(b)h -1(y)h 17(the)h 18(in)h -1(v)h -1(estmen)h -1(t)h 16(that)h 18(users)h 18(ha)h -1(v)h -1(e)h 17(made)h 16(in)h 17(particular)h 17(\014le)h 17(formats)h 16(supp)h 1(orted)h 18(b)h -1(y)h 17(the)h 177 1566(pro)s 1(duct.)h 177 1641(A)s -1(t)h 13(the)h 13(t)h -1(w)h -1(o)h 13(extremes,)h 13(there)h 14(are)h 13(the)h 13(video)h 13(game)h 11(and)h 13(the)h 13(compiler.)h 16(If)h 13(one)h 13(c)h -1(hanges)h 13(a)h 13(video)h 12(game,)h 11(the)h 177 1690(c)s -1(hange)h 12(a\013ects)h 12(only)h 10(the)h 12(future)h 12(games)h 10(pla)h -1(y)h -1(ed.)h 16(Ho)h -1(w)h -1(ev)h -1(er,)h 12(if)h 10(one)h 12(c)h -1(hanges)h 11(a)h 11(compiler)h 10(in)h 11(particular)h 11(w)h -1(a)h -1(ys,)h 177 1740(it)s 13(is)h 12(lik)h -1(ely)h 12(that)h 13(thousands)h 13(of)h 13(users)h 14(will)h 12(b)h 1(e)h 13(forced)h 14(to)h 12(c)h -1(hange)h 14(mil)h -1(li)h -1(ons)h 11(of)h 13(source)h 14(\014les)h 13(to)h 13(accommodate)h 177 1790(the)s 12(new)h 12(v)h -1(ersion.)h 17(Th)h -1(us)h 11(the)h 12(impact)h 10(of)h 10(c)h -1(hanges)h 12(to)h 11(a)h 11(program)h 10(dep)h 1(ends)h 13(largely)h 10(on)h 11(the)h 12(in)h -1(v)h -1(estmen)h -1(t)h 10(made)h 177 1840(b)s -1(y)h 14(users,)h 15(in)h 13(source)h 15(\014les,)h 14(training,)h 13(and)h 13(ev)h -1(en)h 15(m)h -1(uscle)h 13(memo)h -1(ry!)h 177 1914(F)s -3(unnelW)h -3(eb)h 14(lies)h 15(v)h -1(ery)h 15(m)h -1(uc)h -1(h)h 14(at)h 15(the)h 15(compiler)h 14(end)h 15(of)h 14(this)h 15(sp)h 1(ectrum.)h 22(In)h 14(fact)h 15(it)h 15(lies)h 14(ev)h -1(en)h 16(further.)h 22(Not)h 177 1964(only)s 15(do)h 1(es)h 16(it)h 14(implem)h -1(en)h -1(t)h 14(a)h 15(language,)h 14(but)h 15(it)h 15(is)h 15(curren)h -1(tly)h 16(the)h 107(impl)h -1(em)h -1(en)h -1(tation)h 13(of)h 15(that)h 15(language!)h 177 2014(This)s 11(means)h 11(that,)h 11(although)h 11(they)h 12(shouldn't,)h 11(p)h 1(eople)h 11(will)h 10(b)h 1(e)h 12(tempted)h 11(to)h 12(treat)h 12(the)h 12(F)h -3(unnelW)h -3(eb)h 10(program)h 177 2064(as)s 16(the)h 17(de\014nition)h 15(of)h 15(its)h 16(input)h 16(language)h 15(instead)h 16(of)h 15(the)h 17(de\014nition)h 15(c)h -1(hapter)h 17(in)h 15(the)h 312 2113(,)s 14(whic)h -1(h)h 14(tak)h -1(es)h 14(precede)h 1(nce)h 1(.)h 177 2188(Because)s 13(F)h -3(unnelW)h -3(eb)h 10(de\014nes)h 12(an)h 10(input)h 11(language,)h 10(and)h 10(p)h 1(eople)h 11(will)h 10(write)h 11(programs)h 9(using)h 10(that)h 11(language,)h 177 2238(particular)s 14(kinds)h 13(of)h 14(c)h -1(hanges)h 14(in)h 13(the)h 15(language)h 13(will)h 12(impact)h 12(sev)h -1(erely)h 15(on)h 14(users.)h 19(Three)h 15(di\013eren)h -1(t)h 15(kinds)h 13(of)h 177 2287(c)s -1(hange)h 14(are)h 15(discussed)h 15(b)h 1(elo)h -1(w.)h 716 2362(Remo)s -1(v)h -3(al)h 11(of)h 12(features)h 14(\(featurectom)h -1(y\))h 13(is)h 13(extremely)h 13(di\016cult)h 12(once)h 295 2412(the)s 16(user)h 17(base)h 16(has)h 16(started)h 16(using)h 16(them.)h 22(If)h 15(a)h 15(feature)h 16(is)h 16(remo)h -1(v)h -1(ed,)h 14(users)h 17(of)h 15(the)h 16(program)h 295 2461(will)s 11(ha)h -1(v)h -1(e)h 12(to)h 13(go)h 11(through)h 13(all)h 11(their)h 13(programs)h 11(and)h 12(\014nd)h 13(a)h 12(w)h -1(a)h -1(y)h 11(to)h 13(sim)h -1(ula)h -1(te)h 11(the)h 13(e\013ect)h 14(of)h 12(the)h 295 2511(remo)s -1(v)h -1(ed)h 13(feature)h 15(with)h 13(other)h 14(features.)h 19(Often)h 15(this)h 13(is)h 14(so)h 14(un)h -1(think)h -2(able,)h 12(that)h 14(bad)h 14(language)h 295 2561(constructs)s 16(are)h 14(tolerated)h 15(far)h 13(b)h 1(ey)h -1(ond)h 15(their)h 14(useful)h 14(lifetim)h -1(e.)h 732 2635(Mo)s 1(di\014cation)h 17(of)h 16(features)h 18(has)h 18(less)h 18(direct)h 18(impact)h 15(than)h 17(the)h 18(re-)h 295 2685(mo)s -1(v)h -2(al)h 12(of)h 14(features,)h 15(but)h 15(can)h 14(cause)h 16(more)h 13(subtle)h 15(errors.)h 21(F)h -3(or)h 15(example,)h 12(consider)h 16(the)h 15(sorts)h 295 2735(of)s 12(subtle)h 14(errors)h 14(that)h 13(mig)h -1(h)h -1(t)h 11(arise)h 13(if)h 12(the)h 14(seman)h -1(tics)h 12(of)h 12(the)h 13(F)h -3(unnelW)h -3(eb)h 12(commen)h -1(t)h 73(w)h -1(ere)h 295 2785(c)s -1(hanged)h 20(so)h 20(that)h 20(it)h 19(no)h 20(longer)h 19(includes)h 20(the)h 21(end)h 20(of)h 19(line)h 19(mark)h -1(er.)h 35(An)h -1(y)h -1(one)h 20(mo)h 1(dif)h -1(ying)h 295 2835(features)s 15(should)h 14(b)h 1(e)h 14(sure)h 15(that)h 14(they)h 15(are)h 14(not)h 14(inadv)h -1(erten)h -1(tly)h 14(la)h -1(ying)h 12(traps.)h 1042 2940(35)s 36 @eop 37 @bop0 cmr10.300 sf [ 32 28 0 27 31] 89 dc [<00E0000001900000030800000308000007080000070800000708000007080000071000 0007100000072000000740000003C03FE003800F00038006000380040005C0040009C008 0010E0100030E010006070200060702000E0384000E03C4000E01C8000E00F0020E00700 20700780403009C0401830E18007C03E00> 32 31 -2 29 32] 38 dc 37 @bop1 cmsy10.300 sf 239 2426(\017)s 239 2655(\017)s 239 2785(\017)s cmti10.300 sf 722 998(similar)s cmbx10.432 sf 177 2159(3.3)s 70(Authorit)h -2(y)h 23(vs)h 23(User)h 23(Securit)h -2(y)h cmbx10.300 sf 295 42(Adding)s 15(features:)h 1645 445([Hoare80])s 295 1311(Univ)s -1(ersal)h 14(p)h 1(ortabili)h -1(t)h -2(y:)h 295 1532(Clear)s 16(seman)h -1(tics:)h cmr10.300 sf 665 42(Although)s 14(the)h 16(addition)h 14(of)h 15(features)h 16(is)h 15(generally)h 15(the)h 16(most)h 14(painless)h 295 91(for)s 12(the)h 13(user)h 13(comm)h -1(uni)h -1(t)h -1(y)h -3(,)h 10(as)h 12(Hoare)h 13(p)h 1(oin)h -1(ts)h 12(out,)h 12(it)h 12(is)h 12(also)h 11(the)h 13(most)h 11(dangerous)h 13(in)h 12(the)h 13(long)h 295 141(run.)s 343 246(\\When)s 10(an)h -1(y)h 9(new)h 10(language)h 9(design)h 10(pro)h 2(ject)h 11(is)h 10(nearing)h 9(completion,)h 9(there)h 11(is)h 9(alw)h -1(a)h -1(ys)h 9(a)h 10(mad)h 281 295(rush)s 11(to)h 10(get)h 11(new)h 11(features)h 11(added)h 11(b)h 1(efore)h 11(standardization.)h 16(The)h 11(rush)h 11(is)h 10(mad)h 9(indeed,)h 11(b)h 1(ecause)h 281 345(it)s 10(leads)h 11(in)h -1(to)h 10(a)h 10(trap)h 11(from)h 9(whic)h -1(h)h 10(there)h 12(is)h 10(no)h 11(escap)h 1(e.)h 18(A)h 11(feature)h 11(whic)h -1(h)h 11(is)h 10(omitted)h 9(can)h 11(alw)h -1(a)h -1(ys)h 281 395(b)s 1(e)h 18(added)h 18(later,)h 18(when)h 18(its)h 17(design)h 18(and)h 17(its)h 17(implicatio)h -1(ns)h 16(are)h 18(w)h -1(ell)h 17(understo)h 1(o)h 1(d.)h 30(A)h 17(feature)h 281 445(whic)s -1(h)h 13(is)h 13(included)h 14(b)h 1(efore)h 14(it)h 13(is)h 13(fully)h 12(understo)h 1(o)h 1(d)h 15(can)h 14(nev)h -1(er)h 14(b)h 1(e)h 14(remo)h -1(v)h -1(ed)h 12(later.")h 177 549(These)s 17(problems)h 14(exist)h 15(ev)h -1(en)h 16(when)h 15(there)h 17(is)h 15(a)h 14(cen)h -1(tral)h 16(authorit)h -1(y)h -3(.)h 21(If)h 14(w)h -1(e)h 16(consider)h 16(the)h 15(case)h 16(where)h 16(there)h 177 599(is)s 16(no)h 16(cen)h -1(tral)h 17(authorit)h -1(y)h -3(,)h 15(and)h 16(users)h 18(mo)h 1(dify)h 14(a)h 16(language)h 15(and)h 16(its)h 16(implem)h -1(en)h -1(tations)h 14(and)h 16(distribute)h 17(the)h 177 649(mo)s 1(di\014ed)h 18(v)h -1(ersions,)h 20(the)h 20(result)h 20(is)h 19(ev)h -1(en)h 19(w)h -1(orse.)h 34(F)h -3(or)h 19(a)h 19(start,)h 20(the)h 20(structure)h 21(of)h 19(the)h 19(genealogy)h 19(of)h 18(the)h 177 699(program)s 16(c)h -1(hanges)h 19(from)h 16(a)h 17(list)h 18(to)h 17(a)h 18(tree.)h 31(This)h 18(mak)h -1(es)h 16(it)h 18(imp)h 1(ossible)h 16(to)h 17(imp)h 1(ose)h 17(an)h 18(ordering)h 18(on)h 17(the)h 177 749(di\013eren)s -1(t)h 16(v)h -1(ersions)h 16(and)h 16(mak)h -1(es)h 14(it)h 15(di\016cult)h 14(to)h 16(merge)h 15(them)h 14(once)h 16(they)h 16(div)h -1(erge.)h 23(Second,)h 16(it)h 15(reduces)h 17(the)h 177 798(p)s 1(ortabilit)h -1(y)h 16(of)h 17(\014les)h 18(created)h 19(under)h 19(di\013eren)h -1(t)h 18(v)h -1(ersions.)h 30(Third,)h 18(it)h 17(mak)h -1(es)h 16(adding)h 17(features)h 19(hazardous.)h 177 848(If)s 15(a)h 15(feature)h 16(is)h 15(added)h 16(in)h 14(one)h 16(v)h -1(ersion,)h 15(\014les)h 16(will)h 14(b)h 1(e)h 15(created)h 17(that)h 16(use)h 16(it.)h 21(These)h 17(\014les)h 16(will)h 13(imm)h -1(ediately)h 177 898(b)s 1(ecome)h 10(non-p)h 1(ortable.)h 17(F)h -3(urthermore,)h 11(t)h -1(w)h -1(o)h 10(programm)h -1(ers)h 9(ma)h -1(y)h 8(in)h -1(tro)h 1(duce)h 12(di\013eren)h -1(t)h 11(features)h 11(that)h 11(use)h 11(the)h 177 948(same)s 12(syn)h -1(tactical)h 13(constructs,)h 14(th)h -1(us)h 13(prev)h -1(en)h -1(ting)h 13(the)h 14(t)h -1(w)h -1(o)h 12(v)h -1(ersions)h 13(from)h 11(ev)h -1(er)h 14(b)h 1(eing)h 13(merged.)h 17(W)h -3(orse,)h 12(t)h -1(w)h -1(o)h 177 998(programm)s -1(ers)h 12(could)h 13(in)h -1(tro)h 1(duce)h 153(features)h 14(that)h 14(use)h 14(the)h 13(same)h 13(syn)h -1(tactical)h 13(constructs,)h 15(pro)h 1(ducing)h 177 1048(ev)s -1(en)h 15(more)h 13(subtle)h 14(problems.)h 177 1119(The)s 10(only)h 9(w)h -1(a)h -1(y)h 8(to)h 10(a)h -1(v)h -1(oid)h 8(all)h 8(these)h 11(problems)h 9(is)h 9(to)h 9(create)h 11(some)h 9(sort)h 10(of)h 8(cen)h -1(tral)h 10(design)h 10(authorit)h -1(y)h -3(,)h 9(\(or,)h 10(at)h 9(the)h 177 1169(v)s -1(ery)h 12(least,)h 12(some)h 11(sort)h 12(of)h 12(design)h 12(sync)h -1(hronization\))h 11(that)h 12(con)h -1(trols)h 12(the)h 13(language)h 10(and)h 12(its)h 12(impl)h -1(emen)h -1(tati)h -1(on.)h 177 1240(The)s 14(b)h 1(ene\014ts)h 16(of)h 13(tigh)h -1(t)h 14(con)h -1(trol)h 13(o)h -1(v)h -1(er)h 14(the)h 15(language)h 13(are)h 14(enormous.)h 765 1311(Source)s 16(\014les)h 15(can)h 15(b)h 1(e)h 15(treated)h 16(as)h 15(p)h 1(ortable.)h 21(If)h 15(all)h 13(the)h 16(language)h 295 1361(implem)s -1(en)h -1(tations)h 17(in)h 18(the)h 19(w)h -1(orld)h 17(are)h 19(singing)h 18(the)h 19(same)h 17(tune,)h 20(then)h 19(someone)h 18(in)h 18(Sydney)h 295 1411(could)s 18(send)h 19(a)h 18(\014le)h 19(to)h 18(someone)h 17(in)h 18(New)h 19(Y)h -3(ork)h 18(and)h 18(b)h 1(e)h 18(sure)h 20(that)h 18(it)h 18(will)h 17(b)h 1(e)h 18(succes)h 1(sfully)h 295 1461(pro)s 1(cesse)h 1(d.)h 658 1532(Doubt)s 14(ab)h 1(out)h 14(the)h 15(seman)h -1(tics)h 14(of)h 14(the)h 15(language)h 13(will)h 13(b)h 1(e)h 15(greatly)h 14(mini-)h 295 1582(mized.)s 18(So)h 13(long)h 13(as)h 14(more)h 13(than)h 14(one)h 15(sligh)h -1(tly)h 12(di\013ering)h 14(v)h -1(ersion)h 14(of)h 13(a)h 14(language)h 13(exists,)h 14(there)h 295 1632(will)s 9(b)h 1(e)h 12(confusion)h 10(o)h -1(v)h -1(er)h 10(the)h 12(seman)h -1(tics)h 10(of)h 10(its)h 10(constructs.)h 19(A)h 11(go)h 1(o)h 1(d)h 10(example)h 9(is)h 11(the)h 11(confusion)h 295 1682(b)s 1(et)h -1(w)h -1(een)h 16(the)h 14(A)h -3(T&T)h 14(Unix)h 13(and)h 14(Berk)h -1(eley)h 15(Unix)h 14(shell)h 13(languages.)h 177 1753(While)s 20(c)h -1(hanges)h 21(to)h 21(the)h 21(language)h 20(supp)h 1(orted)h 22(b)h -1(y)h 20(a)h 20(piece)h 22(of)h 20(soft)h -1(w)h -1(are)h 21(is)h 20(the)h 21(most)h 20(serious)h 21(problem)h 177 1803(asso)s 1(ciated)h 16(with)h 14(m)h -1(ultipl)h -1(e)h 14(v)h -1(ersions)h 15(of)h 14(soft)h -1(w)h -1(are,)h 15(the)h 15(lesser)h 16(problem)h 14(of)h 14(k)h -1(eeping)h 15(trac)h -1(k)h 15(of)h 14(c)h -1(hanges)h 16(that)h 177 1853(don't)s 15(a\013ect)h 16(the)h 16(language)h 14(that)h 15(the)h 16(soft)h -1(w)h -1(are)h 16(impl)h -1(em)h -1(en)h -1(ts)h 14(can)h 16(also)h 14(cause)h 17(trouble.)h 22(Merging)h 15(di\013eren)h -1(t)h 177 1902(v)s -1(ersions)h 15(of)h 14(soft)h -1(w)h -1(are)h 14(is)h 15(extremely)h 14(tedious)h 15(as)h 14(an)h -1(y)h -1(one)h 14(who)h 14(has)h 15(tried)h 15(it)h 14(will)h 13(v)h -1(erify)h -3(.)h 19(Ho)h -1(w)h -1(ev)h -1(er,)h 14(c)h -1(hanges)h 177 1952(not)s 14(a\013ecting)h 14(the)h 14(language)h 13(are)h 14(far)h 13(less)h 14(serious)h 15(b)h 1(ecause)h 15(they)h 14(impact)h 12(only)h 13(on)h 14(the)h 14(program)h 12(itself,)h 13(not)h 177 2002(on)s 14(the)h 14(far)h 14(more)h 13(n)h -1(umerous)h 13(source)h 15(\014les)h 14(that)h 14(dep)h 1(end)h 16(on)h 13(it.)h 177 2272(There)s 16(are)h 15(a)h 15(n)h -1(um)h -1(b)h 1(er)h 14(of)h 14(w)h -1(a)h -1(ys)h 15(of)h 14(pro)h -1(viding)h 13(the)h 16(strong)h 15(cen)h -1(tral)h 15(design)h 15(authorit)h -1(y)h 14(required)h 16(to)h 15(pro)h 1(duce)h 177 2322(the)s 15(p)h 1(ortabilit)h -1(y)h 12(and)h 14(seman)h -1(tic)h 13(securit)h -1(y)h 15(desired)h 15(b)h -1(y)h 13(users,)h 281 2426(T)s -3(rade)h 18(mark)h 16(the)h 18(name)h 17(of)h 17(the)h 19(language.)h 28(Publish)h 18(a)h 18(sp)h 1(eci\014cation)h 18(of)h 17(the)h 19(language)h 17(under)h 18(the)h 281 2476(trade)s 14(name.)h 16(W)h -3(arn)h 13(all)h 12(users)h 15(not)h 13(to)h 13(trust)h 14(an)h -1(y)h 13(implem)h -1(en)h -1(tatio)h -1(n)h 12(that)h 13(do)h 1(es)h 14(not)h 13(guaran)h -1(tee)h 14(that)h 13(it)h 281 2526(implem)s -1(en)h -1(ts)h 11(the)h 13(language.)h 17(Then)h 13(con)h -1(trol)h 12(implem)h -1(en)h -1(tations)h 10(b)h -1(y)h 13(only)h 11(licensing)h 13(the)h 13(trade)h 13(mark)h 11(to)h 281 2576(conforming)s 12(impl)h -1(em)h -1(en)h -1(tations.)h 281 2655(Create)s 21(a)h 20(single)h 20(implem)h -1(en)h -1(tation)h 18(of)h 20(the)h 21(language.)h 36(Do)h 20(not)h 20(release)h 21(the)h 21(source)h 22(co)h 1(de)h 21(to)h 20(the)h 281 2705(implem)s -1(en)h -1(tatio)h -1(n.)h 16(Release)h 15(only)h 13(binary)h 13(executables.)h 281 2785(Release)s 14(the)h 13(source)h 15(co)h 1(de)h 14(to)h 13(the)h 13(implem)h -1(en)h -1(tation,)h 10(but)h 14(under)h 14(a)h 13(license)h 13(that)h 14(prohibits)h 12(the)h 14(distri-)h 281 2835(bution)s 13(of)h 14(mo)h 1(di\014ed)h 12(v)h -1(ersions.)h 1042 2940(36)s 37 @eop 38 @bop0 cmbx10.432 sf [ 40 41 -3 40 47] 80 dc cmti10.300 sf [<01FFCFFE003C01E0003801C0003801C0003801C0003801C00070038000700380007003 800070038000E0070000E0070000E0070000FFFF0001C00E0001C00E0001C00E0001C00E 0003801C0003801C0003801C0003801C00070038000700380007003800070038000F0078 00FFE7FF00> 32 28 -3 27 31] 72 dc [<0FC00001C00001C0000380000380000380000380000700000700000700000700000E0F 000E11000E23800E43801C83001C80001D00001E00003F800039C00038E00038E00070E2 0070E20070E20070E400E06400603800> 24 29 -3 28 19] 107 dc cmr10.300 sf [<0080008007E01898308460824081C087C08FC08FC086E080F0807E803FC01FF00FF803 FC00BE008E00876087F083F083E0838082408240842088189007E000800080> 16 33 -2 30 21] 36 dc 38 @bop1 cmsy10.300 sf 239 762(\017)s 239 898(\017)s 239 1084(\017)s cmbx10.432 sf 177 2271(3.4)s 70(What)h 23(I)h 23(W)h -6(an)h -2(t)h 24(to)h 23(Protect)h cmti10.300 sf 1747 1905(F)s -3(unnelWeb)h 177 1955(Hacker's)s 15(Manual)h cmtt10.300 sf 831 1855(ross@spam.ad)s -1(elaid)h -1(e.ed)h -1(u.au)h cmr10.300 sf 177 42(Man)s -1(y)h 11(other)h 12(v)h -2(ariations)h 10(on)h 11(these)h 13(themes)h 11(are)h 12(p)h 1(ossible,)h 11(but)h 12(they)h 11(are)h 12(all)h 10(based)h 12(on)h 11(the)h 12(idea)h 11(of)h 11(regulating)h 177 91(either)s 15(the)h 14(\\o\016cial")h 12(de\014nition)h 14(of)h 13(the)h 15(language)h 13(or)h 13(all)h 13(of)h 13(its)h 14(existing)h 14(implem)h -1(en)h -1(tatio)h -1(ns.)h 177 168(A)s -1(t)h 15(ab)h 1(out)h 14(this)h 15(stage,)h 15(a)h 14(con\015ict)h 15(arises.)h 21(While)h 14(users)h 16(w)h -1(an)h -1(t)h 15(the)h 15(language)h 14(they)h 15(are)h 15(using)h 14(to)h 15(b)h 1(e)h 15(tigh)h -1(tly)h 177 217(con)s -1(trolled,)h 13(they)h 14(also)h 13(w)h -1(an)h -1(t)h 13(to)h 14(feel)h 13(secure)h 16(ab)h 1(out)h 13(the)h 14(a)h -1(v)h -2(ailabil)h -1(it)h -1(y)h 11(of)h 13(its)h 14(impl)h -1(em)h -1(en)h -1(tations.)h 16(If)h 14(h)h -1(undreds)h 177 267(of)s 19(source)h 21(\014les)h 19(are)h 20(to)h 20(b)h 1(e)h 20(created)h 21(in)h 19(the)h 20(language,)h 19(there)h 21(had)h 19(b)h 1(etter)h 21(b)h 1(e)h 20(one)h 20(or)h 19(more)h 18(translators)h 177 317(a)s -1(v)h -2(ailable)h 12(when)h 14(the)h 15(time)h 12(comes)h 14(to)h 13(use)h 15(them.)h 177 393(In)s 15(the)h 15(case)h 16(of)h 14(widely-used)h 15(programm)h -1(i)h -1(ng)h 13(languages)h 14(suc)h -1(h)h 15(as)h 15(C,)h 14(the)h 16(problem)h 13(of)h 14(securing)h 16(impl)h -1(em)h -1(en-)h 177 443(tations)s 12(do)h 1(es)h 14(not)h 12(arise.)h 18(If)h 12(y)h -1(ou)h 12(don't)h 12(get)h 13(y)h -1(our)h 12(compiler)h 11(from)h 11(Borland,)h 12(y)h -1(ou)h 12(can)h 13(get)h 12(it)h 13(from)h 10(Microsoft.)h 177 493(Ho)s -1(w)h -1(ev)h -1(er,)h 16(in)h 15(the)h 16(case)h 16(of)h 15(a)h 15(newly)h 16(in)h -1(tro)h 1(duced)h 16(language)h 14(suc)h -1(h)h 16(as)h 16(F)h -3(unnelW)h -3(eb,)h 15(there)h 16(ma)h -1(y)h 14(b)h 1(e)h 16(v)h -1(ery)h 16(few)h 177 543(implem)s -1(en)h -1(tations,)h 17(or)h 18(ev)h -1(en)h 19(just)h 18(one)h 19(implem)h -1(en)h -1(tatio)h -1(n,)h 17(and)h 18(this)h 19(p)h 1(oses)h 19(a)h 18(danger)h 19(to)h 18(the)h 19(user)h 19(who)h 18(is)h 177 593(commi)s -1(tting)h 11(to)h 13(that)h 13(format.)h 16(Despite)h 13(the)h 14(b)h 1(est)h 14(in)h -1(ten)h -1(tions)h 13(of)h 12(the)h 14(cop)h -1(yrigh)h -1(t)h 13(o)h -1(wner,)h 13(there)h 14(are)h 14(a)h 12(v)h -2(ariet)h -1(y)h 177 642(of)s 13(w)h -1(a)h -1(ys)h 13(in)h 12(whic)h -1(h)h 13(a)h 13(computer)h 13(program)h 12(can)h 13(suddenly)h 14(b)h 1(ecome)h 13(una)h -1(v)h -2(ailable.)h 16(Here)h 14(are)h 14(some)h 12(examples:)h 281 762(If)s 12(the)h 13(program)h 11(is)h 13(o)h -1(wned)h 13(b)h -1(y)h 12(a)h 12(compan)h -1(y)h 11(and)h 13(the)h 13(compan)h -1(y)h 11(go)h 1(es)h 13(brok)h -1(e,)h 13(the)h 13(liquidators)h 11(ma)h -1(y)h 11(not)h 281 812(b)s 1(other)h 15(to)h 13(place)h 14(the)h 15(soft)h -1(w)h -1(are)h 14(in)h 13(the)h 15(public)h 13(domain.)h 281 898(If)s 13(the)h 13(program)h 12(is)h 13(o)h -1(wned)h 13(b)h -1(y)h 13(a)h 13(kindly)h 12(individual)h 11(who)h 13(issues)h 14(licenses)h 15(for)h 13(free,)h 13(and)h 13(that)h 13(individ-)h 281 948(ual)s 14(suddenly)h 15(dies,)h 15(users)h 17(migh)h -1(t)h 12(suddenly)h 16(\014nd)h 15(themselv)h -1(es)h 15(negotiating)h 14(with)h 14(hard-nosed)h 16(estate)h 281 998(executors)s 16(for)h 13(the)h 15(righ)h -1(ts)h 13(to)h 14(con)h -1(tin)h -1(ue)h 14(using)h 14(the)h 14(program.)h 281 1084(If)s 17(who)h 1(ev)h -1(er)h 18(o)h -1(wns)h 18(the)h 18(program)h 16(do)h 1(es)h 18(not)h 17(upgrade)h 18(the)h 18(program)h 16(ev)h -1(ery)h 18(so)h 17(often,)h 18(it)h 17(is)h 18(actually)h 281 1134(p)s 1(ossible)h 10(for)h 10(the)h 11(released)h 11(executables)h 12(to)h 10(\\expire")h 11(when)h 10(new)h 11(op)h 1(erating)h 10(system)h 10(upgrades)h 11(app)h 1(ear.)h 177 1254(These)s 16(p)h 1(ossibilities)h 13(mean)h 13(that)h 15(users)h 15(ab)h 1(out)h 15(to)h 14(in)h -1(v)h -1(est)h 14(in)h 14(a)h 14(newly)h 14(in)h -1(tro)h 1(duced)h 15(programm)h -1(i)h -1(ng)h 12(to)h 1(ol)h 14(suc)h -1(h)h 177 1304(as)s 17(F)h -3(unnelW)h -3(eb)h 16(ha)h -1(v)h -1(e)h 17(legitim)h -1(ate)h 15(concerns)h 19(when)h 17(they)h 18(w)h -1(orry)h 16(ab)h 1(out)h 17(the)h 17(to)h 1(ol's)h 16(a)h -1(v)h -2(ailabil)h -1(it)h -1(y)h -4(.)h 25(F)h -3(or)h 16(non-)h 177 1354(commerciall)s -1(y)h 9(distributed)h 12(to)h 1(ols)h 11(suc)h -1(h)h 11(as)h 12(F)h -3(unnelW)h -3(eb,)h 10(the)h 12(simplest)h 10(solution)h 10(to)h 11(this)h 12(problem)h 9(is)h 11(to)h 11(mak)h -1(e)h 177 1404(the)s 13(source)h 13(co)h 1(de)h 13(a)h -1(v)h -2(aila)h -1(ble,)h 10(either)h 13(b)h -1(y)h 12(placing)h 11(it)h 11(in)h -1(to)h 11(the)h 13(public)h 11(domain,)h 10(or)h 12(b)h -1(y)h 11(releasing)h 12(it)h 12(under)h 13(some)h 177 1453(kind)s 15(of)h 14(public)h 15(license,)h 15(suc)h -1(h)h 16(as)h 15(a)h 15(GNU)h 15(license.)h 22(The)h 15(trouble)h 15(with)h 15(releasing)h 15(the)h 16(source)h 16(co)h 1(de)h 16(is)h 15(that)h 177 1503(it)s 14(remo)h -1(v)h -1(es)h 14(con)h -1(trol)h 14(from)h 13(the)h 15(design)h 15(authorit)h -1(y)h -3(.)h 18(Once)h 16(the)h 15(co)h 1(de)h 15(is)h 15(\\out")h 14(there)h 15(is)h 15(no)h 14(stopping)h 14(an)h -1(y)h -1(one)h 177 1553(from)s 12(mo)h 1(difying)h 11(the)h 15(program)h 12(and)h 14(distributing)h 13(mo)h 1(di\014ed)h 13(v)h -1(ersions.)h 18(All)h 13(c)h -1(haos)h 14(can)h 14(ensue.)h 177 1629(One)s 17(solution)h 14(to)h 16(this)h 16(con\015ict)h 16(is)h 15(to)h 16(tak)h -1(e)h 15(the)h 16(trade)h 17(mark)h 14(approac)h -1(h.)h 23(This)h 16(separates)h 17(the)h 16(righ)h -1(t)h 15(of)h 15(the)h 177 1679(design)s 13(authorit)h -1(y)h 12(to)h 13(con)h -1(trol)h 12(the)h 13(language)h 12(and)h 12(its)h 13(implem)h -1(en)h -1(tatio)h -1(ns,)h 11(and)h 13(the)h 13(righ)h -1(t)h 12(of)h 12(the)h 13(users)h 14(to)h 13(use)h 177 1729(the)s 13(source)h 15(co)h 1(de)h 13(in)h 12(an)h -1(y)h 13(w)h -1(a)h -1(y)h 12(they)h 13(lik)h -1(e)h 12(\(but)h 13(they)h 13(ma)h -1(y)h 11(ha)h -1(v)h -1(e)h 12(to)h 13(c)h -1(hange)h 13(its)h 13(name!\).)h 16(Ho)h -1(w)h -1(ev)h -1(er,)h 13(the)h 13(trade)h 177 1779(mark)s 13(approac)h -1(h)h 13(is)h 14(exp)h 1(ensiv)h -1(e.)h 177 1855(The)s 12(solution)h 12(that)h 11(I)h 12(\(Ross)h 12(William)h -2(s)h 11(\()h 547(\)\))h 10(ha)h -1(v)h -1(e)h 11(adopted)h 13(is)h 11(to)h 12(release)h 13(the)h 177 1905(F)s -3(unnelW)h -3(eb)h 17(source)h 19(co)h 1(de)h 18(under)h 19(a)h 17(GNU)h 17(license)h 19(and)h 17(then)h 18(to)h 17(write)h 18(this)h 18(c)h -1(hapter)h 18(in)h 17(the)h 500 1955(to)s 14(dissuade)h 15(p)h 1(ossible)h 15(hac)h -1(k)h -1(ers)h 16(from)h 13(releasing)h 14(mo)h 1(di\014ed)h 13(v)h -1(ersions)h 16(under)h 15(the)h 15(F)h -3(unnel-)h 177 2004(W)s -3(eb)h 13(name.)h 17(This)h 14(is)h 13(ab)h 1(out)h 14(as)h 14(close)h 14(to)h 13(the)h 15(GNU/trademark)h 12(approac)h -1(h)h 14(I)h 13(can)h 14(get)h 14(without)h 13(forking)h 13(out)h 177 2054(ab)s 1(out)h 11($1200)h 11(for)h 11(a)h 11(US)h 11(trademark)h 11(or)h 11(pa)h -1(ying)h 10(ev)h -1(en)h 12(more)h 11(to)h 11(get)h 12(a)h 11(la)h -1(wy)h -1(er)h 11(to)h 11(attempt)h 10(to)h 12(draft)h 11(a)h 11(con)h -1(tract)h 177 2104(stating)s 14(\\thou)h 13(shalt)h 14(not)h 14(mo)h 1(dify)h 11(the)h 15(F)h -3(unnelW)h -3(eb)h 13(language".)h 177 2389(The)s 13(concerns)h 15(expressed)h 15(in)h 12(the)h 13(previous)h 13(section)h 14(ab)h 1(out)h 12(mo)h 1(di\014cations)h 11(to)h 13(the)h 13(F)h -3(unnelW)h -3(eb)h 12(program)h 11(do)h 177 2439(not)s 14(preclude)h 16(mo)h 1(di\014cations.)h 18(They)h 14(merely)h 14(impl)h -1(y)h 13(that)h 14(some)h 13(conditions)h 14(b)h 1(e)h 15(observ)h -1(ed)h 16(when)h 15(mo)h 1(di\014ca-)h 177 2489(tions)s 15(are)h 15(made.)h 19(In)h 15(fact,)h 15(ha)h -1(ving)h 13(formall)h -1(y)h 13(released)h 16(the)h 15(sources)h 17(under)h 15(GNU,)h 14(there)h 16(is)h 15(nothing)h 14(that)h 15(I)h 177 2539(can)s 16(do)h 15(to)h 16(stop)h 16(p)h 1(eople)h 16(distributing)h 15(mo)h 1(di\014ed)h 14(v)h -1(ersions)h 16(and)h 16(the)h 16(conditions)h 15(to)h 16(b)h 1(e)h 16(describ)h 1(ed)h 18(m)h -1(ust)h 14(b)h 1(e)h 177 2588(imp)s 1(osed)h 13(v)h -1(olun)h -1(tarily)h -3(.)h 177 2665(In)s 14(the)h 15(end)h 14(there)h 15(are)h 14(t)h -1(w)h -1(o)h 14(things)h 14(that)h 14(I)h 13(w)h -1(an)h -1(t)h 14(to)h 14(protect/main)h -1(tain:)h 228 2785(1.)s 20(Restriction)h 17(of)h 17(the)h 17(name)h 16(\\F)h -3(unnelW)h -3(eb")h 16(only)h 16(to)h 17(computer)h 17(programs)h 15(that)h 17(exactly)h 18(impl)h -1(em)h -1(en)h -1(t)h 281 2835(m)s -1(y)h 12(\\o\016cial")h 12(de\014nition)h 14(of)h 13(the)h 14(language.)h 1042 2940(37)s 38 @eop 39 @bop0 cmti10.300 sf [<1FFFFFC01C0701C0300E00C0200E0080600E0080400E0080401C0080801C0080801C00 80001C000000380000003800000038000000380000007000000070000000700000007000 0000E0000000E0000000E0000000E0000001C0000001C0000001C0000001C0000003C000 007FFE0000> 32 28 -7 27 30] 84 dc cmbx10.300 sf [<003FE3F801F03F1C03C03E3E07C07C3E0F807C3E0F807C1C0F807C000F807C000F807C 000F807C000F807C00FFFFFFC0FFFFFFC00F807C000F807C000F807C000F807C000F807C 000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C 007FE1FFC07FE1FFC0> 32 29 0 28 28] 11 dc cmr10.300 sf [<60F0F0600000000000000000000060F0F0701010101020204080> 8 26 -4 17 12] 59 dc 39 @bop1 cmtt10.300 sf 1251 42(.fw)s 364(.fwi)h 1171 917(.fw)s 131(.fwi)h 1514 966(.bw)s 131(.bwi)h cmbx10.432 sf 177 1364(3.5)s 70(Mo)h 2(difying)h 22(the)h 23(Man)h -2(uals)h 177 1980(3.6)s 70(Ho)h -2(w)h 23(Cop)h -2(yrigh)h -2(t)h 23(La)h -2(w)h 23(W)h -6(orks)h cmti10.300 sf 539 1533(The)s 17(F)h -3(unnelWeb)h 18(User's)h 16(Manual)h 99(The)h 17(F)h -3(unnelWeb)h 18(Hacker's)h 16(Manual)h cmbx10.300 sf 295 441(Mo)s 1(di\014cations)h 16(that)h 18(do)h 18(not)h 17(a\013ect)h 19(functi)h -1(onal)h -1(i)h -1(t)h -1(y:)h 295 717(Mo)s 1(di\014cations)h 12(that)h 13(a\013ect)h 14(functi)h -1(onal)h -1(i)h -1(t)h -1(y:)h 744 2276(w)s -1(ork)h 122(cop)h -1(yrigh)h -2(t)h 1216 2708(license)s 959 2835(deriv)s -1(ed)h 13(w)h -1(ork)h cmr10.300 sf 228 42(2.)s 20(Restriction)h 15(of)h 14(the)h 15(F)h -3(unnelW)h -3(eb)h 14(source)h 16(\014le)h 15(extensions)h 16(\\)h 66(")h 13(\(input)h 15(\014les\))h 15(and)h 14(\\)h 88(")h 14(\(include)h 281 91(\014les\))s 14(only)h 13(to)h 14(source)h 15(\014les)h 15(that)h 14(conform)h 12(to)h 14(m)h -1(y)h 12(\\o\016cial")h 12(de\014nition)h 13(of)h 14(the)h 14(language.)h 177 214(So)s 13(long)h 11(as)h 13(these)h 14(conditions)h 12(hold,)h 12(source)h 14(\014les)h 13(created)h 14(under)h 14(\\F)h -3(unnelW)h -3(eb")h 12(will)h 11(b)h 1(e)h 13(p)h 1(ortable,)h 13(and)h 12(the)h 177 264(language)s 12(will)h 12(ha)h -1(v)h -1(e)h 12(the)h 14(p)h 1(oten)h -1(tial)h 12(to)h 13(b)h 1(e)h 14(stable)h 13(and)h 13(w)h -1(ell-de\014ned.)h 18(Here)h 14(are)h 13(m)h -1(y)h 11(suggestions)h 14(for)h 12(ho)h -1(w)h 13(to)h 177 314(ob)s 1(ey)h 15(these)h 17(rules.)h 22(These)h 16(suggestions)h 16(are)h 15(in)h 15(addition)h 13(to)h 15(the)h 16(GNU)h 15(license)h 15(rules)h 16(ab)h 1(out)h 15(do)h 1(cumen)h -1(ting)h 177 363(an)s -1(y)h 14(c)h -1(hanges)h 14(that)h 14(y)h -1(ou)h 14(mak)h -1(e)h 12(in)h 13(the)h 15(source)h 15(\014les.)h 1289 441(If)s 16(y)h -1(ou)h 16(c)h -1(hange)h 16(the)h 17(F)h -3(unnelW)h -3(eb)h 295 491(program)s 16(in)h 18(a)h 17(manner)h 17(that)h 18(do)h 1(es)h 18(not)h 18(a\013ect)h 19(the)h 18(functionalit)h -1(y)h 16(of)h 17(the)h 19(program)h 16(in)h 17(an)h -1(y)h 295 540(w)s -1(a)h -1(y)h 14(\(e.g.)h 13(p)h 1(ort)h 14(it)h 14(to)h 14(a)h 14(new)h 14(mac)h -1(hine,)h 13(or)h 14(just)h 14(sp)h 1(eed)h 16(it)h 13(up\),)h 14(then)h 15(y)h -1(ou)h 13(should)h 14(mo)h 1(dify)h 12(the)h 295 590(program)s 12(to)h 13(write)h 13(out)h 13(a)h 13(message)h 13(when)h 13(it)h 13(starts)h 14(up)h 13(sa)h -1(ying)h 12(that)h 13(it)h 13(is)h 13(a)h 13(mo)h 1(di\014ed)h 12(v)h -1(ersion)h 295 640(of)s 14(F)h -3(unnelW)h -3(eb.)h 17(No)h 14(other)h 14(actions)h 14(need)h 15(b)h 1(e)h 15(tak)h -1(en.)h 1114 717(If)s 12(y)h -1(ou)h 12(mak)h -1(e)h 10(c)h -1(hanges)h 14(to)h 12(F)h -3(unnelW)h -3(eb)h 12(that)h 295 767(a\013ect)s 12(its)h 11(functionalit)h -1(y)h 10(\(e.g.)h 10(c)h -1(hanges)h 12(to)h 11(comma)h -1(nd)h 10(line)h 10(options,)h 11(the)h 12(comm)h -1(and)h 9(language,)h 295 817(or)s 13(the)h 14(input)h 13(language\))h 13(y)h -1(ou)h 12(should)h 13(c)h -1(hange)h 14(the)h 14(name)h 12(of)h 12(the)h 14(program)h 12(so)h 13(that)h 13(the)h 14(name)h 295 867(no)s 15(longer)h 15(con)h -1(tains)h 16(the)h 16(w)h -1(ord)h 15(\\F)h -3(unnelW)h -3(eb",)h 14(and)h 15(should)h 15(c)h -1(ho)h 1(ose)h 17(alternativ)h -1(e)h 15(input)h 15(and)h 295 917(include-\014le)s 12(\014le)h 12(extensions)h 12(\(the)h 13(curren)h -1(t)h 13(ones)h 12(are)h 12(\\)h 66(")h 11(and)h 11(\\)h 88("\).)h 16(F)h -3(or)h 12(example,)h 10(y)h -1(ou)h 295 966(migh)s -1(t)h 10(call)h 11(y)h -1(our)h 11(program)h 10(\\BananaW)h -3(eb")h 11(and)h 11(use)h 13(the)h 12(\014le)h 12(extensions)h 12(\\)h 66(")h 11(and)h 11(\\)h 88(".)h 177 1044(These)s 15(rules)h 14(are)h 14(not)h 14(v)h -1(ery)h 14(restrictiv)h -1(e.)h 19(Basically)h 13(y)h -1(ou)h 13(can)h 14(do)h 13(what)h 14(y)h -1(ou)h 13(lik)h -1(e)h 13(so)h 14(long)h 12(as)h 14(y)h -1(ou)h 13(c)h -1(hange)h 14(the)h 177 1094(name)s 11(of)h 11(the)h 12(resulting)h 12(program.)h 16(I)h 12(do)h 11(not)h 12(wish)h 12(to)h 12(restrict)h 13(an)h -1(y)h -1(one)h 11(who)h 12(migh)h -1(t)h 10(w)h -1(an)h -1(t)h 11(to)h 12(use)h 12(F)h -3(unnelW)h -3(eb)h 177 1143(as)s 18(a)h 18(foundation)h 17(for)h 17(a)h 18(more)h 17(sophisticated)h 18(literate)h 18(programm)h -1(ing)h 16(system.)h 30(My)h 17(sole)h 18(aim)h 16(here)h 19(is)h 18(to)h 177 1193(protect)s 15(the)h 15(in)h -1(tegrit)h -1(y)h 13(of)h 13(what)h 14(already)h 14(exists.)h 177 1483(While)s 15(it)h 16(is)h 15(p)h 1(ermitted)h 16(to)h 15(mo)h 1(dify)h 14(the)h 16(F)h -3(unnelW)h -3(eb)h 15(program,)h 15(no)h 15(license)h 17(has)h 16(b)h 1(een)h 16(gran)h -1(ted)h 17(to)h 15(mo)h 1(dify)h 177 1533(its)s 16(do)h 1(cumen)h -1(tation)h 15(\()h 588(and)h 630(\).)h 25(The)h 177 1583(only)s 12(op)h 1(eration)h 13(that)h 12(can)h 13(b)h 1(e)h 14(p)h 1(erformed)h 12(on)h 12(the)h 14(F)h -3(unnelW)h -3(eb)h 12(do)h 1(cumen)h -1(tation)h 11(is)h 13(a)h 12(v)h -1(erbatim)h 11(cop)h -1(y)h 13(in)h 12(an)h -1(y)h 177 1633(medium)s -1(.)h 177 1710(If)s 15(y)h -1(ou)h 15(ha)h -1(v)h -1(e)h 15(created)h 17(a)h 16(mo)h 1(di\014ed)h 14(v)h -1(ersion)h 15(of)h 15(F)h -3(unnelW)h -3(eb)h 15(and)h 15(wish)h 16(to)h 15(do)h 1(cumen)h -1(t)h 15(it,)h 15(either)h 16(write)h 16(y)h -1(our)h 177 1760(o)s -1(wn)h 17(man)h -1(ual)h 15(from)h 15(scratc)h -1(h,)h 19(or)h 17(write)h 17(a)h 17(man)h -1(ual)h 15(that)h 17(can)h 17(b)h 1(e)h 18(used)h 18(in)h 16(conjunction)h 18(with)h 16(the)h 18(existing)h 177 1809(man)s -1(uals.)h 177 2099(In)s 17(order)h 18(to)h 17(understand)h 19(the)h 18(next)h 17(section,)h 19(some)h 16(understanding)h 18(of)h 16(cop)h -1(yrigh)h -1(t)h 17(la)h -1(w)h 16(is)h 17(required.)h 29(The)h 177 2149(assertions)s 15(made)h 13(in)h 14(this)h 15(section)h 14(are)h 15(not)h 14(legal)h 13(opinions;)h 13(they)h 15(are)h 15(merely)h 13(appro)h -1(ximati)h -1(ons)h 13(of)h 13(the)h 15(la)h -1(w,)h 177 2199(based)s 15(on)h 13(m)h -1(y)h 13(understanding)h 14(of)h 13(it.)h 177 2276(By)s 17(default,)h 17(who)h 1(ev)h -1(er)h 17(creates)h 18(a)h 135(o)h -1(wns)h 229(o)h -1(v)h -1(er)h 17(it.)h 26(This)h 16(means)h 16(that)h 17(b)h -1(y)h 16(default,)h 17(that)h 177 2326(p)s 1(erson)h 15(is)h 14(the)h 14(only)h 13(p)h 1(erson)h 15(in)h 14(the)h 14(w)h -1(orld)h 14(who)h 13(has)h 14(the)h 15(legal)h 13(righ)h -1(t)h 13(to)h 14(mak)h -1(e)h 12(copies)h 15(of)h 13(the)h 14(w)h -1(ork.)h 177 2403(Cop)s -1(yrigh)h -1(t)h 14(o)h -1(v)h -1(er)h 15(a)h 14(w)h -1(ork)h 14(usually)h 14(co)h -1(v)h -1(ers)h 16(all)h 13(direct)h 16(deriv)h -2(ations)h 14(of)h 14(this)h 15(w)h -1(ork.)h 20(F)h -3(or)h 14(example,)h 14(if)h 13(someone)h 177 2453(o)s -1(wns)h 12(the)h 13(source)h 14(co)h 1(de)h 13(to)h 12(a)h 11(computer)h 12(program)h 11(then)h 13(they)h 12(also)h 12(o)h -1(wn)h 12(an)h -1(y)h 11(direct)h 13(deriv)h -2(ations)h 12(suc)h -1(h)h 13(as)h 12(the)h 177 2503(binary)s 14(executable.)h 177 2580(More)s 16(than)h 16(one)h 15(p)h 1(erson)h 17(ma)h -1(y)h 13(o)h -1(wn)h 15(cop)h -1(yrigh)h -1(t)h 15(o)h -1(v)h -1(er)h 16(a)h 15(w)h -1(ork.)h 23(If)h 15(this)h 15(is)h 16(the)h 16(case,)h 16(then)h 16(the)h 16(w)h -1(ork)h 16(cannot)h 177 2630(b)s 1(e)h 15(copied)h 14(without)h 13(the)h 15(p)h 1(ermission)h 13(of)h 13(all)h 13(of)h 13(the)h 14(p)h 1(eople)h 15(o)h -1(wning)h 13(the)h 14(cop)h -1(yrigh)h -1(t.)h 177 2708(A)s 18(p)h 1(erson)h 18(\(or)h 17(group\))h 17(o)h -1(wning)h 17(cop)h -1(yrigh)h -1(t)h 16(o)h -1(v)h -1(er)h 18(a)h 17(w)h -1(ork)h 17(can)h 171(the)h 18(righ)h -1(t)h 17(to)h 17(mak)h -1(e)h 16(copies)h 18(of)h 16(the)h 177 2757(w)s -1(ork)h 14(to)h 13(an)h -1(y)h -1(one)h 14(he)h 14(lik)h -1(es)h 14(under)h 15(an)h -1(y)h 13(conditions)h 14(he)h 14(lik)h -1(es.)h 177 2835(If)s 14(a)h 13(w)h -1(ork)h 14(is)h 14(mo)h 1(di\014ed,)h 12(the)h 14(result)h 15(is)h 14(called)h 13(a)h 285(.)h 1042 2940(38)s 39 @eop 40 @bop0 cmmi10.300 sf [<00000C0000000C0000001C0000001C0000003C0000007C0000005C0000009C0000008E 0000010E0000010E0000020E0000040E0000040E0000080E0000080E0000100E0000200E 00003FFE0000400700004007000080070001000700010007000200070002000700060007 001E000700FF807FF0> 32 29 -1 28 31] 65 dc [<01FFFF00003C01C0003800E0003800F0003800700038007000700070007000F0007000 F0007001E000E003C000E0078000E01F0000FFFC0001C00F0001C0078001C003C001C003 C0038003C0038003C0038003C0038003C0070007800700070007000E0007001C000E0078 00FFFFC000> 32 28 -2 27 31] 66 dc [<01FFC0FF80001E003C00001E003000000E002000000F00400000070080000007010000 000782000000038400000003C800000001D000000001F000000000E000000000E0000000 00F00000000170000000027000000004380000000838000000103C000000201C00000040 1E000000800E000001800E000003000F000006000700001E000F8000FF803FF000> 40 28 -1 27 34] 88 dc [ 32 28 -1 27 24] 89 dc cmbx10.432 sf [<0000FFE000000007FFFC0000003FC07F8000007F001FC00001FC0007F00003F80003F8 0007F00001FC000FF00001FE001FE00000FF001FE00000FF003FC000007F803FC000007F 807FC000007FC07F8000003FC07F8000003FC07F8000003FC0FF8000003FE0FF8000003F E0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003F E0FF8000003FE0FF8000003FE07F8000003FC07FC000007FC07FC000007FC03FC000007F 803FC000007F801FE00000FF001FE00000FF000FF00001FE0007F00001FC0003F80003F8 0001FC0007F00000FF001FE000003FC07F8000000FFFFE00000000FFE00000> 48 41 -4 40 52] 79 dc [<0001FF803FE000001FFFE3FFF800007F80FFF01E0000FE007FC01F0003FC01FF803F80 03F801FF007F8007F001FE007F8007F001FE007F8007F001FE007F8007F001FE003F0007 F000FE001E0007F000FE00000007F000FE00000007F000FE00000007F000FE000000FFFF FFFFFFFF80FFFFFFFFFFFF80FFFFFFFFFFFF8007F000FE003F8007F000FE003F8007F000 FE003F8007F000FE003F8007F000FE003F8007F000FE003F8007F000FE003F8007F000FE 003F8007F000FE003F8007F000FE003F8007F000FE003F8007F000FE003F8007F000FE00 3F8007F000FE003F8007F000FE003F8007F000FE003F8007F000FE003F8007F000FE003F 8007F000FE003F8007F000FE003F8007F000FE003F807FFF0FFFE3FFF87FFF0FFFE3FFF8 7FFF0FFFE3FFF8> 56 42 -1 41 57] 14 dc 40 @bop1 cmsy10.300 sf 239 1732(\017)s 239 1958(\017)s cmbx10.300 sf 590 2767(Figure)s 14(1)h cmmi10.300 sf 820 42(A)s 495(B)h 503 91(A)s 94(B)h 1024 676(X)s 614(X)h 131(Y)h 343 775(X)s 1538(Y)h 1076 825(X)s cmti10.300 sf 591 309(their)s 857 508(them)s 1343 1590(my)s cmbx10.432 sf 177 1363(3.7)s 70(Managemen)h -2(t)h 21(of)h 23(the)h 22(O\016cial)h 21(F)h -6(unnelW)h -6(eb)h cmr10.300 sf 177 42(If)s 13(cop)h -1(yrigh)h -1(t)h 13(on)h 14(a)h 13(w)h -1(ork)h 13(is)h 13(o)h -1(wned)h 14(b)h -1(y)h 58(is)h 13(the)h 14(w)h -1(ork)h 13(is)h 14(mo)h 1(di\014ed)h 12(b)h -1(y)h 46(,)h 14(cop)h -1(yrigh)h -1(t)h 13(on)h 13(the)h 14(deriv)h -1(ed)h 14(w)h -1(ork)h 177 91(is)s 14(o)h -1(wned)h 14(b)h -1(y)h 14(b)h 1(oth)h 59(and)h 46(.)h 177 159(Cop)s -1(yrigh)h -1(t)h 16(is)h 16(not)h 16(o)h -1(wnership)h 17(o)h -1(v)h -1(er)h 16(particular)h 16(con\014gurations)h 17(of)h 16(inform)h -1(ation,)h 14(but)h 17(rather)h 17(is)h 16(the)h 17(righ)h -1(t)h 177 209(to)s 14(restrict)h 16(the)h 15(cop)h -1(ying)h 13(of)h 14(informati)h -1(on)h 12(deriv)h -1(ed)h 15(from)h 12(particular)h 14(sources.)h 21(F)h -3(or)h 14(example,)h 12(if)h 14(t)h -1(w)h -1(o)h 13(p)h 1(eople)h 177 259(p)s 1(oin)h -1(t)h 17(their)h 17(cameras)h 17(out)h 17(a)h 17(windo)h -1(w)h 16(and)h 17(tak)h -1(e)h 17(iden)h -1(tical)h 16(photographs,)h 18(eac)h -1(h)h 17(p)h 1(erson)h 18(has)h 18(the)h 17(righ)h -1(t)h 17(to)h 177 309(restrict)s 15(the)h 15(cop)h -1(ying)h 13(of)h 111(photograph)h 14(regardless)h 15(of)h 13(the)h 14(fact)h 14(that)h 14(the)h 14(other)h 14(p)h 1(erson)h 15(has)h 14(cop)h -1(yrigh)h -1(t)h 177 359(o)s -1(v)h -1(er)h 15(an)h 14(iden)h -1(tical)h 14(photograph.)h 20(In)h 14(the)h 15(unlik)h -1(ely)h 14(ev)h -1(en)h -1(t)h 15(that)h 14(t)h -1(w)h -1(o)h 14(p)h 1(eople)h 15(wrote)h 15(no)h -1(v)h -1(els)h 15(that)h 14(w)h -1(ere)h 16(letter)h 177 408(for)s 13(letter)h 14(iden)h -1(tical)h 13(and)h 13(it)h 13(could)h 13(b)h 1(e)h 14(pro)h -1(v)h -1(en)h 14(that)h 13(there)h 15(w)h -1(as)h 13(no)h 13(con)h -1(tact)h 14(b)h 1(et)h -1(w)h -1(een)h 15(the)h 14(t)h -1(w)h -1(o)h 13(p)h 1(eople)h 13(when)h 177 458(they)s 11(wrote)h 12(the)h 11(no)h -1(v)h -1(els,)h 11(then)h 11(cop)h -1(yrigh)h -1(t)h 11(la)h -1(w)h 10(w)h -1(ould)h 10(eac)h -1(h)h 11(protect)h 12(the)h 11(righ)h -1(t)h 11(of)h 10(eac)h -1(h)h 11(p)h 1(erson)h 12(to)h 11(restrict)h 12(the)h 177 508(cop)s -1(ying)h 12(of)h 13(the)h 13(no)h -1(v)h -1(el)h 12(originating)h 11(from)h 99(.)h 18(In)h 13(practice,)h 13(the)h 14(probabilit)h -1(y)h 11(of)h 12(suc)h -1(h)h 14(an)h 13(ev)h -1(en)h -1(t)h 13(o)h 1(ccurring)h 177 558(is)s 15(so)h 16(lo)h -1(w)h 14(that)h 15(the)h 16(la)h -1(w)h 15(assumes)h 15(that)h 15(if)h 15(t)h -1(w)h -1(o)h 14(w)h -1(orks)h 16(are)h 15(close)h 16(or)h 15(iden)h -1(tical,)h 15(that)h 15(there)h 17(has)h 15(b)h 1(een)h 17(some)h 177 608(informati)s -1(on)h 12(in)h -1(terc)h -1(hange)h 15(at)h 13(some)h 13(p)h 1(oin)h -1(t.)h 177 676(Th)s -1(us,)h 12(if)h 11(I)h 12(o)h -1(wn)h 12(cop)h -1(yrigh)h -1(t)h 11(on)h 12(computer)h 11(program)h 48(,)h 12(and)h 12(I)h 11(create)h 14(an)h 11(iden)h -1(tical)h 12(cop)h -1(y)h 11(of)h 61(called)h 57(and)h 177 726(distribute)s 17(it)h 16(under)h 17(the)h 16(terms)h 16(of)h 16(a)h 16(license)h 17(agreemen)h -1(t,)h 16(then)h 16(that)h 17(license)h 17(agreemen)h -1(t)h 15(do)h 1(es)h 17(not)h 16(co)h -1(v)h -1(er)h 177 775(the)s 14(cop)h -1(y)h 49(.)h 19(Once)h 14(the)h 13(license)h 14(agreemen)h -1(t)h 12(is)h 13(signed,)h 13(there)h 14(is)h 13(nothing)h 12(I)h 13(can)h 13(do)h 12(to)h 13(undo)h 13(the)h 13(license;)h 177 825(has)s 14(gone.)h 18(Ho)h -1(w)h -1(ev)h -1(er,)h 14(I)h 14(still)h 13(ha)h -1(v)h -1(e)h 14(total)h 13(con)h -1(trol)h 13(o)h -1(v)h -1(er)h 51(.)h 177 893(V)s -3(ersion)h 14(2)h 14(of)h 13(the)h 14(GNU)h 14(General)h 14(Public)h 14(License)h 15(\(under)h 15(whic)h -1(h)h 13(F)h -3(unnelW)h -3(eb)h 14(is)h 13(released\))h 16(sp)h 1(eci\014es)h 16(\(in)h 13(a)h 177 943(n)s -1(utshell\))h 11(that)h 12(soft)h -1(w)h -1(are)h 11(can)h 11(b)h 1(e)h 12(copied)h 11(freely)h 11(so)h 12(long)h 10(as)h 11(it)h 11(is)h 11(not)h 11(sold,)h 10(and)h 11(that)h 11(it)h 11(can)h 12(b)h 1(e)h 11(mo)h 1(di\014ed)h 10(and)h 177 993(copied)s 15(freely)h 16(so)h 15(long)h 14(as)h 15(the)h 16(mo)h 1(di\014cations)h 13(are)h 15(logged)h 15(and)h 15(it)h 14(is)h 15(not)h 15(sold.)h 21(In)h 15(b)h 1(oth)h 16(cases,)h 16(it)h 15(requires)h 177 1043(that)s 16(the)h 17(result)h 17(of)h 15(the)h 17(cop)h -1(y)h 16(or)h 16(mo)h 1(di\014catio)h -1(n)h 15(op)h 1(eration)h 15(b)h 1(e)h 17(copied)h 16(only)h 16(under)h 16(the)h 17(conditions)h 16(of)h 15(the)h 177 1092(license.)s 177 1160(Once)s 15(a)h 13(declaration)h 13(is)h 13(issued)h 14(licensing)h 13(a)h 13(cop)h -1(y)h 13(of)h 13(a)h 13(program)h 11(under)h 14(GNU)h 13(license,)h 14(that)h 14(license)h 14(cannot)h 177 1210(b)s 1(e)h 15(retracted.)h 177 1472(I)s 14(in)h -1(tend)h 13(to)h 14(main)h -1(tai)h -1(n)h 12(an)h 13(o\016cial)h 12(cop)h -1(y)h 14(of)h 13(F)h -3(unnelW)h -3(eb)h 13(and)h 13(release)h 15(it)h 14(under)h 14(GNU)h 13(license)h 15(from)h 12(time)h 12(to)h 177 1522(time)s 13(so)h 14(that)h 14(ev)h -1(ery)h -1(one)h 14(can)h 15(use)h 14(it.)h 18(Unfortunately)h 14(its)h 14(going)h 12(to)h 14(b)h 1(e)h 14(a)h 14(little)h 13(messy)h -3(.)h 177 1590(F)s -3(or)h 16(a)h 17(v)h -2(ariet)h -1(y)h 16(of)h 15(reasons,)h 18(I)h 17(w)h -1(an)h -1(t)h 16(to)h 16(main)h -1(tai)h -1(n)h 15(total)h 16(con)h -1(trol)h 16(o)h -1(v)h -1(er)h 87(cop)h -1(y)h 17(of)h 15(the)h 18(o\016cial)h 15(v)h -1(ersion)h 16(of)h 177 1640(F)s -3(unnelW)h -3(eb.)h 18(Some)h 12(of)h 14(the)h 14(reasons)h 15(are:)h 281 1732(If)s 15(it)h 16(turns)h 17(out)h 16(that)h 16(there)h 17(is)h 15(an)h 16(enormous)h 15(demand)h 15(for)h 16(F)h -3(unnelW)h -3(eb)h 15(\(unlik)h -1(ely\))h 15(then)h 17(I)h 15(w)h -1(an)h -1(t)h 16(to)h 281 1782(b)s 1(e)h 14(able)h 12(to)h 13(create)h 15(a)h 12(business)h 15(based)h 13(on)h 13(it,)h 12(or)h 13(at)h 13(least)h 14(b)h 1(e)h 13(able)h 13(to)h 13(bundle)h 13(it)h 13(with)h 12(other)h 14(pro)h 1(ducts.)h 281 1832(This)s 14(w)h -1(ould)h 14(b)h 1(e)h 16(di\016cult)h 14(if)h 13(the)h 16(only)h 13(up-to-date)h 15(cop)h -1(y)h 15(a)h -1(v)h -2(ailabl)h -1(e)h 13(w)h -1(as)h 15(a)h 14(GNU)h 15(cop)h -1(y)h -3(.)h 19(Note:)h 20(If)h 15(this)h 281 1882(happ)s 1(ens,)h 14(all)h 13(the)h 14(GNU)h 14(releases)h 16(of)h 13(F)h -3(unnelW)h -3(eb)h 13(will)h 13(remain)h 12(v)h -2(alid.)h 281 1958(I)s 18(w)h -1(an)h -1(t)h 18(to)h 18(b)h 1(e)h 19(able)h 18(to)h 18(cop)h -1(y)h 18(co)h 1(de)h 19(from)h 16(m)h -1(y)h 17(v)h -1(ersion)h 18(of)h 18(F)h -3(unnelW)h -3(eb)h 17(in)h -1(to)h 18(comm)h -1(ercial)h 16(pro)h 1(ducts)h 281 2008(without)s 13(ha)h -1(ving)h 13(to)h 14(w)h -1(orry)h 14(ab)h 1(out)h 14(the)h 14(GNU)h 14(license.)h 177 2101(The)s 16(trouble)h 15(is)h 16(that)h 15(\(in)h 15(m)h -1(y)h 14(understanding)h 15(of)h 15(cop)h -1(yrigh)h -1(t)h 15(la)h -1(w\),)h 14(once)h 16(a)h 15(cop)h -1(y)h 16(of)h 14(F)h -3(unnelW)h -3(eb)h 15(has)h 16(b)h 1(een)h 177 2151(released)s 18(under)h 18(GNU)h 17(license,)h 17(then)h 18(it)h 16(and)h 17(an)h -1(y)h 16(w)h -1(orks)h 17(deriv)h -1(ed)h 18(from)h 15(it)h 16(fall)h 16(under)h 17(GNU)h 17(license)h 17(to)h 1(o.)h 177 2200(This)s 13(means)h 13(that)h 13(if)h 13(y)h -1(ou)h 13(mo)h 1(dif)h -1(y)h 12(a)h 13(GNU)h 13(release)h 14(of)h 13(F)h -3(unnelW)h -3(eb)h 13(and)h 13(send)h 14(me)h 13(y)h -1(our)h 13(mo)h 1(di\014cations,)h 11(and)h 177 2250(I)s 18(incorp)h 1(orate)h 19(them)h 17(in)h -1(to)h 18(m)h -1(y)h 16(v)h -1(ersion,)h 19(then)h 19(I)h 18(no)h 18(longer)h 17(o)h -1(wn)h 18(cop)h -1(yrigh)h -1(t)h 18(on)h 18(the)h 18(v)h -1(ersion)h 19(I)h 18(mo)h 1(di\014ed.)h 177 2300(Basically)s -3(,)h 12(if)h 13(GNU)h 14(touc)h -1(hes)h 15(a)h 14(w)h -1(ork,)h 13(then)h 14(that)h 14(cop)h -1(y)h 14(is)h 14(gone)h 14(forev)h -1(er.)h 177 2368(My)s 18(solution)h 16(to)h 18(the)h 18(problem)h 16(is)h 17(to)h 17(k)h -1(eep)h 19(a)h 17(cop)h -1(y)h 17(of)h 17(F)h -3(unnelW)h -3(eb)h 17(that)h 18(is)h 17(GNU-clean)h 17(and)h 18(only)h 16(mak)h -1(e)h 177 2418(mo)s 1(di\014cations)h 9(to)h 10(it)h 11(that)h 10(are)h 11(GNU-clean.)h 17(So)h 11(long)h 9(as)h 11(m)h -1(y)h 9(o\016cial)h 9(cop)h -1(y)h 11(is)h 10(GNU)h 10(clean,)h 11(an)h -1(y)h 11(mo)h 1(di\014catio)h -1(ns)h 177 2468(that)s 14(I)h 14(mak)h -1(e)h 12(m)h -1(yself)h 12(will)h 13(b)h 1(e)h 14(GNU)h 14(clean.)h 18(The)h 14(problem)h 12(comes)h 14(when)h 14(someone)h 13(else)h 15(mo)h 1(di\014es)h 13(the)h 14(GNU)h 177 2518(v)s -1(ersion)h 10(and)h 9(then)h 10(w)h -1(an)h -1(ts)h 10(me)h 8(to)h 10(incorp)h 1(orate)h 10(the)h 10(mo)h 1(di\014cations)h 8(in)h -1(to)h 8(m)h -1(y)h 8(o\016cial)h 8(v)h -1(ersion.)h 17(As)h 10(I)h 10(understand)h 177 2567(the)s 11(la)h -1(w,)h 10(b)h -1(y)h 10(default,)h 10(the)h 11(programm)h -1(er)h 9(o)h -1(wns)h 11(the)h 11(mo)h 1(di\014catio)h -1(ns)h 9(\(b)h 1(ecause)h 12(he)h 11(made)h 9(them\),)h 10(but)h 11(the)h 11(result)h 177 2617(of)s 12(making)h 10(the)h 13(mo)h 1(di\014cations)h 10(falls)h 12(under)h 13(GNU)h 12(license.)h 18(What)h 12(I)h 12(prop)h 1(ose)h 14(is)h 12(that)h 12(those)h 13(who)h 12(w)h -1(an)h -1(t)h 12(their)h 177 2667(mo)s 1(di\014cations)h 12(included)h 14(in)h 14(the)h 14(o\016cial)h 13(cop)h -1(y)h 13(of)h 14(F)h -3(unnelW)h -3(eb)h 13(sign)h 14(an)h 13(agreemen)h -1(t)h 14(transferring)h 14(cop)h -1(yrigh)h -1(t)h 177 2717(of)s 13(the)h 13(mo)h 1(di\014cations)h 12(o)h -1(v)h -1(er)h 13(to)h 13(me)h 12(on)h 13(condition)h 12(that)h 13(the)h 14(result)h 14(b)h 1(e)h 13(released)h 15(under)h 14(GNU)h 13(license)h 14(within)h 177 2767(a)s 14(certain)h 14(time)h 13(p)h 1(erio)h 1(d.)h 207(demonstrates)h 14(the)h 15(pro)h 1(cess.)h 177 2835(There)s 15(are)h 15(t)h -1(w)h -1(o)h 13(main)h 12(disadv)h -2(an)h -1(tages)h 13(to)h 14(this)h 14(sc)h -1(heme:)h 1042 2940(39)s 40 @eop 41 @bop0 cmr8.300 sf [<00FC000303000E01C01C00E0380070300030700038600018E0001CE0001CE0001CE000 1CE0001CE0001CE0001C7000387000383000303800701C00E00E01C003030000FC00> 24 23 -2 22 27] 79 dc [<007E080381980600580C0038180018300018700008700008E00008E00000E00000E000 00E00000E003FEE000387000387000383000381800380C00380600380380D8007F08> 24 23 -2 22 28] 71 dc [ 24 23 -1 22 26] 78 dc [ 24 23 -1 22 26] 85 dc [ 24 23 -1 22 26] 72 dc [<0F9E18E33060707070707070306018C02F80200060003FE03FF83FFC600EC006C006C0 06600C38380FE0> 16 21 -1 13 18] 103 dc [<07C2001C2600381E00700E00600E00E00E00E00E00E00E00E00E00600E00700E00301E 001C2E0007CE00000E00000E00000E00000E00000E00007FC0> 24 20 -1 13 19] 113 dc [ 24 23 -1 22 23] 70 dc [ 40 23 -1 22 36] 87 dc [<00FCF807839C0E079C1C07081C07001C07001C07001C07001C0700FFFFE01C07001C07 001C07001C07001C07001C07001C07001C07001C07001C07001C07001C0700FF1FE0> 24 23 0 22 21] 11 dc 41 @bop1 cmsy10.300 sf 239 1988(\017)s 239 2115(\017)s 239 2341(\017)s cmbx10.300 sf 453 1320(Figure)s 14(1)h cmr8.300 sf 343 1079(Once)s 13(a)h 12(w)h -1(ork)h 13(is)h 13(released)h 11(under)h 11(GNU)h 13(license,)h 12(all)h 12(deriv)h -1(ed)h 11(w)h -1(orks)h 12(fall)h 12(under)h 12(GNU)h 13(license.)h 18(Ho)h -1(w)h -1(ev)h -1(er,)h 281 1129(this)s 9(diagram)h 8(sho)h -1(ws)h 10(ho)h -1(w)h 10(cop)h -1(yrigh)h -2(t)h 8(can)h 9(b)h 1(e)h 10(main)h -1(tain)h -1(ed)h 8(o)h -1(v)h -1(er)h 9(a)h 10(w)h -1(ork,)h 10(while)h 9(still)h 9(making)h 8(it)h 10(a)h -1(v)h -2(ailable)h 8(under)h 281 1179(GNU)s 14(license.)h 19(Unfortunatel)h -1(y)h -3(,)h 12(this)h 13(sc)h -1(heme)h 11(requires)h 12(that)h 12(cop)h -1(yrigh)h -2(t)h 12(on)h 13(mo)h 1(di\014c)h -1(ati)h -1(ons)h 11(to)h 13(F)h -3(unnelW)h -3(eb)h 12(b)h 1(e)h 281 1229(signed)s 10(o\013)h 11(b)h -1(y)h 11(the)h 11(p)h 1(eople)h 9(who)h 12(mak)h -1(e)h 10(the)h 11(mo)h 1(di\014ca)h -1(tio)h -1(ns.)h cmtt10.300 sf 221 91(+----------)s -1(>----)h -1(-----)h -1(-+---)h -1(-----)h -1(-----)h -1(-<--)h -1(-----)h -1(-----)h -1(-+)h 221 141(|\(modificat)s -1(ions)h 19(by)h 87(|)h 610(|)h 221 191(|)s 21(me\))h 370(V)h 610(|)h 221 241(|)s 109(+---------)h -1(-----)h -1(-----)h -1(-----)h -1(-----)h -1(----)h -1(-+)h 194(|)h 221 291(+--<--|)s 42(My)h 21(Official)h 20(Copy)h 21(of)h 22(FunnelWeb)h 63(|)h 196(|)h 352 340(|)s 65(Copyright)h 20(\(C\))h 21(Ross)h 21(Williams)h 85(|)h 196(|)h 352 390(+---------)s -1(-----)h -1(-----)h -1(-----)h -1(-----)h -1(----)h -1(-+)h 194(|)h 700 440(|)s 22(\(Periodic)h 20(releases\))h 150(/)h 22(\\)h 700 490(V)s 567(/)h 65(\\)h 43(Programmers)h 482 540(+-------------)s -1(-----)h -1(+)h 347(/Legal\\)h 20(sign)h 21(away)h 482 589(|)s 22(GNU)h 21(Release)h 20(Copy)h 21(|)h 349(\\Filte/)h 20(copyright)h 20(on)h 482 639(+-------------)s -1(-----)h -1(+)h 369(\\)h 21(r)h 22(/)h 43(modifications)h 700 689(|)s 588(\\)h 22(/)h 700 739(|)s 22(\(Modificatio)h -1(ns)h 20(made)h 21(by)h 108(|)h 700 789(V)s 44(random)h 20(programmers\))h 19(--->--+)h 460 839(+--------------)s -1(-----)h -1(----+)h 460 888(|)s 22(Modified)h 20(GNU)h 21(Version)h 43(|)h 460 938(+--------------)s -1(-----)h -1(----+)h cmr10.300 sf 628 1320(:)s 18(Ho)h -1(w)h 13(I)h 14(am)h 12(going)h 13(to)h 14(main)h -1(ta)h -1(in)h 12(cop)h -1(yrigh)h -1(t)h 13(o)h -1(v)h -1(er)h 14(F)h -3(unnelW)h -3(eb.)h 228 1453(1.)s 20(Getting)h 15(eac)h -1(h)h 17(p)h 1(erson)h 17(who)h 15(con)h -1(tributes)h 17(mo)h 1(di\014cations)h 14(to)h 16(F)h -3(unnelW)h -3(eb)h 16(to)h 15(sign)h 16(and)h 16(send)h 16(a)h 16(piece)h 281 1503(of)s 13(pap)h 1(er)h 15(signing)h 13(a)h -1(w)h -1(a)h -1(y)h 12(cop)h -1(yrigh)h -1(t)h 14(will)h 12(b)h 1(e)h 15(tedious.)h 228 1580(2.)s 20(Programm)h -1(ers)h 15(ma)h -1(y)h 14(b)h 1(e)h 17(reluctan)h -1(t)h 16(to)h 16(sign)h 16(a)h -1(w)h -1(a)h -1(y)h 14(cop)h -1(yrigh)h -1(t)h 16(on)h 16(mo)h 1(di\014catio)h -1(ns)h 15(b)h 1(ecause)h 17(the)h 17(result)h 281 1630(could)s 15(b)h 1(e)h 16(used)h 16(b)h -1(y)h 15(me)h 14(for)h 15(comm)h -1(ercial)h 13(purp)h 1(oses)h 17(b)h -1(y)h 15(me)h 14(at)h 15(a)h 15(later)h 16(date)h 15(\(Note:)h 21(But)h 16(it)h 15(m)h -1(ust)h 14(b)h 1(e)h 281 1679(released)s 15(under)h 15(GNU)h 14(as)h 13(w)h -1(ell\).)h 177 1774(These)s 18(disadv)h -2(an)h -1(tages)h 15(are)h 17(regrettable)h 17(consequences)h 19(of)h 15(m)h -1(y)h 15(decision)h 16(to)h 16(retain)h 16(total)h 15(con)h -1(trol)h 16(o)h -1(v)h -1(er)h 16(the)h 177 1824(\\o\016cial")s 12(v)h -1(ersion)h 14(of)h 13(F)h -3(unnelW)h -3(eb.)h 177 1893(The)s 14(upshot)h 15(of)h 13(all)h 13(this)h 14(is)h 13(that:)h 281 1988(I)s 12(will)h 10(nev)h -1(er)h 12(allo)h -1(w)h 11(an)h -1(y)h 11(co)h 1(de)h 12(from)h 10(a)h 12(GNU)h 11(release)h 13(of)h 11(F)h -3(unnelW)h -3(eb)h 11(to)h 12(touc)h -1(h)h 12(m)h -1(y)h 10(o\016cial)h 10(cop)h -1(y)h -3(.)h 17(Only)h 281 2038(mo)s 1(di\014cations)h 12(will)h 12(b)h 1(e)h 15(acceptable.)h 281 2115(If)s 19(y)h -1(ou)h 19(mak)h -1(e)h 18(a)h 19(mo)h 1(di\014cation)h 17(to)h 20(F)h -3(unnelW)h -3(eb)h 19(and)h 19(send)h 20(it)h 19(to)h 20(me)h 18(for)h 19(inclusion)h 19(in)h 19(the)h 20(o\016cial)h 281 2165(v)s -1(ersion,)h 17(I)h 16(will)h 16(not)h 16(incorp)h 1(orate)h 17(y)h -1(our)h 17(mo)h 1(di\014cation)h 14(un)h -1(til)h 16(I)h 17(ha)h -1(v)h -1(e)h 16(receiv)h -1(ed)h 18(a)h 16(signed)h 17(declaration)h 281 2214(transferring)s 11(cop)h -1(yrigh)h -1(t.)h 17(I)h 11(will)h 9(prepare)h 13(suc)h -1(h)h 11(a)h 11(con)h -1(tract)h 12(when)h 11(the)h 12(\014rst)h 11(p)h 1(erson)h 12(sends)h 12(me)h 10(a)h 11(w)h -1(orth)h -1(y)h 281 2264(mo)s 1(di\014cation!)h 281 2341(If)s 12(y)h -1(ou)h 12(in)h -1(tend)h 13(to)h 12(mak)h -1(e)h 11(c)h -1(hanges)h 13(to)h 13(F)h -3(unnelW)h -3(eb)h 12(that)h 12(are)h 13(so)h 13(massiv)h -1(e)h 11(that)h 13(they)h 13(will)h 11(in)h -1(v)h -1(olv)h -1(e)h 11(wide-)h 281 2391(scale)s 13(mo)h 1(di\014cation)h 11(of)h 12(the)h 14(source)h 14(\014les,)h 13(and)h 13(y)h -1(ou)h 12(w)h -1(an)h -1(t)h 13(the)h 13(mo)h 1(di\014cation)h 11(to)h 13(b)h 1(e)h 13(part)h 13(of)h 13(the)h 13(o\016cial)h 281 2441(v)s -1(ersion,)h 16(it)h 16(migh)h -1(t)h 14(b)h 1(e)h 17(a)h 16(go)h 1(o)h 1(d)h 15(idea)h 16(to)h 16(con)h -1(tact)h 17(me)h 15(b)h 1(efore)h 17(doing)h 15(so.)h 25(There)h 17(are)h 16(t)h -1(w)h -1(o)h 16(reasons)h 17(for)h 281 2491(doing)s 11(this.)h 18(First,)h 12(it)h 12(allo)h -1(ws)h 11(me)h 12(a)h 12(c)h -1(hance)h 13(to)h 12(commen)h -1(t)h 10(on)h 12(y)h -1(our)h 13(prop)h 1(osed)h 13(mo)h 1(di\014catio)h -1(ns)h 11(and)h 12(giv)h -1(e)h 281 2540(m)s -1(y)h 14(opinion)h 14(on)h 16(whether)h 17(they)h 16(are)h 16(lik)h -1(ely)h 14(to)h 16(b)h 1(e)h 16(incorp)h 1(orated)h 16(in)h -1(to)h 15(the)h 17(o\016cial)h 14(v)h -1(ersion.)h 23(Second,)h 281 2590(I)s 16(can)h 15(send)h 17(y)h -1(ou)h 15(a)h 15(cop)h -1(y)h 16(\(under)h 17(sp)h 1(ecial)h 15(license\))h 17(of)h 15(the)h 16(GNU-clean)h 16(o\016cial)h 14(v)h -1(ersion)h 16(to)h 15(w)h -1(ork)h 15(on.)h 281 2640(This)s 14(will)h 12(allo)h -1(w)h 12(y)h -1(ou)h 14(to)h 14(ship)h 13(bac)h -1(k)h 14(y)h -1(our)h 14(c)h -1(hanges)h 15(as)h 13(\014les)h 15(rather)h 14(than)h 14(as)h 14(c)h -1(hange)h 15(sections.)h 177 2735(As)s 16(a)h 16(separate)h 17(p)h 1(oin)h -1(t)h 15(from)h 14(the)h 16(legal)h 15(issues,)h 16(I)h 16(am)h 14(lik)h -1(ely)h 14(to)h 16(turn)h 16(out)h 16(to)h 15(b)h 1(e)h 17(prett)h -1(y)h 16(pic)h -1(ky)h 15(ab)h 1(out)h 16(what)h 177 2785(mo)s 1(di\014cations)h 10(I)h 13(will)h 10(incorp)h 1(orate)h 13(in)h -1(to)h 11(the)h 13(o\016cial)h 11(cop)h -1(y)h -3(.)h 17(Whether)h 13(a)h 12(mo)h 1(di\014cation)h 10(will)h 11(b)h 1(e)h 12(accepted)h 14(will)h 177 2835(dep)s 1(end,)h 15(amongst)h 12(other)h 15(things,)h 13(on)h 14(the)h 14(follo)h -1(wing)h 11(criteria.)h 1042 2940(40)s 41 @eop 42 @bop0 cmbx10.432 sf [<00007FE003000003FFFC0F00001FFFFF1F00007FF00FFF0000FF8001FF0003FE0000FF 0007FC00007F000FF800003F000FF000001F001FE000001F003FE000000F003FC000000F 007FC0000007007FC0000007007FC000000700FF8000000000FF8000000000FF80000000 00FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000 00FF8001FFFFF8FF8001FFFFF87FC001FFFFF87FC00000FF007FC00000FF003FC00000FF 003FE00000FF001FE00000FF000FF00000FF000FF80000FF0007FC0000FF0003FE0001FF 0000FF8001FF00007FF007FF00001FFFFFBF000003FFFE0F0000007FF00300> 48 41 -4 40 54] 71 dc [<01FF000FFFE03E03F87803FC7801FCFE01FEFE01FEFE01FEFE01FE7C01FE3803FC0003 FC0007F0000FE0000F80001F00001E00003C00003C000078000078000070000070000070 0000700000700000700000000000000000000000000000000000000000700001FC0003FE 0003FE0003FE0003FE0003FE0001FC00007000> 24 42 -4 41 32] 63 dc 42 @bop1 cmti10.300 sf 1544 1034(and)s cmsy10.300 sf 239 42(\017)s 239 174(\017)s 239 257(\017)s 239 390(\017)s cmbx10.300 sf 222 1208(GNU)s 16(break)h -1(out)h cmbx10.432 sf 177 818(3.8)s 70(A)h 23(GNU)h 22(V)h -6(ersion?)h 177 1519(3.9)s 70(Sum)h -1(m)h -2(ary)h cmr10.300 sf 281 42(Do)s 1(es)h 11(the)h 11(mo)h 1(di\014cation)h 9(\014t)h 11(in)h 10(with)h 11(the)h 11(design)h 11(goals)h 10(of)h 10(F)h -3(unnelW)h -3(eb,)h 11(or)h 10(is)h 11(it)h 10(just)h 11(a)h 11(case)h 12(of)h 10(creeping)h 281 91(featurism?)s 281 174(Ho)s -1(w)h 13(w)h -1(ell)h 14(co)h 1(ded)h 14(is)h 14(the)h 15(mo)h 1(di\014catio)h -1(n?)h 17(W)h -3(ould)h 12(it)h 14(reduce)h 15(the)h 15(qualit)h -1(y)h 12(of)h 13(the)h 15(co)h 1(de?)h 281 257(If)s 14(the)h 16(mo)h 1(di\014cation)h 13(c)h -1(hanges)h 15(F)h -3(unnelW)h -3(eb's)h 15(functionalit)h -1(y)h -3(,)h 12(is)h 15(this)h 15(a)h 15(desirable)h 15(c)h -1(hange?)h 22(Ho)h -1(w)h 14(will)h 281 307(it)s 13(impact)h 13(on)h 13(existing)h 14(users?)h 281 390(W)s -3(ould)h 13(it)h 13(b)h 1(e)h 15(quic)h -1(k)h -1(er)h 14(for)h 14(me)h 13(to)h 14(mak)h -1(e)h 13(the)h 14(mo)h 1(di\014cation)h 12(m)h -1(yself)h 13(than)h 14(to)h 14(w)h -1(ork)h 13(out)h 14(ho)h -1(w)h 14(to)h 14(incor-)h 281 440(p)s 1(orate)h 14(the)h 15(submitted)h 13(mo)h 1(di\014cation?)h 177 556(It)s 13(is)h 12(m)h -1(y)h 11(goal)h 12(to)h 12(guard)h 13(the)h 13(in)h -1(tegrit)h -1(y)h 12(of)h 12(the)h 13(design)h 13(and)h 12(co)h 1(de)h 14(of)h 12(the)h 13(o\016cial)h 11(v)h -1(ersion)h 13(of)h 12(F)h -3(unnelW)h -3(eb)h 12(and)h 177 606(so)s 13(I)h 13(will)h 11(probably)h 12(b)h 1(e)h 13(rather)h 14(fussy)h 13(ab)h 1(out)h 12(what)h 13(I)h 12(regard)h 14(as)h 12(a)h 13(w)h -1(orth)h -1(while)h 12(mo)h 1(di\014cation.)h 15(I)h 13(do)h 12(not)h 13(wish)h 177 656(to)s 14(lose)h 14(con)h -1(trol)h 13(of)h 14(the)h 14(co)h 1(de,)h 14(either)h 15(tec)h -1(hnically)h 14(or)h 14(legally)h -3(.)h 177 934(The)s 18(con)h -1(trols)h 17(on)h 16(the)h 18(o\016cial)h 15(v)h -1(ersion)h 17(of)h 17(F)h -3(unnelW)h -3(eb)h 16(describ)h 1(ed)h 19(in)h 16(the)h 18(previous)h 17(section)h 18(will)h 15(ha)h -1(v)h -1(e)h 17(at)h 177 984(most)s 14(a)h 15(minor)h 13(impact)h 14(on)h 15(F)h -3(unnelW)h -3(eb)h 15(dev)h -1(elopmen)h -1(t)h 14(if)h 15(F)h -3(unnelW)h -3(eb)h 14(already)h 15(serv)h -1(es)h 17(the)h 16(needs)h 16(of)h 15(most)h 177 1034(of)s 19(its)h 20(users.)h 36(Ho)h -1(w)h -1(ev)h -1(er,)h 21(if)h 19(it)h 19(turns)h 20(out)h 20(that)h 19(F)h -3(unnelW)h -3(eb)h 19(is)h 20(b)h 1(oth)h 20(p)h 1(opular,)h 105(needs)h 21(widespread)h 177 1083(mo)s 1(di\014cations)h 13(and)h 14(enhancemen)h -1(ts,)h 15(then)h 15(the)h 15(o\016cial)h 13(feedbac)h -1(k)h 15(lo)h 1(op)h 13(describ)h 1(ed)h 16(in)h 14(the)h 15(previous)h 15(section)h 177 1133(will)s 13(b)h 1(ecome)h 13(un)h -1(w)h -1(ork)h -2(able,)h 13(and)h 14(there)h 15(will)h 12(b)h 1(e)h 15(a)h 13(GNU)h 14(break)h -1(out.)h 177 1208(A)s 340(will)h 12(o)h 1(ccur)h 15(if)h 13(F)h -3(unnelW)h -3(eb)h 13(users)h 16(b)h 1(ecome)h 13(organized)h 14(enough)h 14(and)h 14(anno)h -1(y)h -1(ed)h 14(enough)h 177 1258(\(at)s 20(the)h 21(o\016cial)h 18(dev)h -1(elopmen)h -1(t)h 19(cycle\))h 21(to)h 20(start)h 20(main)h -1(taini)h -1(ng)h 18(a)h 20(coheren)h -1(t)h 21(v)h -1(ersion)h 20(of)h 19(F)h -3(unnelW)h -3(eb)h 20(that)h 177 1307(div)s -1(erges)h 19(from)h 16(the)h 19(o\016cial)h 17(v)h -1(ersion.)h 31(If)h 18(a)h 18(GNU)h 18(break)h -1(out)h 18(o)h 1(ccurs,)h 20(I)h 18(w)h -1(ould)h 18(appreciate,)h 19(as)h 19(requested)h 177 1357(earlier,)s 14(that)h 14(a)h 13(di\013eren)h -1(t)h 15(name)h 13(and)h 14(\014le)h 13(extensions)h 15(b)h 1(e)h 15(c)h -1(hosen)h 15(for)h 13(the)h 15(div)h -1(erging)h 13(v)h -1(ersion.)h 177 1635(Decen)s -1(tralized)h 21(mo)h 1(di\014cations)h 18(to)h 20(a)h 19(programm)h -1(ing)h 17(language)h 19(and)h 20(its)h 20(implem)h -1(en)h -1(tatio)h -1(ns)h 19(can)h 20(seriously)h 177 1685(damage)s 12(the)h 14(language's)h 13(p)h 1(ortabilit)h -1(y)h 12(and)h 14(seman)h -1(tic)h 12(clarit)h -1(y)h -3(.)h 17(Unfortunately)h -3(,)h 13(there)h 15(is)h 13(a)h 13(tension)h 14(b)h 1(et)h -1(w)h -1(een)h 177 1735(cen)s -1(tralizing)h 10(con)h -1(trol)h 10(of)h 9(a)h 10(programm)h -1(i)h -1(ng)h 8(language)h 9(and)h 10(pro)h -1(viding)h 9(source)h 11(co)h 1(de)h 11(securit)h -1(y)h 11(to)h 10(nerv)h -1(ous)h 11(users.)h 177 1785(In)s 15(F)h -3(unnelW)h -3(eb,)h 13(this)h 15(trade-o\013)h 15(has)h 15(b)h 1(een)h 15(resolv)h -1(ed)h 15(to)h 15(some)h 13(exten)h -1(t)h 16(b)h -1(y)h 14(releasing)h 15(the)h 15(source)h 16(co)h 1(de)h 15(along)h 177 1835(with)s 16(a)h 16(request)h 18(that)h 16(if)h 16(the)h 16(functionalit)h -1(y)h 15(of)h 16(the)h 17(program)h 14(is)h 16(mo)h 1(di\014ed,)h 15(that)h 17(the)h 17(program's)h 14(name)h 15(b)h 1(e)h 177 1884(c)s -1(hanged)h 12(and)h 12(a)h 11(di\013eren)h -1(t)h 13(\014le)h 11(extension)h 13(b)h 1(e)h 12(c)h -1(hosen)h 13(for)h 11(input)h 12(\014les)h 12(created)h 13(under)h 12(the)h 13(mo)h 1(di\014ed)h 10(program.)h 177 1934(The)s 14(author)h 14(of)h 13(F)h -3(unnelW)h -3(eb)h 13(has)h 13(decided)h 15(to)h 13(main)h -1(tain)h 11(an)h 13(o\016cial)h 13(v)h -1(ersion)h 13(of)h 13(F)h -3(unnelW)h -3(eb)h 13(o)h -1(v)h -1(er)h 14(whic)h -1(h)h 13(he)h 177 1984(will)s 14(o)h -1(wn)h 15(cop)h -1(yrigh)h -1(t,)h 15(but)h 16(whic)h -1(h)h 15(he)h 16(will)h 14(release)h 17(under)h 16(GNU)h 15(license)h 17(from)h 13(time)h 14(to)h 16(time.)h 21(This)h 16(means)h 177 2034(that)s 16(cop)h -1(yrigh)h -1(t)h 15(on)h 16(all)h 14(c)h -1(hanges)h 17(to)h 15(F)h -3(unnelW)h -3(eb)h 16(m)h -1(ust)h 14(b)h 1(e)h 17(signed)h 16(o)h -1(v)h -1(er)h 15(to)h 16(the)h 16(author)h 16(b)h 1(efore)h 17(they)h 16(ha)h -1(v)h -1(e)h 177 2084(a)s 16(c)h -1(hance)h 18(of)h 16(b)h 1(eing)h 17(incorp)h 1(orated)h 17(in)h 16(the)h 17(o\016cial)h 15(v)h -1(ersion.)h 27(Finally)h -3(,)h 14(it)h 17(is)h 16(p)h 1(ossible)h 17(that)h 17(this)h 16(reluctance)h 177 2133(of)s 14(the)h 15(author)h 14(to)h 14(remo)h -1(v)h -1(e)h 13(his)h 14(cop)h -1(yrigh)h -1(ted)h 15(v)h -1(ersion)h 14(from)h 12(the)h 15(dev)h -1(elopmen)h -1(t)h 13(cycle)h 15(of)h 14(the)h 15(o\016cial)h 13(v)h -1(ersion)h 177 2183(will)s 11(result)h 14(in)h 12(a)h 12(GNU)h 13(break)h -1(out)h 13(in)h 12(whic)h -1(h)h 12(a)h 13(div)h -1(erging)h 11(GNU)h 13(v)h -1(ersion)h 12(of)h 13(F)h -3(unnelW)h -3(eb)h 12(will)h 11(b)h 1(e)h 13(main)h -1(tai)h -1(ned)h 177 2233(b)s -1(y)h 14(the)h 14(GNU)h 14(comm)h -2(unit)h -1(y)h -3(.)h 16(The)h 14(author)h 14(hop)h 1(es)h 15(this)h 14(w)h -1(on't)h 13(b)h 1(e)h 15(necessary)h 16(and)h 14(requests,)h 15(if)h 13(this)h 14(happ)h 1(ens,)h 177 2283(that)s 14(the)h 15(div)h -1(erging)h 13(GNU)h 13(v)h -1(ersion)h 14(b)h 1(e)h 15(renamed.)h 1042 2940(41)s 42 @eop 43 @bop0 43 @bop1 cmr10.300 sf 1042 2940(42)s 43 @eop 44 @bop0 cmbx10.622 sf [<00000007C0000000000FC0000000000FC0000000001FC0000000003FC0000000007FC0 00000000FFC000000000FFC000000001FFC000000003FFC000000007FFC00000000FFFC0 0000000FFFC00000001EFFC00000003CFFC00000007CFFC0000000F8FFC0000000F0FFC0 000001E0FFC0000003C0FFC0000007C0FFC000000F80FFC000000F00FFC000001E00FFC0 00003C00FFC000007C00FFC00000F800FFC00000F000FFC00001E000FFC00003C000FFC0 0007C000FFC0000F8000FFC0000F0000FFC0001E0000FFC0003C0000FFC0007C0000FFC0 00F80000FFC000FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC0000001FFC0 00000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC0 00000001FFC000000001FFC000000001FFC0000007FFFFFFC00007FFFFFFC00007FFFFFF C00007FFFFFFC0> 48 55 -3 54 49] 52 dc cmbx10.300 sf [<003FC1FE0001F03F818003C03E01C007C07E03E00F807C03E00F807C03E00F807C01C0 0F807C00000F807C00000F807C00000F807C0000FFFFFFFFE0FFFFFFFFE00F807C03E00F 807C03E00F807C03E00F807C03E00F807C03E00F807C03E00F807C03E00F807C03E00F80 7C03E00F807C03E00F807C03E00F807C03E00F807C03E00F807C03E07FE1FF0FFC7FE1FF 0FFC> 40 29 0 28 40] 14 dc [<03F0600F0CE01E07E03C03E07C03E07803E0F803E0F803E0F803E0F803E0F803E0F803 E07803E07C03E03C03E01C07E00E0FE003F3E00003E00003E00003E00003E00003E00003 E0001FFC001FFC> 24 26 -2 17 25] 113 dc 44 @bop1 cmti10.300 sf 1853 2316(al)s 2(l)h cmbx10.622 sf 177 376(Chapter)s 34(4)h cmbx10.746 sf 177 607(F)s -10(unnelW)h -10(eb)h 41(F)h -10(uture)h cmtt10.300 sf 1211 1719(COMLINE)s 15(MAX)h 389 2465(SETALL)s 655(SET)h 747 2785(command.c)s cmbx10.432 sf 177 1107(4.1)s 70(Do)h 2(cum)h -1(e)h -1(n)h -2(tation)h 177 1604(4.2)s 70(Com)h -1(m)h -3(and)h 22(Line)h 22(In)h -2(terface)h 177 2201(4.3)s 70(Shell)h 21(In)h -2(terpreter)h cmbx10.300 sf 177 1221(An)s 12(o\016cial)h 11(example:)h 177 1344(Index)s 20(program:)h 177 1719(Bu\013er)s 14(length:)h 177 1892(An)s -1(tiquated)h 14(F)h -4(eatures:)h 177 2316(SET)s -4(ALL)h 20(command:)h 177 2588(Recursion)s 14(test:)h 177 2662(Diagnosti)s -1(c)h 13(coun)h -1(ti)h -1(ng:)h 177 2785(Argumen)s -1(t)h 16(coun)h -1(ti)h -1(ng:)h cmr10.300 sf 177 847(Previous)s 13(c)h -1(hapters)h 14(ha)h -1(v)h -1(e)h 13(explained)h 12(the)h 13(design)h 13(of)h 12(F)h -3(unnelW)h -3(eb)h 12(and)h 13(giv)h -1(en)h 12(reasons)h 14(for)h 12(wh)h -1(y)h 12(it)h 13(is)h 12(the)h 13(w)h -1(a)h -1(y)h 177 897(it)s 15(is.)h 24(This)h 15(c)h -1(hapter)h 17(go)h 1(es)h 16(through)h 16(eac)h -1(h)h 16(of)h 15(the)h 17(asp)h 1(ects)h 17(of)h 15(F)h -3(unnelW)h -3(eb,)h 15(and)h 16(explores)h 16(their)h 16(problems,)h 177 946(ho)s -1(w)h 14(they)h 14(can)h 14(b)h 1(e)h 15(solv)h -1(ed,)h 13(and)h 14(lists)h 13(opp)h 1(ortunities)h 15(for)h 13(impro)h -1(v)h -1(em)h -1(en)h -1(t.)h 601 1221(A)s 11(o\016cial)h 9(example)h 10(program)h 9(written)h 12(using)h 10(F)h -3(unnelW)h -3(eb)h 11(should)h 10(b)h 1(e)h 12(constructed)h 177 1271(and)s 14(made)h 13(a)h -1(v)h -2(aila)h -1(ble.)h 533 1344(In)s 19(order)h 18(to)h 19(t)h -1(yp)h 1(eset)h 19(the)h 19(do)h 1(cumen)h -1(tation,)h 18(a)h 18(p)h 1(ortable)h 18(index)h 18(sorting)h 18(program)h 17(is)h 177 1394(required.)s 31(One)h 19(should)h 17(b)h 1(e)h 19(written)h 18(and)h 18(added)h 18(to)h 18(the)h 18(distribution)h 18(kit.)h 29(P)h -1(erhaps)h 19(this)h 18(could)h 18(b)h 1(e)h 18(the)h 177 1444(o\016cial)s 13(example!)h 484 1719(Curren)s -1(tly)h 13(the)h 14(F)h -3(unnelW)h -3(eb)h 12(shell)h 13(uses)h 15(the)h 260(constan)h -1(t)h 13(to)h 13(size)h 14(its)h 13(in)h -1(ternal)h 177 1768(comma)s -1(nd)h 15(line)h 15(bu\013ers.)h 27(This)h 16(is)h 16(un)h -1(tenable.)h 25(The)h 17(maxim)h -3(um)h 13(length)h 16(of)h 16(a)h 16(shell)h 16(comm)h -1(and)h 14(line)h 16(should)h 177 1818(not)s 14(b)h 1(e)h 14(mac)h -1(hine)h 13(dep)h 1(enden)h -1(t.)h 638 1892(As)s 15(the)h 15(F)h -3(unnelW)h -3(eb)h 13(language)h 14(dev)h -1(elops,)h 14(it)h 14(is)h 14(lik)h -1(ely)h 13(that)h 15(some)h 13(c)h -1(hanges)h 15(will)h 177 1941(ha)s -1(v)h -1(e)h 15(to)h 15(b)h 1(e)h 16(made)h 13(that)h 15(will)h 14(render)h 17(one)h 15(or)h 15(more)h 14(language)h 14(constructs)h 17(obsolete.)h 22(When)h 15(this)h 15(happ)h 1(ens,)h 177 1991(it)s 13(ma)h -1(y)h 10(b)h 1(e)h 14(necessary)h 15(to)h 12(add)h 13(a)h 13(comm)h -1(and)h 11(line)h 12(option)h 12(that)h 13(has)h 13(the)h 13(p)h 1(o)h -1(w)h -1(er)h 13(to)h 13(turn)h 13(on)h 13(and)h 12(o\013)h 13(w)h -1(arnings)h 177 2041(or)s 14(errors)h 15(\015agging)h 13(an)h -1(tiquated)h 13(features.)h 618 2316(When)s 17(writing)h 17(F)h -3(unnelW)h -3(eb)h 17(scripts,)h 19(it)h 17(is)h 18(sometim)h -1(es)h 17(desirable)h 18(to)h 17(set)h 80(of)h 177 2366(F)s -3(unnelW)h -3(eb's)h 16(options)h 17(to)h 16(some)h 16(particular)h 17(v)h -2(alue)h 16(so)h 17(that)h 16(the)h 18(script)h 17(is)h 17(not)h 16(vulnerable)h 17(to)h 17(c)h -1(hanges)h 17(in)h 177 2415(F)s -3(unnelW)h -3(eb's)h 15(default)h 16(v)h -2(alues)h 15(whic)h -1(h)h 16(migh)h -1(t)h 14(o)h 1(ccur)h 16(from)h 14(time)h 15(to)h 16(time.)h 22(T)h -3(o)h 15(this)h 16(end,)h 16(it)h 16(ma)h -1(y)h 13(b)h 1(e)h 17(w)h -1(orth)h 177 2465(creating)s 13(a)h 12(\\)h 132(")h 11(comm)h -1(and)h 11(that)h 12(is)h 13(iden)h -1(tical)h 11(to)h 13(the)h 13(\\)h 66(")h 11(comma)h -1(nd)h 11(except)h 14(that)h 12(it)h 12(will)h 11(generate)h 177 2515(an)s 14(error)h 15(if)h 13(the)h 14(v)h -2(alue)h 13(of)h 14(an)h 13(option)h 13(is)h 14(not)h 14(sp)h 1(eci\014ed)h 15(explicitly)h -3(.)h 510 2588(A)s 14(test)h 15(should)h 14(b)h 1(e)h 14(added)h 15(to)h 13(test)h 15(for)h 14(recursiv)h -1(e)h 15(in)h -1(v)h -1(o)h 1(cation)h 13(in)h 13(a)h 14(shellscript.)h 621 2662(The)s 13(co)h 1(de)h 13(for)h 12(coun)h -1(ting)h 12(diagnostics)h 13(in)h 12(the)h 13(script)h 13(in)h -1(terpreter)h 14(is)h 13(rather)h 13(messy)h 177 2711(and)s 14(p)h 1(erhaps)h 15(ev)h -1(en)h 14(buggy)h -3(.)h 18(It)h 13(should)h 14(b)h 1(e)h 15(cleaned)h 14(up)h 14(and)h 14(comm)h -1(en)h -1(ted.)h 621 2785(In)s 15(the)h 228(mo)h 1(dule,)h 14(there)h 17(is)h 15(a)h 15(v)h -2(ariable)h 15(that)h 15(coun)h -1(ts)h 16(the)h 17(argumen)h -1(ts)h 177 2835(to)s 14(a)h 14(comma)h -1(nd.)h 18(Curren)h -1(tly)h 14(it)h 14(tak)h -1(es)h 15(the)h 15(v)h -2(alue)h 13(of)h 14(the)h 15(n)h -1(um)h -1(b)h 1(er)h 13(of)h 14(parameters)h 14(including)h 14(the)h 15(comm)h -1(and)h 1042 2940(43)s 14 2 1368 1719 r 44 @eop 45 @bop0 cmbx10.432 sf [<00000300000007800000078000000F8000000F0000000F0000001F0000001E0000003E 0000003C0000003C0000007C0000007800000078000000F8000000F0000001F0000001E0 000001E0000003E0000003C0000003C0000007C00000078000000F8000000F0000000F00 00001F0000001E0000003E0000003C0000003C0000007C0000007800000078000000F800 0000F0000001F0000001E0000001E0000003E0000003C0000003C0000007C00000078000 000F8000000F0000000F0000001F0000001E0000001E0000003E0000003C0000007C0000 007800000078000000F8000000F0000000F000000060000000> 32 60 -4 44 34] 47 dc cmbx10.300 sf [<0FF0303C601EF01FF81FF81F701F003E003C007000E001C00180018003000300030003 000300000000000000000007800FC00FC00FC00FC00780> 16 29 -3 28 23] 63 dc [<001FE00000E01C0003000300060001800C0000C018000060300FC0302038601060F010 1860F01F18C1E01F0CC1E01F0CC3E01F0CC3E01F0CC3E01F0CC3E01F0CC3E01F0CC1E01F 0CC1E01F0C60F01F0860F01F1820386F10300FC7E0180000000C00000006000000030000 3C00E007F0001FFC00> 32 29 -3 28 37] 64 dc 45 @bop1 cmsy10.300 sf 375 1590(f)s 736 1640(f)s 1284 1789(f)s cmbx10.432 sf 177 814(4.4)s 70(Language)h 24(Design)h 177 2566(4.5)s 70(Scanner/Mapp)h 2(er)h cmtt10.300 sf 1726 295(Make)s 1251 395(+D)s 787 445(Make)s 348(Make)h 177 495(.fw)s 1181 544(.sig)s 534(.fw)h 263 594(Make)s 863(.fw)h 202(.sig)h 615 1060(@O)s 780 1110(0)s 769(@F)h 364 1236(@)s 714 1640(@)s 350(@-)h 1262 1789(@)s 657 2347(@\()s 99(@\))h cmbx10.300 sf 177 168(Mak)s -1(e)h 15(facilit)h -2(y:)h 177 295(Signatur)s -1(e)h 12(\014le:)h 177 1060(Output)s 10(or)h 11(\014le?:)h 177 1187(Syn)s -1(tax)h 16(of)h 17(section)h 16(names:)h 177 1463(One)s 15(macro)h 14(p)h 1(er)h 15(section:)h 177 1590(Should)s 15(@)h 38(suppress)h 15(EOL?:)h 177 1866(Pragma)s 20(syn)h -1(tax:)h 177 1993(Condition)s -1(al)h -1(s:)h 177 2170(File)s 15(mark)h -1(ers:)h 177 2297(F)s -4(ormal)h 13(parameter)h 13(lists:)h 177 2685(All)s 17(non-con)h -1(ti)h -1(guo)h -1(us)h 16(mappings:)h cmr10.300 sf 177 42(v)s -1(erb.)h 19(This)h 13(has)h 13(turned)h 15(out)h 13(to)h 13(mak)h -1(e)h 12(the)h 14(co)h 1(de)h 14(less)h 15(readable.)h 18(It)h 13(should)h 13(b)h 1(e)h 14(c)h -1(hanged)h 14(to)h 13(b)h 1(e)h 14(the)h 14(n)h -1(um)h -1(b)h 1(er)h 177 91(of)s 13(argumen)h -1(ts)h 14(to)h 13(the)h 15(comm)h -1(and)h 12(v)h -1(erb.)h 479 168(It)s 13(ma)h -1(y)h 11(b)h 1(e)h 13(w)h -1(orth)h 13(building)h 12(some)h 12(sort)h 13(of)h 12(mak)h -1(e)h 12(facilit)h -1(y)h 11(in)h -1(to)h 12(the)h 14(script)h 14(language)h 12(so)h 13(as)h 177 218(to)s 14(supp)h 1(ort)h 15(mac)h -1(hines)h 13(suc)h -1(h)h 14(as)h 14(the)h 15(Macin)h -1(tosh)h 14(that)h 13(do)h 14(not)h 14(already)h 13(ha)h -1(v)h -1(e)h 14(this)h 14(facilit)h -1(y)h -3(.)h 484 295(One)s 13(problem)h 12(with)h 12(using)h 12(F)h -3(unnelW)h -3(eb)h 12(in)h 12(conjunction)h 12(with)h 13(an)h 12(external)h 112(facilit)h -1(y)h 177 345(is)s 15(that)h 16(a)h 15(user)h 16(migh)h -1(t)h 13(c)h -1(hange)h 16(a)h 15(F)h -3(unnelW)h -3(eb)h 15(source)h 16(\014le)h 16(without)h 15(making)h 13(c)h -1(hanges)h 16(that)h 15(will)h 14(a\013ect)h 16(the)h 177 395(\014les)s 16(that)h 15(it)h 14(generates.)h 24(If)h 14(F)h -3(unnelW)h -3(eb)h 15(is)h 15(then)h 16(run)h 15(and)h 15(the)h 16(\\)h 44(")h 14(option)h 14(is)h 15(on,)h 15(then)h 15(the)h 16(output)h 15(\014les)h 177 445(will)s 15(b)h 1(e)h 17(deleted)h 18(\(to)h 17(a)h -1(v)h -1(oid)h 15(further)h 121(propagations\).)h 25(If)h 120(then)h 17(has)h 17(a)h 16(pro)h 1(duction)h 17(linking)h 15(the)h 255 495(\014le)s 13(to)h 13(its)h 13(output)h 13(\014les,)h 13(then)h 13(it)h 13(ma)h -1(y)h 11(conclude)h 13(that)h 13(the)h 13(output)h 13(\014les)h 14(are)h 13(still)h 12(out)h 13(of)h 12(date.)h 18(T)h -3(o)h 12(solv)h -1(e)h 177 544(the)s 17(problem,)h 15(F)h -3(unnelW)h -3(eb)h 16(could)h 17(b)h 1(e)h 17(c)h -1(hanged)h 16(to)h 17(write)h 16(a)h 120(\014le)h 16(whenev)h -1(er)h 18(it)h 16(pro)h 1(cesse)h 1(s)h 18(a)h 98(\014le.)h 177 594(The)s 116(pro)h 1(duction)h 14(could)h 13(then)h 15(b)h 1(e)h 14(wired)h 15(up)h 14(to)h 13(link)h 13(the)h 94(\014le)h 14(to)h 14(the)h 115(\014le)h 14(instead)h 14(of)h 13(to)h 14(the)h 177 644(output)s 14(\014les.)h 177 933(Some)s 13(prop)h 1(osed)h 15(c)h -1(hanges)h 15(to)h 14(F)h -3(unnelW)h -3(eb)h 13(do)h 14(not)h 14(corresp)h 1(ond)h 16(to)h 14(an)h -1(y)h 13(particular)h 14(comp)h 1(onen)h -1(t)h 14(of)h 13(F)h -3(unnel-)h 177 983(W)s -3(eb)h 14(and)h 13(are)h 15(really)h 13(to)h 14(do)h 13(with)h 14(the)h 14(design)h 15(of)h 13(the)h 14(input)h 14(language.)h 512 1060(The)s 11(\\)h 44(")h 9(sp)h 1(ecial)h 11(sequence)h 13(for)h 10(de\014ning)h 11(an)h 10(output)h 11(\014le)h 11(is)h 10(somewhat)h 10(non-mnem)h -1(oni)h -1(c)h 177 1110(and)s 14(can)h 14(b)h 1(e)h 14(confused)h 15(with)h 14(zero)h 15(\(\\)h 22("\).)h 17(P)h -1(erhaps)h 15(it)h 13(should)h 14(b)h 1(e)h 15(replaced)h 15(b)h -1(y)h 13(the)h 15(\\)h 44(")h 13(sequence.)h 720 1187(Curren)s -1(tly)h 15(section)h 16(names)h 14(use)h 16(the)h 16(same)h 14(syn)h -1(tax)h 15(as)h 15(macro)h 14(names.)h 21(F)h -3(or)h 177 1236(example)s 16(\\)h 198(".)h 25(It)h 17(can)h 18(b)h 1(e)h 17(argued)h 18(that)h 17(angle)h 16(brac)h -1(k)h -1(ets)h 18(should)h 17(b)h 1(e)h 18(reserv)h -1(ed)h 19(only)h 16(for)h 17(macro)h 177 1286(names)s 16(and)h 17(that)h 16(some)h 16(other)h 18(syn)h -1(tax)h 16(should)h 17(b)h 1(e)h 17(found)h 17(for)h 16(delimiti)h -1(ng)h 15(section)h 17(names.)h 26(This)h 17(is)h 16(not)h 17(a)h 177 1336(clear)s 12(issue.)h 18(It)h 11(could)h 12(also)h 10(b)h 1(e)h 13(argued)h 11(that)h 12(they)h 12(are)h 12(b)h 1(oth)h 11(names,)h 11(and)h 11(that)h 11(b)h 1(ecause)h 14(sections)h 12(can)h 12(inherit)h 177 1386(their)s 14(names)h 14(from)h 12(the)h 14(macros)h 13(they)h 15(con)h -1(tain,)h 13(that)h 13(the)h 15(names)h 13(are)h 14(of)h 14(the)h 14(same)h 13(\\t)h -1(yp)h 1(e".)h 680 1463(One)s 14(particular)h 13(st)h -1(yle)h 13(of)h 13(using)h 13(F)h -3(unnelW)h -3(eb)h 12(is)h 13(to)h 13(ha)h -1(v)h -1(e)h 13(at)h 14(most)h 12(one)h 13(macro)h 177 1513(de\014nition)s 12(p)h 1(er)h 13(section.)h 19(It)h 12(ma)h -1(y)h 11(b)h 1(e)h 13(w)h -1(orth)h 12(adding)h 12(a)h 12(pragma)h 10(that)h 13(instructs)h 14(F)h -3(unnelW)h -3(eb)h 11(to)h 13(enforce)h 13(this.)h 760 1590(When)s 15(de\014ning)h 15(a)h 15(macro)h 14(in)h 15(F)h -3(unnelW)h -3(eb,)h 14(it)h 15(seems)h 15(to)h 15(b)h 1(e)h 16(rule)h 15(rather)h 177 1640(than)s 14(the)h 15(exception)h 14(that)h 14(the)h 15(\\)h 43(")h 13(b)h 1(e)h 14(follo)h -1(w)h -1(ed)h 13(b)h -1(y)h 13(\\)h 44(".)h 18(This)h 13(suppresse)h 1(s)h 16(the)h 15(EOL)h 14(on)h 14(the)h 14(de\014nition)h 177 1690(line,)s 12(allo)h -1(wing)h 11(the)h 13(\014rst)h 14(line)h 12(of)h 13(the)h 13(macro)h 12(to)h 12(b)h 1(e)h 14(placed)h 13(imm)h -1(edia)h -1(tely)h 11(ab)h 1(o)h -1(v)h -1(e)h 13(and)h 12(in)h 13(line)h 12(with)h 13(the)h 13(other)h 177 1739(lines)s 17(without)h 17(in)h -1(tro)h 1(ducing)h 17(an)h 16(EOL)h 18(at)h 17(the)h 17(start)h 18(of)h 17(the)h 17(macro)h 16(text.)h 28(One)h 18(option)h 16(is)h 17(to)h 17(in)h -1(tro)h 1(duce)h 18(a)h 177 1789(pragma)s 12(to)h 14(determine)h 14(whether)h 15(to)h 14(suppress)h 16(EOLs)h 14(follo)h -1(wing)h 12(\\)h 43(".)h 536 1866(It)s 18(is)h 18(not)h 18(clear)h 18(ho)h -1(w)h 18(\\lo)h 1(ose")h 17(the)h 19(syn)h -1(tax)h 18(of)h 17(pragmas)h 17(should)h 17(b)h 1(e.)h 31(P)h -1(erhaps)h 19(they)h 177 1916(should)s 14(b)h 1(e)h 14(case)h 15(insensitiv)h -1(e.)h 478 1993(Dep)s 1(ending)h 17(on)h 17(demand,)h 17(it)h 17(ma)h -1(y)h 15(b)h 1(e)h 18(w)h -1(orth)h 18(rein)h -1(tro)h 1(ducing)h 17(some)h 17(sort)h 17(of)h 17(conditional)h 177 2043(feature)s 17(in)h -1(to)h 16(F)h -3(unnelW)h -3(eb.)h 24(Ho)h -1(w)h -1(ev)h -1(er,)h 17(it)h 15(w)h -1(ould)h 16(ha)h -1(v)h -1(e)h 16(to)h 16(b)h 1(e)h 17(v)h -1(ery)h 16(simple)h 15(to)h 16(comp)h 1(ete)h 16(with)h 16(the)h 16(v)h -2(arious)h 177 2093(w)s -1(a)h -1(ys)h 14(in)h 13(whic)h -1(h)h 14(conditionals)h 13(can)h 14(already)h 13(b)h 1(e)h 15(fudged)h 14(within)h 13(F)h -3(unnelW)h -3(eb)h 13(as)h 14(it)h 14(stands.)h 473 2170(It)s 14(migh)h -1(t)h 13(b)h 1(e)h 15(w)h -1(orth)h 15(mo)h 1(difyi)h -1(ng)h 13(the)h 15(language)h 14(so)h 15(that)h 14(a)h 15(sp)h 1(ecial)h 15(syn)h -1(tactical)h 14(mark)h -1(er)h 14(is)h 177 2220(required)s 11(at)h 10(the)h 11(start)h 11(and)h 10(end)h 10(of)h 10(\014les.)h 17(This)h 10(will)h 9(assist)h 10(in)h 10(detecting)h 11(truncations)h 11(and)h 10(other)h 11(corruptions.)h 680 2297(It)s 13(mig)h -1(h)h -1(t)h 11(b)h 1(e)h 13(w)h -1(orth)h 13(c)h -1(hanging)h 12(o)h -1(v)h -1(er)h 12(to)h 13(a)h 12(syn)h -1(tax)h 12(for)h 13(formal)h 10(parameter)h 12(lists)h 177 2347(that)s 16(do)h 1(es)h 17(not)h 17(require)h 17(the)h 76(and)h 60(.)h 25(Ho)h -1(w)h -1(ev)h -1(er,)h 17(they)h 16(could)h 16(b)h 1(e)h 17(retained)h 17(as)h 16(optional)h 15(for)h 16(bac)h -1(kw)h -1(ard)h 177 2396(compatibili)s -1(t)h -1(y)h -3(.)h 826 2685(Curren)s -1(tly)h 17(F)h -3(unnelW)h -3(eb)h 15(requires)h 17(that)h 17(all)h 15(input)h 15(\014les)h 17(b)h 1(e)h 17(mapp)h 1(ed)h 177 2735(in)s -1(to)h 15(a)h 15(con)h -1(tiguous)h 15(lump)h 14(of)h 15(memo)h -1(ry)h -3(.)h 21(This)h 15(caused)h 17(problems)h 15(for)h 15(t)h -1(w)h -1(o)h 15(reasons.)h 24(First,)h 15(to)h 16(do)h 15(this,)h 16(one)h 177 2785(has)s 12(to)h 12(allo)h 1(cate)h 11(the)h 12(memo)h -1(ry)h 10(\014rst,)h 13(and)h 11(to)h 12(do)h 11(that,)h 12(y)h -1(ou)h 11(ha)h -1(v)h -1(e)h 12(to)h 11(kno)h -1(w)h 11(ho)h -1(w)h 12(long)h 11(the)h 12(\014le)h 12(is,)h 11(and)h 12(it)h 11(turns)h 177 2835(out)s 14(that)h 14(\014nding)h 14(out)h 14(the)h 14(length)h 14(of)h 13(a)h 14(\014le)h 14(in)h 14(a)h 13(p)h 1(ortable)h 15(manner)h 13(is)h 14(v)h -1(ery)h 14(ine\016cien)h -1(t.)h 18(Second,)h 15(although)h 1042 2940(44)s 45 @eop 46 @bop0 cmtt10.300 sf [<03000F803FE0FDF8F0784010> 16 6 -4 24 22] 94 dc cmti10.300 sf [<070E0019910010E38020E38041C30041C00001C00001C0000380000380000380000380 00070200670200E70400CB04008B080070F000> 24 18 -3 17 19] 120 dc cmbx10.300 sf [<007800FC00FC00FC00FC007800000000000000000000000003FC03FC007C007C007C00 7C007C007C007C007C007C007C007C007C007C007C007C007C007C007C707CF87CF878F8 F070E01F80> 16 38 3 29 15] 106 dc 46 @bop1 cmtt10.300 sf 423 395(@^D\(10\))s 682 572(@^D\(ddd\))s 1093 622(LF)s 611 699(version)s 470 1703(@M)s cmbx10.432 sf 177 1018(4.6)s 70(P)h -2(arser)h 177 1308(4.7)s 70(Analyser)h 177 1923(4.8)s 70(T)h -6(angle)h 177 2588(4.9)s 70(W)h -6(ea)h -2(v)h -2(e)h cmti10.300 sf 1172 2169(no)s 21(indentation)h 108(blank)h 20(indentation)h 1259 2219(T)s -3(ext)h 17(indentation)h 295(blank)h 177 2269(indentation)s cmbx10.300 sf 177 295(EOL)s 14(is)h 14(unsp)h 1(eci\014)h -1(abl)h -1(e:)h 177 522(Allo)s -1(w)h 15(mnemonics)h 14(for)h 16(unpri)h -1(n)h -2(tabl)h -1(es:)h 177 699(V)s -4(ersion)h 16(pragma:)h 177 1427(Recursion)s 11(detection)h -1(:)h 907 1526([T)s -4(arjan72])h 177 1653(Once)s 16(only)h 16(macros:)h 177 2169(T)s -4(ext)h 23(inden)h -2(tati)h -1(on)h -1(:)h 177 2785(Align)s 15(table)h 16(of)h 17(con)h -1(ten)h -1(ts)h -1(:)h cmr10.300 sf 177 42(IBM)s 14(PC)h 13(compatibles)h 12(ma)h -1(y)h 11(ha)h -1(v)h -1(e)h 13(megab)h -1(ytes)h 13(of)h 13(mem)h -1(ory)h -3(,)h 11(it)h 12(is)h 14(segmen)h -1(ted)h 13(in)h -1(to)h 12(blo)h 1(c)h -1(ks)h 14(of)h 12(at)h 13(most)h 12(64K.)h 177 91(This)s 14(means)h 13(that)h 14(F)h -3(unnelW)h -3(eb)h 13(curren)h -1(tly)h 15(cannot)h 14(read)h 15(a)h 13(\014le)h 14(longer)h 14(than)h 14(64K)h 13(on)h 14(a)h 13(PC.)h 177 168(These)s 16(problems)h 13(could)h 15(b)h 1(e)h 15(a)h -1(v)h -1(oided)h 13(if)h 14(the)h 15(mapp)h 1(er)h 14(and)h 14(scanner)h 16(w)h -1(ere)h 15(reorganized)h 15(to)h 14(allo)h -1(w)h 13(input)h 14(\014les)h 177 218(to)s 14(b)h 1(e)h 14(read)h 15(in)h 13(and)h 14(stored)h 15(as)h 14(a)h 13(link)h -1(ed)h 14(list)h 13(of)h 13(c)h -1(h)h -1(unks)h 15(of)h 13(text)h 14(rather)h 15(than)h 14(a)h 14(con)h -1(tiguous)h 13(blo)h 1(c)h -1(k.)h 632 295(F)s -3(unnelW)h -3(eb)h 12(uses)h 13(ASCI)h 1(I)h 13(c)h -1(haracter)h 14(decimal)h 11(ten)h 13(\(10\))h 12(in)h -1(ternally)h 11(to)h 12(represe)h 1(n)h -1(t)h 177 345(logical)s 12(end-of-line)h 12(and)h 13(is)h 13(curren)h -1(tly)h 14(organized)h 13(so)h 13(that)h 13(if)h 13(one)h 13(of)h 13(these)h 14(is)h 13(inserted)h 14(in)h -1(to)h 13(the)h 14(text)h 13(b)h -1(y)h 13(the)h 177 395(user)s 13(using)h 11(a)h 12(\\)h 154(",)h 9(it)h 12(will)h 10(b)h 1(e)h 12(written)h 13(out)h 11(as)h 12(a)h 11(logical)h 10(end)h 12(of)h 12(line,)h 11(rather)h 12(than)h 12(as)h 12(a)h 11(single)h 12(ASCI)h 1(I)h 177 445(c)s -1(haracter)h 15(10.)h 18(This)h 14(should)h 13(b)h 1(e)h 15(\014xed.)h 928 522(F)s -3(unnelW)h -3(eb)h 14(allo)h -1(ws)h 13(users)h 16(to)h 14(insert)h 15(unprin)h -1(table)h 14(c)h -1(haracters)h 177 572(in)s -1(to)h 16(the)h 17(output)h 16(using)h 16(the)h 17(\\)h 176(")h 14(sp)h 1(ecial)h 16(sequence.)h 28(P)h -1(erhaps)h 17(it)h 16(w)h -1(ould)h 15(b)h 1(e)h 17(c)h -1(hanged)h 17(so)h 16(that)h 16(it)h 177 622(understands)s 16(ASCI)h 1(I)h 14(standard)h 14(mnemoni)h -1(cs)h 13(suc)h -1(h)h 14(as)h 14(\\)h 44(")h 13(as)h 14(w)h -1(ell)h 13(as)h 14(ASCI)h 1(I)h 15(n)h -1(um)h -1(b)h 1(ers.)h 543 699(A)s 16(\\)h 154(")h 14(pragma)h 14(should)h 15(b)h 1(e)h 17(added)h 16(that)h 16(allo)h -1(ws)h 14(the)h 17(user)h 17(to)h 15(sp)h 1(ecify)h 17(in)h 15(the)h 177 749(input)s 15(\014le)h 16(the)h 16(v)h -1(ersion)h 16(of)h 14(F)h -3(unnelW)h -3(eb)h 15(that)h 16(w)h -1(as)h 15(around)h 16(when)h 16(the)h 16(input)h 15(\014le)h 15(w)h -1(as)h 16(created.)h 24(A)h -1(t)h 16(a)h 15(later)h 177 799(date,)s 15(suc)h -1(h)h 16(a)h 14(construct)h 17(w)h -1(ould)h 14(b)h 1(e)h 16(v)h -1(ery)h 15(useful)h 15(for)h 14(determining)h 14(ho)h -1(w)h 15(an)h 14(input)h 15(\014le)h 15(should)h 15(b)h 1(e)h 15(up)h 1(dated)h 177 848(if)s 13(the)h 15(F)h -3(unnelW)h -3(eb)h 13(language)h 13(has)h 14(c)h -1(hanged)h 14(b)h 1(et)h -1(w)h -1(een)h 16(v)h -1(ersions.)h 177 1138(There)s 15(are)h 15(no)h 13(prop)h 1(osals)h 14(to)h 14(c)h -1(hange)h 14(the)h 15(parser)h 15(except)h 15(as)h 14(a)h 13(consequence)h 17(of)h 13(other)h 14(prop)h 1(osals.)h 621 1427(Curren)s -1(tly)h 12(the)h 13(F)h -3(unnelW)h -3(eb)h 11(analyser)h 12(\015ags,)h 11(with)h 12(an)h 11(error,)h 13(all)h 11(macros)h 11(with)h 11(an)h 177 1477(in\014nite)s 11(expansion.)h 17(This)h 12(w)h -1(ould)h 10(b)h 1(e)h 12(b)h 1(est)h 12(c)h -1(hanged)h 12(to)h 11(\015agging)h 10(all)h 10(macros)h 11(that)h 11(are)h 12(directly)h 12(or)h 11(indirectly)h 177 1526(recursiv)s -1(e.)h 19(T)h -3(o)h 11(do)h 11(this,)h 11(T)h -3(arjan's)h 11(algorithm)h 219(for)h 12(the)h 12(detection)h 12(of)h 11(strong)h 12(comp)h 1(onen)h -1(ts)h 11(should)h 177 1576(b)s 1(e)h 15(installed.)h 585 1653(By)s 15(default)h 14(F)h -3(unnelW)h -3(eb)h 14(prev)h -1(en)h -1(ts)h 16(a)h 15(macro)h 13(from)h 13(b)h 1(eing)h 14(called)h 15(more)h 13(than)h 15(once)h 177 1703(unless)s 15(it)h 13(has)h 14(a)h 13(\\)h 44(")h 13(asso)h 1(ciated)h 14(with)h 14(it.)h 17(Ho)h -1(w)h -1(ev)h -1(er,)h 14(F)h -3(unnelW)h -3(eb)h 13(do)h 1(es)h 15(allo)h -1(w)h 12(a)h 13(macro)h 13(that)h 13(calls)h 14(suc)h -1(h)h 14(a)h 177 1753(macro)s 13(to)h 14(b)h 1(e)h 14(called)h 14(more)h 13(than)h 13(once.)h 19(P)h -1(erhaps)h 15(this)h 14(\\lo)h 1(ophole")h 12(should)h 14(b)h 1(e)h 15(plugged)h 13(someho)h -1(w.)h 177 2042(The)s 12(T)h -3(angler)h 11(is)h 12(one)h 12(of)h 11(the)h 13(cleanest)h 13(comp)h 1(onen)h -1(ts)h 11(of)h 11(F)h -3(unnelW)h -3(eb,)h 11(as)h 12(basically)h 11(all)h 10(it)h 12(has)h 12(to)h 11(do)h 12(is)h 12(expand)h 177 2092(some)s 13(v)h -1(ery)h 14(w)h -1(ell-de\014ned)h 15(macros.)h 576 2169(Curren)s -1(tly)h 21(F)h -3(unnelW)h -3(eb)h 19(supp)h 1(orts)h 313(and)h 338(.)h 38(A)h 177 2219(third)s 17(form)h 14(could)h 17(b)h 1(e)h 17(added)h 17(if)h 15(it)h 16(w)h -1(as)h 17(considered)h 17(necess)h 1(ary)h -3(.)h 345(is)h 16(the)h 17(same)h 16(as)h 398 2269(except)s 17(that)h 15(instead)h 15(of)h 15(inden)h -1(ting)h 14(with)h 15(blanks,)h 15(F)h -3(unnelW)h -3(eb)h 14(w)h -1(ould)h 14(inden)h -1(t)h 16(with)h 14(the)h 16(text)h 177 2319(to)s 16(the)h 17(left)h 16(of)h 16(the)h 17(called)h 16(macro.)h 24(This)h 16(facilit)h -1(y)h 15(could)h 16(b)h 1(e)h 17(useful)h 16(for)h 16(comm)h -1(en)h -1(ting)h 14(out)h 17(large)h 16(b)h 1(o)h 1(dies)h 16(of)h 177 2369(text)s 15(in)h 14(languages)h 15(that)h 14(do)h 15(not)h 14(ha)h -1(v)h -1(e)h 14(m)h -1(ulti-l)h -1(ine)h 13(comm)h -1(en)h -1(ts)h 14(\(e.g.)h 20(Ada\).)h 20(A)h 15(discussion)h 15(of)h 14(the)h 15(pros)h 15(and)h 177 2418(cons)s 15(of)h 13(this)h 14(form)h 12(of)h 13(inden)h -1(tation)h 14(app)h 1(ears)h 14(earlier.)h 177 2708(P)s -1(erhaps)h 15(F)h -3(unnelW)h -3(eb's)h 13(w)h -1(eak)h -1(est)h 15(asp)h 1(ect)h 15(is)h 14(its)h 14(t)h -1(yp)h 1(esetting)h 15(facilit)h -1(y)h -3(.)h 692 2785(When)s 15(F)h -3(unnelW)h -3(eb)h 14(generates)h 17(a)h 15(table)h 15(of)h 15(con)h -1(ten)h -1(ts,)h 16(the)h 15(section)h 16(n)h -1(um)h -1(b)h 1(ers)h 177 2835(are)s 14(not)h 14(quite)h 14(aligned)h 13(with)h 14(the)h 14(start)h 15(of)h 13(the)h 14(con)h -1(trolling)h 13(heading)h 14(ab)h 1(o)h -1(v)h -1(e)h 13(them.)h 1042 2940(45)s 46 @eop 47 @bop0 cmti10.300 sf [<000F8400304C00403C0080180100180300180300180600100600100600000700000700 0003E00003FC0001FF00007F800007C00001C00001C00000C00000C02000C02000C06001 80600180600300600200F00400CC180083E000> 24 30 -3 28 23] 83 dc cmbx10.300 sf [<0003800000038000000380000003800000038000000380000003800000038000000380 000003800000038000000380000003800000038000FFFFFFFCFFFFFFFCFFFFFFFC000380 000003800000038000000380000003800000038000000380000003800000038000000380 0000038000000380000003800000038000> 32 31 -3 25 37] 43 dc 47 @bop1 cmsy10.300 sf 1116 1406(f)s 165(g)h cmbx10.432 sf 177 2610(4.10)s 70(Lister)h cmtt10.300 sf 405 1095(@^\(num\))s 1343 1176(@+)s 1094 1406(@)s 164(@)h 687 1456(@[)s 147(@])h 1685 1587(tt)s 22(font)h cmti10.300 sf 919 503(F)s -3(unnelWeb)h 19(macr)h -2(os)h 276 2048(gener)s -2(ate)h 877(Spider)h 177 2098(Spider)s 1047 2148(Spider)s cmbx10.300 sf 177 42(T)s -1(yp)h 1(esetting)h 20(strength)h -1(:)h 177 222(T)s -1(yp)h 1(eset)h 12(a)h 13(p)h 1(ortion)h -1(:)h 177 403(Generic)s 14(t)h -1(yp)h 1(esetter)h 13(option)h -1(:)h 177 683(Suppress)s -1(ion)h 15(of)h 18(includ)h -1(e)h 16(\014les:)h 177 914(Cross)s 14(reference)h 12(of)h 14(iden)h -1(t)h -1(i)h -1(\014ers)h -1(:)h 177 1045(Supp)s 1(ort)h 18(for)h 19(non-pri)h -1(n)h -2(tab)h -1(les)h -1(:)h 177 1176(Supp)s 1(ort)h 14(for)h 16(@+)h 17(sequences:)h 177 1306(T)s -1(yp)h 1(eset)h 11(text)h 12(in)h 11(macro)h 12(b)h 1(o)h 1(dies:)h 177 1587(Non-tt)s 14(t)h -1(yp)h 1(esettin)h -1(g:)h 1559 2048([Ramsey89])s 177 2735(Glue)s 17(factor:)h cmr10.300 sf 665 42(It)s 20(should)h 20(b)h 1(e)h 20(p)h 1(ossible)h 20(to)h 19(sp)h 1(ecify)h 20(the)h 20(lev)h -1(el)h 20(of)h 19(t)h -1(yp)h 1(esetting)h 20(strength)h 21(for)h 177 91(headings)s 16(so)h 16(that)h 17(short)h 16(do)h 1(cumen)h -1(ts)h 16(do)h 16(not)h 16(lo)h 1(ok)h 15(o)h -1(v)h -1(erdone)h 16(when)h 17(t)h -1(yp)h 1(eset.)h 26(A)h 16(new)h 17(pragma)h 14(w)h -1(ould)h 15(b)h 1(e)h 177 141(go)s 1(o)h 1(d)h 14(for)h 13(this.)h 576 222(Sometim)s -1(es)h 10(it)h 11(is)h 11(desirable)h 11(to)h 11(t)h -1(yp)h 1(eset)h 13(just)h 11(a)h 11(p)h 1(ortion)h 11(of)h 10(a)h 11(program.)h 15(A)h 12(comm)h -1(and)h 177 272(line)s 12(option)h 11(could)h 12(b)h 1(e)h 12(added)h 12(to)h 12(do)h 12(this.)h 17(The)h 13(option)h 11(could)h 11(accept)h 14(as)h 12(its)h 12(argumen)h -1(t,)h 10(a)h 12(string)h 12(con)h -1(taining)h 177 322(a)s 14(list)h 13(of)h 13(section)h 15(n)h -1(um)h -1(b)h 1(ers)h 14(or)h 13(heading)h 14(names.)h 746 403(In)s 14(addition)h 12(to)h 14(building)h 12(in)h 13(a)h 13(n)h -1(um)h -1(b)h 1(er)h 13(of)h 13(di\013eren)h -1(t)h 15(v)h -1(ersions)h 14(of)h 13(W)h -3(ea)h -1(v)h -1(e,)h 177 453(one)s 17(for)h 17(eac)h -1(h)h 17(p)h 1(opular)h 17(t)h -1(yp)h 1(esetter,)h 19(it)h 17(w)h -1(ould)h 16(b)h 1(e)h 17(p)h 1(ossible)h 17(to)h 17(add)h 17(a)h 16(sp)h 1(ecial)h 17(generic)h 18(format)h 15(where)h 18(the)h 177 503(t)s -1(yp)h 1(eset)h 19(output)h 17(is)h 17(expressed)h 19(in)h 17(terms)h 17(of)h 364(.)h 27(The)h 18(user)h 18(could)h 17(then)h 17(sp)h 1(ecify)h 18(macro)h 177 552(de\014nitions)s 13(for)h 13(a)h 12(non-supp)h 1(orted)h 14(t)h -1(yp)h 1(esette)h 1(r)h 15(and)h 13(run)h 13(the)h 13(output)h 14(through)h 13(F)h -3(unnelW)h -3(eb)h 12(T)h -3(angle)h 12(to)h 13(get)h 13(a)h 177 602(t)s -1(yp)h 1(eset)h 16(\014le)h 13(in)h 14(a)h 13(format)h 12(suitable)h 14(for)h 14(the)h 14(unsupp)h 1(orted)h 16(t)h -1(yp)h 1(esetter.)h 784 683(It)s 16(should)h 16(b)h 1(e)h 16(p)h 1(ossible)h 17(to)h 15(sp)h 1(ecify)h 17(in)h 15(the)h 17(input)h 15(\014le)h 16(that)h 16(particular)h 177 733(included)s 14(\014les)h 14(not)h 13(app)h 1(ear)h 14(in)h 13(the)h 14(t)h -1(yp)h 1(eset)h 15(output.)h 18(Curren)h -1(tly)h -3(,)h 13(the)h 14(fact)h 13(that)h 13(an)h 14(inclusion)h 12(has)h 14(o)h 1(ccurred)h 177 783(is)s 15(not)h 16(ev)h -1(en)h 16(represen)h -1(ted)h 18(in)h 15(the)h 16(t)h -1(yp)h 1(eset)h 16(output.)h 23(Suppression)h 16(of)h 15(inclusions)h 15(is)h 15(particularly)h 15(necessary)h 177 833(where)s 15(a)h 14(library)h 13(of)h 13(macros)h 13(has)h 14(b)h 1(een)h 15(included)h 14(at)h 14(the)h 15(top)h 13(of)h 14(eac)h -1(h)h 14(of)h 13(a)h 14(group)h 14(of)h 13(source)h 15(\014les.)h 799 914(WEB)s 13(pro)h -1(vides)h 12(a)h 12(list)h 12(of)h 12(iden)h -1(ti\014ers)h 13(and)h 12(a)h 12(list)h 12(of)h 12(all)h 11(the)h 13(de\014nitions)h 177 964(in)s 14(whic)h -1(h)h 13(they)h 15(are)h 14(used.)h 19(A)h 14(simila)h -1(r)h 12(feature)h 15(could)h 14(b)h 1(e)h 14(added)h 14(to)h 14(F)h -3(unnelW)h -3(eb.)h 783 1045(Curren)s -1(tly)h 18(F)h -3(unnelW)h -3(eb)h 17(do)h 1(es)h 18(not)h 17(pro)h -1(vide)h 18(supp)h 1(ort)h 18(for)h 17(t)h -1(yp)h 1(esetting)h 177 1095(the)s 15(sp)h 1(ecial)h 14(\\)h 154(")h 12(sequences.)h 20(This)h 14(should)h 14(b)h 1(e)h 14(added.)h 765 1176(Curren)s -1(tly)h 15(W)h -3(ea)h -1(v)h -1(e)h 14(do)h 1(es)h 15(not)h 14(see)h 16(\\)h 44(")h 14(sequences)h 17(as)h 14(suc)h -1(h.)h 21(Instead)h 15(it)h 177 1225(p)s 1(erceiv)h -1(es)h 16(them)h 13(as)h 14(ordinary)h 13(EOLs.)h 19(Ho)h -1(w)h -1(ev)h -1(er,)h 14(there)h 15(are)h 15(argumen)h -1(ts)h 13(for)h 13(t)h -1(yp)h 1(esetting)h 15(them)h 13(sp)h 1(ecially)h -3(.)h 807 1306(One)s 12(of)h 10(the)h 11(m)h -1(uc)h -1(h-lo)h -1(v)h -1(ed)h 9(features)h 11(of)h 10(WEB)h 11(is)h 11(the)h 11(w)h -1(a)h -1(y)h 10(that)h 11(it)h 10(allo)h -1(ws)h 177 1356(the)s 13(user)h 14(to)h 12(switc)h -1(h)h 13(recursiv)h -1(ely)h 13(b)h 1(et)h -1(w)h -1(een)h 14(do)h 1(cumen)h -1(t)h 12(and)h 12(program)h 11(formats.)h 16(F)h -3(unnelW)h -3(eb)h 12(do)h 1(es)h 13(not)h 12(allo)h -1(w)h 177 1406(this,)s 18(but)h 18(should.)h 29(In)h 17(F)h -3(unnelW)h -3(eb,)h 18(the)h 18(delimiters)h 17(\\)h 43(")h 16(and)h 18(\\)h 43(")h 16(are)h 18(already)h 17(used)h 19(consisten)h -1(tly)h 18(to)h 177 1456(delimit)s 18(macro)h 18(text.)h 37(The)h 20(\\)h 44(")h 19(and)h 19(\\)h 44(")h 19(sequences)h 22(ha)h -1(v)h -1(e)h 20(b)h 1(een)h 21(reserv)h -1(ed)h 22(for)h 19(the)h 21(delimi)h -1(tation)h 17(of)h 177 1506(do)s 1(cumen)h -1(tation)h 13(text.)h 599 1587(The)s 13(curren)h -1(t)h 15(v)h -1(ersion)h 14(of)h 13(F)h -3(unnelW)h -3(eb)h 13(sets)h 15(all)h 12(its)h 13(macro)h 12(text)h 14(in)h 167(.)h 17(This)h 177 1637(is)s 14(b)h 1(oth)h 14(a)h 13(blessing)h 14(and)h 14(a)h 14(curse.)h 19(It)h 14(is)h 14(a)h 13(blessing)h 14(b)h 1(ecause)h 16(it)h 13(connects)h 16(the)h 14(reader)h 15(directly)h 14(to)h 14(the)h 14(co)h 1(de,)h 177 1686(with)s 14(no)h 14(complicated)h 13(in)h -1(termediary)h -3(.)h 17(It)h 14(is)h 14(a)h 14(curse)h 16(b)h 1(ecause)h 16(it)h 14(lo)h 1(oks)h 13(ugly)h 14(compared)h 13(to)h 14(the)h 15(b)h 1(eautifully)h 177 1736(t)s -1(yp)h 1(eset)h 16(programs)h 12(pro)h 1(duced)h 15(b)h -1(y)h 14(other)h 14(literate)h 15(programm)h -1(i)h -1(ng)h 12(to)h 1(ols.)h 177 1817(The)s 20(di\016cult)h -1(y)h 18(with)h 18(adding)h 18(suc)h -1(h)h 20(b)h 1(eautiful)h 18(t)h -1(yp)h 1(esetting)h 20(is)h 19(that)h 19(it)h 19(is)h 19(necessarily)h 20(language-sp)h 1(eci\014c.)h 177 1867(Keyw)s -1(ords)h 15(and)h 14(syn)h -1(tax)h 14(di\013er)h 14(from)h 12(language)h 14(to)h 13(language)h 13(and)h 14(it)h 14(w)h -1(ould)h 13(not)h 14(b)h 1(e)h 15(easy)h 14(to)h 14(come)h 13(up)h 14(with)h 177 1917(a)s 14(set)h 15(of)h 13(language)h 13(indep)h 1(enden)h -1(t)h 15(rules.)h 177 1998(One)s 19(approac)h -1(h)h 19(is)h 18(to)h 18(write)h 18(a)h 19(set)h 19(of)h 17(W)h -3(ea)h -1(v)h -1(e)h 18(bac)h -1(k-ends,)h 20(one)h 18(for)h 18(eac)h -1(h)h 19(language.)h 31(Another)h 19(approac)h -1(h)h 177 2048(is)s 17(to)h 183(bac)h -1(k)h 17(ends.)h 28(This)h 17(is)h 17(the)h 17(approac)h -1(h)h 17(tak)h -1(en)h 17(in)h 16(the)h 150(system)h 239(.)h 26(In)h 17(the)h 308 2098(system,)s 16(the)h 17(programm)h -1(er)h 15(writes)h 16(pro)h 1(duction)h 17(rules)h 16(for)h 16(con)h -1(v)h -1(erting)h 16(lexical)h 15(comp)h 1(onen)h -1(ts)h 16(of)h 15(the)h 177 2148(program)s 14(text)h 15(in)h -1(to)h 15(t)h -1(yp)h 1(esetter)h 17(instructions.)h 22(The)h 146(program)h 13(reads)h 16(these)h 17(rules)h 15(and)h 15(generates)h 17(a)h 177 2197(new)s 14(v)h -1(ersion)h 15(of)h 13(WEB)h 14(suited)h 14(for)h 14(the)h 14(target)h 15(language.)h 177 2278(F)s -3(or)h 18(F)h -3(unnelW)h -3(eb)h 18(a)h 18(sligh)h -1(tly)h 17(di\013eren)h -1(t)h 20(system)h 18(is)h 18(prop)h 1(osed)h 20(in)h 18(whic)h -1(h)h 18(Spider-lik)h -1(e)h 18(rules)h 19(app)h 1(ear)h 19(in)h 18(the)h 177 2328(input)s 16(\014le)h 17(and)h 16(are)h 17(used)h 18(directly)h 16(b)h -1(y)h 17(W)h -3(ea)h -1(v)h -1(e)h 16(to)h 16(p)h 1(erform)h 16(the)h 17(t)h -1(yp)h 1(esetting.)h 27(An)h 16(in)h -1(termediate)h 16(abstract)h 177 2378(t)s -1(yp)h 1(esetting)h 13(language)h 11(could)h 12(b)h 1(e)h 13(used)h 13(so)h 12(that)h 12(the)h 13(pro)h 1(ductions)h 12(can)h 13(b)h 1(e)h 12(made)h 11(language)h 11(sp)h 1(eci\014c,)h 14(but)h 12(not)h 177 2428(t)s -1(yp)h 1(esetter)h 16(sp)h 1(eci\014c.)h 453 2735(A)s 16(glue)h 16(factor)h 16(could)h 16(b)h 1(e)h 17(added)h 17(that)h 16(determines)h 17(ho)h -1(w)h 16(man)h -1(y)h 14(lines)h 16(can)h 17(b)h 1(e)h 17(in)h 15(b)h 1(et)h -1(w)h -1(een)h 177 2785(t)s -1(w)h -1(o)h 14(diagnostics)h 14(in)h 13(the)h 15(listing)h 13(b)h 1(efore)h 15(the)h 14(t)h -1(w)h -1(o)h 14(groups)h 14(of)h 14(lines)h 14(are)h 14(joined)h 14(together)h 15(in)h 13(the)h 15(listing)h 13(with)h 177 2835(no)s 14(in)h -1(terv)h -1(ening)h 14(ellipsis.)h 1042 2940(46)s 47 @eop 48 @bop0 48 @bop1 cmsy10.300 sf 239 1452(\017)s 239 1535(\017)s 239 1618(\017)s 239 1701(\017)s cmbx10.432 sf 177 42(4.11)s 70(Diagnostics)h 177 594(4.12)s 70(Sp)h 2(eed)h 177 1170(4.13)s 70(Correctness)h 177 2104(4.14)s 70(T)h -6(est)h 22(Suite)h cmbx10.300 sf 177 157(Advisory)s 16(informati)h -1(on)h -1(:)h 177 382(Ab)s 1(ort)h 15(after)h 14(n)h 15(errors:)h 177 709(Measuremen)s -1(t)h 11(of)h 13(sp)h 1(eed:)h 177 834(Find)s 19(the)h 20(hot)h 19(sp)h 1(ots:)h 177 958(Change)s 17(some)h 16(declaration)h -1(s:)h 177 1286(Bounds)s 17(analysis:)h 177 1892(Stac)s -1(k)h 18(detection)h -1(:)h cmtt10.300 sf 177 2337(Lister)s 177 2386(------)s 243 2436(LR01:)s 20(Test)h 21(with)h 21(a)h 22(full)h 21(listing)h 20(with)h 21(no)h 21(diagnostics.)h 243 2486(LR02:)s 20(Test)h 21(with)h 21(a)h 22(full)h 21(listing)h 20(with)h 21(diagnostics.)h 243 2536(LR03:)s 20(Test)h 21(with)h 21(an)h 22(abbreviated)h 19(listing)h 20(with)h 21(no)h 22(diagnostics.)h 243 2586(LR04:)s 20(Test)h 21(with)h 21(an)h 22(abbreviated)h 19(listing)h 20(with)h 21(diagnostics.)h 243 2635(LR05:)s 20(Test)h 21(error)h 21(context)h 20(system)h 21(with)h 21(nearby)h 20(diagnostics.)h 177 2735(Boundary)s 20(Cases)h 177 2785(-------------)s -1(-)h 177 2835(Static)s 21(analysis)h 20(might)h 21(preclude)h 20(the)h 21(need)h 21(for)h 21(most)h 21(of)h 21(these)h 21(tests.)h cmr10.300 sf 661 157(Some)s 13(of)h 15(F)h -3(unnelW)h -3(eb's)h 15(diagnostics)h 14(pro)h -1(vide)h 15(a)h 15(detailed)h 15(explanatory)h 15(para-)h 177 207(graph.)s 17(While)h 11(this)h 12(informa)h -1(tion)h 9(migh)h -1(t)h 10(b)h 1(e)h 12(useful)h 12(the)h 12(\014rst)h 12(time,)h 11(it)h 11(has)h 12(the)h 12(capacit)h -1(y)h 11(to)h 12(clog)h 11(up)h 12(a)h 11(listing)h 177 257(\014le)s 15(if)h 14(the)h 15(user)h 16(has)h 15(made)h 14(the)h 15(same)h 14(error)h 16(man)h -1(y)h 13(times.)h 20(T)h -3(o)h 14(solv)h -1(e)h 14(this)h 15(problem,)h 13(F)h -3(unnelW)h -3(eb)h 15(could)h 14(b)h 1(e)h 177 307(mo)s 1(di\014ed)h 13(so)h 14(that)h 14(suc)h -1(h)h 14(explanations)h 13(are)h 15(only)h 13(displa)h -1(y)h -1(ed)h 13(the)h 15(\014rst)h 14(time)h 13(the)h 14(error)h 15(o)h 1(ccurs.)h 629 382(A)s 14(facilit)h -1(y)h 12(could)h 13(b)h 1(e)h 14(added)h 14(to)h 13(prev)h -1(en)h -1(t)h 15(F)h -3(unnelW)h -3(eb's)h 13(scanning,)h 13(parsing,)h 13(and)h 177 431(analysing)s 13(phases)h 15(from)h 12(con)h -1(tin)h -1(uing)h 13(if)h 13(a)h 13(certain)h 15(n)h -1(um)h -1(b)h 1(er)h 13(of)h 13(errors)h 15(ha)h -1(v)h -1(e)h 14(already)h 14(b)h 1(een)h 15(issued.)h 673 709(Although)s 11(F)h -3(unnelW)h -3(eb)h 11(can)h 12(generate)h 13(a)h 11(breakdo)h -1(wn)h 12(of)h 11(where)h 13(it)h 11(is)h 11(sp)h 1(ending)h 177 759(its)s 14(time,)h 12(it)h 14(do)h 1(es)h 14(not)h 14(giv)h -1(e)h 13(a)h 14(\014nal)h 13(rating)h 14(in)h 13(lines)h 14(p)h 1(er)h 15(min)h -1(ute.)h 16(This)h 14(should)h 14(b)h 1(e)h 14(added.)h 619 834(Although)s 17(F)h -3(unnelW)h -3(eb)h 18(has)h 18(b)h 1(een)h 19(designed)h 19(to)h 17(allo)h -1(w)h 17(high)h 17(sp)h 1(eed,)h 20(not)h 18(m)h -1(uc)h -1(h)h 177 884(e\013ort)s 15(has)h 14(so)h 14(far)h 13(b)h 1(een)h 15(made)h 13(to)h 14(mak)h -1(e)h 12(it)h 14(fast.)h 18(This)h 13(should)h 14(b)h 1(e)h 15(done.)h 756 958(F)s -3(unnelW)h -3(eb)h 14(is)h 14(full)h 14(of)h 14(v)h -2(ariable)h 14(declarations)h 15(where)h 16(the)h 15(v)h -2(ariables)h 14(are)h 177 1008(wider)s 14(than)h 14(they)h 15(need)h 14(b)h 1(e.)h 19(Replacing)h 13(these)h 15(migh)h -1(t)h 12(sp)h 1(eed)h 16(it)h 13(up.)h 552 1286(Not)s 16(m)h -1(uc)h -1(h)h 15(e\013ort)h 18(has)h 16(gone)h 17(in)h -1(to)h 16(the)h 17(design)h 17(of)h 16(F)h -3(unnelW)h -3(eb's)h 15(input)h 17(b)h 1(oundaries.)h 177 1336(An)s 12(analysis)h 11(should)h 11(b)h 1(e)h 12(made)h 11(of)h 11(F)h -3(unnelW)h -3(eb's)h 11(b)h 1(eha)h -1(viour)h 11(when)h 12(the)h 13(follo)h -1(wi)h -1(ng)h 10(quan)h -1(tities)h 11(are)h 12(stretc)h -1(hed:)h 281 1452(Input)s 14(line)h 14(length.)h 281 1535(Input)s 14(\014le)h 14(size.)h 281 1618(Num)s -1(b)h 1(er)h 13(of)h 14(macros.)h 281 1701(Length)s 14(of)h 13(macro.)h 177 1818(In)s 14(particular,)h 13(F)h -3(unnelW)h -3(eb's)h 13(b)h 1(eha)h -1(viour)h 14(at)h 14(32K)h 14(and)h 13(64K)h 14(b)h 1(oundaries)h 14(should)h 14(b)h 1(e)h 14(observ)h -1(ed.)h 537 1892(Macin)s -1(tosh)h 16(THINK-C)h 16(pro)h -1(vides)h 16(just)h 17(6K)h 16(of)h 15(memo)h -1(ry)h 14(for)h 16(the)h 17(stac)h -1(k.)h 24(It)h 16(migh)h -1(t)h 14(b)h 1(e)h 177 1942(w)s -1(orth)h 14(adding)h 13(c)h -1(hec)h -1(ks)h 15(to)h 14(mak)h -1(e)h 12(sure)h 15(that)h 14(the)h 15(stac)h -1(k)h 14(is)h 14(not)h 14(b)h 1(eing)h 14(blo)h -1(wn.)h 177 2220(The)s 14(follo)h -1(wing)h 12(tests)h 15(should)h 14(b)h 1(e)h 14(added)h 14(to)h 14(the)h 15(test)h 15(suite:)h 1042 2940(47)s 48 @eop 49 @bop0 cmbx10.432 sf [<0001FF0000001FFFC000007F80F00000FE00F80003FC01FC0003F803FC0007F003FC00 07F003FC0007F003FC0007F001F80007F000F00007F000000007F000000007F000000007 F0000000FFFFFFFC00FFFFFFFC00FFFFFFFC0007F001FC0007F001FC0007F001FC0007F0 01FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001 FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC 0007F001FC0007F001FC0007F001FC007FFF1FFFC07FFF1FFFC07FFF1FFFC0> 40 42 -1 41 38] 12 dc 49 @bop1 cmbx10.300 sf 177 967(Icon)s 14(for)h 14(the)h 13(Macin)h -1(tosh:)h cmbx10.432 sf 177 851(4.15)s 70(Mac)h -2(hine-Sp)h 2(eci\014c)h 20(Changes)h 177 1179(4.16)s 70(Summ)h -3(ary)h cmr10.300 sf 682 967(Curren)s -1(tly)h 13(no)h 13(icon)h 12(is)h 12(supplied)h 13(for)h 12(the)h 14(Macin)h -1(tosh)h 12(v)h -1(ersion)h 13(of)h 12(F)h -3(unnelW)h -3(eb.)h 177 1017(An)s 14(icon)h 14(depicting)h 14(a)h 13(spider)h 15(or)h 14(a)h 13(funnelled)h 14(w)h -1(eb)h 14(of)h 14(some)h 13(kind)h 13(w)h -1(ould)h 13(seem)h 14(appropriate.)h 177 1295(This)s 15(c)h -1(hapter)h 17(has)h 15(describ)h 1(es)h 17(some)h 15(of)h 14(the)h 16(problems)h 15(with)h 15(F)h -3(unnelW)h -3(eb)h 14(and)h 16(some)h 14(of)h 15(the)h 15(opp)h 1(ortunities)h 177 1345(that)s 13(exist)h 14(for)h 13(impro)h -1(vi)h -1(ng)h 12(it.)h 17(The)h 14(direction)h 13(and)h 13(sp)h 1(eed)h 15(in)h 13(whic)h -1(h)h 13(F)h -3(unnelW)h -3(eb)h 13(will)h 11(dev)h -1(elop)h 14(will)h 12(dep)h 1(end)h 177 1395(largely)s 15(on)h 16(user)h 17(feedbac)h -1(k.)h 25(If)h 15(y)h -1(ou)h 16(ha)h -1(v)h -1(e)h 15(an)h -1(y)h 16(strong)h 16(feelings)h 16(on)h 16(where)h 17(F)h -3(unnelW)h -3(eb)h 15(should)h 16(go,)h 15(please)h 177 1444(email)s 12(them)h 13(to)h 14(Ross)h 14(Willi)h -1(am)h -1(s)h 12(\()h 547(\).)h 1042 2940(48)s cmtt10.300 sf 243 42(BC01:)s 20(Test)h 21(what)h 21(happens)h 21(when)h 21(memory)h 20(runs)h 21(out.)h 243 91(BC02:)s 20(Test)h 21(on)h 22(a)h 21(file)h 21(with)h 21(a)h 22(single)h 20(line)h 21(of)h 22(a)h 21(megabyte.)h 243 141(BC03:)s 20(Test)h 21(on)h 22(a)h 21(file)h 21(of)h 22(a)h 21(megabyte)h 20(of)h 22(EOLs.)h 243 191(BC04:)s 20(Generate)h 20(an)h 22(output)h 20(file)h 21(with)h 21(an)h 22(extremely)h 20(long)h 21(line.)h 243 241(BC05:)s 20(Generate)h 20(an)h 22(output)h 20(file)h 21(with)h 21(one)h 21(million)h 21(lines.)h 243 291(BC06:)s 20(Test)h 21(on)h 22(a)h 21(file)h 21(with)h 21(very)h 21(many)h 21(macros.)h 177 390(General)s 177 440(-------)s 243 490(GN01:)s 20(A)h 22(large)h 21(legal)h 20(input)h 21(file)h 21(exercising)h 20(as)h 21(many)h 21(features)h 20(as)h 22(possible.)h 373 540(1.)s 22(Test)h 21(listing)h 20(file.)h 373 589(2.)s 22(Test)h 21(output)h 20(files.)h 373 639(3.)s 22(Test)h 21(typeset)h 20(file.)h 243 689(GN...)s 20(A)h 22(selection)h 20(of)h 21(ten)h 21(real-life)h 20(FunnelWeb)h 20(files.)h 733 1444(ross@spam.ade)s -1(laide)h -1(.edu.)h -1(au)h 49 @eop 50 @bop0 cmbx10.622 sf [<00000001F80000000000000001F80000000000000003FC0000000000000003FC000000 0000000007FE0000000000000007FE0000000000000007FE000000000000000FFF000000 000000000FFF000000000000001FFF800000000000001FFF800000000000001FFF800000 000000003FFFC00000000000003FFFC00000000000007FFFE00000000000007DFFE00000 000000007DFFE0000000000000FDFFF0000000000000F8FFF0000000000001F8FFF80000 00000001F07FF8000000000001F07FF8000000000003F07FFC000000000003E03FFC0000 00000007E03FFE000000000007C01FFE00000000000FC01FFF00000000000F801FFF0000 0000000F800FFF00000000001F800FFF80000000001F0007FF80000000003F0007FFC000 0000003E0003FFC0000000003E0003FFC0000000007E0003FFE0000000007C0001FFE000 000000FC0001FFF000000000F80000FFF000000000F80000FFF000000001FFFFFFFFF800 000001FFFFFFFFF800000003FFFFFFFFFC00000003FFFFFFFFFC00000003E000003FFC00 000007E000003FFE00000007C000001FFE0000000FC000001FFF0000000F8000000FFF00 00001F8000000FFF8000001F0000000FFF8000001F00000007FF8000003F00000007FFC0 00003E00000003FFC000007E00000003FFE00000FF00000001FFE000FFFFFC0001FFFFFF F0FFFFFC0001FFFFFFF0FFFFFC0001FFFFFFF0FFFFFC0001FFFFFFF0> 72 59 -3 58 75] 65 dc [<00FE007FC000FFFE01FFF800FFFE07FFFE00FFFE1F03FF00FFFE3C01FF0007FE7801FF 8003FE7000FF8003FEE000FFC003FFC000FFC003FFC000FFC003FF8000FFC003FF8000FF C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC0FFFFFC3FFFFFFFFFFC3FFF FFFFFFFC3FFFFFFFFFFC3FFFFF> 48 38 -4 37 55] 110 dc [<000000003FC00000003FFFC00000003FFFC00000003FFFC00000003FFFC000000001FF C000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FF C000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FF C000000000FFC000000000FFC000000000FFC000000000FFC00000FFC0FFC0000FFFF8FF C0003FFFFEFFC000FFE03FFFC001FF000FFFC007FE0003FFC00FFC0001FFC00FF80000FF C01FF80000FFC03FF00000FFC03FF00000FFC07FF00000FFC07FE00000FFC07FE00000FF C0FFE00000FFC0FFE00000FFC0FFE00000FFC0FFE00000FFC0FFE00000FFC0FFE00000FF C0FFE00000FFC0FFE00000FFC0FFE00000FFC0FFE00000FFC07FE00000FFC07FE00000FF C07FF00000FFC03FF00000FFC03FF00000FFC01FF00000FFC01FF80001FFC00FFC0003FF C007FC0007FFC003FF001FFFE000FFC07EFFFF003FFFFCFFFF000FFFF0FFFF0001FF80FF FF> 48 60 -3 59 55] 100 dc [<00F00003FC0007FE000FFE000FFF001FFF001FFF001FFF000FFF000FFE0007FE0003FC 0000F00000000000000000000000000000000000000000000000000000000000000000FF 00FFFF00FFFF00FFFF00FFFF0007FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF 0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF 0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF00FFFFF8FFFFF8FFFF F8FFFFF8> 24 61 -3 60 27] 105 dc [ 48 38 -2 37 52] 120 dc cmbx10.746 sf [<000000003FFE00000E000000000FFFFFC0001E000000007FFFFFF8003E00000003FFFF FFFE00FE0000000FFFFFFFFF81FE0000003FFFF800FFC3FE000000FFFF80000FF7FE0000 01FFFC000003FFFE000007FFF0000001FFFE00000FFFC00000007FFE00001FFF80000000 3FFE00003FFF000000001FFE00007FFE000000000FFE0000FFFC0000000007FE0001FFF8 0000000007FE0003FFF00000000003FE0003FFF00000000001FE0007FFE00000000001FE 0007FFE00000000000FE000FFFC00000000000FE000FFFC000000000007E001FFFC00000 0000007E001FFF8000000000007E003FFF8000000000007E003FFF8000000000003E003F FF8000000000003E007FFF8000000000003E007FFF0000000000003E007FFF0000000000 0000007FFF0000000000000000FFFF0000000000000000FFFF0000000000000000FFFF00 00000000000000FFFF0000000000000000FFFF0000000000000000FFFF00000000000000 00FFFF0000000000000000FFFF0000000000000000FFFF0000000000000000FFFF000000 0000000000FFFF0000000000000000FFFF0000000000000000FFFF0000007FFFFFFFFE7F FF0000007FFFFFFFFE7FFF0000007FFFFFFFFE7FFF8000007FFFFFFFFE7FFF8000007FFF FFFFFE3FFF8000000000FFFE003FFF8000000000FFFE003FFF8000000000FFFE001FFF80 00000000FFFE001FFFC000000000FFFE000FFFC000000000FFFE000FFFC000000000FFFE 0007FFE000000000FFFE0007FFE000000000FFFE0003FFF000000000FFFE0003FFF80000 0000FFFE0001FFF800000000FFFE0000FFFC00000000FFFE00007FFE00000000FFFE0000 3FFF00000000FFFE00001FFF80000000FFFE00000FFFE0000001FFFE000007FFF0000003 FFFE000001FFFC000007FFFE000000FFFF80001FFFFE0000003FFFFC00FFC7FE0000000F FFFFFFFF83FE00000003FFFFFFFE00FE000000007FFFFFF8003E000000000FFFFFE0000E 00000000003FFE00000000> 80 73 -7 71 93] 71 dc [ 88 72 -4 70 91] 85 dc [ 64 71 -4 70 71] 76 dc [ 88 72 -3 70 90] 86 dc [<0000FFE00000000FFFFE0000003FFFFFC00000FFFFFFF00003FFFFFFFC0007FC01FFFE 000FE0007FFF001FC0001FFF803F80000FFFC03FE00007FFE07FF80007FFE07FFC0003FF F0FFFC0003FFF0FFFE0001FFF8FFFE0001FFF8FFFE0001FFF8FFFE0000FFFCFFFE0000FF FC7FFC0000FFFC7FFC0000FFFC3FF80000FFFC1FF00000FFFC0FE00000FFFC00000001FF FC00000001FFF800000001FFF800000001FFF000000003FFF000000003FFE000000003FF E000000007FFC000000007FF800000000FFF800000001FFF000000001FFE000000003FFC 000000007FF8000000007FE000000000FFC000000001FF8000000003FF0000000007FC00 0000000FF8000000001FF0000000003FC0000000007F80007C0000FF00007C0000FE0000 7C0001FC00007C0003F00000F80007E00000F8000FC00000F8001F800000F8003F000001 F8007C000003F800FFFFFFFFF801FFFFFFFFF003FFFFFFFFF007FFFFFFFFF00FFFFFFFFF F01FFFFFFFFFF03FFFFFFFFFF07FFFFFFFFFF07FFFFFFFFFF0FFFFFFFFFFE0FFFFFFFFFF E0FFFFFFFFFFE0FFFFFFFFFFE0> 48 68 -6 67 59] 50 dc cmtt10.300 sf [ 24 25 -1 24 22] 89 dc 50 @bop1 cmbx10.622 sf 177 380(App)s 3(endix)h 34(A)h cmbx10.746 sf 177 615(GNU)s 40(General)h 42(Public)h 41(License)h 177 739(V)s -10(ersion)h 41(2)h cmti10.300 sf 1460 1032(F)s -3(unnelWeb)h 19(User's)h 18(Manual)h 260 1082(F)s -3(unnelWeb)h 19(Hacker's)h 17(Manual)h cmr10.300 sf 177 983(This)s 16(app)h 1(endix)h 17(con)h -1(tains)h 16(a)h 16(v)h -1(erbatim)h 14(cop)h -1(y)h 17(of)h 15(V)h -3(ersion)h 17(2)h 16(of)h 15(the)h 17(GNU)h 16(General)h 16(Public)h 16(License)h 18(under)h 177 1032(whic)s -1(h)h 18(the)h 18(F)h -3(unnelW)h -3(eb)h 18(computer)h 17(program)h 16(is)h 18(released.)h 31(Note)h 18(that)h 18(the)h 177 1082(and)s 562(are)h 17(released)h 17(under)h 18(a)h 16(m)h -1(uc)h -1(h)h 15(simpler)h 15(license)h 17(that)h 17(do)h 1(es)h 17(not)h 16(allo)h -1(w)h 177 1132(mo)s 1(di\014cations.)h 1042 2940(49)s cmtt10.300 sf 264 1340(GNU)s 22(GENERAL)h 20(PUBLIC)h 20(LICENSE)h 330 1390(Version)s 20(2,)h 21(June)h 21(1991)h 199 1490(Copyright)s 20(\(C\))h 21(1989,)h 21(1991)h 21(Free)h 21(Software)h 20(Foundation,)h 19(Inc.)h 744 1540(675)s 21(Mass)h 21(Ave,)h 21(Cambridge,)h 20(MA)h 21(02139,)h 21(USA)h 199 1589(Everyone)s 20(is)h 21(permitted)h 20(to)h 22(copy)h 21(and)h 21(distribute)h 20(verbatim)h 20(copies)h 199 1639(of)s 21(this)h 21(license)h 21(document,)h 20(but)h 21(changing)h 20(it)h 21(is)h 22(not)h 21(allowed.)h 264 1739(Preamble)s 221 1838(The)s 21(licenses)h 20(for)h 21(most)h 21(software)h 20(are)h 22(designed)h 20(to)h 21(take)h 21(away)h 21(your)h 177 1888(freedom)s 21(to)h 21(share)h 21(and)h 21(change)h 20(it.)h 43(By)h 22(contrast,)h 20(the)h 21(GNU)h 21(General)h 20(Public)h 177 1938(License)s 21(is)h 21(intended)h 20(to)h 21(guarantee)h 20(your)h 21(freedom)h 21(to)h 21(share)h 21(and)h 21(change)h 21(free)h 177 1988(software--to)s 19(make)h 21(sure)h 21(the)h 22(software)h 20(is)h 21(free)h 21(for)h 21(all)h 21(its)h 22(users.)h 42(This)h 177 2038(General)s 21(Public)h 20(License)h 20(applies)h 21(to)h 21(most)h 21(of)h 21(the)h 22(Free)h 21(Software)h 177 2087(Foundation's)s 19(software)h 21(and)h 21(to)h 21(any)h 21(other)h 21(program)h 20(whose)h 21(authors)h 21(commit)h 20(to)h 177 2137(using)s 21(it.)h 43(\(Some)h 21(other)h 20(Free)h 21(Software)h 21(Foundation)h 19(software)h 20(is)h 22(covered)h 20(by)h 177 2187(the)s 21(GNU)h 22(Library)h 20(General)h 20(Public)h 21(License)h 20(instead.\))h 42(You)h 21(can)h 21(apply)h 21(it)h 21(to)h 177 2237(your)s 21(programs,)h 20(too.)h 221 2337(When)s 21(we)h 21(speak)h 21(of)h 21(free)h 21(software,)h 20(we)h 22(are)h 21(referring)h 20(to)h 21(freedom,)h 20(not)h 177 2386(price.)s 43(Our)h 21(General)h 20(Public)h 21(Licenses)h 20(are)h 21(designed)h 20(to)h 21(make)h 21(sure)h 21(that)h 21(you)h 177 2436(have)s 21(the)h 21(freedom)h 21(to)h 21(distribute)h 20(copies)h 20(of)h 22(free)h 21(software)h 20(\(and)h 21(charge)h 20(for)h 177 2486(this)s 21(service)h 20(if)h 22(you)h 21(wish\),)h 21(that)h 21(you)h 21(receive)h 20(source)h 21(code)h 21(or)h 21(can)h 21(get)h 21(it)h 177 2536(if)s 22(you)h 21(want)h 21(it,)h 21(that)h 21(you)h 21(can)h 21(change)h 21(the)h 21(software)h 20(or)h 21(use)h 22(pieces)h 20(of)h 22(it)h 177 2586(in)s 22(new)h 21(free)h 21(programs;)h 20(and)h 21(that)h 21(you)h 21(know)h 21(you)h 21(can)h 21(do)h 22(these)h 20(things.)h 221 2685(To)s 21(protect)h 20(your)h 21(rights,)h 21(we)h 21(need)h 21(to)h 22(make)h 20(restrictions)h 20(that)h 21(forbid)h 177 2735(anyone)s 21(to)h 21(deny)h 21(you)h 21(these)h 21(rights)h 21(or)h 21(to)h 21(ask)h 21(you)h 22(to)h 21(surrender)h 20(the)h 21(rights.)h 177 2785(These)s 21(restrictions)h 19(translate)h 20(to)h 22(certain)h 20(responsibili)h -1(ties)h 19(for)h 22(you)h 21(if)h 21(you)h 177 2835(distribute)s 20(copies)h 20(of)h 22(the)h 21(software,)h 20(or)h 21(if)h 22(you)h 21(modify)h 20(it.)h 1772 2 177 1188 r 50 @eop 51 @bop0 51 @bop1 cmr10.300 sf 1042 2940(50)s cmtt10.300 sf 221 91(For)s 21(example,)h 20(if)h 21(you)h 22(distribute)h 19(copies)h 21(of)h 21(such)h 21(a)h 22(program,)h 20(whether)h 177 141(gratis)s 21(or)h 21(for)h 21(a)h 22(fee,)h 21(you)h 21(must)h 21(give)h 21(the)h 21(recipients)h 20(all)h 21(the)h 21(rights)h 21(that)h 177 191(you)s 21(have.)h 43(You)h 21(must)h 21(make)h 21(sure)h 21(that)h 21(they,)h 21(too,)h 21(receive)h 20(or)h 21(can)h 22(get)h 21(the)h 177 241(source)s 21(code.)h 42(And)h 21(you)h 22(must)h 21(show)h 21(them)h 21(these)h 20(terms)h 21(so)h 21(they)h 21(know)h 21(their)h 177 291(rights.)s 221 390(We)s 21(protect)h 20(your)h 21(rights)h 21(with)h 21(two)h 21(steps:)h 21(\(1\))h 21(copyright)h 20(the)h 21(software,)h 20(and)h 177 440(\(2\))s 21(offer)h 21(you)h 21(this)h 21(license)h 21(which)h 20(gives)h 21(you)h 21(legal)h 21(permission)h 20(to)h 21(copy,)h 177 490(distribute)s 20(and/or)h 20(modify)h 21(the)h 21(software.)h 221 589(Also,)s 21(for)h 21(each)h 21(author's)h 20(protection)h 20(and)h 21(ours,)h 20(we)h 22(want)h 21(to)h 21(make)h 21(certain)h 177 639(that)s 21(everyone)h 20(understands)h 20(that)h 21(there)h 21(is)h 21(no)h 21(warranty)h 20(for)h 22(this)h 21(free)h 177 689(software.)s 42(If)h 21(the)h 21(software)h 21(is)h 21(modified)h 20(by)h 21(someone)h 21(else)h 21(and)h 21(passed)h 21(on,)h 21(we)h 177 739(want)s 21(its)h 21(recipients)h 20(to)h 21(know)h 21(that)h 21(what)h 21(they)h 21(have)h 21(is)h 22(not)h 21(the)h 21(original,)h 20(so)h 177 789(that)s 21(any)h 21(problems)h 20(introduced)h 20(by)h 22(others)h 20(will)h 21(not)h 21(reflect)h 21(on)h 21(the)h 21(original)h 177 839(authors')s 20(reputations.)h 221 938(Finally,)s 20(any)h 21(free)h 21(program)h 20(is)h 22(threatened)h 19(constantly)h 20(by)h 22(software)h 177 988(patents.)s 42(We)h 21(wish)h 21(to)h 22(avoid)h 21(the)h 21(danger)h 20(that)h 21(redistributors)h 19(of)h 22(a)h 21(free)h 177 1038(program)s 21(will)h 20(individually)h 20(obtain)h 20(patent)h 21(licenses,)h 20(in)h 21(effect)h 21(making)h 20(the)h 177 1088(program)s 21(proprietar)h -1(y.)h 42(To)h 21(prevent)h 20(this,)h 21(we)h 21(have)h 21(made)h 21(it)h 22(clear)h 21(that)h 21(any)h 177 1137(patent)s 21(must)h 21(be)h 21(licensed)h 20(for)h 21(everyone's)h 20(free)h 21(use)h 21(or)h 22(not)h 21(licensed)h 20(at)h 21(all.)h 221 1237(The)s 21(precise)h 20(terms)h 21(and)h 21(conditions)h 20(for)h 21(copying,)h 20(distribution)h 20(and)h 177 1287(modification)s 19(follow.)h 264 1386(GNU)s 22(GENERAL)h 20(PUBLIC)h 20(LICENSE)h 243 1436(TERMS)s 20(AND)h 21(CONDITIONS)h 20(FOR)h 21(COPYING,)h 21(DISTRIBUTI)h -1(ON)h 20(AND)h 21(MODIFICATION)h 221 1536(0.)s 21(This)h 21(License)h 20(applies)h 21(to)h 21(any)h 21(program)h 21(or)h 21(other)h 21(work)h 21(which)h 21(contains)h 177 1586(a)s 22(notice)h 20(placed)h 21(by)h 21(the)h 21(copyright)h 20(holder)h 21(saying)h 20(it)h 22(may)h 21(be)h 21(distributed)h 177 1636(under)s 21(the)h 21(terms)h 21(of)h 21(this)h 21(General)h 21(Public)h 20(License.)h 42(The)h 21("Program",)h 20(below,)h 177 1685(refers)s 21(to)h 21(any)h 21(such)h 21(program)h 21(or)h 21(work,)h 21(and)h 21(a)h 21("work)h 21(based)h 21(on)h 21(the)h 22(Program")h 177 1735(means)s 21(either)h 20(the)h 22(Program)h 20(or)h 21(any)h 22(derivative)h 19(work)h 21(under)h 21(copyright)h 20(law:)h 177 1785(that)s 21(is)h 22(to)h 21(say,)h 21(a)h 21(work)h 21(containing)h 20(the)h 21(Program)h 21(or)h 21(a)h 22(portion)h 20(of)h 21(it,)h 177 1835(either)s 21(verbatim)h 20(or)h 21(with)h 21(modifications)h 19(and/or)h 21(translated)h 20(into)h 21(another)h 177 1885(language.)s 42(\(Hereinafter)h -1(,)h 20(translation)h 20(is)h 21(included)h 20(without)h 20(limitation)h 20(in)h 177 1934(the)s 21(term)h 21("modification")h -1(.\))h 42(Each)h 21(licensee)h 20(is)h 21(addressed)h 20(as)h 21("you".)h 177 2034(Activities)s 20(other)h 21(than)h 21(copying,)h 20(distributio)h -1(n)h 20(and)h 21(modification)h 20(are)h 21(not)h 177 2084(covered)s 21(by)h 21(this)h 21(License;)h 20(they)h 21(are)h 21(outside)h 20(its)h 22(scope.)h 42(The)h 21(act)h 21(of)h 177 2134(running)s 21(the)h 21(Program)h 20(is)h 21(not)h 22(restricted,)h 19(and)h 21(the)h 21(output)h 21(from)h 21(the)h 21(Program)h 177 2183(is)s 22(covered)h 20(only)h 21(if)h 21(its)h 21(contents)h 21(constitute)h 19(a)h 22(work)h 21(based)h 21(on)h 21(the)h 177 2233(Program)s 21(\(independe)h -1(nt)h 20(of)h 21(having)h 21(been)h 21(made)h 21(by)h 21(running)h 20(the)h 22(Program\).)h 177 2283(Whether)s 21(that)h 20(is)h 22(true)h 21(depends)h 20(on)h 22(what)h 21(the)h 21(Program)h 20(does.)h 221 2383(1.)s 21(You)h 21(may)h 21(copy)h 21(and)h 22(distribute)h 19(verbatim)h 20(copies)h 21(of)h 21(the)h 22(Program's)h 177 2433(source)s 21(code)h 21(as)h 21(you)h 21(receive)h 21(it,)h 21(in)h 21(any)h 21(medium,)h 21(provided)h 20(that)h 21(you)h 177 2482(conspicuously)s 19(and)h 21(appropriately)h 20(publish)h 20(on)h 21(each)h 21(copy)h 21(an)h 22(appropriate)h 177 2532(copyright)s 20(notice)h 21(and)h 21(disclaimer)h 20(of)h 21(warranty;)h 20(keep)h 21(intact)h 20(all)h 22(the)h 177 2582(notices)s 21(that)h 20(refer)h 21(to)h 22(this)h 21(License)h 20(and)h 21(to)h 21(the)h 22(absence)h 20(of)h 21(any)h 22(warranty;)h 177 2632(and)s 21(give)h 21(any)h 21(other)h 21(recipients)h 20(of)h 21(the)h 22(Program)h 20(a)h 21(copy)h 21(of)h 22(this)h 21(License)h 177 2682(along)s 21(with)h 21(the)h 21(Program.)h 177 2781(You)s 21(may)h 22(charge)h 20(a)h 22(fee)h 21(for)h 21(the)h 21(physical)h 20(act)h 21(of)h 22(transferring)h 19(a)h 22(copy,)h 21(and)h 177 2831(you)s 21(may)h 22(at)h 21(your)h 21(option)h 20(offer)h 21(warranty)h 20(protection)h 20(in)h 21(exchange)h 21(for)h 21(a)h 21(fee.)h 51 @eop 52 @bop0 52 @bop1 cmr10.300 sf 1042 2940(51)s cmtt10.300 sf 221 91(2.)s 21(You)h 21(may)h 21(modify)h 21(your)h 21(copy)h 21(or)h 21(copies)h 21(of)h 21(the)h 21(Program)h 21(or)h 21(any)h 21(portion)h 177 141(of)s 22(it,)h 21(thus)h 21(forming)h 20(a)h 22(work)h 21(based)h 20(on)h 22(the)h 21(Program,)h 20(and)h 21(copy)h 21(and)h 177 191(distribute)s 20(such)h 21(modification)h -1(s)h 20(or)h 21(work)h 21(under)h 21(the)h 21(terms)h 21(of)h 21(Section)h 21(1)h 177 241(above,)s 21(provided)h 20(that)h 21(you)h 21(also)h 21(meet)h 21(all)h 21(of)h 21(these)h 21(conditions:)h 264 340(a\))s 22(You)h 21(must)h 21(cause)h 21(the)h 21(modified)h 20(files)h 21(to)h 21(carry)h 21(prominent)h 20(notices)h 264 390(stating)s 21(that)h 21(you)h 21(changed)h 20(the)h 21(files)h 21(and)h 21(the)h 21(date)h 21(of)h 22(any)h 21(change.)h 264 490(b\))s 22(You)h 21(must)h 21(cause)h 21(any)h 21(work)h 21(that)h 21(you)h 21(distribute)h 20(or)h 21(publish,)h 20(that)h 21(in)h 264 540(whole)s 21(or)h 21(in)h 22(part)h 21(contains)h 20(or)h 21(is)h 22(derived)h 20(from)h 21(the)h 21(Program)h 21(or)h 21(any)h 264 589(part)s 21(thereof,)h 20(to)h 22(be)h 21(licensed)h 20(as)h 22(a)h 21(whole)h 21(at)h 21(no)h 22(charge)h 20(to)h 22(all)h 21(third)h 264 639(parties)s 21(under)h 20(the)h 22(terms)h 20(of)h 22(this)h 21(License.)h 264 739(c\))s 22(If)h 21(the)h 21(modified)h 20(program)h 21(normally)h 20(reads)h 21(commands)h 20(interactivel)h -1(y)h 264 789(when)s 21(run,)h 21(you)h 21(must)h 21(cause)h 21(it,)h 21(when)h 21(started)h 21(running)h 20(for)h 21(such)h 264 839(interactive)s 20(use)h 21(in)h 21(the)h 22(most)h 21(ordinary)h 20(way,)h 21(to)h 21(print)h 21(or)h 21(display)h 21(an)h 264 888(announcement)s 20(including)h 20(an)h 21(appropriate)h 19(copyright)h 20(notice)h 21(and)h 21(a)h 264 938(notice)s 21(that)h 21(there)h 21(is)h 21(no)h 21(warranty)h 21(\(or)h 21(else,)h 20(saying)h 21(that)h 21(you)h 21(provide)h 264 988(a)s 22(warranty\))h 20(and)h 21(that)h 21(users)h 21(may)h 21(redistribute)h 19(the)h 21(program)h 21(under)h 264 1038(these)s 21(conditions,)h 20(and)h 21(telling)h 20(the)h 21(user)h 21(how)h 21(to)h 22(view)h 21(a)h 21(copy)h 21(of)h 22(this)h 264 1088(License.)s 42(\(Exception:)h 20(if)h 21(the)h 21(Program)h 21(itself)h 20(is)h 22(interactive)h 19(but)h 264 1137(does)s 21(not)h 21(normally)h 21(print)h 20(such)h 21(an)h 22(announcemen)h -1(t,)h 20(your)h 21(work)h 21(based)h 21(on)h 264 1187(the)s 22(Program)h 20(is)h 21(not)h 21(required)h 21(to)h 21(print)h 21(an)h 21(announcement.)h -1(\))h 177 1287(These)s 21(requirements)h 19(apply)h 21(to)h 21(the)h 22(modified)h 20(work)h 21(as)h 21(a)h 22(whole.)h 42(If)h 177 1337(identifiable)s 19(sections)h 21(of)h 21(that)h 21(work)h 21(are)h 21(not)h 21(derived)h 21(from)h 21(the)h 21(Program,)h 177 1386(and)s 21(can)h 22(be)h 21(reasonably)h 20(considered)h 19(independent)h 20(and)h 21(separate)h 20(works)h 21(in)h 177 1436(themselves,)s 20(then)h 21(this)h 21(License,)h 20(and)h 21(its)h 21(terms,)h 21(do)h 21(not)h 21(apply)h 21(to)h 21(those)h 177 1486(sections)s 20(when)h 21(you)h 21(distribute)h 20(them)h 21(as)h 22(separate)h 20(works.)h 42(But)h 21(when)h 21(you)h 177 1536(distribute)s 20(the)h 21(same)h 21(sections)h 20(as)h 22(part)h 21(of)h 21(a)h 21(whole)h 21(which)h 21(is)h 21(a)h 22(work)h 21(based)h 177 1586(on)s 22(the)h 21(Program,)h 20(the)h 21(distribution)h 19(of)h 22(the)h 21(whole)h 21(must)h 21(be)h 21(on)h 21(the)h 22(terms)h 20(of)h 177 1636(this)s 21(License,)h 20(whose)h 21(permissions)h 20(for)h 21(other)h 20(licensees)h 20(extend)h 21(to)h 21(the)h 177 1685(entire)s 21(whole,)h 20(and)h 21(thus)h 21(to)h 22(each)h 21(and)h 21(every)h 21(part)h 21(regardless)h 19(of)h 22(who)h 21(wrote)h 21(it.)h 177 1785(Thus,)s 21(it)h 21(is)h 22(not)h 21(the)h 21(intent)h 21(of)h 21(this)h 21(section)h 20(to)h 22(claim)h 20(rights)h 21(or)h 21(contest)h 177 1835(your)s 21(rights)h 21(to)h 21(work)h 21(written)h 20(entirely)h 21(by)h 21(you;)h 21(rather,)h 20(the)h 21(intent)h 21(is)h 21(to)h 177 1885(exercise)s 20(the)h 21(right)h 21(to)h 22(control)h 20(the)h 21(distribution)h 19(of)h 22(derivative)h 20(or)h 177 1934(collective)s 20(works)h 21(based)h 20(on)h 22(the)h 21(Program.)h 177 2034(In)s 22(addition,)h 19(mere)h 21(aggregation)h 20(of)h 21(another)h 21(work)h 21(not)h 21(based)h 21(on)h 21(the)h 21(Program)h 177 2084(with)s 21(the)h 21(Program)h 21(\(or)h 21(with)h 21(a)h 21(work)h 21(based)h 21(on)h 21(the)h 22(Program\))h 20(on)h 21(a)h 22(volume)h 20(of)h 177 2134(a)s 22(storage)h 20(or)h 21(distribution)h 20(medium)h 20(does)h 21(not)h 21(bring)h 21(the)h 21(other)h 21(work)h 21(under)h 177 2183(the)s 21(scope)h 21(of)h 21(this)h 21(License.)h 221 2283(3.)s 21(You)h 21(may)h 21(copy)h 21(and)h 22(distribute)h 19(the)h 22(Program)h 20(\(or)h 21(a)h 22(work)h 21(based)h 20(on)h 22(it,)h 177 2333(under)s 21(Section)h 20(2\))h 22(in)h 21(object)h 21(code)h 21(or)h 21(executable)h 20(form)h 21(under)h 20(the)h 22(terms)h 20(of)h 177 2383(Sections)s 20(1)h 22(and)h 21(2)h 22(above)h 20(provided)h 21(that)h 21(you)h 21(also)h 21(do)h 21(one)h 21(of)h 22(the)h 21(following:)h 264 2482(a\))s 22(Accompany)h 20(it)h 21(with)h 21(the)h 21(complete)h 20(corresponding)h 19(machine-readabl)h -1(e)h 264 2532(source)s 21(code,)h 21(which)h 20(must)h 21(be)h 22(distributed)h 19(under)h 21(the)h 21(terms)h 21(of)h 21(Sections)h 264 2582(1)s 22(and)h 21(2)h 22(above)h 20(on)h 22(a)h 21(medium)h 21(customarily)h 19(used)h 21(for)h 22(software)h 20(interchange)h -1(;)h 20(or,)h 264 2682(b\))s 22(Accompany)h 20(it)h 21(with)h 21(a)h 22(written)h 20(offer,)h 20(valid)h 21(for)h 21(at)h 22(least)h 21(three)h 264 2731(years,)s 21(to)h 21(give)h 21(any)h 21(third)h 21(party,)h 21(for)h 21(a)h 21(charge)h 21(no)h 21(more)h 21(than)h 21(your)h 264 2781(cost)s 21(of)h 22(physically)h 19(performing)h 20(source)h 21(distributio)h -1(n,)h 20(a)h 21(complete)h 264 2831(machine-readab)s -1(le)h 20(copy)h 21(of)h 21(the)h 21(corresponding)h 19(source)h 21(code,)h 21(to)h 21(be)h 52 @eop 53 @bop0 53 @bop1 cmr10.300 sf 1042 2940(52)s cmtt10.300 sf 264 42(distributed)s 20(under)h 21(the)h 21(terms)h 21(of)h 21(Sections)h 20(1)h 22(and)h 21(2)h 21(above)h 21(on)h 22(a)h 21(medium)h 264 91(customarily)s 20(used)h 21(for)h 21(software)h 20(interchange;)h 19(or,)h 264 191(c\))s 22(Accompany)h 20(it)h 21(with)h 21(the)h 21(information)h 20(you)h 21(received)h 20(as)h 21(to)h 22(the)h 21(offer)h 264 241(to)s 22(distribute)h 19(corresponding)h 20(source)h 20(code.)h 43(\(This)h 20(alternative)h 20(is)h 264 291(allowed)s 21(only)h 21(for)h 21(noncommercia)h -1(l)h 20(distribution)h 19(and)h 21(only)h 21(if)h 22(you)h 264 340(received)s 20(the)h 22(program)h 20(in)h 21(object)h 21(code)h 21(or)h 21(executable)h 20(form)h 21(with)h 21(such)h 264 390(an)s 22(offer,)h 20(in)h 22(accord)h 20(with)h 21(Subsection)h 20(b)h 21(above.\))h 177 490(The)s 21(source)h 21(code)h 21(for)h 21(a)h 22(work)h 21(means)h 20(the)h 22(preferred)h 19(form)h 21(of)h 22(the)h 21(work)h 21(for)h 177 540(making)s 21(modificatio)h -1(ns)h 20(to)h 21(it.)h 43(For)h 21(an)h 22(executable)h 19(work,)h 21(complete)h 20(source)h 177 589(code)s 21(means)h 21(all)h 21(the)h 21(source)h 21(code)h 21(for)h 21(all)h 21(modules)h 20(it)h 22(contains,)h 20(plus)h 21(any)h 177 639(associated)s 20(interface)h 20(definition)h 20(files,)h 20(plus)h 21(the)h 21(scripts)h 21(used)h 21(to)h 177 689(control)s 21(compilatio)h -1(n)h 20(and)h 21(installation)h 20(of)h 21(the)h 21(executable.)h 41(However,)h 21(as)h 21(a)h 177 739(special)s 21(exception,)h 19(the)h 21(source)h 21(code)h 21(distributed)h 19(need)h 21(not)h 22(include)h 177 789(anything)s 20(that)h 21(is)h 22(normally)h 20(distributed)h 19(\(in)h 21(either)h 21(source)h 21(or)h 21(binary)h 177 839(form\))s 21(with)h 21(the)h 21(major)h 21(components)h 20(\(compiler,)h 19(kernel,)h 21(and)h 21(so)h 21(on\))h 21(of)h 22(the)h 177 888(operating)s 20(system)h 21(on)h 21(which)h 21(the)h 21(executable)h 20(runs,)h 20(unless)h 21(that)h 21(component)h 177 938(itself)s 21(accompanies)h 19(the)h 21(executable.)h 177 1038(If)s 22(distributi)h -1(on)h 20(of)h 21(executable)h 20(or)h 21(object)h 21(code)h 21(is)h 21(made)h 21(by)h 22(offering)h 177 1088(access)s 21(to)h 21(copy)h 21(from)h 21(a)h 22(designated)h 19(place,)h 21(then)h 21(offering)h 20(equivalent)h 177 1137(access)s 21(to)h 21(copy)h 21(the)h 21(source)h 21(code)h 21(from)h 21(the)h 21(same)h 21(place)h 21(counts)h 20(as)h 177 1187(distribution)s 19(of)h 22(the)h 21(source)h 21(code,)h 20(even)h 21(though)h 21(third)h 21(parties)h 20(are)h 21(not)h 177 1237(compelled)s 20(to)h 21(copy)h 21(the)h 22(source)h 20(along)h 21(with)h 21(the)h 21(object)h 21(code.)h 221 1337(4.)s 21(You)h 21(may)h 21(not)h 22(copy,)h 20(modify,)h 21(sublicense,)h 19(or)h 22(distribute)h 19(the)h 22(Program)h 177 1386(except)s 21(as)h 21(expressly)h 20(provided)h 20(under)h 21(this)h 21(License.)h 42(Any)h 21(attempt)h 177 1436(otherwise)s 20(to)h 21(copy,)h 21(modify,)h 21(sublicense)h 19(or)h 22(distribute)h 19(the)h 22(Program)h 20(is)h 177 1486(void,)s 21(and)h 21(will)h 21(automatically)h 19(terminate)h 20(your)h 21(rights)h 21(under)h 20(this)h 21(License.)h 177 1536(However,)s 20(parties)h 21(who)h 21(have)h 21(received)h 20(copies,)h 20(or)h 22(rights,)h 20(from)h 21(you)h 21(under)h 177 1586(this)s 21(License)h 20(will)h 21(not)h 22(have)h 21(their)h 20(licenses)h 20(terminated)h 20(so)h 22(long)h 21(as)h 21(such)h 177 1636(parties)s 21(remain)h 20(in)h 21(full)h 21(compliance.)h 221 1735(5.)s 21(You)h 21(are)h 21(not)h 22(required)h 20(to)h 21(accept)h 21(this)h 21(License,)h 20(since)h 21(you)h 21(have)h 21(not)h 177 1785(signed)s 21(it.)h 43(However,)h 20(nothing)h 20(else)h 21(grants)h 21(you)h 21(permission)h 20(to)h 21(modify)h 21(or)h 177 1835(distribute)s 20(the)h 21(Program)h 20(or)h 22(its)h 21(derivative)h 20(works.)h 42(These)h 21(actions)h 20(are)h 177 1885(prohibited)s 20(by)h 21(law)h 21(if)h 22(you)h 21(do)h 21(not)h 22(accept)h 20(this)h 21(License.)h 42(Therefore,)h 20(by)h 177 1934(modifying)s 20(or)h 21(distributing)h 20(the)h 21(Program)h 20(\(or)h 21(any)h 22(work)h 21(based)h 20(on)h 22(the)h 177 1984(Program\),)s 20(you)h 21(indicate)h 20(your)h 21(acceptance)h 20(of)h 21(this)h 21(License)h 21(to)h 21(do)h 22(so,)h 21(and)h 177 2034(all)s 21(its)h 22(terms)h 20(and)h 21(conditions)h 20(for)h 21(copying,)h 20(distributing)h 20(or)h 21(modifying)h 177 2084(the)s 21(Program)h 21(or)h 21(works)h 21(based)h 21(on)h 21(it.)h 221 2183(6.)s 21(Each)h 21(time)h 21(you)h 21(redistribute)h 20(the)h 21(Program)h 20(\(or)h 21(any)h 21(work)h 21(based)h 21(on)h 22(the)h 177 2233(Program\),)s 20(the)h 21(recipient)h 20(automatically)h 19(receives)h 20(a)h 22(license)h 20(from)h 21(the)h 177 2283(original)s 20(licensor)h 20(to)h 22(copy,)h 21(distribute)h 19(or)h 22(modify)h 20(the)h 21(Program)h 21(subject)h 20(to)h 177 2333(these)s 21(terms)h 21(and)h 21(conditions.)h 41(You)h 21(may)h 22(not)h 21(impose)h 20(any)h 21(further)h 177 2383(restrictions)s 19(on)h 22(the)h 21(recipients')h 20(exercise)h 20(of)h 21(the)h 21(rights)h 21(granted)h 20(herein.)h 177 2433(You)s 21(are)h 22(not)h 21(responsible)h 19(for)h 21(enforcing)h 20(compliance)h 20(by)h 21(third)h 21(parties)h 21(to)h 177 2482(this)s 21(License.)h 221 2582(7.)s 21(If,)h 21(as)h 22(a)h 21(consequence)h 20(of)h 21(a)h 22(court)h 21(judgment)h 20(or)h 21(allegation)h 20(of)h 21(patent)h 177 2632(infringement)s 19(or)h 22(for)h 21(any)h 21(other)h 21(reason)h 21(\(not)h 20(limited)h 21(to)h 21(patent)h 21(issues\),)h 177 2682(conditions)s 20(are)h 21(imposed)h 20(on)h 22(you)h 21(\(whether)h 20(by)h 21(court)h 21(order,)h 21(agreement)h 20(or)h 177 2731(otherwise\))s 20(that)h 21(contradict)h 20(the)h 21(conditions)h 19(of)h 22(this)h 21(License,)h 20(they)h 21(do)h 21(not)h 177 2781(excuse)s 21(you)h 21(from)h 21(the)h 21(conditions)h 20(of)h 21(this)h 21(License.)h 42(If)h 21(you)h 22(cannot)h 177 2831(distribute)s 20(so)h 21(as)h 22(to)h 21(satisfy)h 20(simultaneously)h 19(your)h 21(obligations)h 20(under)h 21(this)h 53 @eop 54 @bop0 54 @bop1 cmr10.300 sf 1042 2940(53)s cmtt10.300 sf 177 42(License)s 21(and)h 21(any)h 21(other)h 21(pertinent)h 20(obligation)h -1(s,)h 20(then)h 21(as)h 21(a)h 22(consequence)h 19(you)h 177 91(may)s 21(not)h 22(distribute)h 19(the)h 21(Program)h 21(at)h 21(all.)h 43(For)h 21(example,)h 20(if)h 22(a)h 21(patent)h 177 141(license)s 21(would)h 20(not)h 21(permit)h 21(royalty-free)h 19(redistribution)h 19(of)h 22(the)h 21(Program)h 20(by)h 177 191(all)s 21(those)h 21(who)h 21(receive)h 21(copies)h 20(directly)h 20(or)h 22(indirectly)h 19(through)h 21(you,)h 21(then)h 177 241(the)s 21(only)h 21(way)h 21(you)h 22(could)h 20(satisfy)h 21(both)h 21(it)h 21(and)h 21(this)h 21(License)h 21(would)h 20(be)h 22(to)h 177 291(refrain)s 21(entirely)h 20(from)h 21(distributio)h -1(n)h 20(of)h 21(the)h 21(Program.)h 177 390(If)s 22(any)h 21(portion)h 20(of)h 21(this)h 21(section)h 21(is)h 21(held)h 21(invalid)h 20(or)h 22(unenforceabl)h -1(e)h 20(under)h 177 440(any)s 21(particular)h 20(circumstance,)h 19(the)h 21(balance)h 21(of)h 21(the)h 21(section)h 21(is)h 21(intended)h 20(to)h 177 490(apply)s 21(and)h 21(the)h 21(section)h 21(as)h 21(a)h 22(whole)h 20(is)h 22(intended)h 20(to)h 21(apply)h 21(in)h 21(other)h 177 540(circumstances)s -1(.)h 177 639(It)s 22(is)h 21(not)h 21(the)h 21(purpose)h 21(of)h 21(this)h 21(section)h 20(to)h 22(induce)h 20(you)h 21(to)h 22(infringe)h 20(any)h 177 689(patents)s 21(or)h 21(other)h 21(property)h 20(right)h 21(claims)h 20(or)h 21(to)h 22(contest)h 20(validity)h 20(of)h 22(any)h 177 739(such)s 21(claims;)h 20(this)h 21(section)h 21(has)h 21(the)h 21(sole)h 21(purpose)h 20(of)h 22(protecting)h 20(the)h 177 789(integrity)s 20(of)h 21(the)h 22(free)h 21(software)h 20(distributio)h -1(n)h 20(system,)h 20(which)h 21(is)h 177 839(implemented)s 20(by)h 21(public)h 21(license)h 20(practices.)h 41(Many)h 21(people)h 21(have)h 21(made)h 177 888(generous)s 20(contributions)h 19(to)h 22(the)h 21(wide)h 21(range)h 21(of)h 21(software)h 20(distributed)h 177 938(through)s 21(that)h 20(system)h 21(in)h 21(reliance)h 21(on)h 21(consistent)h 20(application)h 19(of)h 22(that)h 177 988(system;)s 21(it)h 21(is)h 21(up)h 22(to)h 21(the)h 21(author/donor)h 20(to)h 21(decide)h 20(if)h 22(he)h 21(or)h 22(she)h 21(is)h 21(willing)h 177 1038(to)s 22(distribute)h 19(software)h 20(through)h 21(any)h 21(other)h 21(system)h 20(and)h 21(a)h 22(licensee)h 20(cannot)h 177 1088(impose)s 21(that)h 21(choice.)h 177 1187(This)s 21(section)h 20(is)h 22(intended)h 20(to)h 21(make)h 21(thoroughly)h 20(clear)h 21(what)h 21(is)h 21(believed)h 20(to)h 177 1237(be)s 22(a)h 21(consequence)h 20(of)h 21(the)h 21(rest)h 21(of)h 22(this)h 21(License.)h 221 1337(8.)s 21(If)h 22(the)h 21(distributio)h -1(n)h 20(and/or)h 21(use)h 21(of)h 21(the)h 21(Program)h 21(is)h 21(restricted)h 20(in)h 177 1386(certain)s 21(countries)h 19(either)h 21(by)h 21(patents)h 21(or)h 21(by)h 21(copyrighted)h 20(interfaces,)h 20(the)h 177 1436(original)s 20(copyright)h 20(holder)h 21(who)h 21(places)h 21(the)h 21(Program)h 20(under)h 21(this)h 21(License)h 177 1486(may)s 21(add)h 22(an)h 21(explicit)h 20(geographical)h 19(distribution)h 20(limitation)h 19(excluding)h 177 1536(those)s 21(countries,)h 20(so)h 21(that)h 21(distribution)h 19(is)h 22(permitted)h 20(only)h 21(in)h 21(or)h 21(among)h 177 1586(countries)s 20(not)h 21(thus)h 21(excluded.)h 42(In)h 21(such)h 21(case,)h 21(this)h 21(License)h 20(incorporates)h 177 1636(the)s 21(limitation)h 20(as)h 21(if)h 22(written)h 20(in)h 22(the)h 21(body)h 21(of)h 21(this)h 21(License.)h 221 1735(9.)s 21(The)h 21(Free)h 21(Software)h 20(Foundation)h 20(may)h 21(publish)h 21(revised)h 20(and/or)h 21(new)h 21(versions)h 177 1785(of)s 22(the)h 21(General)h 20(Public)h 21(License)h 20(from)h 21(time)h 21(to)h 21(time.)h 43(Such)h 21(new)h 21(versions)h 20(will)h 177 1835(be)s 22(similar)h 20(in)h 21(spirit)h 21(to)h 21(the)h 21(present)h 21(version,)h 20(but)h 21(may)h 21(differ)h 21(in)h 21(detail)h 21(to)h 177 1885(address)s 21(new)h 21(problems)h 20(or)h 21(concerns.)h 177 1984(Each)s 21(version)h 20(is)h 22(given)h 21(a)h 21(distinguishing)h 19(version)h 20(number.)h 43(If)h 21(the)h 21(Program)h 177 2034(specifies)s 20(a)h 22(version)h 20(number)h 21(of)h 21(this)h 21(License)h 20(which)h 21(applies)h 20(to)h 22(it)h 21(and)h 21("any)h 177 2084(later)s 21(version",)h 20(you)h 21(have)h 21(the)h 21(option)h 21(of)h 21(following)h 20(the)h 21(terms)h 21(and)h 21(conditions)h 177 2134(either)s 21(of)h 21(that)h 21(version)h 20(or)h 22(of)h 21(any)h 21(later)h 21(version)h 20(published)h 20(by)h 22(the)h 21(Free)h 177 2183(Software)s 20(Foundation.)h 42(If)h 21(the)h 21(Program)h 21(does)h 20(not)h 22(specify)h 20(a)h 22(version)h 20(number)h 20(of)h 177 2233(this)s 21(License,)h 20(you)h 21(may)h 22(choose)h 20(any)h 21(version)h 21(ever)h 21(published)h 20(by)h 21(the)h 21(Free)h 21(Software)h 177 2283(Foundation.)s 221 2383(10.)s 21(If)h 21(you)h 21(wish)h 21(to)h 22(incorporate)h 19(parts)h 21(of)h 21(the)h 22(Program)h 20(into)h 21(other)h 21(free)h 177 2433(programs)s 20(whose)h 21(distribution)h 19(conditions)h 20(are)h 21(different,)h 20(write)h 21(to)h 21(the)h 21(author)h 177 2482(to)s 22(ask)h 21(for)h 21(permission.)h 41(For)h 21(software)h 21(which)h 20(is)h 22(copyrighted)h 19(by)h 22(the)h 21(Free)h 177 2532(Software)s 20(Foundation,)h 20(write)h 21(to)h 21(the)h 21(Free)h 21(Software)h 20(Foundation;)h 20(we)h 21(sometimes)h 177 2582(make)s 21(exceptions)h 20(for)h 21(this.)h 43(Our)h 21(decision)h 20(will)h 21(be)h 21(guided)h 21(by)h 21(the)h 21(two)h 22(goals)h 177 2632(of)s 22(preserving)h 19(the)h 21(free)h 21(status)h 21(of)h 21(all)h 22(derivative)h -1(s)h 20(of)h 21(our)h 22(free)h 21(software)h 20(and)h 177 2682(of)s 22(promoting)h 19(the)h 22(sharing)h 20(and)h 21(reuse)h 21(of)h 21(software)h 20(generally.)h 264 2781(NO)s 22(WARRANTY)h 54 @eop 55 @bop0 55 @bop1 cmr10.300 sf 1042 2940(54)s cmtt10.300 sf 221 42(11.)s 21(BECAUSE)h 20(THE)h 21(PROGRAM)h 21(IS)h 21(LICENSED)h 20(FREE)h 21(OF)h 22(CHARGE,)h 20(THERE)h 21(IS)h 21(NO)h 22(WARRANTY)h 177 91(FOR)s 21(THE)h 22(PROGRAM,)h 20(TO)h 21(THE)h 21(EXTENT)h 21(PERMITTED)h 20(BY)h 21(APPLICABLE)h 20(LAW.)h 43(EXCEPT)h 20(WHEN)h 177 141(OTHERWISE)s 20(STATED)h 21(IN)h 21(WRITING)h 20(THE)h 22(COPYRIGHT)h 19(HOLDERS)h 21(AND/OR)h 20(OTHER)h 21(PARTIES)h 177 191(PROVIDE)s 21(THE)h 21(PROGRAM)h 20("AS)h 21(IS")h 21(WITHOUT)h 21(WARRANTY)h 20(OF)h 21(ANY)h 21(KIND,)h 21(EITHER)h 21(EXPRESSED)h 177 241(OR)s 22(IMPLIED,)h 20(INCLUDING,)h 19(BUT)h 22(NOT)h 21(LIMITED)h 20(TO,)h 21(THE)h 21(IMPLIED)h 21(WARRANTIES)h 20(OF)h 177 291(MERCHANTABILI)s -1(TY)h 20(AND)h 21(FITNESS)h 20(FOR)h 22(A)h 21(PARTICULAR)h 20(PURPOSE.)h 42(THE)h 21(ENTIRE)h 21(RISK)h 20(AS)h 177 340(TO)s 22(THE)h 21(QUALITY)h 20(AND)h 21(PERFORMANCE)h 20(OF)h 21(THE)h 21(PROGRAM)h 21(IS)h 21(WITH)h 21(YOU.)h 43(SHOULD)h 20(THE)h 177 390(PROGRAM)s 21(PROVE)h 20(DEFECTIVE,)h 20(YOU)h 21(ASSUME)h 21(THE)h 21(COST)h 21(OF)h 21(ALL)h 21(NECESSARY)h 20(SERVICING,)h 177 440(REPAIR)s 21(OR)h 21(CORRECTION.)h 221 540(12.)s 21(IN)h 21(NO)h 22(EVENT)h 20(UNLESS)h 21(REQUIRED)h 20(BY)h 22(APPLICABLE)h 19(LAW)h 21(OR)h 22(AGREED)h 20(TO)h 22(IN)h 21(WRITING)h 177 589(WILL)s 21(ANY)h 21(COPYRIGHT)h 20(HOLDER,)h 21(OR)h 21(ANY)h 21(OTHER)h 21(PARTY)h 21(WHO)h 21(MAY)h 21(MODIFY)h 21(AND/OR)h 177 639(REDISTRIBUTE)s 19(THE)h 22(PROGRAM)h 20(AS)h 21(PERMITTED)h 20(ABOVE,)h 21(BE)h 21(LIABLE)h 21(TO)h 21(YOU)h 21(FOR)h 22(DAMAGES,)h 177 689(INCLUDING)s 20(ANY)h 21(GENERAL,)h 20(SPECIAL,)h 21(INCIDENTAL)h 19(OR)h 22(CONSEQUENTI)h -1(AL)h 20(DAMAGES)h 20(ARISING)h 177 739(OUT)s 21(OF)h 22(THE)h 21(USE)h 21(OR)h 21(INABILITY)h 20(TO)h 22(USE)h 21(THE)h 21(PROGRAM)h 20(\(INCLUDING)h 20(BUT)h 21(NOT)h 22(LIMITED)h 177 789(TO)s 22(LOSS)h 21(OF)h 21(DATA)h 21(OR)h 21(DATA)h 21(BEING)h 21(RENDERED)h 20(INACCURATE)h 20(OR)h 21(LOSSES)h 21(SUSTAINED)h 20(BY)h 177 839(YOU)s 21(OR)h 22(THIRD)h 20(PARTIES)h 21(OR)h 21(A)h 22(FAILURE)h 20(OF)h 22(THE)h 21(PROGRAM)h 20(TO)h 21(OPERATE)h 21(WITH)h 21(ANY)h 21(OTHER)h 177 888(PROGRAMS\),)s 20(EVEN)h 21(IF)h 21(SUCH)h 21(HOLDER)h 21(OR)h 21(OTHER)h 21(PARTY)h 21(HAS)h 21(BEEN)h 21(ADVISED)h 20(OF)h 22(THE)h 177 938(POSSIBILITY)s 20(OF)h 21(SUCH)h 21(DAMAGES.)h 286 1038(END)s 21(OF)h 22(TERMS)h 20(AND)h 22(CONDITIONS)h 177 1137(Appendix:)s 20(How)h 21(to)h 22(Apply)h 20(These)h 21(Terms)h 21(to)h 21(Your)h 21(New)h 21(Programs)h 221 1237(If)s 21(you)h 21(develop)h 21(a)h 21(new)h 21(program,)h 21(and)h 21(you)h 21(want)h 21(it)h 21(to)h 22(be)h 21(of)h 21(the)h 22(greatest)h 177 1287(possible)s 20(use)h 21(to)h 22(the)h 21(public,)h 20(the)h 22(best)h 21(way)h 21(to)h 21(achieve)h 20(this)h 21(is)h 22(to)h 21(make)h 21(it)h 177 1337(free)s 21(software)h 20(which)h 21(everyone)h 20(can)h 21(redistribute)h 20(and)h 21(change)h 20(under)h 21(these)h 21(terms.)h 221 1436(To)s 21(do)h 22(so,)h 21(attach)h 20(the)h 21(following)h 20(notices)h 21(to)h 21(the)h 21(program.)h 42(It)h 22(is)h 21(safest)h 177 1486(to)s 22(attach)h 20(them)h 21(to)h 21(the)h 22(start)h 20(of)h 22(each)h 21(source)h 20(file)h 21(to)h 22(most)h 21(effectively)h 177 1536(convey)s 21(the)h 21(exclusion)h 20(of)h 21(warranty;)h 20(and)h 21(each)h 21(file)h 21(should)h 21(have)h 21(at)h 21(least)h 177 1586(the)s 21("copyright")h 20(line)h 21(and)h 21(a)h 22(pointer)h 20(to)h 21(where)h 21(the)h 21(full)h 21(notice)h 21(is)h 21(found.)h 264 1685()h 264 1735(Copyright)s 20(\(C\))h 21(19yy)h 43()h 264 1835(This)s 21(program)h 21(is)h 21(free)h 21(software;)h 20(you)h 21(can)h 21(redistribute)h 20(it)h 21(and/or)h 21(modify)h 264 1885(it)s 22(under)h 20(the)h 22(terms)h 20(of)h 22(the)h 21(GNU)h 21(General)h 20(Public)h 21(License)h 20(as)h 22(published)h 20(by)h 264 1934(the)s 22(Free)h 20(Software)h 21(Foundation;)h 19(either)h 21(version)h 20(2)h 22(of)h 21(the)h 21(License,)h 20(or)h 264 1984(\(at)s 22(your)h 20(option\))h 21(any)h 21(later)h 21(version.)h 264 2084(This)s 21(program)h 21(is)h 21(distributed)h 20(in)h 21(the)h 21(hope)h 21(that)h 21(it)h 21(will)h 21(be)h 22(useful,)h 264 2134(but)s 22(WITHOUT)h 20(ANY)h 21(WARRANTY;)h 20(without)h 20(even)h 21(the)h 21(implied)h 21(warranty)h 20(of)h 264 2183(MERCHANTABILIT)s -1(Y)h 20(or)h 21(FITNESS)h 21(FOR)h 21(A)h 22(PARTICULAR)h 19(PURPOSE.)h 42(See)h 21(the)h 264 2233(GNU)s 22(General)h 20(Public)h 20(License)h 21(for)h 21(more)h 21(details.)h 264 2333(You)s 22(should)h 20(have)h 21(received)h 20(a)h 22(copy)h 21(of)h 21(the)h 21(GNU)h 21(General)h 21(Public)h 20(License)h 264 2383(along)s 21(with)h 21(this)h 21(program;)h 20(if)h 22(not,)h 21(write)h 20(to)h 22(the)h 21(Free)h 21(Software)h 264 2433(Foundation,)s 20(Inc.,)h 21(675)h 21(Mass)h 21(Ave,)h 21(Cambridge,)h 19(MA)h 22(02139,)h 20(USA.)h 177 2532(Also)s 21(add)h 21(information)h 20(on)h 21(how)h 21(to)h 22(contact)h 20(you)h 21(by)h 22(electronic)h 19(and)h 22(paper)h 20(mail.)h 177 2632(If)s 22(the)h 21(program)h 20(is)h 21(interactive,)h 20(make)h 21(it)h 21(output)h 21(a)h 21(short)h 21(notice)h 21(like)h 21(this)h 177 2682(when)s 21(it)h 22(starts)h 20(in)h 21(an)h 22(interactive)h 19(mode:)h 264 2781(Gnomovision)s 20(version)h 20(69,)h 21(Copyright)h 20(\(C\))h 21(19yy)h 21(name)h 21(of)h 22(author)h 264 2831(Gnomovision)s 20(comes)h 21(with)h 21(ABSOLUTELY)h 19(NO)h 22(WARRANTY;)h 20(for)h 21(details)h 55 @eop 56 @bop0 cmtt10.300 sf [<0C1E3C7870F0E0E0E0F0F87830> 8 13 -8 27 22] 96 dc 56 @bop1 cmr10.300 sf 1042 2940(55)s cmtt10.300 sf 264 42(type)s 21(`show)h 21(w'.)h 264 91(This)s 21(is)h 22(free)h 21(software,)h 20(and)h 21(you)h 21(are)h 21(welcome)h 20(to)h 22(redistribute)h 19(it)h 264 141(under)s 21(certain)h 20(conditions;)h 20(type)h 21(`show)h 21(c')h 21(for)h 21(details.)h 177 241(The)s 21(hypothetical)h 20(commands)h 20(`show)h 21(w')h 21(and)h 21(`show)h 21(c')h 21(should)h 21(show)h 21(the)h 21(appropriate)h 177 291(parts)s 21(of)h 21(the)h 21(General)h 21(Public)h 20(License.)h 42(Of)h 22(course,)h 20(the)h 21(commands)h 20(you)h 22(use)h 21(may)h 177 340(be)s 22(called)h 20(something)h 20(other)h 21(than)h 21(`show)h 21(w')h 21(and)h 21(`show)h 21(c';)h 21(they)h 21(could)h 21(even)h 21(be)h 177 390(mouse-clicks)s 19(or)h 22(menu)h 21(items--whate)h -1(ver)h 20(suits)h 20(your)h 21(program.)h 177 490(You)s 21(should)h 21(also)h 21(get)h 21(your)h 21(employer)h 20(\(if)h 21(you)h 21(work)h 21(as)h 22(a)h 21(programmer\))h 20(or)h 21(your)h 177 540(school,)s 21(if)h 21(any,)h 21(to)h 21(sign)h 21(a)h 22("copyright)h 20(disclaimer)h -1(")h 20(for)h 21(the)h 21(program,)h 21(if)h 177 589(necessary.)s 42(Here)h 21(is)h 21(a)h 22(sample;)h 20(alter)h 21(the)h 21(names:)h 221 689(Yoyodyne,)s 20(Inc.,)h 20(hereby)h 21(disclaims)h 20(all)h 21(copyright)h 20(interest)h 20(in)h 22(the)h 21(program)h 221 739(`Gnomovisio)s -1(n')h 20(\(which)h 20(makes)h 21(passes)h 21(at)h 21(compilers\))h 20(written)h 20(by)h 22(James)h 20(Hacker.)h 221 839(,)h 21(1)h 21(April)h 21(1989)h 221 888(Ty)s 21(Coon,)h 21(President)h 20(of)h 21(Vice)h 177 988(This)s 21(General)h 20(Public)h 21(License)h 20(does)h 21(not)h 22(permit)h 20(incorporating)h 19(your)h 21(program)h 20(into)h 177 1038(proprietary)s 20(programs.)h 41(If)h 22(your)h 21(program)h 20(is)h 21(a)h 22(subroutine)h 20(library,)h 20(you)h 21(may)h 177 1088(consider)s 20(it)h 22(more)h 21(useful)h 20(to)h 22(permit)h 20(linking)h 20(proprietary)h 20(applications)h 19(with)h 21(the)h 177 1137(library.)s 42(If)h 21(this)h 21(is)h 22(what)h 21(you)h 21(want)h 21(to)h 21(do,)h 21(use)h 22(the)h 21(GNU)h 21(Library)h 20(General)h 177 1187(Public)s 21(License)h 20(instead)h 20(of)h 22(this)h 21(License.)h 1772 2 177 1280 r 56 @eop 57 @bop0 57 @bop1 cmr10.300 sf 1042 2940(56)s 57 @eop 58 @bop0 cmbx10.622 sf [ 64 59 -4 58 70] 66 dc cmbx10.746 sf [ 88 72 -4 70 89] 82 dc cmti10.300 sf [<01FFC0003C0000380000380000380000380000700000700000700000700000E00000E0 0000E00000E00001C00001C00001C00001C0000380000380000380000380000700000700 000700000700000F0000FFE000> 24 28 -2 27 16] 73 dc [<007FF0000780000700000700000700000700000E00000E00000E00000E00001C00001C 00001C00001C0000380000380000380000380000700000700000700000700060E000E0E0 00C0C00081C0008380004700003C0000> 24 29 -5 27 22] 74 dc cmr10.300 sf [ 24 1 0 11 21] 123 dc 58 @bop1 cmcsc10.300 sf 723 1718(a)s cmbx10.622 sf 177 378(App)s 3(endix)h 34(B)h cmbx10.746 sf 177 610(References)s cmti10.300 sf 1524 1025(Communic)s -2(ations)h 17(of)h 17(the)h 177 1075(A)s -1(CM)h 1512 1972(Communic)s -2(ations)h 23(of)h 23(the)h 177 2022(A)s -1(CM)h 1635 2096(SIAM)s 18(Journal)h 17(of)h 177 2146(Computing)s cmbx10.300 sf 177 851([ANSI])s 177 1025([Ben)s -1(tley86])h 177 1150([Hoare80])s 177 1324([Horton90])s 177 1399([Kernighan88])s 177 1523([Kn)s -1(uth83])h 177 1648([Kn)s -1(uth84])h 177 1723([Lamp)s 1(ort86])h 177 1847([Rabino)s -1(witz90])h 177 1972([Ramsey89])s 177 2096([T)s -4(arjan72])h 177 2221([USDOD83])s cmr10.300 sf 342 851(Australian)s 20(Standard)h 21(AS)h 20(3955-1991,)h 19(\\Programm)h -1(ing)h 18(Languages)h 20(|)h 20(C",)h 20(\(ISBN:)h 20(0-7262-)h 177 901(6970-0\),)s 16(12)h 17(July)h 17(1991.)h 27(Iden)h -1(tical)h 17(to:)h 24(In)h -1(ternational)h 17(Standard)h 17(ISO/IEC)h 18(9899:)h 23(1990)h 16(Programm)h -1(ing)h 177 951(Languages)s 14(|)h 13(C.)h 427 1025(Ben)s -1(tley)h 16(J.,)h 16(\\Programm)h -1(i)h -1(ng)h 14(P)h -1(earls:)h 22(Literate)h 16(Programmi)h -1(ng",)h 274 1075(,)s 13(V)h -3(ol.)h 13(29,)h 12(No.)h 14(5,)h 13(pp.)h 13(364{369,)h 12(1986.)h 388 1150(Hoare)s 10(C.A.R.,)h 9(\\The)h 10(Emp)h 1(eror's)h 10(Old)h 10(Clothes",)h 10(T)h -3(uring)h 10(Aw)h -1(ard)h 10(Lecture,)h 12(1980,)h 10(from)h 8(\\A)h -1(CM)h 177 1200(T)s -3(uring)h 15(Aw)h -1(ard)h 15(Lectures:)h 24(The)h 16(First)h 15(Tw)h -1(en)h -1(t)h -1(y)h 16(Y)h -3(ears)h 16(1966{1985",)h 13(A)h -1(CM)h 15(Press,)h 17(New)h 17(Y)h -3(ork,)h 15(\(ISBN:)h 15(0-)h 177 1249(201-07794-9\),)s 11(1987)h 13(\(see)h 15(p.)h 14(155\).)h 415 1324(Horton)s 14(M.R.,)h 12(\\P)h -1(ortable)h 14(C)h 14(Soft)h -1(w)h -1(are",)h 12(Pren)h -1(tice)h 16(Hall,)h 12(\(ISBN:)h 14(0-13-868050-)h -1(7\),)h 12(1990.)h 487 1399(Kernighan)s 17(B.W.,)h 17(Ritc)h -1(hie)h 16(D.M.,)h 16(\\The)h 17(C)h 17(Programm)h -1(ing)h 14(Language",)h 17(\(second)h 18(edi-)h 177 1449(tion,\\ANSI)s 13(C"\),)h 13(Pren)h -1(tice)h 16(Hall,)h 12(\(ISBN:)h 14(0-13-110362-)h -1(8\),)h 12(1988.)h 401 1523(Kn)s -1(uth)h 15(D.E.,)h 14(\\The)h 15(WEB)h 15(System)h 14(of)h 15(Structured)h 16(Do)h 1(cumen)h -1(tation",)h 13(\(W)h -3(eb)h 15(User)h 16(Man)h -1(ual,)h 177 1573(V)s -3(ersion)h 14(2.5,)h 13(No)h -1(v)h -1(em)h -1(b)h 1(er,)h 12(1983\),)h 13(Stanford)h 13(Univ)h -1(ersit)h -1(y)h -3(,)h 13(1983.)h 399 1648(Kn)s -1(uth)h 15(D.E.,)h 12(\\The)h 14(T)h 767 1657(E)s 790 1648(Xb)s 1(o)h 1(ok",)h 13(Addison-W)h -3(esley)h -3(,)h 13(\(ISBN:)h 14(0-201-13448-)h -1(9\),)h 12(1984.)h 449 1723(Lamp)s 1(ort)h 16(L.,)h 16(\\L)h 4(T)h 765 1736(E)s 788 1723(X:)s 16(A)h 16(Do)h 1(cumen)h -1(t)h 16(Preparation)h 17(System",)h 16(Addison-W)h -3(esley)h -3(,)h 16(\(ISBN:)h 177 1773(0-201-15790-)s -1(X\),)h 12(1986.)h 504 1847(Rabino)s -1(witz)h 16(H.,)h 17(Sc)h -1(haap)h 17(C.,)h 18(\\P)h -1(ortable)h 17(C",)h 16(Pren)h -1(tice)h 19(Hall,)h 16(\(ISBN:0-13-685967-4\))h 177 1897(1990.)s 438 1972(Ramsey)s 21(N.,)h 24(\\W)h -3(ea)h -1(ving)h 21(a)h 22(Language-Indep)h 1(enden)h -1(t)h 23(WEB",)h 274 2022(,)s 13(V)h -3(ol.)h 13(32,)h 12(No.)h 14(9,)h 13(pp.)h 13(1051{1055,)h 11(1989.)h 404 2096(T)s -3(arjan)h 15(R.E.,)h 16(\\Depth-First)h 16(Searc)h -1(h)h 18(and)h 16(Linear)h 16(Graph)h 16(Algorithms",)h 374 2146(,)s 14(V)h -3(ol.)h 12(1,)h 13(No.)h 14(2,)h 13(pp.)h 13(146{160,)h 12(June)h 15(1972.)h 442 2221(\\The)s 19(Programm)h -1(ing)h 16(Language)h 18(Ada)h 18(Reference)h 20(Man)h -1(ual",)h 18(American)h 18(National)h 17(Stan-)h 177 2271(dards)s 15(Institute)h 14(Inc,)h 14(ANSI/MIL-STD-1815A-1983,)h 11(1983.)h 1042 2940(57)s 58 @eop 59 @bop0 cmbx10.746 sf [<7FFFFF801FFFFF007FFFFF801FFFFF007FFFFF801FFFFF007FFFFF801FFFFF007FFFFF 801FFFFF00007FF80001FF0000007FFC0001FC0000003FFE0003F80000001FFF0007F000 00000FFF0007E000000007FF800FC000000003FFC01F8000000003FFE03F8000000001FF F07F0000000000FFF8FE00000000007FF9FC00000000003FFFF800000000003FFFF00000 0000001FFFE000000000000FFFC0000000000007FFC0000000000003FFC0000000000001 FFE0000000000001FFF0000000000001FFF8000000000003FFFC000000000003FFFE0000 00000007FFFE00000000000FEFFF00000000001FCFFF80000000003F87FFC0000000007F 03FFE000000000FE01FFE000000001FC00FFF000000001F8007FF800000003F0007FFC00 000007F0003FFE0000000FE0001FFF0000001FC0000FFF0000003F800007FF800000FF80 0007FFC000FFFFF8003FFFFFC0FFFFF8003FFFFFC0FFFFF8003FFFFFC0FFFFF8003FFFFF C0FFFFF8003FFFFFC0> 64 46 -2 45 63] 120 dc cmr10.300 sf [<7FFFFFC0FFFFFFE0000000000000000000000000000000000000000000000000000000 0000000000FFFFFFE07FFFFFC0> 32 12 -2 15 32] 61 dc [<003F800000C0600003001800040004000800020010000100201F00802070808040E040 4040C0384041C03840818038208380382083803820838038208380382083803820818038 2041C0382040C0384040E0784020709880201F0F00100000000800000004000000030001 E000C01F80003FF000> 32 29 -2 28 32] 64 dc [<7FFFF07C01F07001E06003C06003C0400780400F80400F00401E00001E00003C00007C 0000780000F00000F00001E00003E00003C0100780100780100F00101F00301E00203C00 203C00607800E0F803E0FFFFE0> 24 28 -2 27 25] 90 dc 59 @bop1 cmbx10.746 sf 177 279(Index)s cmr10.300 sf 177 487(.cld)s 14(\014le)h 13(18)h 177 537(==)s 15(14)h 177 587(@M)s 14(23)h 177 637(@Z)s 15(23)h 177 687(abbreviations)s 14(iden)h -1(ti\014er)h 14(28)h 177 737(ac)s -1(kno)h -1(wledgemen)h -1(ts)h 13(7)h 177 787(Ada)s 14(18)h 177 837(Ada)s 14(27)h 177 886(Ada)s 14(7)h 177 936(adding)s 13(features)h 15(36)h 177 986(Adelaide)s 14(Univ)h -1(ersit)h -1(y)h 14(27)h 177 1036(analyser)s 14(45)h 177 1086(Andrew)s 15(T)h -3(rev)h -1(orro)h -1(w)h 14(9)h 177 1136(ANSI)s 14(28)h 177 1186(ANSI)s 14(57)h 177 1236(an)s -1(tiquated)h 14(features)h 15(43)h 177 1286(ASCI)s 1(I)h 14(mnemoni)h -1(cs)h 13(45)h 177 1336(asking)s 13(for)h 14(trouble)h 14(28)h 177 1386(authorit)s -1(y)h 13(design)h 15(36)h 177 1436(authorit)s -1(y)h 13(securit)h -1(y)h 15(36)h 177 1486(a)s -1(v)h -2(ailabil)h -1(it)h -1(y)h 11(program)h 13(37)h 177 1536(bac)s -1(kw)h -1(ards)h 14(compatibili)h -1(t)h -1(y)h 12(11)h 177 1586(Barry)s 15(Dwy)h -1(er)h 14(7)h 177 1636(Begg)s 14(Jerem)h -1(y)h 14(7)h 177 1686(Ben)s -1(tley)h 15(Jon)h 14(11)h 177 1736(Ben)s -1(tley86)h 14(11)h 177 1786(Ben)s -1(tley86)h 14(57)h 177 1836(blank)s 13(inden)h -1(tation)h 14(12)h 177 1886(blank)s 13(inden)h -1(tation)h 14(12)h 177 1935(break)s -1(out,)h 14(GNU)h 13(41)h 177 1985(Brissenden)s 16(Roger)h 14(7)h 177 2035(c)s -1(hanges)h 15(dangers)h 14(35)h 177 2085(co)s 1(ding)h 14(st)h -1(yle)h 14(28)h 177 2135(comma)s -1(nd)h 12(in)h -1(terface)h 15(43)h 177 2185(comma)s -1(nd)h 12(in)h -1(terpreter)h 16(43)h 177 2235(comma)s -1(nd)h 12(line)h 14(in)h -1(terface)h 14(design)h 14(goals)h 13(19)h 177 2285(comma)s -1(nd)h 12(line)h 14(in)h -1(terface)h 14(18)h 177 2335(comma)s -1(nd)h 12(setall)h 14(43)h 177 2385(commen)s -1(t)h 12(duplication)h 13(18)h 177 2435(Comm)s -2(unicati)h -1(ons)h 12(of)h 14(the)h 14(A)h -1(CM)h 14(11)h 177 2485(compatibili)s -1(t)h -1(y)h 12(bac)h -1(kw)h -1(ards)h 14(11)h 177 2535(compiler)s 13(ThinkC)h 13(30)h 177 2585(compiler)s 13(35)h 177 2635(conditionals)s 13(44)h 177 2685(con)s -1(tiguous)h 14(mem)h -1(ory)h 12(45)h 177 2735(cop)s -1(yrigh)h -1(t)h 14(la)h -1(w)h 13(38)h 177 2785(cop)s -1(yrigh)h -1(t)h 14(notice)h 14(1)h 177 2835(cop)s -1(yrigh)h -1(t)h 14(38)h 1136 487(correctness)s 16(47)h 1136 537(coun)s -1(ting)h 13(diagnostic)h 13(43)h 1136 587(cross)s 15(references)h 16(46)h 1136 637(dangers)s 14(c)h -1(hanges)h 15(35)h 1136 687(dangers)s 14(inden)h -1(tation)h 13(13)h 1136 737(dangers)s 14(languages)h 14(35)h 1136 787(Da)s -1(vid)h 12(Hulse)h 15(27)h 1136 837(Da)s -1(vid)h 12(Hulse)h 15(7)h 1136 886(DCL)s 13(13)h 1136 936(deriv)s -1(ed)h 14(w)h -1(ork)h 14(38)h 1136 986(design)s 14(authorit)h -1(y)h 13(36)h 1136 1036(design)s 14(F)h -3(unnelW)h -3(eb)h 13(11)h 1136 1086(design)s 14(goals)h 13(comm)h -1(and)h 12(line)h 13(in)h -1(terface)h 15(19)h 1136 1136(design)s 14(language)h 13(44)h 1136 1186(detection)s 15(recursion)h 15(45)h 1136 1236(diagnostic)s 13(coun)h -1(ting)h 13(43)h 1136 1286(diagnostic)s 13(messages)h 14(25)h 1136 1336(diagnostics)s 13(47)h 1136 1386(do)s 1(cumen)h -1(t)h 13(structure)h 16(macro)h 13(structure)h 16(23)h 1136 1436(do)s 1(cumen)h -1(t)h 13(structure)h 16(16)h 1136 1486(do)s 1(cumen)h -1(t)h 13(structure)h 16(23)h 1136 1536(do)s 1(cumen)h -1(tation)h 12(out)h 14(of)h 13(date)h 15(18)h 1136 1586(do)s 1(cumen)h -1(tation)h 12(43)h 1136 1636(Donald)s 12(Kn)h -1(uth)h 15(11)h 1136 1686(Donald)s 12(Kn)h -1(uth)h 15(7)h 1136 1736(duplication)s 12(commen)h -1(t)h 12(18)h 1136 1786(Dwy)s -1(er)h 14(Barry)h 14(7)h 1136 1836(e\016ciency)s 14(47)h 1136 1886(EOL)s 14(represen)h -1(tation)h 15(45)h 1136 1935(example)s 12(o\016cial)h 13(43)h 1136 1985(extensions)s 15(\014lename)h 12(20)h 1136 2035(factor)s 14(glue)h 13(46)h 1136 2085(features)s 15(adding)h 13(36)h 1136 2135(features)s 15(an)h -1(tiquated)h 13(43)h 1136 2185(features)s 15(mo)h 1(di\014catio)h -1(n)h 12(35)h 1136 2235(features)s 15(remo)h -1(ving)h 12(35)h 1136 2285(\014le)s 14(.cld)h 13(18)h 1136 2335(\014le)s 14(extension)h 14(protection)h 15(37)h 1136 2385(\014le)s 14(mark)h -1(ers)h 13(44)h 1136 2435(\014le)s 14(names)h 13(19)h 1136 2485(\014le)s 14(names)h 13(21)h 1136 2535(\014le)s 14(signature)h 14(44)h 1136 2585(\014lename)s 12(extensions)h 15(20)h 1136 2635(\014lename)s 12(inheritance)h 15(20)h 1136 2685(\014lenames)s 13(length)h 14(29)h 1136 2735(\014lenames)s 13(p)h 1(ortable)h 14(21)h 1136 2785(formal)s 11(parameter)h 14(list)h 13(44)h 1136 2835(F)s -3(unnelW)h -3(eb)h 13(design)h 14(11)h 1042 2940(58)s 59 @eop 60 @bop0 60 @bop1 cmr10.300 sf 177 42(F)s -3(unnelW)h -3(eb)h 14(future)h 14(43)h 177 91(F)s -3(unnelW)h -3(eb)h 14(history)h 13(27)h 177 141(F)s -3(unnelW)h -3(eb)h 14(impl)h -1(em)h -1(en)h -1(tation)h 12(27)h 177 191(F)s -3(unnelW)h -3(eb)h 14(manag)h -1(em)h -1(en)h -1(t)h 13(39)h 177 241(F)s -3(unnelW)h -3(eb)h 14(mo)h 1(di\014catio)h -1(n)h 12(35)h 177 291(F)s -3(unnelW)h -3(eb)h 14(motiv)h -3(atio)h -1(n)h 12(11)h 177 341(F)s -3(unnelW)h -3(eb)h 14(o\016cial)h 12(39)h 177 391(F)s -3(unnelW)h -3(eb)h 14(past)h 14(use)h 14(27)h 177 441(F)s -3(unnelW)h -3(eb)h 14(protection)h 14(37)h 177 490(F)s -3(unnelW)h -3(eb)h 14(syn)h -1(tax)h 13(14)h 177 540(F)s -3(unnelW)h -3(eb)h 14(V1)h 13(11)h 177 590(F)s -3(unnelW)h -3(eb)h 14(v)h -1(ersion)h 14(1)h 13(27)h 177 640(F)s -3(unnelW)h -3(eb)h 14(v)h -1(ersion)h 14(2)h 13(27)h 177 690(F)s -3(unnelW)h -3(eb)h 14(v)h -1(ersion)h 14(3)h 13(27)h 177 740(F)s -3(unnelW)h -3(eb)h 14(writing)h 13(itself)h 13(28)h 177 790(future)s 15(F)h -3(unnelW)h -3(eb)h 13(43)h 177 840(genealogy)s 13(program)h 13(36)h 177 889(generic)s 15(t)h -1(yp)h 1(esetter)h 16(46)h 177 939(glue)s 14(factor)h 14(46)h 177 989(GNU)s 14(break)h -1(out)h 14(41)h 177 1039(GNU)s 14(license)h 15(35)h 177 1089(GNU)s 14(license)h 15(39)h 177 1139(GNU)s 14(License)h 15(49)h 177 1189(GNU)s 14(v)h -1(ersion)h 14(41)h 177 1239(Hac)s -1(k)h -1(ett)h 15(Simon)h 12(7)h 177 1288(headings)s 14(16)h 177 1338(heap)s 14(memory)h 12(29)h 177 1388(hierarc)s -1(hical)h 14(structure)h 16(23)h 177 1438(history)s 14(F)h -3(unnelW)h -3(eb)h 13(27)h 177 1488(Hoare80)s 14(36)h 177 1538(Hoare80)s 14(57)h 177 1588(Horton90)s 14(28)h 177 1638(Horton90)s 14(57)h 177 1687(Hulse)s 15(Da)h -1(vid)h 12(27)h 177 1737(Hulse)s 15(Da)h -1(vid)h 12(7)h 177 1787(iden)s -1(ti\014er)h 14(abbreviations)h 14(28)h 177 1837(iden)s -1(ti\014er)h 14(28)h 177 1887(implem)s -1(en)h -1(tation)h 12(F)h -3(unnelW)h -3(eb)h 13(27)h 177 1937(include)s 14(\014le)h 14(suppression)h 15(46)h 177 1987(inden)s -1(tation)h 13(blank)h 14(12)h 177 2037(inden)s -1(tation)h 13(dangers)h 15(13)h 177 2086(inden)s -1(tation)h 13(no)h 14(12)h 177 2136(inden)s -1(tation)h 13(text)h 15(12)h 177 2186(inden)s -1(tation)h 13(text)h 15(30)h 177 2236(inden)s -1(tation)h 13(text)h 15(45)h 177 2286(inden)s -1(tation)h 13(12)h 177 2336(inden)s -1(tation)h 13(12)h 177 2386(inden)s -1(ted)h 15(macro)h 12(call)h 13(12)h 177 2436(index)s 14(program)h 12(43)h 177 2486(inheritance)s 15(\014lename)h 12(20)h 177 2535(in)s -1(terface)h 15(comm)h -1(and)h 12(line)h 13(18)h 177 2585(in)s -1(terface)h 15(comm)h -1(and)h 12(43)h 177 2635(in)s -1(terpreter)h 16(comm)h -1(and)h 12(43)h 177 2685(in)s -1(terpreter)h 16(shell)h 14(43)h 177 2735(in)s -1(v)h -1(o)h 1(cations)h 13(n)h -1(um)h -1(b)h 1(er)h 13(22)h 177 2785(issues)s 15(miscellaneous)h 13(18)h 177 2835(Jerem)s -1(y)h 14(Begg)h 14(7)h 1136 42(Jon)s 14(Ben)h -1(tley)h 14(11)h 1136 91(Kernighan88)s 13(28)h 1136 141(Kernighan88)s 13(57)h 1136 191(Kn)s -1(uth)h 14(Donald)h 13(11)h 1136 241(Kn)s -1(uth)h 14(Donald)h 13(7)h 1136 291(Kn)s -1(uth83)h 13(11)h 1136 341(Kn)s -1(uth83)h 13(57)h 1136 391(Kn)s -1(uth84)h 13(57)h 1136 441(Kn)s -1(uth84)h 13(9)h 1136 490(Lamp)s 1(ort86)h 12(57)h 1136 540(Lamp)s 1(ort86)h 12(9)h 1136 590(language)s 13(design)h 14(44)h 1136 640(languages)s 13(dangers)h 15(35)h 1136 690(LaT)s -3(eX)h 13(9)h 1136 740(LaT)s -3(eX)h 13(9)h 1136 790(la)s -1(w)h 13(cop)h -1(yrigh)h -1(t)h 13(38)h 1136 840(leak)s -2(age)h 13(mem)h -1(ory)h 12(30)h 1136 889(length)s 13(\014lenames)h 14(29)h 1136 939(license)s 14(GNU)h 14(35)h 1136 989(license)s 14(GNU)h 14(39)h 1136 1039(License)s 15(GNU)h 13(49)h 1136 1089(license)s 14(38)h 1136 1139(lister)s 14(46)h 1136 1189(Macin)s -1(tosh)h 14(29)h 1136 1239(Macin)s -1(tosh)h 14(30)h 1136 1288(Macin)s -1(tosh)h 14(9)h 1136 1338(macro)s 12(call)h 13(syn)h -1(tax)h 14(16)h 1136 1388(macro)s 12(de\014nition)h 14(syn)h -1(tax)h 14(14)h 1136 1438(macro)s 12(structure)h 16(do)h 1(cumen)h -1(t)h 14(structure)h 16(23)h 1136 1488(macro)s 12(structure)h 16(23)h 1136 1538(mak)s -1(e)h 12(44)h 1136 1588(mall)s -1(o)h 1(c)h 12(29)h 1136 1638(managem)s -1(en)h -1(t)h 12(F)h -3(unnelW)h -3(eb)h 13(39)h 1136 1687(man)s -1(ual)h -1(s)h 12(mo)h 1(difying)h 11(38)h 1136 1737(mapp)s 1(er)h 13(44)h 1136 1787(mark)s -1(ers)h 13(\014le)h 14(44)h 1136 1837(mem)s -1(ory)h 12(con)h -1(tiguous)h 14(45)h 1136 1887(mem)s -1(ory)h 12(heap)h 14(29)h 1136 1937(mem)s -1(ory)h 12(leak)h -2(age)h 13(30)h 1136 1987(mem)s -1(ory)h 12(pac)h -1(k)h -2(age)h 14(29)h 1136 2037(mem)s -1(ory)h 12(stac)h -1(k)h 14(30)h 1136 2086(mem)s -1(ory)h 12(static)h 14(30)h 1136 2136(mem)s -1(ory)h 12(use)h 15(of)h 13(29)h 1136 2186(messages)s 14(diagnostic)h 13(25)h 1136 2236(miscellaneous)s 12(issues)h 15(18)h 1136 2286(mnem)s -1(onics)h 12(ASCI)h 1(I)h 14(45)h 1136 2336(mo)s 1(di\014catio)h -1(n)h 12(features)h 15(35)h 1136 2386(mo)s 1(di\014catio)h -1(n)h 12(F)h -3(unnelW)h -3(eb)h 14(35)h 1136 2436(mo)s 1(dif)h -1(ying)h 12(man)h -1(ual)h -1(s)h 12(38)h 1136 2486(motiv)s -3(atio)h -1(n)h 12(F)h -3(unnelW)h -3(eb)h 14(11)h 1136 2535(MSDOS)s 14(29)h 1136 2585(names)s 13(\014le)h 14(19)h 1136 2635(names)s 13(\014le)h 14(21)h 1136 2685(naming)s 11(p)h 1(oin)h -1(ters)h 15(29)h 1136 2735(naming)s 11(t)h -1(yp)h 1(es)h 15(29)h 1136 2785(no)s 13(inden)h -1(tation)h 14(12)h 1136 2835(no)s 13(inden)h -1(tation)h 14(12)h 1042 2940(59)s 60 @eop 61 @bop0 61 @bop1 cmr10.300 sf 177 42(notice)s 14(cop)h -1(yrigh)h -1(t)h 14(1)h 177 91(n)s -1(um)h -1(b)h 1(er)h 13(in)h -1(v)h -1(o)h 1(cations)h 13(22)h 177 141(n)s -1(um)h -1(b)h 1(er)h 13(output)h 14(\014les)h 15(12)h 177 191(n)s -1(um)h -1(b)h 1(ering)h 13(section)h 14(23)h 177 241(Occam's)s 13(razor)h 15(12)h 177 291(o\016cial)s 13(example)h 12(43)h 177 341(o\016cial)s 13(F)h -3(unnelW)h -3(eb)h 13(39)h 177 391(options)s 14(43)h 177 441(out)s 14(of)h 13(date)h 14(do)h 1(cumen)h -1(tation)h 13(18)h 177 490(output)s 14(\014les)h 14(n)h -1(um)h -1(b)h 1(er)h 14(12)h 177 540(OzT)s -3(eX)h 15(9)h 177 590(pac)s -1(k)h -2(age)h 14(mem)h -1(ory)h 12(29)h 177 640(parameter)s 14(list)h 13(formal)h 12(44)h 177 690(parameterized)s 14(macro)h 13(call)h 13(syn)h -1(tax)h 14(16)h 177 740(parameterized)s 14(macro)h 13(de\014nitions)h 14(syn)h -1(tax)h 14(15)h 177 790(parser)s 15(45)h 177 840(P)s -1(ascal)h 14(12)h 177 889(past)s 14(use)h 15(F)h -3(unnelW)h -3(eb)h 13(27)h 177 939(Ph.D.)s 13(27)h 177 989(p)s 1(oin)h -1(ters)h 15(naming)h 11(29)h 177 1039(p)s 1(ortabilit)h -1(y)h 13(28)h 177 1089(p)s 1(ortable)h 14(\014lenames)h 13(21)h 177 1139(pragma)s 12(syn)h -1(tax)h 14(44)h 177 1189(pragma)s 12(v)h -1(ersion)h 14(45)h 177 1239(preface)s 15(5)h 177 1288(presen)s -1(tation)h 15(notes)h 15(9)h 177 1338(program)s 12(a)h -1(v)h -2(ailabil)h -1(it)h -1(y)h 12(37)h 177 1388(program)s 12(genealogy)h 14(36)h 177 1438(program)s 12(index)h 14(43)h 177 1488(programm)s -1(ing)h 11(p)h 1(earls)h 15(11)h 177 1538(protection)s 15(\014le)h 13(extension)h 15(37)h 177 1588(protection)s 15(F)h -3(unnelW)h -3(eb)h 13(37)h 177 1638(Rabino)s -1(witz90)h 12(28)h 177 1687(Rabino)s -1(witz90)h 12(28)h 177 1737(Rabino)s -1(witz90)h 12(57)h 177 1787(Ramsey89)s 12(46)h 177 1837(Ramsey89)s 12(57)h 177 1887(recursion)s 15(detection)h 15(45)h 177 1937(recursion)s 15(test)h 15(43)h 177 1987(reference)s 1(s)h 16(cross)h 15(46)h 177 2037(reference)s 1(s)h 16(57)h 177 2086(regression)s 15(testing)h 15(18)h 177 2136(remo)s -1(ving)h 12(features)h 15(35)h 177 2186(representation)s 15(EOL)h 14(45)h 177 2236(Rob)s 1(ert)h 14(Endre)h 15(T)h -3(arjan)h 13(45)h 177 2286(Roger)s 14(Brissenden)h 16(7)h 177 2336(Ross)s 14(William)h -2(s)h 12(1)h 177 2386(scanner)s 15(44)h 177 2436(section)s 15(n)h -1(um)h -1(b)h 1(ering)h 12(23)h 177 2486(section)s 15(syn)h -1(tax)h 14(44)h 177 2535(sections)s 15(16)h 177 2585(securit)s -1(y)h 15(authorit)h -1(y)h 13(36)h 177 2635(setall)s 14(comm)h -1(and)h 12(43)h 177 2685(shell)s 14(in)h -1(terpreter)h 16(43)h 177 2735(signature)s 14(\014le)h 14(44)h 177 2785(Simon)s 12(Hac)h -1(k)h -1(ett)h 15(7)h 177 2835(size)s 15(stac)h -1(k)h 14(30)h 1136 42(South)s 11(Australian)h 10(Go)h -1(v)h -1(ernmen)h -1(t)h 10(Departmen)h -1(t)h 10(of)h 1302 91(Lands)s 14(28)h 1136 141(sp)s 1(eed)h 15(47)h 1136 191(spider)s 14(46)h 1136 241(stac)s -1(k)h 14(memo)h -1(ry)h 12(30)h 1136 291(stac)s -1(k)h 14(size)h 15(30)h 1136 341(static)s 14(memo)h -1(ry)h 12(30)h 1136 391(static)s 14(v)h -2(ariables)h 13(30)h 1136 440(strength)s 15(t)h -1(yp)h 1(esetting)h 15(46)h 1136 490(structure)s 16(do)h 1(cumen)h -1(t)h 13(16)h 1136 540(structure)s 16(do)h 1(cumen)h -1(t)h 13(23)h 1136 590(structure)s 16(hierarc)h -1(hical)h 13(23)h 1136 640(structure)s 16(macro)h 12(23)h 1136 690(st)s -1(yle)h 14(co)h 1(ding)h 13(28)h 1136 740(suite)s 14(test)h 15(47)h 1136 790(suppression)s 15(include)h 14(\014le)h 14(46)h 1136 840(syn)s -1(tax)h 13(F)h -3(unnelW)h -3(eb)h 14(14)h 1136 889(syn)s -1(tax)h 13(macro)h 13(call)h 13(16)h 1136 939(syn)s -1(tax)h 13(macro)h 13(de\014nition)h 14(14)h 1136 989(syn)s -1(tax)h 13(parameterized)h 15(macro)h 12(call)h 13(16)h 1136 1039(syn)s -1(tax)h 13(parameterized)h 15(macro)h 12(de\014nitions)h 14(15)h 1136 1089(syn)s -1(tax)h 13(pragma)h 12(44)h 1136 1139(syn)s -1(tax)h 13(section)h 15(44)h 1136 1189(table)s 13(of)h 14(con)h -1(ten)h -1(ts)h 15(45)h 1136 1239(tangle)s 13(45)h 1136 1288(T)s -3(arjan)h 13(Rob)h 1(ert)h 14(Endre)h 15(45)h 1136 1338(T)s -3(arjan72)h 12(45)h 1136 1388(T)s -3(arjan72)h 12(57)h 1136 1438(test)s 15(recursion)h 15(43)h 1136 1488(test)s 15(suite)h 14(47)h 1136 1538(testing)s 14(regression)h 15(18)h 1136 1588(text)s 14(inden)h -1(tation)h 13(12)h 1136 1638(text)s 14(inden)h -1(tation)h 13(12)h 1136 1687(text)s 14(inden)h -1(tation)h 13(30)h 1136 1737(text)s 14(inden)h -1(tation)h 13(45)h 1136 1787(T)s -3(eX)h 14(23)h 1136 1837(T)s -3(eX)h 14(9)h 1136 1887(ThinkC)s 13(compiler)h 12(30)h 1136 1937(trademark)s 13(36)h 1136 1987(T)s -3(rev)h -1(orro)h -1(w)h 13(Andrew)h 15(9)h 1136 2037(trouble)s 14(asking)h 13(for)h 13(28)h 1136 2086(t)s -1(yp)h 1(es)h 14(naming)h 12(29)h 1136 2136(t)s -1(yp)h 1(esetter)h 16(generic)h 15(46)h 1136 2186(t)s -1(yp)h 1(esetting)h 14(strength)h 16(46)h 1136 2236(t)s -1(yp)h 1(esetting)h 14(9)h 1136 2286(Univ)s -1(ersit)h -1(y)h 13(Adelaide)h 14(27)h 1136 2336(Unix)s 13(36)h 1136 2386(USDOD83)s 13(27)h 1136 2436(USDOD83)s 13(57)h 1136 2485(use)s 14(of)h 14(mem)h -1(ory)h 12(29)h 1136 2535(v)s -2(ariables)h 13(static)h 14(30)h 1136 2585(v)s -2(ax)h 13(vms)h 12(18)h 1136 2635(v)s -1(ersion)h 14(GNU)h 13(41)h 1136 2685(v)s -1(ersion)h 14(pragma)h 12(45)h 1136 2735(video)s 13(game)h 13(35)h 1136 2785(vms)s 12(v)h -2(ax)h 13(18)h 1136 2835(w)s -1(ea)h -1(v)h -1(e)h 14(45)h 1042 2940(60)s 61 @eop 62 @bop0 62 @bop1 cmr10.300 sf 177 42(William)s -2(s)h 13(Ross)h 13(1)h 177 91(w)s -1(ork)h 14(38)h 177 141(writing)s 13(itself)h 14(F)h -3(unnelW)h -3(eb)h 13(28)h 1042 2940(61)s 62 @eop @end