home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-04-10 | 109.0 KB | 2,796 lines |
- Newsgroups: comp.sources.unix
- From: ross@spam.adelaide.edu.au (Ross Williams)
- Subject: v26i131: funnelweb - a tool for literate programming in C, Part11/20
- Sender: unix-sources-moderator@vix.com
- Approved: paul@vix.com
-
- Submitted-By: ross@spam.adelaide.edu.au (Ross Williams)
- Posting-Number: Volume 26, Issue 131
- Archive-Name: funnelweb/part11
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 11 (of 20)."
- # Contents: answers/pr04.lis answers/pr06.lis answers/wv03.tex
- # hackman/h_cha.tex sources/help_gnu.ctx
- # Wrapped by vixie@gw.home.vix.com on Sun Apr 11 11:00:26 1993
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'answers/pr04.lis' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'answers/pr04.lis'\"
- else
- echo shar: Extracting \"'answers/pr04.lis'\" \(21256 characters\)
- sed "s/^X//" >'answers/pr04.lis' <<'END_OF_FILE'
- XFUNNELWEB LISTING FILE
- X======================
- X
- Dump of mapped file "<<Suppressed>>".
- X
- MEMORY DUMP OF MAPPED FILE
- X==========================
- X
- X+-------------------------------------------------+------------------+
- X| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
- X+-------------------------------------------------+------------------+
- X| 50 52 30 34 3A 20 54 65 73 74 20 74 68 65 20 64 | PR04: Test the d |
- X| 65 66 69 6E 69 74 69 6F 6E 20 6F 66 20 6F 72 64 | efinition of ord |
- X| 69 6E 61 72 79 20 6D 61 63 72 6F 73 2E 0A 0A 31 | inary macros...1 |
- X| 2E 20 54 65 73 74 20 61 6E 20 6F 72 64 69 6E 61 | . Test an ordina |
- X| 72 79 20 6D 61 63 72 6F 20 64 65 66 69 6E 69 74 | ry macro definit |
- X| 69 6F 6E 2E 0A 40 24 40 3C 4F 72 64 69 6E 61 72 | ion..@$@<Ordinar |
- X| 79 40 3E 40 7B 54 68 65 20 74 65 78 74 20 6F 66 | y@>@{The text of |
- X| 20 6F 72 64 69 6E 61 72 79 40 7D 0A 0A 32 2E 20 | ordinary@}..2. |
- X| 54 65 73 74 20 61 6E 20 6F 72 64 69 6E 61 72 79 | Test an ordinary |
- X| 20 64 65 66 69 6E 69 74 69 6F 6E 20 75 73 69 6E | definition usin |
- X| 67 20 61 20 71 75 69 63 6B 6E 61 6D 65 2E 0A 40 | g a quickname..@ |
- X| 24 40 23 7C 40 7B 54 68 65 20 74 65 78 74 20 6F | $@#|@{The text o |
- X| 66 20 6F 72 64 69 6E 61 72 79 40 7D 0A 0A 33 2E | f ordinary@}..3. |
- X| 20 54 65 73 74 20 61 20 6E 61 6D 65 20 74 68 61 | Test a name tha |
- X| 74 20 69 6E 63 6C 75 64 65 73 20 45 4F 4C 2E 0A | t includes EOL.. |
- X| 40 24 40 3C 54 68 69 73 20 6E 61 6D 65 20 69 73 | @$@<This name is |
- X| 20 69 6C 6C 65 67 61 6C 20 62 65 63 61 75 73 65 | illegal because |
- X| 0A 69 74 20 63 72 6F 73 73 65 73 20 61 20 6C 69 | .it crosses a li |
- X| 6F 6E 40 3E 40 7B 41 6E 64 20 70 65 6F 70 6C 65 | on@>@{And people |
- X| 20 77 68 6F 20 63 72 6F 73 73 20 6C 69 6F 6E 73 | who cross lions |
- X| 20 74 65 6E 64 20 74 6F 20 67 65 74 20 65 61 74 | tend to get eat |
- X| 65 6E 2E 40 7D 0A 40 41 40 3C 45 72 72 6F 72 20 | en.@}.@A@<Error |
- X| 52 65 63 6F 76 65 72 79 20 50 6F 69 6E 74 40 3E | Recovery Point@> |
- X| 0A 0A 34 2E 20 54 65 73 74 20 74 68 65 20 6D 69 | ..4. Test the mi |
- X| 6E 69 6D 75 6D 20 6C 65 6E 67 74 68 20 6E 61 6D | nimum length nam |
- X| 65 20 28 74 68 65 20 65 6D 70 74 79 20 6E 61 6D | e (the empty nam |
- X| 65 29 2E 0A 40 24 40 3C 40 3E 40 7B 54 68 65 20 | e)..@$@<@>@{The |
- X| 65 6D 70 74 79 20 6D 61 63 72 6F 20 6E 61 6D 65 | empty macro name |
- X| 20 69 73 20 71 75 69 74 65 20 6C 65 67 61 6C 20 | is quite legal |
- X| 69 6E 20 46 75 6E 6E 65 6C 57 65 62 2E 40 7D 0A | in FunnelWeb.@}. |
- X| 0A 35 2E 20 54 65 73 74 20 61 20 6E 61 6D 65 20 | .5. Test a name |
- X| 61 74 20 74 68 65 20 6D 61 78 69 6D 75 6D 20 6E | at the maximum n |
- X| 61 6D 65 20 6C 65 6E 67 74 68 20 6C 69 6D 69 74 | ame length limit |
- X| 20 28 38 30 29 2E 0A 4F 4E 6C 79 20 74 68 65 20 | (80)..ONly the |
- X| 73 65 63 6F 6E 64 20 6F 66 20 74 68 65 20 74 77 | second of the tw |
- X| 6F 20 6D 61 63 72 6F 73 20 73 68 6F 75 6C 64 20 | o macros should |
- X| 67 65 6E 65 72 61 74 65 20 61 6E 20 65 72 72 6F | generate an erro |
- X| 72 2E 0A 40 70 20 6D 61 78 69 6D 75 6D 5F 69 6E | r..@p maximum_in |
- X| 70 75 74 5F 6C 69 6E 65 5F 6C 65 6E 67 74 68 20 | put_line_length |
- X| 3D 20 31 30 30 0A 40 24 40 3C 31 32 33 34 35 36 | = 100.@$@<123456 |
- X| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
- X| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
- X| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
- X| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
- X| 31 32 33 34 35 36 37 38 39 30 40 3E 40 7B 40 7D | 1234567890@>@{@} |
- X| 0A 40 24 40 3C 31 32 33 34 35 36 37 38 39 30 31 | .@$@<12345678901 |
- X| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 |
- X| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 |
- X| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 |
- X| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 |
- X| 36 37 38 39 30 31 40 3E 40 7B 40 7D 0A 40 41 40 | 678901@>@{@}.@A@ |
- X| 3C 45 72 72 6F 72 20 52 65 63 6F 76 65 72 79 20 | <Error Recovery |
- X| 50 6F 69 6E 74 40 3E 0A 0A 36 2E 20 54 65 73 74 | Point@>..6. Test |
- X| 20 6E 61 6D 65 73 20 77 69 74 68 20 61 6C 6C 20 | names with all |
- X| 6C 65 67 61 6C 20 63 68 61 72 61 63 74 65 72 73 | legal characters |
- X| 2E 20 54 68 65 72 65 20 73 68 6F 75 6C 64 20 62 | . There should b |
- X| 65 20 6E 6F 20 65 72 72 6F 72 73 2E 0A 40 24 40 | e no errors..@$@ |
- X| 3C 20 21 22 23 24 25 27 28 29 2A 2B 2C 2D 2E 2F | < !"#$%'()*+,-./ |
- X| 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F | 0123456789:;<=>? |
- X| 40 3E 40 7B 40 7D 0A 40 24 40 3C 41 42 43 44 45 | @>@{@}.@$@<ABCDE |
- X| 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 | FGHIJKLMNOPQRSTU |
- X| 56 57 58 59 5A 5B 5C 5D 5E 5F 60 40 3E 40 7B 40 | VWXYZ[\]^_`@>@{@ |
- X| 7D 0A 40 24 40 3C 61 62 63 64 65 66 67 68 69 6A | }.@$@<abcdefghij |
- X| 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A | klmnopqrstuvwxyz |
- X| 7B 7C 7D 7E 40 3E 40 7B 40 7D 0A 0A 37 2E 20 54 | {|}~@>@{@}..7. T |
- X| 65 73 74 20 61 20 6E 61 6D 65 20 74 68 61 74 20 | est a name that |
- X| 68 61 73 20 69 6E 73 65 72 74 65 64 20 74 65 78 | has inserted tex |
- X| 74 20 73 65 71 75 65 6E 63 65 73 2E 0A 0A 40 24 | t sequences...@$ |
- X| 40 3C 40 5E 44 28 30 36 35 29 40 40 40 3E 3D 3D | @<@^D(065)@@@>== |
- X| 40 7B 40 7D 0A 0A 0A | @{@}... |
- X+-------------------------------------------------+------------------+
- X
- X
- X=========================== Start of LINE LIST DUMP ============================
- X
- Globl Local| Text
- X-----------+--------------------------------------------------------------------
- X00001 00001| PR04: Test the definition of ordinary macros.<010>
- X00002 00002| <010>
- X00003 00003| 1. Test an ordinary macro definition.<010>
- X00004 00004| @$@<Ordinary@>@{The text of ordinary@}<010>
- X00005 00005| <010>
- X00006 00006| 2. Test an ordinary definition using a quickname.<010>
- X00007 00007| @$@#|@{The text of ordinary@}<010>
- X00008 00008| <010>
- X00009 00009| 3. Test a name that includes EOL.<010>
- X00010 00010| @$@<This name is illegal because<010>
- X00011 00011| it crosses a lion@>@{And people who cross lions tend to get eaten.@}<010>
- X00012 00012| @A@<Error Recovery Point@><010>
- X00013 00013| <010>
- X00014 00014| 4. Test the minimum length name (the empty name).<010>
- X00015 00015| @$@<@>@{The empty macro name is quite legal in FunnelWeb.@}<010>
- X00016 00016| <010>
- X00017 00017| 5. Test a name at the maximum name length limit (80).<010>
- X00018 00018| ONly the second of the two macros should generate an error.<010>
- X00019 00019| @p maximum_input_line_length = 100<010>
- X00020 00020| @$@<12345678901234567890123456789012345678901234567890123456789012345678901234567890@>@{@}<010>
- X00021 00021| @$@<123456789012345678901234567890123456789012345678901234567890123456789012345678901@>@{@}<010>
- X00022 00022| @A@<Error Recovery Point@><010>
- X00023 00023| <010>
- X00024 00024| 6. Test names with all legal characters. There should be no errors.<010>
- X00025 00025| @$@< !"#$%'()*+,-./0123456789:;<=>?@>@{@}<010>
- X00026 00026| @$@<ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`@>@{@}<010>
- X00027 00027| @$@<abcdefghijklmnopqrstuvwxyz{|}~@>@{@}<010>
- X00028 00028| <010>
- X00029 00029| 7. Test a name that has inserted text sequences.<010>
- X00030 00030| <010>
- X00031 00031| @$@<@^D(065)@@@>==@{@}<010>
- X00032 00032| <010>
- X00033 00033| <010>
- X00034 00034| <End-Of-File><010>
- X-----------+--------------------------------------------------------------------
- Globl Local| Text
- X
- X============================ End of LINE LIST DUMP =============================
- X
- X
- X=========================== Start of TOKEN LIST DUMP ===========================
- X
- Summary: There are 85 tokens in the token list.
- X
- Line[Column]: Token Description
- X-------------------------------
- X
- X0001[01]: Text. Text scrap[Grey]="PR04: Test the definition of ordinary macros.<010>
- X<010>
- X1. Test an ordinary macro definition.<010>
- X"
- X0004[01]: @$ Macro defn.
- X0004[03]: @< Open name.
- X0004[05]: Text. Text scrap[Grey]="Ordinary"
- X0004[13]: @> Close name.
- X0004[15]: @{ Open defn.
- X0004[17]: Text. Text scrap[Grey]="The text of ordinary"
- X0004[37]: @} Close defn.
- X0004[39]: Text. Text scrap[Grey]="<010>
- X<010>
- X2. Test an ordinary definition using a quickname.<010>
- X"
- X0007[01]: @$ Macro defn.
- X0007[03]: @# Name. Character='|'.
- X0007[06]: @{ Open defn.
- X0007[08]: Text. Text scrap[Grey]="The text of ordinary"
- X0007[28]: @} Close defn.
- X0007[30]: Text. Text scrap[Grey]="<010>
- X<010>
- X3. Test a name that includes EOL.<010>
- X"
- X0010[01]: @$ Macro defn.
- X0010[03]: @< Open name.
- X0010[05]: Text. Text scrap[Grey]="This name is illegal because<010>
- it crosses a lion"
- X0011[18]: @> Close name.
- X0011[20]: @{ Open defn.
- X0011[22]: Text. Text scrap[Grey]="And people who cross lions tend to get eaten."
- X0011[67]: @} Close defn.
- X0011[69]: Text. Text scrap[White]="<010>
- X"
- X0012[01]: @A New section (Level 1).
- X0012[03]: @< Open name.
- X0012[05]: Text. Text scrap[Grey]="Error Recovery Point"
- X0012[25]: @> Close name.
- X0012[27]: Text. Text scrap[Grey]="<010>
- X<010>
- X4. Test the minimum length name (the empty name).<010>
- X"
- X0015[01]: @$ Macro defn.
- X0015[03]: @< Open name.
- X0015[05]: @> Close name.
- X0015[07]: @{ Open defn.
- X0015[09]: Text. Text scrap[Grey]="The empty macro name is quite legal in FunnelWeb."
- X0015[58]: @} Close defn.
- X0015[60]: Text. Text scrap[Grey]="<010>
- X<010>
- X5. Test a name at the maximum name length limit (80).<010>
- ONly the second of the two macros should generate an error.<010>
- X"
- X0020[01]: @$ Macro defn.
- X0020[03]: @< Open name.
- X0020[05]: Text. Text scrap[Grey]="12345678901234567890123456789012345678901234567890123456789012345678901234567890"
- X0020[85]: @> Close name.
- X0020[87]: @{ Open defn.
- X0020[89]: @} Close defn.
- X0020[91]: Text. Text scrap[White]="<010>
- X"
- X0021[01]: @$ Macro defn.
- X0021[03]: @< Open name.
- X0021[05]: Text. Text scrap[Grey]="123456789012345678901234567890123456789012345678901234567890123456789012345678901"
- X0021[86]: @> Close name.
- X0021[88]: @{ Open defn.
- X0021[90]: @} Close defn.
- X0021[92]: Text. Text scrap[White]="<010>
- X"
- X0022[01]: @A New section (Level 1).
- X0022[03]: @< Open name.
- X0022[05]: Text. Text scrap[Grey]="Error Recovery Point"
- X0022[25]: @> Close name.
- X0022[27]: Text. Text scrap[Grey]="<010>
- X<010>
- X6. Test names with all legal characters. There should be no errors.<010>
- X"
- X0025[01]: @$ Macro defn.
- X0025[03]: @< Open name.
- X0025[05]: Text. Text scrap[Grey]=" !"#$%'()*+,-./0123456789:;<=>?"
- X0025[36]: @> Close name.
- X0025[38]: @{ Open defn.
- X0025[40]: @} Close defn.
- X0025[42]: Text. Text scrap[White]="<010>
- X"
- X0026[01]: @$ Macro defn.
- X0026[03]: @< Open name.
- X0026[05]: Text. Text scrap[Grey]="ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`"
- X0026[37]: @> Close name.
- X0026[39]: @{ Open defn.
- X0026[41]: @} Close defn.
- X0026[43]: Text. Text scrap[White]="<010>
- X"
- X0027[01]: @$ Macro defn.
- X0027[03]: @< Open name.
- X0027[05]: Text. Text scrap[Grey]="abcdefghijklmnopqrstuvwxyz{|}~"
- X0027[35]: @> Close name.
- X0027[37]: @{ Open defn.
- X0027[39]: @} Close defn.
- X0027[41]: Text. Text scrap[Grey]="<010>
- X<010>
- X7. Test a name that has inserted text sequences.<010>
- X<010>
- X"
- X0031[01]: @$ Macro defn.
- X0031[03]: @< Open name.
- X0031[05]: Text. Text scrap[Grey]="A"
- X0031[13]: Text. Text scrap[Grey]="@"
- X0031[15]: @> Close name.
- X0031[17]: Text. Text scrap[Grey]="=="
- X0031[19]: @{ Open defn.
- X0031[21]: @} Close defn.
- X0031[23]: Text. Text scrap[White]="<010>
- X<010>
- X<010>
- X"
- X0034[01]: End Of File.
- X============================ End of TOKEN LIST DUMP ============================
- X
- X
- X========================== Start of MACRO TABLE DUMP ===========================
- X
- X
- X------------------- Start of Macro Dump --------------------
- Macro Name : ""
- Defined? : Yes.
- Parameters : 0
- Additive? : No.
- Zero Calls? : No.
- Many Calls? : No.
- Output File?: No.
- Call list :
- Macro body :
- X
- X--Start of List of Body Parts--
- This macro has 1 body part.
- Body part 1: Seqnum=3, Pos(L,C)=(15,3), Expression follows:
- X
- X---- Start of Expression ----
- X
- X----- Start Text Element -----
- Text scrap[Grey]="The empty macro name is quite legal in FunnelWeb."
- X------ End Text Element ------
- X
- X----- End of Expression -----
- X
- X---End of List of Body Parts---
- X
- X-------------------- End of Macro Dump ---------------------
- X
- X
- X
- X------------------- Start of Macro Dump --------------------
- Macro Name : " !"#$%'()*+,-./0123456789:;<=>?"
- Defined? : Yes.
- Parameters : 0
- Additive? : No.
- Zero Calls? : No.
- Many Calls? : No.
- Output File?: No.
- Call list :
- Macro body :
- X
- X--Start of List of Body Parts--
- This macro has 1 body part.
- Body part 1: Seqnum=5, Pos(L,C)=(25,3), Expression follows:
- X
- X---- Start of Expression ----
- X----- End of Expression -----
- X
- X---End of List of Body Parts---
- X
- X-------------------- End of Macro Dump ---------------------
- X
- X
- X
- X------------------- Start of Macro Dump --------------------
- Macro Name : "12345678901234567890123456789012345678901234567890123456789012345678901234567890"
- Defined? : Yes.
- Parameters : 0
- Additive? : No.
- Zero Calls? : No.
- Many Calls? : No.
- Output File?: No.
- Call list :
- Macro body :
- X
- X--Start of List of Body Parts--
- This macro has 1 body part.
- Body part 1: Seqnum=4, Pos(L,C)=(20,3), Expression follows:
- X
- X---- Start of Expression ----
- X----- End of Expression -----
- X
- X---End of List of Body Parts---
- X
- X-------------------- End of Macro Dump ---------------------
- X
- X
- X
- X------------------- Start of Macro Dump --------------------
- Macro Name : "A@"
- Defined? : Yes.
- Parameters : 0
- Additive? : No.
- Zero Calls? : No.
- Many Calls? : No.
- Output File?: No.
- Call list :
- Macro body :
- X
- X--Start of List of Body Parts--
- This macro has 1 body part.
- Body part 1: Seqnum=8, Pos(L,C)=(31,3), Expression follows:
- X
- X---- Start of Expression ----
- X----- End of Expression -----
- X
- X---End of List of Body Parts---
- X
- X-------------------- End of Macro Dump ---------------------
- X
- X
- X
- X------------------- Start of Macro Dump --------------------
- Macro Name : "ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`"
- Defined? : Yes.
- Parameters : 0
- Additive? : No.
- Zero Calls? : No.
- Many Calls? : No.
- Output File?: No.
- Call list :
- Macro body :
- X
- X--Start of List of Body Parts--
- This macro has 1 body part.
- Body part 1: Seqnum=6, Pos(L,C)=(26,3), Expression follows:
- X
- X---- Start of Expression ----
- X----- End of Expression -----
- X
- X---End of List of Body Parts---
- X
- X-------------------- End of Macro Dump ---------------------
- X
- X
- X
- X------------------- Start of Macro Dump --------------------
- Macro Name : "Ordinary"
- Defined? : Yes.
- Parameters : 0
- Additive? : No.
- Zero Calls? : No.
- Many Calls? : No.
- Output File?: No.
- Call list :
- Macro body :
- X
- X--Start of List of Body Parts--
- This macro has 1 body part.
- Body part 1: Seqnum=1, Pos(L,C)=(4,3), Expression follows:
- X
- X---- Start of Expression ----
- X
- X----- Start Text Element -----
- Text scrap[Grey]="The text of ordinary"
- X------ End Text Element ------
- X
- X----- End of Expression -----
- X
- X---End of List of Body Parts---
- X
- X-------------------- End of Macro Dump ---------------------
- X
- X
- X
- X------------------- Start of Macro Dump --------------------
- Macro Name : "abcdefghijklmnopqrstuvwxyz{|}~"
- Defined? : Yes.
- Parameters : 0
- Additive? : No.
- Zero Calls? : No.
- Many Calls? : No.
- Output File?: No.
- Call list :
- Macro body :
- X
- X--Start of List of Body Parts--
- This macro has 1 body part.
- Body part 1: Seqnum=7, Pos(L,C)=(27,3), Expression follows:
- X
- X---- Start of Expression ----
- X----- End of Expression -----
- X
- X---End of List of Body Parts---
- X
- X-------------------- End of Macro Dump ---------------------
- X
- X
- X
- X------------------- Start of Macro Dump --------------------
- Macro Name : "|"
- Defined? : Yes.
- Parameters : 0
- Additive? : No.
- Zero Calls? : No.
- Many Calls? : No.
- Output File?: No.
- Call list :
- Macro body :
- X
- X--Start of List of Body Parts--
- This macro has 1 body part.
- Body part 1: Seqnum=2, Pos(L,C)=(7,3), Expression follows:
- X
- X---- Start of Expression ----
- X
- X----- Start Text Element -----
- Text scrap[Grey]="The text of ordinary"
- X------ End Text Element ------
- X
- X----- End of Expression -----
- X
- X---End of List of Body Parts---
- X
- X-------------------- End of Macro Dump ---------------------
- X
- X
- X
- X=========================== End of MACRO TABLE DUMP ============================
- X
- X
- X========================= Start of DOCUMENT LIST DUMP ==========================
- X
- X
- TEXT COMPONENT: Pos(L,C)=(1,1).
- X
- X-- Start of Text Scrap List --
- Text scrap[Grey]="PR04: Test the definition of ordinary macros.<010>
- X<010>
- X1. Test an ordinary macro definition.<010>
- X"
- X--- End of Text Scrap List ---
- X
- X
- MACRO DEFINITION COMPONENT: Pos(L,C)=(4,1).
- Part 1 of macro @<Ordinary@>.
- X
- TEXT COMPONENT: Pos(L,C)=(4,39).
- X
- X-- Start of Text Scrap List --
- Text scrap[Grey]="<010>
- X<010>
- X2. Test an ordinary definition using a quickname.<010>
- X"
- X--- End of Text Scrap List ---
- X
- X
- MACRO DEFINITION COMPONENT: Pos(L,C)=(7,1).
- Part 1 of macro @<|@>.
- X
- TEXT COMPONENT: Pos(L,C)=(7,30).
- X
- X-- Start of Text Scrap List --
- Text scrap[Grey]="<010>
- X<010>
- X3. Test a name that includes EOL.<010>
- X"
- X--- End of Text Scrap List ---
- X
- X
- TYPESETTER DIRECTIVE COMPONENT:
- X Section "1", Section name="Error Recovery Point".
- X
- TEXT COMPONENT: Pos(L,C)=(12,27).
- X
- X-- Start of Text Scrap List --
- Text scrap[Grey]="<010>
- X<010>
- X4. Test the minimum length name (the empty name).<010>
- X"
- X--- End of Text Scrap List ---
- X
- X
- MACRO DEFINITION COMPONENT: Pos(L,C)=(15,1).
- Part 1 of macro @<@>.
- X
- TEXT COMPONENT: Pos(L,C)=(15,60).
- X
- X-- Start of Text Scrap List --
- Text scrap[Grey]="<010>
- X<010>
- X5. Test a name at the maximum name length limit (80).<010>
- ONly the second of the two macros should generate an error.<010>
- X"
- X--- End of Text Scrap List ---
- X
- X
- MACRO DEFINITION COMPONENT: Pos(L,C)=(20,1).
- Part 1 of macro @<12345678901234567890123456789012345678901234567890123456789012345678901234567890@>.
- X
- TEXT COMPONENT: Pos(L,C)=(20,91).
- X
- X-- Start of Text Scrap List --
- Text scrap[White]="<010>
- X"
- X--- End of Text Scrap List ---
- X
- X
- TYPESETTER DIRECTIVE COMPONENT:
- X Section "2", Section name="Error Recovery Point".
- X
- TEXT COMPONENT: Pos(L,C)=(22,27).
- X
- X-- Start of Text Scrap List --
- Text scrap[Grey]="<010>
- X<010>
- X6. Test names with all legal characters. There should be no errors.<010>
- X"
- X--- End of Text Scrap List ---
- X
- X
- MACRO DEFINITION COMPONENT: Pos(L,C)=(25,1).
- Part 1 of macro @< !"#$%'()*+,-./0123456789:;<=>?@>.
- X
- TEXT COMPONENT: Pos(L,C)=(25,42).
- X
- X-- Start of Text Scrap List --
- Text scrap[White]="<010>
- X"
- X--- End of Text Scrap List ---
- X
- X
- MACRO DEFINITION COMPONENT: Pos(L,C)=(26,1).
- Part 1 of macro @<ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`@>.
- X
- TEXT COMPONENT: Pos(L,C)=(26,43).
- X
- X-- Start of Text Scrap List --
- Text scrap[White]="<010>
- X"
- X--- End of Text Scrap List ---
- X
- X
- MACRO DEFINITION COMPONENT: Pos(L,C)=(27,1).
- Part 1 of macro @<abcdefghijklmnopqrstuvwxyz{|}~@>.
- X
- TEXT COMPONENT: Pos(L,C)=(27,41).
- X
- X-- Start of Text Scrap List --
- Text scrap[Grey]="<010>
- X<010>
- X7. Test a name that has inserted text sequences.<010>
- X<010>
- X"
- X--- End of Text Scrap List ---
- X
- X
- MACRO DEFINITION COMPONENT: Pos(L,C)=(31,1).
- Part 1 of macro @<A@@>.
- X
- TEXT COMPONENT: Pos(L,C)=(31,23).
- X
- X-- Start of Text Scrap List --
- Text scrap[White]="<010>
- X<010>
- X<010>
- X"
- X--- End of Text Scrap List ---
- X
- X
- X========================== End of DOCUMENT LIST DUMP ===========================
- X
- X
- Global Local| Input File
- X------------+-------------------------------------------------------------------
- X 1 1| PR04: Test the definition of ordinary macros.
- X 2 2|
- X 3 3| 1. Test an ordinary macro definition.
- X 4 4| @$@<Ordinary@>@{The text of ordinary@}
- X 5 5|
- X 6 6| 2. Test an ordinary definition using a quickname.
- X 7 7| @$@#|@{The text of ordinary@}
- X 8 8|
- X 9 9| 3. Test a name that includes EOL.
- X 10 10| @$@<This name is illegal because
- X Error|.....^Names cannot cross lines.
- X |.....^Skipping after error to the next major construct...
- X 11 11| it crosses a lion@>@{And people who cross lions tend to get eaten.@}
- X 12 12| @A@<Error Recovery Point@>
- X |.^...skipped to here after the error.
- X 13 13|
- X 14 14| 4. Test the minimum length name (the empty name).
- X 15 15| @$@<@>@{The empty macro name is quite legal in FunnelWeb.@}
- X 16 16|
- X 17 17| 5. Test a name at the maximum name length limit (80).
- X 18 18| ONly the second of the two macros should generate an error.
- X 19 19| @p maximum_input_line_length = 100
- X 20 20| @$@<12345678901234567890123456789012345678901234567890123456789012345678901234567890@>@{@}
- X 21 21| @$@<123456789012345678901234567890123456789012345678901234567890123456789012345678901@>@{@}
- X Error|.....^Name is too long.
- X |.....^The maximum length of a legal name is 80 characters.
- X |.....^Skipping after error to the next major construct...
- X 22 22| @A@<Error Recovery Point@>
- X |.^...skipped to here after the error.
- X 23 23|
- X 24 24| 6. Test names with all legal characters. There should be no errors.
- X 25 25| @$@< !"#$%'()*+,-./0123456789:;<=>?@>@{@}
- X 26 26| @$@<ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`@>@{@}
- X 27 27| @$@<abcdefghijklmnopqrstuvwxyz{|}~@>@{@}
- X 28 28|
- X 29 29| 7. Test a name that has inserted text sequences.
- X 30 30|
- X 31 31| @$@<@^D(065)@@@>==@{@}
- X 32 32|
- X 33 33|
- X | <End-Of-File>
- X------------+-------------------------------------------------------------------
- X
- There were 2 Errors.
- END_OF_FILE
- if test 21256 -ne `wc -c <'answers/pr04.lis'`; then
- echo shar: \"'answers/pr04.lis'\" unpacked with wrong size!
- fi
- # end of 'answers/pr04.lis'
- fi
- if test -f 'answers/pr06.lis' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'answers/pr06.lis'\"
- else
- echo shar: Extracting \"'answers/pr06.lis'\" \(21683 characters\)
- sed "s/^X//" >'answers/pr06.lis' <<'END_OF_FILE'
- XFUNNELWEB LISTING FILE
- X======================
- X
- Dump of mapped file "<<Suppressed>>".
- X
- MEMORY DUMP OF MAPPED FILE
- X==========================
- X
- X+-------------------------------------------------+------------------+
- X| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
- X+-------------------------------------------------+------------------+
- X| 50 52 30 36 3A 20 54 65 73 74 20 74 68 65 20 70 | PR06: Test the p |
- X| 61 72 73 69 6E 67 20 6F 6E 20 69 6E 76 6F 63 61 | arsing on invoca |
- X| 74 69 6F 6E 20 6E 75 6D 62 65 72 20 63 6F 6E 73 | tion number cons |
- X| 74 72 61 69 6E 74 73 2E 0A 0A 54 72 69 70 20 74 | traints...Trip t |
- X| 68 65 20 70 61 72 73 65 72 20 73 6F 20 77 65 20 | he parser so we |
- X| 64 6F 6E 27 74 20 67 65 74 20 70 61 73 74 20 69 | don't get past i |
- X| 74 2E 0A 40 3E 0A 0A 31 2E 20 54 65 73 74 20 77 | t..@>..1. Test w |
- X| 69 74 68 20 6E 6F 20 7A 65 72 6F 20 61 6E 64 20 | ith no zero and |
- X| 6E 6F 20 6D 61 6E 79 2E 0A 40 24 40 3C 53 6C 6F | no many..@$@<Slo |
- X| 74 68 40 3E 40 7B 4E 6F 20 7A 65 72 6F 20 61 6E | th@>@{No zero an |
- X| 64 20 6E 6F 20 6D 61 6E 79 20 69 6E 20 74 68 69 | d no many in thi |
- X| 73 20 6D 61 63 72 6F 40 7D 0A 0A 32 2E 20 54 65 | s macro@}..2. Te |
- X| 73 74 20 77 69 74 68 20 61 20 7A 65 72 6F 2E 0A | st with a zero.. |
- X| 40 24 40 3C 53 6C 6F 74 68 20 7A 65 72 6F 40 3E | @$@<Sloth zero@> |
- X| 40 5A 40 7B 43 61 6E 20 62 65 20 63 61 6C 6C 65 | @Z@{Can be calle |
- X| 64 20 66 72 6F 6D 20 30 20 74 6F 20 31 20 74 69 | d from 0 to 1 ti |
- X| 6D 65 73 2E 40 7D 0A 0A 33 2E 20 54 65 73 74 20 | mes.@}..3. Test |
- X| 77 69 74 68 20 61 20 6D 61 6E 79 2E 0A 40 24 40 | with a many..@$@ |
- X| 3C 53 6C 6F 74 68 20 6D 61 6E 79 40 3E 40 4D 40 | <Sloth many@>@M@ |
- X| 7B 43 61 6E 20 62 65 20 63 61 6C 6C 65 64 20 66 | {Can be called f |
- X| 72 6F 6D 20 31 20 74 6F 20 69 6E 66 69 6E 69 74 | rom 1 to infinit |
- X| 79 20 74 69 6D 65 73 2E 40 7D 0A 0A 34 2E 20 54 | y times.@}..4. T |
- X| 65 73 74 20 77 69 74 68 20 61 20 7A 65 72 6F 20 | est with a zero |
- X| 61 6E 64 20 61 20 6D 61 6E 79 2E 0A 40 24 40 3C | and a many..@$@< |
- X| 53 6C 6F 74 68 20 7A 65 72 6F 6D 61 6E 79 40 3E | Sloth zeromany@> |
- X| 40 5A 40 4D 40 7B 43 61 6E 20 62 65 20 63 61 6C | @Z@M@{Can be cal |
- X| 6C 65 64 20 66 72 6F 6D 20 30 20 74 6F 20 69 6E | led from 0 to in |
- X| 66 69 6E 69 74 79 20 74 69 6D 65 73 2E 40 7D 0A | finity times.@}. |
- X| 0A 35 2E 20 54 65 73 74 20 77 69 74 68 20 61 20 | .5. Test with a |
- X| 7A 65 72 6F 20 61 6E 64 20 61 20 6D 61 6E 79 20 | zero and a many |
- X| 62 75 74 20 6F 75 74 20 6F 66 20 6F 72 64 65 72 | but out of order |
- X| 20 28 73 68 6F 75 6C 64 20 67 69 76 65 20 65 72 | (should give er |
- X| 72 6F 72 29 2E 0A 40 24 40 3C 53 6C 6F 74 68 20 | ror)..@$@<Sloth |
- X| 6D 61 6E 79 7A 65 72 6F 40 3E 40 4D 40 5A 40 7B | manyzero@>@M@Z@{ |
- X| 4F 6F 70 73 2E 40 7D 0A 40 41 40 3C 45 72 72 6F | Oops.@}.@A@<Erro |
- X| 72 20 72 65 63 6F 76 65 72 79 20 70 6F 69 6E 74 | r recovery point |
- X| 40 3E 0A 0A 36 2E 20 54 65 73 74 20 77 69 74 68 | @>..6. Test with |
- X| 20 73 79 6E 74 61 63 74 69 63 20 65 72 72 6F 72 | syntactic error |
- X| 73 2E 0A 0A 40 24 40 3C 53 6C 6F 74 68 20 61 40 | s...@$@<Sloth a@ |
- X| 3E 20 40 4D 20 40 5A 20 40 7B 4F 6F 70 73 2E 40 | > @M @Z @{Oops.@ |
- X| 7D 0A 40 41 40 3C 45 72 72 6F 72 20 72 65 63 6F | }.@A@<Error reco |
- X| 76 65 72 79 20 70 6F 69 6E 74 40 3E 0A 0A 40 24 | very point@>..@$ |
- X| 40 3C 53 6C 6F 74 68 20 62 40 3E 40 5A 40 5A 40 | @<Sloth b@>@Z@Z@ |
- X| 7B 4F 6F 70 73 2E 40 7D 0A 40 41 40 3C 45 72 72 | {Oops.@}.@A@<Err |
- X| 6F 72 20 72 65 63 6F 76 65 72 79 20 70 6F 69 6E | or recovery poin |
- X| 74 40 3E 0A 0A 40 24 40 3C 53 6C 6F 74 68 20 63 | t@>..@$@<Sloth c |
- X| 40 5A 40 3E 40 7B 4F 6F 70 73 2E 40 7D 0A 40 41 | @Z@>@{Oops.@}.@A |
- X| 40 3C 45 72 72 6F 72 20 72 65 63 6F 76 65 72 79 | @<Error recovery |
- X| 20 70 6F 69 6E 74 40 3E 0A 0A 40 24 40 3C 53 6C | point@>..@$@<Sl |
- X| 6F 74 68 20 64 40 3E 5A 40 7B 4F 6F 70 73 2E 40 | oth d@>Z@{Oops.@ |
- X| 7D 0A 40 41 40 3C 45 72 72 6F 72 20 72 65 63 6F | }.@A@<Error reco |
- X| 76 65 72 79 20 70 6F 69 6E 74 40 3E 0A 0A 40 24 | very point@>..@$ |
- X| 40 3C 53 6C 6F 74 68 20 64 40 3E 40 5A 4D 40 7B | @<Sloth d@>@ZM@{ |
- X| 4F 6F 70 73 2E 40 7D 0A 40 41 40 3C 45 72 72 6F | Oops.@}.@A@<Erro |
- X| 72 20 72 65 63 6F 76 65 72 79 20 70 6F 69 6E 74 | r recovery point |
- X| 40 3E 0A 0A 0A | @>... |
- X+-------------------------------------------------+------------------+
- X
- X
- X=========================== Start of LINE LIST DUMP ============================
- X
- Globl Local| Text
- X-----------+--------------------------------------------------------------------
- X00001 00001| PR06: Test the parsing on invocation number constraints.<010>
- X00002 00002| <010>
- X00003 00003| Trip the parser so we don't get past it.<010>
- X00004 00004| @><010>
- X00005 00005| <010>
- X00006 00006| 1. Test with no zero and no many.<010>
- X00007 00007| @$@<Sloth@>@{No zero and no many in this macro@}<010>
- X00008 00008| <010>
- X00009 00009| 2. Test with a zero.<010>
- X00010 00010| @$@<Sloth zero@>@Z@{Can be called from 0 to 1 times.@}<010>
- X00011 00011| <010>
- X00012 00012| 3. Test with a many.<010>
- X00013 00013| @$@<Sloth many@>@M@{Can be called from 1 to infinity times.@}<010>
- X00014 00014| <010>
- X00015 00015| 4. Test with a zero and a many.<010>
- X00016 00016| @$@<Sloth zeromany@>@Z@M@{Can be called from 0 to infinity times.@}<010>
- X00017 00017| <010>
- X00018 00018| 5. Test with a zero and a many but out of order (should give error).<010>
- X00019 00019| @$@<Sloth manyzero@>@M@Z@{Oops.@}<010>
- X00020 00020| @A@<Error recovery point@><010>
- X00021 00021| <010>
- X00022 00022| 6. Test with syntactic errors.<010>
- X00023 00023| <010>
- X00024 00024| @$@<Sloth a@> @M @Z @{Oops.@}<010>
- X00025 00025| @A@<Error recovery point@><010>
- X00026 00026| <010>
- X00027 00027| @$@<Sloth b@>@Z@Z@{Oops.@}<010>
- X00028 00028| @A@<Error recovery point@><010>
- X00029 00029| <010>
- X00030 00030| @$@<Sloth c@Z@>@{Oops.@}<010>
- X00031 00031| @A@<Error recovery point@><010>
- X00032 00032| <010>
- X00033 00033| @$@<Sloth d@>Z@{Oops.@}<010>
- X00034 00034| @A@<Error recovery point@><010>
- X00035 00035| <010>
- X00036 00036| @$@<Sloth d@>@ZM@{Oops.@}<010>
- X00037 00037| @A@<Error recovery point@><010>
- X00038 00038| <010>
- X00039 00039| <010>
- X00040 00040| <End-Of-File><010>
- X-----------+--------------------------------------------------------------------
- Globl Local| Text
- X
- X============================ End of LINE LIST DUMP =============================
- X
- X
- X=========================== Start of TOKEN LIST DUMP ===========================
- X
- Summary: There are 131 tokens in the token list.
- X
- Line[Column]: Token Description
- X-------------------------------
- X
- X0001[01]: Text. Text scrap[Grey]="PR06: Test the parsing on invocation number constraints.<010>
- X<010>
- Trip the parser so we don't get past it.<010>
- X"
- X0004[01]: @> Close name.
- X0004[03]: Text. Text scrap[Grey]="<010>
- X<010>
- X1. Test with no zero and no many.<010>
- X"
- X0007[01]: @$ Macro defn.
- X0007[03]: @< Open name.
- X0007[05]: Text. Text scrap[Grey]="Sloth"
- X0007[10]: @> Close name.
- X0007[12]: @{ Open defn.
- X0007[14]: Text. Text scrap[Grey]="No zero and no many in this macro"
- X0007[47]: @} Close defn.
- X0007[49]: Text. Text scrap[Grey]="<010>
- X<010>
- X2. Test with a zero.<010>
- X"
- X0010[01]: @$ Macro defn.
- X0010[03]: @< Open name.
- X0010[05]: Text. Text scrap[Grey]="Sloth zero"
- X0010[15]: @> Close name.
- X0010[17]: @Z Zero calls.
- X0010[19]: @{ Open defn.
- X0010[21]: Text. Text scrap[Grey]="Can be called from 0 to 1 times."
- X0010[53]: @} Close defn.
- X0010[55]: Text. Text scrap[Grey]="<010>
- X<010>
- X3. Test with a many.<010>
- X"
- X0013[01]: @$ Macro defn.
- X0013[03]: @< Open name.
- X0013[05]: Text. Text scrap[Grey]="Sloth many"
- X0013[15]: @> Close name.
- X0013[17]: @M Many calls.
- X0013[19]: @{ Open defn.
- X0013[21]: Text. Text scrap[Grey]="Can be called from 1 to infinity times."
- X0013[60]: @} Close defn.
- X0013[62]: Text. Text scrap[Grey]="<010>
- X<010>
- X4. Test with a zero and a many.<010>
- X"
- X0016[01]: @$ Macro defn.
- X0016[03]: @< Open name.
- X0016[05]: Text. Text scrap[Grey]="Sloth zeromany"
- X0016[19]: @> Close name.
- X0016[21]: @Z Zero calls.
- X0016[23]: @M Many calls.
- X0016[25]: @{ Open defn.
- X0016[27]: Text. Text scrap[Grey]="Can be called from 0 to infinity times."
- X0016[66]: @} Close defn.
- X0016[68]: Text. Text scrap[Grey]="<010>
- X<010>
- X5. Test with a zero and a many but out of order (should give error).<010>
- X"
- X0019[01]: @$ Macro defn.
- X0019[03]: @< Open name.
- X0019[05]: Text. Text scrap[Grey]="Sloth manyzero"
- X0019[19]: @> Close name.
- X0019[21]: @M Many calls.
- X0019[23]: @Z Zero calls.
- X0019[25]: @{ Open defn.
- X0019[27]: Text. Text scrap[Grey]="Oops."
- X0019[32]: @} Close defn.
- X0019[34]: Text. Text scrap[White]="<010>
- X"
- X0020[01]: @A New section (Level 1).
- X0020[03]: @< Open name.
- X0020[05]: Text. Text scrap[Grey]="Error recovery point"
- X0020[25]: @> Close name.
- X0020[27]: Text. Text scrap[Grey]="<010>
- X<010>
- X6. Test with syntactic errors.<010>
- X<010>
- X"
- X0024[01]: @$ Macro defn.
- X0024[03]: @< Open name.
- X0024[05]: Text. Text scrap[Grey]="Sloth a"
- X0024[12]: @> Close name.
- X0024[14]: Text. Text scrap[White]=" "
- X0024[15]: @M Many calls.
- X0024[17]: Text. Text scrap[White]=" "
- X0024[18]: @Z Zero calls.
- X0024[20]: Text. Text scrap[White]=" "
- X0024[21]: @{ Open defn.
- X0024[23]: Text. Text scrap[Grey]="Oops."
- X0024[28]: @} Close defn.
- X0024[30]: Text. Text scrap[White]="<010>
- X"
- X0025[01]: @A New section (Level 1).
- X0025[03]: @< Open name.
- X0025[05]: Text. Text scrap[Grey]="Error recovery point"
- X0025[25]: @> Close name.
- X0025[27]: Text. Text scrap[White]="<010>
- X<010>
- X"
- X0027[01]: @$ Macro defn.
- X0027[03]: @< Open name.
- X0027[05]: Text. Text scrap[Grey]="Sloth b"
- X0027[12]: @> Close name.
- X0027[14]: @Z Zero calls.
- X0027[16]: @Z Zero calls.
- X0027[18]: @{ Open defn.
- X0027[20]: Text. Text scrap[Grey]="Oops."
- X0027[25]: @} Close defn.
- X0027[27]: Text. Text scrap[White]="<010>
- X"
- X0028[01]: @A New section (Level 1).
- X0028[03]: @< Open name.
- X0028[05]: Text. Text scrap[Grey]="Error recovery point"
- X0028[25]: @> Close name.
- X0028[27]: Text. Text scrap[White]="<010>
- X<010>
- X"
- X0030[01]: @$ Macro defn.
- X0030[03]: @< Open name.
- X0030[05]: Text. Text scrap[Grey]="Sloth c"
- X0030[12]: @Z Zero calls.
- X0030[14]: @> Close name.
- X0030[16]: @{ Open defn.
- X0030[18]: Text. Text scrap[Grey]="Oops."
- X0030[23]: @} Close defn.
- X0030[25]: Text. Text scrap[White]="<010>
- X"
- X0031[01]: @A New section (Level 1).
- X0031[03]: @< Open name.
- X0031[05]: Text. Text scrap[Grey]="Error recovery point"
- X0031[25]: @> Close name.
- X0031[27]: Text. Text scrap[White]="<010>
- X<010>
- X"
- X0033[01]: @$ Macro defn.
- X0033[03]: @< Open name.
- X0033[05]: Text. Text scrap[Grey]="Sloth d"
- X0033[12]: @> Close name.
- X0033[14]: Text. Text scrap[Grey]="Z"
- X0033[15]: @{ Open defn.
- X0033[17]: Text. Text scrap[Grey]="Oops."
- X0033[22]: @} Close defn.
- X0033[24]: Text. Text scrap[White]="<010>
- X"
- X0034[01]: @A New section (Level 1).
- X0034[03]: @< Open name.
- X0034[05]: Text. Text scrap[Grey]="Error recovery point"
- X0034[25]: @> Close name.
- X0034[27]: Text. Text scrap[White]="<010>
- X<010>
- X"
- X0036[01]: @$ Macro defn.
- X0036[03]: @< Open name.
- X0036[05]: Text. Text scrap[Grey]="Sloth d"
- X0036[12]: @> Close name.
- X0036[14]: @Z Zero calls.
- X0036[16]: Text. Text scrap[Grey]="M"
- X0036[17]: @{ Open defn.
- X0036[19]: Text. Text scrap[Grey]="Oops."
- X0036[24]: @} Close defn.
- X0036[26]: Text. Text scrap[White]="<010>
- X"
- X0037[01]: @A New section (Level 1).
- X0037[03]: @< Open name.
- X0037[05]: Text. Text scrap[Grey]="Error recovery point"
- X0037[25]: @> Close name.
- X0037[27]: Text. Text scrap[White]="<010>
- X<010>
- X<010>
- X"
- X0040[01]: End Of File.
- X============================ End of TOKEN LIST DUMP ============================
- X
- X
- X========================== Start of MACRO TABLE DUMP ===========================
- X
- X
- X------------------- Start of Macro Dump --------------------
- Macro Name : "Sloth"
- Defined? : Yes.
- Parameters : 0
- Additive? : No.
- Zero Calls? : No.
- Many Calls? : No.
- Output File?: No.
- Call list :
- Macro body :
- X
- X--Start of List of Body Parts--
- This macro has 1 body part.
- Body part 1: Seqnum=1, Pos(L,C)=(7,3), Expression follows:
- X
- X---- Start of Expression ----
- X
- X----- Start Text Element -----
- Text scrap[Grey]="No zero and no many in this macro"
- X------ End Text Element ------
- X
- X----- End of Expression -----
- X
- X---End of List of Body Parts---
- X
- X-------------------- End of Macro Dump ---------------------
- X
- X
- X
- X------------------- Start of Macro Dump --------------------
- Macro Name : "Sloth a"
- Defined? : No.
- X-------------------- End of Macro Dump ---------------------
- X
- X
- X
- X------------------- Start of Macro Dump --------------------
- Macro Name : "Sloth b"
- Defined? : Yes.
- Parameters : 0
- Additive? : No.
- Zero Calls? : Yes.
- Many Calls? : No.
- Output File?: No.
- Call list :
- Macro body :
- X
- X--Start of List of Body Parts--
- This macro has 0 body parts.
- X---End of List of Body Parts---
- X
- X-------------------- End of Macro Dump ---------------------
- X
- X
- X
- X------------------- Start of Macro Dump --------------------
- Macro Name : "Sloth d"
- Defined? : No.
- X-------------------- End of Macro Dump ---------------------
- X
- X
- X
- X------------------- Start of Macro Dump --------------------
- Macro Name : "Sloth many"
- Defined? : Yes.
- Parameters : 0
- Additive? : No.
- Zero Calls? : No.
- Many Calls? : Yes.
- Output File?: No.
- Call list :
- Macro body :
- X
- X--Start of List of Body Parts--
- This macro has 1 body part.
- Body part 1: Seqnum=3, Pos(L,C)=(13,3), Expression follows:
- X
- X---- Start of Expression ----
- X
- X----- Start Text Element -----
- Text scrap[Grey]="Can be called from 1 to infinity times."
- X------ End Text Element ------
- X
- X----- End of Expression -----
- X
- X---End of List of Body Parts---
- X
- X-------------------- End of Macro Dump ---------------------
- X
- X
- X
- X------------------- Start of Macro Dump --------------------
- Macro Name : "Sloth manyzero"
- Defined? : Yes.
- Parameters : 0
- Additive? : No.
- Zero Calls? : No.
- Many Calls? : Yes.
- Output File?: No.
- Call list :
- Macro body :
- X
- X--Start of List of Body Parts--
- This macro has 0 body parts.
- X---End of List of Body Parts---
- X
- X-------------------- End of Macro Dump ---------------------
- X
- X
- X
- X------------------- Start of Macro Dump --------------------
- Macro Name : "Sloth zero"
- Defined? : Yes.
- Parameters : 0
- Additive? : No.
- Zero Calls? : Yes.
- Many Calls? : No.
- Output File?: No.
- Call list :
- Macro body :
- X
- X--Start of List of Body Parts--
- This macro has 1 body part.
- Body part 1: Seqnum=2, Pos(L,C)=(10,3), Expression follows:
- X
- X---- Start of Expression ----
- X
- X----- Start Text Element -----
- Text scrap[Grey]="Can be called from 0 to 1 times."
- X------ End Text Element ------
- X
- X----- End of Expression -----
- X
- X---End of List of Body Parts---
- X
- X-------------------- End of Macro Dump ---------------------
- X
- X
- X
- X------------------- Start of Macro Dump --------------------
- Macro Name : "Sloth zeromany"
- Defined? : Yes.
- Parameters : 0
- Additive? : No.
- Zero Calls? : Yes.
- Many Calls? : Yes.
- Output File?: No.
- Call list :
- Macro body :
- X
- X--Start of List of Body Parts--
- This macro has 1 body part.
- Body part 1: Seqnum=4, Pos(L,C)=(16,3), Expression follows:
- X
- X---- Start of Expression ----
- X
- X----- Start Text Element -----
- Text scrap[Grey]="Can be called from 0 to infinity times."
- X------ End Text Element ------
- X
- X----- End of Expression -----
- X
- X---End of List of Body Parts---
- X
- X-------------------- End of Macro Dump ---------------------
- X
- X
- X
- X=========================== End of MACRO TABLE DUMP ============================
- X
- X
- X========================= Start of DOCUMENT LIST DUMP ==========================
- X
- X
- TEXT COMPONENT: Pos(L,C)=(1,1).
- X
- X-- Start of Text Scrap List --
- Text scrap[Grey]="PR06: Test the parsing on invocation number constraints.<010>
- X<010>
- Trip the parser so we don't get past it.<010>
- X"
- X--- End of Text Scrap List ---
- X
- X
- TEXT COMPONENT: Pos(L,C)=(4,3).
- X
- X-- Start of Text Scrap List --
- Text scrap[Grey]="<010>
- X<010>
- X1. Test with no zero and no many.<010>
- X"
- X--- End of Text Scrap List ---
- X
- X
- MACRO DEFINITION COMPONENT: Pos(L,C)=(7,1).
- Part 1 of macro @<Sloth@>.
- X
- TEXT COMPONENT: Pos(L,C)=(7,49).
- X
- X-- Start of Text Scrap List --
- Text scrap[Grey]="<010>
- X<010>
- X2. Test with a zero.<010>
- X"
- X--- End of Text Scrap List ---
- X
- X
- MACRO DEFINITION COMPONENT: Pos(L,C)=(10,1).
- Part 1 of macro @<Sloth zero@>.
- X
- TEXT COMPONENT: Pos(L,C)=(10,55).
- X
- X-- Start of Text Scrap List --
- Text scrap[Grey]="<010>
- X<010>
- X3. Test with a many.<010>
- X"
- X--- End of Text Scrap List ---
- X
- X
- MACRO DEFINITION COMPONENT: Pos(L,C)=(13,1).
- Part 1 of macro @<Sloth many@>.
- X
- TEXT COMPONENT: Pos(L,C)=(13,62).
- X
- X-- Start of Text Scrap List --
- Text scrap[Grey]="<010>
- X<010>
- X4. Test with a zero and a many.<010>
- X"
- X--- End of Text Scrap List ---
- X
- X
- MACRO DEFINITION COMPONENT: Pos(L,C)=(16,1).
- Part 1 of macro @<Sloth zeromany@>.
- X
- TEXT COMPONENT: Pos(L,C)=(16,68).
- X
- X-- Start of Text Scrap List --
- Text scrap[Grey]="<010>
- X<010>
- X5. Test with a zero and a many but out of order (should give error).<010>
- X"
- X--- End of Text Scrap List ---
- X
- X
- TYPESETTER DIRECTIVE COMPONENT:
- X Section "1", Section name="Error recovery point".
- X
- TEXT COMPONENT: Pos(L,C)=(20,27).
- X
- X-- Start of Text Scrap List --
- Text scrap[Grey]="<010>
- X<010>
- X6. Test with syntactic errors.<010>
- X<010>
- X"
- X--- End of Text Scrap List ---
- X
- X
- TYPESETTER DIRECTIVE COMPONENT:
- X Section "2", Section name="Error recovery point".
- X
- TEXT COMPONENT: Pos(L,C)=(25,27).
- X
- X-- Start of Text Scrap List --
- Text scrap[White]="<010>
- X<010>
- X"
- X--- End of Text Scrap List ---
- X
- X
- TYPESETTER DIRECTIVE COMPONENT:
- X Section "3", Section name="Error recovery point".
- X
- TEXT COMPONENT: Pos(L,C)=(28,27).
- X
- X-- Start of Text Scrap List --
- Text scrap[White]="<010>
- X<010>
- X"
- X--- End of Text Scrap List ---
- X
- X
- TYPESETTER DIRECTIVE COMPONENT:
- X Section "4", Section name="Error recovery point".
- X
- TEXT COMPONENT: Pos(L,C)=(31,27).
- X
- X-- Start of Text Scrap List --
- Text scrap[White]="<010>
- X<010>
- X"
- X--- End of Text Scrap List ---
- X
- X
- TYPESETTER DIRECTIVE COMPONENT:
- X Section "5", Section name="Error recovery point".
- X
- TEXT COMPONENT: Pos(L,C)=(34,27).
- X
- X-- Start of Text Scrap List --
- Text scrap[White]="<010>
- X<010>
- X"
- X--- End of Text Scrap List ---
- X
- X
- TYPESETTER DIRECTIVE COMPONENT:
- X Section "6", Section name="Error recovery point".
- X
- TEXT COMPONENT: Pos(L,C)=(37,27).
- X
- X-- Start of Text Scrap List --
- Text scrap[White]="<010>
- X<010>
- X<010>
- X"
- X--- End of Text Scrap List ---
- X
- X
- X========================== End of DOCUMENT LIST DUMP ===========================
- X
- X
- Global Local| Input File
- X------------+-------------------------------------------------------------------
- X 1 1| PR06: Test the parsing on invocation number constraints.
- X 2 2|
- X 3 3| Trip the parser so we don't get past it.
- X 4 4| @>
- X Error|.^The parser was at the top level and was expecting
- X |.^one of: {Directive, Text, Macro definition, EOF}.
- X 5 5|
- X 6 6| 1. Test with no zero and no many.
- X 7 7| @$@<Sloth@>@{No zero and no many in this macro@}
- X 8 8|
- X 9 9| 2. Test with a zero.
- X 10 10| @$@<Sloth zero@>@Z@{Can be called from 0 to 1 times.@}
- X 11 11|
- X 12 12| 3. Test with a many.
- X 13 13| @$@<Sloth many@>@M@{Can be called from 1 to infinity times.@}
- X 14 14|
- X 15 15| 4. Test with a zero and a many.
- X 16 16| @$@<Sloth zeromany@>@Z@M@{Can be called from 0 to infinity times.@}
- X 17 17|
- X 18 18| 5. Test with a zero and a many but out of order (should give error).
- X 19 19| @$@<Sloth manyzero@>@M@Z@{Oops.@}
- X Error|.......................^Expecting '@{'.
- X |.......................^Skipping after error to the next major construct...
- X 20 20| @A@<Error recovery point@>
- X |.^...skipped to here after the error.
- X 21 21|
- X 22 22| 6. Test with syntactic errors.
- X 23 23|
- X 24 24| @$@<Sloth a@> @M @Z @{Oops.@}
- X Error|..............^Expecting "==@{" or "+=@{" or just "@{".
- X |..............^(or @Z or @M if they have not already appeared).
- X |..............^Note: FunnelWeb is intolerant of spaces at this point.
- X |...............^Skipping after error to the next major construct...
- X 25 25| @A@<Error recovery point@>
- X |.^...skipped to here after the error.
- X 26 26|
- X 27 27| @$@<Sloth b@>@Z@Z@{Oops.@}
- X Error|................^Expecting '@{'.
- X |................^Skipping after error to the next major construct...
- X 28 28| @A@<Error recovery point@>
- X |.^...skipped to here after the error.
- X 29 29|
- X 30 30| @$@<Sloth c@Z@>@{Oops.@}
- X Error|............^Illegal character or symbol in name.
- X |............^Skipping after error to the next major construct...
- X 31 31| @A@<Error recovery point@>
- X |.^...skipped to here after the error.
- X 32 32|
- X 33 33| @$@<Sloth d@>Z@{Oops.@}
- X Error|..............^Expecting "==@{" or "+=@{" or just "@{".
- X |..............^(or @Z or @M if they have not already appeared).
- X |..............^Note: FunnelWeb is intolerant of spaces at this point.
- X |...............^Skipping after error to the next major construct...
- X 34 34| @A@<Error recovery point@>
- X |.^...skipped to here after the error.
- X 35 35|
- X 36 36| @$@<Sloth d@>@ZM@{Oops.@}
- X Error|................^Expecting "==@{" or "+=@{" or just "@{".
- X |................^(or @Z or @M if they have not already appeared).
- X |................^Note: FunnelWeb is intolerant of spaces at this point.
- X |.................^Skipping after error to the next major construct...
- X 37 37| @A@<Error recovery point@>
- X |.^...skipped to here after the error.
- X 38 38|
- X 39 39|
- X | <End-Of-File>
- X------------+-------------------------------------------------------------------
- X
- There were 7 Errors.
- END_OF_FILE
- if test 21683 -ne `wc -c <'answers/pr06.lis'`; then
- echo shar: \"'answers/pr06.lis'\" unpacked with wrong size!
- fi
- # end of 'answers/pr06.lis'
- fi
- if test -f 'answers/wv03.tex' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'answers/wv03.tex'\"
- else
- echo shar: Extracting \"'answers/wv03.tex'\" \(20799 characters\)
- sed "s/^X//" >'answers/wv03.tex' <<'END_OF_FILE'
- X
- X%*******************************************************************************
- X%* START OF AUTOMATICALLY GENERATED TEX FILE *
- X%*******************************************************************************
- X%* *
- X%* This TeX file was automatically generated by the FunnelWeb preprocessor. *
- X%* You can typeset this file to produce printed documentation by running it *
- X%* through the TeX typesetter using a command such as: *
- X%* tex thisfilename *
- X%* The resultant file thisfilename.dvi can be printed using a command such as: *
- X%* lpr -Pcslw -d thisfilename.dvi *
- X%* *
- X%* FunnelWeb is a preprocessor that allows programmers to weave programs and *
- X%* their documentation together in a single document. The FunnelWeb program *
- X%* analyses such documents producing both program files and typeset *
- X%* documentation such as this TeX file. *
- X%* FunnelWeb was created by Ross Williams. *
- X%* *
- X%* For more information on FunnelWeb look in the following FTP archive: *
- X%* Machine : sirius.itd.adelaide.edu.au [IP=129.127.40.3]. *
- X%* Directory: ~pub/funnelweb/ *
- X%* (or some other appropriately named directory). *
- X%* or email Ross Williams at ross@spam.adelaide.edu.au *
- X%* *
- X%*******************************************************************************
- X
- X
- X%===================== Start of FunnelWeb TeX Definitions ======================
- X
- X
- X% Version
- X% -------
- X% This is FunnelWeb TeX Macro Library Version 1.0.
- X
- X
- X% Copyright
- X% ---------
- X% This set of FunnelWeb TeX definitions was written by Ross Williams and was
- X% originally Copyright (C) 1992 Ross N. Williams. However, I, Ross Williams,
- X% hereby forego any claim to Copyright in this set of FunnelWeb TeX definitions
- X% and hereby authorize that the set of TeX definitions pass into the public
- X% domain. -- Ross N. Williams, 3:41pm 07-May-1992, Adelaide, Australia.
- X
- X
- X% Modification
- X% ------------
- X% Please record all modifications to these TeX definitions here. Unless
- X% otherwise specified, all modified definitions fall in the public domain too.
- X%
- X% Programmers:
- X% RNW Ross N. Williams ross@spam.adelaide.edu.au
- X%
- X% Changes:
- X% 07-May-1992 RNW Prepared this work for public domain release.
- X%
- X
- X
- X% General Comments
- X% ----------------
- X% This set of TeX definitions exists for two reasons:
- X%
- X% 1. To shorten and neaten the FunnelWeb TeX output.
- X% 2. To allow users to fiddle with the output format in their input files
- X% (by inserting redefining "\def"s) without having to resort to
- X% modifying the FunnelWeb code.
- X%
- X% The user is warned that these definitions may be changed from time to time
- X% (but probably not much). The user should not be too sneaky. In particular,
- X% users wishing to redefine some of these macros should do so in an explicitly
- X% defined section at the top of their input file. This will mean that in the
- X% event of problems, that section can simply be deleted or commented out to
- X% allow the document to at least be typeset in the default format. Users should
- X% limit themselves to redefining these macros in such a section and should
- X% refrain from using the macros throughout their documents.
- X
- X
- X% Environment Parameters
- X% ----------------------
- X% \tolerance tells TeX how tolerant it should be about making bad line and
- X% page breaks. Here we set it to it's maximum, as
- X% 1) Computer programs are likely to cause lots of bad breaks.
- X% 2) In most cases the user would probably rather get the TeX file through
- X% TeX without any errors than fiddle with spacings for perfection.
- X\tolerance=10000
- X
- X% I don't like indentation as it makes the page look more busy. Instead,
- X% paragraphs are separated by a little space (see next).
- X\parindent=0pt
- X
- X% In many cases, users will produce documents with long runs of paragraphs.
- X% In order to space out these paragraphs, it is convenient to maintain a
- X% prevailing non-zero \parskip (end-of-paragaph skip). The only trouble is
- X% that the skip becomes a problem in macro definitions which require no skip
- X% and so we have to turn the skip on and off. The following two macros
- X% simplify this process.
- X\def\fwparskipon{\parskip=\medskipamount}
- X\def\fwparskipoff{\parskip=0pt}
- X\fwparskipon
- X
- X% Setting raggedbottom allows TeX to leave a bit of space at the bottom of the
- X% page in order to better vertically align the rest of the page (e.g. skips
- X% won't stretch as much). It also means that headings are less likely to be
- X% isolated at the bottom of the page without any following text.
- X\raggedbottom
- X
- X
- X% Fonts
- X% -----
- X% Most of the typeset output is set in 10pt roman and 10pt tt font.
- X% The major extra font needs spring from titles and headings.
- X% For portability's sake we use only the following fonts:
- X% cmr10
- X% cmbx10
- X% cmtt10
- X% and some enlargements of them. These fonts are all "standard" fonts
- X% in Plain TeX. See The TeXbook p.350.
- X\font\fwfontnote=cmr7
- X
- X\font\fwfontnorm=cmr10
- X\font\fwfontnorma=cmr10 scaled \magstep1
- X\font\fwfontnormb=cmr10 scaled \magstep2
- X
- X\font\fwfontbold=cmbx10
- X\font\fwfontbolda=cmbx10 scaled \magstep1
- X\font\fwfontboldb=cmbx10 scaled \magstep2
- X\font\fwfontboldc=cmbx10 scaled \magstep3
- X\font\fwfontboldd=cmbx10 scaled \magstep4
- X
- X
- X% Macros for Stylistic Details
- X% ----------------------------
- X% This section contains all the fiddly little macros for setting the details
- X% of each macro definition.
- X
- X% Macro definitions are sandwiched by calls to these macros which can be used
- X% to sort out the spacing before and after the macro definition.
- X\def\fwbeginmacro{\fwparskipoff\bigskip}
- X\def\fwendmacro{\fwparskipon\par}
- X
- X% These macros deal with the macro name and definition line.
- X\def\fwmacroname#1#2{{\sl #1\/}$\lbrack$#2$\rbrack$}
- X\def\fwfilename#1#2{{\bf #1}$\lbrack$#2$\rbrack$}
- X\def\fwzero#1{{\bf Z}}
- X\def\fwmany#1{{\bf M}}
- X\def\fwequals{ $\equiv$}
- X\def\fwplusequals{ $+\equiv$}
- X
- X% Now for the actual body of the definition. It looks nice to have the tt
- X% code indented a little. Again, we use macros instead of writing direct TeX,
- X% so as to allow the user to fiddle this stuff to taste without having to
- X% modify the FunnelWeb C code.
- X\def\fwodef{\parindent=15pt\vskip0pt$\lbrace$\parindent=20pt}
- X\def\fwcdef{$\rbrace$\vskip0pt\parindent=0pt}
- X\def\fwoquote{`}
- X\def\fwcquote{'}
- X\def\fwoparen{$($}
- X\def\fwcomma{$,$}
- X\def\fwcparen{$)$}
- X\def\fwparam#1{$\diamond #1$}
- X\def\fwparams#1{$(\diamond #1)$}
- X
- X% These macros deal with the notes that are appended at the end of each
- X% macro definition. Note that even though \fwisafile,\fwusedin, and \fwseealso
- X% have the same definition, they are given different names so as to allow the
- X% user to redefine these macros to typeset each kind of information differently
- X% if desired.
- X\def\fwbeginmacronotes{\begingroup\baselineskip=9pt\smallskip}
- X\def\fwnote#1{{\fwfontnote #1}\par}
- X\def\fwisafile#1{\fwnote{#1}}
- X\def\fwusedin#1{\fwnote{#1}}
- X\def\fwseealso#1{\fwnote{#1}}
- X\def\fwendmacronotes{\endgroup}
- X
- X
- X% Macros to Typeset Program Code Verbatim
- X% ---------------------------------------
- X% This is by far the hairiest and most difficult part of the typesetting task
- X% because we have to turn off most of TeX's natural instincts in order to
- X% typeset the program text exactly as it appears in the input file.
- X% Two macros are defined to pull this off: \fwbtx and \fwverbatimgobble.
- X% Their code was inspired by the following sections of "The TeXbook":
- X% Appendix D: Dirty Tricks, 3.Verbatim listing, p.380-382.
- X% Appendix E: Example Formats, p.421.
- X% The \fwbtx[ (for "FunnelWeb Begin TeXt") macro does most of the hard work.
- X% The liberal use of "%" is because I don't understand TeX well enough to
- X% understand when an end of line will cause trouble, and I am playing it safe.
- X
- X% Before defining the main \fwbtx macro, we have to stash away some definitions
- X% in the hidden part of TeX's environment. Let's hope that these "hidden"
- X% definitions don't affect anything except what is desired to be affected.
- X
- X% The tt font in which we wish to set the text has two Latin lurking ligatures!
- X% These are ?` and !`. To disable them, we define the left quote when ACTIVE
- X% to be defined in such a way as to prevent ligatures. The main TeX text will
- X% normally not be exposed to this definition because normally the leftquote
- X% character is not active. The \fwbtx macro temporarily makes the left quote
- X% character active thus activating the deactivation of left quote ligatures.
- X% See The TeXbook p.381.
- X{\catcode`\`=\active \gdef`{\relax\lq}}
- X
- X% TeX is fairly carefree about spaces and so we have to make it more serious.
- X% To do so we pull the same trick as above, setting up a definition for active
- X% space, but only making space active during the span of the verbatim text.
- X% In Plain TeX the active space is defined to be simply a space, but here we
- X% define it to be a control space. This ensures that the space cannot
- X% be gobbled up by one of TeX's mysterious mechanisms when activated.
- X% See The TeXbook, p.381 and p.352.
- X{\obeyspaces\global\let =\ }
- X
- X% Here is the main \fwbtx verbatim text macro.
- X% Note: The order in which all these pieces of business have to be done is
- X% still a partial mystery to me. Don't fiddle with this stuff unless you
- X% think you know what you are doing.
- X\def\fwbtx[{%
- X%
- X% The funnies involved in getting verbatim output are safely housed inside
- X% this \begingroup, and the \endgroup in \fwverbatimgobble. Groups are used
- X% instead of curly braces because we have to be able to signal the end of
- X% this macro with a curly brace.
- X\begingroup%
- X%
- X% \pars at the end of empty lines in the verbatim text won't come out normally
- X% because TeX is in vertical mode and they get gobbled up. To prevent this,
- X% we force \par to exit vertical mode first. See The TeXbook p.381.
- X\def\par{\leavevmode\endgraf}%
- X%
- X% Activate the leftquote character so as to avoid ligatures (see above).
- X\catcode`\`=\active%
- X%
- X% The \obeylines macro simply defines end of line (^M) to be \par. This ensures
- X% that TeX will treat each verbatim line as a new paragraph.
- X\obeylines%
- X%
- X% To get verbatim output, we have to desex all the special characters. This
- X% is explained in detail in The TeXbook p.380.
- X\def\do##1{\catcode`##1=12 }\dospecials%
- X%
- X% Activate the space character so as to make TeX treat blanks seriously.
- X% This activation invokes an eralier definition (see above).
- X\obeyspaces
- X%
- X% Interparagraph skips do not help the cause.
- X% Note: We have to preserve the indentation though, as the code is actually
- X% indented in the final output. See \fwodef in an earlier section.
- X\parskip=0pt%
- X%
- X% We typeset the verbatim text in tt font (courier on the Macintosh) for a
- X% number of reasons:
- X% - tt font has the same horizontal spacing for each character.
- X% - tt font covers the ASCII character set.
- X% - tt font doesn't have many surprises (e.g. ligatures).
- X% - tt font looks much what you might see on a computer terminal screen.
- X\tt%
- X%
- X% Having set up an environment for verbatim, we are ready to use it.
- X% By invoking \fwverbatimgobble, this \fwbtx macro gobbles up text verbatim (as
- X% part of the parameter of \fwverbatimgobble) until it sees the termination
- X% string "]fwetx=" (the "=" was thrown in to add obscurity as this sequence
- X% must never occur in the verbatim text).
- X\fwverbatimgobble}
- X
- X% The \fwverbatimgobble macro exists to allow \fwbtx to bracket verbatim text.
- X\def\fwverbatimgobble#1]fwetx={#1\endgroup}
- X
- X
- X% Table of Contents
- X% -----------------
- X% The five levels of table of contents that FunnelWeb supports are identified
- X% by the five letters [A..E]. These are used throughout the following macros.
- X
- X% The following macros are utilities to the TOC macros to follow.
- X\def\fwrule{\medskip\hrule\medskip}
- X\def\fwqh{\hskip1.5em\relax}
- X\def\fwbeforesec{\penalty-200\bigskip\medskip\par}
- X
- X% The following macros are used to typeset the table of contents.
- X\def\fwtocstart#1{\fwrule\leftline{\fwfontbolda Table of Contents}\fwrule}
- X\def\fwtoca#1#2{\leftline{{\bf #1 #2}}}
- X\def\fwtocb#1#2{\leftline{\fwqh #1 #2}}
- X\def\fwtocc#1#2{\leftline{\fwqh\fwqh #1 #2}}
- X\def\fwtocd#1#2{\leftline{\fwqh\fwqh\fwqh #1 #2}}
- X\def\fwtoce#1#2{\leftline{\fwqh\fwqh\fwqh\fwqh #1 #2}}
- X\def\fwtocfinish#1{\fwrule}
- X
- X% The following "library" macros define five different strengths of headings
- X% which can be used later in the section macros.
- X\def\fwliba#1#2{\vfill\eject{\fwfontboldc #1 #2}\penalty200\smallskip}
- X\def\fwlibb#1#2{\fwbeforesec{\fwfontboldb #1 #2}\penalty200\smallskip}
- X\def\fwlibc#1#2{\fwbeforesec{\fwfontnormb #1 #2}\penalty200\smallskip}
- X\def\fwlibd#1#2{\fwbeforesec{\bf #1 #2}\penalty200}
- X\def\fwlibe#1#2{\fwbeforesec{\bf #1 #2}}
- X
- X% Here are the macros that actually typeset the section headings throughout
- X% the document. The fwlib system has been employed so as to easily allow the
- X% user to redefine the strengths of headings to taste. For example, the
- X% user could insert in the input document a similar set of definitions to these
- X% but with the b..e headings set to \fwlibc. This would tone down the output.
- X\def\fwseca#1#2{\fwliba{#1}{#2}}
- X\def\fwsecb#1#2{\fwlibb{#1}{#2}}
- X\def\fwsecc#1#2{\fwlibc{#1}{#2}}
- X\def\fwsecd#1#2{\fwlibd{#1}{#2}}
- X\def\fwsece#1#2{\fwlibe{#1}{#2}}
- X
- X
- X% Support for Explicit Typesetting
- X% --------------------------------
- X% FunnelWeb supports pragmas and other constructs that allow
- X% typesetter-independent typesetting commands to be given. The
- X% following macros support these features.
- X
- X% The in-text literal @{sloth@} and emphasise @[walrus@] features.
- X\def\fwlit#1{{\tt #1}}
- X\def\fwemp#1{{\it #1}}
- X
- X% The "@p new_page" pragma.
- X\def\fwnewpage{\vfill\eject}
- X
- X% The "@p vskip Nmm" pragma.
- X\def\fwvskip#1{\null\vskip #1mm}
- X
- X% The "@p title <font> <align> <text>" pragma.
- X\def\fwfontnormal#1{{\fwfontnorm {#1}}}
- X\def\fwfonttitle#1{{\fwfontboldd {#1}}}
- X\def\fwfontsmalltitle#1{{\fwfontboldb {#1}}}
- X\def\fwleftline#1{\leftline{#1}}
- X\def\fwcenterline#1{\centerline{#1}}
- X\def\fwrightline#1{\rightline{#1}}
- X
- X
- X% Support for Old FunnelWeb
- X% -------------------------
- X% The following macros were used extensively in the first version of
- X% FunnelWeb and are retained so that these older input files will still
- X% typeset cleanly.
- X\def\p#1{{\tt #1}} % P for Program text.
- X\def\flagpage#1#2{
- X \null
- X \vfill
- X \centerline{\fwfontboldd #1}
- X \vskip 1cm
- X \centerline{\fwfontboldd #2}
- X \vfill
- X \null
- X \vfill
- X}
- X
- X%====================== End of FunnelWeb TeX Definitions =======================
- WV03: Test the typesetting of various kinds of macros.
- X
- XFirst create an output file to keep the analyser happy.
- X\fwbeginmacro
- X\fwfilename{wv03.out}{1}\fwequals \fwodef \fwcdef
- X\fwbeginmacronotes
- X\fwisafile{This macro is attached to an output file.}
- X\fwendmacronotes
- X\fwendmacro
- X
- X
- X1. Test macro never used.
- X\fwbeginmacro
- X\fwmacroname{Never Used}{2}\fwzero{}\fwequals \fwodef \fwcdef
- X\fwbeginmacronotes
- X\fwusedin{This macro is NEVER invoked.}
- X\fwendmacronotes
- X\fwendmacro
- X
- X
- X2. Test a macro used once.
- X\fwbeginmacro
- X\fwmacroname{Used Once}{3}\fwequals \fwodef \fwcdef
- X\fwbeginmacronotes
- X\fwusedin{This macro is invoked in definition 7.}
- X\fwendmacronotes
- X\fwendmacro
- X
- X
- X3. Test a macro used twice.
- X\fwbeginmacro
- X\fwmacroname{Used Twice}{4}\fwmany{}\fwequals \fwodef \fwcdef
- X\fwbeginmacronotes
- X\fwusedin{This macro is invoked in definitions 7 and 8.}
- X\fwendmacronotes
- X\fwendmacro
- X
- X
- X4. Test a macro used three times.
- X\fwbeginmacro
- X\fwmacroname{Used Thrice}{5}\fwmany{}\fwequals \fwodef \fwcdef
- X\fwbeginmacronotes
- X\fwusedin{This macro is invoked in definitions 7, 8, and 9.}
- X\fwendmacronotes
- X\fwendmacro
- X
- X
- X5. Test a macro used five times.
- X\fwbeginmacro
- X\fwmacroname{Used Quice}{6}\fwmany{}\fwequals \fwodef \fwcdef
- X\fwbeginmacronotes
- X\fwusedin{This macro is invoked in definitions 7, 8, 9, 10, and 11.}
- X\fwendmacronotes
- X\fwendmacro
- X
- X
- Here is the macro that does all the calling for the above.
- X\fwbeginmacro
- X\fwmacroname{Dummy1}{7}\fwzero{}\fwequals \fwodef \fwmacroname{Used Once}{3}\fwbtx[
- X]fwetx=%
- X\fwmacroname{Used Twice}{4}\fwbtx[
- X]fwetx=%
- X\fwmacroname{Used Thrice}{5}\fwbtx[
- X]fwetx=%
- X\fwmacroname{Used Quice}{6}\fwbtx[
- X]fwetx=%
- X\fwcdef
- X\fwbeginmacronotes
- X\fwusedin{This macro is NEVER invoked.}
- X\fwendmacronotes
- X\fwendmacro
- X
- X
- X\fwbeginmacro
- X\fwmacroname{Dummy2}{8}\fwzero{}\fwequals \fwodef \fwmacroname{Used Twice}{4}\fwbtx[
- X]fwetx=%
- X\fwmacroname{Used Thrice}{5}\fwbtx[
- X]fwetx=%
- X\fwmacroname{Used Quice}{6}\fwbtx[
- X]fwetx=%
- X\fwcdef
- X\fwbeginmacronotes
- X\fwusedin{This macro is NEVER invoked.}
- X\fwendmacronotes
- X\fwendmacro
- X
- X
- X\fwbeginmacro
- X\fwmacroname{Dummy3}{9}\fwzero{}\fwequals \fwodef \fwmacroname{Used Thrice}{5}\fwbtx[
- X]fwetx=%
- X\fwmacroname{Used Quice}{6}\fwbtx[
- X]fwetx=%
- X\fwcdef
- X\fwbeginmacronotes
- X\fwusedin{This macro is NEVER invoked.}
- X\fwendmacronotes
- X\fwendmacro
- X
- X
- X\fwbeginmacro
- X\fwmacroname{Dummy4}{10}\fwzero{}\fwequals \fwodef \fwmacroname{Used Quice}{6}\fwbtx[
- X]fwetx=%
- X\fwcdef
- X\fwbeginmacronotes
- X\fwusedin{This macro is NEVER invoked.}
- X\fwendmacronotes
- X\fwendmacro
- X
- X
- X\fwbeginmacro
- X\fwmacroname{Dummy5}{11}\fwzero{}\fwequals \fwodef \fwmacroname{Used Quice}{6}\fwbtx[
- X]fwetx=%
- X\fwcdef
- X\fwbeginmacronotes
- X\fwusedin{This macro is NEVER invoked.}
- X\fwendmacronotes
- X\fwendmacro
- X
- X
- X6. Test a macro with two body parts.
- X\fwbeginmacro
- X\fwmacroname{Two body parts}{12}\fwzero{}\fwplusequals \fwodef \fwbtx[Sloth]fwetx=%
- X\fwcdef
- X\fwbeginmacronotes
- X\fwseealso{This macro is defined in definitions 12 and 13.}
- X\fwusedin{This macro is invoked in definition 21.}
- X\fwendmacronotes
- X\fwendmacro
- X
- X\fwbeginmacro
- X\fwmacroname{Two body parts}{13}\fwzero{}\fwplusequals \fwodef \fwbtx[Walrus]fwetx=%
- X\fwcdef
- X\fwbeginmacronotes
- X\fwseealso{This macro is defined in definitions 12 and 13.}
- X\fwusedin{This macro is invoked in definition 21.}
- X\fwendmacronotes
- X\fwendmacro
- X
- X
- X7. Test a macro with three body parts.
- X\fwbeginmacro
- X\fwmacroname{Three body parts}{14}\fwzero{}\fwplusequals \fwodef \fwbtx[Sloth]fwetx=%
- X\fwcdef
- X\fwbeginmacronotes
- X\fwseealso{This macro is defined in definitions 14, 15, and 16.}
- X\fwusedin{This macro is invoked in definition 19.}
- X\fwendmacronotes
- X\fwendmacro
- X
- X\fwbeginmacro
- X\fwmacroname{Three body parts}{15}\fwzero{}\fwplusequals \fwodef \fwbtx[Walrus]fwetx=%
- X\fwcdef
- X\fwbeginmacronotes
- X\fwseealso{This macro is defined in definitions 14, 15, and 16.}
- X\fwusedin{This macro is invoked in definition 19.}
- X\fwendmacronotes
- X\fwendmacro
- X
- X\fwbeginmacro
- X\fwmacroname{Three body parts}{16}\fwzero{}\fwplusequals \fwodef \fwbtx[Aardvaark]fwetx=%
- X\fwcdef
- X\fwbeginmacronotes
- X\fwseealso{This macro is defined in definitions 14, 15, and 16.}
- X\fwusedin{This macro is invoked in definition 19.}
- X\fwendmacronotes
- X\fwendmacro
- X
- X
- X8. Test a macro with five body parts.
- X\fwbeginmacro
- X\fwmacroname{Five body parts}{17}\fwzero{}\fwplusequals \fwodef \fwbtx[Sloth]fwetx=%
- X\fwcdef
- X\fwbeginmacronotes
- X\fwseealso{This macro is defined in definitions 17, 18, 19, 20, and 21.}
- X\fwusedin{This macro is NEVER invoked.}
- X\fwendmacronotes
- X\fwendmacro
- X
- X\fwbeginmacro
- X\fwmacroname{Five body parts}{18}\fwzero{}\fwplusequals \fwodef \fwbtx[Walrus]fwetx=%
- X\fwcdef
- X\fwbeginmacronotes
- X\fwseealso{This macro is defined in definitions 17, 18, 19, 20, and 21.}
- X\fwusedin{This macro is NEVER invoked.}
- X\fwendmacronotes
- X\fwendmacro
- X
- X\fwbeginmacro
- X\fwmacroname{Five body parts}{19}\fwzero{}\fwplusequals \fwodef \fwmacroname{Three body parts}{14}\fwcdef
- X\fwbeginmacronotes
- X\fwseealso{This macro is defined in definitions 17, 18, 19, 20, and 21.}
- X\fwusedin{This macro is NEVER invoked.}
- X\fwendmacronotes
- X\fwendmacro
- X
- X\fwbeginmacro
- X\fwmacroname{Five body parts}{20}\fwzero{}\fwplusequals \fwodef \fwbtx[Aardvaark]fwetx=%
- X\fwcdef
- X\fwbeginmacronotes
- X\fwseealso{This macro is defined in definitions 17, 18, 19, 20, and 21.}
- X\fwusedin{This macro is NEVER invoked.}
- X\fwendmacronotes
- X\fwendmacro
- X
- X\fwbeginmacro
- X\fwmacroname{Five body parts}{21}\fwzero{}\fwplusequals \fwodef \fwmacroname{Two body parts}{12}\fwcdef
- X\fwbeginmacronotes
- X\fwseealso{This macro is defined in definitions 17, 18, 19, 20, and 21.}
- X\fwusedin{This macro is NEVER invoked.}
- X\fwendmacronotes
- X\fwendmacro
- X
- X
- X
- X\bye
- X
- X
- X%*******************************************************************************
- X%* END OF AUTOMATICALLY GENERATED TEX FILE *
- X%*******************************************************************************
- X
- END_OF_FILE
- if test 20799 -ne `wc -c <'answers/wv03.tex'`; then
- echo shar: \"'answers/wv03.tex'\" unpacked with wrong size!
- fi
- # end of 'answers/wv03.tex'
- fi
- if test -f 'hackman/h_cha.tex' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'hackman/h_cha.tex'\"
- else
- echo shar: Extracting \"'hackman/h_cha.tex'\" \(21460 characters\)
- sed "s/^X//" >'hackman/h_cha.tex' <<'END_OF_FILE'
- X%==============================================================================%
- X% Start of Cha.tex %
- X%==============================================================================%
- X%
- X% Copyright
- X% ---------
- X% Copyright (C) 1992 Ross N. Williams.
- X% This file contains a chapter of the FunnelWeb Hacker's Manual.
- X% See the main TeX file for this manual for further information.
- X%
- X%==============================================================================%
- X
- X\appendix
- X
- X%==============================================================================
- X
- X\chapter{GNU General Public License Version 2}
- X\xx{GNU}{License}
- X
- This appendix contains a verbatim copy of Version~2 of the GNU
- General Public License under which the FunnelWeb computer program is
- released. Note that the \i{FunnelWeb User's Manual} and
- X\i{FunnelWeb Hacker's
- Manual} are released under a much simpler license that does not allow
- modifications.
- X
- X\bigskip
- X
- X\hrule
- X
- X\bigskip
- X
- X\begin{verbatim}
- X GNU GENERAL PUBLIC LICENSE
- X Version 2, June 1991
- X
- X Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- X 675 Mass Ave, Cambridge, MA 02139, USA
- X Everyone is permitted to copy and distribute verbatim copies
- X of this license document, but changing it is not allowed.
- X
- X Preamble
- X
- X The licenses for most software are designed to take away your
- freedom to share and change it. By contrast, the GNU General Public
- License is intended to guarantee your freedom to share and change free
- software--to make sure the software is free for all its users. This
- General Public License applies to most of the Free Software
- XFoundation's software and to any other program whose authors commit to
- using it. (Some other Free Software Foundation software is covered by
- the GNU Library General Public License instead.) You can apply it to
- your programs, too.
- X
- X When we speak of free software, we are referring to freedom, not
- price. Our General Public Licenses are designed to make sure that you
- have the freedom to distribute copies of free software (and charge for
- this service if you wish), that you receive source code or can get it
- if you want it, that you can change the software or use pieces of it
- in new free programs; and that you know you can do these things.
- X
- X To protect your rights, we need to make restrictions that forbid
- anyone to deny you these rights or to ask you to surrender the rights.
- These restrictions translate to certain responsibilities for you if you
- distribute copies of the software, or if you modify it.
- X
- X For example, if you distribute copies of such a program, whether
- gratis or for a fee, you must give the recipients all the rights that
- you have. You must make sure that they, too, receive or can get the
- source code. And you must show them these terms so they know their
- rights.
- X
- X We protect your rights with two steps: (1) copyright the software, and
- X(2) offer you this license which gives you legal permission to copy,
- distribute and/or modify the software.
- X
- X Also, for each author's protection and ours, we want to make certain
- that everyone understands that there is no warranty for this free
- software. If the software is modified by someone else and passed on, we
- want its recipients to know that what they have is not the original, so
- that any problems introduced by others will not reflect on the original
- authors' reputations.
- X
- X Finally, any free program is threatened constantly by software
- patents. We wish to avoid the danger that redistributors of a free
- program will individually obtain patent licenses, in effect making the
- program proprietary. To prevent this, we have made it clear that any
- patent must be licensed for everyone's free use or not licensed at all.
- X
- X The precise terms and conditions for copying, distribution and
- modification follow.
- X
- X GNU GENERAL PUBLIC LICENSE
- X TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
- X
- X 0. This License applies to any program or other work which contains
- a notice placed by the copyright holder saying it may be distributed
- under the terms of this General Public License. The "Program", below,
- refers to any such program or work, and a "work based on the Program"
- means either the Program or any derivative work under copyright law:
- that is to say, a work containing the Program or a portion of it,
- either verbatim or with modifications and/or translated into another
- language. (Hereinafter, translation is included without limitation in
- the term "modification".) Each licensee is addressed as "you".
- X
- Activities other than copying, distribution and modification are not
- covered by this License; they are outside its scope. The act of
- running the Program is not restricted, and the output from the Program
- is covered only if its contents constitute a work based on the
- Program (independent of having been made by running the Program).
- Whether that is true depends on what the Program does.
- X
- X 1. You may copy and distribute verbatim copies of the Program's
- source code as you receive it, in any medium, provided that you
- conspicuously and appropriately publish on each copy an appropriate
- copyright notice and disclaimer of warranty; keep intact all the
- notices that refer to this License and to the absence of any warranty;
- and give any other recipients of the Program a copy of this License
- along with the Program.
- X
- You may charge a fee for the physical act of transferring a copy, and
- you may at your option offer warranty protection in exchange for a fee.
- X
- X 2. You may modify your copy or copies of the Program or any portion
- of it, thus forming a work based on the Program, and copy and
- distribute such modifications or work under the terms of Section 1
- above, provided that you also meet all of these conditions:
- X
- X a) You must cause the modified files to carry prominent notices
- X stating that you changed the files and the date of any change.
- X
- X b) You must cause any work that you distribute or publish, that in
- X whole or in part contains or is derived from the Program or any
- X part thereof, to be licensed as a whole at no charge to all third
- X parties under the terms of this License.
- X
- X c) If the modified program normally reads commands interactively
- X when run, you must cause it, when started running for such
- X interactive use in the most ordinary way, to print or display an
- X announcement including an appropriate copyright notice and a
- X notice that there is no warranty (or else, saying that you provide
- X a warranty) and that users may redistribute the program under
- X these conditions, and telling the user how to view a copy of this
- X License. (Exception: if the Program itself is interactive but
- X does not normally print such an announcement, your work based on
- X the Program is not required to print an announcement.)
- X
- These requirements apply to the modified work as a whole. If
- identifiable sections of that work are not derived from the Program,
- and can be reasonably considered independent and separate works in
- themselves, then this License, and its terms, do not apply to those
- sections when you distribute them as separate works. But when you
- distribute the same sections as part of a whole which is a work based
- on the Program, the distribution of the whole must be on the terms of
- this License, whose permissions for other licensees extend to the
- entire whole, and thus to each and every part regardless of who wrote it.
- X
- Thus, it is not the intent of this section to claim rights or contest
- your rights to work written entirely by you; rather, the intent is to
- exercise the right to control the distribution of derivative or
- collective works based on the Program.
- X
- In addition, mere aggregation of another work not based on the Program
- with the Program (or with a work based on the Program) on a volume of
- a storage or distribution medium does not bring the other work under
- the scope of this License.
- X
- X 3. You may copy and distribute the Program (or a work based on it,
- under Section 2) in object code or executable form under the terms of
- Sections 1 and 2 above provided that you also do one of the following:
- X
- X a) Accompany it with the complete corresponding machine-readable
- X source code, which must be distributed under the terms of Sections
- X 1 and 2 above on a medium customarily used for software interchange; or,
- X
- X b) Accompany it with a written offer, valid for at least three
- X years, to give any third party, for a charge no more than your
- X cost of physically performing source distribution, a complete
- X machine-readable copy of the corresponding source code, to be
- X distributed under the terms of Sections 1 and 2 above on a medium
- X customarily used for software interchange; or,
- X
- X c) Accompany it with the information you received as to the offer
- X to distribute corresponding source code. (This alternative is
- X allowed only for noncommercial distribution and only if you
- X received the program in object code or executable form with such
- X an offer, in accord with Subsection b above.)
- X
- The source code for a work means the preferred form of the work for
- making modifications to it. For an executable work, complete source
- code means all the source code for all modules it contains, plus any
- associated interface definition files, plus the scripts used to
- control compilation and installation of the executable. However, as a
- special exception, the source code distributed need not include
- anything that is normally distributed (in either source or binary
- form) with the major components (compiler, kernel, and so on) of the
- operating system on which the executable runs, unless that component
- itself accompanies the executable.
- X
- If distribution of executable or object code is made by offering
- access to copy from a designated place, then offering equivalent
- access to copy the source code from the same place counts as
- distribution of the source code, even though third parties are not
- compelled to copy the source along with the object code.
- X
- X 4. You may not copy, modify, sublicense, or distribute the Program
- except as expressly provided under this License. Any attempt
- otherwise to copy, modify, sublicense or distribute the Program is
- void, and will automatically terminate your rights under this License.
- However, parties who have received copies, or rights, from you under
- this License will not have their licenses terminated so long as such
- parties remain in full compliance.
- X
- X 5. You are not required to accept this License, since you have not
- signed it. However, nothing else grants you permission to modify or
- distribute the Program or its derivative works. These actions are
- prohibited by law if you do not accept this License. Therefore, by
- modifying or distributing the Program (or any work based on the
- Program), you indicate your acceptance of this License to do so, and
- all its terms and conditions for copying, distributing or modifying
- the Program or works based on it.
- X
- X 6. Each time you redistribute the Program (or any work based on the
- Program), the recipient automatically receives a license from the
- original licensor to copy, distribute or modify the Program subject to
- these terms and conditions. You may not impose any further
- restrictions on the recipients' exercise of the rights granted herein.
- You are not responsible for enforcing compliance by third parties to
- this License.
- X
- X 7. If, as a consequence of a court judgment or allegation of patent
- infringement or for any other reason (not limited to patent issues),
- conditions are imposed on you (whether by court order, agreement or
- otherwise) that contradict the conditions of this License, they do not
- excuse you from the conditions of this License. If you cannot
- distribute so as to satisfy simultaneously your obligations under this
- License and any other pertinent obligations, then as a consequence you
- may not distribute the Program at all. For example, if a patent
- license would not permit royalty-free redistribution of the Program by
- all those who receive copies directly or indirectly through you, then
- the only way you could satisfy both it and this License would be to
- refrain entirely from distribution of the Program.
- X
- If any portion of this section is held invalid or unenforceable under
- any particular circumstance, the balance of the section is intended to
- apply and the section as a whole is intended to apply in other
- circumstances.
- X
- It is not the purpose of this section to induce you to infringe any
- patents or other property right claims or to contest validity of any
- such claims; this section has the sole purpose of protecting the
- integrity of the free software distribution system, which is
- implemented by public license practices. Many people have made
- generous contributions to the wide range of software distributed
- through that system in reliance on consistent application of that
- system; it is up to the author/donor to decide if he or she is willing
- to distribute software through any other system and a licensee cannot
- impose that choice.
- X
- This section is intended to make thoroughly clear what is believed to
- be a consequence of the rest of this License.
- X
- X 8. If the distribution and/or use of the Program is restricted in
- certain countries either by patents or by copyrighted interfaces, the
- original copyright holder who places the Program under this License
- may add an explicit geographical distribution limitation excluding
- those countries, so that distribution is permitted only in or among
- countries not thus excluded. In such case, this License incorporates
- the limitation as if written in the body of this License.
- X
- X 9. The Free Software Foundation may publish revised and/or new versions
- of the General Public License from time to time. Such new versions will
- be similar in spirit to the present version, but may differ in detail to
- address new problems or concerns.
- X
- XEach version is given a distinguishing version number. If the Program
- specifies a version number of this License which applies to it and "any
- later version", you have the option of following the terms and conditions
- either of that version or of any later version published by the Free
- Software Foundation. If the Program does not specify a version number of
- this License, you may choose any version ever published by the Free Software
- XFoundation.
- X
- X 10. If you wish to incorporate parts of the Program into other free
- programs whose distribution conditions are different, write to the author
- to ask for permission. For software which is copyrighted by the Free
- Software Foundation, write to the Free Software Foundation; we sometimes
- make exceptions for this. Our decision will be guided by the two goals
- of preserving the free status of all derivatives of our free software and
- of promoting the sharing and reuse of software generally.
- X
- X NO WARRANTY
- X
- X 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
- XFOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
- OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
- PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
- OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
- TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
- PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
- REPAIR OR CORRECTION.
- X
- X 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
- WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
- REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
- INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
- OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
- TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
- YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
- PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGES.
- X
- X END OF TERMS AND CONDITIONS
- X
- X Appendix: How to Apply These Terms to Your New Programs
- X
- X If you develop a new program, and you want it to be of the greatest
- possible use to the public, the best way to achieve this is to make it
- free software which everyone can redistribute and change under these terms.
- X
- X To do so, attach the following notices to the program. It is safest
- to attach them to the start of each source file to most effectively
- convey the exclusion of warranty; and each file should have at least
- the "copyright" line and a pointer to where the full notice is found.
- X
- X <one line to give the program's name and a brief idea of what it does.>
- X Copyright (C) 19yy <name of author>
- X
- X This program is free software; you can redistribute it and/or modify
- X it under the terms of the GNU General Public License as published by
- X the Free Software Foundation; either version 2 of the License, or
- X (at your option) any later version.
- X
- X This program is distributed in the hope that it will be useful,
- X but WITHOUT ANY WARRANTY; without even the implied warranty of
- X MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- X GNU General Public License for more details.
- X
- X You should have received a copy of the GNU General Public License
- X along with this program; if not, write to the Free Software
- X Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- X
- Also add information on how to contact you by electronic and paper mail.
- X
- If the program is interactive, make it output a short notice like this
- when it starts in an interactive mode:
- X
- X Gnomovision version 69, Copyright (C) 19yy name of author
- X Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
- X type `show w'.
- X This is free software, and you are welcome to redistribute it
- X under certain conditions; type `show c' for details.
- X
- The hypothetical commands `show w' and `show c' should show the appropriate
- parts of the General Public License. Of course, the commands you use may
- be called something other than `show w' and `show c'; they could even be
- mouse-clicks or menu items--whatever suits your program.
- X
- You should also get your employer (if you work as a programmer) or your
- school, if any, to sign a "copyright disclaimer" for the program, if
- necessary. Here is a sample; alter the names:
- X
- X Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- X `Gnomovision' (which makes passes at compilers) written by James Hacker.
- X
- X <signature of Ty Coon>, 1 April 1989
- X Ty Coon, President of Vice
- X
- This General Public License does not permit incorporating your program into
- proprietary programs. If your program is a subroutine library, you may
- consider it more useful to permit linking proprietary applications with the
- library. If this is what you want to do, use the GNU Library General
- Public License instead of this License.
- X\end{verbatim}
- X
- X\bigskip
- X
- X\hrule
- X
- X%==============================================================================
- X
- X\chapter{References}
- X\x{references}
- X
- X\paper{ANSI} Australian Standard AS~3955-1991, \dq{Programming Languages --- C},
- X(ISBN: 0-7262-6970-0), 12~July~1991. Identical to:
- International Standard ISO/IEC 9899:
- X1990 Programming Languages --- C.\checked{}
- X
- X\paper{Bentley86} Bentley~J., \dq{Programming Pearls: Literate Programming},
- X\i{Communications of the ACM}, Vol.~29, No.~5, pp.~364--369, 1986.\checked{}
- X
- X\paper{Hoare80} Hoare~C.A.R., \dq{The Emperor's Old Clothes},
- Turing Award Lecture, 1980, from \dq{ACM Turing Award Lectures: The
- XFirst Twenty Years 1966--1985},
- ACM Press, New York, (ISBN: 0-201-07794-9), 1987 (see p.~155).\checked{}
- X
- X\paper{Horton90} Horton~M.R., \dq{Portable C Software},
- Prentice Hall, (ISBN: 0-13-868050-7), 1990.\checked{}
- X
- X\paper{Kernighan88} Kernighan~B.W., Ritchie~D.M., \dq{The~C Programming
- Language}, (second edition,\dq{ANSI~C}), Prentice Hall,
- X(ISBN: 0-13-110362-8), 1988.\checked{}
- X
- X\paper{Knuth83} Knuth~D.E., \dq{The WEB System of Structured
- Documentation}, (Web User Manual, Version~2.5, November, 1983),
- Stanford University, 1983.\checked{}
- X
- X\paper{Knuth84} Knuth~D.E., \dq{The \TeX{}book}, Addison-Wesley,
- X(ISBN: 0-201-13448-9), 1984.
- X
- X\paper{Lamport86} Lamport~L., \dq{\LaTeX{}: A Document Preparation System},
- Addison-Wesley, (ISBN: 0-201-15790-X),
- X1986.\checked{}
- X
- X\paper{Rabinowitz90} Rabinowitz~H., Schaap~C., \dq{Portable~C}, Prentice Hall,
- X(ISBN:0-13-685967-4) 1990.\checked{}
- X
- X\paper{Ramsey89} Ramsey~N., \dq{Weaving a Language-Independent WEB},
- X\i{Communications of the ACM}, Vol.~32, No.~9, pp.~1051--1055, 1989.\checked{}
- X
- X\paper{Tarjan72} Tarjan~R.E.,
- X\dq{Depth-First Search and Linear Graph Algorithms},
- X\i{SIAM Journal of Computing}, Vol.~1, No.~2, pp.~146--160,
- June 1972.\checked{}
- X
- X\paper{USDOD83} \dq{The Programming Language Ada Reference Manual},
- American National Standards Institute Inc,
- ANSI/MIL-STD-1815A-1983, 1983.\checked{}
- X
- X%==============================================================================
- X
- X\addcontentsline{toc}{chapter}{Index}
- X\def\indexentry#1#2{\item #1~#2}
- X\begin{theindex}
- X\input h_manual.sin
- X\end{theindex}
- X
- X%==============================================================================%
- X% End of Cha.tex %
- X%==============================================================================%
- END_OF_FILE
- if test 21460 -ne `wc -c <'hackman/h_cha.tex'`; then
- echo shar: \"'hackman/h_cha.tex'\" unpacked with wrong size!
- fi
- # end of 'hackman/h_cha.tex'
- fi
- if test -f 'sources/help_gnu.ctx' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'sources/help_gnu.ctx'\"
- else
- echo shar: Extracting \"'sources/help_gnu.ctx'\" \(20705 characters\)
- sed "s/^X//" >'sources/help_gnu.ctx' <<'END_OF_FILE'
- X WX(" GNU GENERAL PUBLIC LICENSE");
- X WX(" Version 2, June 1991");
- X WX("");
- X WX(" Copyright (C) 1989, 1991 Free Software Foundation, Inc.");
- X WX(" 675 Mass Ave, Cambridge, MA 02139, USA");
- X WX(" Everyone is permitted to copy and distribute verbatim copies");
- X WX(" of this license document, but changing it is not allowed.");
- X WX("");
- X WX(" Preamble");
- X WX("");
- X WX(" The licenses for most software are designed to take away your");
- X WX("freedom to share and change it. By contrast, the GNU General Public");
- X WX("License is intended to guarantee your freedom to share and change free");
- X WX("software--to make sure the software is free for all its users. This");
- X WX("General Public License applies to most of the Free Software");
- X WX("Foundation's software and to any other program whose authors commit to");
- X WX("using it. (Some other Free Software Foundation software is covered by");
- X WX("the GNU Library General Public License instead.) You can apply it to");
- X WX("your programs, too.");
- X WX("");
- X WX(" When we speak of free software, we are referring to freedom, not");
- X WX("price. Our General Public Licenses are designed to make sure that you");
- X WX("have the freedom to distribute copies of free software (and charge for");
- X WX("this service if you wish), that you receive source code or can get it");
- X WX("if you want it, that you can change the software or use pieces of it");
- X WX("in new free programs; and that you know you can do these things.");
- X WX("");
- X WX(" To protect your rights, we need to make restrictions that forbid");
- X WX("anyone to deny you these rights or to ask you to surrender the rights.");
- X WX("These restrictions translate to certain responsibilities for you if you");
- X WX("distribute copies of the software, or if you modify it.");
- X WX("");
- X WX(" For example, if you distribute copies of such a program, whether");
- X WX("gratis or for a fee, you must give the recipients all the rights that");
- X WX("you have. You must make sure that they, too, receive or can get the");
- X WX("source code. And you must show them these terms so they know their");
- X WX("rights.");
- X WX("");
- X WX(" We protect your rights with two steps: (1) copyright the software, and");
- X WX("(2) offer you this license which gives you legal permission to copy,");
- X WX("distribute and/or modify the software.");
- X WX("");
- X WX(" Also, for each author's protection and ours, we want to make certain");
- X WX("that everyone understands that there is no warranty for this free");
- X WX("software. If the software is modified by someone else and passed on, we");
- X WX("want its recipients to know that what they have is not the original, so");
- X WX("that any problems introduced by others will not reflect on the original");
- X WX("authors' reputations.");
- X WX("");
- X WX(" Finally, any free program is threatened constantly by software");
- X WX("patents. We wish to avoid the danger that redistributors of a free");
- X WX("program will individually obtain patent licenses, in effect making the");
- X WX("program proprietary. To prevent this, we have made it clear that any");
- X WX("patent must be licensed for everyone's free use or not licensed at all.");
- X WX("");
- X WX(" The precise terms and conditions for copying, distribution and");
- X WX("modification follow.");
- X WX("");
- X WX(" GNU GENERAL PUBLIC LICENSE");
- X WX(" TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION");
- X WX("");
- X WX(" 0. This License applies to any program or other work which contains");
- X WX("a notice placed by the copyright holder saying it may be distributed");
- X WX("under the terms of this General Public License. The \"Program\", below,");
- X WX("refers to any such program or work, and a \"work based on the Program\"");
- X WX("means either the Program or any derivative work under copyright law:");
- X WX("that is to say, a work containing the Program or a portion of it,");
- X WX("either verbatim or with modifications and/or translated into another");
- X WX("language. (Hereinafter, translation is included without limitation in");
- X WX("the term \"modification\".) Each licensee is addressed as \"you\".");
- X WX("");
- X WX("Activities other than copying, distribution and modification are not");
- X WX("covered by this License; they are outside its scope. The act of");
- X WX("running the Program is not restricted, and the output from the Program");
- X WX("is covered only if its contents constitute a work based on the");
- X WX("Program (independent of having been made by running the Program).");
- X WX("Whether that is true depends on what the Program does.");
- X WX("");
- X WX(" 1. You may copy and distribute verbatim copies of the Program's");
- X WX("source code as you receive it, in any medium, provided that you");
- X WX("conspicuously and appropriately publish on each copy an appropriate");
- X WX("copyright notice and disclaimer of warranty; keep intact all the");
- X WX("notices that refer to this License and to the absence of any warranty;");
- X WX("and give any other recipients of the Program a copy of this License");
- X WX("along with the Program.");
- X WX("");
- X WX("You may charge a fee for the physical act of transferring a copy, and");
- X WX("you may at your option offer warranty protection in exchange for a fee.");
- X WX("");
- X WX(" 2. You may modify your copy or copies of the Program or any portion");
- X WX("of it, thus forming a work based on the Program, and copy and");
- X WX("distribute such modifications or work under the terms of Section 1");
- X WX("above, provided that you also meet all of these conditions:");
- X WX("");
- X WX(" a) You must cause the modified files to carry prominent notices");
- X WX(" stating that you changed the files and the date of any change.");
- X WX("");
- X WX(" b) You must cause any work that you distribute or publish, that in");
- X WX(" whole or in part contains or is derived from the Program or any");
- X WX(" part thereof, to be licensed as a whole at no charge to all third");
- X WX(" parties under the terms of this License.");
- X WX("");
- X WX(" c) If the modified program normally reads commands interactively");
- X WX(" when run, you must cause it, when started running for such");
- X WX(" interactive use in the most ordinary way, to print or display an");
- X WX(" announcement including an appropriate copyright notice and a");
- X WX(" notice that there is no warranty (or else, saying that you provide");
- X WX(" a warranty) and that users may redistribute the program under");
- X WX(" these conditions, and telling the user how to view a copy of this");
- X WX(" License. (Exception: if the Program itself is interactive but");
- X WX(" does not normally print such an announcement, your work based on");
- X WX(" the Program is not required to print an announcement.)");
- X WX("");
- X WX("These requirements apply to the modified work as a whole. If");
- X WX("identifiable sections of that work are not derived from the Program,");
- X WX("and can be reasonably considered independent and separate works in");
- X WX("themselves, then this License, and its terms, do not apply to those");
- X WX("sections when you distribute them as separate works. But when you");
- X WX("distribute the same sections as part of a whole which is a work based");
- X WX("on the Program, the distribution of the whole must be on the terms of");
- X WX("this License, whose permissions for other licensees extend to the");
- X WX("entire whole, and thus to each and every part regardless of who wrote it.");
- X WX("");
- X WX("Thus, it is not the intent of this section to claim rights or contest");
- X WX("your rights to work written entirely by you; rather, the intent is to");
- X WX("exercise the right to control the distribution of derivative or");
- X WX("collective works based on the Program.");
- X WX("");
- X WX("In addition, mere aggregation of another work not based on the Program");
- X WX("with the Program (or with a work based on the Program) on a volume of");
- X WX("a storage or distribution medium does not bring the other work under");
- X WX("the scope of this License.");
- X WX("");
- X WX(" 3. You may copy and distribute the Program (or a work based on it,");
- X WX("under Section 2) in object code or executable form under the terms of");
- X WX("Sections 1 and 2 above provided that you also do one of the following:");
- X WX("");
- X WX(" a) Accompany it with the complete corresponding machine-readable");
- X WX(" source code, which must be distributed under the terms of Sections");
- X WX(" 1 and 2 above on a medium customarily used for software interchange; or,");
- X WX("");
- X WX(" b) Accompany it with a written offer, valid for at least three");
- X WX(" years, to give any third party, for a charge no more than your");
- X WX(" cost of physically performing source distribution, a complete");
- X WX(" machine-readable copy of the corresponding source code, to be");
- X WX(" distributed under the terms of Sections 1 and 2 above on a medium");
- X WX(" customarily used for software interchange; or,");
- X WX("");
- X WX(" c) Accompany it with the information you received as to the offer");
- X WX(" to distribute corresponding source code. (This alternative is");
- X WX(" allowed only for noncommercial distribution and only if you");
- X WX(" received the program in object code or executable form with such");
- X WX(" an offer, in accord with Subsection b above.)");
- X WX("");
- X WX("The source code for a work means the preferred form of the work for");
- X WX("making modifications to it. For an executable work, complete source");
- X WX("code means all the source code for all modules it contains, plus any");
- X WX("associated interface definition files, plus the scripts used to");
- X WX("control compilation and installation of the executable. However, as a");
- X WX("special exception, the source code distributed need not include");
- X WX("anything that is normally distributed (in either source or binary");
- X WX("form) with the major components (compiler, kernel, and so on) of the");
- X WX("operating system on which the executable runs, unless that component");
- X WX("itself accompanies the executable.");
- X WX("");
- X WX("If distribution of executable or object code is made by offering");
- X WX("access to copy from a designated place, then offering equivalent");
- X WX("access to copy the source code from the same place counts as");
- X WX("distribution of the source code, even though third parties are not");
- X WX("compelled to copy the source along with the object code.");
- X WX("");
- X WX(" 4. You may not copy, modify, sublicense, or distribute the Program");
- X WX("except as expressly provided under this License. Any attempt");
- X WX("otherwise to copy, modify, sublicense or distribute the Program is");
- X WX("void, and will automatically terminate your rights under this License.");
- X WX("However, parties who have received copies, or rights, from you under");
- X WX("this License will not have their licenses terminated so long as such");
- X WX("parties remain in full compliance.");
- X WX("");
- X WX(" 5. You are not required to accept this License, since you have not");
- X WX("signed it. However, nothing else grants you permission to modify or");
- X WX("distribute the Program or its derivative works. These actions are");
- X WX("prohibited by law if you do not accept this License. Therefore, by");
- X WX("modifying or distributing the Program (or any work based on the");
- X WX("Program), you indicate your acceptance of this License to do so, and");
- X WX("all its terms and conditions for copying, distributing or modifying");
- X WX("the Program or works based on it.");
- X WX("");
- X WX(" 6. Each time you redistribute the Program (or any work based on the");
- X WX("Program), the recipient automatically receives a license from the");
- X WX("original licensor to copy, distribute or modify the Program subject to");
- X WX("these terms and conditions. You may not impose any further");
- X WX("restrictions on the recipients' exercise of the rights granted herein.");
- X WX("You are not responsible for enforcing compliance by third parties to");
- X WX("this License.");
- X WX("");
- X WX(" 7. If, as a consequence of a court judgment or allegation of patent");
- X WX("infringement or for any other reason (not limited to patent issues),");
- X WX("conditions are imposed on you (whether by court order, agreement or");
- X WX("otherwise) that contradict the conditions of this License, they do not");
- X WX("excuse you from the conditions of this License. If you cannot");
- X WX("distribute so as to satisfy simultaneously your obligations under this");
- X WX("License and any other pertinent obligations, then as a consequence you");
- X WX("may not distribute the Program at all. For example, if a patent");
- X WX("license would not permit royalty-free redistribution of the Program by");
- X WX("all those who receive copies directly or indirectly through you, then");
- X WX("the only way you could satisfy both it and this License would be to");
- X WX("refrain entirely from distribution of the Program.");
- X WX("");
- X WX("If any portion of this section is held invalid or unenforceable under");
- X WX("any particular circumstance, the balance of the section is intended to");
- X WX("apply and the section as a whole is intended to apply in other");
- X WX("circumstances.");
- X WX("");
- X WX("It is not the purpose of this section to induce you to infringe any");
- X WX("patents or other property right claims or to contest validity of any");
- X WX("such claims; this section has the sole purpose of protecting the");
- X WX("integrity of the free software distribution system, which is");
- X WX("implemented by public license practices. Many people have made");
- X WX("generous contributions to the wide range of software distributed");
- X WX("through that system in reliance on consistent application of that");
- X WX("system; it is up to the author/donor to decide if he or she is willing");
- X WX("to distribute software through any other system and a licensee cannot");
- X WX("impose that choice.");
- X WX("");
- X WX("This section is intended to make thoroughly clear what is believed to");
- X WX("be a consequence of the rest of this License.");
- X WX("");
- X WX(" 8. If the distribution and/or use of the Program is restricted in");
- X WX("certain countries either by patents or by copyrighted interfaces, the");
- X WX("original copyright holder who places the Program under this License");
- X WX("may add an explicit geographical distribution limitation excluding");
- X WX("those countries, so that distribution is permitted only in or among");
- X WX("countries not thus excluded. In such case, this License incorporates");
- X WX("the limitation as if written in the body of this License.");
- X WX("");
- X WX(" 9. The Free Software Foundation may publish revised and/or new versions");
- X WX("of the General Public License from time to time. Such new versions will");
- X WX("be similar in spirit to the present version, but may differ in detail to");
- X WX("address new problems or concerns.");
- X WX("");
- X WX("Each version is given a distinguishing version number. If the Program");
- X WX("specifies a version number of this License which applies to it and \"any");
- X WX("later version\", you have the option of following the terms and conditions");
- X WX("either of that version or of any later version published by the Free");
- X WX("Software Foundation. If the Program does not specify a version number of");
- X WX("this License, you may choose any version ever published by the Free Software");
- X WX("Foundation.");
- X WX("");
- X WX(" 10. If you wish to incorporate parts of the Program into other free");
- X WX("programs whose distribution conditions are different, write to the author");
- X WX("to ask for permission. For software which is copyrighted by the Free");
- X WX("Software Foundation, write to the Free Software Foundation; we sometimes");
- X WX("make exceptions for this. Our decision will be guided by the two goals");
- X WX("of preserving the free status of all derivatives of our free software and");
- X WX("of promoting the sharing and reuse of software generally.");
- X WX("");
- X WX(" NO WARRANTY");
- X WX("");
- X WX(" 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY");
- X WX("FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN");
- X WX("OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES");
- X WX("PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED");
- X WX("OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF");
- X WX("MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS");
- X WX("TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE");
- X WX("PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,");
- X WX("REPAIR OR CORRECTION.");
- X WX("");
- X WX(" 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING");
- X WX("WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR");
- X WX("REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,");
- X WX("INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING");
- X WX("OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED");
- X WX("TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY");
- X WX("YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER");
- X WX("PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE");
- X WX("POSSIBILITY OF SUCH DAMAGES.");
- X WX("");
- X WX(" END OF TERMS AND CONDITIONS");
- X WX("");
- X WX(" Appendix: How to Apply These Terms to Your New Programs");
- X WX("");
- X WX(" If you develop a new program, and you want it to be of the greatest");
- X WX("possible use to the public, the best way to achieve this is to make it");
- X WX("free software which everyone can redistribute and change under these terms.");
- X WX("");
- X WX(" To do so, attach the following notices to the program. It is safest");
- X WX("to attach them to the start of each source file to most effectively");
- X WX("convey the exclusion of warranty; and each file should have at least");
- X WX("the \"copyright\" line and a pointer to where the full notice is found.");
- X WX("");
- X WX(" <one line to give the program's name and a brief idea of what it does.>");
- X WX(" Copyright (C) 19yy <name of author>");
- X WX("");
- X WX(" This program is free software; you can redistribute it and/or modify");
- X WX(" it under the terms of the GNU General Public License as published by");
- X WX(" the Free Software Foundation; either version 2 of the License, or");
- X WX(" (at your option) any later version.");
- X WX("");
- X WX(" This program is distributed in the hope that it will be useful,");
- X WX(" but WITHOUT ANY WARRANTY; without even the implied warranty of");
- X WX(" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the");
- X WX(" GNU General Public License for more details.");
- X WX("");
- X WX(" You should have received a copy of the GNU General Public License");
- X WX(" along with this program; if not, write to the Free Software");
- X WX(" Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.");
- X WX("");
- X WX("Also add information on how to contact you by electronic and paper mail.");
- X WX("");
- X WX("If the program is interactive, make it output a short notice like this");
- X WX("when it starts in an interactive mode:");
- X WX("");
- X WX(" Gnomovision version 69, Copyright (C) 19yy name of author");
- X WX(" Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.");
- X WX(" This is free software, and you are welcome to redistribute it");
- X WX(" under certain conditions; type `show c' for details.");
- X WX("");
- X WX("The hypothetical commands `show w' and `show c' should show the appropriate");
- X WX("parts of the General Public License. Of course, the commands you use may");
- X WX("be called something other than `show w' and `show c'; they could even be");
- X WX("mouse-clicks or menu items--whatever suits your program.");
- X WX("");
- X WX("You should also get your employer (if you work as a programmer) or your");
- X WX("school, if any, to sign a \"copyright disclaimer\" for the program, if");
- X WX("necessary. Here is a sample; alter the names:");
- X WX("");
- X WX(" Yoyodyne, Inc., hereby disclaims all copyright interest in the program");
- X WX(" `Gnomovision' (which makes passes at compilers) written by James Hacker.");
- X WX("");
- X WX(" <signature of Ty Coon>, 1 April 1989");
- X WX(" Ty Coon, President of Vice");
- X WX("");
- X WX("This General Public License does not permit incorporating your program into");
- X WX("proprietary programs. If your program is a subroutine library, you may");
- X WX("consider it more useful to permit linking proprietary applications with the");
- X WX("library. If this is what you want to do, use the GNU Library General");
- X WX("Public License instead of this License.");
- END_OF_FILE
- if test 20705 -ne `wc -c <'sources/help_gnu.ctx'`; then
- echo shar: \"'sources/help_gnu.ctx'\" unpacked with wrong size!
- fi
- # end of 'sources/help_gnu.ctx'
- fi
- echo shar: End of archive 11 \(of 20\).
- cp /dev/null ark11isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 20 archives.
- rm -f ark[1-9]isdone ark[1-9][0-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
-