Changeset 40 for downloads

Show
Ignore:
Timestamp:
10/07/05 07:27:35 (7 years ago)
Author:
svanleent
Message:

Implemented /sx and /sxi switches, added --> replacement for : and made
some additional examples. Also updated the documentation.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • downloads/dgrammar.ps

    r32 r40  
    22%%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software 
    33%%Title: dgrammar.dvi 
    4 %%Pages: 28 
     4%%Pages: 31 
    55%%PageOrder: Ascend 
    66%%BoundingBox: 0 0 596 842 
     
    99%DVIPSCommandLine: dvips dgrammar.dvi 
    1010%DVIPSParameters: dpi=600, compressed 
    11 %DVIPSSource:  TeX output 2005.10.02:080
     11%DVIPSSource:  TeX output 2005.10.07:131
    1212%%BeginProcSet: texc.pro 
    1313%! 
     
    301301A2485AA45EA26D5C007F151D163D6C6C02797F6C6D01F113F86C9026C003E1EBFFE06C90 
    30230226F81FC014F06C90B5487EC6ED001F011F01FC010713E0010101E090C8FC3C387CB641> 
    303 97 D<EB3FF0B5FCA51203C6FCB3A4923801FFE0030F13FE033FEBFFC092B612F002F301 
    304 017F913AF7F8003FFEDAFFE0EB0FFF03806D7F92C76C7F4A6E7F4A824A6E7FA2727EA285 
    305 A28584A31A80AC1A00A44E5AA36118FF616E4A5BA26E4A5B6E4A5B6F495BDACFC04990C7 
    306 FCDA87F0EB7FFC913A03FE03FFF849C6B612E0496D148049011F01FCC8FC90C7000313C0 
    307 41547BD24B>I<913801FFF8021FEBFF8091B612F0010315FC010F9038C00FFE903A1FFE 
    308 0001FFD97FFC491380D9FFF05B4817C048495B5C5A485BA2486F138091C7FC486F130070 
    309 5A4892C8FC5BA312FFAD127F7FA27EA2EF03E06C7F17076C6D15C07E6E140F6CEE1F806C 
    310 6DEC3F006C6D147ED97FFE5C6D6CEB03F8010F9038E01FF0010390B55A01001580023F49 
    311 C7FC020113E033387CB63C>I<4DB47E0407B5FCA5EE001F1707B3A4913801FFE0021F13 
    312 FC91B6FC010315C7010F9038E03FE74990380007F7D97FFC0101B5FC49487F4849143F48 
    313 4980485B83485B5A91C8FC5AA3485AA412FFAC127FA36C7EA37EA26C7F5F6C6D5C7E6C6D 
    314 5C6C6D49B5FC6D6C4914E0D93FFED90FEFEBFF80903A0FFFC07FCF6D90B5128F0101ECFE 
    315 0FD9003F13F8020301C049C7FC41547CD24B>I<913803FFC0023F13FC49B6FC010715C0 
    316 4901817F903A3FFC007FF849486D7E49486D7E4849130F48496D7E48178048497F18C048 
    317 8191C7FC4817E0A248815B18F0A212FFA490B8FCA318E049CAFCA6127FA27F7EA218E06C 
    318 EE01F06E14037E6C6DEC07E0A26C6DEC0FC06C6D141F6C6DEC3F806D6CECFF00D91FFEEB 
    319 03FE903A0FFFC03FF8010390B55A010015C0021F49C7FC020113F034387CB63D>I<ED3F 
    320 FC0203B5FC020F14C0023F14E09139FFF81FF0499038C03FF849EB807F49903800FFFC49 
    321 5A495AA2495AA2EE7FF8495AEE3FF0EE0FC093C7FCAEB712E0A526007FF8C8FCB3B3A700 
    322 7FB512FEA52E547CD329>I<DA3FFF14FF0103B5D8F00713C0010FDAFC1F13E0013FECFF 
    323 7F90267FFC0F9038FF9FF09026FFE001EBF83F48496C13E0484990387FF01F4890C7D83F 
    324 F813E0489338FC0FC0F0078048486E6CC7FCA2003F82A9001F5EA26C6C4A5AA26C5E6C6D 
    325 495A6C6D495A6C6D485BDAFC0F5B4890B6C8FCD803EF14FC01C314F02607C03F90C9FC91 
    326 CBFCA2120FA37FA213F813FE90B7FC6C16F817FF18C06C836C836C836D828448B9FC1207 
    327 4848C700031480D81FF8EC003F4848150748486F13C083485A83A56D5D007F18806D5D00 
    328 3F18006C6C4B5AD80FFEED1FFC6C6C6CEC7FF86C01E049485A6C01FE011F5B6C6CB71280 
    329 010F03FCC7FC010115E0D9000F01FCC8FC3C4F7CB543>I<EB3FF0B5FCA51203C6FCB3A4 
    330 EE1FFC93B512C0030314F0030F8092391FE07FFC92393F001FFE037C8003F07FDAF1E081 
    331 ECF3C0DAF7807F8502FFC7FC5CA25CA45CB3ACB6D8F807B612C0A542537BD24B>I<137F 
    332 497E000313E0487FA2487FA76C5BA26C5BC613806DC7FC90C8FCADEB3FF0B5FCA512017E 
    333 B3B3A6B612E0A51B547BD325>I<EB3FF0B5FCA512017EB3B3B3B1B612F0A51C537BD225> 
    334 108 D<D93FF0D91FFCEDFFE0B591B500C0010713FE030302F0011F6D7E030F6E017F8092 
    335 271FE07FFCD9FF037F922A3F001FFE01F8007F0003027C9126FF03E080C602F06DD90780 
    336 137FDAF1E0038FC77FDAF3C0159EDAF7806D01BC143F07FC8102FFC75C4A5EA24A5EA44A 
    337 5EB3ACB6D8F807B6D8C03FB512FEA567367BB570>I<D93FF0EB1FFCB591B512C0030314 
    338 F0030F8092391FE07FFC92393F001FFE0003027C80C602F07FDAF1E081ECF3C0DAF7807F 
    339 8502FFC7FC5CA25CA45CB3ACB6D8F807B612C0A542367BB54B>I<913801FFE0021F13FE 
    340 91B612C0010315F0010F9038807FFC903A1FFC000FFED97FF86D6C7E49486D7F48496D7F 
    341 48496D7F4A147F48834890C86C7EA24883A248486F7EA3007F1880A400FF18C0AC007F18 
    342 80A3003F18006D5DA26C5FA26C5F6E147F6C5F6C6D4A5A6C6D495B6C6D495B6D6C495BD9 
    343 3FFE011F90C7FC903A0FFF807FFC6D90B55A010015C0023F91C8FC020113E03A387CB643 
    344 >I<903A3FF001FFE0B5010F13FE033FEBFFC092B612F002F301017F913AF7F8007FFE00 
    345 03D9FFE0EB1FFFC602806D7F92C76C7F4A824A6E7F4A6E7FA2717FA285187F85A4721380 
    346 AC1A0060A36118FFA2615F616E4A5BA26E4A5B6E4A5B6F495B6F4990C7FC03F0EBFFFC91 
    347 26FBFE075B02F8B612E06F1480031F01FCC8FC030313C092CBFCB1B612F8A5414D7BB54B 
    348 >I<90397FE003FEB590380FFF80033F13E04B13F09238FE1FF89139E1F83FFC0003D9E3 
    349 E013FEC6ECC07FECE78014EF150014EE02FEEB3FFC5CEE1FF8EE0FF04A90C7FCA55CB3AA 
    350 B612FCA52F367CB537>114 D<903903FFF00F013FEBFE1F90B7FC120348EB003FD80FF8 
    351 1307D81FE0130148487F4980127F90C87EA24881A27FA27F01F091C7FC13FCEBFFC06C13 
    352 FF15F86C14FF16C06C15F06C816C816C81C681013F1580010F15C01300020714E0EC003F 
    353 030713F015010078EC007F00F8153F161F7E160FA27E17E07E6D141F17C07F6DEC3F8001 
    354 F8EC7F0001FEEB01FE9039FFC00FFC6DB55AD8FC1F14E0D8F807148048C601F8C7FC2C38 
    355 7CB635>I<143EA6147EA414FEA21301A313031307A2130F131F133F13FF5A000F90B6FC 
    356 B8FCA426003FFEC8FCB3A9EE07C0AB011FEC0F8080A26DEC1F0015806DEBC03E6DEBF0FC 
    357 6DEBFFF86D6C5B021F5B020313802A4D7ECB34>I<D93FF8913801FFC0B50207B5FCA500 
    358 03ED001FC61607B3AE5FA35FA2017F5D173B177B6D6C14F3DC01E313F06D6CD907C3EBFF 
    359 C0903A0FFFC03F836D90B51203010114FE6D6C13F8020701E091C7FC42377BB54B>I<B6 
    360 00F00107B5FCA5000101F8C8EA7FE06C6DED3F00A2017F163E6E157E013F167C6E15FC6D 
    361 5E6F13016D5E8117036D5E6F13076D5E6F130F6D5E6F131F6D93C7FC815F6E6C133E177E 
    362 023F147C6F13FC6E5C16816E5C16C3A26EEBE3E016E76E5C16FF6E5CA26E91C8FCA26F5A 
    363 A36F5AA26F5AA26F5AA26F5A6F5A40367DB447>I<B6D8E07FB5D8C003B512C0A5000101 
    364 F0C701F0C7381FF8006E027FED07E06C715DA26E023F150F017F705DA26E181F013F4B6C 
    365 92C7FC6E606D70143E94B5FC6F177E6D4A6E137C03C001F315FC6D715B160303E001E114 
    366 016D020702E05B03F013C06D71485A160F03F8D9807F13076D05F85B93381F003F03FC16 
    367 0F027F4902FC5BDBFE3E011F131F023F04FE90C8FC167EDBFF7C010F5B6E01FCECFF3E4C 
    368 6D137E6E5FA24C7F6E5F4C7F6E5FA24C7F6E5F4C147FA26E5F93C8123F6F5EA2033E6FC9 
    369 FC5A367DB461>I<B600F00107B5FCA5C601F8C8EA7FE06EED3F00A26D6C153E187E013F 
    370 167C6E15FC6D5E6F13016D5E6F13036D5E8117076D6D5C170F6D6D5C171F6D93C7FC6F5B 
    371 027F143E6F137E023F147C6F13FCA26E6D5A16816EEBC1F016C36E5C16E76E5C16FF6E5C 
    372 A26E91C8FCA36F5AA26F5AA26F5AA26F5AA26F5AA35E150F5E151F93C9FC5DD81FC0133E 
    373 486C137E486C137C486C13FC5D14015D14034A5A6C48485A49485A263FC07FCAFCEB81FE 
    374 6CB45A6C13F000035BC690CBFC404D7DB447>121 D E 
     30397 D<913801FFF8021FEBFF8091B612F0010315FC010F9038C00FFE903A1FFE0001FFD9 
     3047FFC491380D9FFF05B4817C048495B5C5A485BA2486F138091C7FC486F1300705A4892C8 
     305FC5BA312FFAD127F7FA27EA2EF03E06C7F17076C6D15C07E6E140F6CEE1F806C6DEC3F00 
     3066C6D147ED97FFE5C6D6CEB03F8010F9038E01FF0010390B55A01001580023F49C7FC0201 
     30713E033387CB63C>99 D<4DB47E0407B5FCA5EE001F1707B3A4913801FFE0021F13FC91B6 
     308FC010315C7010F9038E03FE74990380007F7D97FFC0101B5FC49487F4849143F48498048 
     3095B83485B5A91C8FC5AA3485AA412FFAC127FA36C7EA37EA26C7F5F6C6D5C7E6C6D5C6C6D 
     31049B5FC6D6C4914E0D93FFED90FEFEBFF80903A0FFFC07FCF6D90B5128F0101ECFE0FD900 
     3113F13F8020301C049C7FC41547CD24B>I<913803FFC0023F13FC49B6FC010715C0490181 
     3127F903A3FFC007FF849486D7E49486D7E4849130F48496D7E48178048497F18C0488191C7 
     313FC4817E0A248815B18F0A212FFA490B8FCA318E049CAFCA6127FA27F7EA218E06CEE01F0 
     3146E14037E6C6DEC07E0A26C6DEC0FC06C6D141F6C6DEC3F806D6CECFF00D91FFEEB03FE90 
     3153A0FFFC03FF8010390B55A010015C0021F49C7FC020113F034387CB63D>I<ED3FFC0203 
     316B5FC020F14C0023F14E09139FFF81FF0499038C03FF849EB807F49903800FFFC495A495A 
     317A2495AA2EE7FF8495AEE3FF0EE0FC093C7FCAEB712E0A526007FF8C8FCB3B3A7007FB512 
     318FEA52E547CD329>I<DA3FFF14FF0103B5D8F00713C0010FDAFC1F13E0013FECFF7F9026 
     3197FFC0F9038FF9FF09026FFE001EBF83F48496C13E0484990387FF01F4890C7D83FF813E0 
     320489338FC0FC0F0078048486E6CC7FCA2003F82A9001F5EA26C6C4A5AA26C5E6C6D495A6C 
     3216D495A6C6D485BDAFC0F5B4890B6C8FCD803EF14FC01C314F02607C03F90C9FC91CBFCA2 
     322120FA37FA213F813FE90B7FC6C16F817FF18C06C836C836C836D828448B9FC12074848C7 
     32300031480D81FF8EC003F4848150748486F13C083485A83A56D5D007F18806D5D003F1800 
     3246C6C4B5AD80FFEED1FFC6C6C6CEC7FF86C01E049485A6C01FE011F5B6C6CB71280010F03 
     325FCC7FC010115E0D9000F01FCC8FC3C4F7CB543>I<EB3FF0B5FCA51203C6FCB3A4EE1FFC 
     32693B512C0030314F0030F8092391FE07FFC92393F001FFE037C8003F07FDAF1E081ECF3C0 
     327DAF7807F8502FFC7FC5CA25CA45CB3ACB6D8F807B612C0A542537BD24B>I<137F497E00 
     3280313E0487FA2487FA76C5BA26C5BC613806DC7FC90C8FCADEB3FF0B5FCA512017EB3B3A6 
     329B612E0A51B547BD325>I<EB3FF0B5FCA512017EB3B3B3B1B612F0A51C537BD225>108 
     330D<D93FF0D91FFCEDFFE0B591B500C0010713FE030302F0011F6D7E030F6E017F8092271F 
     331E07FFCD9FF037F922A3F001FFE01F8007F0003027C9126FF03E080C602F06DD90780137F 
     332DAF1E0038FC77FDAF3C0159EDAF7806D01BC143F07FC8102FFC75C4A5EA24A5EA44A5EB3 
     333ACB6D8F807B6D8C03FB512FEA567367BB570>I<D93FF0EB1FFCB591B512C0030314F003 
     3340F8092391FE07FFC92393F001FFE0003027C80C602F07FDAF1E081ECF3C0DAF7807F8502 
     335FFC7FC5CA25CA45CB3ACB6D8F807B612C0A542367BB54B>I<913801FFE0021F13FE91B6 
     33612C0010315F0010F9038807FFC903A1FFC000FFED97FF86D6C7E49486D7F48496D7F4849 
     3376D7F4A147F48834890C86C7EA24883A248486F7EA3007F1880A400FF18C0AC007F1880A3 
     338003F18006D5DA26C5FA26C5F6E147F6C5F6C6D4A5A6C6D495B6C6D495B6D6C495BD93FFE 
     339011F90C7FC903A0FFF807FFC6D90B55A010015C0023F91C8FC020113E03A387CB643>I< 
     340903A3FF001FFE0B5010F13FE033FEBFFC092B612F002F301017F913AF7F8007FFE0003D9 
     341FFE0EB1FFFC602806D7F92C76C7F4A824A6E7F4A6E7FA2717FA285187F85A4721380AC1A 
     3420060A36118FFA2615F616E4A5BA26E4A5B6E4A5B6F495B6F4990C7FC03F0EBFFFC9126FB 
     343FE075B02F8B612E06F1480031F01FCC8FC030313C092CBFCB1B612F8A5414D7BB54B>I< 
     34490397FE003FEB590380FFF80033F13E04B13F09238FE1FF89139E1F83FFC0003D9E3E013 
     345FEC6ECC07FECE78014EF150014EE02FEEB3FFC5CEE1FF8EE0FF04A90C7FCA55CB3AAB612 
     346FCA52F367CB537>114 D<903903FFF00F013FEBFE1F90B7FC120348EB003FD80FF81307 
     347D81FE0130148487F4980127F90C87EA24881A27FA27F01F091C7FC13FCEBFFC06C13FF15 
     348F86C14FF16C06C15F06C816C816C81C681013F1580010F15C01300020714E0EC003F0307 
     34913F015010078EC007F00F8153F161F7E160FA27E17E07E6D141F17C07F6DEC3F8001F8EC 
     3507F0001FEEB01FE9039FFC00FFC6DB55AD8FC1F14E0D8F807148048C601F8C7FC2C387CB6 
     35135>I<143EA6147EA414FEA21301A313031307A2130F131F133F13FF5A000F90B6FCB8FC 
     352A426003FFEC8FCB3A9EE07C0AB011FEC0F8080A26DEC1F0015806DEBC03E6DEBF0FC6DEB 
     353FFF86D6C5B021F5B020313802A4D7ECB34>I<D93FF8913801FFC0B50207B5FCA50003ED 
     354001FC61607B3AE5FA35FA2017F5D173B177B6D6C14F3DC01E313F06D6CD907C3EBFFC090 
     3553A0FFFC03F836D90B51203010114FE6D6C13F8020701E091C7FC42377BB54B>I<B600F0 
     3560107B5FCA5000101F8C8EA7FE06C6DED3F00A2017F163E6E157E013F167C6E15FC6D5E6F 
     35713016D5E8117036D5E6F13076D5E6F130F6D5E6F131F6D93C7FC815F6E6C133E177E023F 
     358147C6F13FC6E5C16816E5C16C3A26EEBE3E016E76E5C16FF6E5CA26E91C8FCA26F5AA36F 
     3595AA26F5AA26F5AA26F5A6F5A40367DB447>I<B6D8E07FB5D8C003B512C0A5000101F0C7 
     36001F0C7381FF8006E027FED07E06C715DA26E023F150F017F705DA26E181F013F4B6C92C7 
     361FC6E606D70143E94B5FC6F177E6D4A6E137C03C001F315FC6D715B160303E001E114016D 
     362020702E05B03F013C06D71485A160F03F8D9807F13076D05F85B93381F003F03FC160F02 
     3637F4902FC5BDBFE3E011F131F023F04FE90C8FC167EDBFF7C010F5B6E01FCECFF3E4C6D13 
     3647E6E5FA24C7F6E5F4C7F6E5FA24C7F6E5F4C147FA26E5F93C8123F6F5EA2033E6FC9FC5A 
     365367DB461>I<007FB500F090387FFFFEA5C66C48C7000F90C7FC6D6CEC07F86D6D5C6D6D 
     366495A6D4B5A6F495A6D6D91C8FC6D6D137E6D6D5B91387FFE014C5A6E6C485A6EEB8FE06E 
     367EBCFC06EEBFF806E91C9FCA26E5B6E5B6F7E6F7EA26F7F834B7F4B7F92B5FCDA01FD7F03 
     368F87F4A486C7E4A486C7E020F7FDA1FC0804A486C7F4A486C7F02FE6D7F4A6D7F495A4948 
     3696D7F01076F7E49486E7E49486E7FEBFFF0B500FE49B612C0A542357EB447>I<B600F001 
     37007B5FCA5C601F8C8EA7FE06EED3F00A26D6C153E187E013F167C6E15FC6D5E6F13016D5E 
     3716F13036D5E8117076D6D5C170F6D6D5C171F6D93C7FC6F5B027F143E6F137E023F147C6F 
     37213FCA26E6D5A16816EEBC1F016C36E5C16E76E5C16FF6E5CA26E91C8FCA36F5AA26F5AA2 
     3736F5AA26F5AA26F5AA35E150F5E151F93C9FC5DD81FC0133E486C137E486C137C486C13FC 
     3745D14015D14034A5A6C48485A49485A263FC07FCAFCEB81FE6CB45A6C13F000035BC690CB 
     375FC404D7DB447>I E 
    375376%EndDVIPSBitmapFont 
    376 %DVIPSBitmapFont: Fg cmmi10 10.95 21 
    377 /Fg 21 123 df<127CB4FC13C0EA7FE0EA07F0EA01F81200137CA2133CA4137CA213F812 
     377%DVIPSBitmapFont: Fg cmmi10 10.95 22 
     378/Fg 22 123 df<127CB4FC13C0EA7FE0EA07F0EA01F81200137CA2133CA4137CA213F812 
    37837901EA07F0EA7FE0EAFFC01300127C0E167BAA19>45 D<121EEA7F80A2EAFFC0A4EA7F80A2 
    379380EA1E000A0A798919>58 D<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0 
     
    447448A2137EA213FEA25BA21201A25BA21203A25BA21207EC01C013E01403000F1480A2EBC007 
    4484491500140E141E5C000713385C3803E1E03801FF80D8003EC7FC1C3A7EB821>116 
    449 D<02F8130ED903FE131ED90FFF131C49EB803C49EBC0784914F090397E07F1E09038F800 
    450 FF49EB1FC049EB07800001EC0F006C48131E90C75A5D5D4A5A4A5A4A5A4AC7FC143E1478 
    451 5C495A495A495A49C8FC011E14E05B5B4913014848EB03C0485AD807F8EB078048B4131F 
    452 3A1F87E07F00391E03FFFE486C5B00785CD870005B00F0EB7FC048011FC7FC27297DA72A 
    453 >122 D E 
     450D<013EEE0380D9FF800107EB0FE02601C3E090381F801FD8038117F0380701F0000E153F 
     451001E1600D81C03160F003C170700384BEB03E0D87807147E00705B1801D8F00F14FE4A49 
     45214C01200131FDA800114034C1480133F140003031407494A1400137EA26001FE0107140E 
     453495C60A360150F017C5E017E011F14F0705B6D0139495A6D903970F8038090280FC0E07C 
     4540FC7FC903A03FFC01FFC903A007F0007F03C297EA741>119 D<02F8130ED903FE131ED9 
     4550FFF131C49EB803C49EBC0784914F090397E07F1E09038F800FF49EB1FC049EB07800001 
     456EC0F006C48131E90C75A5D5D4A5A4A5A4A5A4AC7FC143E14785C495A495A495A49C8FC01 
     4571E14E05B5B4913014848EB03C0485AD807F8EB078048B4131F3A1F87E07F00391E03FFFE 
     458486C5B00785CD870005B00F0EB7FC048011FC7FC27297DA72A>122 
     459D E 
    454460%EndDVIPSBitmapFont 
    455461%DVIPSBitmapFont: Fh cmitt10 10.95 25 
     
    12891295F03A03F8007FC0302A7AA833>120 D E 
    12901296%EndDVIPSBitmapFont 
    1291 %DVIPSBitmapFont: Fn cmbx10 10.95 58 
    1292 /Fn 58 122 df<EDFFF8020F13FF027F8049B612E001079038C01FF090390FFE0007D91F 
     1297%DVIPSBitmapFont: Fn cmbx10 10.95 59 
     1298/Fn 59 122 df<EDFFF8020F13FF027F8049B612E001079038C01FF090390FFE0007D91F 
    12931299F8497ED93FE0131F4948497E13FF5C5A91C7FCA2705A705AEE03C093C8FCA6EE03FCB8FC 
    12941300A50001903880001F160FB3AB007FD9FE03B512F0A534407EBF3A>12 
     
    139714036F5C6E153E70137E6E157C8218FC6E6D5B17016E5DEEF0036E5DEEF8076E5D16FC170F03 
    139814047F5CEEFE1F033F91C9FC705A6F133E17BE17FE6F5BA26F5BA26F5BA26F5BA36F5BA2705A 
    1399 A270CAFCA24A3F7EBD4F>I<007FB6013FB512F0A5D8001F01C0D9003FC7FC6D6D147E18 
    1400 FE6D6D5C6D6D495A6D4B5A6F13076D6D5C6E6C495A4D5A6EEB803F6E01C090C8FC6E147E 
    1401 705A6E13F16EEBF9F86EEBFBF0EEFFE0806F5B5F816F7F81836F7F81834B7F4B7F5D83DB 
    1402 3F3F7FED7E1F03FE804B6C7F4A486C7F4A487E0207814B6C7F4A487E4A4880023F6E7E92 
    1403 C76C7F027E804A8201016F7F4A6E7F495A49486E7F010F6F7F4A80B600C0017F90B5FCA5 
    1404 483E7DBD4F>88 D<B600FE020FB512C0A5C66C90C9381F80006D6D4BC7FC6D6D157EA26D 
    1405 6D5D6D6D4A5A816D4C5A6D6D4A5A816D4C5A6E6C4A5A6E7F4EC8FC6E6D137E6E7F606E6D 
    1406 485A6E13F84D5A6E6D485A6E13FE70485A6F495A6F139F05FFC9FC6F5B815F6F5B816F5B 
    1407 5FB3A20207B612F8A54A3E7EBD4F>I<003FB812E0A59126E0001F13C091C7148001FC5C 
    1408 01F04A1300495D4914FF4848495B5F90C75A4B5B007E5E5D4B5B007C5E5D4B90C7FC5E15 
    1409 FFC7485B5E4A5B5C5E4A5B5C5E4A90C8FC5C5D4A5A5B4BEB01F0495B5B495B5D49150349 
    1410 4914E092C7FC5B495A4A14075A4849140F5C48161F4849143F4A147F4816FF48495B91C7 
    1411 000713C048157FB9FCA5343E7ABD40>I<903807FFC0013F13F848B6FC48812607FE037F 
    1412 260FF8007F6DEB3FF0486C806F7EA36F7EA26C5A6C5AEA01E0C8FC153F91B5FC130F137F 
    1413 3901FFFE0F4813E0000F1380381FFE00485A5B485A12FF5BA4151F7F007F143F6D90387B 
    1414 FF806C6C01FB13FE391FFF07F36CEBFFE100031480C6EC003FD91FF890C7FC2F2B7DA933 
    1415 >97 D<13FFB5FCA512077EAFEDFFE0020713FC021FEBFF80027F80DAFF8113F09139FC00 
    1416 3FF802F06D7E4A6D7E4A13074A80701380A218C082A318E0AA18C0A25E1880A218005E6E 
    1417 5C6E495A6E495A02FCEB7FF0903AFCFF01FFE0496CB55AD9F01F91C7FCD9E00713FCC700 
    1418 0113C033407DBE3A>I<EC7FF00107B5FC011F14C0017F14E09039FFF01FF0489038800F 
    1419 F848EB001F4848EB3FFC120F485AA2485AA2007FEC1FF849EB0FF0ED03C000FF91C7FCAB 
    1420 127F7FA3003F153E7F001F157E6C6C147C6C6C14FC91388001F86C9038C003F0C69038F8 
    1421 1FE06DB512C0011F14800107EBFE009038007FF0272B7DA92E>I<EE07F8ED07FFA5ED00 
    1422 3F161FAFEC7FF0903807FFFE011FEBFF9F017F14DF9039FFF01FFF48EBC00348EB000148 
    1423 48EB007F485A001F153F5B123FA2127F5BA212FFAA127FA37F123FA26C6C147F120F6D14 
    1424 FF6C6C01037F6C6D48EBFFE06CEBF03F6C6CB512BF6D143F010713FC010001E0EBE00033 
    1425 407DBE3A>I<ECFFF0010713FE011F6D7E017F809039FFE07FE0489038801FF048496C7E 
    1426 48486D7E48486D7E121F491301003F81A2485A6F1380A212FFA290B7FCA401F0C9FCA512 
    1427 7FA27F123FEE0F806C7E161F6C6C15006C6C5C6C6D137E6C9038E001FC6C9038F80FF801 
    1428 3FB55A6D14C0010391C7FC9038007FF8292B7DA930>I<EC07FE91387FFF8049B512C001 
    1429 0714E090390FFE3FF0EB1FF090393FE07FF8EB7FC013FF1480A2489038003FF0ED1FE0ED 
    1430 0FC092C7FCAAB612E0A500010180C7FCB3AC007FEBFF80A525407DBF20>I<903A03FF80 
    1431 07F0013F9038F83FF8499038FCFFFC48B712FE48018313F93A07FC007FC34848EB3FE100 
    1432 1FEDF1FC4990381FF0F81700003F81A7001F5DA26D133F000F5D6C6C495A3A03FF83FF80 
    1433 91B5C7FC4814FC01BF5BD80F03138090CAFCA2487EA27F13F06CB6FC16F016FC6C15FF17 
    1434 806C16C06C16E01207001F16F0393FE000034848EB003F49EC1FF800FF150F90C81207A5 
    1435 6C6CEC0FF06D141F003F16E001F0147FD81FFC903801FFC02707FF800F13006C90B55AC6 
    1436 15F8013F14E0010101FCC7FC2F3D7DA834>I<13FFB5FCA512077EAFED1FF8EDFFFE0203 
    1437 6D7E4A80DA0FE07F91381F007F023C805C4A6D7E5CA25CA35CB3A4B5D8FE0FB512E0A533 
    1438 3F7CBE3A>I<EA01F8487E487E487E481380A66C13006C5A6C5A6C5AC8FCA913FFB5FCA5 
    1439 12077EB3ABB512F8A515407CBF1D>I<13FFB5FCA512077EB092380FFFFEA5DB01FEC7FC 
    1440 4B5AED07F0ED1FE04B5A4B5A4BC8FCEC03FC4A5A4A5A141F4A7EECFFFCA2818102E77F02 
    1441 C37F148102007F826F7E6F7E151F6F7E826F7F6F7F816F7FB5D8FC07EBFFC0A5323F7DBE 
    1442 37>107 D<13FFB5FCA512077EB3B3AFB512FCA5163F7CBE1D>I<01FFD91FF8ECFFC0B590 
    1443 B5010713F80203DAC01F13FE4A6E487FDA0FE09026F07F077F91261F003FEBF801000701 
    1444 3EDAF9F0806C0178ECFBC04A6DB4486C7FA24A92C7FC4A5CA34A5CB3A4B5D8FE07B5D8F0 
    1445 3FEBFF80A551297CA858>I<01FFEB1FF8B5EBFFFE02036D7E4A80DA0FE07F91381F007F 
    1446 0007013C806C5B4A6D7E5CA25CA35CB3A4B5D8FE0FB512E0A533297CA83A>I<EC7FF090 
    1447 3803FFFE011FEBFFC0017F14F09039FFE03FF8489038800FFC3A03FE0003FE48486D7E00 
    1448 0F168048486D13C0A2003F16E049147F007F16F0A400FF16F8AA007F16F0A46C6CECFFE0 
    1449 A2001F16C06C6C491380A26C6C4913003A03FF800FFE6C9038E03FFC6C6CB512F0011F14 
    1450 C0010791C7FC9038007FF02D2B7DA934>I<01FFEBFFE0B5000713FC021FEBFF80027F80 
    1451 DAFF8113F09139FC007FF8000701F06D7E6C496D7E4A130F4A6D7E1880A27013C0A38218 
    1452 E0AA4C13C0A318805E18005E6E5C6E495A6E495A02FCEBFFF0DAFF035B92B55A029F91C7 
    1453 FC028713FC028113C00280C9FCACB512FEA5333B7DA83A>I<DA7FE01378902607FFFC13 
    1454 F8011FEBFF01017F14819039FFF81FC3489038E007E74890388003F74890380001FF4848 
    1455 7F001F157F5B003F153F5B127F161FA2485AAA127F7FA36C6C143F167F121F6C6C14FF6D 
    1456 5B6C6D5A6CEBC00F6CEBF03F6C6CB512BF6DEBFE3F010713F8010013C091C7FCAC030FB5 
    1457 12E0A5333B7DA837>I<3901FE01FE00FF903807FF804A13E04A13F0EC3F1F91387C3FF8 
    1458 000713F8000313F0EBFFE0A29138C01FF0ED0FE091388007C092C7FCA391C8FCB3A2B6FC 
    1459 A525297DA82B>I<90383FFC1E48B512BE000714FE5A381FF00F383F800148C7FC007E14 
    1460 7EA200FE143EA27E7F6D90C7FC13F8EBFFE06C13FF15C06C14F06C806C806C806C80C615 
    1461 80131F1300020713C014000078147F00F8143F151F7EA27E16806C143F6D140001E013FF 
    1462 9038F803FE90B55A15F0D8F87F13C026E00FFEC7FC222B7DA929>I<EB07C0A5130FA413 
    1463 1FA3133F137FA213FF5A1207001FEBFFFEB6FCA40001EBC000B3151FA96CEBE03EA2017F 
    1464 137EECF8FC90383FFFF86D13F0010713E001001380203B7EB929>I<D9FF80EB0FF8B5EB 
    1465 0FFFA50007EC007F6C153FB3A5167FA316FF6C5C4B7F6C903AC007DFFFE09138F01F9F6D 
    1466 B5121F6D13FE010F13F8010101E0EBE000332A7CA83A>I<B500FC90383FFFC0A5000101 
    1467 C0903803E0006E1307A26C5E6E130F017F5D6E131F013F92C7FC6E5B011F143E6E137E01 
    1468 0F147C6E13FCA26D5C15816D5C15C36D5C15E76D5C15FF6E5BA36E90C8FCA26E5AA26E5A 
    1469 A26E5AA26E5AA232287EA737>I<B53CFC3FFFFC03FFFEA50003D980009039C0000F806E 
    1470 161F6C037F15006E496C5B6C183E836E48157E017F177C6E486D13FC013F02EF5C83DAFC 
    1471 071401011F02C75CDAFE0FEBFE03010F02835C17FFDAFF1F14076D02015C03BF148F6DD9 
    1472 BE005C18CF03FE14DF6D49017F90C7FC18FF6D496D5AA36E486D5AA26E486D5AA36E486D 
    1473 5AA26E486D5A47287EA74C>I<B5D8FC03B51280A5C69026E0007FC7FC6E13FE6D6C5B6D 
    1474 6C485A6D6C485A010F13076D6C485AED9FC06DEBFF806D91C8FC6D5B6E5AA2143F6E7E14 
    1475 0F814A7F4A7F4A7F02FE7F903801FC7F49486C7E02F07F49486C7E49486C7E011F7F4948 
    1476 6C7FD97F008001FE6D7FB5D8C007EBFFC0A532287EA737>I<B500FC90383FFFC0A50001 
    1477 01C0903803E0006E1307A26C5E6E130F017F5D6E131F013F92C7FC6E5B011F143E6E137E 
    1478 010F147C6E13FCA26D5C15816D5C15C36D5C15E76D5C15FF6E5BA36E90C8FCA26E5AA26E 
    1479 5AA26E5AA26E5AA35D14075D000E130FD83F805B387FC01FD8FFE090C9FC5C143E147E5C 
    1480 EBC1F8387FC3F0387E0FE06CB45A6C5B6C48CAFCEA03F8323B7EA737>I 
    1481 
     1405A270CAFCA24A3F7EBD4F>I<B6D8FC03B600F090B512FEA5C601FCC7000301F0C8EA7E00 
     1406017F6F177C856E6E17FC013F63856D6C037F4B5AA26F4A6C14036D634D7F6F18076D634D 
     1407806F02EF150F6D636F01076E131F6D04C793C7FC050F806F02835D6D1A3E051F806F0201 
     1408157E027F197C6F013F6E13FC023FDA3E005D057E806F017C017F13016E6105FC14FE7048 
     1409013F13036E6104C1EDFF076E4A6D5C04C31687DCE3E06D138F6E6104E716CFDCF7C06D13 
     1410DF6E96C8FC04FF16FF6E4A6D5BA294C77E6F5FA24C80033F5FA26F486F5AA24C153F030F 
     14115FA24C151F03075FA26F486F5A673F7EBD6C>I<007FB6013FB512F0A5D8001F01C0D900 
     14123FC7FC6D6D147E18FE6D6D5C6D6D495A6D4B5A6F13076D6D5C6E6C495A4D5A6EEB803F6E 
     141301C090C8FC6E147E705A6E13F16EEBF9F86EEBFBF0EEFFE0806F5B5F816F7F81836F7F81 
     1414834B7F4B7F5D83DB3F3F7FED7E1F03FE804B6C7F4A486C7F4A487E0207814B6C7F4A487E 
     14154A4880023F6E7E92C76C7F027E804A8201016F7F4A6E7F495A49486E7F010F6F7F4A80B6 
     141600C0017F90B5FCA5483E7DBD4F>I<B600FE020FB512C0A5C66C90C9381F80006D6D4BC7 
     1417FC6D6D157EA26D6D5D6D6D4A5A816D4C5A6D6D4A5A816D4C5A6E6C4A5A6E7F4EC8FC6E6D 
     1418137E6E7F606E6D485A6E13F84D5A6E6D485A6E13FE70485A6F495A6F139F05FFC9FC6F5B 
     1419815F6F5B816F5B5FB3A20207B612F8A54A3E7EBD4F>I<003FB812E0A59126E0001F13C0 
     142091C7148001FC5C01F04A1300495D4914FF4848495B5F90C75A4B5B007E5E5D4B5B007C5E 
     14215D4B90C7FC5E15FFC7485B5E4A5B5C5E4A5B5C5E4A90C8FC5C5D4A5A5B4BEB01F0495B5B 
     1422495B5D491503494914E092C7FC5B495A4A14075A4849140F5C48161F4849143F4A147F48 
     142316FF48495B91C7000713C048157FB9FCA5343E7ABD40>I<903807FFC0013F13F848B6FC 
     142448812607FE037F260FF8007F6DEB3FF0486C806F7EA36F7EA26C5A6C5AEA01E0C8FC153F 
     142591B5FC130F137F3901FFFE0F4813E0000F1380381FFE00485A5B485A12FF5BA4151F7F00 
     14267F143F6D90387BFF806C6C01FB13FE391FFF07F36CEBFFE100031480C6EC003FD91FF890 
     1427C7FC2F2B7DA933>97 D<13FFB5FCA512077EAFEDFFE0020713FC021FEBFF80027F80DAFF 
     14288113F09139FC003FF802F06D7E4A6D7E4A13074A80701380A218C082A318E0AA18C0A25E 
     14291880A218005E6E5C6E495A6E495A02FCEB7FF0903AFCFF01FFE0496CB55AD9F01F91C7FC 
     1430D9E00713FCC7000113C033407DBE3A>I<EC7FF00107B5FC011F14C0017F14E09039FFF0 
     14311FF0489038800FF848EB001F4848EB3FFC120F485AA2485AA2007FEC1FF849EB0FF0ED03 
     1432C000FF91C7FCAB127F7FA3003F153E7F001F157E6C6C147C6C6C14FC91388001F86C9038 
     1433C003F0C69038F81FE06DB512C0011F14800107EBFE009038007FF0272B7DA92E>I<EE07 
     1434F8ED07FFA5ED003F161FAFEC7FF0903807FFFE011FEBFF9F017F14DF9039FFF01FFF48EB 
     1435C00348EB00014848EB007F485A001F153F5B123FA2127F5BA212FFAA127FA37F123FA26C 
     14366C147F120F6D14FF6C6C01037F6C6D48EBFFE06CEBF03F6C6CB512BF6D143F010713FC01 
     14370001E0EBE00033407DBE3A>I<ECFFF0010713FE011F6D7E017F809039FFE07FE0489038 
     1438801FF048496C7E48486D7E48486D7E121F491301003F81A2485A6F1380A212FFA290B7FC 
     1439A401F0C9FCA5127FA27F123FEE0F806C7E161F6C6C15006C6C5C6C6D137E6C9038E001FC 
     14406C9038F80FF8013FB55A6D14C0010391C7FC9038007FF8292B7DA930>I<EC07FE91387F 
     1441FF8049B512C0010714E090390FFE3FF0EB1FF090393FE07FF8EB7FC013FF1480A2489038 
     1442003FF0ED1FE0ED0FC092C7FCAAB612E0A500010180C7FCB3AC007FEBFF80A525407DBF20 
     1443>I<903A03FF8007F0013F9038F83FF8499038FCFFFC48B712FE48018313F93A07FC007F 
     1444C34848EB3FE1001FEDF1FC4990381FF0F81700003F81A7001F5DA26D133F000F5D6C6C49 
     14455A3A03FF83FF8091B5C7FC4814FC01BF5BD80F03138090CAFCA2487EA27F13F06CB6FC16 
     1446F016FC6C15FF17806C16C06C16E01207001F16F0393FE000034848EB003F49EC1FF800FF 
     1447150F90C81207A56C6CEC0FF06D141F003F16E001F0147FD81FFC903801FFC02707FF800F 
     144813006C90B55AC615F8013F14E0010101FCC7FC2F3D7DA834>I<13FFB5FCA512077EAFED 
     14491FF8EDFFFE02036D7E4A80DA0FE07F91381F007F023C805C4A6D7E5CA25CA35CB3A4B5D8 
     1450FE0FB512E0A5333F7CBE3A>I<EA01F8487E487E487E481380A66C13006C5A6C5A6C5AC8 
     1451FCA913FFB5FCA512077EB3ABB512F8A515407CBF1D>I<13FFB5FCA512077EB092380FFF 
     1452FEA5DB01FEC7FC4B5AED07F0ED1FE04B5A4B5A4BC8FCEC03FC4A5A4A5A141F4A7EECFFFC 
     1453A2818102E77F02C37F148102007F826F7E6F7E151F6F7E826F7F6F7F816F7FB5D8FC07EB 
     1454FFC0A5323F7DBE37>107 D<13FFB5FCA512077EB3B3AFB512FCA5163F7CBE1D>I<01FFD9 
     14551FF8ECFFC0B590B5010713F80203DAC01F13FE4A6E487FDA0FE09026F07F077F91261F00 
     14563FEBF8010007013EDAF9F0806C0178ECFBC04A6DB4486C7FA24A92C7FC4A5CA34A5CB3A4 
     1457B5D8FE07B5D8F03FEBFF80A551297CA858>I<01FFEB1FF8B5EBFFFE02036D7E4A80DA0F 
     1458E07F91381F007F0007013C806C5B4A6D7E5CA25CA35CB3A4B5D8FE0FB512E0A533297CA8 
     14593A>I<EC7FF0903803FFFE011FEBFFC0017F14F09039FFE03FF8489038800FFC3A03FE00 
     146003FE48486D7E000F168048486D13C0A2003F16E049147F007F16F0A400FF16F8AA007F16 
     1461F0A46C6CECFFE0A2001F16C06C6C491380A26C6C4913003A03FF800FFE6C9038E03FFC6C 
     14626CB512F0011F14C0010791C7FC9038007FF02D2B7DA934>I<01FFEBFFE0B5000713FC02 
     14631FEBFF80027F80DAFF8113F09139FC007FF8000701F06D7E6C496D7E4A130F4A6D7E1880 
     1464A27013C0A38218E0AA4C13C0A318805E18005E6E5C6E495A6E495A02FCEBFFF0DAFF035B 
     146592B55A029F91C7FC028713FC028113C00280C9FCACB512FEA5333B7DA83A>I<DA7FE013 
     146678902607FFFC13F8011FEBFF01017F14819039FFF81FC3489038E007E74890388003F748 
     146790380001FF48487F001F157F5B003F153F5B127F161FA2485AAA127F7FA36C6C143F167F 
     1468121F6C6C14FF6D5B6C6D5A6CEBC00F6CEBF03F6C6CB512BF6DEBFE3F010713F8010013C0 
     146991C7FCAC030FB512E0A5333B7DA837>I<3901FE01FE00FF903807FF804A13E04A13F0EC 
     14703F1F91387C3FF8000713F8000313F0EBFFE0A29138C01FF0ED0FE091388007C092C7FCA3 
     147191C8FCB3A2B6FCA525297DA82B>I<90383FFC1E48B512BE000714FE5A381FF00F383F80 
     14720148C7FC007E147EA200FE143EA27E7F6D90C7FC13F8EBFFE06C13FF15C06C14F06C806C 
     1473806C806C80C61580131F1300020713C014000078147F00F8143F151F7EA27E16806C143F 
     14746D140001E013FF9038F803FE90B55A15F0D8F87F13C026E00FFEC7FC222B7DA929>I<EB 
     147507C0A5130FA4131FA3133F137FA213FF5A1207001FEBFFFEB6FCA40001EBC000B3151FA9 
     14766CEBE03EA2017F137EECF8FC90383FFFF86D13F0010713E001001380203B7EB929>I<D9 
     1477FF80EB0FF8B5EB0FFFA50007EC007F6C153FB3A5167FA316FF6C5C4B7F6C903AC007DFFF 
     1478E09138F01F9F6DB5121F6D13FE010F13F8010101E0EBE000332A7CA83A>I<B500FC9038 
     14793FFFC0A5000101C0903803E0006E1307A26C5E6E130F017F5D6E131F013F92C7FC6E5B01 
     14801F143E6E137E010F147C6E13FCA26D5C15816D5C15C36D5C15E76D5C15FF6E5BA36E90C8 
     1481FCA26E5AA26E5AA26E5AA26E5AA232287EA737>I<B53CFC3FFFFC03FFFEA50003D98000 
     14829039C0000F806E161F6C037F15006E496C5B6C183E836E48157E017F177C6E486D13FC01 
     14833F02EF5C83DAFC071401011F02C75CDAFE0FEBFE03010F02835C17FFDAFF1F14076D0201 
     14845C03BF148F6DD9BE005C18CF03FE14DF6D49017F90C7FC18FF6D496D5AA36E486D5AA26E 
     1485486D5AA36E486D5AA26E486D5A47287EA74C>I<B5D8FC03B51280A5C69026E0007FC7FC 
     14866E13FE6D6C5B6D6C485A6D6C485A010F13076D6C485AED9FC06DEBFF806D91C8FC6D5B6E 
     14875AA2143F6E7E140F814A7F4A7F4A7F02FE7F903801FC7F49486C7E02F07F49486C7E4948 
     14886C7E011F7F49486C7FD97F008001FE6D7FB5D8C007EBFFC0A532287EA737>I<B500FC90 
     1489383FFFC0A5000101C0903803E0006E1307A26C5E6E130F017F5D6E131F013F92C7FC6E5B 
     1490011F143E6E137E010F147C6E13FCA26D5C15816D5C15C36D5C15E76D5C15FF6E5BA36E90 
     1491C8FCA26E5AA26E5AA26E5AA26E5AA35D14075D000E130FD83F805B387FC01FD8FFE090C9 
     1492FC5C143E147E5CEBC1F8387FC3F0387E0FE06CB45A6C5B6C48CAFCEA03F8323B7EA737> 
     1493I E 
    14821494%EndDVIPSBitmapFont 
    14831495%DVIPSBitmapFont: Fo cmsy10 10.95 7 
     
    15071519FCA36C16FE30377AB63D>116 D E 
    15081520%EndDVIPSBitmapFont 
    1509 %DVIPSBitmapFont: Fp cmr10 10.95 84 
    1510 /Fp 84 124 df<B912F8A3D87FE0C71201EE001F6C6CED07FC6C6C150117006C7E6C6C16 
     1521%DVIPSBitmapFont: Fp cmr10 10.95 85 
     1522/Fp 85 124 df<B912F8A3D87FE0C71201EE001F6C6CED07FC6C6C150117006C7E6C6C16 
    151115237C0003173C7F6C7F6C6D151CA26D7E6D6C151E180E6D7E6D7EA26D6C15006D7EA26D7F6D 
    151215247F6E7EA26E7E6E7EA2140F6E5AA26E5A5D4A5A4AC9FC141E5C4A150E14F85C495A494815 
     
    16891701A24B5A4B5AA2C8485A4A90C7FCA24A5A4A5AA24A5AA24A5A4A5AA24A5A4A5AA24990C8FC 
    16901702A2495A4948141CA2495A495AA2495A495A173C495AA24890C8FC485A1778485A484815F8 
    1691 A24848140116034848140F4848143FED01FFB8FCA32E3E7BBD38>I<EA0180120313005A 
    1692 120E5A12181238123012701260A312E05AA412CFEAFFC013E0A3127FA2123F13C0EA0F00 
    1693 0B1C7ABE19>96 D<EB0FF8EBFFFE3903F01F8039078007E0000F6D7E9038E001F8D81FF0 
    1694 7F6E7EA3157F6C5AEA0380C8FCA4EC1FFF0103B5FC90381FF87FEB7F803801FC00EA07F8 
    1695 EA0FE0485A485AA248C7FCEE038012FEA315FFA3007F5BEC03BF3B3F80071F8700261FC0 
    1696 0E13CF3A07F03C0FFE3A01FFF807FC3A003FC001F0292A7DA82D>I<EA01FC12FFA31207 
    1697 12031201B1EC03FC91381FFF8091387C07E09039FDE001F09039FFC000FC4A137E91C77E 
    1698 49158049141F17C0EE0FE0A217F0A2160717F8AA17F0A2160FA217E0161F17C06D1580EE 
    1699 3F006D5C6E13FE9039F3C001F89039F1E003F09039E0780FC09026C03FFFC7FCC7EA07F8 
    1700 2D407EBE33>I<49B4FC010F13E090383F00F8017C131E4848131F4848137F0007ECFF80 
    1701 485A5B121FA24848EB7F00151C007F91C7FCA290C9FC5AAB6C7EA3003FEC01C07F001F14 
    1702 0316806C6C13076C6C14000003140E6C6C131E6C6C137890383F01F090380FFFC0D901FE 
    1703 C7FC222A7DA828>I<ED01FC15FFA3150715031501B114FF010713E190381F80F990387E 
    1704 003D49131FD803F81307485A49130348481301121F123F5B127FA290C7FCA25AAA7E7FA2 
    1705 123FA26C7E000F14037F000714076C6C497E6C6C497ED8007C017913F890383F01F19038 
    1706 0FFFC1903A01FE01FC002D407DBE33>I<EB01FE90380FFFC090383F03F09038FC01F848 
    1707 486C7E4848137E48487F000F158049131F001F15C04848130FA2127F16E090C7FCA25AA2 
    1708 90B6FCA290C9FCA67EA27F123F16E06C7E1501000F15C06C6C13036DEB07806C6C1400C6 
    1709 6C131E017E5B90381F80F8903807FFE0010090C7FC232A7EA828>I<EC1FC0EC7FF89038 
    1710 01F83C903807E07E90380FC0FFEB1FC1EB3F811401137FEC00FE01FE137C1500AEB6FCA3 
    1711 C648C7FCB3AE487E007F13FFA320407EBF1C>I<167C903903F801FF903A1FFF078F8090 
    1712 397E0FDE1F9038F803F83803F001A23B07E000FC0600000F6EC7FC49137E001F147FA800 
    1713 0F147E6D13FE00075C6C6C485AA23901F803E03903FE0FC026071FFFC8FCEB03F80006CA 
    1714 FC120EA3120FA27F7F6CB512E015FE6C6E7E6C15E06C810003813A0FC0001FFC48C7EA01 
    1715 FE003E140048157E825A82A46C5D007C153E007E157E6C5D6C6C495A6C6C495AD803F0EB 
    1716 0FC0D800FE017FC7FC90383FFFFC010313C0293D7EA82D>I<EA01FC12FFA31207120312 
    1717 01B1EC01FE913807FFC091381E07E091387803F09138E001F8D9FDC07F148001FF6D7E91 
    1718 C7FCA25BA25BB3A6486C497EB5D8F87F13FCA32E3F7DBE33>I<EA01E0EA07F8A2487EA4 
    1719 6C5AA2EA01E0C8FCACEA01FC127FA3120712031201B3AC487EB512F0A3143E7DBD1A>I< 
    1720 1478EB01FEA2EB03FFA4EB01FEA2EB00781400AC147FEB7FFFA313017F147FB3B3A5123E 
    1721 127F38FF807E14FEA214FCEB81F8EA7F01387C03F0381E07C0380FFF803801FC00185185 
    1722 BD1C>I<EA01FC12FFA3120712031201B292B51280A392383FFC0016E0168093C7FC153C 
    1723 5D5D4A5AEC07C04A5A4AC8FC143E147F4A7E13FD9038FFDFC0EC9FE0140F496C7E01FC7F 
    1724 496C7E1401816E7E81826F7E151F826F7EA282486C14FEB539F07FFFE0A32B3F7EBE30> 
    1725 I<EA01FC12FFA3120712031201B3B3B1487EB512F8A3153F7DBE1A>I<2701F801FE14FF 
    1726 00FF902707FFC00313E0913B1E07E00F03F0913B7803F03C01F80007903BE001F87000FC 
    1727 2603F9C06D487F000101805C01FBD900FF147F91C75B13FF4992C7FCA2495CB3A6486C49 
    1728 6CECFF80B5D8F87FD9FC3F13FEA347287DA74C>I<3901F801FE00FF903807FFC091381E 
    1729 07E091387803F000079038E001F82603F9C07F0001138001FB6D7E91C7FC13FF5BA25BB3 
    1730 A6486C497EB5D8F87F13FCA32E287DA733>I<14FF010713E090381F81F890387E007E01 
    1731 F8131F4848EB0F804848EB07C04848EB03E0000F15F04848EB01F8A2003F15FCA248C812 
    1732 FEA44815FFA96C15FEA36C6CEB01FCA3001F15F86C6CEB03F0A26C6CEB07E06C6CEB0FC0 
    1733 6C6CEB1F80D8007EEB7E0090383F81FC90380FFFF0010090C7FC282A7EA82D>I<3901FC 
    1734 03FC00FF90381FFF8091387C0FE09039FDE003F03A07FFC001FC6C496C7E6C90C7127F49 
    1735 EC3F805BEE1FC017E0A2EE0FF0A3EE07F8AAEE0FF0A4EE1FE0A2EE3FC06D1580EE7F007F 
    1736 6E13FE9138C001F89039FDE007F09039FC780FC0DA3FFFC7FCEC07F891C9FCAD487EB512 
    1737 F8A32D3A7EA733>I<02FF131C0107EBC03C90381F80F090397F00387C01FC131CD803F8 
    1738 130E4848EB0FFC150748481303121F485A1501485AA448C7FCAA6C7EA36C7EA2001F1403 
    1739 6C7E15076C6C130F6C7E6C6C133DD8007E137990383F81F190380FFFC1903801FE0190C7 
    1740 FCAD4B7E92B512F8A32D3A7DA730>I<3901F807E000FFEB1FF8EC787CECE1FE3807F9C1 
    1741 00031381EA01FB1401EC00FC01FF1330491300A35BB3A5487EB512FEA31F287EA724>I< 
    1742 90383FC0603901FFF8E03807C03F381F000F003E1307003C1303127C0078130112F81400 
    1743 A27E7E7E6D1300EA7FF8EBFFC06C13F86C13FE6C7F6C1480000114C0D8003F13E0010313 
    1744 F0EB001FEC0FF800E01303A214017E1400A27E15F07E14016C14E06CEB03C09038800780 
    1745 39F3E01F0038E0FFFC38C01FE01D2A7DA824>I<131CA6133CA4137CA213FCA212011203 
    1746 1207001FB512C0B6FCA2D801FCC7FCB3A215E0A912009038FE01C0A2EB7F03013F138090 
    1747 381F8700EB07FEEB01F81B397EB723>I<D801FC14FE00FF147FA3000714030003140100 
    1748 011400B3A51501A31503120015076DEB06FF017E010E13806D4913FC90381FC078903807 
    1749 FFE00100903880FE002E297DA733>I<B539E00FFFE0A32707FE000313006C48EB00FC5E 
    1750 00015D7F00005DA26D13016D5CA26D6C485AA2ECC007011F91C7FCA290380FE00EA2ECF0 
    1751 1E0107131CA26D6C5AA2ECFC7801011370A2ECFEF001005BA2EC7FC0A36E5AA26EC8FCA3 
    1752 140E2B287EA630>I<B53BC3FFFE03FFF8A3290FFE003FE00013C06C486D48EB3F806C48 
    1753 17006D010F141E00016F131C15076D163C00004A6C1338A2017F5E4B7E151DD93F805DED 
    1754 3DFC1538D91FC04A5AED78FE9238707E03D90FE0017F5BEDE03F02F0140701070387C7FC 
    1755 9138F1C01F02F9148F010315CE9138FB800F02FF14DE6D15FCED00076D5DA24A1303027E 
    1756 5CA2027C1301023C5C023813003D287EA642>I<B539F01FFFE0A30003D9C00F1300C690 
    1757 388007F8D97F0013E002805BD93FC05B011F49C7FC90380FE00EECF01E6D6C5A01035B6D 
    1758 6C5A6E5AEB00FF6E5A6E5A81141F814A7E81147BECF1FC903801E1FEECC0FF01037F4948 
    1759 6C7ED90F007F011E6D7E013E130F496D7E01FC80486C80000F4A7EB539803FFFF8A32D27 
    1760 7FA630>I<B539E00FFFE0A32707FE000313006C48EB01FC6F5A00015D7F00005DA2017F 
    1761 495AA2EC8003013F5CA26D6C48C7FCA26E5A010F130EA26D6C5AA2ECF83C01031338A26D 
    1762 6C5AA2ECFEF001005BA2EC7FC0A36E5AA36EC8FCA2140EA2141E141C143C1438A2147800 
    1763 181370127EB45BA2495AA248485AD87E07C9FCEA780EEA3C3CEA1FF8EA07E02B3A7EA630 
    1764 >I<001FB61280A2EBE0000180140049485A001E495A121C4A5A003C495A141F00385C4A 
    1765 5A147F5D4AC7FCC6485AA2495A495A130F5C495A90393FC00380A2EB7F80EBFF005A5B48 
    1766 4813071207491400485A48485BA248485B4848137F00FF495A90B6FCA221277EA628>I< 
    1767 B812F0A22C0280982D>I E 
     1703A24848140116034848140F4848143FED01FFB8FCA32E3E7BBD38>I<486C13C000031301 
     170401001380481303000EEB070048130E0018130C0038131C003013180070133800601330A3 
     170500E01370481360A400CFEB678039FFC07FE001E013F0A3007F133FA2003F131F01C013E0 
     1706390F0007801C1C73BE2D>92 D<EA0180120313005A120E5A12181238123012701260A312 
     1707E05AA412CFEAFFC013E0A3127FA2123F13C0EA0F000B1C7ABE19>96 
     1708D<EB0FF8EBFFFE3903F01F8039078007E0000F6D7E9038E001F8D81FF07F6E7EA3157F6C 
     17095AEA0380C8FCA4EC1FFF0103B5FC90381FF87FEB7F803801FC00EA07F8EA0FE0485A485A 
     1710A248C7FCEE038012FEA315FFA3007F5BEC03BF3B3F80071F8700261FC00E13CF3A07F03C 
     17110FFE3A01FFF807FC3A003FC001F0292A7DA82D>I<EA01FC12FFA3120712031201B1EC03 
     1712FC91381FFF8091387C07E09039FDE001F09039FFC000FC4A137E91C77E49158049141F17 
     1713C0EE0FE0A217F0A2160717F8AA17F0A2160FA217E0161F17C06D1580EE3F006D5C6E13FE 
     17149039F3C001F89039F1E003F09039E0780FC09026C03FFFC7FCC7EA07F82D407EBE33>I< 
     171549B4FC010F13E090383F00F8017C131E4848131F4848137F0007ECFF80485A5B121FA248 
     171648EB7F00151C007F91C7FCA290C9FC5AAB6C7EA3003FEC01C07F001F140316806C6C1307 
     17176C6C14000003140E6C6C131E6C6C137890383F01F090380FFFC0D901FEC7FC222A7DA828 
     1718>I<ED01FC15FFA3150715031501B114FF010713E190381F80F990387E003D49131FD803 
     1719F81307485A49130348481301121F123F5B127FA290C7FCA25AAA7E7FA2123FA26C7E000F 
     172014037F000714076C6C497E6C6C497ED8007C017913F890383F01F190380FFFC1903A01FE 
     172101FC002D407DBE33>I<EB01FE90380FFFC090383F03F09038FC01F848486C7E4848137E 
     172248487F000F158049131F001F15C04848130FA2127F16E090C7FCA25AA290B6FCA290C9FC 
     1723A67EA27F123F16E06C7E1501000F15C06C6C13036DEB07806C6C1400C66C131E017E5B90 
     1724381F80F8903807FFE0010090C7FC232A7EA828>I<EC1FC0EC7FF8903801F83C903807E0 
     17257E90380FC0FFEB1FC1EB3F811401137FEC00FE01FE137C1500AEB6FCA3C648C7FCB3AE48 
     17267E007F13FFA320407EBF1C>I<167C903903F801FF903A1FFF078F8090397E0FDE1F9038 
     1727F803F83803F001A23B07E000FC0600000F6EC7FC49137E001F147FA8000F147E6D13FE00 
     1728075C6C6C485AA23901F803E03903FE0FC026071FFFC8FCEB03F80006CAFC120EA3120FA2 
     17297F7F6CB512E015FE6C6E7E6C15E06C810003813A0FC0001FFC48C7EA01FE003E14004815 
     17307E825A82A46C5D007C153E007E157E6C5D6C6C495A6C6C495AD803F0EB0FC0D800FE017F 
     1731C7FC90383FFFFC010313C0293D7EA82D>I<EA01FC12FFA3120712031201B1EC01FE9138 
     173207FFC091381E07E091387803F09138E001F8D9FDC07F148001FF6D7E91C7FCA25BA25BB3 
     1733A6486C497EB5D8F87F13FCA32E3F7DBE33>I<EA01E0EA07F8A2487EA46C5AA2EA01E0C8 
     1734FCACEA01FC127FA3120712031201B3AC487EB512F0A3143E7DBD1A>I<1478EB01FEA2EB 
     173503FFA4EB01FEA2EB00781400AC147FEB7FFFA313017F147FB3B3A5123E127F38FF807E14 
     1736FEA214FCEB81F8EA7F01387C03F0381E07C0380FFF803801FC00185185BD1C>I<EA01FC 
     173712FFA3120712031201B292B51280A392383FFC0016E0168093C7FC153C5D5D4A5AEC07C0 
     17384A5A4AC8FC143E147F4A7E13FD9038FFDFC0EC9FE0140F496C7E01FC7F496C7E1401816E 
     17397E81826F7E151F826F7EA282486C14FEB539F07FFFE0A32B3F7EBE30>I<EA01FC12FFA3 
     1740120712031201B3B3B1487EB512F8A3153F7DBE1A>I<2701F801FE14FF00FF902707FFC0 
     17410313E0913B1E07E00F03F0913B7803F03C01F80007903BE001F87000FC2603F9C06D487F 
     1742000101805C01FBD900FF147F91C75B13FF4992C7FCA2495CB3A6486C496CECFF80B5D8F8 
     17437FD9FC3F13FEA347287DA74C>I<3901F801FE00FF903807FFC091381E07E091387803F0 
     174400079038E001F82603F9C07F0001138001FB6D7E91C7FC13FF5BA25BB3A6486C497EB5D8 
     1745F87F13FCA32E287DA733>I<14FF010713E090381F81F890387E007E01F8131F4848EB0F 
     1746804848EB07C04848EB03E0000F15F04848EB01F8A2003F15FCA248C812FEA44815FFA96C 
     174715FEA36C6CEB01FCA3001F15F86C6CEB03F0A26C6CEB07E06C6CEB0FC06C6CEB1F80D800 
     17487EEB7E0090383F81FC90380FFFF0010090C7FC282A7EA82D>I<3901FC03FC00FF90381F 
     1749FF8091387C0FE09039FDE003F03A07FFC001FC6C496C7E6C90C7127F49EC3F805BEE1FC0 
     175017E0A2EE0FF0A3EE07F8AAEE0FF0A4EE1FE0A2EE3FC06D1580EE7F007F6E13FE9138C001 
     1751F89039FDE007F09039FC780FC0DA3FFFC7FCEC07F891C9FCAD487EB512F8A32D3A7EA733 
     1752>I<02FF131C0107EBC03C90381F80F090397F00387C01FC131CD803F8130E4848EB0FFC 
     1753150748481303121F485A1501485AA448C7FCAA6C7EA36C7EA2001F14036C7E15076C6C13 
     17540F6C7E6C6C133DD8007E137990383F81F190380FFFC1903801FE0190C7FCAD4B7E92B512 
     1755F8A32D3A7DA730>I<3901F807E000FFEB1FF8EC787CECE1FE3807F9C100031381EA01FB 
     17561401EC00FC01FF1330491300A35BB3A5487EB512FEA31F287EA724>I<90383FC0603901 
     1757FFF8E03807C03F381F000F003E1307003C1303127C0078130112F81400A27E7E7E6D1300 
     1758EA7FF8EBFFC06C13F86C13FE6C7F6C1480000114C0D8003F13E0010313F0EB001FEC0FF8 
     175900E01303A214017E1400A27E15F07E14016C14E06CEB03C0903880078039F3E01F0038E0 
     1760FFFC38C01FE01D2A7DA824>I<131CA6133CA4137CA213FCA2120112031207001FB512C0 
     1761B6FCA2D801FCC7FCB3A215E0A912009038FE01C0A2EB7F03013F138090381F8700EB07FE 
     1762EB01F81B397EB723>I<D801FC14FE00FF147FA3000714030003140100011400B3A51501 
     1763A31503120015076DEB06FF017E010E13806D4913FC90381FC078903807FFE00100903880 
     1764FE002E297DA733>I<B539E00FFFE0A32707FE000313006C48EB00FC5E00015D7F00005D 
     1765A26D13016D5CA26D6C485AA2ECC007011F91C7FCA290380FE00EA2ECF01E0107131CA26D 
     17666C5AA2ECFC7801011370A2ECFEF001005BA2EC7FC0A36E5AA26EC8FCA3140E2B287EA630 
     1767>I<B53BC3FFFE03FFF8A3290FFE003FE00013C06C486D48EB3F806C4817006D010F141E 
     176800016F131C15076D163C00004A6C1338A2017F5E4B7E151DD93F805DED3DFC1538D91FC0 
     17694A5AED78FE9238707E03D90FE0017F5BEDE03F02F0140701070387C7FC9138F1C01F02F9 
     1770148F010315CE9138FB800F02FF14DE6D15FCED00076D5DA24A1303027E5CA2027C130102 
     17713C5C023813003D287EA642>I<B539F01FFFE0A30003D9C00F1300C690388007F8D97F00 
     177213E002805BD93FC05B011F49C7FC90380FE00EECF01E6D6C5A01035B6D6C5A6E5AEB00FF 
     17736E5A6E5A81141F814A7E81147BECF1FC903801E1FEECC0FF01037F49486C7ED90F007F01 
     17741E6D7E013E130F496D7E01FC80486C80000F4A7EB539803FFFF8A32D277FA630>I<B539 
     1775E00FFFE0A32707FE000313006C48EB01FC6F5A00015D7F00005DA2017F495AA2EC800301 
     17763F5CA26D6C48C7FCA26E5A010F130EA26D6C5AA2ECF83C01031338A26D6C5AA2ECFEF001 
     1777005BA2EC7FC0A36E5AA36EC8FCA2140EA2141E141C143C1438A2147800181370127EB45B 
     1778A2495AA248485AD87E07C9FCEA780EEA3C3CEA1FF8EA07E02B3A7EA630>I<001FB61280 
     1779A2EBE0000180140049485A001E495A121C4A5A003C495A141F00385C4A5A147F5D4AC7FC 
     1780C6485AA2495A495A130F5C495A90393FC00380A2EB7F80EBFF005A5B4848130712074914 
     178100485A48485BA248485B4848137F00FF495A90B6FCA221277EA628>I<B812F0A22C0280 
     1782982D>I E 
    17681783%EndDVIPSBitmapFont 
    1769 %DVIPSBitmapFont: Fq cmr12 12 17 
    1770 /Fq 17 119 df<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A3120113 
     1784%DVIPSBitmapFont: Fq cmr12 12 18 
     1785/Fq 18 119 df<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A3120113 
    1771178680120313005A1206120E5A5A5A12600B1D78891B>44 D<121EEA7F80A2EAFFC0A4EA7F80 
    17721787A2EA1E000A0A78891B>46 D<14FF010713E090381F81F890383E007C01FC133F4848EB1F 
     
    1783179815E0C8EA07F0A316F81503A216FCA5123E127F487EA416F890C712075A006015F0A20070 
    17841799140F003015E00038EC1FC07E001EEC3F806CEC7F006C6C13FE6C6C485A3901F807F03900 
    1785 7FFFE0011F90C7FCEB07F826447BC131>53 D<B612F8A3000101E0C9FC6C6C5A5CB3B318 
    1786 30A418701860A518E0A3EF01C0A217031707A2170F173F177FEE01FF48486C011F1380B9 
    1787 FCA334447CC33D>76 D<ED1FFC4AB512C0913907F007F091391F8000FC027EC7123FD901 
    1788 F8EC0FC049486E7E49486E7E49486E7E49486E7E49C9127E017E8201FE834848707E4848 
    1789 707EA24848707EA2000F84491603001F84A24848707EA3007F84A24982A300FF1980AD6C 
    1790 6C4C1300A4003F606D1603A2001F60A26C6C4C5AA26C6C4C5AA20003606D161F6C6C4C5A 
    1791 000060017F4CC7FC6E5D013F5E6D6C4A5AD907E0EC03F06D6C4A5AD901FCEC1FC0D9007E 
    1792 4AC8FCDA1F8013FC913907F007F00201B512C09126001FFCC9FC41487BC54C>79 
    1793 D<49B41303010FEBE007013F13F89039FE00FE0FD801F8131FD807E0EB079F49EB03DF48 
    1794 486DB4FC48C8FC4881003E81127E82127C00FC81A282A37E82A27EA26C6C91C7FC7F7FEA 
    1795 3FF813FE381FFFE06C13FE6CEBFFE06C14FC6C14FF6C15C0013F14F0010F80010180D900 
    1796 1F7F14019138001FFF03031380816F13C0167F163F161F17E000C0150FA31607A37EA36C 
    1797 16C0160F7E17806C151F6C16006C5D6D147ED8FBC05CD8F9F0495AD8F07C495A90393FC0 
    1798 0FE0D8E00FB51280010149C7FC39C0003FF02B487BC536>83 D<EB07FC90383FFF809038 
    1799 F80FE03903C003F048C66C7E000E6D7ED80FC0137E486C137F6D6D7EA36F7EA26C5AEA03 
    1800 80C8FCA4EC0FFF49B5FC90380FFE1FEB3FC0EBFF00EA03FC485A485A485A485A127F5B17 
    1801 6048C7FCA3153FA36D137F007F14EF6D9038C7E0C0003F13013A1FE00783F13B07F81E03 
    1802 FF802701FFFC0113003A001FE0007C2B2E7CAC31>97 D<EA01FC12FFA3120712031201B3 
    1803 EC03FC91380FFF8091383C07E091387001F89039FDE0007E02807F01FFEC1F8091C713C0 
    1804 49EC0FE049140717F0A2EE03F8A217FCA2160117FEAB17FC1603A217F8A2EE07F0A26DEC 
    1805 0FE017C06D141F01FBEC3F80D9F380EB7E00D9E1C05B9039E0F001F89039C03C07E09039 
    1806 801FFF80C7D803FCC7FC2F467DC436>I<EC7F80903803FFF090380FC07C90383F000F01 
    1807 FCEB03804848EB01C00003140F4848EB1FE049133F120F485AA2485AED1FC0007FEC0700 
    1808 92C7FCA290C9FC5AAB7E7FA2123F16307F001F15706C6C146016E06C6C14C06C6C130100 
    1809 01EC03806C6CEB0700013F131E90381FC078903807FFF001001380242E7DAC2B>I<EB01 
    1810 FE903807FFC090381F03F090387E00FC49137E48487F485A4848EB1F80000F15C049130F 
    1811 121F484814E01507A2007F15F090C7FCA25AA390B6FCA290C9FCA67EA27FA2123F16306C 
    1812 7E1670000F15606D14E06C6C14C0000314016C6CEB03806C6CEB0700013E131E90381F80 
    1813 F8903803FFE0010090C7FC242E7DAC2B>101 D<3901FC01FE00FF903807FFC091381E07 
    1814 F091383801F8000701707F0003EBE0002601FDC07F5C01FF147F91C7FCA25BA35BB3A848 
    1815 6CECFF80B5D8F83F13FEA32F2C7DAB36>110 D<EC7F80903803FFF090380FC0FC90383E 
    1816 001F496D7E496D7E48486D7E48486D7E48486D7E000F81A24848147E003F157FA290C87E 
    1817 481680A44816C0AA6C1680A26D147F003F1600A2001F157E6D14FE000F5D6D130100075D 
    1818 6C6C495A6C6C495A6C6C495A013E49C7FC90381FC0FE903807FFF89038007F802A2E7DAC 
    1819 31>I<3903F803F000FFEB1FFCEC3C3EEC707F0007EBE0FF3803F9C000015B13FBEC007E 
    1820 153C01FF13005BA45BB3A748B4FCB512FEA3202C7DAB26>114 D<1306A5130EA4131EA3 
    1821 133E137EA213FE12011207001FB512F0B6FCA2C648C7FCB3A4150CAA017E131C017F1318 
    1822 A26D133890381F8030ECC070903807E0E0903801FFC09038007F001E3E7EBC26>116 
    1823 D<B539F001FFFCA3000790C7EA7FE06C48EC1F8000011600160E1200160C017F5CA28001 
    1824 3F5CA26E1370011F146080010F5CA2ECF00101075CA26D6C48C7FCA26E5A01011306A26D 
    1825 6C5AA214FF6E5AA215B8EC3FB015F06E5AA36E5AA26E5AA36EC8FC2E2C7EAA33>118 
    1826 D E 
     18007FFFE0011F90C7FCEB07F826447BC131>53 D<121CA2EA1F8090B712C0A3481680A21700 
     18015E0038C8120C0030151C00705D0060153016705E5E4814014B5A4BC7FCC81206150E5D15 
     18021815385D156015E04A5AA24A5A140792C8FC5CA25C141E143EA2147E147CA214FCA21301 
     1803A3495AA41307A6130FAA6D5AEB01C02A457BC231>55 D<B612F8A3000101E0C9FC6C6C5A 
     18045CB3B31830A418701860A518E0A3EF01C0A217031707A2170F173F177FEE01FF48486C01 
     18051F1380B9FCA334447CC33D>76 D<ED1FFC4AB512C0913907F007F091391F8000FC027EC7 
     1806123FD901F8EC0FC049486E7E49486E7E49486E7E49486E7E49C9127E017E8201FE834848 
     1807707E4848707EA24848707EA2000F84491603001F84A24848707EA3007F84A24982A300FF 
     18081980AD6C6C4C1300A4003F606D1603A2001F60A26C6C4C5AA26C6C4C5AA20003606D161F 
     18096C6C4C5A000060017F4CC7FC6E5D013F5E6D6C4A5AD907E0EC03F06D6C4A5AD901FCEC1F 
     1810C0D9007E4AC8FCDA1F8013FC913907F007F00201B512C09126001FFCC9FC41487BC54C> 
     181179 D<49B41303010FEBE007013F13F89039FE00FE0FD801F8131FD807E0EB079F49EB03 
     1812DF48486DB4FC48C8FC4881003E81127E82127C00FC81A282A37E82A27EA26C6C91C7FC7F 
     18137FEA3FF813FE381FFFE06C13FE6CEBFFE06C14FC6C14FF6C15C0013F14F0010F80010180 
     1814D9001F7F14019138001FFF03031380816F13C0167F163F161F17E000C0150FA31607A37E 
     1815A36C16C0160F7E17806C151F6C16006C5D6D147ED8FBC05CD8F9F0495AD8F07C495A9039 
     18163FC00FE0D8E00FB51280010149C7FC39C0003FF02B487BC536>83 
     1817D<EB07FC90383FFF809038F80FE03903C003F048C66C7E000E6D7ED80FC0137E486C137F 
     18186D6D7EA36F7EA26C5AEA0380C8FCA4EC0FFF49B5FC90380FFE1FEB3FC0EBFF00EA03FC48 
     18195A485A485A485A127F5B176048C7FCA3153FA36D137F007F14EF6D9038C7E0C0003F1301 
     18203A1FE00783F13B07F81E03FF802701FFFC0113003A001FE0007C2B2E7CAC31>97 
     1821D<EA01FC12FFA3120712031201B3EC03FC91380FFF8091383C07E091387001F89039FDE0 
     1822007E02807F01FFEC1F8091C713C049EC0FE049140717F0A2EE03F8A217FCA2160117FEAB 
     182317FC1603A217F8A2EE07F0A26DEC0FE017C06D141F01FBEC3F80D9F380EB7E00D9E1C05B 
     18249039E0F001F89039C03C07E09039801FFF80C7D803FCC7FC2F467DC436>I<EC7F809038 
     182503FFF090380FC07C90383F000F01FCEB03804848EB01C00003140F4848EB1FE049133F12 
     18260F485AA2485AED1FC0007FEC070092C7FCA290C9FC5AAB7E7FA2123F16307F001F15706C 
     18276C146016E06C6C14C06C6C13010001EC03806C6CEB0700013F131E90381FC078903807FF 
     1828F001001380242E7DAC2B>I<EB01FE903807FFC090381F03F090387E00FC49137E48487F 
     1829485A4848EB1F80000F15C049130F121F484814E01507A2007F15F090C7FCA25AA390B6FC 
     1830A290C9FCA67EA27FA2123F16306C7E1670000F15606D14E06C6C14C0000314016C6CEB03 
     1831806C6CEB0700013E131E90381F80F8903803FFE0010090C7FC242E7DAC2B>101 
     1832D<3901FC01FE00FF903807FFC091381E07F091383801F8000701707F0003EBE0002601FD 
     1833C07F5C01FF147F91C7FCA25BA35BB3A8486CECFF80B5D8F83F13FEA32F2C7DAB36>110 
     1834D<EC7F80903803FFF090380FC0FC90383E001F496D7E496D7E48486D7E48486D7E48486D 
     18357E000F81A24848147E003F157FA290C87E481680A44816C0AA6C1680A26D147F003F1600 
     1836A2001F157E6D14FE000F5D6D130100075D6C6C495A6C6C495A6C6C495A013E49C7FC9038 
     18371FC0FE903807FFF89038007F802A2E7DAC31>I<3903F803F000FFEB1FFCEC3C3EEC707F 
     18380007EBE0FF3803F9C000015B13FBEC007E153C01FF13005BA45BB3A748B4FCB512FEA320 
     18392C7DAB26>114 D<1306A5130EA4131EA3133E137EA213FE12011207001FB512F0B6FCA2 
     1840C648C7FCB3A4150CAA017E131C017F1318A26D133890381F8030ECC070903807E0E09038 
     184101FFC09038007F001E3E7EBC26>116 D<B539F001FFFCA3000790C7EA7FE06C48EC1F80 
     184200011600160E1200160C017F5CA280013F5CA26E1370011F146080010F5CA2ECF0010107 
     18435CA26D6C48C7FCA26E5A01011306A26D6C5AA214FF6E5AA215B8EC3FB015F06E5AA36E5A 
     1844A26E5AA36EC8FC2E2C7EAA33>118 D E 
    18271845%EndDVIPSBitmapFont 
    18281846%DVIPSBitmapFont: Fr cmr17 17.28 5 
     
    18651883%%Page: 1 1 
    18661884TeXDict begin 1 0 bop 1546 2352 a Fr(DGrammar)1610 2741 
    1867 y Fq(S.)33 b(v)-5 b(an)32 b(Leen)m(t)1536 2994 y(Octob)s(er)h(2,)f 
     1885y Fq(S.)33 b(v)-5 b(an)32 b(Leen)m(t)1536 2994 y(Octob)s(er)h(7,)f 
    18681886(2005)p eop end 
    18691887%%Page: 1 2 
     
    188719052989 9 v 382 1229 a Fl(Con)-6 b(ten)g(ts)382 1765 y Fn(1)84 
    18881906b(Preface)2461 b(3)382 1968 y(2)84 b(A)35 b(\014rst)g(lo)s(ok)2277 
    1889 b(4)518 2081 y Fp(2.1)94 b(The)30 b(Grammar)25 b(.)46 
    1890 b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g 
    1891 (.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)138 b(4)518 2194 y(2.2)94 
    1892 b(Compile)29 b(and)h(Run)j(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f 
     1907b(4)518 2081 y Fp(2.1)94 b(The)30 b(famous)g(example)56 
     1908b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) 
     1909g(.)f(.)h(.)g(.)f(.)h(.)138 b(4)518 2194 y(2.2)94 b(The)30 
     1910b(Grammar)25 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h 
     1911(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)138 
     1912b(4)518 2307 y(2.3)94 b(Compile)29 b(and)h(Run)j(.)46 
     1913b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h 
     1914(.)g(.)f(.)h(.)g(.)f(.)h(.)138 b(5)382 2511 y Fn(3)84 
     1915b(A)35 b(b)s(etter)f(grammar)1954 b(7)518 2624 y Fp(3.1)94 
     1916b(Logical)31 b(separation)84 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f 
    18931917(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)138 
    1894 b(5)382 2398 y Fn(3)84 b(A)35 b(b)s(etter)f(grammar)1954 
    1895 b(7)518 2511 y Fp(3.1)94 b(Clim)m(bing)28 b(up)h(the)i(hill)71 
    1896 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) 
    1897 g(.)f(.)h(.)g(.)f(.)h(.)138 b(7)518 2624 y(3.2)94 b(Base)32 
    1898 b(Camp)d(I)s(I)44 b(.)i(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h 
    1899 (.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)138 
    1900 b(9)382 2828 y Fn(4)84 b(Ev)-6 b(aluation)2261 b(12)518 
    1901 2941 y Fp(4.1)94 b(A)31 b(Nice)f(Grammar)50 b(.)c(.)g(.)f(.)h(.)g(.)f 
    1902 (.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.) 
    1903 h(.)93 b(12)518 3054 y(4.2)h(A)31 b(Nice)f(Ev)-5 b(aluator)47 
     1918b(7)518 2737 y(3.2)94 b(Case)31 b(insensitiv)m(e)d(matc)m(hing)68 
     1919b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) 
     1920g(.)f(.)h(.)138 b(7)518 2850 y(3.3)94 b(Whitespaces)33 
     1921b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) 
     1922h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)138 b(8)518 
     19232963 y(3.4)94 b(Colon)30 b(or)g(Arro)m(w)46 b(.)f(.)h(.)g(.)f(.)h(.)g 
     1924(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) 
     1925f(.)h(.)138 b(9)382 3166 y Fn(4)84 b(Ev)-6 b(aluation)2261 
     1926b(11)518 3279 y Fp(4.1)94 b(Simple)28 b(ev)-5 b(aluation)33 
     1927b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) 
     1928f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)93 b(11)518 3392 y(4.2)h(Exclusiv)m(e) 
     192930 b(matc)m(hing)39 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) 
     1930f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)93 b(13)518 
     19313505 y(4.3)h(A)31 b(Nice)f(Grammar)50 b(.)c(.)g(.)f(.)h(.)g(.)f(.)h(.)g 
     1932(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)93 
     1933b(14)518 3618 y(4.4)h(A)31 b(Nice)f(Ev)-5 b(aluator)47 
    19041934b(.)f(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f 
    1905 (.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)93 b(13)382 3257 y Fn(5)84 
    1906 b(Another)35 b(Example)1936 b(16)382 3461 y(A)57 b(Installing)35 
    1907 b(DGrammar)1759 b(18)382 3665 y(B)62 b(GNU)36 b(F)-9 
    1908 b(ree)34 b(Do)s(cumen)m(tation)h(License)1168 b(19)518 
    1909 3778 y Fp(1.)41 b(APPLICABILITY)30 b(AND)h(DEFINITIONS)69 
     1935(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)93 b(15)382 3822 y Fn(5)84 
     1936b(Another)35 b(Example)1936 b(18)382 4026 y(A)57 b(Installing)35 
     1937b(DGrammar)1759 b(20)382 4230 y(B)62 b(GNU)36 b(F)-9 
     1938b(ree)34 b(Do)s(cumen)m(tation)h(License)1168 b(21)518 
     19394342 y Fp(1.)41 b(APPLICABILITY)30 b(AND)h(DEFINITIONS)69 
    19101940b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)93 
    1911 b(19)518 3891 y(2.)41 b(VERBA)-8 b(TIM)31 b(COPYING)75 
     1941b(21)518 4455 y(2.)41 b(VERBA)-8 b(TIM)31 b(COPYING)75 
    19121942b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) 
    1913 f(.)h(.)g(.)f(.)h(.)93 b(21)518 4004 y(3.)41 b(COPYING)30 
     1943f(.)h(.)g(.)f(.)h(.)93 b(23)518 4568 y(3.)41 b(COPYING)30 
    19141944b(IN)h(QUANTITY)81 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f 
    1915 (.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)93 b(21)518 4117 y(4.)41 
     1945(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)93 b(23)518 4681 y(4.)41 
    19161946b(MODIFICA)-8 b(TIONS)73 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f 
    19171947(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)93 
    1918 b(22)518 4230 y(5.)41 b(COMBINING)31 b(DOCUMENTS)68 b(.)46 
     1948b(24)518 4794 y(5.)41 b(COMBINING)31 b(DOCUMENTS)68 b(.)46 
    19191949b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h 
    1920 (.)93 b(24)518 4342 y(6.)41 b(COLLECTIONS)28 b(OF)i(DOCUMENTS)83 
     1950(.)93 b(26)518 4907 y(6.)41 b(COLLECTIONS)28 b(OF)i(DOCUMENTS)83 
    19211951b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)93 
    1922 b(25)518 4455 y(7.)41 b(A)m(GGREGA)-8 b(TION)32 b(WITH)f(INDEPENDENT)f 
    1923 (W)m(ORKS)83 b(.)45 b(.)h(.)g(.)f(.)h(.)93 b(25)518 4568 
     1952b(27)518 5020 y(7.)41 b(A)m(GGREGA)-8 b(TION)32 b(WITH)f(INDEPENDENT)f 
     1953(W)m(ORKS)83 b(.)45 b(.)h(.)g(.)f(.)h(.)93 b(27)518 5133 
    19241954y(8.)41 b(TRANSLA)-8 b(TION)91 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g 
    19251955(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)93 
    1926 b(25)518 4681 y(9.)41 b(TERMINA)-8 b(TION)89 b(.)45 b(.)h(.)g(.)f(.)h 
     1956b(27)518 5246 y(9.)41 b(TERMINA)-8 b(TION)89 b(.)45 b(.)h(.)g(.)f(.)h 
    19271957(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) 
    1928 g(.)f(.)h(.)93 b(26)518 4794 y(10.)42 b(FUTURE)30 b(REVISIONS)f(OF)h 
     1958g(.)f(.)h(.)93 b(28)518 5359 y(10.)42 b(FUTURE)30 b(REVISIONS)f(OF)h 
    19291959(THIS)g(LICENSE)91 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)93 
    1930 b(26)518 4907 y(ADDENDUM:)33 b(Ho)m(w)e(to)g(use)f(this)f(License)h 
    1931 (for)h(y)m(our)f(do)s(cumen)m(ts)74 b(.)46 b(.)f(.)h(.)93 
    1932 b(26)p 382 5556 V 1850 5669 a Fn(2)p eop end 
     1960b(28)p 382 5556 V 1850 5669 a Fn(2)p eop end 
    19331961%%Page: 3 4 
    1934 TeXDict begin 3 3 bop 382 232 a Fm(Pr)-5 b(efac)g(e)p 
     1962TeXDict begin 3 3 bop 382 232 a Fm(CONTENTS)1812 b Fn(CONTENTS)p 
     1963382 274 2989 9 v 518 565 a Fp(ADDENDUM:)33 b(Ho)m(w)e(to)g(use)f(this)f 
     1964(License)h(for)h(y)m(our)f(do)s(cumen)m(ts)74 b(.)46 
     1965b(.)f(.)h(.)93 b(28)p 382 5556 V 1850 5669 a Fn(3)p eop 
     1966end 
     1967%%Page: 4 5 
     1968TeXDict begin 4 4 bop 382 232 a Fm(Pr)-5 b(efac)g(e)p 
    19351969382 274 2989 9 v 382 1187 a Fk(Chapter)65 b(1)382 1602 
    19361970y Fl(Preface)382 2047 y Fp(The)31 b(idea)h(b)s(ehind)d(DGrammar)j(w)m 
     
    19752009(to)382 4418 y(hit)d(the)i(En)m(ter)f(k)m(ey)-8 b(,)32 
    19762010b(it)e(is)g(sho)m(wn)f(with:)40 b Fo( )-15 b Fg(-)p Fp(.)p 
    1977 382 5556 V 1850 5669 a Fn(3)p eop end 
    1978 %%Page: 4 5 
    1979 TeXDict begin 4 4 bop 382 232 a Fm(A)37 b(\014rst)h(lo)-5 
     2011382 5556 V 1850 5669 a Fn(4)p eop end 
     2012%%Page: 5 6 
     2013TeXDict begin 5 5 bop 382 232 a Fm(A)37 b(\014rst)h(lo)-5 
    19802014b(ok)p 382 274 2989 9 v 382 1187 a Fk(Chapter)65 b(2)382 
    1981 1602 y Fl(A)78 b(\014rst)f(lo)6 b(ok)382 2047 y Fp(These)29 
    1982 b(da)m(ys)g(man)m(y)g(p)s(eople)e(lik)m(e)h(to)i(write)e(extensiv)m(e)i 
    1983 (in)m(tro)s(ductions)c(on)j(ho)m(w)g(some-)382 2160 y(thing)c(w)m(orks) 
    1984 h(b)s(efore)f(actually)h(w)m(orking)f(with)g(it.)39 b(In)25 
     20151602 y Fl(A)78 b(\014rst)f(lo)6 b(ok)382 2084 y Ff(2.1)135 
     2016b(The)45 b(famous)g(example)382 2287 y Fp(These)29 b(da)m(ys)g(man)m(y) 
     2017g(p)s(eople)e(lik)m(e)h(to)i(write)e(extensiv)m(e)i(in)m(tro)s 
     2018(ductions)c(on)j(ho)m(w)g(some-)382 2400 y(thing)c(w)m(orks)h(b)s 
     2019(efore)f(actually)h(w)m(orking)f(with)g(it.)39 b(In)25 
    19852020b(this)g(b)s(o)s(ok)g(w)m(e)i(just)e(b)s(egin)g(with)382 
    1986 2273 y(writing)k(the)i(\014rst)f(application.)41 b(Before)32 
     20212513 y(writing)k(the)i(\014rst)f(application.)41 b(Before)32 
    19872022b(diving)d(in)m(to)i(it,)g(mak)m(e)h(sure)e(y)m(ou)i(ha)m(v)m(e)g(a)f 
    1988 (D)382 2386 y(compiler)d(suc)m(h)i(as)g(DMD,)h(a)m(v)-5 
     2023(D)382 2626 y(compiler)d(suc)m(h)i(as)g(DMD,)h(a)m(v)-5 
    19892024b(ailable)30 b(from)f Fj(http://www.digitalmars.c)-5 
    1990 b(om/)q(d/)51 b Fp(and)382 2499 y(DGrammar)31 b(installed)d(prop)s 
    1991 (erly)g(\(App)s(endix)g(A\).)523 2612 y(Let's)j(lo)s(ok)f(ho)m(w)g(a)h 
     2025b(om/)q(d/)51 b Fp(and)382 2738 y(DGrammar)31 b(installed)d(prop)s 
     2026(erly)g(\(App)s(endix)g(A\).)523 2851 y(Let's)j(lo)s(ok)f(ho)m(w)g(a)h 
    19922027(simple)d(DGrammar)j(\014le)f(lo)s(oks)g(lik)m(e:)382 
    1993 2800 y Fi(\045module)46 b(example1)382 2912 y(Body:)573 
    1994 3025 y("Hello)g(World!"/s)1047 b([)48 b(ParseBody)d(])286 
    1995 b(;)382 3213 y Fp(The)27 b Fi(\045module)g Fp(directiv)m(e)g(tells)g 
     20282998 y Fi(\045module)46 b(example1)382 3111 y(Body:)573 
     20293224 y("Hello)g(World!"/s)1047 b([)48 b(ParseBody)d(])286 
     2030b(;)382 3370 y Fp(The)27 b Fi(\045module)g Fp(directiv)m(e)g(tells)g 
    19962031(the)h(DGrammar)h(compiler)e(that)h(the)g(compiler)f(gen-)382 
    1997 3326 y(erated)41 b(should)d(b)s(e)i(placed)f(in)g(the)i(mo)s(dule)d 
     20323483 y(erated)41 b(should)d(b)s(e)i(placed)f(in)g(the)i(mo)s(dule)d 
    19982033(`example1'.)71 b(It)41 b(b)s(eha)m(v)m(es)f(similar)e(to)382 
    1999 3439 y(what)30 b(D)h(do)s(es)f(with)f Fi(module)p Fp(.)382 
    2000 3725 y Ff(2.1)135 b(The)45 b(Grammar)382 3928 y Fp(The)26 
     20343596 y(what)30 b(D)h(do)s(es)f(with)f Fi(module)p Fp(.)382 
     20353874 y Ff(2.2)135 b(The)45 b(Grammar)382 4077 y Fp(The)26 
    20012036b(grammer)h(itself)e(sho)m(ws)h(some)i(particular)c(in)m(teresting)i 
    2002 (information.)38 b(The)26 b(\014rst)382 4041 y(line)32 
     2037(information.)38 b(The)26 b(\014rst)382 4190 y(line)32 
    20032038b(con)m(tains)i(the)g Fi(Body)f Fp(statemen)m(t,)k(follo)m(w)m(ed)d(b)m 
    20042039(y)f(a)i(colon.)51 b(This)32 b(marks)i(the)g(b)s(e-)382 
    2005 4154 y(ginning)28 b(of)j(a)f(grammar,)h(in)e(this)g(case)j(the)e 
    2006 (grammar)h(named)f Fi(Body)p Fp(.)523 4267 y(On)21 b(the)g(next)h(line) 
     20404303 y(ginning)28 b(of)j(a)f(grammar,)h(in)e(this)g(case)j(the)e 
     2041(grammar)h(named)f Fi(Body)p Fp(.)523 4416 y(On)21 b(the)g(next)h(line) 
    20072042e(there)i(is)e(a)i(statemen)m(t)h Fi("Hello)46 b(World!"/s)p 
    2008 Fp(,)21 b(whic)m(h)g(indicates)382 4380 y(that)29 b(a)g(string)f 
     2043Fp(,)21 b(whic)m(h)g(indicates)382 4529 y(that)29 b(a)g(string)f 
    20092044(should)e(b)s(e)i(matc)m(hed)i(with)d(the)i(c)m(haracters)h(in)d(that)j 
    2010 (order.)39 b(One)28 b(can)382 4493 y(read)i(this)f(part)i(as:)382 
    2011 4705 y(\006)25 b(=)g Fo(f)p Fg(H)r(;)15 b(d;)g(e;)g(l)r(;)g(r)m(;)g(W)m 
    2012 (;)g Fo(t)p Fg(;)g Fp(!)p Fo(g)382 4818 y Fg(L)444 4832 
    2013 y Fe(1)508 4818 y Fp(=)25 b Fo(f)q Fg(H)7 b(el)r(l)r(o)20 
     2045(order.)39 b(One)28 b(can)382 4642 y(read)i(this)f(part)i(as:)382 
     20464805 y(\006)25 b(=)g Fo(f)p Fg(H)7 b(el)r(l)r(o)21 b 
     2047Fo(t)e Fg(w)r(or)s(l)r(d)p Fp(!)p Fo(g)382 4918 y Fg(L)444 
     20484932 y Fe(1)508 4918 y Fp(=)25 b Fo(f)q Fg(H)7 b(el)r(l)r(o)20 
    20142049b Fo(t)g Fg(W)13 b(or)s(l)r(d)p Fp(!)p Fo(g)25 b(2)g 
    2015 Fp(\006)1488 4785 y Fd(\003)523 5031 y Fp(So)35 b(the)g(language)h 
    2016 Fg(L)1261 5045 y Fe(1)1335 5031 y Fp(con)m(tains)f(the)g(sen)m(tence)i 
     2050Fp(\006)1488 4885 y Fd(\003)523 5081 y Fp(So)35 b(the)g(language)h 
     2051Fg(L)1261 5095 y Fe(1)1335 5081 y Fp(con)m(tains)f(the)g(sen)m(tence)i 
    20172052(`Hello)d(W)-8 b(orld!'.)55 b(No)36 b(other)f(ex-)382 
    2018 5144 y(pressions)22 b(are)i(sp)s(eci\014ed,)g(what)f(is)g(left)g(o)m(v) 
     20535194 y(pressions)22 b(are)i(sp)s(eci\014ed,)g(what)f(is)g(left)g(o)m(v) 
    20192054m(er)i(is)e(the)h Fi([)48 b(ParseBody)d(])23 b Fp(Rule)g(sp)s 
    2020 (eci\014er,)382 5256 y(whic)m(h)29 b(is)g(used)h(while)e(ev)-5 
     2055(eci\014er,)382 5307 y(whic)m(h)29 b(is)g(used)h(while)e(ev)-5 
    20212056b(aluating,)30 b(and)g(the)h(semicolon,)f(ending)f(the)h(grammar.)523 
    2022 5369 y(The)g(\014le)f(could)h(b)s(e)g(sa)m(v)m(ed)h(as)g(`example1.d'.) 
    2023 p 382 5556 V 1850 5669 a Fn(4)p eop end 
    2024 %%Page: 5 6 
    2025 TeXDict begin 5 5 bop 382 232 a Fm(A)37 b(\014rst)h(lo)-5 
     20575420 y(The)g(\014le)f(could)h(b)s(e)g(sa)m(v)m(ed)h(as)g(`example1.d'.) 
     2058p 382 5556 V 1850 5669 a Fn(5)p eop end 
     2059%%Page: 6 7 
     2060TeXDict begin 6 6 bop 382 232 a Fm(A)37 b(\014rst)h(lo)-5 
    20262061b(ok)1660 b Fn(Compile)34 b(and)h(Run)p 382 274 2989 
    2027 9 v 382 565 a Ff(2.2)135 b(Compile)46 b(and)f(Run)382 
     20629 v 382 565 a Ff(2.3)135 b(Compile)46 b(and)f(Run)382 
    20282063767 y Fp(Before)30 b(it)f(is)f(p)s(ossible)e(to)k(actually)f(use)f(the) 
    20292064i(grammar)f(it)f(needs)h(to)h(b)s(e)e(compiled)g(to)382 
     
    20652100(grammar,)f Fi(EParser.Body)p Fp(,)d(and)i(the)h(string)e(whic)m(h)h 
    20662101(needs)382 5420 y(to)i(b)s(e)f(parsed.)p 382 5556 V 1850 
    2067 5669 a Fn(5)p eop end 
    2068 %%Page: 6 7 
    2069 TeXDict begin 6 6 bop 382 232 a Fm(A)37 b(\014rst)h(lo)-5 
     21025669 a Fn(6)p eop end 
     2103%%Page: 7 8 
     2104TeXDict begin 7 7 bop 382 232 a Fm(A)37 b(\014rst)h(lo)-5 
    20702105b(ok)1660 b Fn(Compile)34 b(and)h(Run)p 382 274 2989 
    207121069 v 523 565 a Fp(If)f(the)h(resulting)e(parser)h(ob)5 
     
    20852120b(It)36 b(do)s(esn't)f(do)382 2205 y(m)m(uc)m(h,)c(and)e(it)h(probably) 
    20862121f(isn't)g(v)m(ery)i(useful,)e(but)h(it)g(w)m(orks.)p 
    2087 382 5556 V 1850 5669 a Fn(6)p eop end 
    2088 %%Page: 7 8 
    2089 TeXDict begin 7 7 bop 382 232 a Fm(A)37 b(b)-5 b(etter)38 
     2122382 5556 V 1850 5669 a Fn(7)p eop end 
     2123%%Page: 8 9 
     2124TeXDict begin 8 8 bop 382 232 a Fm(A)37 b(b)-5 b(etter)38 
    20902125b(gr)-5 b(ammar)p 382 274 2989 9 v 382 1187 a Fk(Chapter)65 
    20912126b(3)382 1602 y Fl(A)78 b(b)6 b(etter)79 b(grammar)382 
    2092 2047 y Fp(Let's)37 b(lo)s(ok)f(whether)g(it)h(is)e(p)s(ossible)f(to)k 
    2093 (split)c(the)j(`Hello)g(W)-8 b(orld!')59 b(grammar)37 
    2094 b(in)m(to)382 2160 y(more)h(logical)g(parts.)63 b(What)39 
    2095 b(to)g(think)e(of)h(the)g(parts)g(`Hello',)j(`)p Fo(t)p 
    2096 Fp(')d(and)f(`W)-8 b(orld!')10 b(?)382 2273 y(These)21 
    2097 b(parts)h(can)g(b)s(e)f(divided)e(in)m(to)j(three)g(sections.)38 
    2098 b(The)21 b(follo)m(wing)g(co)s(de)h(represen)m(ts)382 
    2099 2386 y(a)31 b(grammar)f(\014le)g(doing)f(this:)382 2599 
    2100 y Fi(\045module)46 b(example2)382 2711 y(Body:)573 2824 
    2101 y("Hello"/s)f(")j("/s)e("World!"/s)570 b([)48 b(ParseBody)d(])286 
    2102 b(;)523 3037 y Fp(This)42 b(is)i(m)m(uc)m(h)g(more)g(v)m(ersatile,)k 
     21272084 y Ff(3.1)135 b(Logical)46 b(separation)382 2287 
     2128y Fp(Let's)37 b(lo)s(ok)f(whether)g(it)h(is)e(p)s(ossible)f(to)k(split) 
     2129c(the)j(`Hello)g(W)-8 b(orld!')59 b(grammar)37 b(in)m(to)382 
     21302400 y(more)h(logical)g(parts.)63 b(What)39 b(to)g(think)e(of)h(the)g 
     2131(parts)g(`Hello',)j(`)p Fo(t)p Fp(')d(and)f(`W)-8 b(orld!')10 
     2132b(?)382 2513 y(These)21 b(parts)h(can)g(b)s(e)f(divided)e(in)m(to)j 
     2133(three)g(sections.)38 b(The)21 b(follo)m(wing)g(co)s(de)h(represen)m 
     2134(ts)382 2626 y(a)31 b(grammar)f(\014le)g(doing)f(this:)382 
     21352808 y Fi(\045module)46 b(example2)382 2921 y(Body:)573 
     21363034 y("Hello"/s)f(")j("/s)e("World!"/s)570 b([)48 b(ParseBody)d(])286 
     2137b(;)523 3216 y Fp(This)42 b(is)i(m)m(uc)m(h)g(more)g(v)m(ersatile,)k 
    21032138(since)43 b(the)i(grammar)f(no)m(w)g(is)f(devided)g(in)m(to)382 
    2104 3150 y(parts.)51 b(F)-8 b(rom)35 b(no)m(w)f(on,)g(DGrammar)h(de\014nes) 
    2105 e(\006)g(as)i(an)m(y)f(UTF-8)h(c)m(haracter.)53 b(Next)382 
    2106 3263 y(to)32 b(that,)g(an)m(y)g(language)f Fg(L)1331 
    2107 3277 y Fc(n)1409 3263 y Fp(can)h(exists)f(out)g(of)g(an)m(y)h(sen)m 
    2108 (tence)g(or)g(sen)m(tences)g(whic)m(h)382 3376 y(can)h(b)s(e)g(created) 
    2109 h(from)f(\006)1283 3343 y Fd(\003)1322 3376 y Fp(.)49 
    2110 b(No)m(w,)35 b(within)c(the)i(grammar)g Fi(Body)p Fp(,)g(three)h 
    2111 (Languages)382 3489 y(are)d(sp)s(eci\014ed:)382 3701 
    2112 y Fg(L)444 3715 y Fe(1)508 3701 y Fp(=)25 b Fo(f)q Fg(H)7 
    2113 b(el)r(l)r(o)p Fo(g)26 b(2)f Fp(\006)1100 3668 y Fd(\003)382 
    2114 3814 y Fg(L)444 3828 y Fe(2)508 3814 y Fp(=)g Fo(f)c(t)f(g)26 
    2115 b(2)e Fp(\006)973 3781 y Fd(\003)382 3927 y Fg(L)444 
    2116 3941 y Fe(3)508 3927 y Fp(=)h Fo(f)q Fg(W)13 b(or)s(l)r(d)p 
    2117 Fp(!)p Fo(g)25 b(2)g Fp(\006)1160 3894 y Fd(\003)523 
    2118 4139 y Fp(T)-8 b(ogether)33 b(they)g(form)e(a)i(concatenation)h(of)e 
    2119 (the)g(language:)45 b Fg(L)2733 4153 y Fc(p)2801 4139 
    2120 y Fp(=)28 b Fg(L)2962 4153 y Fe(1)3001 4139 y Fg(L)3063 
    2121 4153 y Fe(2)3102 4139 y Fg(L)3164 4153 y Fe(3)3204 4139 
    2122 y Fp(.)46 b(So)382 4252 y Fg(L)444 4266 y Fc(p)515 4252 
    2123 y Fp(de\014nes)30 b(the)i(language)g Fg(L)1414 4266 y 
    2124 Fc(p)1480 4252 y Fp(=)27 b Fo(f)q Fg(H)7 b(el)r(l)r(o)21 
    2125 b Fo(t)f Fg(W)13 b(or)s(l)r(d)p Fp(!)p Fo(g)p Fp(.)44 
    2126 b(T)-8 b(ec)m(hnically)30 b(this)h(grammar)382 4365 y(is)23 
    2127 b(not)h(acting)g(di\013eren)m(t)f(as)h(the)g(previous)e(grammar,)j(but) 
    2128 e(it)g(sho)m(ws)h(ho)m(w)g(to)g(logically)382 4478 y(split)k(up)i(the)g 
    2129 (grammar)h(in)e(di\013eren)m(t)h(comp)s(onen)m(ts.)382 
    2130 4765 y Ff(3.1)135 b(Clim)l(bing)46 b(up)f(the)g(hill)382 
    2131 4968 y Fp(No)m(w)33 b(it)e(is)g(somewhat)i(cum)m(b)s(ersome)e(to)i(ha)m 
    2132 (v)m(e)h(to)e(sp)s(ecify)f(the)h(whitespace)g(c)m(harac-)382 
    2133 5080 y(ter)39 b(within)d(the)i(grammar.)66 b(It)38 b(mak)m(es)i(the)f 
    2134 (grammar)f(di\016cult)f(to)i(read.)65 b(So)38 b(the)382 
    2135 5193 y(follo)m(wing)33 b(grammar,)j(exp)s(oses)f(the)g 
    2136 Fi(\045ignore)e Fp(directiv)m(e.)54 b(This)33 b(directiv)m(e)h(giv)m 
    2137 (es)h(us)382 5306 y(the)30 b(p)s(ossibilit)m(y)d(to)k(to)h(ignore)d(a)i 
    2138 (sp)s(eci\014ed)e(grammar.)p 382 5556 V 1850 5669 a Fn(7)p 
    2139 eop end 
    2140 %%Page: 8 9 
    2141 TeXDict begin 8 8 bop 382 232 a Fm(A)37 b(b)-5 b(etter)38 
    2142 b(gr)-5 b(ammar)1237 b Fn(Clim)m(bing)34 b(up)h(the)f(hill)p 
    2143 382 274 2989 9 v 382 565 a Fi(\045module)46 b(example3)382 
    2144 677 y(\045ignore)g(WhiteSpace)382 790 y(Body:)573 903 
    2145 y("Hello"/s)f("World!"/s)856 b([)48 b(ParseBody)d(])286 
    2146 b(;)382 1129 y(<WhiteSpace>)44 b(WhiteSpace:)573 1242 
    2147 y("[\\s]+"/r)1381 b([)48 b(ParseWhite)d(])238 b(;)523 
    2148 1430 y Fp(The)38 b Fi(\045ignore)f Fp(tells)h(the)h(generated)g(parser) 
    2149 f(that)i(it)e(has)g(to)i(skip)d(ev)m(erything)382 1543 
    2150 y(b)s(eing)j(a)h(whitespace.)73 b(W)-8 b(ell,)44 b(not)d(exactly)-8 
    2151 b(.)74 b(It)42 b(tells)e(the)h(parser)g(that)g(it)g(has)g(to)382 
    2152 1655 y(skip)36 b(ev)m(ery)j(whitespace)f(within)d(a)j(sp)s(eci\014ed)e 
    2153 (mac)m(hine.)63 b(Ho)m(w)m(ev)m(er,)42 b(the)c(standard)382 
    2154 1768 y(mac)m(hine)28 b(is)g(unnamed,)f(and)h(not)h(visible.)38 
    2155 b(A)28 b(mac)m(hine)g(is)g(sp)s(eci\014ed)f(b)s(et)m(w)m(een)i 
    2156 Fi(<)f Fp(and)382 1881 y Fi(>)p Fp(.)45 b(These)31 b(sp)s(eci\014ers)f 
    2157 (are)j(within)c(another)j(scop)s(e)g(as)g(the)g(grammar)g(sp)s 
    2158 (eci\014ers)e(and)382 1994 y(therefore)h(the)f(sp)s(eci\014er)f(names)h 
    2159 (ma)m(y)h(b)s(e)f(the)h(same.)523 2107 y(As)d(can)g(b)s(e)g(seen,)g 
    2160 (the)h Fi(WhiteSpace)c Fp(grammar)j(is)f(de\014ned)g(within)e(another)j 
    2161 (ma-)382 2220 y(c)m(hine.)55 b(This)33 b(is)h(necessary)-8 
    2162 b(,)38 b(b)s(ecause)d(if)f(w)m(e)i(need)f(to)h(skip)e(whitespaces,)i(w) 
    2163 m(e)g(don't)382 2333 y(w)m(an)m(t)e(to)g(skip)e(them)h(also)g(within)e 
    2164 (the)i Fi(WhiteSpace)d Fp(grammar)k(itself,)e(b)s(ecause)i(al-)382 
    2165 2446 y(though)c(it)g(is)f(a)i(correct)h(sp)s(eci\014cation,)d(the)i 
    2166 (generated)g(parser)f(will)d(crash.)523 2559 y(When)39 
    2167 b(calling)f(another)i(mac)m(hine,)h(the)f(grammar)f(itself)f(sp)s 
    2168 (ecifying)g(the)h(ma-)382 2672 y(c)m(hine)i(switc)m(hes)g(the)g(con)m 
    2169 (text,)47 b(so)41 b(that)h(is)f(wh)m(y)g(the)g Fi(\045ignore)f 
    2170 Fp(directiv)m(e)h(do)s(esn't)382 2785 y(need)34 b(to)h(sp)s(ecify)e 
    2171 (the)h(name)g(of)g(the)h(new)f(mac)m(hine.)51 b(Dev)m(elop)s(ers)35 
    2172 b(with)e(kno)m(wledge)382 2897 y(of)d(the)h(FLEX)g(or)f(LEX)g(lexer)g 
    2173 (will)e(see)j(something)f(familiar)e(here.)523 3010 y(Another)i(new)g 
    2174 (thing)g(is)f(the)i Fi(/r)f Fp(switc)m(h,)g(whic)m(h)f(indicates)g 
    2175 (that)i(w)m(e)g(ha)m(v)m(e)h(to)f(do)382 3123 y(with)36 
    2176 b(a)h(regular)f(expression)g(instead)h(of)g(a)g(normal)g(string.)59 
    2177 b(Regular)37 b(expressions)382 3236 y(are)31 b(those)g(used)e(in)g(the) 
    2178 i Fi(std.regexp)c Fp(pac)m(k)-5 b(age)33 b(of)d(D.)523 
    2179 3349 y(This)g(grammar)h(is)f(di\013eren)m(t)h(from)g(the)h(previous)e 
    2180 (grammar)h(b)s(ecause)g(it)g(allo)m(ws)382 3462 y(to)f(en)m(ter)g(more) 
    2181 f(spaces)h(b)s(et)m(w)m(een)g(`Hello')f(and)f(`W)-8 b(orld!'.)41 
    2182 b(The)29 b(follo)m(wing)e(languages)382 3575 y(sp)s(ecify)i(ho)m(w)h 
    2183 (the)h(parser)f(acts:)382 3787 y Fg(L)444 3801 y Fc(a)p 
    2184 Fe(1)546 3787 y Fp(=)25 b Fo(f)p Fg(H)7 b(el)r(l)r(o)p 
    2185 Fo(g)26 b(2)f Fp(\006)1137 3754 y Fd(\003)382 3900 y 
    2186 Fg(L)444 3914 y Fc(a)p Fe(2)546 3900 y Fp(=)g Fo(f)p 
    2187 Fg(W)13 b(or)s(l)r(d)p Fp(!)p Fo(g)26 b(2)e Fp(\006)1197 
    2188 3867 y Fd(\003)382 4029 y Fg(L)444 4044 y Fc(b)503 4029 
    2189 y Fp(=)599 3935 y Fb(n)655 4029 y Fo(f)c(t)g(g)847 3985 
    2190 y Fe(+)906 3935 y Fb(o)986 4029 y Fo(2)25 b Fp(\006)1138 
    2191 3996 y Fd(\003)382 4151 y Fg(L)444 4165 y Fc(p)509 4151 
    2192 y Fp(=)g Fg(L)667 4166 y Fc(b)701 4151 y Fg(L)763 4165 
    2193 y Fc(a)p Fe(1)840 4151 y Fg(L)902 4166 y Fc(b)936 4151 
    2194 y Fg(L)998 4165 y Fc(a)p Fe(2)1075 4151 y Fg(L)1137 4166 
    2195 y Fc(b)523 4364 y Fp(No)m(w)h(w)m(e)f(can)g(sligh)m(tly)f(alter)g(the)i 
    2196 (co)s(de)f(of)g(the)g(D)g(\014le,)h(the)f(D)g(\014le)f(using)g(this)f 
    2197 (co)s(de)382 4477 y(w)m(ould)29 b(no)m(w)h(lo)s(ok)g(lik)m(e:)382 
    2198 4689 y Fi(module)46 b(main;)382 4915 y(import)g(std.cstream;)382 
    2199 5028 y(import)g(std.stdio;)382 5141 y(import)g(example3;)382 
    2200 5367 y(int)h(main\(char[][])d(args\))i({)p 382 5556 V 
    2201 1850 5669 a Fn(8)p eop end 
     21393329 y(parts.)52 b(An)m(y)34 b(language)h Fg(L)1305 3343 
     2140y Fc(n)1386 3329 y Fp(can)f(exists)g(out)g(of)h(an)m(y)f(sen)m(tence)h 
     2141(or)g(sen)m(tences)g(whic)m(h)382 3442 y(can)e(b)s(e)g(created)h(from)f 
     2142(\006)1283 3409 y Fd(\003)1322 3442 y Fp(.)49 b(No)m(w,)35 
     2143b(within)c(the)i(grammar)g Fi(Body)p Fp(,)g(three)h(Languages)382 
     21443554 y(are)d(sp)s(eci\014ed:)382 3737 y(\006)25 b(=)g 
     2145Fo(f)p Fg(H)7 b(el)r(l)r(o;)15 b Fo(t)p Fg(;)g(W)e(or)s(l)r(d)p 
     2146Fp(!)p Fo(g)382 3850 y Fg(L)444 3864 y Fe(1)508 3850 
     2147y Fp(=)25 b Fo(f)q Fg(H)7 b(el)r(l)r(o)p Fo(g)26 b(2)f 
     2148Fp(\006)1100 3817 y Fd(\003)382 3963 y Fg(L)444 3977 
     2149y Fe(2)508 3963 y Fp(=)g Fo(f)c(t)f(g)26 b(2)e Fp(\006)973 
     21503930 y Fd(\003)382 4075 y Fg(L)444 4089 y Fe(3)508 4075 
     2151y Fp(=)h Fo(f)q Fg(W)13 b(or)s(l)r(d)p Fp(!)p Fo(g)25 
     2152b(2)g Fp(\006)1160 4042 y Fd(\003)523 4258 y Fp(T)-8 
     2153b(ogether)33 b(they)g(form)e(a)i(concatenation)h(of)e(the)g(language:) 
     215445 b Fg(L)2733 4272 y Fc(p)2801 4258 y Fp(=)28 b Fg(L)2962 
     21554272 y Fe(1)3001 4258 y Fg(L)3063 4272 y Fe(2)3102 4258 
     2156y Fg(L)3164 4272 y Fe(3)3204 4258 y Fp(.)46 b(So)382 
     21574371 y Fg(L)444 4385 y Fc(p)515 4371 y Fp(de\014nes)30 
     2158b(the)i(language)g Fg(L)1414 4385 y Fc(p)1480 4371 y 
     2159Fp(=)27 b Fo(f)q Fg(H)7 b(el)r(l)r(o)21 b Fo(t)f Fg(W)13 
     2160b(or)s(l)r(d)p Fp(!)p Fo(g)p Fp(.)44 b(T)-8 b(ec)m(hnically)30 
     2161b(this)h(grammar)382 4483 y(is)23 b(not)h(acting)g(di\013eren)m(t)f(as) 
     2162h(the)g(previous)e(grammar,)j(but)e(it)g(sho)m(ws)h(ho)m(w)g(to)g 
     2163(logically)382 4596 y(split)k(up)i(the)g(grammar)h(in)e(di\013eren)m(t) 
     2164h(comp)s(onen)m(ts.)382 4878 y Ff(3.2)135 b(Case)46 b(insensitiv)l(e)h 
     2165(matc)l(hing)382 5081 y Fp(Sometimes,)29 b(y)m(ou)h(don't)g(only)e(w)m 
     2166(an)m(t)j(\\Hello)e(W)-8 b(orld!")40 b(to)31 b(b)s(e)d(v)-5 
     2167b(alid,)29 b(but)f(also)i(v)-5 b(aria-)382 5194 y(tions,)31 
     2168b(suc)m(h)g(as)h(\\HELLO)f(W)m(ORLD!")i(or)e(\\hello)g(w)m(orld!".)44 
     2169b(This)29 b(can)j(b)s(e)f(ac)m(hiev)m(ed)382 5307 y(using)i(case)j 
     2170(insensitiv)m(e)d(matc)m(hing.)54 b(If)34 b(w)m(e)h(w)m(an)m(t)h(to)f 
     2171(do)g(this,)g(w)m(e)g(ha)m(v)m(e)h(to)f(rewrite)382 5420 
     2172y(the)30 b(previous)f(example)h(as:)p 382 5556 V 1850 
     21735669 a Fn(8)p eop end 
    22022174%%Page: 9 10 
    22032175TeXDict begin 9 9 bop 382 232 a Fm(A)37 b(b)-5 b(etter)38 
    2204 b(gr)-5 b(ammar)1527 b Fn(Base)35 b(Camp)e(I)s(I)p 382 
    2205 274 2989 9 v 573 565 a Fi(char[])46 b(line;)573 677 y(line)g(=)i(\(new) 
    2206 f(CFile\(stdin,)d(FileMode.In\)\).readLine\(\))o(;)573 
    2207 903 y(register\(\);)573 1016 y(Parser)i(parser)g(=)h 
    2208 (parse\(EParser.Body,)c(line\);)573 1242 y(if\(parser)i(is)i(null\))g 
    2209 ({)764 1355 y(writefln\("You)d(didn't)i(enter)g('Hello)g(World!'"\);) 
    2210 573 1468 y(})h(else)g({)764 1581 y(writefln\("Hello)c(to)48 
    2211 b(you!"\);)573 1694 y(})573 1807 y(return)e(0;)382 1919 
    2212 y(})523 2132 y Fp(Notice)29 b(that)f(the)g(strip)e(function)h(isn't)f 
    2213 (needed)i(an)m(ymore,)h(since)e(it)g(is)g(automat-)382 
    2214 2245 y(ically)i(implemen)m(ted)g(with)g(the)h(whitespace)g(grammar.)41 
    2215 b(When)30 b(running)e(the)j(build)382 2358 y(executable,)g(the)g(follo) 
    2216 m(wing)e(giv)m(es)h(an)h(impression)c(of)k(p)s(ossibilities:)1508 
    2217 2570 y Fi($)47 b Fh(./example3)61 b Fo( )-15 b Fg(-)p 
    2218 896 2602 1961 4 v 894 2715 4 113 v 946 2681 a Fh(Hello)46 
    2219 b(World!)62 b Fo( )-15 b Fg(-)p 1731 2715 V 291 w Fh(Hello)142 
    2220 b(World!)62 b Fo( )-15 b Fg(-)p 2855 2715 V 894 2828 
    2221 V 946 2794 a Fi(Hello)46 b(to)i(you)p 1731 2828 V 263 
    2222 w(Hello)e(to)h(you)p 2855 2828 V 896 2831 1961 4 v 382 
    2223 3059 a Ff(3.2)135 b(Base)45 b(Camp)h(I)t(I)382 3262 y 
    2224 Fp(The)d(previous)f(generated)i(parsers)f(didn't)f(do)h(m)m(uc)m(h)h 
    2225 (usefull,)g(b)s(esides)e(c)m(hec)m(king)382 3374 y(whether)d(or)h(not)g 
    2226 (one)h(did)d(en)m(ter)i(a)h(string)e("Hello)g(W)-8 b(orld!".)70 
    2227 b(But)40 b(a)h(real)e(parser)382 3487 y(ofcourse)29 b(is)e(able)h(to)i 
    2228 (c)m(hec)m(k)g(logical)e(parts.)39 b(So)29 b(the)f(follo)m(wing)f 
    2229 (grammars)i(in)m(tro)s(duce)382 3600 y(a)g(w)m(a)m(y)g(to)g(let)g(the)f 
    2230 (scanned)g(line)f(in)m(terop)s(erate)i(with)e(the)i(generated)g 
    2231 (parser.)40 b(It)28 b(will)382 3713 y(c)m(ho)s(ose)37 
    2232 b(to)f(prin)m(t)f(a)h(n)m(um)m(b)s(er)e(or)i(c)m(haracter)h(on)f(the)g 
    2233 (screen,)h(when)e(one)h(en)m(ters)g(the)382 3826 y(k)m(eyw)m(ord)31 
    2234 b("prin)m(t";)382 4039 y Fi(\045module)46 b(example4;)382 
    2235 4152 y(\045ignore)g(WhiteSpace;)382 4264 y(Body:)573 
    2236 4377 y("print"/s)f("[0-9]+"/r)856 b([)48 b(PrintNum)d(])334 
    2237 b(|)573 4490 y("print"/s)45 b("[a-zA-Z]+"/r)712 b([)48 
    2238 b(PrintAlpha)d(])238 b(;)382 4716 y(<WhiteSpace>)44 b(WhiteSpace:)573 
    2239 4829 y("[\\s]+"/r)1381 b([)48 b(ParseWhite)d(])238 b(;)523 
    2240 5042 y Fp(What's)34 b(done)g(is)e(that)i(the)g(parser)e(c)m(hec)m(ks)j 
    2241 (whether)e(one)h(en)m(tered)g("prin)m(t")f(fol-)382 5154 
    2242 y(lo)m(w)m(ed)d(b)m(y)h(a)f(n)m(um)m(b)s(er)g(or)g(b)m(y)g(c)m 
    2243 (haracter.)42 b(The)30 b(grammar)h(can)f(b)s(e)g(read)g(as:)382 
    2244 5367 y Fg(L)444 5381 y Fc(a)511 5367 y Fp(=)25 b Fo(f)p 
    2245 Fg(pr)s(int)p Fo(g)g(2)g Fp(\006)1083 5334 y Fd(\003)p 
    2246 382 5556 2989 9 v 1850 5669 a Fn(9)p eop end 
     2176b(gr)-5 b(ammar)1595 b Fn(Whitespaces)p 382 274 2989 
     21779 v 382 565 a Fi(\045module)46 b(example2a;)382 677 y(Body:)573 
     2178790 y("Hello"/si)f(")i("/s)g("World!"/si)474 b([)48 b(ParseBody)d(])334 
     2179b(;)523 1003 y Fp(The)33 b Fi(/si)f Fp(switc)m(h)g(indicates)g(that)i 
     2180(a)f(sen)m(tence)i(matc)m(hes)f(against)f(all)f(case)i(v)-5 
     2181b(ari-)382 1116 y(an)m(ts.)42 b(This)29 b(allo)m(ws)h(y)m(ou)i(to)f 
     2182(create)h(a)g(grammar)e(used)g(in)g(programming)f(languages)382 
     21831229 y(as)i(BASIC)e(and)h(AD)m(A.)382 1515 y Ff(3.3)135 
     2184b(Whitespaces)382 1718 y Fp(No)m(w)25 b(it)g(is)e(somewhat)i(cum)m(b)s 
     2185(ersome)g(to)g(ha)m(v)m(e)h(to)f(sp)s(ecify)f(the)h(whitespace)f(c)m 
     2186(haracter)382 1831 y(within)32 b(a)j(sp)s(eci\014c)f(sym)m(b)s(ol)f(ev) 
     2187m(ery)j(time)e(again.)54 b(It)35 b(mak)m(es)h(the)f(grammar)g 
     2188(di\016cult)382 1944 y(to)42 b(read.)73 b(So)41 b(the)h(follo)m(wing)d 
     2189(grammar)j(exp)s(oses)f(the)g Fi(\045ignore)f Fp(directiv)m(e.)72 
     2190b(This)382 2057 y(directiv)m(e)30 b(giv)m(es)h(us)e(the)i(p)s 
     2191(ossibilit)m(y)c(to)k(to)g(ignore)f(a)h(sp)s(eci\014ed)d(sym)m(b)s(ol.) 
     2192382 2244 y Fi(\045module)46 b(example3)382 2357 y(\045ignore)g 
     2193(WhiteSpace)382 2470 y(Body:)573 2583 y("Hello"/s)f("World!"/s)856 
     2194b([)48 b(ParseBody)d(])286 b(;)382 2809 y(<WhiteSpace>)44 
     2195b(WhiteSpace:)573 2922 y("[\\s]+"/r)1381 b([)48 b(ParseWhite)d(])238 
     2196b(;)523 3110 y Fp(The)38 b Fi(\045ignore)f Fp(tells)h(the)h(generated)g 
     2197(parser)f(that)i(it)e(has)g(to)i(skip)d(ev)m(erything)382 
     21983222 y(b)s(eing)j(a)h(whitespace.)73 b(W)-8 b(ell,)44 
     2199b(not)d(exactly)-8 b(.)74 b(It)42 b(tells)e(the)h(parser)g(that)g(it)g 
     2200(has)g(to)382 3335 y(skip)36 b(ev)m(ery)j(whitespace)f(within)d(a)j(sp) 
     2201s(eci\014ed)e(mac)m(hine.)63 b(Ho)m(w)m(ev)m(er,)42 b(the)c(standard) 
     2202382 3448 y(mac)m(hine)28 b(is)g(unnamed,)f(and)h(not)h(visible.)38 
     2203b(A)28 b(mac)m(hine)g(is)g(sp)s(eci\014ed)f(b)s(et)m(w)m(een)i 
     2204Fi(<)f Fp(and)382 3561 y Fi(>)p Fp(.)63 b(These)37 b(sp)s(eci\014ers)g 
     2205(are)h(within)d(another)j(scop)s(e)g(as)g(the)g(sym)m(b)s(ol)f(sp)s 
     2206(eci\014ers)f(and)382 3674 y(therefore)31 b(the)f(sp)s(eci\014er)f 
     2207(names)h(ma)m(y)h(b)s(e)f(the)h(same,)g(they)f(don't)h(clash.)523 
     22083787 y(As)d(can)g(b)s(e)g(seen,)g(the)h Fi(WhiteSpace)c 
     2209Fp(grammar)j(is)f(de\014ned)g(within)e(another)j(ma-)382 
     22103900 y(c)m(hine.)55 b(This)33 b(is)h(necessary)-8 b(,)38 
     2211b(b)s(ecause)d(if)f(w)m(e)i(need)f(to)h(skip)e(whitespaces,)i(w)m(e)g 
     2212(don't)382 4013 y(w)m(an)m(t)41 b(to)g(skip)d(them)j(also)f(within)d 
     2213(the)k Fi(WhiteSpace)c Fp(sym)m(b)s(ol)i(itself,)j(b)s(ecause)e(al-)382 
     22144126 y(though)30 b(it)g(is)f(a)i(correct)h(sp)s(eci\014cation,)d(the)i 
     2215(generated)g(parser)f(will)d(crash.)523 4239 y(When)i(calling)e 
     2216(another)i(mac)m(hine,)g(the)h(sym)m(b)s(ol)d(itself)h(sp)s(ecifying)f 
     2217(the)i(mac)m(hine)382 4352 y(switc)m(hes)k(the)g(con)m(text,)k(so)c 
     2218(that)h(is)e(wh)m(y)h(the)h Fi(\045ignore)d Fp(directiv)m(e)i(do)s 
     2219(esn't)g(need)g(to)382 4464 y(sp)s(ecify)38 b(the)h(name)g(of)g(the)g 
     2220(new)g(mac)m(hine.)66 b(Dev)m(elop)s(ers)39 b(with)f(kno)m(wledge)h(of) 
     2221g(the)382 4577 y(FLEX)30 b(or)h(LEX)f(lexer)g(will)e(see)j(something)e 
     2222(familiar)g(here.)523 4690 y(Another)h(new)g(thing)g(is)f(the)i 
     2223Fi(/r)f Fp(switc)m(h,)g(whic)m(h)f(indicates)g(that)i(w)m(e)g(ha)m(v)m 
     2224(e)h(to)f(do)382 4803 y(with)36 b(a)h(regular)f(expression)g(instead)h 
     2225(of)g(a)g(normal)g(string.)59 b(Regular)37 b(expressions)382 
     22264916 y(are)27 b(those)g(used)e(in)g(the)i Fi(std.regexp)d 
     2227Fp(pac)m(k)-5 b(age)28 b(of)f(D.)g(Of)f(course,)h(it)f(is)g(also)g(p)s 
     2228(ossible)382 5029 y(to)31 b(use)f Fi(/ri)g Fp(whic)m(h)f(is,)g(just)h 
     2229(as)h(the)f(string)g(coun)m(terpart)h Fi(/si)p Fp(,)e(case)j 
     2230(insensitiv)m(e.)523 5142 y(This)e(grammar)h(is)f(di\013eren)m(t)h 
     2231(from)g(the)h(previous)e(grammar)h(b)s(ecause)g(it)g(allo)m(ws)382 
     22325255 y(to)f(en)m(ter)g(more)f(spaces)h(b)s(et)m(w)m(een)g(`Hello')f 
     2233(and)f(`W)-8 b(orld!'.)41 b(The)29 b(follo)m(wing)e(languages)382 
     22345368 y(sp)s(ecify)i(ho)m(w)h(the)h(parser)f(acts:)p 382 
     22355556 V 1850 5669 a Fn(9)p eop end 
    22472236%%Page: 10 11 
    22482237TeXDict begin 10 10 bop 382 232 a Fm(A)37 b(b)-5 b(etter)38 
    2249 b(gr)-5 b(ammar)1527 b Fn(Base)35 b(Camp)e(I)s(I)p 382 
    2250 274 2989 9 v 382 571 a Fg(L)444 586 y Fc(bn)546 571 y 
    2251 Fp(=)642 477 y Fb(n)697 571 y Fo(f)q Fp(0)p Fg(;)15 b 
    2252 Fp(1)p Fg(;)g Fp(2)p Fg(;)g Fp(3)p Fg(;)g Fp(4)p Fg(;)g 
    2253 Fp(5)p Fg(;)g Fp(6)p Fg(;)g Fp(7)p Fg(;)h Fp(8)p Fg(;)g 
    2254 Fp(9)p Fo(g)1607 526 y Fe(+)1666 477 y Fb(o)1746 571 
    2255 y Fo(2)25 b Fp(\006)1898 538 y Fd(\003)382 728 y Fg(L)444 
    2256 743 y Fc(ba)541 728 y Fp(=)637 634 y Fb(n)692 728 y Fo(f)q 
    2257 Fg(a;)15 b(b;)g(:)g(:)g(:)i(;)e(z)t(;)g(A;)g(B)5 b(;)15 
    2258 b(:)g(:)g(:)i(;)e(Z)7 b Fo(g)1652 684 y Fe(+)1711 634 
    2259 y Fb(o)1792 728 y Fo(2)24 b Fp(\006)1943 695 y Fd(\003)382 
    2260 886 y Fg(L)444 901 y Fc(b)503 886 y Fp(=)599 792 y Fb(n)655 
    2261 886 y Fo(f)c(t)g(g)847 842 y Fe(+)906 792 y Fb(o)986 
    2262 886 y Fo(2)25 b Fp(\006)1138 853 y Fd(\003)382 1009 y 
    2263 Fg(L)444 1023 y Fc(an)553 1009 y Fp(=)g Fg(L)711 1024 
    2264 y Fc(b)746 1009 y Fg(L)808 1023 y Fc(a)849 1009 y Fg(L)911 
    2265 1024 y Fc(b)945 1009 y Fg(L)1007 1024 y Fc(bn)1084 1009 
    2266 y Fg(L)1146 1024 y Fc(b)382 1121 y Fg(L)444 1135 y Fc(aa)548 
    2267 1121 y Fp(=)g Fg(L)706 1136 y Fc(b)740 1121 y Fg(L)802 
    2268 1135 y Fc(a)844 1121 y Fg(L)906 1136 y Fc(b)940 1121 
    2269 y Fg(L)1002 1136 y Fc(ba)1074 1121 y Fg(L)1136 1136 y 
    2270 Fc(b)382 1234 y Fg(L)444 1248 y Fc(p)509 1234 y Fp(=)g 
    2271 Fg(L)667 1248 y Fc(an)771 1234 y Fo([)20 b Fg(L)914 1248 
    2272 y Fc(aa)523 1447 y Fp(As)30 b(one)g(can)g(see,)h(describing)c(suc)m(h)j 
    2273 (a)g(parser)f(without)g(the)h(help)e(of)i(a)h(grammar)382 
    2274 1560 y(and)37 b(without)g(regular)g(expressions,)h(it)f(b)s(ecomes)h(m) 
    2275 m(uc)m(h)g(of)g(an)f(art)h(whic)m(h)e(only)h(a)382 1673 
    2276 y(few)30 b(w)m(an)m(t)h(to)g(do.)523 1786 y(The)22 b(generated)h 
    2277 (parser)f(can)g(b)s(e)g(used)f(to)j(create)f(a)g(compiler)e(that)i(do)s 
    2278 (es)f(do)g(some-)382 1899 y(thing)29 b(with)g(the)i(en)m(tered)g(line.) 
    2279 39 b(Previously)-8 b(,)29 b(it)h(didn't)f(do)h(more)h(as)f(just)g(v)-5 
    2280 b(alidating)382 2011 y(if)26 b(the)h(co)s(de)g(w)m(as)h(sane,)g(but)e 
    2281 (w)m(e)i(can)f(ev)-5 b(aluate)28 b(the)f(co)s(de)h(b)m(y)f(creating)g 
    2282 (an)g(ev)-5 b(aluator.)382 2124 y(T)d(o)29 b(do)f(this,)g(one)h(deriv)m 
    2283 (es)f(a)h(class)f(from)g(the)h Fi(Evaluator)c Fp(in)m(terface.)41 
    2284 b(Here)29 b(is)f(ho)m(w)g(it)382 2237 y(is)h(done:)382 
    2285 2450 y Fi(module)46 b(main;)382 2676 y(import)g(std.cstream;)382 
    2286 2789 y(import)g(std.stdio;)382 2901 y(import)g(example4;)382 
    2287 3127 y(public)g(class)g(MyEvaluator)f(:)j(Evaluator)d({)573 
    2288 3240 y(public)h(Object)g(go\()764 3353 y(EParser)g(parserType,)e(Rule)j 
    2289 (rule,)f(char[])g(ruleName\))g({)764 3466 y(if\(parserType)e(==)j 
    2290 (EParser.Body)e(&&)907 3579 y(ruleName)g(==)j("PrintNum"\))c({)955 
    2291 3692 y(writefln\("Number:)f(\045s",)1146 3805 y 
    2292 (rule.elementAt\(1\).getMa)o(tch)o(\(\)\);)764 3918 y(})k(else)g({)955 
    2293 4031 y(writefln\("String:)c(\045s",)1146 4143 y 
    2294 (rule.elementAt\(1\).getMa)o(tch)o(\(\)\);)764 4256 y(})764 
    2295 4369 y(return)j(null;)573 4482 y(})382 4595 y(})382 4821 
    2296 y(int)h(main\(char[][])d(args\))i({)573 4934 y(char[])g(line;)573 
    2297 5047 y(line)g(=)i(\(new)f(CFile\(stdin,)d(FileMode.In\)\).readLine\(\)) 
    2298 o(;)573 5273 y(register\(\);)573 5385 y(Parser)i(parser)g(=)h 
    2299 (parse\(EParser.Body,)c(line\);)p 382 5556 V 1824 5669 
    2300 a Fn(10)p eop end 
     2238b(gr)-5 b(ammar)1442 b Fn(Colon)35 b(or)h(Arro)m(w)p 
     2239382 274 2989 9 v 382 565 a Fg(L)444 579 y Fc(a)p Fe(1)546 
     2240565 y Fp(=)25 b Fo(f)p Fg(H)7 b(el)r(l)r(o)p Fo(g)26 
     2241b(2)f Fp(\006)1137 532 y Fd(\003)382 677 y Fg(L)444 691 
     2242y Fc(a)p Fe(2)546 677 y Fp(=)g Fo(f)p Fg(W)13 b(or)s(l)r(d)p 
     2243Fp(!)p Fo(g)26 b(2)e Fp(\006)1197 644 y Fd(\003)382 806 
     2244y Fg(L)444 821 y Fc(b)503 806 y Fp(=)599 712 y Fb(n)655 
     2245806 y Fo(f)c(t)g(g)847 762 y Fe(+)906 712 y Fb(o)986 
     2246806 y Fo(2)25 b Fp(\006)1138 773 y Fd(\003)382 928 y 
     2247Fg(L)444 942 y Fc(p)509 928 y Fp(=)g Fg(L)667 943 y Fc(b)701 
     2248928 y Fg(L)763 942 y Fc(a)p Fe(1)840 928 y Fg(L)902 943 
     2249y Fc(b)936 928 y Fg(L)998 942 y Fc(a)p Fe(2)1075 928 
     2250y Fg(L)1137 943 y Fc(b)523 1141 y Fp(No)m(w)h(w)m(e)f(can)g(sligh)m 
     2251(tly)f(alter)g(the)i(co)s(de)f(of)g(the)g(D)g(\014le,)h(the)f(D)g 
     2252(\014le)f(using)g(this)f(co)s(de)382 1254 y(w)m(ould)29 
     2253b(no)m(w)h(lo)s(ok)g(lik)m(e:)382 1466 y Fi(module)46 
     2254b(main;)382 1692 y(import)g(std.cstream;)382 1805 y(import)g 
     2255(std.stdio;)382 1918 y(import)g(example3;)382 2144 y(int)h 
     2256(main\(char[][])d(args\))i({)573 2257 y(char[])g(line;)573 
     22572370 y(line)g(=)i(\(new)f(CFile\(stdin,)d(FileMode.In\)\).readLine\(\)) 
     2258o(;)573 2595 y(register\(\);)573 2708 y(Parser)i(parser)g(=)h 
     2259(parse\(EParser.Body,)c(line\);)573 2934 y(if\(parser)i(is)i(null\))g 
     2260({)764 3047 y(writefln\("You)d(didn't)i(enter)g('Hello)g(World!'"\);) 
     2261573 3160 y(})h(else)g({)764 3273 y(writefln\("Hello)c(to)48 
     2262b(you!"\);)573 3386 y(})573 3499 y(return)e(0;)382 3612 
     2263y(})523 3824 y Fp(Notice)29 b(that)f(the)g(strip)e(function)h(isn't)f 
     2264(needed)i(an)m(ymore,)h(since)e(it)g(is)g(automat-)382 
     22653937 y(ically)i(implemen)m(ted)g(with)g(the)h(whitespace)g(grammar.)41 
     2266b(When)30 b(running)e(the)j(build)382 4050 y(executable,)g(the)g(follo) 
     2267m(wing)e(giv)m(es)h(an)h(impression)c(of)k(p)s(ossibilities:)1508 
     22684263 y Fi($)47 b Fh(./example3)61 b Fo( )-15 b Fg(-)p 
     2269896 4294 1961 4 v 894 4407 4 113 v 946 4373 a Fh(Hello)46 
     2270b(World!)62 b Fo( )-15 b Fg(-)p 1731 4407 V 291 w Fh(Hello)142 
     2271b(World!)62 b Fo( )-15 b Fg(-)p 2855 4407 V 894 4520 
     2272V 946 4486 a Fi(Hello)46 b(to)i(you)p 1731 4520 V 263 
     2273w(Hello)e(to)h(you)p 2855 4520 V 896 4523 1961 4 v 382 
     22744752 a Ff(3.4)135 b(Colon)46 b(or)f(Arro)l(w)382 4955 
     2275y Fp(The)36 b(previous)g(example)h(can)g(b)s(e)f(rewritten)g(using)g 
     2276(an)h(arro)m(w)g(instead)f(of)h(a)h(colon)382 5068 y(to)32 
     2277b(iden)m(tify)e(eac)m(h)j(sym)m(b)s(ol.)44 b(The)31 b(follo)m(wing)f 
     2278(co)s(de)i(p)s(erforms)e(the)i(same)g(task)g(as)g(the)382 
     22795181 y(previous)d(example:)382 5393 y Fi(\045module)46 
     2280b(example3a)p 382 5556 2989 9 v 1824 5669 a Fn(10)p eop 
     2281end 
    23012282%%Page: 11 12 
    23022283TeXDict begin 11 11 bop 382 232 a Fm(A)37 b(b)-5 b(etter)38 
    2303 b(gr)-5 b(ammar)1527 b Fn(Base)35 b(Camp)e(I)s(I)p 382 
    2304 274 2989 9 v 573 677 a Fi(if\(parser)45 b(is)i(null\))g({)764 
    2305 790 y(writefln\("You)d(entered)i(garbage"\);)573 903 
    2306 y(})h(else)g({)764 1016 y(writefln\("It)d(parsed,)i(let's)g 
    2307 (evaluate"\);)764 1129 y(evaluate\(parser,)d(new)k(MyEvaluator\(\)\);) 
    2308 573 1242 y(})573 1355 y(return)f(0;)382 1468 y(})523 
    2309 1680 y Fp(It)41 b(is)f(really)f(not)i(di\016cult)e(to)j(mak)m(e)f(suc)m 
    2310 (h)g(ev)-5 b(aluators.)72 b(T)-8 b(o)41 b(giv)m(e)g(some)g(more)382 
    2311 1793 y(con)m(trol)i(o)m(v)m(er)h(ev)-5 b(aluating,)46 
    2312 b(it)d(is)e(advicable)h(to)i(extend)f(the)g Fi(DefaultEvaluator)382 
    2313 1906 y Fp(class,)32 b(whic)m(h)e(is)h(more)g(\015exible,)g(and)f(uses)i 
    2314 (t)m(w)m(o)g(metho)s(ds,)g(an)f Fi(enter)f Fp(and)h(a)h 
    2315 Fi(leave)382 2019 y Fp(metho)s(d.)40 b(More)31 b(on)f(this)g(in)f(the)h 
    2316 (next)h(c)m(hapter.)p 382 5556 V 1824 5669 a Fn(11)p 
     2284b(gr)-5 b(ammar)1442 b Fn(Colon)35 b(or)h(Arro)m(w)p 
     2285382 274 2989 9 v 382 565 a Fi(\045ignore)46 b(WhiteSpace)382 
     2286677 y(Body)h(-->)573 790 y("Hello"/s)e("World!"/s)856 
     2287b([)48 b(ParseBody)d(])286 b(;)382 1016 y(<WhiteSpace>)44 
     2288b(WhiteSpace)h(-->)573 1129 y("[\\s]+"/r)1381 b([)48 
     2289b(ParseWhite)d(])238 b(;)523 1342 y Fp(It)29 b(is)e(just)h(a)h(matter)h 
     2290(of)e(what)h(y)m(ou)g(lik)m(e)f(to)h(c)m(ho)s(ose.)41 
     2291b(It)29 b(is)e(also)i(fully)d(legal)j(to)g(use)382 1455 
     2292y(them)23 b(b)s(oth)f(in)g(the)i(same)f(source,)i(but)e(that)g(mak)m 
     2293(es)h(it)f(m)m(uc)m(h)g(harder)f(to)i(understand,)382 
     22941567 y(do)30 b(b)s(e)g(somewhat)h(disciplined)26 b(and)j(abstain)h 
     2295(from)g(doing)f(that.)p 382 5556 V 1824 5669 a Fn(11)p 
    23172296eop end 
    23182297%%Page: 12 13 
    23192298TeXDict begin 12 12 bop 382 232 a Fm(Evaluation)p 382 
    23202299274 2989 9 v 382 1187 a Fk(Chapter)65 b(4)382 1602 y 
    2321 Fl(Ev)-13 b(aluation)382 2084 y Ff(4.1)135 b(A)45 b(Nice)g(Grammar)382 
    2322 2287 y Fp(T)-8 b(o)25 b(illustrate)e(ho)m(w)i(the)g Fi 
    2323 (DefaultEvaluator)20 b Fp(w)m(orks,)26 b(the)f(follo)m(wing)e(dgrammar) 
    2324 i(\014le)382 2400 y(de\014nes)36 b(a)h(parser)f(whic)m(h)g(actually)h 
    2325 (do)s(es)f(something)g(useful.)59 b(It)37 b(calculates)g(using)382 
    2326 2513 y(the)30 b(op)s(erators)h(+,)f(-,)h(*)g(and)f(/,)h(on)f(signed)f 
    2327 (in)m(tegers.)382 2725 y Fi(\045module)46 b(example5;)382 
    2328 2838 y(\045ignore)g(WhiteSpace;)382 3064 y(<)h(WhiteSpace)e(>)j 
    2329 (WhiteSpace:)573 3177 y("[\\s\\r\\n\\t]")1190 b([)47 
    2330 b(WhiteSpace)e(])286 b(;)382 3403 y(Declarations:)573 
    2331 3516 y(Intermediate)44 b(";"/s)j(Declarations)283 b([)47 
    2332 b(Decl)g(])572 b(|)2339 3628 y([)47 b(Empty)g(])524 b(;)382 
    2333 3741 y(Intermediate:)573 3854 y(AddExp)1478 b([)47 b(Intermediate)e(]) 
    2334 190 b(;)382 4080 y(AddExp:)573 4193 y(AddExp)46 b("+"/s)g(MulExp)858 
    2335 b([)47 b(Add)g(])620 b(|)573 4306 y(AddExp)46 b("-"/s)g(MulExp)858 
    2336 b([)47 b(Substract)e(])334 b(|)573 4419 y(MulExp)1478 
    2337 b([)47 b(MulExp)f(])477 b(;)382 4645 y(MulExp:)573 4758 
    2338 y(MulExp)46 b("*"/s)g(Argument)762 b([)47 b(Multiply)f(])381 
    2339 b(|)573 4870 y(MulExp)46 b("/"/s)g(Argument)762 b([)47 
    2340 b(Divide)f(])477 b(|)573 4983 y(Argument)1382 b([)47 
    2341 b(Argument)f(])381 b(;)382 5209 y(Argument:)573 5322 
    2342 y("\\-?[0-9]+")1238 b([)47 b(Number)f(])477 b(;)p 382 
    2343 5556 V 1824 5669 a Fn(12)p eop end 
     2300Fl(Ev)-13 b(aluation)382 2084 y Ff(4.1)135 b(Simple)46 
     2301b(ev)-7 b(aluation)382 2287 y Fp(The)43 b(previous)f(generated)i 
     2302(parsers)f(didn't)f(do)h(m)m(uc)m(h)h(usefull,)g(b)s(esides)e(c)m(hec)m 
     2303(king)382 2400 y(whether)d(or)h(not)g(one)h(did)d(en)m(ter)i(a)h 
     2304(string)e("Hello)g(W)-8 b(orld!".)70 b(But)40 b(a)h(real)e(parser)382 
     23052513 y(ofcourse)29 b(is)e(able)h(to)i(c)m(hec)m(k)g(logical)e(parts.)39 
     2306b(So)29 b(the)f(follo)m(wing)f(grammars)i(in)m(tro)s(duce)382 
     23072626 y(a)g(w)m(a)m(y)g(to)g(let)g(the)f(scanned)g(line)f(in)m(terop)s 
     2308(erate)i(with)e(the)i(generated)g(parser.)40 b(It)28 
     2309b(will)382 2738 y(c)m(ho)s(ose)37 b(to)f(prin)m(t)f(a)h(n)m(um)m(b)s 
     2310(er)e(or)i(c)m(haracter)h(on)f(the)g(screen,)h(when)e(one)h(en)m(ters)g 
     2311(the)382 2851 y(k)m(eyw)m(ord)31 b("prin)m(t";)382 3041 
     2312y Fi(\045module)46 b(example4;)382 3154 y(\045ignore)g(WhiteSpace;)382 
     23133267 y(Body:)573 3380 y("print"/s)f("[0-9]+"/r)856 b([)48 
     2314b(PrintNum)d(])334 b(|)573 3493 y("print"/s)45 b("[a-zA-Z]+"/r)712 
     2315b([)48 b(PrintAlpha)d(])238 b(;)382 3719 y(<WhiteSpace>)44 
     2316b(WhiteSpace:)573 3832 y("[\\s]+"/r)1381 b([)48 b(ParseWhite)d(])238 
     2317b(;)523 4022 y Fp(What's)34 b(done)g(is)e(that)i(the)g(parser)e(c)m 
     2318(hec)m(ks)j(whether)e(one)h(en)m(tered)g("prin)m(t")f(fol-)382 
     23194135 y(lo)m(w)m(ed)d(b)m(y)h(a)f(n)m(um)m(b)s(er)g(or)g(b)m(y)g(c)m 
     2320(haracter.)42 b(The)30 b(grammar)h(can)f(b)s(e)g(read)g(as:)382 
     23214325 y Fg(L)444 4339 y Fc(a)511 4325 y Fp(=)25 b Fo(f)p 
     2322Fg(pr)s(int)p Fo(g)g(2)g Fp(\006)1083 4292 y Fd(\003)382 
     23234453 y Fg(L)444 4468 y Fc(bn)546 4453 y Fp(=)642 4359 
     2324y Fb(n)697 4453 y Fo(f)q Fp(0)p Fg(;)15 b Fp(1)p Fg(;)g 
     2325Fp(2)p Fg(;)g Fp(3)p Fg(;)g Fp(4)p Fg(;)g Fp(5)p Fg(;)g 
     2326Fp(6)p Fg(;)g Fp(7)p Fg(;)h Fp(8)p Fg(;)g Fp(9)p Fo(g)1607 
     23274409 y Fe(+)1666 4359 y Fb(o)1746 4453 y Fo(2)25 b Fp(\006)1898 
     23284420 y Fd(\003)382 4611 y Fg(L)444 4626 y Fc(ba)541 4611 
     2329y Fp(=)637 4517 y Fb(n)692 4611 y Fo(f)q Fg(a;)15 b(b;)g(:)g(:)g(:)i(;) 
     2330e(z)t(;)g(A;)g(B)5 b(;)15 b(:)g(:)g(:)i(;)e(Z)7 b Fo(g)1652 
     23314567 y Fe(+)1711 4517 y Fb(o)1792 4611 y Fo(2)24 b Fp(\006)1943 
     23324578 y Fd(\003)382 4769 y Fg(L)444 4784 y Fc(b)503 4769 
     2333y Fp(=)599 4674 y Fb(n)655 4769 y Fo(f)c(t)g(g)847 4724 
     2334y Fe(+)906 4674 y Fb(o)986 4769 y Fo(2)25 b Fp(\006)1138 
     23354736 y Fd(\003)382 4891 y Fg(L)444 4905 y Fc(an)553 4891 
     2336y Fp(=)g Fg(L)711 4906 y Fc(b)746 4891 y Fg(L)808 4905 
     2337y Fc(a)849 4891 y Fg(L)911 4906 y Fc(b)945 4891 y Fg(L)1007 
     23384906 y Fc(bn)1084 4891 y Fg(L)1146 4906 y Fc(b)382 5004 
     2339y Fg(L)444 5018 y Fc(aa)548 5004 y Fp(=)g Fg(L)706 5019 
     2340y Fc(b)740 5004 y Fg(L)802 5018 y Fc(a)844 5004 y Fg(L)906 
     23415019 y Fc(b)940 5004 y Fg(L)1002 5019 y Fc(ba)1074 5004 
     2342y Fg(L)1136 5019 y Fc(b)382 5117 y Fg(L)444 5131 y Fc(p)509 
     23435117 y Fp(=)g Fg(L)667 5131 y Fc(an)771 5117 y Fo([)20 
     2344b Fg(L)914 5131 y Fc(aa)523 5307 y Fp(As)30 b(one)g(can)g(see,)h 
     2345(describing)c(suc)m(h)j(a)g(parser)f(without)g(the)h(help)e(of)i(a)h 
     2346(grammar)382 5420 y(and)37 b(without)g(regular)g(expressions,)h(it)f(b) 
     2347s(ecomes)h(m)m(uc)m(h)g(of)g(an)f(art)h(whic)m(h)e(only)h(a)p 
     2348382 5556 V 1824 5669 a Fn(12)p eop end 
    23442349%%Page: 13 14 
    2345 TeXDict begin 13 13 bop 382 232 a Fm(Evaluation)1704 
     2350TeXDict begin 13 13 bop 382 232 a Fm(Evaluation)1690 
     2351b Fn(Simple)35 b(ev)-6 b(aluation)p 382 274 2989 9 v 
     2352382 565 a Fp(few)30 b(w)m(an)m(t)h(to)g(do.)523 677 y(The)22 
     2353b(generated)h(parser)f(can)g(b)s(e)g(used)f(to)j(create)f(a)g(compiler) 
     2354e(that)i(do)s(es)f(do)g(some-)382 790 y(thing)29 b(with)g(the)i(en)m 
     2355(tered)g(line.)39 b(Previously)-8 b(,)29 b(it)h(didn't)f(do)h(more)h 
     2356(as)f(just)g(v)-5 b(alidating)382 903 y(if)26 b(the)h(co)s(de)g(w)m(as) 
     2357h(sane,)g(but)e(w)m(e)i(can)f(ev)-5 b(aluate)28 b(the)f(co)s(de)h(b)m 
     2358(y)f(creating)g(an)g(ev)-5 b(aluator.)382 1016 y(T)d(o)29 
     2359b(do)f(this,)g(one)h(deriv)m(es)f(a)h(class)f(from)g(the)h 
     2360Fi(Evaluator)c Fp(in)m(terface.)41 b(Here)29 b(is)f(ho)m(w)g(it)382 
     23611129 y(is)h(done:)382 1342 y Fi(module)46 b(main;)382 
     23621567 y(import)g(std.cstream;)382 1680 y(import)g(std.stdio;)382 
     23631793 y(import)g(example4;)382 2019 y(public)g(class)g(MyEvaluator)f(:)j 
     2364(Evaluator)d({)573 2132 y(public)h(Object)g(go\()764 
     23652245 y(EParser)g(parserType,)e(Rule)j(rule,)f(char[])g(ruleName\))g({) 
     2366764 2358 y(if\(parserType)e(==)j(EParser.Body)e(&&)907 
     23672471 y(ruleName)g(==)j("PrintNum"\))c({)955 2584 y(writefln\("Number:)f 
     2368(\045s",)1146 2697 y(rule.elementAt\(1\).getMa)o(tch)o(\(\)\);)764 
     23692809 y(})k(else)g({)955 2922 y(writefln\("String:)c(\045s",)1146 
     23703035 y(rule.elementAt\(1\).getMa)o(tch)o(\(\)\);)764 
     23713148 y(})764 3261 y(return)j(null;)573 3374 y(})382 3487 
     2372y(})382 3713 y(int)h(main\(char[][])d(args\))i({)573 
     23733826 y(char[])g(line;)573 3939 y(line)g(=)i(\(new)f(CFile\(stdin,)d 
     2374(FileMode.In\)\).readLine\(\))o(;)573 4164 y(register\(\);)573 
     23754277 y(Parser)i(parser)g(=)h(parse\(EParser.Body,)c(line\);)573 
     23764503 y(if\(parser)i(is)i(null\))g({)764 4616 y(writefln\("You)d 
     2377(entered)i(garbage"\);)573 4729 y(})h(else)g({)764 4842 
     2378y(writefln\("It)d(parsed,)i(let's)g(evaluate"\);)764 
     23794955 y(evaluate\(parser,)d(new)k(MyEvaluator\(\)\);)573 
     23805068 y(})573 5181 y(return)f(0;)382 5293 y(})p 382 5556 
     2381V 1824 5669 a Fn(13)p eop end 
     2382%%Page: 14 15 
     2383TeXDict begin 14 14 bop 382 232 a Fm(Evaluation)1618 
     2384b Fn(Exclusiv)m(e)36 b(matc)m(hing)p 382 274 2989 9 v 
     2385382 565 a Ff(4.2)135 b(Exclusiv)l(e)46 b(matc)l(hing)382 
     2386767 y Fp(In)33 b(man)m(y)g(programming)f(languages)i(w)m(ords)f(are)h 
     2387(used)e(to)j(iden)m(tify)c(a)j(sp)s(eci\014c)f(k)m(ey-)382 
     2388880 y(w)m(ord.)47 b(F)-8 b(or)34 b(example,)f(in)f(C,)g(\\struct")i(is) 
     2389e(used)g(to)h(iden)m(tify)f(a)h(structure)f(or)h(record)382 
     2390993 y(of)41 b(di\013eren)m(t)e(t)m(yp)s(es.)71 b(Ho)m(w)m(ev)m(er,)46 
     2391b(w)m(ords)40 b(as)g(\\struc")h(and)f(\\structu")h(are)g(v)-5 
     2392b(ariable)382 1106 y(names.)40 b(If)27 b(using)g(a)i(regular)e 
     2393(expression)g(suc)m(h)h(as)g Fi([A-Za-z]*)e Fp(it)h(w)m(ould)g(matc)m 
     2394(h)i(an)m(y)382 1219 y(of)d(them.)39 b(But)26 b(the)g(exclusiv)m(e)f 
     2395(matc)m(h,)j(if)c(found,)i(o)m(v)m(errides)g(the)g(regular)f 
     2396(expression,)382 1332 y(making)30 b(it)g(in)m(v)-5 b(alid.)523 
     23971445 y(The)20 b(follo)m(wing,)i(mo)s(di\014ed)c(v)m(ersion)j(of)g(the)g 
     2398(previous)e(grammar)i(explicitly)d(c)m(hec)m(ks)382 1558 
     2399y(for)30 b(the)h(k)m(eyw)m(ord)f(\\hello".)41 b(An)30 
     2400b(example:)382 1754 y Fi(\045module)46 b(example4a;)382 
     24011867 y(\045ignore)g(WhiteSpace;)382 1979 y(Body:)573 
     24022092 y("print"/s)f("[0-9]+"/r)856 b([)48 b(PrintNum)d(])334 
     2403b(|)573 2205 y("print"/s)45 b("[a-zA-Z]+"/r)712 b([)48 
     2404b(PrintAlpha)d(])238 b(|)573 2318 y("print"/s)45 b("hello"/sxi)808 
     2405b([)48 b(PrintHello)d(])238 b(;)382 2544 y(<WhiteSpace>)44 
     2406b(WhiteSpace:)573 2657 y("[\\s]+"/r)1381 b([)48 b(ParseWhite)d(])238 
     2407b(;)523 2853 y Fp(In)32 b(this)g(case,)i(an)m(y)f(case)h(insensitiv)m 
     2408(e)d(w)m(ord)h(de\014ning)f(\\hello")h(is)g(automatically)382 
     24092966 y(used)e(apart)h(from)f(the)h(others.)42 b(T)-8 
     2410b(o)31 b(use)g(this)e(feature,)j(use)e(the)h(switc)m(h)f 
     2411Fi(/sxi)g Fp(or)g(the)382 3079 y(case)h(sensitiv)m(e)f(v)m(ersion)g 
     2412Fi(/sx)p Fp(.)40 b(The)29 b(follo)m(wing)g(D)i(co)s(de)f(sho)m(ws)h(ho) 
     2413m(w)f(it)g(can)g(b)s(e)g(used:)382 3274 y Fi(module)46 
     2414b(main;)382 3500 y(import)g(std.cstream;)382 3613 y(import)g 
     2415(std.stdio;)382 3726 y(import)g(example4a;)382 3952 y(public)g(class)g 
     2416(MyEvaluator)f(:)j(Evaluator)d({)382 4065 y(public)h(Object)g(go\()764 
     24174178 y(EParser)g(parserType,)e(Rule)j(rule,)f(char[])g(ruleName\))g({) 
     2418382 4291 y(if\(parserType)e(==)j(EParser.Body)e(&&)525 
     24194403 y(ruleName)h(==)h("PrintNum"\))e({)382 4516 y(writefln\("Number:)e 
     2420(\045s",)k(rule.elementAt\(1\).getMa)o(tch\()o(\)\);)382 
     24214629 y(})g(else)g(if\(parserType)d(==)j(EParser.Body)e(&&)859 
     24224742 y(ruleName)h(==)h("PrintAlpha"\){)382 4855 y(writefln\("String:)c 
     2423(\045s",)k(rule.elementAt\(1\).getMa)o(tch\()o(\)\);)382 
     24244968 y(})g(else)g({)382 5081 y(writefln\("\045s",)d("Hello)i(to)h 
     2425(you!"\);)382 5194 y(})382 5307 y(return)f(null;)382 
     24265420 y(})p 382 5556 V 1824 5669 a Fn(14)p eop end 
     2427%%Page: 15 16 
     2428TeXDict begin 15 15 bop 382 232 a Fm(Evaluation)1703 
     2429b Fn(A)34 b(Nice)i(Grammar)p 382 274 2989 9 v 382 565 
     2430a Fi(})382 790 y(int)47 b(main\(char[][])d(args\))i({)382 
     2431903 y(char[])g(line;)382 1016 y(line)h(=)g(\(new)g(CFile\(stdin,)d 
     2432(FileMode.In\)\).readLine\(\);)382 1242 y(register\(\);)382 
     24331355 y(Parser)i(parser)g(=)i(parse\(EParser.Body,)42 
     2434b(line\);)382 1581 y(if\(parser)j(is)i(null\))g({)382 
     24351694 y(writefln\("You)d(entered)i(garbage"\);)382 1807 
     2436y(})h(else)g({)382 1919 y(writefln\("It)d(parsed,)i(let's)h 
     2437(evaluate"\);)382 2032 y(evaluate\(parser,)c(new)k(MyEvaluator\(\)\);) 
     2438382 2145 y(})382 2258 y(return)f(0;)382 2371 y(})523 
     24392578 y Fp(When)24 b(running)e(the)i(program,)i(en)m(ter)f 
     2440Fh(print)46 b(Hello)39 b Fp(and)23 b(it)h(will)e(return)h 
     2441Fi(Hello)382 2691 y(to)47 b(you)30 b Fp(bac)m(k.)382 
     24422977 y Ff(4.3)135 b(A)45 b(Nice)g(Grammar)382 3180 y 
     2443Fp(T)-8 b(o)25 b(illustrate)e(ho)m(w)i(the)g Fi(DefaultEvaluator)20 
     2444b Fp(w)m(orks,)26 b(the)f(follo)m(wing)e(dgrammar)i(\014le)382 
     24453293 y(de\014nes)36 b(a)h(parser)f(whic)m(h)g(actually)h(do)s(es)f 
     2446(something)g(useful.)59 b(It)37 b(calculates)g(using)382 
     24473406 y(the)30 b(op)s(erators)h(+,)f(-,)h(*)g(and)f(/,)h(on)f(signed)f 
     2448(in)m(tegers.)382 3613 y Fi(\045module)46 b(example5;)382 
     24493726 y(\045ignore)g(WhiteSpace;)382 3952 y(<)h(WhiteSpace)e(>)j 
     2450(WhiteSpace:)573 4065 y("[\\s\\r\\n\\t]")1190 b([)47 
     2451b(WhiteSpace)e(])286 b(;)382 4291 y(Declarations:)573 
     24524403 y(Intermediate)44 b(";"/s)j(Declarations)283 b([)47 
     2453b(Decl)g(])572 b(|)2339 4516 y([)47 b(Empty)g(])524 b(;)382 
     24544629 y(Intermediate:)573 4742 y(AddExp)1478 b([)47 b(Intermediate)e(]) 
     2455190 b(;)382 4968 y(AddExp:)573 5081 y(AddExp)46 b("+"/s)g(MulExp)858 
     2456b([)47 b(Add)g(])620 b(|)573 5194 y(AddExp)46 b("-"/s)g(MulExp)858 
     2457b([)47 b(Substract)e(])334 b(|)573 5307 y(MulExp)1478 
     2458b([)47 b(MulExp)f(])477 b(;)p 382 5556 V 1824 5669 a 
     2459Fn(15)p eop end 
     2460%%Page: 16 17 
     2461TeXDict begin 16 16 bop 382 232 a Fm(Evaluation)1704 
    23462462b Fn(A)35 b(Nice)g(Ev)-6 b(aluator)p 382 274 2989 9 v 
    2347 523 565 a Fp(A)37 b(closer)f(lo)s(ok)g(rev)m(eals)h(that)h(it)e(is)f(p) 
    2348 s(ossible)f(to)k(call)e(other)g(grammars)h(and)f(to)382 
    2349 677 y(use)23 b(recursion.)37 b(Also,)25 b(the)f(WhiteSpace)f(and)g 
    2350 (Argumen)m(t)h(grammars)g(de\014ne)e(regular)382 790 
     2463382 565 a Fi(MulExp:)573 677 y(MulExp)46 b("*"/s)g(Argument)762 
     2464b([)47 b(Multiply)f(])381 b(|)573 790 y(MulExp)46 b("/"/s)g(Argument) 
     2465762 b([)47 b(Divide)f(])477 b(|)573 903 y(Argument)1382 
     2466b([)47 b(Argument)f(])381 b(;)382 1129 y(Argument:)573 
     24671242 y("\\-?[0-9]+")1238 b([)47 b(Number)f(])477 b(;)523 
     24681449 y Fp(A)37 b(closer)f(lo)s(ok)g(rev)m(eals)h(that)h(it)e(is)f(p)s 
     2469(ossible)f(to)k(call)e(other)g(grammars)h(and)f(to)382 
     24701562 y(use)23 b(recursion.)37 b(Also,)25 b(the)f(WhiteSpace)f(and)g 
     2471(Argumen)m(t)h(grammars)g(de\014ne)e(regular)382 1675 
    23512472y(expressions.)76 b(Note)43 b(that)g(it)f(is)g(not)h(needed)f(to)h(use) 
    2352 f(the)h(/r)f(switc)m(h)g(for)g(regular)382 903 y(expressions.)382 
    2353 1186 y Ff(4.2)135 b(A)45 b(Nice)g(Ev)-7 b(aluator)382 
    2354 1389 y Fp(The)42 b(ev)-5 b(aluator)43 b(used)f(to)h(ev)-5 
     2473f(the)h(/r)f(switc)m(h)g(for)g(regular)382 1788 y(expressions.)382 
     24742074 y Ff(4.4)135 b(A)45 b(Nice)g(Ev)-7 b(aluator)382 
     24752277 y Fp(The)42 b(ev)-5 b(aluator)43 b(used)f(to)h(ev)-5 
    23552476b(aluate)43 b(the)g(generated)h(parser)e(is)g(deriv)m(ed)f(from)h(the) 
    2356 382 1502 y(template)27 b(class)f Fi(DefaultEvaluator)p 
     2477382 2390 y(template)27 b(class)f Fi(DefaultEvaluator)p 
    23572478Fp(.)35 b(It)27 b(supp)s(orts)e(a)h(set)i(of)e(nice)g(features)h(suc)m 
    2358 (h)f(as)382 1615 y(the)k Fi(set\(\))f Fp(and)h Fi(nullify\(\))e 
    2359 Fp(metho)s(ds.)523 1728 y(The)20 b Fi(nullify\(\))e Fp(metho)s(d)j 
     2479(h)f(as)382 2502 y(the)k Fi(set\(\))f Fp(and)h Fi(nullify\(\))e 
     2480Fp(metho)s(ds.)523 2615 y(The)20 b Fi(nullify\(\))e Fp(metho)s(d)j 
    23602481(skips)e(the)i(ev)-5 b(aluation)20 b(of)h(a)g(part)f(of)h(the)g(tree.) 
    2361 38 b(It)21 b(needs)382 1841 y(one)38 b(argumen)m(t,)j(b)s(eing)36 
     248238 b(It)21 b(needs)382 2728 y(one)38 b(argumen)m(t,)j(b)s(eing)36 
    23622483b(the)i(p)s(osition)e(of)i(the)g(tree)h(to)g(skip.)61 
    2363 b(The)38 b Fi(set\(\))e Fp(metho)s(d)382 1954 y(c)m(hanges)g(the)f(ev) 
     2484b(The)38 b Fi(set\(\))e Fp(metho)s(d)382 2841 y(c)m(hanges)g(the)f(ev) 
    23642485-5 b(aluator)36 b(t)m(yp)s(e)f(from)f(one)i(to)g(another,)g(so)g(one)f 
    2365 (is)f(able)h(to)g(split)f(up)382 2067 y(the)h(ev)-5 b(aluation)34 
     2486(is)f(able)h(to)g(split)f(up)382 2954 y(the)h(ev)-5 b(aluation)34 
    23662487b(in)f(di\013eren)m(t)h(classes,)i(hence)f(also)f(in)f(di\013eren)m(t)h 
    2367 (mo)s(dules,)g(making)382 2180 y(it)h(m)m(uc)m(h)h(easier)g(to)h(main)m 
     2488(mo)s(dules,)g(making)382 3067 y(it)h(m)m(uc)m(h)h(easier)g(to)h(main)m 
    23682489(tain.)56 b(The)36 b Fi(set\(\))e Fp(metho)s(d)i(needs)f(t)m(w)m(o)j 
    2369 (argumen)m(ts,)f(the)382 2293 y(p)s(osition)28 b(of)j(the)f(tree)i(and) 
     2490(argumen)m(ts,)f(the)382 3180 y(p)s(osition)28 b(of)j(the)f(tree)i(and) 
    23702491d(the)i(new)f(ob)5 b(ject)31 b(to)g(use)f(as)h(ev)-5 
    2371 b(aluator.)523 2406 y(The)30 b(follo)m(wing)f(is)g(an)h(implemen)m 
    2372 (tation)f(of)i(suc)m(h)f(an)g(ev)-5 b(aluator:)382 2597 
    2373 y Fi(module)46 b(main;)382 2823 y(import)g(example5;)382 
    2374 2936 y(import)g(std.conv;)382 3049 y(import)g(std.stream;)382 
    2375 3161 y(import)g(std.stdio;)382 3387 y(public)g(class)g(Float)h({)573 
    2376 3500 y(float)f(number;)573 3613 y(this\(float)f(number\))h({)764 
    2377 3726 y(this.number)e(=)k(number;)573 3839 y(})382 3952 
    2378 y(})382 4178 y(public)e(class)g(MyEvaluator)f(:)j 
    2379 (DefaultEvaluator!\(MyEva)o(lua)o(tor\))41 b({)573 4291 
    2380 y(private)46 b(EParser)f(currentParser;)573 4403 y(private)h(char[])g 
    2381 (ruleName;)573 4516 y(private)g(float)g(finalNumber;)573 
    2382 4742 y(public)g(void)h(enter\()764 4855 y(EParser)f(parserType,)e(Rule) 
    2383 j(rule,)f(char[])g(ruleName\))g({)764 5081 y(this.currentParser)d(=)k 
    2384 (parserType;)764 5194 y(this.ruleName)d(=)j(ruleName;)764 
    2385 5420 y(if\(currentParser)c(==)k(EParser.Argument\))c({)p 
    2386 382 5556 V 1824 5669 a Fn(13)p eop end 
    2387 %%Page: 14 15 
    2388 TeXDict begin 14 14 bop 382 232 a Fm(Evaluation)1704 
     2492b(aluator.)523 3293 y(The)30 b(follo)m(wing)f(is)g(an)h(implemen)m 
     2493(tation)f(of)i(suc)m(h)f(an)g(ev)-5 b(aluator:)382 3500 
     2494y Fi(module)46 b(main;)382 3726 y(import)g(example5;)382 
     24953839 y(import)g(std.conv;)382 3952 y(import)g(std.stream;)382 
     24964065 y(import)g(std.stdio;)382 4291 y(public)g(class)g(Float)h({)573 
     24974403 y(float)f(number;)573 4516 y(this\(float)f(number\))h({)764 
     24984629 y(this.number)e(=)k(number;)573 4742 y(})382 4855 
     2499y(})382 5081 y(public)e(class)g(MyEvaluator)f(:)j 
     2500(DefaultEvaluator!\(MyEva)o(lua)o(tor\))41 b({)573 5194 
     2501y(private)46 b(EParser)f(currentParser;)573 5307 y(private)h(char[])g 
     2502(ruleName;)573 5420 y(private)g(float)g(finalNumber;)p 
     2503382 5556 V 1824 5669 a Fn(16)p eop end 
     2504%%Page: 17 18 
     2505TeXDict begin 17 17 bop 382 232 a Fm(Evaluation)1704 
    23892506b Fn(A)35 b(Nice)g(Ev)-6 b(aluator)p 382 274 2989 9 v 
    2390 955 565 a Fi(if\(ruleName)44 b(==)k("Number"\))d({)1146 
    2391 677 y(finalNumber)f(=)1336 790 y(toInt\(rule.elementAt\(0\).ge)o(tMat)o 
    2392 (ch\()o(\)\);)955 903 y(})955 1016 y(nullify\(0\);)764 
    2393 1129 y(})573 1355 y(})573 1581 y(public)i(Object)g(leave\(Object[])e 
    2394 (resultSet\))h({)764 1694 y(if\(currentParser)e(==)k 
    2395 (EParser.Argument\))c({)955 1807 y(return)j(new)h 
    2396 (Float\(finalNumber\);)764 1919 y(})g(else)g(if\()955 
    2397 2032 y(ruleName)e(==)i("Add")g(||)955 2145 y(ruleName)e(==)i 
    2398 ("Substract")e(||)955 2258 y(ruleName)g(==)i("Multiply")e(||)955 
    2399 2371 y(ruleName)g(==)i("Divide"\))f({)955 2484 y(float)g(number1)g(=) 
    2400 1146 2597 y(\(cast\(Float\)\(resultSet[)o(0]\))o(\).nu)o(mber)o(;)955 
    2401 2710 y(float)g(number2)g(=)1146 2823 y(\(cast\(Float\)\(resultSet[)o 
    2402 (2]\))o(\).nu)o(mber)o(;)955 2936 y(switch\(ruleName\))d({)1146 
    2403 3049 y(case)j("Add":)1336 3161 y(return)h(new)f(Float\(number1)f(+)i 
    2404 (number2\);)1146 3274 y(break;)1146 3500 y(case)f("Substract":)1336 
    2405 3613 y(return)h(new)f(Float\(number1)f(-)i(number2\);)1146 
    2406 3726 y(break;)1146 3952 y(case)f("Multiply":)1336 4065 
     2507573 677 a Fi(public)46 b(void)h(enter\()764 790 y(EParser)f 
     2508(parserType,)e(Rule)j(rule,)f(char[])g(ruleName\))g({)764 
     25091016 y(this.currentParser)d(=)k(parserType;)764 1129 
     2510y(this.ruleName)d(=)j(ruleName;)764 1355 y(if\(currentParser)c(==)k 
     2511(EParser.Argument\))c({)955 1468 y(if\(ruleName)h(==)k("Number"\))d({) 
     25121146 1581 y(finalNumber)f(=)1336 1694 y(toInt\(rule.elementAt\(0\).ge)o 
     2513(tMat)o(ch\()o(\)\);)955 1807 y(})955 1919 y(nullify\(0\);)764 
     25142032 y(})573 2258 y(})573 2484 y(public)i(Object)g(leave\(Object[])e 
     2515(resultSet\))h({)764 2597 y(if\(currentParser)e(==)k 
     2516(EParser.Argument\))c({)955 2710 y(return)j(new)h 
     2517(Float\(finalNumber\);)764 2823 y(})g(else)g(if\()955 
     25182936 y(ruleName)e(==)i("Add")g(||)955 3049 y(ruleName)e(==)i 
     2519("Substract")e(||)955 3161 y(ruleName)g(==)i("Multiply")e(||)955 
     25203274 y(ruleName)g(==)i("Divide"\))f({)955 3387 y(float)g(number1)g(=) 
     25211146 3500 y(\(cast\(Float\)\(resultSet[)o(0]\))o(\).nu)o(mber)o(;)955 
     25223613 y(float)g(number2)g(=)1146 3726 y(\(cast\(Float\)\(resultSet[)o 
     2523(2]\))o(\).nu)o(mber)o(;)955 3839 y(switch\(ruleName\))d({)1146 
     25243952 y(case)j("Add":)1336 4065 y(return)h(new)f(Float\(number1)f(+)i 
     2525(number2\);)1146 4178 y(break;)1146 4403 y(case)f("Substract":)1336 
     25264516 y(return)h(new)f(Float\(number1)f(-)i(number2\);)1146 
     25274629 y(break;)1146 4855 y(case)f("Multiply":)1336 4968 
    24072528y(return)h(new)f(Float\(number1)f(*)i(number2\);)1146 
    2408 4178 y(break;)1146 4403 y(case)f("Divide":)1336 4516 
    2409 y(return)h(new)f(Float\(number1)f(/)i(number2\);)1146 
    2410 4629 y(break;)955 4742 y(})764 4855 y(})g(else)g(if\(ruleName)e(!=)i 
    2411 ("Empty"\))e({)955 4968 y(if\(ruleName)f(==)k("Intermediate"\))43 
    2412 b({)1146 5081 y(writefln\()1336 5194 y("\045s",)k 
     25295081 y(break;)1146 5307 y(case)f("Divide":)1336 5420 
     2530y(return)h(new)f(Float\(number1)f(/)i(number2\);)p 382 
     25315556 V 1824 5669 a Fn(17)p eop end 
     2532%%Page: 18 19 
     2533TeXDict begin 18 18 bop 382 232 a Fm(Evaluation)1704 
     2534b Fn(A)35 b(Nice)g(Ev)-6 b(aluator)p 382 274 2989 9 v 
     25351146 565 a Fi(break;)955 677 y(})764 790 y(})47 b(else)g(if\(ruleName)e 
     2536(!=)i("Empty"\))e({)955 903 y(if\(ruleName)f(==)k("Intermediate"\))43 
     2537b({)1146 1016 y(writefln\()1336 1129 y("\045s",)k 
    24132538(\(cast\(Float\)\(resultSet[0)o(]\)\))o(.num)o(ber\))o(;)955 
    2414 5307 y(})955 5420 y(return)f(resultSet[0];)p 382 5556 
    2415 V 1824 5669 a Fn(14)p eop end 
    2416 %%Page: 15 16 
    2417 TeXDict begin 15 15 bop 382 232 a Fm(Evaluation)1704 
    2418 b Fn(A)35 b(Nice)g(Ev)-6 b(aluator)p 382 274 2989 9 v 
    2419 764 565 a Fi(})764 677 y(return)46 b(new)h(Float\(0\);)573 
    2420 790 y(})382 903 y(})382 1242 y(public)f(int)h(main\(char[][])d(args\))i 
    2421 ({)573 1355 y(if\(args.length)e(<=)j(1\))g({)764 1468 
    2422 y(writefln\("usage:)c(\045s)k(<filename>",)e(args[0]\);)764 
    2423 1581 y(return)h(1;)573 1694 y(})573 1807 y(File)g(f)i(=)f(new)g 
    2424 (File\(args[1]\);)573 1919 y(char[])f(s)h(=)h(f.toString\(\);)573 
    2425 2145 y(register\(\);)573 2371 y(Parser)e(parser)g(=)h 
    2426 (parse\(EParser.Declarations)o(,)42 b(s\);)573 2484 y(if\(parser)j(is)i 
    2427 (null\))g({)764 2597 y(writefln\()955 2710 y("You)f(entered)g 
    2428 (garbage"\);)764 2823 y(return)g(1;)573 2936 y(})573 
    2429 3049 y(else)g({)764 3161 y(evaluate\(parser,)d(new)k 
    2430 (MyEvaluator\(\)\);)573 3274 y(})573 3500 y(return)f(0;)382 
    2431 3613 y(})523 3939 y Fp(This)22 b(should)f(b)s(e)i(able)g(to)i(compile,) 
    2432 f(and)f(there)g(y)m(ou)h(are,)i(a)e(nice)f(little)f(calculator,)382 
    2433 4051 y(able)30 b(to)h(use)f(a)h(\014le)e(with)g(y)m(our)i 
    2434 (calculations,)e(split)g(with)g(a)i(semicolon.)p 382 
    2435 5556 V 1824 5669 a Fn(15)p eop end 
    2436 %%Page: 16 17 
    2437 TeXDict begin 16 16 bop 382 232 a Fm(A)m(nother)37 b(Example)p 
     25391242 y(})955 1355 y(return)f(resultSet[0];)764 1468 y(})764 
     25401581 y(return)g(new)h(Float\(0\);)573 1694 y(})382 1807 
     2541y(})382 2145 y(public)f(int)h(main\(char[][])d(args\))i({)573 
     25422258 y(if\(args.length)e(<=)j(1\))g({)764 2371 y(writefln\("usage:)c 
     2543(\045s)k(<filename>",)e(args[0]\);)764 2484 y(return)h(1;)573 
     25442597 y(})573 2710 y(File)g(f)i(=)f(new)g(File\(args[1]\);)573 
     25452823 y(char[])f(s)h(=)h(f.toString\(\);)573 3049 y(register\(\);)573 
     25463274 y(Parser)e(parser)g(=)h(parse\(EParser.Declarations)o(,)42 
     2547b(s\);)573 3387 y(if\(parser)j(is)i(null\))g({)764 3500 
     2548y(writefln\()955 3613 y("You)f(entered)g(garbage"\);)764 
     25493726 y(return)g(1;)573 3839 y(})573 3952 y(else)g({)764 
     25504065 y(evaluate\(parser,)d(new)k(MyEvaluator\(\)\);)573 
     25514178 y(})573 4403 y(return)f(0;)382 4516 y(})523 4842 
     2552y Fp(This)22 b(should)f(b)s(e)i(able)g(to)i(compile,)f(and)f(there)g(y) 
     2553m(ou)h(are,)i(a)e(nice)f(little)f(calculator,)382 4955 
     2554y(able)30 b(to)h(use)f(a)h(\014le)e(with)g(y)m(our)i(calculations,)e 
     2555(split)g(with)g(a)i(semicolon.)p 382 5556 V 1824 5669 
     2556a Fn(18)p eop end 
     2557%%Page: 19 20 
     2558TeXDict begin 19 19 bop 382 232 a Fm(A)m(nother)37 b(Example)p 
    24382559382 274 2989 9 v 382 1187 a Fk(Chapter)65 b(5)382 1602 
    24392560y Fl(Another)79 b(Example)382 2047 y Fp(The)35 b(examples)g(included)e 
     
    24562577y(assign)f(sub)h(:=)g(sub)g(-)g(2;)955 4744 y(print)f(sub;)764 
    245725784857 y(end;)573 4970 y(end;)573 5196 y(print)g(var;)382 
    2458 5308 y(end;)p 382 5556 V 1824 5669 a Fn(16)p eop end 
    2459 %%Page: 17 18 
    2460 TeXDict begin 17 17 bop 382 232 a Fm(A)m(nother)37 b(Example)p 
     25795308 y(end;)p 382 5556 V 1824 5669 a Fn(19)p eop end 
     2580%%Page: 20 21 
     2581TeXDict begin 20 20 bop 382 232 a Fm(A)m(nother)37 b(Example)p 
    24612582382 274 2989 9 v 523 565 a Fp(It)e(lo)s(oks)g(a)h(bit)e(lik)m(e)h(P)m 
    24622583(ascal,)i(but)e(misses)f(most)h(of)h(the)f(features.)56 
     
    24672588b(ariables.)39 b(V)-8 b(ariables)382 903 y(can)31 b(b)s(e)e 
    24682589(\(re-\)declared)i(within)d(a)j(scop)s(e,)f(so)h(they)g(can)f(b)s(e)g 
    2469 (reused.)p 382 5556 V 1824 5669 a Fn(17)p eop end 
    2470 %%Page: 18 19 
    2471 TeXDict begin 18 18 bop 382 232 a Fm(Instal)5 b(ling)39 
     2590(reused.)p 382 5556 V 1824 5669 a Fn(20)p eop end 
     2591%%Page: 21 22 
     2592TeXDict begin 21 21 bop 382 232 a Fm(Instal)5 b(ling)39 
    24722593b(DGr)-5 b(ammar)p 382 274 2989 9 v 382 1187 a Fk(App)5 
    24732594b(endix)65 b(A)382 1602 y Fl(Installing)76 b(DGrammar)382 
     
    24832604(e)i(to)f(install:)382 3137 y Fi($)47 b Fh(make)g(install)62 
    24842605b Fo( )-15 b Fg(-)523 3349 y Fp(This)29 b(should)f(install)g(DGrammar.) 
    2485 p 382 5556 V 1824 5669 a Fn(18)p eop end 
    2486 %%Page: 19 20 
    2487 TeXDict begin 19 19 bop 382 232 a Fm(GNU)39 b(F)-8 b(r)j(e)g(e)37 
     2606p 382 5556 V 1824 5669 a Fn(21)p eop end 
     2607%%Page: 22 23 
     2608TeXDict begin 22 22 bop 382 232 a Fm(GNU)39 b(F)-8 b(r)j(e)g(e)37 
    24882609b(Do)-5 b(cumentation)38 b(Lic)-5 b(ense)p 382 274 2989 
    248926109 v 382 1187 a Fk(App)5 b(endix)65 b(B)382 1602 y Fl(GNU)76 
     
    252926505227 y(purp)s(ose)f(is)g(instruction)f(or)j(reference.)583 
    253026515420 y Ff(1.)60 b(APPLICABILITY)43 b(AND)h(DEFINITIONS)p 
    2531 382 5556 V 1824 5669 a Fn(19)p eop end 
    2532 %%Page: 20 21 
    2533 TeXDict begin 20 20 bop 382 232 a Fm(GNU)39 b(F)-8 b(r)j(e)g(e)37 
     2652382 5556 V 1824 5669 a Fn(22)p eop end 
     2653%%Page: 23 24 
     2654TeXDict begin 23 23 bop 382 232 a Fm(GNU)39 b(F)-8 b(r)j(e)g(e)37 
    25342655b(Do)-5 b(cumentation)38 b(Lic)-5 b(ense)p 382 274 2989 
    253526569 v 523 565 a Fp(This)28 b(License)i(applies)f(to)i(an)m(y)f(man)m(ual) 
     
    26182739y(using)39 b(a)j(publicly)37 b(a)m(v)-5 b(ailable)40 
    26192740b(DTD,)i(and)e(standard-conforming)g(simple)e(HTML,)p 
    2620 382 5556 V 1824 5669 a Fn(20)p eop end 
    2621 %%Page: 21 22 
    2622 TeXDict begin 21 21 bop 382 232 a Fm(GNU)39 b(F)-8 b(r)j(e)g(e)37 
     2741382 5556 V 1824 5669 a Fn(23)p eop end 
     2742%%Page: 24 25 
     2743TeXDict begin 24 24 bop 382 232 a Fm(GNU)39 b(F)-8 b(r)j(e)g(e)37 
    26232744b(Do)-5 b(cumentation)38 b(Lic)-5 b(ense)p 382 274 2989 
    262427459 v 382 565 a Fp(P)m(ostScript)39 b(or)g(PDF)g(designed)f(for)h(h)m 
     
    26942815(license)f(notice)i(requires)e(Co)m(v)m(er)i(T)-8 b(exts,)32 
    26952816b(y)m(ou)g(m)m(ust)f(enclose)g(the)h(copies)f(in)p 382 
    2696 5556 V 1824 5669 a Fn(21)p eop end 
    2697 %%Page: 22 23 
    2698 TeXDict begin 22 22 bop 382 232 a Fm(GNU)39 b(F)-8 b(r)j(e)g(e)37 
     28175556 V 1824 5669 a Fn(24)p eop end 
     2818%%Page: 25 26 
     2819TeXDict begin 25 25 bop 382 232 a Fm(GNU)39 b(F)-8 b(r)j(e)g(e)37 
    26992820b(Do)-5 b(cumentation)38 b(Lic)-5 b(ense)p 382 274 2989 
    270028219 v 382 565 a Fp(co)m(v)m(ers)42 b(that)e(carry)-8 b(,)44 
     
    277428955342 y(together)24 b(with)e(at)h(least)g(\014v)m(e)g(of)g(the)g 
    27752896(principal)c(authors)j(of)h(the)g(Do)s(cumen)m(t)g(\(all)p 
    2776 382 5556 V 1824 5669 a Fn(22)p eop end 
    2777 %%Page: 23 24 
    2778 TeXDict begin 23 23 bop 382 232 a Fm(GNU)39 b(F)-8 b(r)j(e)g(e)37 
     2897382 5556 V 1824 5669 a Fn(25)p eop end 
     2898%%Page: 26 27 
     2899TeXDict begin 26 26 bop 382 232 a Fm(GNU)39 b(F)-8 b(r)j(e)g(e)37 
    27792900b(Do)-5 b(cumentation)38 b(Lic)-5 b(ense)p 382 274 2989 
    278029019 v 609 565 a Fp(of)35 b(its)e(principal)e(authors,)k(if)e(it)h(has)g 
     
    28372958(En)m(titled)e("Endorsemen)m(ts".)45 b(Suc)m(h)31 b(a)h(section)f(ma)m 
    28382959(y)h(not)609 5338 y(b)s(e)e(included)e(in)h(the)h(Mo)s(di\014ed)f(V)-8 
    2839 b(ersion.)p 382 5556 V 1824 5669 a Fn(23)p eop end 
    2840 %%Page: 24 25 
    2841 TeXDict begin 24 24 bop 382 232 a Fm(GNU)39 b(F)-8 b(r)j(e)g(e)37 
     2960b(ersion.)p 382 5556 V 1824 5669 a Fn(26)p eop end 
     2961%%Page: 27 28 
     2962TeXDict begin 27 27 bop 382 232 a Fm(GNU)39 b(F)-8 b(r)j(e)g(e)37 
    28422963b(Do)-5 b(cumentation)38 b(Lic)-5 b(ense)p 382 274 2989 
    284329649 v 470 565 a Fp(N.)46 b(Do)34 b(not)g(retitle)f(an)m(y)h(existing)e 
     
    29143035b(arian)m(t)30 b(Sections)f(in)g(the)h(license)e(notice)j(of)e(the)382 
    291530365342 y(com)m(bined)g(w)m(ork.)p 382 5556 V 1824 5669 
    2916 a Fn(24)p eop end 
    2917 %%Page: 25 26 
    2918 TeXDict begin 25 25 bop 382 232 a Fm(GNU)39 b(F)-8 b(r)j(e)g(e)37 
     3037a Fn(27)p eop end 
     3038%%Page: 28 29 
     3039TeXDict begin 28 28 bop 382 232 a Fm(GNU)39 b(F)-8 b(r)j(e)g(e)37 
    29193040b(Do)-5 b(cumentation)38 b(Lic)-5 b(ense)p 382 274 2989 
    292030419 v 523 565 a Fp(In)22 b(the)h(com)m(bination,)h(y)m(ou)g(m)m(ust)f 
     
    298731085420 y(the)26 b(original)f(English)f(v)m(ersion)i(of)g(this)f(License)h 
    29883109(and)g(the)g(original)f(v)m(ersions)h(of)g(those)p 382 
    2989 5556 V 1824 5669 a Fn(25)p eop end 
    2990 %%Page: 26 27 
    2991 TeXDict begin 26 26 bop 382 232 a Fm(GNU)39 b(F)-8 b(r)j(e)g(e)37 
     31105556 V 1824 5669 a Fn(28)p eop end 
     3111%%Page: 29 30 
     3112TeXDict begin 29 29 bop 382 232 a Fm(GNU)39 b(F)-8 b(r)j(e)g(e)37 
    29923113b(Do)-5 b(cumentation)38 b(Lic)-5 b(ense)p 382 274 2989 
    299331149 v 382 565 a Fp(notices)33 b(and)g(disclaimers.)47 b(In)33 
     
    30573178(license)f(is)g(included)e(in)h(the)i(section)g(en)m(titled)609 
    305831795420 y("GNU)c(F)-8 b(ree)31 b(Do)s(cumen)m(tation)g(License".)p 
    3059 382 5556 V 1824 5669 a Fn(26)p eop end 
    3060 %%Page: 27 28 
    3061 TeXDict begin 27 27 bop 382 232 a Fm(GNU)39 b(F)-8 b(r)j(e)g(e)37 
     3180382 5556 V 1824 5669 a Fn(29)p eop end 
     3181%%Page: 30 31 
     3182TeXDict begin 30 30 bop 382 232 a Fm(GNU)39 b(F)-8 b(r)j(e)g(e)37 
    30623183b(Do)-5 b(cumentation)38 b(Lic)-5 b(ense)p 382 274 2989 
    306331849 v 523 565 a Fp(If)24 b(y)m(ou)g(ha)m(v)m(e)i(In)m(v)-5 
     
    30803201g(suc)m(h)f(as)h(the)g(GNU)g(General)g(Public)d(License,)k(to)f(p)s 
    30813202(ermit)e(their)h(use)382 2092 y(in)d(free)h(soft)m(w)m(are.)p 
    3082 382 5556 V 1824 5669 a Fn(27)p eop end 
     3203382 5556 V 1824 5669 a Fn(30)p eop end 
    30833204%%Trailer 
    30843205