diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /web/funnelAC/answers |
Initial commit
Diffstat (limited to 'web/funnelAC/answers')
129 files changed, 20389 insertions, 0 deletions
diff --git a/web/funnelAC/answers/0license.txt b/web/funnelAC/answers/0license.txt new file mode 100644 index 0000000000..8c2fba8bec --- /dev/null +++ b/web/funnelAC/answers/0license.txt @@ -0,0 +1,37 @@ + +FUNNNELWEB COPYRIGHT +==================== +FunnelWeb is a literate-programming macro preprocessor. + +The files in this directory are: + +Copyright (C) 1992 Ross N. Williams. + + Ross N. Williams + ross@spam.adelaide.edu.au + 16 Lerwick Avenue, Hazelwood Park 5066, Australia. + +This program is free software; you can redistribute it and/or modify +it under the terms of Version 2 of the GNU General Public License as +published by the Free Software Foundation. + +This program is distributed WITHOUT ANY WARRANTY; without even the implied +warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +See Version 2 of the GNU General Public License for more details. + +You should have received a copy of Version 2 of the GNU General Public +License along with this program. If not, you can FTP the license from +prep.ai.mit.edu/pub/gnu/COPYING-2 or write to the Free Software +Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +Section 2a of the license requires that all changes to this file be +recorded prominently in this file. Please record all changes here. + +Programmers: + RNW Ross N. Williams ross@spam.adelaide.edu.au + +Changes: + 07-May-1992 RNW Program prepared for release under GNU GPL V2. + +############################################################################### + diff --git a/web/funnelAC/answers/an01.lis b/web/funnelAC/answers/an01.lis new file mode 100644 index 0000000000..5d3cbe8792 --- /dev/null +++ b/web/funnelAC/answers/an01.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + +E: No macros defined. +E: No output files specified. + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +There were 2 Errors. diff --git a/web/funnelAC/answers/an02.lis b/web/funnelAC/answers/an02.lis new file mode 100644 index 0000000000..cb554e6d28 --- /dev/null +++ b/web/funnelAC/answers/an02.lis @@ -0,0 +1,11 @@ +FUNNELWEB LISTING FILE +====================== + +E: No output files specified. + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +There was 1 Error. diff --git a/web/funnelAC/answers/an03.lis b/web/funnelAC/answers/an03.lis new file mode 100644 index 0000000000..8cda130586 --- /dev/null +++ b/web/funnelAC/answers/an03.lis @@ -0,0 +1,86 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| AN03: Test semantics checking of macros. + 2 2| + 3 3| First define some macros to call. + 4 4| @$@<Zero@>@Z@M@{@} + 5 5| @$@<One@>@(@1@)@Z@M@{@} + 6 6| @$@<Two@>@(@2@)@Z@M@{@} + 7 7| + 8 8| 1. Test call to undefined macro. + 9 9| @$@<Sloth1@>@Z==@{@<Walrus@>@} + Error|...................^Call to undefined macro. + 10 10| + 11 11| 2. Test calls with wrong number of parameters. + 12 12| @$@<Sloth2@>@Z==@{ + 13 13| @<Zero@> + 14 14| @<Zero@>@(@) + Error|.^Call has 1 parameter, but the macro + |.^definition at line 4 specifies 0 parameters. + |.^Note: If your call looks like this: @<Macro@>@(@) then you + |.^should be aware that FunnelWeb treats this as a call with + |.^a single parameter consisting of the empty string. This + |.^is a consequence of parameter delimiters @"@" being optional. + 15 15| @<Zero@>@(@,@) + Error|.^Call has 2 parameters, but the macro + |.^definition at line 4 specifies 0 parameters. + 16 16| @<One@> + Error|.^Call has 0 parameters, but the macro + |.^definition at line 5 specifies 1 parameter. + 17 17| @<One@>@(@) + 18 18| @<One@>@(Walrus@,@) + Error|.^Call has 2 parameters, but the macro + |.^definition at line 5 specifies 1 parameter. + 19 19| @<Two@>@(Sloth@) + Error|.^Call has 1 parameter, but the macro + |.^definition at line 6 specifies 2 parameters. + 20 20| @} + 21 21| + 22 22| 3. Test call to file macro. + 23 23| @O@<deleteme.txt@>@{@} + |.^This file macro is called one or more times. + |.^Each call has been flagged with an error message. + 24 24| @$@<Teapot@>@Z@{@<deleteme.txt@>@} + Error|.................^Calls to file macros are not allowed. + |.................^Reason: It should be possible to comment out a + |.................^file macro without a big fuss. Calling a file macro + |.................^just tangles it up in the macro structure, + |.................^making it more difficult to comment out later. + 25 25| + 26 26| 4. Test macro never used and has <special>Z. + 27 27| @$@<Elephant@>@Z@{@} + 28 28| + 29 29| 5. Test macro often used and has <special>M. + 30 30| @$@<Giraffe@>@M@{@} + 31 31| @$@<Use Giraffe@>@Z@{@<Giraffe@>@<Giraffe@>@} + 32 32| + 33 33| 6. Test macro never used and no <special>Z + 34 34| @$@<Zebra@>@{@} + Error|.^This macro is never used (and has no @Z). + 35 35| + 36 36| 7. Test multiply used and no <special>M. + 37 37| @$@<Monkey@>@{@} + Error|.^This macro is used more than once (and has no @M). + 38 38| @$@<Use Monkey@>@Z@{@<Monkey@>@<Monkey@>@} + 39 39| + 40 40| 8. Test directly recursive macro. + 41 41| @$@<Who do ya call?@>@{@<Who do ya call?@>@} + Error|.^This macro has an infinite expansion. + 42 42| + 43 43| 9. Test indirectly recursive macro. + 44 44| @$@<X@>@M@{@<Y@>@} + Error|.^This macro has an infinite expansion. + 45 45| @$@<Y@>@{@<X@>@} + Error|.^This macro has an infinite expansion. + 46 46| + 47 47| 10. Test callers of recursive macros. + 48 48| @$@<Z@>@Z@{@<X@>@} + Error|.^This macro has an infinite expansion. + | <End-Of-File> +------------+------------------------------------------------------------------- + +There were 13 Errors. diff --git a/web/funnelAC/answers/an04.lis b/web/funnelAC/answers/an04.lis new file mode 100644 index 0000000000..46c3409a8e --- /dev/null +++ b/web/funnelAC/answers/an04.lis @@ -0,0 +1,28 @@ +FUNNELWEB LISTING FILE +====================== + +E: No output files specified. + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| AN04: Test document list checks. + 2 2| + 3 3| 1. Test for sections with no names. + 4 4| + 5 5| @A@<This section has both a name and a macro@> + 6 6| @$@<Sloth@>@Z@{@} + 7 7| + 8 8| @A@<This section has an explicit name but no macro@> + 9 9| + 10 10| @A + 11 11| @$@<This section has no explicit name but does have a macro@>@Z@{@} + 12 12| + 13 13| @A This section has no name and no macro to inherit one from. + Error|.^This section has no name. + |.^You can give it one explicitly (As in @A@<Sloth@>) or implicitly by + |.^defining a macro (whose name will be inherited) within the section. + 14 14| + | <End-Of-File> +------------+------------------------------------------------------------------- + +There were 2 Errors. diff --git a/web/funnelAC/answers/ex01.lis b/web/funnelAC/answers/ex01.lis new file mode 100644 index 0000000000..9cb0a6b7c9 --- /dev/null +++ b/web/funnelAC/answers/ex01.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Tangle: Completed ex01.out. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/ex01.out b/web/funnelAC/answers/ex01.out new file mode 100644 index 0000000000..557db03de9 --- /dev/null +++ b/web/funnelAC/answers/ex01.out @@ -0,0 +1 @@ +Hello World diff --git a/web/funnelAC/answers/ex02.lis b/web/funnelAC/answers/ex02.lis new file mode 100644 index 0000000000..1f31a5ff30 --- /dev/null +++ b/web/funnelAC/answers/ex02.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Tangle: Completed ex02.out. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/ex02.out b/web/funnelAC/answers/ex02.out new file mode 100644 index 0000000000..557db03de9 --- /dev/null +++ b/web/funnelAC/answers/ex02.out @@ -0,0 +1 @@ +Hello World diff --git a/web/funnelAC/answers/ex03.lis b/web/funnelAC/answers/ex03.lis new file mode 100644 index 0000000000..beb06214aa --- /dev/null +++ b/web/funnelAC/answers/ex03.lis @@ -0,0 +1,50 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| EX03: An example containing errors to do with the number of times + 2 2| that macros are called. + 3 3| + 4 4| @O@<ex03.out@>==@{@- + 5 5| @<Include Files@> + 6 6| @<Include Files@> + 7 7| @<Main Program@> + 8 8| @} + 9 9| + 10 10| @$@<Main Program@>==@{@- + 11 11| main() + 12 12| { + 13 13| doit(); + 14 14| } + 15 15| @} + 16 16| + 17 17| @$@<Subroutine@>==@{@- + Error|.^This macro is never used (and has no @Z). + 18 18| void doit() + 19 19| { + 20 20| int i; + 21 21| for (i=0;i<10;i++) + 22 22| { + 23 23| @<Print@> + 24 24| @<Print@> + 25 25| } + 26 26| }@} + 27 27| + 28 28| @$@<Print@>==@{@- + Error|.^This macro is used more than once (and has no @M). + 29 29| printf("Hello World!"); + 30 30| printf("\n");@} + 31 31| + 32 32| @$@<Scan@>==@{scanf@} + Error|.^This macro is never used (and has no @Z). + 33 33| + 34 34| @$@<Include Files@>==@{@- + Error|.^This macro is used more than once (and has no @M). + 35 35| #include <stdio.h> + 36 36| #include <stdlib.h>@} + | <End-Of-File> +------------+------------------------------------------------------------------- + +There were 4 Errors. diff --git a/web/funnelAC/answers/ex04.lis b/web/funnelAC/answers/ex04.lis new file mode 100644 index 0000000000..780c9c7f77 --- /dev/null +++ b/web/funnelAC/answers/ex04.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Tangle: Completed ex04.out. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/ex04.out b/web/funnelAC/answers/ex04.out new file mode 100644 index 0000000000..939a0cdf82 --- /dev/null +++ b/web/funnelAC/answers/ex04.out @@ -0,0 +1,18 @@ +#include <stdio.h> +#include <stdlib.h> +void doit() +{ + int i; + for (i=0;i<10;i++) + { + printf("Hello World!"); + printf("\n"); + printf("Hello World!"); + printf("\n"); + } +} +main() +{ + doit(); +} + diff --git a/web/funnelAC/answers/ex05.lis b/web/funnelAC/answers/ex05.lis new file mode 100644 index 0000000000..a7e84fcdaa --- /dev/null +++ b/web/funnelAC/answers/ex05.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Tangle: Completed ex05.out. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/ex05.out b/web/funnelAC/answers/ex05.out new file mode 100644 index 0000000000..4a12476ca9 --- /dev/null +++ b/web/funnelAC/answers/ex05.out @@ -0,0 +1,18 @@ +program adt(input,output); +type buffer_type = + record + length : integer; + buf : array[1..100] of char; + end; +type complex_type = record r,i : real; end; + +bigbuf : buffer_type; + +procedure buf_init (var b : buffer_type ) {Body of buf_init} +procedure buf_add (var b : buffer_type; ch : char) {Body of buf_add} +procedure buf_get (var b : buffer_type; var ch : char) {Body of buf_get} +procedure cm_set (var c: complex_type; a,b: real) {Body of cm_set} +procedure cm_add (a,b: complex_type; var c: complex_type) {Body of cm_add} +{Other procedures and functions} + +begin startproc; end. diff --git a/web/funnelAC/answers/ex06.lis b/web/funnelAC/answers/ex06.lis new file mode 100644 index 0000000000..5a2782517d --- /dev/null +++ b/web/funnelAC/answers/ex06.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Tangle: Completed ex06.out. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/ex06.out b/web/funnelAC/answers/ex06.out new file mode 100644 index 0000000000..03ac7feb13 --- /dev/null +++ b/web/funnelAC/answers/ex06.out @@ -0,0 +1,22 @@ +program adt(input,output); +type buffer_type = record + length : integer; + buf : array[1..100] of char; + end; + +type complex_type = record r,i : real; end; + + +bigbuf : buffer_type; + + +procedure buf_init(var b : buffer_type) {Body of buf_init} +procedure buf_add(var b : buffer_type; ch : char) {Body of buf_add} +procedure buf_get(var b : buffer_type; var ch : char) {Body of buf_get} + +procedure cm_set(var c: complex_type; a,b : real) {Body of cm_set} +procedure cm_add(a,b : complex_type; var c: complex_type) {Body of cm_add} +{Other procedures and functions} + + +begin startproc; end. diff --git a/web/funnelAC/answers/ex07.lis b/web/funnelAC/answers/ex07.lis new file mode 100644 index 0000000000..b354e7c18e --- /dev/null +++ b/web/funnelAC/answers/ex07.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Tangle: Completed ex07.out. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/ex07.out b/web/funnelAC/answers/ex07.out new file mode 100644 index 0000000000..b6e41eea63 --- /dev/null +++ b/web/funnelAC/answers/ex07.out @@ -0,0 +1,24 @@ + + +x=1; +while (x<=10) + { + printf("X=%u\n",x); + } + + +x:=1; +while (x<=10) + { + printf("X=%u\n",x); + } + + +x=1; +while (x<=10) + { + printf("X=%u\n",x); + } + + + diff --git a/web/funnelAC/answers/ex08.lis b/web/funnelAC/answers/ex08.lis new file mode 100644 index 0000000000..17d93d8838 --- /dev/null +++ b/web/funnelAC/answers/ex08.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Tangle: Completed ex08.out. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/ex08.out b/web/funnelAC/answers/ex08.out new file mode 100644 index 0000000000..5820d58ba2 --- /dev/null +++ b/web/funnelAC/answers/ex08.out @@ -0,0 +1,107 @@ +The Twelve Bugs of Christmas +---------------------------- +For the first bug of Christmas, my manager said to me + See if they can do it again. + +For the second bug of Christmas, my manager said to me + Ask them how they did it and + See if they can do it again. + +For the third bug of Christmas, my manager said to me + Try to reproduce it + Ask them how they did it and + See if they can do it again. + +For the fourth bug of Christmas, my manager said to me + Run with the debugger + Try to reproduce it + Ask them how they did it and + See if they can do it again. + +For the fifth bug of Christmas, my manager said to me + Ask for a dump + Run with the debugger + Try to reproduce it + Ask them how they did it and + See if they can do it again. + +For the sixth bug of Christmas, my manager said to me + Reinstall the software + Ask for a dump + Run with the debugger + Try to reproduce it + Ask them how they did it and + See if they can do it again. + +For the seventh bug of Christmas, my manager said to me + Say they need an upgrade + Reinstall the software + Ask for a dump + Run with the debugger + Try to reproduce it + Ask them how they did it and + See if they can do it again. + +For the eighth bug of Christmas, my manager said to me + Find a way around it + Say they need an upgrade + Reinstall the software + Ask for a dump + Run with the debugger + Try to reproduce it + Ask them how they did it and + See if they can do it again. + +For the ninth bug of Christmas, my manager said to me + Blame it on the hardware + Find a way around it + Say they need an upgrade + Reinstall the software + Ask for a dump + Run with the debugger + Try to reproduce it + Ask them how they did it and + See if they can do it again. + +For the tenth bug of Christmas, my manager said to me + Change the documentation + Blame it on the hardware + Find a way around it + Say they need an upgrade + Reinstall the software + Ask for a dump + Run with the debugger + Try to reproduce it + Ask them how they did it and + See if they can do it again. + +For the eleventh bug of Christmas, my manager said to me + Say it's not supported + Change the documentation + Blame it on the hardware + Find a way around it + Say they need an upgrade + Reinstall the software + Ask for a dump + Run with the debugger + Try to reproduce it + Ask them how they did it and + See if they can do it again. + +For the twelfth bug of Christmas, my manager said to me + Tell them it's a feature + Say it's not supported + Change the documentation + Blame it on the hardware + Find a way around it + Say they need an upgrade + Reinstall the software + Ask for a dump + Run with the debugger + Try to reproduce it + Ask them how they did it and + See if they can do it again. + + +This song appeared in the internet newsgroup rec.humor.funny on 24-Dec-1991. +It was contributed by Pat Scannell (scannell@darkstar.ma30.bull.com). diff --git a/web/funnelAC/answers/ex09.lis b/web/funnelAC/answers/ex09.lis new file mode 100644 index 0000000000..1fdc31299c --- /dev/null +++ b/web/funnelAC/answers/ex09.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Tangle: Completed ex09.out. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/ex09.out b/web/funnelAC/answers/ex09.out new file mode 100644 index 0000000000..80fbfc9f1f --- /dev/null +++ b/web/funnelAC/answers/ex09.out @@ -0,0 +1,6 @@ + +I like to go shooting, it's a whole lot of fun, +'Cos I shoot with a camera instead of a gun. +The animals flock to be petted and fed, +Cos they know my camera isn't loaded with lead. +- RNW, 04-Jan-1991. diff --git a/web/funnelAC/answers/ex10.lis b/web/funnelAC/answers/ex10.lis new file mode 100644 index 0000000000..613224af3d --- /dev/null +++ b/web/funnelAC/answers/ex10.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Tangle: Completed ex10.out. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/ex10.out b/web/funnelAC/answers/ex10.out new file mode 100644 index 0000000000..9672b09b88 --- /dev/null +++ b/web/funnelAC/answers/ex10.out @@ -0,0 +1,2 @@ +This is the text of the sloth macro. + diff --git a/web/funnelAC/answers/ex11.lis b/web/funnelAC/answers/ex11.lis new file mode 100644 index 0000000000..342bdb414d --- /dev/null +++ b/web/funnelAC/answers/ex11.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Weave: Completed <<Suppressed>>. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/ex11.tex b/web/funnelAC/answers/ex11.tex new file mode 100644 index 0000000000..b5e6714dd2 --- /dev/null +++ b/web/funnelAC/answers/ex11.tex @@ -0,0 +1,384 @@ + +%******************************************************************************* +%* START OF AUTOMATICALLY GENERATED TEX FILE * +%******************************************************************************* +%* * +%* This TeX file was automatically generated by the FunnelWeb preprocessor. * +%* You can typeset this file to produce printed documentation by running it * +%* through the TeX typesetter using a command such as: * +%* tex thisfilename * +%* The resultant file thisfilename.dvi can be printed using a command such as: * +%* lpr -Pcslw -d thisfilename.dvi * +%* * +%* FunnelWeb is a preprocessor that allows programmers to weave programs and * +%* their documentation together in a single document. The FunnelWeb program * +%* analyses such documents producing both program files and typeset * +%* documentation such as this TeX file. * +%* FunnelWeb was created by Ross Williams. * +%* * +%* For more information on FunnelWeb look in the following FTP archive: * +%* Machine : sirius.itd.adelaide.edu.au [IP=129.127.40.3]. * +%* Directory: ~pub/funnelweb/ * +%* (or some other appropriately named directory). * +%* or email Ross Williams at ross@spam.adelaide.edu.au * +%* * +%******************************************************************************* + + +%===================== Start of FunnelWeb TeX Definitions ====================== + + +% Version +% ------- +% This is FunnelWeb TeX Macro Library Version 1.0. + + +% Copyright +% --------- +% This set of FunnelWeb TeX definitions was written by Ross Williams and was +% originally Copyright (C) 1992 Ross N. Williams. However, I, Ross Williams, +% hereby forego any claim to Copyright in this set of FunnelWeb TeX definitions +% and hereby authorize that the set of TeX definitions pass into the public +% domain. -- Ross N. Williams, 3:41pm 07-May-1992, Adelaide, Australia. + + +% Modification +% ------------ +% Please record all modifications to these TeX definitions here. Unless +% otherwise specified, all modified definitions fall in the public domain too. +% +% Programmers: +% RNW Ross N. Williams ross@spam.adelaide.edu.au +% +% Changes: +% 07-May-1992 RNW Prepared this work for public domain release. +% + + +% General Comments +% ---------------- +% This set of TeX definitions exists for two reasons: +% +% 1. To shorten and neaten the FunnelWeb TeX output. +% 2. To allow users to fiddle with the output format in their input files +% (by inserting redefining "\def"s) without having to resort to +% modifying the FunnelWeb code. +% +% The user is warned that these definitions may be changed from time to time +% (but probably not much). The user should not be too sneaky. In particular, +% users wishing to redefine some of these macros should do so in an explicitly +% defined section at the top of their input file. This will mean that in the +% event of problems, that section can simply be deleted or commented out to +% allow the document to at least be typeset in the default format. Users should +% limit themselves to redefining these macros in such a section and should +% refrain from using the macros throughout their documents. + + +% Environment Parameters +% ---------------------- +% \tolerance tells TeX how tolerant it should be about making bad line and +% page breaks. Here we set it to it's maximum, as +% 1) Computer programs are likely to cause lots of bad breaks. +% 2) In most cases the user would probably rather get the TeX file through +% TeX without any errors than fiddle with spacings for perfection. +\tolerance=10000 + +% I don't like indentation as it makes the page look more busy. Instead, +% paragraphs are separated by a little space (see next). +\parindent=0pt + +% In many cases, users will produce documents with long runs of paragraphs. +% In order to space out these paragraphs, it is convenient to maintain a +% prevailing non-zero \parskip (end-of-paragaph skip). The only trouble is +% that the skip becomes a problem in macro definitions which require no skip +% and so we have to turn the skip on and off. The following two macros +% simplify this process. +\def\fwparskipon{\parskip=\medskipamount} +\def\fwparskipoff{\parskip=0pt} +\fwparskipon + +% Setting raggedbottom allows TeX to leave a bit of space at the bottom of the +% page in order to better vertically align the rest of the page (e.g. skips +% won't stretch as much). It also means that headings are less likely to be +% isolated at the bottom of the page without any following text. +\raggedbottom + + +% Fonts +% ----- +% Most of the typeset output is set in 10pt roman and 10pt tt font. +% The major extra font needs spring from titles and headings. +% For portability's sake we use only the following fonts: +% cmr10 +% cmbx10 +% cmtt10 +% and some enlargements of them. These fonts are all "standard" fonts +% in Plain TeX. See The TeXbook p.350. +\font\fwfontnote=cmr7 + +\font\fwfontnorm=cmr10 +\font\fwfontnorma=cmr10 scaled \magstep1 +\font\fwfontnormb=cmr10 scaled \magstep2 + +\font\fwfontbold=cmbx10 +\font\fwfontbolda=cmbx10 scaled \magstep1 +\font\fwfontboldb=cmbx10 scaled \magstep2 +\font\fwfontboldc=cmbx10 scaled \magstep3 +\font\fwfontboldd=cmbx10 scaled \magstep4 + + +% Macros for Stylistic Details +% ---------------------------- +% This section contains all the fiddly little macros for setting the details +% of each macro definition. + +% Macro definitions are sandwiched by calls to these macros which can be used +% to sort out the spacing before and after the macro definition. +\def\fwbeginmacro{\fwparskipoff\bigskip} +\def\fwendmacro{\fwparskipon\par} + +% These macros deal with the macro name and definition line. +\def\fwmacroname#1#2{{\sl #1\/}$\lbrack$#2$\rbrack$} +\def\fwfilename#1#2{{\bf #1}$\lbrack$#2$\rbrack$} +\def\fwzero#1{{\bf Z}} +\def\fwmany#1{{\bf M}} +\def\fwequals{ $\equiv$} +\def\fwplusequals{ $+\equiv$} + +% Now for the actual body of the definition. It looks nice to have the tt +% code indented a little. Again, we use macros instead of writing direct TeX, +% so as to allow the user to fiddle this stuff to taste without having to +% modify the FunnelWeb C code. +\def\fwodef{\parindent=15pt\vskip0pt$\lbrace$\parindent=20pt} +\def\fwcdef{$\rbrace$\vskip0pt\parindent=0pt} +\def\fwoquote{`} +\def\fwcquote{'} +\def\fwoparen{$($} +\def\fwcomma{$,$} +\def\fwcparen{$)$} +\def\fwparam#1{$\diamond #1$} +\def\fwparams#1{$(\diamond #1)$} + +% These macros deal with the notes that are appended at the end of each +% macro definition. Note that even though \fwisafile,\fwusedin, and \fwseealso +% have the same definition, they are given different names so as to allow the +% user to redefine these macros to typeset each kind of information differently +% if desired. +\def\fwbeginmacronotes{\begingroup\baselineskip=9pt\smallskip} +\def\fwnote#1{{\fwfontnote #1}\par} +\def\fwisafile#1{\fwnote{#1}} +\def\fwusedin#1{\fwnote{#1}} +\def\fwseealso#1{\fwnote{#1}} +\def\fwendmacronotes{\endgroup} + + +% Macros to Typeset Program Code Verbatim +% --------------------------------------- +% This is by far the hairiest and most difficult part of the typesetting task +% because we have to turn off most of TeX's natural instincts in order to +% typeset the program text exactly as it appears in the input file. +% Two macros are defined to pull this off: \fwbtx and \fwverbatimgobble. +% Their code was inspired by the following sections of "The TeXbook": +% Appendix D: Dirty Tricks, 3.Verbatim listing, p.380-382. +% Appendix E: Example Formats, p.421. +% The \fwbtx[ (for "FunnelWeb Begin TeXt") macro does most of the hard work. +% The liberal use of "%" is because I don't understand TeX well enough to +% understand when an end of line will cause trouble, and I am playing it safe. + +% Before defining the main \fwbtx macro, we have to stash away some definitions +% in the hidden part of TeX's environment. Let's hope that these "hidden" +% definitions don't affect anything except what is desired to be affected. + +% The tt font in which we wish to set the text has two Latin lurking ligatures! +% These are ?` and !`. To disable them, we define the left quote when ACTIVE +% to be defined in such a way as to prevent ligatures. The main TeX text will +% normally not be exposed to this definition because normally the leftquote +% character is not active. The \fwbtx macro temporarily makes the left quote +% character active thus activating the deactivation of left quote ligatures. +% See The TeXbook p.381. +{\catcode`\`=\active \gdef`{\relax\lq}} + +% TeX is fairly carefree about spaces and so we have to make it more serious. +% To do so we pull the same trick as above, setting up a definition for active +% space, but only making space active during the span of the verbatim text. +% In Plain TeX the active space is defined to be simply a space, but here we +% define it to be a control space. This ensures that the space cannot +% be gobbled up by one of TeX's mysterious mechanisms when activated. +% See The TeXbook, p.381 and p.352. +{\obeyspaces\global\let =\ } + +% Here is the main \fwbtx verbatim text macro. +% Note: The order in which all these pieces of business have to be done is +% still a partial mystery to me. Don't fiddle with this stuff unless you +% think you know what you are doing. +\def\fwbtx[{% +% +% The funnies involved in getting verbatim output are safely housed inside +% this \begingroup, and the \endgroup in \fwverbatimgobble. Groups are used +% instead of curly braces because we have to be able to signal the end of +% this macro with a curly brace. +\begingroup% +% +% \pars at the end of empty lines in the verbatim text won't come out normally +% because TeX is in vertical mode and they get gobbled up. To prevent this, +% we force \par to exit vertical mode first. See The TeXbook p.381. +\def\par{\leavevmode\endgraf}% +% +% Activate the leftquote character so as to avoid ligatures (see above). +\catcode`\`=\active% +% +% The \obeylines macro simply defines end of line (^M) to be \par. This ensures +% that TeX will treat each verbatim line as a new paragraph. +\obeylines% +% +% To get verbatim output, we have to desex all the special characters. This +% is explained in detail in The TeXbook p.380. +\def\do##1{\catcode`##1=12 }\dospecials% +% +% Activate the space character so as to make TeX treat blanks seriously. +% This activation invokes an eralier definition (see above). +\obeyspaces +% +% Interparagraph skips do not help the cause. +% Note: We have to preserve the indentation though, as the code is actually +% indented in the final output. See \fwodef in an earlier section. +\parskip=0pt% +% +% We typeset the verbatim text in tt font (courier on the Macintosh) for a +% number of reasons: +% - tt font has the same horizontal spacing for each character. +% - tt font covers the ASCII character set. +% - tt font doesn't have many surprises (e.g. ligatures). +% - tt font looks much what you might see on a computer terminal screen. +\tt% +% +% Having set up an environment for verbatim, we are ready to use it. +% By invoking \fwverbatimgobble, this \fwbtx macro gobbles up text verbatim (as +% part of the parameter of \fwverbatimgobble) until it sees the termination +% string "]fwetx=" (the "=" was thrown in to add obscurity as this sequence +% must never occur in the verbatim text). +\fwverbatimgobble} + +% The \fwverbatimgobble macro exists to allow \fwbtx to bracket verbatim text. +\def\fwverbatimgobble#1]fwetx={#1\endgroup} + + +% Table of Contents +% ----------------- +% The five levels of table of contents that FunnelWeb supports are identified +% by the five letters [A..E]. These are used throughout the following macros. + +% The following macros are utilities to the TOC macros to follow. +\def\fwrule{\medskip\hrule\medskip} +\def\fwqh{\hskip1.5em\relax} +\def\fwbeforesec{\penalty-200\bigskip\medskip\par} + +% The following macros are used to typeset the table of contents. +\def\fwtocstart#1{\fwrule\leftline{\fwfontbolda Table of Contents}\fwrule} +\def\fwtoca#1#2{\leftline{{\bf #1 #2}}} +\def\fwtocb#1#2{\leftline{\fwqh #1 #2}} +\def\fwtocc#1#2{\leftline{\fwqh\fwqh #1 #2}} +\def\fwtocd#1#2{\leftline{\fwqh\fwqh\fwqh #1 #2}} +\def\fwtoce#1#2{\leftline{\fwqh\fwqh\fwqh\fwqh #1 #2}} +\def\fwtocfinish#1{\fwrule} + +% The following "library" macros define five different strengths of headings +% which can be used later in the section macros. +\def\fwliba#1#2{\vfill\eject{\fwfontboldc #1 #2}\penalty200\smallskip} +\def\fwlibb#1#2{\fwbeforesec{\fwfontboldb #1 #2}\penalty200\smallskip} +\def\fwlibc#1#2{\fwbeforesec{\fwfontnormb #1 #2}\penalty200\smallskip} +\def\fwlibd#1#2{\fwbeforesec{\bf #1 #2}\penalty200} +\def\fwlibe#1#2{\fwbeforesec{\bf #1 #2}} + +% Here are the macros that actually typeset the section headings throughout +% the document. The fwlib system has been employed so as to easily allow the +% user to redefine the strengths of headings to taste. For example, the +% user could insert in the input document a similar set of definitions to these +% but with the b..e headings set to \fwlibc. This would tone down the output. +\def\fwseca#1#2{\fwliba{#1}{#2}} +\def\fwsecb#1#2{\fwlibb{#1}{#2}} +\def\fwsecc#1#2{\fwlibc{#1}{#2}} +\def\fwsecd#1#2{\fwlibd{#1}{#2}} +\def\fwsece#1#2{\fwlibe{#1}{#2}} + + +% Support for Explicit Typesetting +% -------------------------------- +% FunnelWeb supports pragmas and other constructs that allow +% typesetter-independent typesetting commands to be given. The +% following macros support these features. + +% The in-text literal @{sloth@} and emphasise @[walrus@] features. +\def\fwlit#1{{\tt #1}} +\def\fwemp#1{{\it #1}} + +% The "@p new_page" pragma. +\def\fwnewpage{\vfill\eject} + +% The "@p vskip Nmm" pragma. +\def\fwvskip#1{\null\vskip #1mm} + +% The "@p title <font> <align> <text>" pragma. +\def\fwfontnormal#1{{\fwfontnorm {#1}}} +\def\fwfonttitle#1{{\fwfontboldd {#1}}} +\def\fwfontsmalltitle#1{{\fwfontboldb {#1}}} +\def\fwleftline#1{\leftline{#1}} +\def\fwcenterline#1{\centerline{#1}} +\def\fwrightline#1{\rightline{#1}} + + +% Support for Old FunnelWeb +% ------------------------- +% The following macros were used extensively in the first version of +% FunnelWeb and are retained so that these older input files will still +% typeset cleanly. +\def\p#1{{\tt #1}} % P for Program text. +\def\flagpage#1#2{ + \null + \vfill + \centerline{\fwfontboldd #1} + \vskip 1cm + \centerline{\fwfontboldd #2} + \vfill + \null + \vfill +} + +%====================== End of FunnelWeb TeX Definitions ======================= +EX11: This example shows how FunnelWeb typesets macros, typesetter commands + and free text. + +You are reading some free text before the macro. Free text can consist +of any text (not containing the FunnelWeb special character) including +typesetter commands +such as \$, \%, \#, and $\backslash$TeX$\{$$\}$ which +will be typeset to appear exactly as they do in the input file! +Look out! Here comes a macro! + +\fwbeginmacro +\fwfilename{ex11.out}{1}\fwequals \fwodef \fwbtx[This text is part of +a macro definition. +]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwisafile{This macro is attached to an output file.} +\fwendmacronotes +\fwendmacro + + +This is free text following the macro. This sentence contains +two \fwlit{inline} typesetter \fwemp{directives}. +Now here is a non-inline typesetting directive. + + +\fwnewpage + + +This sentence will appear on the next page. +\bye + + +%******************************************************************************* +%* END OF AUTOMATICALLY GENERATED TEX FILE * +%******************************************************************************* + diff --git a/web/funnelAC/answers/ex12.lis b/web/funnelAC/answers/ex12.lis new file mode 100644 index 0000000000..342bdb414d --- /dev/null +++ b/web/funnelAC/answers/ex12.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Weave: Completed <<Suppressed>>. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/ex12.tex b/web/funnelAC/answers/ex12.tex new file mode 100644 index 0000000000..145d1d111f --- /dev/null +++ b/web/funnelAC/answers/ex12.tex @@ -0,0 +1,385 @@ + +%******************************************************************************* +%* START OF AUTOMATICALLY GENERATED TEX FILE * +%******************************************************************************* +%* * +%* This TeX file was automatically generated by the FunnelWeb preprocessor. * +%* You can typeset this file to produce printed documentation by running it * +%* through the TeX typesetter using a command such as: * +%* tex thisfilename * +%* The resultant file thisfilename.dvi can be printed using a command such as: * +%* lpr -Pcslw -d thisfilename.dvi * +%* * +%* FunnelWeb is a preprocessor that allows programmers to weave programs and * +%* their documentation together in a single document. The FunnelWeb program * +%* analyses such documents producing both program files and typeset * +%* documentation such as this TeX file. * +%* FunnelWeb was created by Ross Williams. * +%* * +%* For more information on FunnelWeb look in the following FTP archive: * +%* Machine : sirius.itd.adelaide.edu.au [IP=129.127.40.3]. * +%* Directory: ~pub/funnelweb/ * +%* (or some other appropriately named directory). * +%* or email Ross Williams at ross@spam.adelaide.edu.au * +%* * +%******************************************************************************* + + +%===================== Start of FunnelWeb TeX Definitions ====================== + + +% Version +% ------- +% This is FunnelWeb TeX Macro Library Version 1.0. + + +% Copyright +% --------- +% This set of FunnelWeb TeX definitions was written by Ross Williams and was +% originally Copyright (C) 1992 Ross N. Williams. However, I, Ross Williams, +% hereby forego any claim to Copyright in this set of FunnelWeb TeX definitions +% and hereby authorize that the set of TeX definitions pass into the public +% domain. -- Ross N. Williams, 3:41pm 07-May-1992, Adelaide, Australia. + + +% Modification +% ------------ +% Please record all modifications to these TeX definitions here. Unless +% otherwise specified, all modified definitions fall in the public domain too. +% +% Programmers: +% RNW Ross N. Williams ross@spam.adelaide.edu.au +% +% Changes: +% 07-May-1992 RNW Prepared this work for public domain release. +% + + +% General Comments +% ---------------- +% This set of TeX definitions exists for two reasons: +% +% 1. To shorten and neaten the FunnelWeb TeX output. +% 2. To allow users to fiddle with the output format in their input files +% (by inserting redefining "\def"s) without having to resort to +% modifying the FunnelWeb code. +% +% The user is warned that these definitions may be changed from time to time +% (but probably not much). The user should not be too sneaky. In particular, +% users wishing to redefine some of these macros should do so in an explicitly +% defined section at the top of their input file. This will mean that in the +% event of problems, that section can simply be deleted or commented out to +% allow the document to at least be typeset in the default format. Users should +% limit themselves to redefining these macros in such a section and should +% refrain from using the macros throughout their documents. + + +% Environment Parameters +% ---------------------- +% \tolerance tells TeX how tolerant it should be about making bad line and +% page breaks. Here we set it to it's maximum, as +% 1) Computer programs are likely to cause lots of bad breaks. +% 2) In most cases the user would probably rather get the TeX file through +% TeX without any errors than fiddle with spacings for perfection. +\tolerance=10000 + +% I don't like indentation as it makes the page look more busy. Instead, +% paragraphs are separated by a little space (see next). +\parindent=0pt + +% In many cases, users will produce documents with long runs of paragraphs. +% In order to space out these paragraphs, it is convenient to maintain a +% prevailing non-zero \parskip (end-of-paragaph skip). The only trouble is +% that the skip becomes a problem in macro definitions which require no skip +% and so we have to turn the skip on and off. The following two macros +% simplify this process. +\def\fwparskipon{\parskip=\medskipamount} +\def\fwparskipoff{\parskip=0pt} +\fwparskipon + +% Setting raggedbottom allows TeX to leave a bit of space at the bottom of the +% page in order to better vertically align the rest of the page (e.g. skips +% won't stretch as much). It also means that headings are less likely to be +% isolated at the bottom of the page without any following text. +\raggedbottom + + +% Fonts +% ----- +% Most of the typeset output is set in 10pt roman and 10pt tt font. +% The major extra font needs spring from titles and headings. +% For portability's sake we use only the following fonts: +% cmr10 +% cmbx10 +% cmtt10 +% and some enlargements of them. These fonts are all "standard" fonts +% in Plain TeX. See The TeXbook p.350. +\font\fwfontnote=cmr7 + +\font\fwfontnorm=cmr10 +\font\fwfontnorma=cmr10 scaled \magstep1 +\font\fwfontnormb=cmr10 scaled \magstep2 + +\font\fwfontbold=cmbx10 +\font\fwfontbolda=cmbx10 scaled \magstep1 +\font\fwfontboldb=cmbx10 scaled \magstep2 +\font\fwfontboldc=cmbx10 scaled \magstep3 +\font\fwfontboldd=cmbx10 scaled \magstep4 + + +% Macros for Stylistic Details +% ---------------------------- +% This section contains all the fiddly little macros for setting the details +% of each macro definition. + +% Macro definitions are sandwiched by calls to these macros which can be used +% to sort out the spacing before and after the macro definition. +\def\fwbeginmacro{\fwparskipoff\bigskip} +\def\fwendmacro{\fwparskipon\par} + +% These macros deal with the macro name and definition line. +\def\fwmacroname#1#2{{\sl #1\/}$\lbrack$#2$\rbrack$} +\def\fwfilename#1#2{{\bf #1}$\lbrack$#2$\rbrack$} +\def\fwzero#1{{\bf Z}} +\def\fwmany#1{{\bf M}} +\def\fwequals{ $\equiv$} +\def\fwplusequals{ $+\equiv$} + +% Now for the actual body of the definition. It looks nice to have the tt +% code indented a little. Again, we use macros instead of writing direct TeX, +% so as to allow the user to fiddle this stuff to taste without having to +% modify the FunnelWeb C code. +\def\fwodef{\parindent=15pt\vskip0pt$\lbrace$\parindent=20pt} +\def\fwcdef{$\rbrace$\vskip0pt\parindent=0pt} +\def\fwoquote{`} +\def\fwcquote{'} +\def\fwoparen{$($} +\def\fwcomma{$,$} +\def\fwcparen{$)$} +\def\fwparam#1{$\diamond #1$} +\def\fwparams#1{$(\diamond #1)$} + +% These macros deal with the notes that are appended at the end of each +% macro definition. Note that even though \fwisafile,\fwusedin, and \fwseealso +% have the same definition, they are given different names so as to allow the +% user to redefine these macros to typeset each kind of information differently +% if desired. +\def\fwbeginmacronotes{\begingroup\baselineskip=9pt\smallskip} +\def\fwnote#1{{\fwfontnote #1}\par} +\def\fwisafile#1{\fwnote{#1}} +\def\fwusedin#1{\fwnote{#1}} +\def\fwseealso#1{\fwnote{#1}} +\def\fwendmacronotes{\endgroup} + + +% Macros to Typeset Program Code Verbatim +% --------------------------------------- +% This is by far the hairiest and most difficult part of the typesetting task +% because we have to turn off most of TeX's natural instincts in order to +% typeset the program text exactly as it appears in the input file. +% Two macros are defined to pull this off: \fwbtx and \fwverbatimgobble. +% Their code was inspired by the following sections of "The TeXbook": +% Appendix D: Dirty Tricks, 3.Verbatim listing, p.380-382. +% Appendix E: Example Formats, p.421. +% The \fwbtx[ (for "FunnelWeb Begin TeXt") macro does most of the hard work. +% The liberal use of "%" is because I don't understand TeX well enough to +% understand when an end of line will cause trouble, and I am playing it safe. + +% Before defining the main \fwbtx macro, we have to stash away some definitions +% in the hidden part of TeX's environment. Let's hope that these "hidden" +% definitions don't affect anything except what is desired to be affected. + +% The tt font in which we wish to set the text has two Latin lurking ligatures! +% These are ?` and !`. To disable them, we define the left quote when ACTIVE +% to be defined in such a way as to prevent ligatures. The main TeX text will +% normally not be exposed to this definition because normally the leftquote +% character is not active. The \fwbtx macro temporarily makes the left quote +% character active thus activating the deactivation of left quote ligatures. +% See The TeXbook p.381. +{\catcode`\`=\active \gdef`{\relax\lq}} + +% TeX is fairly carefree about spaces and so we have to make it more serious. +% To do so we pull the same trick as above, setting up a definition for active +% space, but only making space active during the span of the verbatim text. +% In Plain TeX the active space is defined to be simply a space, but here we +% define it to be a control space. This ensures that the space cannot +% be gobbled up by one of TeX's mysterious mechanisms when activated. +% See The TeXbook, p.381 and p.352. +{\obeyspaces\global\let =\ } + +% Here is the main \fwbtx verbatim text macro. +% Note: The order in which all these pieces of business have to be done is +% still a partial mystery to me. Don't fiddle with this stuff unless you +% think you know what you are doing. +\def\fwbtx[{% +% +% The funnies involved in getting verbatim output are safely housed inside +% this \begingroup, and the \endgroup in \fwverbatimgobble. Groups are used +% instead of curly braces because we have to be able to signal the end of +% this macro with a curly brace. +\begingroup% +% +% \pars at the end of empty lines in the verbatim text won't come out normally +% because TeX is in vertical mode and they get gobbled up. To prevent this, +% we force \par to exit vertical mode first. See The TeXbook p.381. +\def\par{\leavevmode\endgraf}% +% +% Activate the leftquote character so as to avoid ligatures (see above). +\catcode`\`=\active% +% +% The \obeylines macro simply defines end of line (^M) to be \par. This ensures +% that TeX will treat each verbatim line as a new paragraph. +\obeylines% +% +% To get verbatim output, we have to desex all the special characters. This +% is explained in detail in The TeXbook p.380. +\def\do##1{\catcode`##1=12 }\dospecials% +% +% Activate the space character so as to make TeX treat blanks seriously. +% This activation invokes an eralier definition (see above). +\obeyspaces +% +% Interparagraph skips do not help the cause. +% Note: We have to preserve the indentation though, as the code is actually +% indented in the final output. See \fwodef in an earlier section. +\parskip=0pt% +% +% We typeset the verbatim text in tt font (courier on the Macintosh) for a +% number of reasons: +% - tt font has the same horizontal spacing for each character. +% - tt font covers the ASCII character set. +% - tt font doesn't have many surprises (e.g. ligatures). +% - tt font looks much what you might see on a computer terminal screen. +\tt% +% +% Having set up an environment for verbatim, we are ready to use it. +% By invoking \fwverbatimgobble, this \fwbtx macro gobbles up text verbatim (as +% part of the parameter of \fwverbatimgobble) until it sees the termination +% string "]fwetx=" (the "=" was thrown in to add obscurity as this sequence +% must never occur in the verbatim text). +\fwverbatimgobble} + +% The \fwverbatimgobble macro exists to allow \fwbtx to bracket verbatim text. +\def\fwverbatimgobble#1]fwetx={#1\endgroup} + + +% Table of Contents +% ----------------- +% The five levels of table of contents that FunnelWeb supports are identified +% by the five letters [A..E]. These are used throughout the following macros. + +% The following macros are utilities to the TOC macros to follow. +\def\fwrule{\medskip\hrule\medskip} +\def\fwqh{\hskip1.5em\relax} +\def\fwbeforesec{\penalty-200\bigskip\medskip\par} + +% The following macros are used to typeset the table of contents. +\def\fwtocstart#1{\fwrule\leftline{\fwfontbolda Table of Contents}\fwrule} +\def\fwtoca#1#2{\leftline{{\bf #1 #2}}} +\def\fwtocb#1#2{\leftline{\fwqh #1 #2}} +\def\fwtocc#1#2{\leftline{\fwqh\fwqh #1 #2}} +\def\fwtocd#1#2{\leftline{\fwqh\fwqh\fwqh #1 #2}} +\def\fwtoce#1#2{\leftline{\fwqh\fwqh\fwqh\fwqh #1 #2}} +\def\fwtocfinish#1{\fwrule} + +% The following "library" macros define five different strengths of headings +% which can be used later in the section macros. +\def\fwliba#1#2{\vfill\eject{\fwfontboldc #1 #2}\penalty200\smallskip} +\def\fwlibb#1#2{\fwbeforesec{\fwfontboldb #1 #2}\penalty200\smallskip} +\def\fwlibc#1#2{\fwbeforesec{\fwfontnormb #1 #2}\penalty200\smallskip} +\def\fwlibd#1#2{\fwbeforesec{\bf #1 #2}\penalty200} +\def\fwlibe#1#2{\fwbeforesec{\bf #1 #2}} + +% Here are the macros that actually typeset the section headings throughout +% the document. The fwlib system has been employed so as to easily allow the +% user to redefine the strengths of headings to taste. For example, the +% user could insert in the input document a similar set of definitions to these +% but with the b..e headings set to \fwlibc. This would tone down the output. +\def\fwseca#1#2{\fwliba{#1}{#2}} +\def\fwsecb#1#2{\fwlibb{#1}{#2}} +\def\fwsecc#1#2{\fwlibc{#1}{#2}} +\def\fwsecd#1#2{\fwlibd{#1}{#2}} +\def\fwsece#1#2{\fwlibe{#1}{#2}} + + +% Support for Explicit Typesetting +% -------------------------------- +% FunnelWeb supports pragmas and other constructs that allow +% typesetter-independent typesetting commands to be given. The +% following macros support these features. + +% The in-text literal @{sloth@} and emphasise @[walrus@] features. +\def\fwlit#1{{\tt #1}} +\def\fwemp#1{{\it #1}} + +% The "@p new_page" pragma. +\def\fwnewpage{\vfill\eject} + +% The "@p vskip Nmm" pragma. +\def\fwvskip#1{\null\vskip #1mm} + +% The "@p title <font> <align> <text>" pragma. +\def\fwfontnormal#1{{\fwfontnorm {#1}}} +\def\fwfonttitle#1{{\fwfontboldd {#1}}} +\def\fwfontsmalltitle#1{{\fwfontboldb {#1}}} +\def\fwleftline#1{\leftline{#1}} +\def\fwcenterline#1{\centerline{#1}} +\def\fwrightline#1{\rightline{#1}} + + +% Support for Old FunnelWeb +% ------------------------- +% The following macros were used extensively in the first version of +% FunnelWeb and are retained so that these older input files will still +% typeset cleanly. +\def\p#1{{\tt #1}} % P for Program text. +\def\flagpage#1#2{ + \null + \vfill + \centerline{\fwfontboldd #1} + \vskip 1cm + \centerline{\fwfontboldd #2} + \vfill + \null + \vfill +} + +%====================== End of FunnelWeb TeX Definitions ======================= +EX12: This example gives some simple headings and demonstrates heading name + inheritance. + +\fwbeginmacro +\fwfilename{ex12.out}{1}\fwequals \fwodef \fwbtx[dummy text]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwisafile{This macro is attached to an output file.} +\fwendmacronotes +\fwendmacro + + +\fwseca{1}{Feed the Penguins and Save the World} +\fwsecb{1.1}{Feed the Penguins} +\fwsecc{1.1.1}{Feed the little penguins} +\fwsecc{1.1.2}{Feed the big penguins} +\fwsecb{1.2}{Save the World} +\fwsecc{1.2.1}{Save Europe} +\fwsecc{1.2.2}{Save Africa} + +\fwsecc{1.2.3}{Save the rest of the world} This heading hasn't been given an explicit name, but will inherit the +name $\backslash$p$\{$Save the rest of the world$\}$ from the macro definition below. + +\fwbeginmacro +\fwmacroname{Save the rest of the world}{2}\fwzero{}\fwequals \fwodef \fwbtx[...]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwusedin{This macro is NEVER invoked.} +\fwendmacronotes +\fwendmacro + +\bye + + +%******************************************************************************* +%* END OF AUTOMATICALLY GENERATED TEX FILE * +%******************************************************************************* + diff --git a/web/funnelAC/answers/ex13.lis b/web/funnelAC/answers/ex13.lis new file mode 100644 index 0000000000..342bdb414d --- /dev/null +++ b/web/funnelAC/answers/ex13.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Weave: Completed <<Suppressed>>. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/ex13.tex b/web/funnelAC/answers/ex13.tex new file mode 100644 index 0000000000..835ae999e6 --- /dev/null +++ b/web/funnelAC/answers/ex13.tex @@ -0,0 +1,499 @@ + +%******************************************************************************* +%* START OF AUTOMATICALLY GENERATED TEX FILE * +%******************************************************************************* +%* * +%* This TeX file was automatically generated by the FunnelWeb preprocessor. * +%* You can typeset this file to produce printed documentation by running it * +%* through the TeX typesetter using a command such as: * +%* tex thisfilename * +%* The resultant file thisfilename.dvi can be printed using a command such as: * +%* lpr -Pcslw -d thisfilename.dvi * +%* * +%* FunnelWeb is a preprocessor that allows programmers to weave programs and * +%* their documentation together in a single document. The FunnelWeb program * +%* analyses such documents producing both program files and typeset * +%* documentation such as this TeX file. * +%* FunnelWeb was created by Ross Williams. * +%* * +%* For more information on FunnelWeb look in the following FTP archive: * +%* Machine : sirius.itd.adelaide.edu.au [IP=129.127.40.3]. * +%* Directory: ~pub/funnelweb/ * +%* (or some other appropriately named directory). * +%* or email Ross Williams at ross@spam.adelaide.edu.au * +%* * +%******************************************************************************* + + +%===================== Start of FunnelWeb TeX Definitions ====================== + + +% Version +% ------- +% This is FunnelWeb TeX Macro Library Version 1.0. + + +% Copyright +% --------- +% This set of FunnelWeb TeX definitions was written by Ross Williams and was +% originally Copyright (C) 1992 Ross N. Williams. However, I, Ross Williams, +% hereby forego any claim to Copyright in this set of FunnelWeb TeX definitions +% and hereby authorize that the set of TeX definitions pass into the public +% domain. -- Ross N. Williams, 3:41pm 07-May-1992, Adelaide, Australia. + + +% Modification +% ------------ +% Please record all modifications to these TeX definitions here. Unless +% otherwise specified, all modified definitions fall in the public domain too. +% +% Programmers: +% RNW Ross N. Williams ross@spam.adelaide.edu.au +% +% Changes: +% 07-May-1992 RNW Prepared this work for public domain release. +% + + +% General Comments +% ---------------- +% This set of TeX definitions exists for two reasons: +% +% 1. To shorten and neaten the FunnelWeb TeX output. +% 2. To allow users to fiddle with the output format in their input files +% (by inserting redefining "\def"s) without having to resort to +% modifying the FunnelWeb code. +% +% The user is warned that these definitions may be changed from time to time +% (but probably not much). The user should not be too sneaky. In particular, +% users wishing to redefine some of these macros should do so in an explicitly +% defined section at the top of their input file. This will mean that in the +% event of problems, that section can simply be deleted or commented out to +% allow the document to at least be typeset in the default format. Users should +% limit themselves to redefining these macros in such a section and should +% refrain from using the macros throughout their documents. + + +% Environment Parameters +% ---------------------- +% \tolerance tells TeX how tolerant it should be about making bad line and +% page breaks. Here we set it to it's maximum, as +% 1) Computer programs are likely to cause lots of bad breaks. +% 2) In most cases the user would probably rather get the TeX file through +% TeX without any errors than fiddle with spacings for perfection. +\tolerance=10000 + +% I don't like indentation as it makes the page look more busy. Instead, +% paragraphs are separated by a little space (see next). +\parindent=0pt + +% In many cases, users will produce documents with long runs of paragraphs. +% In order to space out these paragraphs, it is convenient to maintain a +% prevailing non-zero \parskip (end-of-paragaph skip). The only trouble is +% that the skip becomes a problem in macro definitions which require no skip +% and so we have to turn the skip on and off. The following two macros +% simplify this process. +\def\fwparskipon{\parskip=\medskipamount} +\def\fwparskipoff{\parskip=0pt} +\fwparskipon + +% Setting raggedbottom allows TeX to leave a bit of space at the bottom of the +% page in order to better vertically align the rest of the page (e.g. skips +% won't stretch as much). It also means that headings are less likely to be +% isolated at the bottom of the page without any following text. +\raggedbottom + + +% Fonts +% ----- +% Most of the typeset output is set in 10pt roman and 10pt tt font. +% The major extra font needs spring from titles and headings. +% For portability's sake we use only the following fonts: +% cmr10 +% cmbx10 +% cmtt10 +% and some enlargements of them. These fonts are all "standard" fonts +% in Plain TeX. See The TeXbook p.350. +\font\fwfontnote=cmr7 + +\font\fwfontnorm=cmr10 +\font\fwfontnorma=cmr10 scaled \magstep1 +\font\fwfontnormb=cmr10 scaled \magstep2 + +\font\fwfontbold=cmbx10 +\font\fwfontbolda=cmbx10 scaled \magstep1 +\font\fwfontboldb=cmbx10 scaled \magstep2 +\font\fwfontboldc=cmbx10 scaled \magstep3 +\font\fwfontboldd=cmbx10 scaled \magstep4 + + +% Macros for Stylistic Details +% ---------------------------- +% This section contains all the fiddly little macros for setting the details +% of each macro definition. + +% Macro definitions are sandwiched by calls to these macros which can be used +% to sort out the spacing before and after the macro definition. +\def\fwbeginmacro{\fwparskipoff\bigskip} +\def\fwendmacro{\fwparskipon\par} + +% These macros deal with the macro name and definition line. +\def\fwmacroname#1#2{{\sl #1\/}$\lbrack$#2$\rbrack$} +\def\fwfilename#1#2{{\bf #1}$\lbrack$#2$\rbrack$} +\def\fwzero#1{{\bf Z}} +\def\fwmany#1{{\bf M}} +\def\fwequals{ $\equiv$} +\def\fwplusequals{ $+\equiv$} + +% Now for the actual body of the definition. It looks nice to have the tt +% code indented a little. Again, we use macros instead of writing direct TeX, +% so as to allow the user to fiddle this stuff to taste without having to +% modify the FunnelWeb C code. +\def\fwodef{\parindent=15pt\vskip0pt$\lbrace$\parindent=20pt} +\def\fwcdef{$\rbrace$\vskip0pt\parindent=0pt} +\def\fwoquote{`} +\def\fwcquote{'} +\def\fwoparen{$($} +\def\fwcomma{$,$} +\def\fwcparen{$)$} +\def\fwparam#1{$\diamond #1$} +\def\fwparams#1{$(\diamond #1)$} + +% These macros deal with the notes that are appended at the end of each +% macro definition. Note that even though \fwisafile,\fwusedin, and \fwseealso +% have the same definition, they are given different names so as to allow the +% user to redefine these macros to typeset each kind of information differently +% if desired. +\def\fwbeginmacronotes{\begingroup\baselineskip=9pt\smallskip} +\def\fwnote#1{{\fwfontnote #1}\par} +\def\fwisafile#1{\fwnote{#1}} +\def\fwusedin#1{\fwnote{#1}} +\def\fwseealso#1{\fwnote{#1}} +\def\fwendmacronotes{\endgroup} + + +% Macros to Typeset Program Code Verbatim +% --------------------------------------- +% This is by far the hairiest and most difficult part of the typesetting task +% because we have to turn off most of TeX's natural instincts in order to +% typeset the program text exactly as it appears in the input file. +% Two macros are defined to pull this off: \fwbtx and \fwverbatimgobble. +% Their code was inspired by the following sections of "The TeXbook": +% Appendix D: Dirty Tricks, 3.Verbatim listing, p.380-382. +% Appendix E: Example Formats, p.421. +% The \fwbtx[ (for "FunnelWeb Begin TeXt") macro does most of the hard work. +% The liberal use of "%" is because I don't understand TeX well enough to +% understand when an end of line will cause trouble, and I am playing it safe. + +% Before defining the main \fwbtx macro, we have to stash away some definitions +% in the hidden part of TeX's environment. Let's hope that these "hidden" +% definitions don't affect anything except what is desired to be affected. + +% The tt font in which we wish to set the text has two Latin lurking ligatures! +% These are ?` and !`. To disable them, we define the left quote when ACTIVE +% to be defined in such a way as to prevent ligatures. The main TeX text will +% normally not be exposed to this definition because normally the leftquote +% character is not active. The \fwbtx macro temporarily makes the left quote +% character active thus activating the deactivation of left quote ligatures. +% See The TeXbook p.381. +{\catcode`\`=\active \gdef`{\relax\lq}} + +% TeX is fairly carefree about spaces and so we have to make it more serious. +% To do so we pull the same trick as above, setting up a definition for active +% space, but only making space active during the span of the verbatim text. +% In Plain TeX the active space is defined to be simply a space, but here we +% define it to be a control space. This ensures that the space cannot +% be gobbled up by one of TeX's mysterious mechanisms when activated. +% See The TeXbook, p.381 and p.352. +{\obeyspaces\global\let =\ } + +% Here is the main \fwbtx verbatim text macro. +% Note: The order in which all these pieces of business have to be done is +% still a partial mystery to me. Don't fiddle with this stuff unless you +% think you know what you are doing. +\def\fwbtx[{% +% +% The funnies involved in getting verbatim output are safely housed inside +% this \begingroup, and the \endgroup in \fwverbatimgobble. Groups are used +% instead of curly braces because we have to be able to signal the end of +% this macro with a curly brace. +\begingroup% +% +% \pars at the end of empty lines in the verbatim text won't come out normally +% because TeX is in vertical mode and they get gobbled up. To prevent this, +% we force \par to exit vertical mode first. See The TeXbook p.381. +\def\par{\leavevmode\endgraf}% +% +% Activate the leftquote character so as to avoid ligatures (see above). +\catcode`\`=\active% +% +% The \obeylines macro simply defines end of line (^M) to be \par. This ensures +% that TeX will treat each verbatim line as a new paragraph. +\obeylines% +% +% To get verbatim output, we have to desex all the special characters. This +% is explained in detail in The TeXbook p.380. +\def\do##1{\catcode`##1=12 }\dospecials% +% +% Activate the space character so as to make TeX treat blanks seriously. +% This activation invokes an eralier definition (see above). +\obeyspaces +% +% Interparagraph skips do not help the cause. +% Note: We have to preserve the indentation though, as the code is actually +% indented in the final output. See \fwodef in an earlier section. +\parskip=0pt% +% +% We typeset the verbatim text in tt font (courier on the Macintosh) for a +% number of reasons: +% - tt font has the same horizontal spacing for each character. +% - tt font covers the ASCII character set. +% - tt font doesn't have many surprises (e.g. ligatures). +% - tt font looks much what you might see on a computer terminal screen. +\tt% +% +% Having set up an environment for verbatim, we are ready to use it. +% By invoking \fwverbatimgobble, this \fwbtx macro gobbles up text verbatim (as +% part of the parameter of \fwverbatimgobble) until it sees the termination +% string "]fwetx=" (the "=" was thrown in to add obscurity as this sequence +% must never occur in the verbatim text). +\fwverbatimgobble} + +% The \fwverbatimgobble macro exists to allow \fwbtx to bracket verbatim text. +\def\fwverbatimgobble#1]fwetx={#1\endgroup} + + +% Table of Contents +% ----------------- +% The five levels of table of contents that FunnelWeb supports are identified +% by the five letters [A..E]. These are used throughout the following macros. + +% The following macros are utilities to the TOC macros to follow. +\def\fwrule{\medskip\hrule\medskip} +\def\fwqh{\hskip1.5em\relax} +\def\fwbeforesec{\penalty-200\bigskip\medskip\par} + +% The following macros are used to typeset the table of contents. +\def\fwtocstart#1{\fwrule\leftline{\fwfontbolda Table of Contents}\fwrule} +\def\fwtoca#1#2{\leftline{{\bf #1 #2}}} +\def\fwtocb#1#2{\leftline{\fwqh #1 #2}} +\def\fwtocc#1#2{\leftline{\fwqh\fwqh #1 #2}} +\def\fwtocd#1#2{\leftline{\fwqh\fwqh\fwqh #1 #2}} +\def\fwtoce#1#2{\leftline{\fwqh\fwqh\fwqh\fwqh #1 #2}} +\def\fwtocfinish#1{\fwrule} + +% The following "library" macros define five different strengths of headings +% which can be used later in the section macros. +\def\fwliba#1#2{\vfill\eject{\fwfontboldc #1 #2}\penalty200\smallskip} +\def\fwlibb#1#2{\fwbeforesec{\fwfontboldb #1 #2}\penalty200\smallskip} +\def\fwlibc#1#2{\fwbeforesec{\fwfontnormb #1 #2}\penalty200\smallskip} +\def\fwlibd#1#2{\fwbeforesec{\bf #1 #2}\penalty200} +\def\fwlibe#1#2{\fwbeforesec{\bf #1 #2}} + +% Here are the macros that actually typeset the section headings throughout +% the document. The fwlib system has been employed so as to easily allow the +% user to redefine the strengths of headings to taste. For example, the +% user could insert in the input document a similar set of definitions to these +% but with the b..e headings set to \fwlibc. This would tone down the output. +\def\fwseca#1#2{\fwliba{#1}{#2}} +\def\fwsecb#1#2{\fwlibb{#1}{#2}} +\def\fwsecc#1#2{\fwlibc{#1}{#2}} +\def\fwsecd#1#2{\fwlibd{#1}{#2}} +\def\fwsece#1#2{\fwlibe{#1}{#2}} + + +% Support for Explicit Typesetting +% -------------------------------- +% FunnelWeb supports pragmas and other constructs that allow +% typesetter-independent typesetting commands to be given. The +% following macros support these features. + +% The in-text literal @{sloth@} and emphasise @[walrus@] features. +\def\fwlit#1{{\tt #1}} +\def\fwemp#1{{\it #1}} + +% The "@p new_page" pragma. +\def\fwnewpage{\vfill\eject} + +% The "@p vskip Nmm" pragma. +\def\fwvskip#1{\null\vskip #1mm} + +% The "@p title <font> <align> <text>" pragma. +\def\fwfontnormal#1{{\fwfontnorm {#1}}} +\def\fwfonttitle#1{{\fwfontboldd {#1}}} +\def\fwfontsmalltitle#1{{\fwfontboldb {#1}}} +\def\fwleftline#1{\leftline{#1}} +\def\fwcenterline#1{\centerline{#1}} +\def\fwrightline#1{\rightline{#1}} + + +% Support for Old FunnelWeb +% ------------------------- +% The following macros were used extensively in the first version of +% FunnelWeb and are retained so that these older input files will still +% typeset cleanly. +\def\p#1{{\tt #1}} % P for Program text. +\def\flagpage#1#2{ + \null + \vfill + \centerline{\fwfontboldd #1} + \vskip 1cm + \centerline{\fwfontboldd #2} + \vfill + \null + \vfill +} + +%====================== End of FunnelWeb TeX Definitions ======================= +EX13: This example is used to generate typeset documentation which is + discussed in the tutorial in the FunnelWeb user's manual. + + +\fwseca{1}{Table of Contents} + + +\fwtocstart{} +\fwtoca{1}{Table of Contents} +\fwtoca{2}{Macros for Moral Support} +\fwtoca{3}{An Extremely Imperative Stack Abstraction} +\fwtocb{3.1}{Define the Stack} +\fwtocb{3.2}{Push the Stack} +\fwtocb{3.3}{Pop the Stack} +\fwtocb{3.4}{Rough the Stack Up a Bit} +\fwtocfinish{} + + +\fwseca{2}{Macros for Moral Support} + +The following macro contain comments that provide moral support in the +output code. + +\fwbeginmacro +\fwmacroname{Programmer's Cheer}{1}\fwmany{}\fwequals \fwodef \fwbtx[ +-- Shift to the left! +-- Shift to the right! +-- Pop up, push down! +-- Byte! Byte! Byte! +-- (From "The New Hacker's Dictionary"). +]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwusedin{This macro is invoked in definitions 6 and 8.} +\fwendmacronotes +\fwendmacro + + +The next macro is similar but is distributed throughout the program. +\fwbeginmacro +\fwmacroname{Hacker's Cheer}{2}\fwplusequals \fwodef \fwbtx[ +-- Pointer to the left +]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwseealso{This macro is defined in definitions 2, 3, 5, 7, and 9.} +\fwusedin{This macro is invoked in definition 10.} +\fwendmacronotes +\fwendmacro + + +\fwseca{3}{An Extremely Imperative Stack Abstraction} + +\fwsecb{3.1}{Define the Stack} +\fwbeginmacro +\fwmacroname{Hacker's Cheer}{3}\fwplusequals \fwodef \fwbtx[-- Pointer to the right +]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwseealso{This macro is defined in definitions 2, 3, 5, 7, and 9.} +\fwusedin{This macro is invoked in definition 10.} +\fwendmacronotes +\fwendmacro + +\fwbeginmacro +\fwmacroname{Stack Type}{4}\fwzero{}\fwequals \fwodef \fwbtx[type stack = record ... end;]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwusedin{This macro is NEVER invoked.} +\fwendmacronotes +\fwendmacro + + +\fwsecb{3.2}{Push the Stack} +\fwbeginmacro +\fwmacroname{Hacker's Cheer}{5}\fwplusequals \fwodef \fwbtx[-- Hack that code +]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwseealso{This macro is defined in definitions 2, 3, 5, 7, and 9.} +\fwusedin{This macro is invoked in definition 10.} +\fwendmacronotes +\fwendmacro + +\fwbeginmacro +\fwmacroname{Push Procedure}{6}\fwzero{}\fwequals \fwodef \fwbtx[procedure push(var b:stack; v:value); ]fwetx=% +\fwmacroname{Programmer's Cheer}{1}\fwbtx[ {...}]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwusedin{This macro is NEVER invoked.} +\fwendmacronotes +\fwendmacro + + +\fwsecb{3.3}{Pop the Stack} +\fwbeginmacro +\fwmacroname{Hacker's Cheer}{7}\fwplusequals \fwodef \fwbtx[-- Tight! Tight! Tight! +]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwseealso{This macro is defined in definitions 2, 3, 5, 7, and 9.} +\fwusedin{This macro is invoked in definition 10.} +\fwendmacronotes +\fwendmacro + +\fwbeginmacro +\fwmacroname{Pop Procedure}{8}\fwzero{}\fwequals \fwodef \fwbtx[procedure pop(var b:stack); ]fwetx=% +\fwmacroname{Programmer's Cheer}{1}\fwbtx[ {...}]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwusedin{This macro is NEVER invoked.} +\fwendmacronotes +\fwendmacro + + +\fwsecb{3.4}{Rough the Stack Up a Bit} +\fwbeginmacro +\fwmacroname{Hacker's Cheer}{9}\fwplusequals \fwodef \fwbtx[-- (RNW, 04-Jan-1991). +]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwseealso{This macro is defined in definitions 2, 3, 5, 7, and 9.} +\fwusedin{This macro is invoked in definition 10.} +\fwendmacronotes +\fwendmacro + +\fwbeginmacro +\fwmacroname{Rough Procedure}{10}\fwzero{}\fwequals \fwodef \fwbtx[procedure rough(var b:stack); ]fwetx=% +\fwmacroname{Hacker's Cheer}{2}\fwbtx[ {...}]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwusedin{This macro is NEVER invoked.} +\fwendmacronotes +\fwendmacro + + +\fwbeginmacro +\fwfilename{dummy.txt}{11}\fwequals \fwodef \fwbtx[dummy +]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwisafile{This macro is attached to an output file.} +\fwendmacronotes +\fwendmacro + +\bye + + +%******************************************************************************* +%* END OF AUTOMATICALLY GENERATED TEX FILE * +%******************************************************************************* + diff --git a/web/funnelAC/answers/ex14.lis b/web/funnelAC/answers/ex14.lis new file mode 100644 index 0000000000..342bdb414d --- /dev/null +++ b/web/funnelAC/answers/ex14.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Weave: Completed <<Suppressed>>. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/ex14.tex b/web/funnelAC/answers/ex14.tex new file mode 100644 index 0000000000..1de1e8756b --- /dev/null +++ b/web/funnelAC/answers/ex14.tex @@ -0,0 +1,369 @@ + +%******************************************************************************* +%* START OF AUTOMATICALLY GENERATED TEX FILE * +%******************************************************************************* +%* * +%* This TeX file was automatically generated by the FunnelWeb preprocessor. * +%* You can typeset this file to produce printed documentation by running it * +%* through the TeX typesetter using a command such as: * +%* tex thisfilename * +%* The resultant file thisfilename.dvi can be printed using a command such as: * +%* lpr -Pcslw -d thisfilename.dvi * +%* * +%* FunnelWeb is a preprocessor that allows programmers to weave programs and * +%* their documentation together in a single document. The FunnelWeb program * +%* analyses such documents producing both program files and typeset * +%* documentation such as this TeX file. * +%* FunnelWeb was created by Ross Williams. * +%* * +%* For more information on FunnelWeb look in the following FTP archive: * +%* Machine : sirius.itd.adelaide.edu.au [IP=129.127.40.3]. * +%* Directory: ~pub/funnelweb/ * +%* (or some other appropriately named directory). * +%* or email Ross Williams at ross@spam.adelaide.edu.au * +%* * +%******************************************************************************* + + +%===================== Start of FunnelWeb TeX Definitions ====================== + + +% Version +% ------- +% This is FunnelWeb TeX Macro Library Version 1.0. + + +% Copyright +% --------- +% This set of FunnelWeb TeX definitions was written by Ross Williams and was +% originally Copyright (C) 1992 Ross N. Williams. However, I, Ross Williams, +% hereby forego any claim to Copyright in this set of FunnelWeb TeX definitions +% and hereby authorize that the set of TeX definitions pass into the public +% domain. -- Ross N. Williams, 3:41pm 07-May-1992, Adelaide, Australia. + + +% Modification +% ------------ +% Please record all modifications to these TeX definitions here. Unless +% otherwise specified, all modified definitions fall in the public domain too. +% +% Programmers: +% RNW Ross N. Williams ross@spam.adelaide.edu.au +% +% Changes: +% 07-May-1992 RNW Prepared this work for public domain release. +% + + +% General Comments +% ---------------- +% This set of TeX definitions exists for two reasons: +% +% 1. To shorten and neaten the FunnelWeb TeX output. +% 2. To allow users to fiddle with the output format in their input files +% (by inserting redefining "\def"s) without having to resort to +% modifying the FunnelWeb code. +% +% The user is warned that these definitions may be changed from time to time +% (but probably not much). The user should not be too sneaky. In particular, +% users wishing to redefine some of these macros should do so in an explicitly +% defined section at the top of their input file. This will mean that in the +% event of problems, that section can simply be deleted or commented out to +% allow the document to at least be typeset in the default format. Users should +% limit themselves to redefining these macros in such a section and should +% refrain from using the macros throughout their documents. + + +% Environment Parameters +% ---------------------- +% \tolerance tells TeX how tolerant it should be about making bad line and +% page breaks. Here we set it to it's maximum, as +% 1) Computer programs are likely to cause lots of bad breaks. +% 2) In most cases the user would probably rather get the TeX file through +% TeX without any errors than fiddle with spacings for perfection. +\tolerance=10000 + +% I don't like indentation as it makes the page look more busy. Instead, +% paragraphs are separated by a little space (see next). +\parindent=0pt + +% In many cases, users will produce documents with long runs of paragraphs. +% In order to space out these paragraphs, it is convenient to maintain a +% prevailing non-zero \parskip (end-of-paragaph skip). The only trouble is +% that the skip becomes a problem in macro definitions which require no skip +% and so we have to turn the skip on and off. The following two macros +% simplify this process. +\def\fwparskipon{\parskip=\medskipamount} +\def\fwparskipoff{\parskip=0pt} +\fwparskipon + +% Setting raggedbottom allows TeX to leave a bit of space at the bottom of the +% page in order to better vertically align the rest of the page (e.g. skips +% won't stretch as much). It also means that headings are less likely to be +% isolated at the bottom of the page without any following text. +\raggedbottom + + +% Fonts +% ----- +% Most of the typeset output is set in 10pt roman and 10pt tt font. +% The major extra font needs spring from titles and headings. +% For portability's sake we use only the following fonts: +% cmr10 +% cmbx10 +% cmtt10 +% and some enlargements of them. These fonts are all "standard" fonts +% in Plain TeX. See The TeXbook p.350. +\font\fwfontnote=cmr7 + +\font\fwfontnorm=cmr10 +\font\fwfontnorma=cmr10 scaled \magstep1 +\font\fwfontnormb=cmr10 scaled \magstep2 + +\font\fwfontbold=cmbx10 +\font\fwfontbolda=cmbx10 scaled \magstep1 +\font\fwfontboldb=cmbx10 scaled \magstep2 +\font\fwfontboldc=cmbx10 scaled \magstep3 +\font\fwfontboldd=cmbx10 scaled \magstep4 + + +% Macros for Stylistic Details +% ---------------------------- +% This section contains all the fiddly little macros for setting the details +% of each macro definition. + +% Macro definitions are sandwiched by calls to these macros which can be used +% to sort out the spacing before and after the macro definition. +\def\fwbeginmacro{\fwparskipoff\bigskip} +\def\fwendmacro{\fwparskipon\par} + +% These macros deal with the macro name and definition line. +\def\fwmacroname#1#2{{\sl #1\/}$\lbrack$#2$\rbrack$} +\def\fwfilename#1#2{{\bf #1}$\lbrack$#2$\rbrack$} +\def\fwzero#1{{\bf Z}} +\def\fwmany#1{{\bf M}} +\def\fwequals{ $\equiv$} +\def\fwplusequals{ $+\equiv$} + +% Now for the actual body of the definition. It looks nice to have the tt +% code indented a little. Again, we use macros instead of writing direct TeX, +% so as to allow the user to fiddle this stuff to taste without having to +% modify the FunnelWeb C code. +\def\fwodef{\parindent=15pt\vskip0pt$\lbrace$\parindent=20pt} +\def\fwcdef{$\rbrace$\vskip0pt\parindent=0pt} +\def\fwoquote{`} +\def\fwcquote{'} +\def\fwoparen{$($} +\def\fwcomma{$,$} +\def\fwcparen{$)$} +\def\fwparam#1{$\diamond #1$} +\def\fwparams#1{$(\diamond #1)$} + +% These macros deal with the notes that are appended at the end of each +% macro definition. Note that even though \fwisafile,\fwusedin, and \fwseealso +% have the same definition, they are given different names so as to allow the +% user to redefine these macros to typeset each kind of information differently +% if desired. +\def\fwbeginmacronotes{\begingroup\baselineskip=9pt\smallskip} +\def\fwnote#1{{\fwfontnote #1}\par} +\def\fwisafile#1{\fwnote{#1}} +\def\fwusedin#1{\fwnote{#1}} +\def\fwseealso#1{\fwnote{#1}} +\def\fwendmacronotes{\endgroup} + + +% Macros to Typeset Program Code Verbatim +% --------------------------------------- +% This is by far the hairiest and most difficult part of the typesetting task +% because we have to turn off most of TeX's natural instincts in order to +% typeset the program text exactly as it appears in the input file. +% Two macros are defined to pull this off: \fwbtx and \fwverbatimgobble. +% Their code was inspired by the following sections of "The TeXbook": +% Appendix D: Dirty Tricks, 3.Verbatim listing, p.380-382. +% Appendix E: Example Formats, p.421. +% The \fwbtx[ (for "FunnelWeb Begin TeXt") macro does most of the hard work. +% The liberal use of "%" is because I don't understand TeX well enough to +% understand when an end of line will cause trouble, and I am playing it safe. + +% Before defining the main \fwbtx macro, we have to stash away some definitions +% in the hidden part of TeX's environment. Let's hope that these "hidden" +% definitions don't affect anything except what is desired to be affected. + +% The tt font in which we wish to set the text has two Latin lurking ligatures! +% These are ?` and !`. To disable them, we define the left quote when ACTIVE +% to be defined in such a way as to prevent ligatures. The main TeX text will +% normally not be exposed to this definition because normally the leftquote +% character is not active. The \fwbtx macro temporarily makes the left quote +% character active thus activating the deactivation of left quote ligatures. +% See The TeXbook p.381. +{\catcode`\`=\active \gdef`{\relax\lq}} + +% TeX is fairly carefree about spaces and so we have to make it more serious. +% To do so we pull the same trick as above, setting up a definition for active +% space, but only making space active during the span of the verbatim text. +% In Plain TeX the active space is defined to be simply a space, but here we +% define it to be a control space. This ensures that the space cannot +% be gobbled up by one of TeX's mysterious mechanisms when activated. +% See The TeXbook, p.381 and p.352. +{\obeyspaces\global\let =\ } + +% Here is the main \fwbtx verbatim text macro. +% Note: The order in which all these pieces of business have to be done is +% still a partial mystery to me. Don't fiddle with this stuff unless you +% think you know what you are doing. +\def\fwbtx[{% +% +% The funnies involved in getting verbatim output are safely housed inside +% this \begingroup, and the \endgroup in \fwverbatimgobble. Groups are used +% instead of curly braces because we have to be able to signal the end of +% this macro with a curly brace. +\begingroup% +% +% \pars at the end of empty lines in the verbatim text won't come out normally +% because TeX is in vertical mode and they get gobbled up. To prevent this, +% we force \par to exit vertical mode first. See The TeXbook p.381. +\def\par{\leavevmode\endgraf}% +% +% Activate the leftquote character so as to avoid ligatures (see above). +\catcode`\`=\active% +% +% The \obeylines macro simply defines end of line (^M) to be \par. This ensures +% that TeX will treat each verbatim line as a new paragraph. +\obeylines% +% +% To get verbatim output, we have to desex all the special characters. This +% is explained in detail in The TeXbook p.380. +\def\do##1{\catcode`##1=12 }\dospecials% +% +% Activate the space character so as to make TeX treat blanks seriously. +% This activation invokes an eralier definition (see above). +\obeyspaces +% +% Interparagraph skips do not help the cause. +% Note: We have to preserve the indentation though, as the code is actually +% indented in the final output. See \fwodef in an earlier section. +\parskip=0pt% +% +% We typeset the verbatim text in tt font (courier on the Macintosh) for a +% number of reasons: +% - tt font has the same horizontal spacing for each character. +% - tt font covers the ASCII character set. +% - tt font doesn't have many surprises (e.g. ligatures). +% - tt font looks much what you might see on a computer terminal screen. +\tt% +% +% Having set up an environment for verbatim, we are ready to use it. +% By invoking \fwverbatimgobble, this \fwbtx macro gobbles up text verbatim (as +% part of the parameter of \fwverbatimgobble) until it sees the termination +% string "]fwetx=" (the "=" was thrown in to add obscurity as this sequence +% must never occur in the verbatim text). +\fwverbatimgobble} + +% The \fwverbatimgobble macro exists to allow \fwbtx to bracket verbatim text. +\def\fwverbatimgobble#1]fwetx={#1\endgroup} + + +% Table of Contents +% ----------------- +% The five levels of table of contents that FunnelWeb supports are identified +% by the five letters [A..E]. These are used throughout the following macros. + +% The following macros are utilities to the TOC macros to follow. +\def\fwrule{\medskip\hrule\medskip} +\def\fwqh{\hskip1.5em\relax} +\def\fwbeforesec{\penalty-200\bigskip\medskip\par} + +% The following macros are used to typeset the table of contents. +\def\fwtocstart#1{\fwrule\leftline{\fwfontbolda Table of Contents}\fwrule} +\def\fwtoca#1#2{\leftline{{\bf #1 #2}}} +\def\fwtocb#1#2{\leftline{\fwqh #1 #2}} +\def\fwtocc#1#2{\leftline{\fwqh\fwqh #1 #2}} +\def\fwtocd#1#2{\leftline{\fwqh\fwqh\fwqh #1 #2}} +\def\fwtoce#1#2{\leftline{\fwqh\fwqh\fwqh\fwqh #1 #2}} +\def\fwtocfinish#1{\fwrule} + +% The following "library" macros define five different strengths of headings +% which can be used later in the section macros. +\def\fwliba#1#2{\vfill\eject{\fwfontboldc #1 #2}\penalty200\smallskip} +\def\fwlibb#1#2{\fwbeforesec{\fwfontboldb #1 #2}\penalty200\smallskip} +\def\fwlibc#1#2{\fwbeforesec{\fwfontnormb #1 #2}\penalty200\smallskip} +\def\fwlibd#1#2{\fwbeforesec{\bf #1 #2}\penalty200} +\def\fwlibe#1#2{\fwbeforesec{\bf #1 #2}} + +% Here are the macros that actually typeset the section headings throughout +% the document. The fwlib system has been employed so as to easily allow the +% user to redefine the strengths of headings to taste. For example, the +% user could insert in the input document a similar set of definitions to these +% but with the b..e headings set to \fwlibc. This would tone down the output. +\def\fwseca#1#2{\fwliba{#1}{#2}} +\def\fwsecb#1#2{\fwlibb{#1}{#2}} +\def\fwsecc#1#2{\fwlibc{#1}{#2}} +\def\fwsecd#1#2{\fwlibd{#1}{#2}} +\def\fwsece#1#2{\fwlibe{#1}{#2}} + + +% Support for Explicit Typesetting +% -------------------------------- +% FunnelWeb supports pragmas and other constructs that allow +% typesetter-independent typesetting commands to be given. The +% following macros support these features. + +% The in-text literal @{sloth@} and emphasise @[walrus@] features. +\def\fwlit#1{{\tt #1}} +\def\fwemp#1{{\it #1}} + +% The "@p new_page" pragma. +\def\fwnewpage{\vfill\eject} + +% The "@p vskip Nmm" pragma. +\def\fwvskip#1{\null\vskip #1mm} + +% The "@p title <font> <align> <text>" pragma. +\def\fwfontnormal#1{{\fwfontnorm {#1}}} +\def\fwfonttitle#1{{\fwfontboldd {#1}}} +\def\fwfontsmalltitle#1{{\fwfontboldb {#1}}} +\def\fwleftline#1{\leftline{#1}} +\def\fwcenterline#1{\centerline{#1}} +\def\fwrightline#1{\rightline{#1}} + + +% Support for Old FunnelWeb +% ------------------------- +% The following macros were used extensively in the first version of +% FunnelWeb and are retained so that these older input files will still +% typeset cleanly. +\def\p#1{{\tt #1}} % P for Program text. +\def\flagpage#1#2{ + \null + \vfill + \centerline{\fwfontboldd #1} + \vskip 1cm + \centerline{\fwfontboldd #2} + \vfill + \null + \vfill +} + +%====================== End of FunnelWeb TeX Definitions ======================= +EX14: This example demonstrates the literal and emphasis typesetting constructs. + +The following procedure \fwlit{put\_sloth} writes the \fwlit{sloth} variable to +the output file. Note: \fwemp{The output file must be opened for writing +at this point or the program will crash!} + +\fwbeginmacro +\fwfilename{ex14.out}{1}\fwequals \fwodef \fwbtx[dummy +]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwisafile{This macro is attached to an output file.} +\fwendmacronotes +\fwendmacro + +\bye + + +%******************************************************************************* +%* END OF AUTOMATICALLY GENERATED TEX FILE * +%******************************************************************************* + diff --git a/web/funnelAC/answers/ex15.lis b/web/funnelAC/answers/ex15.lis new file mode 100644 index 0000000000..342bdb414d --- /dev/null +++ b/web/funnelAC/answers/ex15.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Weave: Completed <<Suppressed>>. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/ex15.tex b/web/funnelAC/answers/ex15.tex new file mode 100644 index 0000000000..a82b33d2f2 --- /dev/null +++ b/web/funnelAC/answers/ex15.tex @@ -0,0 +1,390 @@ + +%******************************************************************************* +%* START OF AUTOMATICALLY GENERATED TEX FILE * +%******************************************************************************* +%* * +%* This TeX file was automatically generated by the FunnelWeb preprocessor. * +%* You can typeset this file to produce printed documentation by running it * +%* through the TeX typesetter using a command such as: * +%* tex thisfilename * +%* The resultant file thisfilename.dvi can be printed using a command such as: * +%* lpr -Pcslw -d thisfilename.dvi * +%* * +%* FunnelWeb is a preprocessor that allows programmers to weave programs and * +%* their documentation together in a single document. The FunnelWeb program * +%* analyses such documents producing both program files and typeset * +%* documentation such as this TeX file. * +%* FunnelWeb was created by Ross Williams. * +%* * +%* For more information on FunnelWeb look in the following FTP archive: * +%* Machine : sirius.itd.adelaide.edu.au [IP=129.127.40.3]. * +%* Directory: ~pub/funnelweb/ * +%* (or some other appropriately named directory). * +%* or email Ross Williams at ross@spam.adelaide.edu.au * +%* * +%******************************************************************************* + + +%===================== Start of FunnelWeb TeX Definitions ====================== + + +% Version +% ------- +% This is FunnelWeb TeX Macro Library Version 1.0. + + +% Copyright +% --------- +% This set of FunnelWeb TeX definitions was written by Ross Williams and was +% originally Copyright (C) 1992 Ross N. Williams. However, I, Ross Williams, +% hereby forego any claim to Copyright in this set of FunnelWeb TeX definitions +% and hereby authorize that the set of TeX definitions pass into the public +% domain. -- Ross N. Williams, 3:41pm 07-May-1992, Adelaide, Australia. + + +% Modification +% ------------ +% Please record all modifications to these TeX definitions here. Unless +% otherwise specified, all modified definitions fall in the public domain too. +% +% Programmers: +% RNW Ross N. Williams ross@spam.adelaide.edu.au +% +% Changes: +% 07-May-1992 RNW Prepared this work for public domain release. +% + + +% General Comments +% ---------------- +% This set of TeX definitions exists for two reasons: +% +% 1. To shorten and neaten the FunnelWeb TeX output. +% 2. To allow users to fiddle with the output format in their input files +% (by inserting redefining "\def"s) without having to resort to +% modifying the FunnelWeb code. +% +% The user is warned that these definitions may be changed from time to time +% (but probably not much). The user should not be too sneaky. In particular, +% users wishing to redefine some of these macros should do so in an explicitly +% defined section at the top of their input file. This will mean that in the +% event of problems, that section can simply be deleted or commented out to +% allow the document to at least be typeset in the default format. Users should +% limit themselves to redefining these macros in such a section and should +% refrain from using the macros throughout their documents. + + +% Environment Parameters +% ---------------------- +% \tolerance tells TeX how tolerant it should be about making bad line and +% page breaks. Here we set it to it's maximum, as +% 1) Computer programs are likely to cause lots of bad breaks. +% 2) In most cases the user would probably rather get the TeX file through +% TeX without any errors than fiddle with spacings for perfection. +\tolerance=10000 + +% I don't like indentation as it makes the page look more busy. Instead, +% paragraphs are separated by a little space (see next). +\parindent=0pt + +% In many cases, users will produce documents with long runs of paragraphs. +% In order to space out these paragraphs, it is convenient to maintain a +% prevailing non-zero \parskip (end-of-paragaph skip). The only trouble is +% that the skip becomes a problem in macro definitions which require no skip +% and so we have to turn the skip on and off. The following two macros +% simplify this process. +\def\fwparskipon{\parskip=\medskipamount} +\def\fwparskipoff{\parskip=0pt} +\fwparskipon + +% Setting raggedbottom allows TeX to leave a bit of space at the bottom of the +% page in order to better vertically align the rest of the page (e.g. skips +% won't stretch as much). It also means that headings are less likely to be +% isolated at the bottom of the page without any following text. +\raggedbottom + + +% Fonts +% ----- +% Most of the typeset output is set in 10pt roman and 10pt tt font. +% The major extra font needs spring from titles and headings. +% For portability's sake we use only the following fonts: +% cmr10 +% cmbx10 +% cmtt10 +% and some enlargements of them. These fonts are all "standard" fonts +% in Plain TeX. See The TeXbook p.350. +\font\fwfontnote=cmr7 + +\font\fwfontnorm=cmr10 +\font\fwfontnorma=cmr10 scaled \magstep1 +\font\fwfontnormb=cmr10 scaled \magstep2 + +\font\fwfontbold=cmbx10 +\font\fwfontbolda=cmbx10 scaled \magstep1 +\font\fwfontboldb=cmbx10 scaled \magstep2 +\font\fwfontboldc=cmbx10 scaled \magstep3 +\font\fwfontboldd=cmbx10 scaled \magstep4 + + +% Macros for Stylistic Details +% ---------------------------- +% This section contains all the fiddly little macros for setting the details +% of each macro definition. + +% Macro definitions are sandwiched by calls to these macros which can be used +% to sort out the spacing before and after the macro definition. +\def\fwbeginmacro{\fwparskipoff\bigskip} +\def\fwendmacro{\fwparskipon\par} + +% These macros deal with the macro name and definition line. +\def\fwmacroname#1#2{{\sl #1\/}$\lbrack$#2$\rbrack$} +\def\fwfilename#1#2{{\bf #1}$\lbrack$#2$\rbrack$} +\def\fwzero#1{{\bf Z}} +\def\fwmany#1{{\bf M}} +\def\fwequals{ $\equiv$} +\def\fwplusequals{ $+\equiv$} + +% Now for the actual body of the definition. It looks nice to have the tt +% code indented a little. Again, we use macros instead of writing direct TeX, +% so as to allow the user to fiddle this stuff to taste without having to +% modify the FunnelWeb C code. +\def\fwodef{\parindent=15pt\vskip0pt$\lbrace$\parindent=20pt} +\def\fwcdef{$\rbrace$\vskip0pt\parindent=0pt} +\def\fwoquote{`} +\def\fwcquote{'} +\def\fwoparen{$($} +\def\fwcomma{$,$} +\def\fwcparen{$)$} +\def\fwparam#1{$\diamond #1$} +\def\fwparams#1{$(\diamond #1)$} + +% These macros deal with the notes that are appended at the end of each +% macro definition. Note that even though \fwisafile,\fwusedin, and \fwseealso +% have the same definition, they are given different names so as to allow the +% user to redefine these macros to typeset each kind of information differently +% if desired. +\def\fwbeginmacronotes{\begingroup\baselineskip=9pt\smallskip} +\def\fwnote#1{{\fwfontnote #1}\par} +\def\fwisafile#1{\fwnote{#1}} +\def\fwusedin#1{\fwnote{#1}} +\def\fwseealso#1{\fwnote{#1}} +\def\fwendmacronotes{\endgroup} + + +% Macros to Typeset Program Code Verbatim +% --------------------------------------- +% This is by far the hairiest and most difficult part of the typesetting task +% because we have to turn off most of TeX's natural instincts in order to +% typeset the program text exactly as it appears in the input file. +% Two macros are defined to pull this off: \fwbtx and \fwverbatimgobble. +% Their code was inspired by the following sections of "The TeXbook": +% Appendix D: Dirty Tricks, 3.Verbatim listing, p.380-382. +% Appendix E: Example Formats, p.421. +% The \fwbtx[ (for "FunnelWeb Begin TeXt") macro does most of the hard work. +% The liberal use of "%" is because I don't understand TeX well enough to +% understand when an end of line will cause trouble, and I am playing it safe. + +% Before defining the main \fwbtx macro, we have to stash away some definitions +% in the hidden part of TeX's environment. Let's hope that these "hidden" +% definitions don't affect anything except what is desired to be affected. + +% The tt font in which we wish to set the text has two Latin lurking ligatures! +% These are ?` and !`. To disable them, we define the left quote when ACTIVE +% to be defined in such a way as to prevent ligatures. The main TeX text will +% normally not be exposed to this definition because normally the leftquote +% character is not active. The \fwbtx macro temporarily makes the left quote +% character active thus activating the deactivation of left quote ligatures. +% See The TeXbook p.381. +{\catcode`\`=\active \gdef`{\relax\lq}} + +% TeX is fairly carefree about spaces and so we have to make it more serious. +% To do so we pull the same trick as above, setting up a definition for active +% space, but only making space active during the span of the verbatim text. +% In Plain TeX the active space is defined to be simply a space, but here we +% define it to be a control space. This ensures that the space cannot +% be gobbled up by one of TeX's mysterious mechanisms when activated. +% See The TeXbook, p.381 and p.352. +{\obeyspaces\global\let =\ } + +% Here is the main \fwbtx verbatim text macro. +% Note: The order in which all these pieces of business have to be done is +% still a partial mystery to me. Don't fiddle with this stuff unless you +% think you know what you are doing. +\def\fwbtx[{% +% +% The funnies involved in getting verbatim output are safely housed inside +% this \begingroup, and the \endgroup in \fwverbatimgobble. Groups are used +% instead of curly braces because we have to be able to signal the end of +% this macro with a curly brace. +\begingroup% +% +% \pars at the end of empty lines in the verbatim text won't come out normally +% because TeX is in vertical mode and they get gobbled up. To prevent this, +% we force \par to exit vertical mode first. See The TeXbook p.381. +\def\par{\leavevmode\endgraf}% +% +% Activate the leftquote character so as to avoid ligatures (see above). +\catcode`\`=\active% +% +% The \obeylines macro simply defines end of line (^M) to be \par. This ensures +% that TeX will treat each verbatim line as a new paragraph. +\obeylines% +% +% To get verbatim output, we have to desex all the special characters. This +% is explained in detail in The TeXbook p.380. +\def\do##1{\catcode`##1=12 }\dospecials% +% +% Activate the space character so as to make TeX treat blanks seriously. +% This activation invokes an eralier definition (see above). +\obeyspaces +% +% Interparagraph skips do not help the cause. +% Note: We have to preserve the indentation though, as the code is actually +% indented in the final output. See \fwodef in an earlier section. +\parskip=0pt% +% +% We typeset the verbatim text in tt font (courier on the Macintosh) for a +% number of reasons: +% - tt font has the same horizontal spacing for each character. +% - tt font covers the ASCII character set. +% - tt font doesn't have many surprises (e.g. ligatures). +% - tt font looks much what you might see on a computer terminal screen. +\tt% +% +% Having set up an environment for verbatim, we are ready to use it. +% By invoking \fwverbatimgobble, this \fwbtx macro gobbles up text verbatim (as +% part of the parameter of \fwverbatimgobble) until it sees the termination +% string "]fwetx=" (the "=" was thrown in to add obscurity as this sequence +% must never occur in the verbatim text). +\fwverbatimgobble} + +% The \fwverbatimgobble macro exists to allow \fwbtx to bracket verbatim text. +\def\fwverbatimgobble#1]fwetx={#1\endgroup} + + +% Table of Contents +% ----------------- +% The five levels of table of contents that FunnelWeb supports are identified +% by the five letters [A..E]. These are used throughout the following macros. + +% The following macros are utilities to the TOC macros to follow. +\def\fwrule{\medskip\hrule\medskip} +\def\fwqh{\hskip1.5em\relax} +\def\fwbeforesec{\penalty-200\bigskip\medskip\par} + +% The following macros are used to typeset the table of contents. +\def\fwtocstart#1{\fwrule\leftline{\fwfontbolda Table of Contents}\fwrule} +\def\fwtoca#1#2{\leftline{{\bf #1 #2}}} +\def\fwtocb#1#2{\leftline{\fwqh #1 #2}} +\def\fwtocc#1#2{\leftline{\fwqh\fwqh #1 #2}} +\def\fwtocd#1#2{\leftline{\fwqh\fwqh\fwqh #1 #2}} +\def\fwtoce#1#2{\leftline{\fwqh\fwqh\fwqh\fwqh #1 #2}} +\def\fwtocfinish#1{\fwrule} + +% The following "library" macros define five different strengths of headings +% which can be used later in the section macros. +\def\fwliba#1#2{\vfill\eject{\fwfontboldc #1 #2}\penalty200\smallskip} +\def\fwlibb#1#2{\fwbeforesec{\fwfontboldb #1 #2}\penalty200\smallskip} +\def\fwlibc#1#2{\fwbeforesec{\fwfontnormb #1 #2}\penalty200\smallskip} +\def\fwlibd#1#2{\fwbeforesec{\bf #1 #2}\penalty200} +\def\fwlibe#1#2{\fwbeforesec{\bf #1 #2}} + +% Here are the macros that actually typeset the section headings throughout +% the document. The fwlib system has been employed so as to easily allow the +% user to redefine the strengths of headings to taste. For example, the +% user could insert in the input document a similar set of definitions to these +% but with the b..e headings set to \fwlibc. This would tone down the output. +\def\fwseca#1#2{\fwliba{#1}{#2}} +\def\fwsecb#1#2{\fwlibb{#1}{#2}} +\def\fwsecc#1#2{\fwlibc{#1}{#2}} +\def\fwsecd#1#2{\fwlibd{#1}{#2}} +\def\fwsece#1#2{\fwlibe{#1}{#2}} + + +% Support for Explicit Typesetting +% -------------------------------- +% FunnelWeb supports pragmas and other constructs that allow +% typesetter-independent typesetting commands to be given. The +% following macros support these features. + +% The in-text literal @{sloth@} and emphasise @[walrus@] features. +\def\fwlit#1{{\tt #1}} +\def\fwemp#1{{\it #1}} + +% The "@p new_page" pragma. +\def\fwnewpage{\vfill\eject} + +% The "@p vskip Nmm" pragma. +\def\fwvskip#1{\null\vskip #1mm} + +% The "@p title <font> <align> <text>" pragma. +\def\fwfontnormal#1{{\fwfontnorm {#1}}} +\def\fwfonttitle#1{{\fwfontboldd {#1}}} +\def\fwfontsmalltitle#1{{\fwfontboldb {#1}}} +\def\fwleftline#1{\leftline{#1}} +\def\fwcenterline#1{\centerline{#1}} +\def\fwrightline#1{\rightline{#1}} + + +% Support for Old FunnelWeb +% ------------------------- +% The following macros were used extensively in the first version of +% FunnelWeb and are retained so that these older input files will still +% typeset cleanly. +\def\p#1{{\tt #1}} % P for Program text. +\def\flagpage#1#2{ + \null + \vfill + \centerline{\fwfontboldd #1} + \vskip 1cm + \centerline{\fwfontboldd #2} + \vfill + \null + \vfill +} + +%====================== End of FunnelWeb TeX Definitions ======================= +EX15: This example demonstrates some of FunnelWeb's generic typesetting + constructs. + +\fwvskip{40} +\fwcenterline{\fwfonttitle{Hairy Wombat}} +\fwcenterline{\fwfonttitle{Simulation}} +\fwvskip{10} +\fwcenterline{\fwfontsmalltitle{A Program in Six Parts}} +\fwcenterline{\fwfontsmalltitle{Simulating the Life of Some Hairy Wombats}} +\fwvskip{20} +\fwleftline{\fwfontnormal{By Zqitzypbuswapzra Ypongtatoslrtzz}} + +\fwnewpage + + +\fwtocstart{} +\fwtoca{1}{Section One} +\fwtoca{2}{Section Two} +\fwtocfinish{} + + +\fwnewpage + + +\fwseca{1}{Section One} +\fwseca{2}{Section Two} + +\fwbeginmacro +\fwfilename{ex15.out}{1}\fwequals \fwodef \fwbtx[Dummy +]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwisafile{This macro is attached to an output file.} +\fwendmacronotes +\fwendmacro + +\bye + + +%******************************************************************************* +%* END OF AUTOMATICALLY GENERATED TEX FILE * +%******************************************************************************* + diff --git a/web/funnelAC/answers/ex16.lis b/web/funnelAC/answers/ex16.lis new file mode 100644 index 0000000000..46682a4458 --- /dev/null +++ b/web/funnelAC/answers/ex16.lis @@ -0,0 +1,13 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Tangle: Completed ex16.out. +Weave: Completed <<Suppressed>>. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/ex16.out b/web/funnelAC/answers/ex16.out new file mode 100644 index 0000000000..a3b510afd9 --- /dev/null +++ b/web/funnelAC/answers/ex16.out @@ -0,0 +1,18 @@ +with text_io; use text_io; + +procedure example is + n : constant natural := 10; -- How many numbers? (Ans: [1,n]). + p : constant natural := 5; -- How many powers? (Ans: [1,p]). +begin -- example + for i in 1..n loop + declare + ip : natural := 1; + begin + for power in 1..p loop + ip:=ip*i; + put(natural'image(ip) & " "); + end loop; + new_line; + end; + end loop; +end example; diff --git a/web/funnelAC/answers/ex16.tex b/web/funnelAC/answers/ex16.tex new file mode 100644 index 0000000000..c29b4ce43e --- /dev/null +++ b/web/funnelAC/answers/ex16.tex @@ -0,0 +1,448 @@ + +%******************************************************************************* +%* START OF AUTOMATICALLY GENERATED TEX FILE * +%******************************************************************************* +%* * +%* This TeX file was automatically generated by the FunnelWeb preprocessor. * +%* You can typeset this file to produce printed documentation by running it * +%* through the TeX typesetter using a command such as: * +%* tex thisfilename * +%* The resultant file thisfilename.dvi can be printed using a command such as: * +%* lpr -Pcslw -d thisfilename.dvi * +%* * +%* FunnelWeb is a preprocessor that allows programmers to weave programs and * +%* their documentation together in a single document. The FunnelWeb program * +%* analyses such documents producing both program files and typeset * +%* documentation such as this TeX file. * +%* FunnelWeb was created by Ross Williams. * +%* * +%* For more information on FunnelWeb look in the following FTP archive: * +%* Machine : sirius.itd.adelaide.edu.au [IP=129.127.40.3]. * +%* Directory: ~pub/funnelweb/ * +%* (or some other appropriately named directory). * +%* or email Ross Williams at ross@spam.adelaide.edu.au * +%* * +%******************************************************************************* + + +%===================== Start of FunnelWeb TeX Definitions ====================== + + +% Version +% ------- +% This is FunnelWeb TeX Macro Library Version 1.0. + + +% Copyright +% --------- +% This set of FunnelWeb TeX definitions was written by Ross Williams and was +% originally Copyright (C) 1992 Ross N. Williams. However, I, Ross Williams, +% hereby forego any claim to Copyright in this set of FunnelWeb TeX definitions +% and hereby authorize that the set of TeX definitions pass into the public +% domain. -- Ross N. Williams, 3:41pm 07-May-1992, Adelaide, Australia. + + +% Modification +% ------------ +% Please record all modifications to these TeX definitions here. Unless +% otherwise specified, all modified definitions fall in the public domain too. +% +% Programmers: +% RNW Ross N. Williams ross@spam.adelaide.edu.au +% +% Changes: +% 07-May-1992 RNW Prepared this work for public domain release. +% + + +% General Comments +% ---------------- +% This set of TeX definitions exists for two reasons: +% +% 1. To shorten and neaten the FunnelWeb TeX output. +% 2. To allow users to fiddle with the output format in their input files +% (by inserting redefining "\def"s) without having to resort to +% modifying the FunnelWeb code. +% +% The user is warned that these definitions may be changed from time to time +% (but probably not much). The user should not be too sneaky. In particular, +% users wishing to redefine some of these macros should do so in an explicitly +% defined section at the top of their input file. This will mean that in the +% event of problems, that section can simply be deleted or commented out to +% allow the document to at least be typeset in the default format. Users should +% limit themselves to redefining these macros in such a section and should +% refrain from using the macros throughout their documents. + + +% Environment Parameters +% ---------------------- +% \tolerance tells TeX how tolerant it should be about making bad line and +% page breaks. Here we set it to it's maximum, as +% 1) Computer programs are likely to cause lots of bad breaks. +% 2) In most cases the user would probably rather get the TeX file through +% TeX without any errors than fiddle with spacings for perfection. +\tolerance=10000 + +% I don't like indentation as it makes the page look more busy. Instead, +% paragraphs are separated by a little space (see next). +\parindent=0pt + +% In many cases, users will produce documents with long runs of paragraphs. +% In order to space out these paragraphs, it is convenient to maintain a +% prevailing non-zero \parskip (end-of-paragaph skip). The only trouble is +% that the skip becomes a problem in macro definitions which require no skip +% and so we have to turn the skip on and off. The following two macros +% simplify this process. +\def\fwparskipon{\parskip=\medskipamount} +\def\fwparskipoff{\parskip=0pt} +\fwparskipon + +% Setting raggedbottom allows TeX to leave a bit of space at the bottom of the +% page in order to better vertically align the rest of the page (e.g. skips +% won't stretch as much). It also means that headings are less likely to be +% isolated at the bottom of the page without any following text. +\raggedbottom + + +% Fonts +% ----- +% Most of the typeset output is set in 10pt roman and 10pt tt font. +% The major extra font needs spring from titles and headings. +% For portability's sake we use only the following fonts: +% cmr10 +% cmbx10 +% cmtt10 +% and some enlargements of them. These fonts are all "standard" fonts +% in Plain TeX. See The TeXbook p.350. +\font\fwfontnote=cmr7 + +\font\fwfontnorm=cmr10 +\font\fwfontnorma=cmr10 scaled \magstep1 +\font\fwfontnormb=cmr10 scaled \magstep2 + +\font\fwfontbold=cmbx10 +\font\fwfontbolda=cmbx10 scaled \magstep1 +\font\fwfontboldb=cmbx10 scaled \magstep2 +\font\fwfontboldc=cmbx10 scaled \magstep3 +\font\fwfontboldd=cmbx10 scaled \magstep4 + + +% Macros for Stylistic Details +% ---------------------------- +% This section contains all the fiddly little macros for setting the details +% of each macro definition. + +% Macro definitions are sandwiched by calls to these macros which can be used +% to sort out the spacing before and after the macro definition. +\def\fwbeginmacro{\fwparskipoff\bigskip} +\def\fwendmacro{\fwparskipon\par} + +% These macros deal with the macro name and definition line. +\def\fwmacroname#1#2{{\sl #1\/}$\lbrack$#2$\rbrack$} +\def\fwfilename#1#2{{\bf #1}$\lbrack$#2$\rbrack$} +\def\fwzero#1{{\bf Z}} +\def\fwmany#1{{\bf M}} +\def\fwequals{ $\equiv$} +\def\fwplusequals{ $+\equiv$} + +% Now for the actual body of the definition. It looks nice to have the tt +% code indented a little. Again, we use macros instead of writing direct TeX, +% so as to allow the user to fiddle this stuff to taste without having to +% modify the FunnelWeb C code. +\def\fwodef{\parindent=15pt\vskip0pt$\lbrace$\parindent=20pt} +\def\fwcdef{$\rbrace$\vskip0pt\parindent=0pt} +\def\fwoquote{`} +\def\fwcquote{'} +\def\fwoparen{$($} +\def\fwcomma{$,$} +\def\fwcparen{$)$} +\def\fwparam#1{$\diamond #1$} +\def\fwparams#1{$(\diamond #1)$} + +% These macros deal with the notes that are appended at the end of each +% macro definition. Note that even though \fwisafile,\fwusedin, and \fwseealso +% have the same definition, they are given different names so as to allow the +% user to redefine these macros to typeset each kind of information differently +% if desired. +\def\fwbeginmacronotes{\begingroup\baselineskip=9pt\smallskip} +\def\fwnote#1{{\fwfontnote #1}\par} +\def\fwisafile#1{\fwnote{#1}} +\def\fwusedin#1{\fwnote{#1}} +\def\fwseealso#1{\fwnote{#1}} +\def\fwendmacronotes{\endgroup} + + +% Macros to Typeset Program Code Verbatim +% --------------------------------------- +% This is by far the hairiest and most difficult part of the typesetting task +% because we have to turn off most of TeX's natural instincts in order to +% typeset the program text exactly as it appears in the input file. +% Two macros are defined to pull this off: \fwbtx and \fwverbatimgobble. +% Their code was inspired by the following sections of "The TeXbook": +% Appendix D: Dirty Tricks, 3.Verbatim listing, p.380-382. +% Appendix E: Example Formats, p.421. +% The \fwbtx[ (for "FunnelWeb Begin TeXt") macro does most of the hard work. +% The liberal use of "%" is because I don't understand TeX well enough to +% understand when an end of line will cause trouble, and I am playing it safe. + +% Before defining the main \fwbtx macro, we have to stash away some definitions +% in the hidden part of TeX's environment. Let's hope that these "hidden" +% definitions don't affect anything except what is desired to be affected. + +% The tt font in which we wish to set the text has two Latin lurking ligatures! +% These are ?` and !`. To disable them, we define the left quote when ACTIVE +% to be defined in such a way as to prevent ligatures. The main TeX text will +% normally not be exposed to this definition because normally the leftquote +% character is not active. The \fwbtx macro temporarily makes the left quote +% character active thus activating the deactivation of left quote ligatures. +% See The TeXbook p.381. +{\catcode`\`=\active \gdef`{\relax\lq}} + +% TeX is fairly carefree about spaces and so we have to make it more serious. +% To do so we pull the same trick as above, setting up a definition for active +% space, but only making space active during the span of the verbatim text. +% In Plain TeX the active space is defined to be simply a space, but here we +% define it to be a control space. This ensures that the space cannot +% be gobbled up by one of TeX's mysterious mechanisms when activated. +% See The TeXbook, p.381 and p.352. +{\obeyspaces\global\let =\ } + +% Here is the main \fwbtx verbatim text macro. +% Note: The order in which all these pieces of business have to be done is +% still a partial mystery to me. Don't fiddle with this stuff unless you +% think you know what you are doing. +\def\fwbtx[{% +% +% The funnies involved in getting verbatim output are safely housed inside +% this \begingroup, and the \endgroup in \fwverbatimgobble. Groups are used +% instead of curly braces because we have to be able to signal the end of +% this macro with a curly brace. +\begingroup% +% +% \pars at the end of empty lines in the verbatim text won't come out normally +% because TeX is in vertical mode and they get gobbled up. To prevent this, +% we force \par to exit vertical mode first. See The TeXbook p.381. +\def\par{\leavevmode\endgraf}% +% +% Activate the leftquote character so as to avoid ligatures (see above). +\catcode`\`=\active% +% +% The \obeylines macro simply defines end of line (^M) to be \par. This ensures +% that TeX will treat each verbatim line as a new paragraph. +\obeylines% +% +% To get verbatim output, we have to desex all the special characters. This +% is explained in detail in The TeXbook p.380. +\def\do##1{\catcode`##1=12 }\dospecials% +% +% Activate the space character so as to make TeX treat blanks seriously. +% This activation invokes an eralier definition (see above). +\obeyspaces +% +% Interparagraph skips do not help the cause. +% Note: We have to preserve the indentation though, as the code is actually +% indented in the final output. See \fwodef in an earlier section. +\parskip=0pt% +% +% We typeset the verbatim text in tt font (courier on the Macintosh) for a +% number of reasons: +% - tt font has the same horizontal spacing for each character. +% - tt font covers the ASCII character set. +% - tt font doesn't have many surprises (e.g. ligatures). +% - tt font looks much what you might see on a computer terminal screen. +\tt% +% +% Having set up an environment for verbatim, we are ready to use it. +% By invoking \fwverbatimgobble, this \fwbtx macro gobbles up text verbatim (as +% part of the parameter of \fwverbatimgobble) until it sees the termination +% string "]fwetx=" (the "=" was thrown in to add obscurity as this sequence +% must never occur in the verbatim text). +\fwverbatimgobble} + +% The \fwverbatimgobble macro exists to allow \fwbtx to bracket verbatim text. +\def\fwverbatimgobble#1]fwetx={#1\endgroup} + + +% Table of Contents +% ----------------- +% The five levels of table of contents that FunnelWeb supports are identified +% by the five letters [A..E]. These are used throughout the following macros. + +% The following macros are utilities to the TOC macros to follow. +\def\fwrule{\medskip\hrule\medskip} +\def\fwqh{\hskip1.5em\relax} +\def\fwbeforesec{\penalty-200\bigskip\medskip\par} + +% The following macros are used to typeset the table of contents. +\def\fwtocstart#1{\fwrule\leftline{\fwfontbolda Table of Contents}\fwrule} +\def\fwtoca#1#2{\leftline{{\bf #1 #2}}} +\def\fwtocb#1#2{\leftline{\fwqh #1 #2}} +\def\fwtocc#1#2{\leftline{\fwqh\fwqh #1 #2}} +\def\fwtocd#1#2{\leftline{\fwqh\fwqh\fwqh #1 #2}} +\def\fwtoce#1#2{\leftline{\fwqh\fwqh\fwqh\fwqh #1 #2}} +\def\fwtocfinish#1{\fwrule} + +% The following "library" macros define five different strengths of headings +% which can be used later in the section macros. +\def\fwliba#1#2{\vfill\eject{\fwfontboldc #1 #2}\penalty200\smallskip} +\def\fwlibb#1#2{\fwbeforesec{\fwfontboldb #1 #2}\penalty200\smallskip} +\def\fwlibc#1#2{\fwbeforesec{\fwfontnormb #1 #2}\penalty200\smallskip} +\def\fwlibd#1#2{\fwbeforesec{\bf #1 #2}\penalty200} +\def\fwlibe#1#2{\fwbeforesec{\bf #1 #2}} + +% Here are the macros that actually typeset the section headings throughout +% the document. The fwlib system has been employed so as to easily allow the +% user to redefine the strengths of headings to taste. For example, the +% user could insert in the input document a similar set of definitions to these +% but with the b..e headings set to \fwlibc. This would tone down the output. +\def\fwseca#1#2{\fwliba{#1}{#2}} +\def\fwsecb#1#2{\fwlibb{#1}{#2}} +\def\fwsecc#1#2{\fwlibc{#1}{#2}} +\def\fwsecd#1#2{\fwlibd{#1}{#2}} +\def\fwsece#1#2{\fwlibe{#1}{#2}} + + +% Support for Explicit Typesetting +% -------------------------------- +% FunnelWeb supports pragmas and other constructs that allow +% typesetter-independent typesetting commands to be given. The +% following macros support these features. + +% The in-text literal @{sloth@} and emphasise @[walrus@] features. +\def\fwlit#1{{\tt #1}} +\def\fwemp#1{{\it #1}} + +% The "@p new_page" pragma. +\def\fwnewpage{\vfill\eject} + +% The "@p vskip Nmm" pragma. +\def\fwvskip#1{\null\vskip #1mm} + +% The "@p title <font> <align> <text>" pragma. +\def\fwfontnormal#1{{\fwfontnorm {#1}}} +\def\fwfonttitle#1{{\fwfontboldd {#1}}} +\def\fwfontsmalltitle#1{{\fwfontboldb {#1}}} +\def\fwleftline#1{\leftline{#1}} +\def\fwcenterline#1{\centerline{#1}} +\def\fwrightline#1{\rightline{#1}} + + +% Support for Old FunnelWeb +% ------------------------- +% The following macros were used extensively in the first version of +% FunnelWeb and are retained so that these older input files will still +% typeset cleanly. +\def\p#1{{\tt #1}} % P for Program text. +\def\flagpage#1#2{ + \null + \vfill + \centerline{\fwfontboldd #1} + \vskip 1cm + \centerline{\fwfontboldd #2} + \vfill + \null + \vfill +} + +%====================== End of FunnelWeb TeX Definitions ======================= + +\fwvskip{40} +\fwcenterline{\fwfonttitle{Powers:}} +\fwcenterline{\fwfonttitle{An Example of}} +\fwcenterline{\fwfonttitle{A Short}} +\fwcenterline{\fwfonttitle{FunnelWeb .fw File}} +\fwvskip{10} +\fwcenterline{\fwfontsmalltitle{by Ross Williams}} +\fwcenterline{\fwfontsmalltitle{26 January 1992}} +\fwvskip{20} + +\fwtocstart{} +\fwtoca{1}{FunnelWeb Example Program} +\fwtocb{1.1}{ex16.out} +\fwtocb{1.2}{Pull in packages} +\fwtocb{1.3}{Write out the first p powers of i on a single line} +\fwtocfinish{} + + +\fwseca{1}{FunnelWeb Example Program} + +This program writes out each of the first \fwlit{p} powers of the first \fwlit{n} +integers. These constant parameters are located here so that they are easy to +change. + +\fwbeginmacro +\fwmacroname{Constants}{1}\fwequals \fwodef \fwbtx[n : constant natural := 10; -- How many numbers? (Ans: [1,n]). +p : constant natural := 5; -- How many powers? (Ans: [1,p]).]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwusedin{This macro is invoked in definition 2.} +\fwendmacronotes +\fwendmacro + + +\fwsecb{1.1}{ex16.out} Here is the outline of the program. This FunnelWeb file generates a single +Ada output file called \fwlit{Power.ada}. The main program consists of a loop that +iterates once for each number to be written out. + +\fwbeginmacro +\fwfilename{ex16.out}{2}\fwequals \fwodef \fwmacroname{Pull in packages}{3}\fwbtx[ + +procedure example is + ]fwetx=% +\fwmacroname{Constants}{1}\fwbtx[ +begin -- example + for i in 1..n loop + ]fwetx=% +\fwmacroname{Write out the first p powers of i on a single line}{4}\fwbtx[ + end loop; +end example; +]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwisafile{This macro is attached to an output file.} +\fwendmacronotes +\fwendmacro + + +\fwsecb{1.2}{Pull in packages} In this section, we pull in the packages that this program needs to run. In +fact, all we need is the IO package so that we can write out the results. To use +the IO package, we first of all need to haul it in (\fwlit{with text\_io}) and then +we need to make all its identifiers visible at the top level (\fwlit{use text\_io}). + +\fwbeginmacro +\fwmacroname{Pull in packages}{3}\fwequals \fwodef \fwbtx[with text_io; use text_io;]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwusedin{This macro is invoked in definition 2.} +\fwendmacronotes +\fwendmacro + + +\fwsecb{1.3}{Write out the first p powers of i on a single line} Here is the bit that writes out the first \fwlit{p} powers of \fwlit{i}. The power +values are calculated incrementally in \fwlit{ip} to avoid the use of the +exponentiation operator. + +\fwbeginmacro +\fwmacroname{Write out the first p powers of i on a single line}{4}\fwequals \fwodef \fwbtx[declare + ip : natural := 1; +begin + for power in 1..p loop + ip:=ip*i; + put(natural'image(ip) & " "); + end loop; + new_line; +end;]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwusedin{This macro is invoked in definition 2.} +\fwendmacronotes +\fwendmacro + + +\bye + + +%******************************************************************************* +%* END OF AUTOMATICALLY GENERATED TEX FILE * +%******************************************************************************* + diff --git a/web/funnelAC/answers/generate.lis b/web/funnelAC/answers/generate.lis new file mode 100644 index 0000000000..8588c0fca9 --- /dev/null +++ b/web/funnelAC/answers/generate.lis @@ -0,0 +1,15 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Tangle: Completed sc06.fw. +Tangle: Completed sc08.fw. +Tangle: Completed sc09.fw. +Tangle: Completed sc13e.fwi. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/hi01.lis b/web/funnelAC/answers/hi01.lis new file mode 100644 index 0000000000..58682d7c0d --- /dev/null +++ b/web/funnelAC/answers/hi01.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Tangle: Completed hi01.out. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/hi01.out b/web/funnelAC/answers/hi01.out new file mode 100644 index 0000000000..9ab646f4ff --- /dev/null +++ b/web/funnelAC/answers/hi01.out @@ -0,0 +1,9 @@ + +while the_walrus_is_sleepy do + begin + writeln('zzzzzzz'); + + wake_up_the_walrus(the_walrus); + + writeln('Umpharumpha...'); + end; diff --git a/web/funnelAC/answers/hi02.lis b/web/funnelAC/answers/hi02.lis new file mode 100644 index 0000000000..2c342e0954 --- /dev/null +++ b/web/funnelAC/answers/hi02.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Tangle: Completed hi02.out. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/hi02.out b/web/funnelAC/answers/hi02.out new file mode 100644 index 0000000000..d1a9b3e8cf --- /dev/null +++ b/web/funnelAC/answers/hi02.out @@ -0,0 +1,6 @@ + +while sloth<walrus loop + assert(sloth<walrus,"AWK! sloth>=walrus!!!!!!!"); + assert(timer<timermax,"AWK! timer>=timermax!!!"); + inc(sloth); +end loop diff --git a/web/funnelAC/answers/hi03.lis b/web/funnelAC/answers/hi03.lis new file mode 100644 index 0000000000..80014f814d --- /dev/null +++ b/web/funnelAC/answers/hi03.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Tangle: Completed hi03.out. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/hi03.out b/web/funnelAC/answers/hi03.out new file mode 100644 index 0000000000..5b1b66b552 --- /dev/null +++ b/web/funnelAC/answers/hi03.out @@ -0,0 +1,6 @@ + +while sloth<walrus loop + assert(sloth<walrus,"AWK! sloth>=walrus!!!!!!!"); + assert(timer<timermax,"AWK! timer>=timermax!!!"); + inc(sloth); +end loop diff --git a/web/funnelAC/answers/hi04.lis b/web/funnelAC/answers/hi04.lis new file mode 100644 index 0000000000..c215c0f14b --- /dev/null +++ b/web/funnelAC/answers/hi04.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Tangle: Completed hi04.out. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/hi04.out b/web/funnelAC/answers/hi04.out new file mode 100644 index 0000000000..7069503f68 --- /dev/null +++ b/web/funnelAC/answers/hi04.out @@ -0,0 +1,3 @@ +------- +get_command_line(comline) +------- diff --git a/web/funnelAC/answers/hi05.lis b/web/funnelAC/answers/hi05.lis new file mode 100644 index 0000000000..422de4e7eb --- /dev/null +++ b/web/funnelAC/answers/hi05.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Tangle: Completed hi05.out. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/hi05.out b/web/funnelAC/answers/hi05.out new file mode 100644 index 0000000000..d2143079f1 --- /dev/null +++ b/web/funnelAC/answers/hi05.out @@ -0,0 +1,7 @@ +Unreadable Postscript code +/print { push pop pop push turn around and jump up and down and print it} def + +Unreadable Postscript code +/zap { push pop pop push turn around and jump up and down and print it} def + +Unreadable Postscript code diff --git a/web/funnelAC/answers/hi06.lis b/web/funnelAC/answers/hi06.lis new file mode 100644 index 0000000000..e053ffc8bf --- /dev/null +++ b/web/funnelAC/answers/hi06.lis @@ -0,0 +1,13 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Tangle: Completed hi06a.out. +Tangle: Completed hi06b.out. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/hi06a.out b/web/funnelAC/answers/hi06a.out new file mode 100644 index 0000000000..b6645c6f7d --- /dev/null +++ b/web/funnelAC/answers/hi06a.out @@ -0,0 +1,3 @@ +DCL commands +copy printme.txt unixnode:: +DCL commands diff --git a/web/funnelAC/answers/hi06b.out b/web/funnelAC/answers/hi06b.out new file mode 100644 index 0000000000..d26ba0f49c --- /dev/null +++ b/web/funnelAC/answers/hi06b.out @@ -0,0 +1,3 @@ +unix commands +print printme.txt +unix commands diff --git a/web/funnelAC/answers/hi07.lis b/web/funnelAC/answers/hi07.lis new file mode 100644 index 0000000000..5a23a3ee91 --- /dev/null +++ b/web/funnelAC/answers/hi07.lis @@ -0,0 +1,13 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Tangle: Completed hi07a.out. +Tangle: Completed hi07b.out. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/hi07a.out b/web/funnelAC/answers/hi07a.out new file mode 100644 index 0000000000..052b1c079a --- /dev/null +++ b/web/funnelAC/answers/hi07a.out @@ -0,0 +1,4 @@ +First lump of text shared by both documents. +Text for first document +Second lump of text shared by both documents. + diff --git a/web/funnelAC/answers/hi07b.out b/web/funnelAC/answers/hi07b.out new file mode 100644 index 0000000000..8c94004628 --- /dev/null +++ b/web/funnelAC/answers/hi07b.out @@ -0,0 +1,4 @@ +First lump of text shared by both documents. +Text for second document +Second lump of text shared by both documents. + diff --git a/web/funnelAC/answers/hi08.lis b/web/funnelAC/answers/hi08.lis new file mode 100644 index 0000000000..e0fa58dddb --- /dev/null +++ b/web/funnelAC/answers/hi08.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Tangle: Completed hi08.out. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/hi08.out b/web/funnelAC/answers/hi08.out new file mode 100644 index 0000000000..87b344c98f --- /dev/null +++ b/web/funnelAC/answers/hi08.out @@ -0,0 +1,8 @@ +1992 ANNUAL REPORT TO Shareholders +================================== +This has been a very good year for The Very Big Corporation of America. +With your help, we have been able to successfully +screw the customers for every cent they have. +With gross earnings approaching six trillion dollars, we have been able to +increase dividends. +We expect to have an even better year next year. diff --git a/web/funnelAC/answers/hi09.lis b/web/funnelAC/answers/hi09.lis new file mode 100644 index 0000000000..fb069219c0 --- /dev/null +++ b/web/funnelAC/answers/hi09.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Tangle: Completed hi09.out. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/hi09.out b/web/funnelAC/answers/hi09.out new file mode 100644 index 0000000000..0f7aeebe64 --- /dev/null +++ b/web/funnelAC/answers/hi09.out @@ -0,0 +1,98 @@ + +[inherit ('NaryTree'), environment ('NaryTreeSet')] + +module NaryTreeSet; + +type NaryTreeSet = ^NaryTreeSetRecord; + NaryTreeSetRecord = record + Member: NaryTree; + Next: NaryTreeSet; + end; + +procedure NullNaryTreeSet (var Result: NaryTreeSet); +begin new (Result); +Result^.Member := (- MaxInt)::NaryTree; +Result^.Next := nil end; + +function IsNullNaryTreeSet (S: NaryTreeSet): boolean; +begin IsNullNaryTreeSet := S^.Member::integer = - MaxInt end; + +procedure ForEachNaryTree (S: NaryTreeSet; procedure DoIt (i: NaryTree)); +var ThisS, NextS: NaryTreeSet; +begin ThisS := S; +while ThisS^.Member::integer <> - MaxInt do + begin NextS := ThisS^.Next; + DoIt (ThisS^.Member); + ThisS := NextS end; +end; + +function FirstNaryTree (S: NaryTreeSet): NaryTree; +begin FirstNaryTree := S^.Member end; + +function IsNaryTreeInSet (i: NaryTree; S: NaryTreeSet): boolean; + procedure TestEquals (j: NaryTree); + begin if EqualNaryTree (i, j) then IsNaryTreeInSet := true; end; +begin IsNaryTreeInSet := false; ForEachNaryTree (S, TestEquals); end; + +function IncludesNaryTreeSet (S1, S2: NaryTreeSet): boolean; +var Result: boolean; + procedure TestIfInS1 (i: NaryTree); + begin if Result then if not IsNaryTreeInSet (i, S1) then Result := false; end; +begin Result := true; +ForEachNaryTree (S2, TestIfInS1); +IncludesNaryTreeSet := Result end; + +function DisjointNaryTreeSets (S1, S2: NaryTreeSet): boolean; +var Result: boolean; + procedure TestIfInS1 (i: NaryTree); + begin if Result then if IsNaryTreeInSet (i, S1) then Result := false; end; +begin Result := true; +ForEachNaryTree (S2, TestIfInS1); +DisjointNaryTreeSets := Result end; + +function EqualNaryTreeSet (S1, S2: NaryTreeSet): boolean; +begin +EqualNaryTreeSet := IncludesNaryTreeSet (S1, S2) and IncludesNaryTreeSet (S2, S1); +end; + +procedure InsertNaryTree (i: NaryTree; var S: NaryTreeSet); +var This, Pred, Succ: NaryTreeSet; +begin +if not IsNaryTreeInSet (i, S) then + begin + Pred := nil; Succ := S; + while Succ^.Member::integer > i::integer do begin + Pred := Succ; Succ := Succ^.Next end; + if Succ^.Member::integer < i::integer then begin + new (This); This^.Next := Succ; This^.Member := i; + if Pred <> nil then Pred^.Next := This else S := This; + end; + end; +end; + +procedure InsertNaryTrees (S1: NaryTreeSet; var S2: NaryTreeSet); +var This, Pred, Succ: NaryTreeSet; + procedure AddNaryTree (i: NaryTree); + begin InsertNaryTree (i, S2) end; +begin +ForEachNaryTree (S1, AddNaryTree); +end; + +procedure RemoveNaryTree (i: NaryTree; var S: NaryTreeSet); +var Pred, This: NaryTreeSet; +begin +Pred := nil; This := S; +while not EqualNaryTree (This^.Member, i) do begin + Pred := This; This := This^.Next end; +if Pred <> nil then Pred^.Next := This^.Next else S := This^.Next; +Dispose (This); +end; + +procedure DisposeNaryTreeSet (var S: NaryTreeSet); +var Old: NaryTreeSet; +begin +while S <> nil do begin Old := S; S := S^.Next; Dispose (Old) end; +end; + +end. + diff --git a/web/funnelAC/answers/hi10.lis b/web/funnelAC/answers/hi10.lis new file mode 100644 index 0000000000..fbe12da983 --- /dev/null +++ b/web/funnelAC/answers/hi10.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Tangle: Completed hi10.out. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/hi10.out b/web/funnelAC/answers/hi10.out new file mode 100644 index 0000000000..a7ec61c0f6 --- /dev/null +++ b/web/funnelAC/answers/hi10.out @@ -0,0 +1,23 @@ + +/* Pre: sorted(b). */ +i=1; p=1; +while (i != N) + { + /* Invariant: sorted(b) and 1<=i<=N and */ + /* p is len of longest run in b[1..i]. */ + i++; if (b[i] != b[i-p]) p++; + } +/* Post: sorted(b) and p is the length of the longest run in b[1..N]. */ + + +bool comp(p,q) +char *p,*q; +{ + while (TRUE) + { + if (*p != *q ) return FALSE; + if (*p == '\0') return TRUE; + p++; q++; + } +} + diff --git a/web/funnelAC/answers/pr01.lis b/web/funnelAC/answers/pr01.lis new file mode 100644 index 0000000000..140aba1cb0 --- /dev/null +++ b/web/funnelAC/answers/pr01.lis @@ -0,0 +1,457 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 50 52 30 31 3A 20 54 65 73 74 20 74 68 65 20 69 | PR01: Test the i | +| 6E 6C 69 6E 65 20 74 79 70 65 73 65 74 74 69 6E | nline typesettin | +| 67 20 66 65 61 74 75 72 65 73 2E 0A 0A 31 2E 20 | g features...1. | +| 46 69 72 73 74 20 77 65 20 74 65 73 74 20 74 68 | First we test th | +| 65 20 6C 65 67 61 6C 20 75 73 65 20 6F 66 20 74 | e legal use of t | +| 68 65 20 40 7B 6C 69 74 65 72 61 6C 40 7D 20 63 | he @{literal@} c | +| 6F 6E 73 74 72 75 63 74 2E 0A 0A 32 2E 54 65 73 | onstruct...2.Tes | +| 74 20 40 7B 40 7D 20 28 69 6C 6C 65 67 61 6C 29 | t @{@} (illegal) | +| 2E 0A 40 41 40 3C 45 72 72 6F 72 20 52 65 63 6F | ..@A@<Error Reco | +| 76 65 72 79 20 50 6F 69 6E 74 40 3E 0A 0A 33 2E | very Point@>..3. | +| 20 54 65 73 74 20 74 68 65 20 63 6F 6E 73 74 72 | Test the constr | +| 75 63 74 20 40 7B 61 63 72 6F 73 73 0A 20 20 20 | uct @{across. | +| 6D 6F 72 65 20 74 68 61 6E 20 6F 6E 65 20 6C 69 | more than one li | +| 6E 65 40 7D 2E 0A 0A 34 2E 20 4E 6F 77 20 77 65 | ne@}...4. Now we | +| 20 74 65 73 74 20 74 68 65 20 63 6F 6E 73 74 72 | test the constr | +| 75 63 74 20 77 69 74 68 20 6E 6F 6E 2D 74 65 78 | uct with non-tex | +| 74 20 66 6F 6C 6C 6F 77 69 6E 67 20 69 74 2E 0A | t following it.. | +| 20 20 20 40 7B 40 3C 73 6C 6F 74 68 40 3E 40 7D | @{@<sloth@>@} | +| 0A 40 41 40 3C 45 72 72 6F 72 20 52 65 63 6F 76 | .@A@<Error Recov | +| 65 72 79 20 50 6F 69 6E 74 40 3E 0A 20 20 20 40 | ery Point@>. @ | +| 7B 20 20 20 20 20 40 3E 20 20 20 40 7D 0A 40 41 | { @> @}.@A | +| 40 3C 45 72 72 6F 72 20 52 65 63 6F 76 65 72 79 | @<Error Recovery | +| 20 50 6F 69 6E 74 40 3E 0A 0A 35 2E 20 54 65 73 | Point@>..5. Tes | +| 74 20 74 68 65 20 6C 65 67 61 6C 20 75 73 65 20 | t the legal use | +| 6F 66 20 74 68 65 20 40 2F 65 6D 70 68 61 73 69 | of the @/emphasi | +| 73 40 2F 20 63 6F 6E 73 74 72 75 63 74 2E 0A 0A | s@/ construct... | +| 36 2E 54 65 73 74 20 40 2F 40 2F 20 28 69 6C 6C | 6.Test @/@/ (ill | +| 65 67 61 6C 29 2E 0A 40 41 40 3C 45 72 72 6F 72 | egal)..@A@<Error | +| 20 52 65 63 6F 76 65 72 79 20 50 6F 69 6E 74 40 | Recovery Point@ | +| 3E 0A 0A 37 2E 20 54 65 73 74 20 74 68 65 20 63 | >..7. Test the c | +| 6F 6E 73 74 72 75 63 74 20 40 2F 61 63 72 6F 73 | onstruct @/acros | +| 73 0A 20 20 20 6D 6F 72 65 20 74 68 61 6E 20 6F | s. more than o | +| 6E 65 20 6C 69 6E 65 40 2F 2E 0A 0A 38 2E 20 4E | ne line@/...8. N | +| 6F 77 20 77 65 20 74 65 73 74 20 74 68 65 20 63 | ow we test the c | +| 6F 6E 73 74 72 75 63 74 20 77 69 74 68 20 6E 6F | onstruct with no | +| 6E 2D 74 65 78 74 20 66 6F 6C 6C 6F 77 69 6E 67 | n-text following | +| 20 69 74 2E 0A 20 20 20 40 2F 40 3C 73 6C 6F 74 | it.. @/@<slot | +| 68 40 3E 40 2F 0A 40 41 40 3C 45 72 72 6F 72 20 | h@>@/.@A@<Error | +| 52 65 63 6F 76 65 72 79 20 50 6F 69 6E 74 40 3E | Recovery Point@> | +| 0A 20 20 20 40 2F 20 20 20 20 20 40 3C 20 20 20 | . @/ @< | +| 40 2F 0A 0A 0A 0A | @/.... | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| PR01: Test the inline typesetting features.<010> +00002 00002| <010> +00003 00003| 1. First we test the legal use of the @{literal@} construct.<010> +00004 00004| <010> +00005 00005| 2.Test @{@} (illegal).<010> +00006 00006| @A@<Error Recovery Point@><010> +00007 00007| <010> +00008 00008| 3. Test the construct @{across<010> +00009 00009| more than one line@}.<010> +00010 00010| <010> +00011 00011| 4. Now we test the construct with non-text following it.<010> +00012 00012| @{@<sloth@>@}<010> +00013 00013| @A@<Error Recovery Point@><010> +00014 00014| @{ @> @}<010> +00015 00015| @A@<Error Recovery Point@><010> +00016 00016| <010> +00017 00017| 5. Test the legal use of the @/emphasis@/ construct.<010> +00018 00018| <010> +00019 00019| 6.Test @/@/ (illegal).<010> +00020 00020| @A@<Error Recovery Point@><010> +00021 00021| <010> +00022 00022| 7. Test the construct @/across<010> +00023 00023| more than one line@/.<010> +00024 00024| <010> +00025 00025| 8. Now we test the construct with non-text following it.<010> +00026 00026| @/@<sloth@>@/<010> +00027 00027| @A@<Error Recovery Point@><010> +00028 00028| @/ @< @/<010> +00029 00029| <010> +00030 00030| <010> +00031 00031| <010> +00032 00032| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 73 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="PR01: Test the inline typesetting features.<010> +<010> +1. First we test the legal use of the " +0003[39]: @{ Open defn. +0003[41]: Text. Text scrap[Grey]="literal" +0003[48]: @} Close defn. +0003[50]: Text. Text scrap[Grey]=" construct.<010> +<010> +2.Test " +0005[08]: @{ Open defn. +0005[10]: @} Close defn. +0005[12]: Text. Text scrap[Grey]=" (illegal).<010> +" +0006[01]: @A New section (Level 1). +0006[03]: @< Open name. +0006[05]: Text. Text scrap[Grey]="Error Recovery Point" +0006[25]: @> Close name. +0006[27]: Text. Text scrap[Grey]="<010> +<010> +3. Test the construct " +0008[23]: @{ Open defn. +0008[25]: Text. Text scrap[Grey]="across<010> + more than one line" +0009[22]: @} Close defn. +0009[24]: Text. Text scrap[Grey]=".<010> +<010> +4. Now we test the construct with non-text following it.<010> + " +0012[04]: @{ Open defn. +0012[06]: @< Open name. +0012[08]: Text. Text scrap[Grey]="sloth" +0012[13]: @> Close name. +0012[15]: @} Close defn. +0012[17]: Text. Text scrap[White]="<010> +" +0013[01]: @A New section (Level 1). +0013[03]: @< Open name. +0013[05]: Text. Text scrap[Grey]="Error Recovery Point" +0013[25]: @> Close name. +0013[27]: Text. Text scrap[White]="<010> + " +0014[04]: @{ Open defn. +0014[06]: Text. Text scrap[White]=" " +0014[11]: @> Close name. +0014[13]: Text. Text scrap[White]=" " +0014[16]: @} Close defn. +0014[18]: Text. Text scrap[White]="<010> +" +0015[01]: @A New section (Level 1). +0015[03]: @< Open name. +0015[05]: Text. Text scrap[Grey]="Error Recovery Point" +0015[25]: @> Close name. +0015[27]: Text. Text scrap[Grey]="<010> +<010> +5. Test the legal use of the " +0017[30]: @/ Emphasise. +0017[32]: Text. Text scrap[Grey]="emphasis" +0017[40]: @/ Emphasise. +0017[42]: Text. Text scrap[Grey]=" construct.<010> +<010> +6.Test " +0019[08]: @/ Emphasise. +0019[10]: @/ Emphasise. +0019[12]: Text. Text scrap[Grey]=" (illegal).<010> +" +0020[01]: @A New section (Level 1). +0020[03]: @< Open name. +0020[05]: Text. Text scrap[Grey]="Error Recovery Point" +0020[25]: @> Close name. +0020[27]: Text. Text scrap[Grey]="<010> +<010> +7. Test the construct " +0022[23]: @/ Emphasise. +0022[25]: Text. Text scrap[Grey]="across<010> + more than one line" +0023[22]: @/ Emphasise. +0023[24]: Text. Text scrap[Grey]=".<010> +<010> +8. Now we test the construct with non-text following it.<010> + " +0026[04]: @/ Emphasise. +0026[06]: @< Open name. +0026[08]: Text. Text scrap[Grey]="sloth" +0026[13]: @> Close name. +0026[15]: @/ Emphasise. +0026[17]: Text. Text scrap[White]="<010> +" +0027[01]: @A New section (Level 1). +0027[03]: @< Open name. +0027[05]: Text. Text scrap[Grey]="Error Recovery Point" +0027[25]: @> Close name. +0027[27]: Text. Text scrap[White]="<010> + " +0028[04]: @/ Emphasise. +0028[06]: Text. Text scrap[White]=" " +0028[11]: @< Open name. +0028[13]: Text. Text scrap[White]=" " +0028[16]: @/ Emphasise. +0028[18]: Text. Text scrap[White]="<010> +<010> +<010> +<010> +" +0032[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + + +========================== Start of MACRO TABLE DUMP =========================== + + +=========================== End of MACRO TABLE DUMP ============================ + + +========================= Start of DOCUMENT LIST DUMP ========================== + + +TEXT COMPONENT: Pos(L,C)=(1,1). + +-- Start of Text Scrap List -- +Text scrap[Grey]="PR01: Test the inline typesetting features.<010> +<010> +1. First we test the legal use of the " +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: Open literal. + +TEXT COMPONENT: Pos(L,C)=(3,41). + +-- Start of Text Scrap List -- +Text scrap[Grey]="literal" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: Close literal. + +TEXT COMPONENT: Pos(L,C)=(3,50). + +-- Start of Text Scrap List -- +Text scrap[Grey]=" construct.<010> +<010> +2.Test " +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: Open literal. + +TYPESETTER DIRECTIVE COMPONENT: + Section "1", Section name="Error Recovery Point". + +TEXT COMPONENT: Pos(L,C)=(6,27). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +3. Test the construct " +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: Open literal. + +TEXT COMPONENT: Pos(L,C)=(8,25). + +-- Start of Text Scrap List -- +Text scrap[Grey]="across<010> + more than one line" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: Close literal. + +TEXT COMPONENT: Pos(L,C)=(9,24). + +-- Start of Text Scrap List -- +Text scrap[Grey]=".<010> +<010> +4. Now we test the construct with non-text following it.<010> + " +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: Open literal. + +TYPESETTER DIRECTIVE COMPONENT: + Section "2", Section name="Error Recovery Point". + +TEXT COMPONENT: Pos(L,C)=(13,27). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> + " +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: Open literal. + +TEXT COMPONENT: Pos(L,C)=(14,6). + +-- Start of Text Scrap List -- +Text scrap[White]=" " +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "3", Section name="Error Recovery Point". + +TEXT COMPONENT: Pos(L,C)=(15,27). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +5. Test the legal use of the " +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: Open emphasise. + +TEXT COMPONENT: Pos(L,C)=(17,32). + +-- Start of Text Scrap List -- +Text scrap[Grey]="emphasis" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: Close emphasise. + +TEXT COMPONENT: Pos(L,C)=(17,42). + +-- Start of Text Scrap List -- +Text scrap[Grey]=" construct.<010> +<010> +6.Test " +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: Open emphasise. + +TYPESETTER DIRECTIVE COMPONENT: + Section "4", Section name="Error Recovery Point". + +TEXT COMPONENT: Pos(L,C)=(20,27). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +7. Test the construct " +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: Open emphasise. + +TEXT COMPONENT: Pos(L,C)=(22,25). + +-- Start of Text Scrap List -- +Text scrap[Grey]="across<010> + more than one line" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: Close emphasise. + +TEXT COMPONENT: Pos(L,C)=(23,24). + +-- Start of Text Scrap List -- +Text scrap[Grey]=".<010> +<010> +8. Now we test the construct with non-text following it.<010> + " +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: Open emphasise. + +TYPESETTER DIRECTIVE COMPONENT: + Section "5", Section name="Error Recovery Point". + +TEXT COMPONENT: Pos(L,C)=(27,27). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> + " +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: Open emphasise. + +TEXT COMPONENT: Pos(L,C)=(28,6). + +-- Start of Text Scrap List -- +Text scrap[White]=" " +--- End of Text Scrap List --- + + +========================== End of DOCUMENT LIST DUMP =========================== + + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| PR01: Test the inline typesetting features. + 2 2| + 3 3| 1. First we test the legal use of the @{literal@} construct. + 4 4| + 5 5| 2.Test @{@} (illegal). + Error|..........^Text expected after open literal token "@{". + |..........^Sorry, empty literal strings are not allowed. + |..........^Skipping after error to the next major construct... + 6 6| @A@<Error Recovery Point@> + |.^...skipped to here after the error. + 7 7| + 8 8| 3. Test the construct @{across + 9 9| more than one line@}. + 10 10| + 11 11| 4. Now we test the construct with non-text following it. + 12 12| @{@<sloth@>@} + Error|......^Text expected after open literal token "@{". + |......^Skipping after error to the next major construct... + 13 13| @A@<Error Recovery Point@> + |.^...skipped to here after the error. + 14 14| @{ @> @} + Error|...........^Expecting '@}'. + |...........^Skipping after error to the next major construct... + 15 15| @A@<Error Recovery Point@> + |.^...skipped to here after the error. + 16 16| + 17 17| 5. Test the legal use of the @/emphasis@/ construct. + 18 18| + 19 19| 6.Test @/@/ (illegal). + Error|..........^Text expected after open emphasise token "@/". + |..........^Sorry, empty emphasised strings are not allowed. + |..........^Skipping after error to the next major construct... + 20 20| @A@<Error Recovery Point@> + |.^...skipped to here after the error. + 21 21| + 22 22| 7. Test the construct @/across + 23 23| more than one line@/. + 24 24| + 25 25| 8. Now we test the construct with non-text following it. + 26 26| @/@<sloth@>@/ + Error|......^Text expected after open emphasise token "@/". + |......^Skipping after error to the next major construct... + 27 27| @A@<Error Recovery Point@> + |.^...skipped to here after the error. + 28 28| @/ @< @/ + Error|...........^Expecting '@/'. + |...........^Skipping after error to the next major construct... + 29 29| + 30 30| + 31 31| + | <End-Of-File> + |.^...skipped to here after the error. +------------+------------------------------------------------------------------- + +There were 6 Errors. diff --git a/web/funnelAC/answers/pr02.lis b/web/funnelAC/answers/pr02.lis new file mode 100644 index 0000000000..62f932c0a9 --- /dev/null +++ b/web/funnelAC/answers/pr02.lis @@ -0,0 +1,163 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 50 52 30 32 3A 20 54 65 73 74 20 74 68 65 20 70 | PR02: Test the p | +| 61 72 73 69 6E 67 20 6F 66 20 74 79 70 65 73 65 | arsing of typese | +| 74 74 65 72 20 64 69 72 65 63 74 69 76 65 73 2E | tter directives. | +| 0A 0A 31 2E 20 54 65 73 74 20 70 61 72 73 69 6E | ..1. Test parsin | +| 67 20 6F 66 20 6E 65 77 20 70 61 67 65 20 64 69 | g of new page di | +| 72 65 63 74 69 76 65 2E 0A 40 74 20 6E 65 77 5F | rective..@t new_ | +| 70 61 67 65 0A 0A 32 2E 20 54 65 73 74 20 70 61 | page..2. Test pa | +| 72 73 69 6E 67 20 6F 66 20 74 61 62 6C 65 20 6F | rsing of table o | +| 66 20 63 6F 6E 74 65 6E 74 73 20 64 69 72 65 63 | f contents direc | +| 74 69 76 65 2E 0A 40 74 20 74 61 62 6C 65 5F 6F | tive..@t table_o | +| 66 5F 63 6F 6E 74 65 6E 74 73 0A 0A 33 2E 20 54 | f_contents..3. T | +| 65 73 74 20 70 61 72 73 69 6E 67 20 6F 66 20 76 | est parsing of v | +| 73 6B 69 70 20 64 69 72 65 63 74 69 76 65 2E 0A | skip directive.. | +| 40 74 20 76 73 6B 69 70 20 33 32 20 6D 6D 0A 0A | @t vskip 32 mm.. | +| 34 2E 20 54 65 73 74 20 70 61 72 73 69 6E 67 20 | 4. Test parsing | +| 6F 66 20 74 69 74 6C 65 20 64 69 72 65 63 74 69 | of title directi | +| 76 65 2E 0A 40 74 20 74 69 74 6C 65 20 74 69 74 | ve..@t title tit | +| 6C 65 66 6F 6E 74 20 6C 65 66 74 20 22 53 6C 6F | lefont left "Slo | +| 74 68 22 0A 0A | th".. | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| PR02: Test the parsing of typesetter directives.<010> +00002 00002| <010> +00003 00003| 1. Test parsing of new page directive.<010> +00004 00004| @t new_page<010> +00005 00005| <010> +00006 00006| 2. Test parsing of table of contents directive.<010> +00007 00007| @t table_of_contents<010> +00008 00008| <010> +00009 00009| 3. Test parsing of vskip directive.<010> +00010 00010| @t vskip 32 mm<010> +00011 00011| <010> +00012 00012| 4. Test parsing of title directive.<010> +00013 00013| @t title titlefont left "Sloth"<010> +00014 00014| <010> +00015 00015| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 10 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="PR02: Test the parsing of typesetter directives.<010> +<010> +1. Test parsing of new page directive.<010> +" +0004[01]: @t.. Newpage. +0005[01]: Text. Text scrap[Grey]="<010> +2. Test parsing of table of contents directive.<010> +" +0007[01]: @t.. TOC. +0008[01]: Text. Text scrap[Grey]="<010> +3. Test parsing of vskip directive.<010> +" +0010[01]: @t.. Vertical skip. Vertical space skipped=32mm. +0011[01]: Text. Text scrap[Grey]="<010> +4. Test parsing of title directive.<010> +" +0013[01]: @t.. Title. Font=Title, Alignment=Left. Title text follows: +Text scrap[Grey]="Sloth" +0014[01]: Text. Text scrap[White]="<010> +" +0015[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + + +========================== Start of MACRO TABLE DUMP =========================== + + +=========================== End of MACRO TABLE DUMP ============================ + + +========================= Start of DOCUMENT LIST DUMP ========================== + + +TEXT COMPONENT: Pos(L,C)=(1,1). + +-- Start of Text Scrap List -- +Text scrap[Grey]="PR02: Test the parsing of typesetter directives.<010> +<010> +1. Test parsing of new page directive.<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: New page. + +TEXT COMPONENT: Pos(L,C)=(5,1). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +2. Test parsing of table of contents directive.<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: Table of contents. + +TEXT COMPONENT: Pos(L,C)=(8,1). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +3. Test parsing of vskip directive.<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: Vertical skip by 32 mm. + +TEXT COMPONENT: Pos(L,C)=(11,1). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +4. Test parsing of title directive.<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: Font=Title, Alignment=Left. Title text follows: +Text scrap[Grey]="Sloth" + +TEXT COMPONENT: Pos(L,C)=(14,1). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +========================== End of DOCUMENT LIST DUMP =========================== + +E: No macros defined. +E: No output files specified. + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +There were 2 Errors. diff --git a/web/funnelAC/answers/pr03.lis b/web/funnelAC/answers/pr03.lis new file mode 100644 index 0000000000..437af4be44 --- /dev/null +++ b/web/funnelAC/answers/pr03.lis @@ -0,0 +1,469 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 50 52 30 33 3A 20 54 65 73 74 20 74 68 65 20 70 | PR03: Test the p | +| 61 72 73 69 6E 67 20 61 6E 64 20 73 65 6D 61 6E | arsing and seman | +| 74 69 63 73 20 6F 66 20 73 65 63 74 69 6F 6E 73 | tics of sections | +| 2E 0A 0A 34 2E 20 54 65 73 74 20 66 69 72 73 74 | ...4. Test first | +| 20 73 65 63 74 69 6F 6E 20 6F 66 20 64 6F 63 75 | section of docu | +| 6D 65 6E 74 20 69 73 20 6E 6F 74 20 3C 73 70 65 | ment is not <spe | +| 63 69 61 6C 3E 41 2E 0A 40 42 40 3C 54 68 69 73 | cial>A..@B@<This | +| 20 73 65 63 74 69 6F 6E 20 69 73 20 6F 75 74 20 | section is out | +| 6F 66 20 6F 72 64 65 72 20 28 61 6E 64 20 73 6F | of order (and so | +| 20 69 73 20 74 68 69 73 20 74 65 73 74 21 29 40 | is this test!)@ | +| 3E 0A 0A 31 2E 20 54 65 73 74 20 73 65 63 74 69 | >..1. Test secti | +| 6F 6E 20 77 69 74 68 20 6E 6F 20 6E 61 6D 65 2E | on with no name. | +| 0A 40 41 20 54 68 69 73 20 73 65 63 74 69 6F 6E | .@A This section | +| 20 68 61 73 20 6E 6F 20 6E 61 6D 65 2E 0A 40 24 | has no name..@$ | +| 40 3C 54 68 65 20 73 65 63 74 69 6F 6E 20 6E 61 | @<The section na | +| 6D 65 20 69 6E 68 65 72 69 74 73 20 74 68 65 20 | me inherits the | +| 6E 61 6D 65 20 6F 66 20 74 68 69 73 20 6D 61 63 | name of this mac | +| 72 6F 40 3E 40 7B 57 61 6C 72 75 73 40 7D 0A 0A | ro@>@{Walrus@}.. | +| 32 2E 20 54 65 73 74 20 73 65 63 74 69 6F 6E 20 | 2. Test section | +| 77 69 74 68 20 61 20 6E 61 6D 65 0A 40 41 40 3C | with a name.@A@< | +| 54 68 69 73 20 73 65 63 74 69 6F 6E 20 68 61 73 | This section has | +| 20 6E 6F 20 6E 61 6D 65 2E 40 3E 0A 0A 33 2E 20 | no name.@>..3. | +| 54 65 73 74 20 74 68 65 20 65 6E 74 69 72 65 20 | Test the entire | +| 68 69 65 72 61 72 63 68 79 2E 0A 40 41 40 3C 4F | hierarchy..@A@<O | +| 6E 65 40 3E 0A 40 42 40 3C 54 77 6F 40 3E 0A 40 | ne@>.@B@<Two@>.@ | +| 43 40 3C 54 68 72 65 65 40 3E 0A 40 44 40 3C 46 | C@<Three@>.@D@<F | +| 6F 75 72 40 3E 0A 40 45 40 3C 46 69 76 65 40 3E | our@>.@E@<Five@> | +| 0A 0A 35 2E 20 54 65 73 74 20 64 65 74 65 63 74 | ..5. Test detect | +| 69 6F 6E 20 6F 66 20 64 69 73 63 6F 6E 74 69 6E | ion of discontin | +| 75 69 74 79 20 69 6E 20 6C 65 76 65 6C 73 2E 0A | uity in levels.. | +| 40 41 40 3C 4F 6E 65 40 3E 0A 40 43 40 3C 54 68 | @A@<One@>.@C@<Th | +| 72 65 65 40 3E 0A 40 45 40 3C 46 69 76 65 40 3E | ree@>.@E@<Five@> | +| 0A 0A 40 41 40 3C 4F 6E 65 40 3E 0A 40 42 40 3C | ..@A@<One@>.@B@< | +| 54 68 72 65 65 40 3E 0A 40 44 40 3C 46 69 76 65 | Three@>.@D@<Five | +| 40 3E 0A | @>. | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| PR03: Test the parsing and semantics of sections.<010> +00002 00002| <010> +00003 00003| 4. Test first section of document is not <special>A.<010> +00004 00004| @B@<This section is out of order (and so is this test!)@><010> +00005 00005| <010> +00006 00006| 1. Test section with no name.<010> +00007 00007| @A This section has no name.<010> +00008 00008| @$@<The section name inherits the name of this macro@>@{Walrus@}<010> +00009 00009| <010> +00010 00010| 2. Test section with a name<010> +00011 00011| @A@<This section has no name.@><010> +00012 00012| <010> +00013 00013| 3. Test the entire hierarchy.<010> +00014 00014| @A@<One@><010> +00015 00015| @B@<Two@><010> +00016 00016| @C@<Three@><010> +00017 00017| @D@<Four@><010> +00018 00018| @E@<Five@><010> +00019 00019| <010> +00020 00020| 5. Test detection of discontinuity in levels.<010> +00021 00021| @A@<One@><010> +00022 00022| @C@<Three@><010> +00023 00023| @E@<Five@><010> +00024 00024| <010> +00025 00025| @A@<One@><010> +00026 00026| @B@<Three@><010> +00027 00027| @D@<Five@><010> +00028 00028| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 77 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="PR03: Test the parsing and semantics of sections.<010> +<010> +4. Test first section of document is not <special>A.<010> +" +0004[01]: @B New section (Level 2). +0004[03]: @< Open name. +0004[05]: Text. Text scrap[Grey]="This section is out of order (and so is this test!)" +0004[56]: @> Close name. +0004[58]: Text. Text scrap[Grey]="<010> +<010> +1. Test section with no name.<010> +" +0007[01]: @A New section (Level 1). +0007[03]: Text. Text scrap[Grey]=" This section has no name.<010> +" +0008[01]: @$ Macro defn. +0008[03]: @< Open name. +0008[05]: Text. Text scrap[Grey]="The section name inherits the name of this macro" +0008[53]: @> Close name. +0008[55]: @{ Open defn. +0008[57]: Text. Text scrap[Grey]="Walrus" +0008[63]: @} Close defn. +0008[65]: Text. Text scrap[Grey]="<010> +<010> +2. Test section with a name<010> +" +0011[01]: @A New section (Level 1). +0011[03]: @< Open name. +0011[05]: Text. Text scrap[Grey]="This section has no name." +0011[30]: @> Close name. +0011[32]: Text. Text scrap[Grey]="<010> +<010> +3. Test the entire hierarchy.<010> +" +0014[01]: @A New section (Level 1). +0014[03]: @< Open name. +0014[05]: Text. Text scrap[Grey]="One" +0014[08]: @> Close name. +0014[10]: Text. Text scrap[White]="<010> +" +0015[01]: @B New section (Level 2). +0015[03]: @< Open name. +0015[05]: Text. Text scrap[Grey]="Two" +0015[08]: @> Close name. +0015[10]: Text. Text scrap[White]="<010> +" +0016[01]: @C New section (Level 3). +0016[03]: @< Open name. +0016[05]: Text. Text scrap[Grey]="Three" +0016[10]: @> Close name. +0016[12]: Text. Text scrap[White]="<010> +" +0017[01]: @D New section (Level 4). +0017[03]: @< Open name. +0017[05]: Text. Text scrap[Grey]="Four" +0017[09]: @> Close name. +0017[11]: Text. Text scrap[White]="<010> +" +0018[01]: @E New section (Level 5). +0018[03]: @< Open name. +0018[05]: Text. Text scrap[Grey]="Five" +0018[09]: @> Close name. +0018[11]: Text. Text scrap[Grey]="<010> +<010> +5. Test detection of discontinuity in levels.<010> +" +0021[01]: @A New section (Level 1). +0021[03]: @< Open name. +0021[05]: Text. Text scrap[Grey]="One" +0021[08]: @> Close name. +0021[10]: Text. Text scrap[White]="<010> +" +0022[01]: @C New section (Level 3). +0022[03]: @< Open name. +0022[05]: Text. Text scrap[Grey]="Three" +0022[10]: @> Close name. +0022[12]: Text. Text scrap[White]="<010> +" +0023[01]: @E New section (Level 5). +0023[03]: @< Open name. +0023[05]: Text. Text scrap[Grey]="Five" +0023[09]: @> Close name. +0023[11]: Text. Text scrap[White]="<010> +<010> +" +0025[01]: @A New section (Level 1). +0025[03]: @< Open name. +0025[05]: Text. Text scrap[Grey]="One" +0025[08]: @> Close name. +0025[10]: Text. Text scrap[White]="<010> +" +0026[01]: @B New section (Level 2). +0026[03]: @< Open name. +0026[05]: Text. Text scrap[Grey]="Three" +0026[10]: @> Close name. +0026[12]: Text. Text scrap[White]="<010> +" +0027[01]: @D New section (Level 4). +0027[03]: @< Open name. +0027[05]: Text. Text scrap[Grey]="Five" +0027[09]: @> Close name. +0027[11]: Text. Text scrap[White]="<010> +" +0028[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + + +========================== Start of MACRO TABLE DUMP =========================== + + +------------------- Start of Macro Dump -------------------- +Macro Name : "The section name inherits the name of this macro" +Defined? : Yes. +Parameters : 0 +Additive? : No. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=1, Pos(L,C)=(8,3), Expression follows: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Walrus" +------ End Text Element ------ + +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +=========================== End of MACRO TABLE DUMP ============================ + + +========================= Start of DOCUMENT LIST DUMP ========================== + + +TEXT COMPONENT: Pos(L,C)=(1,1). + +-- Start of Text Scrap List -- +Text scrap[Grey]="PR03: Test the parsing and semantics of sections.<010> +<010> +4. Test first section of document is not <special>A.<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "1.2", Section name="This section is out of order (and so is this test!)". + +TEXT COMPONENT: Pos(L,C)=(4,58). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +1. Test section with no name.<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "2", Section name="The section name inherits the name of this macro". + +TEXT COMPONENT: Pos(L,C)=(7,3). + +-- Start of Text Scrap List -- +Text scrap[Grey]=" This section has no name.<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(8,1). +Part 1 of macro @<The section name inherits the name of this macro@>. + +TEXT COMPONENT: Pos(L,C)=(8,65). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +2. Test section with a name<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "3", Section name="This section has no name.". + +TEXT COMPONENT: Pos(L,C)=(11,32). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +3. Test the entire hierarchy.<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "4", Section name="One". + +TEXT COMPONENT: Pos(L,C)=(14,10). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "4.1", Section name="Two". + +TEXT COMPONENT: Pos(L,C)=(15,10). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "4.1.1", Section name="Three". + +TEXT COMPONENT: Pos(L,C)=(16,12). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "4.1.1.1", Section name="Four". + +TEXT COMPONENT: Pos(L,C)=(17,11). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "4.1.1.1.1", Section name="Five". + +TEXT COMPONENT: Pos(L,C)=(18,11). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +5. Test detection of discontinuity in levels.<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "5", Section name="One". + +TEXT COMPONENT: Pos(L,C)=(21,10). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "1.1.2", Section name="Three". + +TEXT COMPONENT: Pos(L,C)=(22,12). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "1.1.1.1.2", Section name="Five". + +TEXT COMPONENT: Pos(L,C)=(23,11). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "2", Section name="One". + +TEXT COMPONENT: Pos(L,C)=(25,10). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "2.1", Section name="Three". + +TEXT COMPONENT: Pos(L,C)=(26,12). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "1.1.1.2", Section name="Five". + +TEXT COMPONENT: Pos(L,C)=(27,11). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +========================== End of DOCUMENT LIST DUMP =========================== + + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| PR03: Test the parsing and semantics of sections. + 2 2| + 3 3| 4. Test first section of document is not <special>A. + 4 4| @B@<This section is out of order (and so is this test!)@> + Error|.^The first section in a document must be an @A section. + 5 5| + 6 6| 1. Test section with no name. + 7 7| @A This section has no name. + 8 8| @$@<The section name inherits the name of this macro@>@{Walrus@} + 9 9| + 10 10| 2. Test section with a name + 11 11| @A@<This section has no name.@> + 12 12| + 13 13| 3. Test the entire hierarchy. + 14 14| @A@<One@> + 15 15| @B@<Two@> + 16 16| @C@<Three@> + 17 17| @D@<Four@> + 18 18| @E@<Five@> + 19 19| + 20 20| 5. Test detection of discontinuity in levels. + 21 21| @A@<One@> + |.^The next section (at line 22) is too deep. + 22 22| @C@<Three@> + Error|.^This section is more than one level deeper than the last + |.^section (at line 21). Example: @B followed by @D is not allowed. + |.^The next section (at line 23) is too deep. + 23 23| @E@<Five@> + Error|.^This section is more than one level deeper than the last + |.^section (at line 22). Example: @B followed by @D is not allowed. + 24 24| + 25 25| @A@<One@> + 26 26| @B@<Three@> + |.^The next section (at line 27) is too deep. + 27 27| @D@<Five@> + Error|.^This section is more than one level deeper than the last + |.^section (at line 26). Example: @B followed by @D is not allowed. + | <End-Of-File> +------------+------------------------------------------------------------------- + +There were 4 Errors. diff --git a/web/funnelAC/answers/pr04.lis b/web/funnelAC/answers/pr04.lis new file mode 100644 index 0000000000..24419c1b15 --- /dev/null +++ b/web/funnelAC/answers/pr04.lis @@ -0,0 +1,656 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 50 52 30 34 3A 20 54 65 73 74 20 74 68 65 20 64 | PR04: Test the d | +| 65 66 69 6E 69 74 69 6F 6E 20 6F 66 20 6F 72 64 | efinition of ord | +| 69 6E 61 72 79 20 6D 61 63 72 6F 73 2E 0A 0A 31 | inary macros...1 | +| 2E 20 54 65 73 74 20 61 6E 20 6F 72 64 69 6E 61 | . Test an ordina | +| 72 79 20 6D 61 63 72 6F 20 64 65 66 69 6E 69 74 | ry macro definit | +| 69 6F 6E 2E 0A 40 24 40 3C 4F 72 64 69 6E 61 72 | ion..@$@<Ordinar | +| 79 40 3E 40 7B 54 68 65 20 74 65 78 74 20 6F 66 | y@>@{The text of | +| 20 6F 72 64 69 6E 61 72 79 40 7D 0A 0A 32 2E 20 | ordinary@}..2. | +| 54 65 73 74 20 61 6E 20 6F 72 64 69 6E 61 72 79 | Test an ordinary | +| 20 64 65 66 69 6E 69 74 69 6F 6E 20 75 73 69 6E | definition usin | +| 67 20 61 20 71 75 69 63 6B 6E 61 6D 65 2E 0A 40 | g a quickname..@ | +| 24 40 23 7C 40 7B 54 68 65 20 74 65 78 74 20 6F | $@#|@{The text o | +| 66 20 6F 72 64 69 6E 61 72 79 40 7D 0A 0A 33 2E | f ordinary@}..3. | +| 20 54 65 73 74 20 61 20 6E 61 6D 65 20 74 68 61 | Test a name tha | +| 74 20 69 6E 63 6C 75 64 65 73 20 45 4F 4C 2E 0A | t includes EOL.. | +| 40 24 40 3C 54 68 69 73 20 6E 61 6D 65 20 69 73 | @$@<This name is | +| 20 69 6C 6C 65 67 61 6C 20 62 65 63 61 75 73 65 | illegal because | +| 0A 69 74 20 63 72 6F 73 73 65 73 20 61 20 6C 69 | .it crosses a li | +| 6F 6E 40 3E 40 7B 41 6E 64 20 70 65 6F 70 6C 65 | on@>@{And people | +| 20 77 68 6F 20 63 72 6F 73 73 20 6C 69 6F 6E 73 | who cross lions | +| 20 74 65 6E 64 20 74 6F 20 67 65 74 20 65 61 74 | tend to get eat | +| 65 6E 2E 40 7D 0A 40 41 40 3C 45 72 72 6F 72 20 | en.@}.@A@<Error | +| 52 65 63 6F 76 65 72 79 20 50 6F 69 6E 74 40 3E | Recovery Point@> | +| 0A 0A 34 2E 20 54 65 73 74 20 74 68 65 20 6D 69 | ..4. Test the mi | +| 6E 69 6D 75 6D 20 6C 65 6E 67 74 68 20 6E 61 6D | nimum length nam | +| 65 20 28 74 68 65 20 65 6D 70 74 79 20 6E 61 6D | e (the empty nam | +| 65 29 2E 0A 40 24 40 3C 40 3E 40 7B 54 68 65 20 | e)..@$@<@>@{The | +| 65 6D 70 74 79 20 6D 61 63 72 6F 20 6E 61 6D 65 | empty macro name | +| 20 69 73 20 71 75 69 74 65 20 6C 65 67 61 6C 20 | is quite legal | +| 69 6E 20 46 75 6E 6E 65 6C 57 65 62 2E 40 7D 0A | in FunnelWeb.@}. | +| 0A 35 2E 20 54 65 73 74 20 61 20 6E 61 6D 65 20 | .5. Test a name | +| 61 74 20 74 68 65 20 6D 61 78 69 6D 75 6D 20 6E | at the maximum n | +| 61 6D 65 20 6C 65 6E 67 74 68 20 6C 69 6D 69 74 | ame length limit | +| 20 28 38 30 29 2E 0A 4F 4E 6C 79 20 74 68 65 20 | (80)..ONly the | +| 73 65 63 6F 6E 64 20 6F 66 20 74 68 65 20 74 77 | second of the tw | +| 6F 20 6D 61 63 72 6F 73 20 73 68 6F 75 6C 64 20 | o macros should | +| 67 65 6E 65 72 61 74 65 20 61 6E 20 65 72 72 6F | generate an erro | +| 72 2E 0A 40 70 20 6D 61 78 69 6D 75 6D 5F 69 6E | r..@p maximum_in | +| 70 75 74 5F 6C 69 6E 65 5F 6C 65 6E 67 74 68 20 | put_line_length | +| 3D 20 31 30 30 0A 40 24 40 3C 31 32 33 34 35 36 | = 100.@$@<123456 | +| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | +| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | +| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | +| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | +| 31 32 33 34 35 36 37 38 39 30 40 3E 40 7B 40 7D | 1234567890@>@{@} | +| 0A 40 24 40 3C 31 32 33 34 35 36 37 38 39 30 31 | .@$@<12345678901 | +| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 | +| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 | +| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 | +| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 | +| 36 37 38 39 30 31 40 3E 40 7B 40 7D 0A 40 41 40 | 678901@>@{@}.@A@ | +| 3C 45 72 72 6F 72 20 52 65 63 6F 76 65 72 79 20 | <Error Recovery | +| 50 6F 69 6E 74 40 3E 0A 0A 36 2E 20 54 65 73 74 | Point@>..6. Test | +| 20 6E 61 6D 65 73 20 77 69 74 68 20 61 6C 6C 20 | names with all | +| 6C 65 67 61 6C 20 63 68 61 72 61 63 74 65 72 73 | legal characters | +| 2E 20 54 68 65 72 65 20 73 68 6F 75 6C 64 20 62 | . There should b | +| 65 20 6E 6F 20 65 72 72 6F 72 73 2E 0A 40 24 40 | e no errors..@$@ | +| 3C 20 21 22 23 24 25 27 28 29 2A 2B 2C 2D 2E 2F | < !"#$%'()*+,-./ | +| 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F | 0123456789:;<=>? | +| 40 3E 40 7B 40 7D 0A 40 24 40 3C 41 42 43 44 45 | @>@{@}.@$@<ABCDE | +| 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 | FGHIJKLMNOPQRSTU | +| 56 57 58 59 5A 5B 5C 5D 5E 5F 60 40 3E 40 7B 40 | VWXYZ[\]^_`@>@{@ | +| 7D 0A 40 24 40 3C 61 62 63 64 65 66 67 68 69 6A | }.@$@<abcdefghij | +| 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A | klmnopqrstuvwxyz | +| 7B 7C 7D 7E 40 3E 40 7B 40 7D 0A 0A 37 2E 20 54 | {|}~@>@{@}..7. T | +| 65 73 74 20 61 20 6E 61 6D 65 20 74 68 61 74 20 | est a name that | +| 68 61 73 20 69 6E 73 65 72 74 65 64 20 74 65 78 | has inserted tex | +| 74 20 73 65 71 75 65 6E 63 65 73 2E 0A 0A 40 24 | t sequences...@$ | +| 40 3C 40 5E 44 28 30 36 35 29 40 40 40 3E 3D 3D | @<@^D(065)@@@>== | +| 40 7B 40 7D 0A 0A 0A | @{@}... | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| PR04: Test the definition of ordinary macros.<010> +00002 00002| <010> +00003 00003| 1. Test an ordinary macro definition.<010> +00004 00004| @$@<Ordinary@>@{The text of ordinary@}<010> +00005 00005| <010> +00006 00006| 2. Test an ordinary definition using a quickname.<010> +00007 00007| @$@#|@{The text of ordinary@}<010> +00008 00008| <010> +00009 00009| 3. Test a name that includes EOL.<010> +00010 00010| @$@<This name is illegal because<010> +00011 00011| it crosses a lion@>@{And people who cross lions tend to get eaten.@}<010> +00012 00012| @A@<Error Recovery Point@><010> +00013 00013| <010> +00014 00014| 4. Test the minimum length name (the empty name).<010> +00015 00015| @$@<@>@{The empty macro name is quite legal in FunnelWeb.@}<010> +00016 00016| <010> +00017 00017| 5. Test a name at the maximum name length limit (80).<010> +00018 00018| ONly the second of the two macros should generate an error.<010> +00019 00019| @p maximum_input_line_length = 100<010> +00020 00020| @$@<12345678901234567890123456789012345678901234567890123456789012345678901234567890@>@{@}<010> +00021 00021| @$@<123456789012345678901234567890123456789012345678901234567890123456789012345678901@>@{@}<010> +00022 00022| @A@<Error Recovery Point@><010> +00023 00023| <010> +00024 00024| 6. Test names with all legal characters. There should be no errors.<010> +00025 00025| @$@< !"#$%'()*+,-./0123456789:;<=>?@>@{@}<010> +00026 00026| @$@<ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`@>@{@}<010> +00027 00027| @$@<abcdefghijklmnopqrstuvwxyz{|}~@>@{@}<010> +00028 00028| <010> +00029 00029| 7. Test a name that has inserted text sequences.<010> +00030 00030| <010> +00031 00031| @$@<@^D(065)@@@>==@{@}<010> +00032 00032| <010> +00033 00033| <010> +00034 00034| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 85 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="PR04: Test the definition of ordinary macros.<010> +<010> +1. Test an ordinary macro definition.<010> +" +0004[01]: @$ Macro defn. +0004[03]: @< Open name. +0004[05]: Text. Text scrap[Grey]="Ordinary" +0004[13]: @> Close name. +0004[15]: @{ Open defn. +0004[17]: Text. Text scrap[Grey]="The text of ordinary" +0004[37]: @} Close defn. +0004[39]: Text. Text scrap[Grey]="<010> +<010> +2. Test an ordinary definition using a quickname.<010> +" +0007[01]: @$ Macro defn. +0007[03]: @# Name. Character='|'. +0007[06]: @{ Open defn. +0007[08]: Text. Text scrap[Grey]="The text of ordinary" +0007[28]: @} Close defn. +0007[30]: Text. Text scrap[Grey]="<010> +<010> +3. Test a name that includes EOL.<010> +" +0010[01]: @$ Macro defn. +0010[03]: @< Open name. +0010[05]: Text. Text scrap[Grey]="This name is illegal because<010> +it crosses a lion" +0011[18]: @> Close name. +0011[20]: @{ Open defn. +0011[22]: Text. Text scrap[Grey]="And people who cross lions tend to get eaten." +0011[67]: @} Close defn. +0011[69]: Text. Text scrap[White]="<010> +" +0012[01]: @A New section (Level 1). +0012[03]: @< Open name. +0012[05]: Text. Text scrap[Grey]="Error Recovery Point" +0012[25]: @> Close name. +0012[27]: Text. Text scrap[Grey]="<010> +<010> +4. Test the minimum length name (the empty name).<010> +" +0015[01]: @$ Macro defn. +0015[03]: @< Open name. +0015[05]: @> Close name. +0015[07]: @{ Open defn. +0015[09]: Text. Text scrap[Grey]="The empty macro name is quite legal in FunnelWeb." +0015[58]: @} Close defn. +0015[60]: Text. Text scrap[Grey]="<010> +<010> +5. Test a name at the maximum name length limit (80).<010> +ONly the second of the two macros should generate an error.<010> +" +0020[01]: @$ Macro defn. +0020[03]: @< Open name. +0020[05]: Text. Text scrap[Grey]="12345678901234567890123456789012345678901234567890123456789012345678901234567890" +0020[85]: @> Close name. +0020[87]: @{ Open defn. +0020[89]: @} Close defn. +0020[91]: Text. Text scrap[White]="<010> +" +0021[01]: @$ Macro defn. +0021[03]: @< Open name. +0021[05]: Text. Text scrap[Grey]="123456789012345678901234567890123456789012345678901234567890123456789012345678901" +0021[86]: @> Close name. +0021[88]: @{ Open defn. +0021[90]: @} Close defn. +0021[92]: Text. Text scrap[White]="<010> +" +0022[01]: @A New section (Level 1). +0022[03]: @< Open name. +0022[05]: Text. Text scrap[Grey]="Error Recovery Point" +0022[25]: @> Close name. +0022[27]: Text. Text scrap[Grey]="<010> +<010> +6. Test names with all legal characters. There should be no errors.<010> +" +0025[01]: @$ Macro defn. +0025[03]: @< Open name. +0025[05]: Text. Text scrap[Grey]=" !"#$%'()*+,-./0123456789:;<=>?" +0025[36]: @> Close name. +0025[38]: @{ Open defn. +0025[40]: @} Close defn. +0025[42]: Text. Text scrap[White]="<010> +" +0026[01]: @$ Macro defn. +0026[03]: @< Open name. +0026[05]: Text. Text scrap[Grey]="ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`" +0026[37]: @> Close name. +0026[39]: @{ Open defn. +0026[41]: @} Close defn. +0026[43]: Text. Text scrap[White]="<010> +" +0027[01]: @$ Macro defn. +0027[03]: @< Open name. +0027[05]: Text. Text scrap[Grey]="abcdefghijklmnopqrstuvwxyz{|}~" +0027[35]: @> Close name. +0027[37]: @{ Open defn. +0027[39]: @} Close defn. +0027[41]: Text. Text scrap[Grey]="<010> +<010> +7. Test a name that has inserted text sequences.<010> +<010> +" +0031[01]: @$ Macro defn. +0031[03]: @< Open name. +0031[05]: Text. Text scrap[Grey]="A" +0031[13]: Text. Text scrap[Grey]="@" +0031[15]: @> Close name. +0031[17]: Text. Text scrap[Grey]="==" +0031[19]: @{ Open defn. +0031[21]: @} Close defn. +0031[23]: Text. Text scrap[White]="<010> +<010> +<010> +" +0034[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + + +========================== Start of MACRO TABLE DUMP =========================== + + +------------------- 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 : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=3, Pos(L,C)=(15,3), Expression follows: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="The empty macro name is quite legal in FunnelWeb." +------ End Text Element ------ + +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- 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 : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=5, Pos(L,C)=(25,3), Expression follows: + +---- Start of Expression ---- +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- 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 : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=4, Pos(L,C)=(20,3), Expression follows: + +---- Start of Expression ---- +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- 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 : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=8, Pos(L,C)=(31,3), Expression follows: + +---- Start of Expression ---- +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- 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 : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=6, Pos(L,C)=(26,3), Expression follows: + +---- Start of Expression ---- +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- 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 : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=1, Pos(L,C)=(4,3), Expression follows: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="The text of ordinary" +------ End Text Element ------ + +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- 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 : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=7, Pos(L,C)=(27,3), Expression follows: + +---- Start of Expression ---- +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- 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 : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=2, Pos(L,C)=(7,3), Expression follows: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="The text of ordinary" +------ End Text Element ------ + +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +=========================== End of MACRO TABLE DUMP ============================ + + +========================= Start of DOCUMENT LIST DUMP ========================== + + +TEXT COMPONENT: Pos(L,C)=(1,1). + +-- Start of Text Scrap List -- +Text scrap[Grey]="PR04: Test the definition of ordinary macros.<010> +<010> +1. Test an ordinary macro definition.<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(4,1). +Part 1 of macro @<Ordinary@>. + +TEXT COMPONENT: Pos(L,C)=(4,39). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +2. Test an ordinary definition using a quickname.<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(7,1). +Part 1 of macro @<|@>. + +TEXT COMPONENT: Pos(L,C)=(7,30). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +3. Test a name that includes EOL.<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "1", Section name="Error Recovery Point". + +TEXT COMPONENT: Pos(L,C)=(12,27). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +4. Test the minimum length name (the empty name).<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(15,1). +Part 1 of macro @<@>. + +TEXT COMPONENT: Pos(L,C)=(15,60). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +5. Test a name at the maximum name length limit (80).<010> +ONly the second of the two macros should generate an error.<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(20,1). +Part 1 of macro @<12345678901234567890123456789012345678901234567890123456789012345678901234567890@>. + +TEXT COMPONENT: Pos(L,C)=(20,91). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "2", Section name="Error Recovery Point". + +TEXT COMPONENT: Pos(L,C)=(22,27). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +6. Test names with all legal characters. There should be no errors.<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(25,1). +Part 1 of macro @< !"#$%'()*+,-./0123456789:;<=>?@>. + +TEXT COMPONENT: Pos(L,C)=(25,42). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(26,1). +Part 1 of macro @<ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`@>. + +TEXT COMPONENT: Pos(L,C)=(26,43). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(27,1). +Part 1 of macro @<abcdefghijklmnopqrstuvwxyz{|}~@>. + +TEXT COMPONENT: Pos(L,C)=(27,41). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +7. Test a name that has inserted text sequences.<010> +<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(31,1). +Part 1 of macro @<A@@>. + +TEXT COMPONENT: Pos(L,C)=(31,23). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +<010> +<010> +" +--- End of Text Scrap List --- + + +========================== End of DOCUMENT LIST DUMP =========================== + + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| PR04: Test the definition of ordinary macros. + 2 2| + 3 3| 1. Test an ordinary macro definition. + 4 4| @$@<Ordinary@>@{The text of ordinary@} + 5 5| + 6 6| 2. Test an ordinary definition using a quickname. + 7 7| @$@#|@{The text of ordinary@} + 8 8| + 9 9| 3. Test a name that includes EOL. + 10 10| @$@<This name is illegal because + Error|.....^Names cannot cross lines. + |.....^Skipping after error to the next major construct... + 11 11| it crosses a lion@>@{And people who cross lions tend to get eaten.@} + 12 12| @A@<Error Recovery Point@> + |.^...skipped to here after the error. + 13 13| + 14 14| 4. Test the minimum length name (the empty name). + 15 15| @$@<@>@{The empty macro name is quite legal in FunnelWeb.@} + 16 16| + 17 17| 5. Test a name at the maximum name length limit (80). + 18 18| ONly the second of the two macros should generate an error. + 19 19| @p maximum_input_line_length = 100 + 20 20| @$@<12345678901234567890123456789012345678901234567890123456789012345678901234567890@>@{@} + 21 21| @$@<123456789012345678901234567890123456789012345678901234567890123456789012345678901@>@{@} + Error|.....^Name is too long. + |.....^The maximum length of a legal name is 80 characters. + |.....^Skipping after error to the next major construct... + 22 22| @A@<Error Recovery Point@> + |.^...skipped to here after the error. + 23 23| + 24 24| 6. Test names with all legal characters. There should be no errors. + 25 25| @$@< !"#$%'()*+,-./0123456789:;<=>?@>@{@} + 26 26| @$@<ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`@>@{@} + 27 27| @$@<abcdefghijklmnopqrstuvwxyz{|}~@>@{@} + 28 28| + 29 29| 7. Test a name that has inserted text sequences. + 30 30| + 31 31| @$@<@^D(065)@@@>==@{@} + 32 32| + 33 33| + | <End-Of-File> +------------+------------------------------------------------------------------- + +There were 2 Errors. diff --git a/web/funnelAC/answers/pr05.lis b/web/funnelAC/answers/pr05.lis new file mode 100644 index 0000000000..5e1d211586 --- /dev/null +++ b/web/funnelAC/answers/pr05.lis @@ -0,0 +1,1005 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 50 52 30 35 3A 20 54 65 73 74 20 74 68 65 20 70 | PR05: Test the p | +| 61 72 73 69 6E 67 20 6F 66 20 66 6F 72 6D 61 6C | arsing of formal | +| 20 70 61 72 61 6D 65 74 65 72 20 6C 69 73 74 73 | parameter lists | +| 2E 0A 0A 46 69 72 73 74 20 74 72 69 70 20 74 68 | ...First trip th | +| 65 20 70 61 72 73 65 72 20 73 6F 20 77 65 20 64 | e parser so we d | +| 6F 6E 27 74 20 67 65 74 20 70 61 73 74 20 74 68 | on't get past th | +| 65 20 70 61 72 73 65 72 2E 0A 40 3E 0A 0A 31 2E | e parser..@>..1. | +| 20 54 65 73 74 20 6D 61 63 72 6F 20 64 65 66 69 | Test macro defi | +| 6E 69 74 69 6F 6E 20 77 69 74 68 20 6E 6F 20 66 | nition with no f | +| 6F 72 6D 61 6C 20 70 61 72 61 6D 65 74 65 72 73 | ormal parameters | +| 2E 0A 40 24 40 3C 53 6C 6F 74 68 40 3E 40 7B 53 | ..@$@<Sloth@>@{S | +| 6C 6F 74 68 74 65 78 74 40 7D 0A 0A 32 2E 20 54 | lothtext@}..2. T | +| 65 73 74 20 6D 61 63 72 6F 20 64 65 66 69 6E 69 | est macro defini | +| 74 69 6F 6E 20 77 69 74 68 20 6F 6E 65 20 66 6F | tion with one fo | +| 72 6D 61 6C 20 70 61 72 61 6D 65 74 65 72 2E 0A | rmal parameter.. | +| 40 24 40 3C 53 6C 6F 74 68 20 77 69 74 68 20 6F | @$@<Sloth with o | +| 6E 65 40 3E 40 28 40 31 40 29 40 7B 53 6C 6F 74 | ne@>@(@1@)@{Slot | +| 68 74 65 78 74 40 7D 0A 0A 33 2E 20 54 65 73 74 | htext@}..3. Test | +| 20 6D 61 63 72 6F 20 64 65 66 69 6E 69 74 69 6F | macro definitio | +| 6E 20 77 69 74 68 20 6D 61 6E 79 20 66 6F 72 6D | n with many form | +| 61 6C 20 70 61 72 61 6D 65 74 65 72 73 2E 0A 40 | al parameters..@ | +| 24 40 3C 53 6C 6F 74 68 20 77 69 74 68 20 32 40 | $@<Sloth with 2@ | +| 3E 40 28 40 32 40 29 40 7B 53 6C 6F 74 68 74 65 | >@(@2@)@{Slothte | +| 78 74 40 7D 0A 40 24 40 3C 53 6C 6F 74 68 20 77 | xt@}.@$@<Sloth w | +| 69 74 68 20 33 40 3E 40 28 40 33 40 29 40 7B 53 | ith 3@>@(@3@)@{S | +| 6C 6F 74 68 74 65 78 74 40 7D 0A 40 24 40 3C 53 | lothtext@}.@$@<S | +| 6C 6F 74 68 20 77 69 74 68 20 34 40 3E 40 28 40 | loth with 4@>@(@ | +| 34 40 29 40 7B 53 6C 6F 74 68 74 65 78 74 40 7D | 4@)@{Slothtext@} | +| 0A 40 24 40 3C 53 6C 6F 74 68 20 77 69 74 68 20 | .@$@<Sloth with | +| 35 40 3E 40 28 40 35 40 29 40 7B 53 6C 6F 74 68 | 5@>@(@5@)@{Sloth | +| 74 65 78 74 40 7D 0A 40 24 40 3C 53 6C 6F 74 68 | text@}.@$@<Sloth | +| 20 77 69 74 68 20 36 40 3E 40 28 40 36 40 29 40 | with 6@>@(@6@)@ | +| 7B 53 6C 6F 74 68 74 65 78 74 40 7D 0A 40 24 40 | {Slothtext@}.@$@ | +| 3C 53 6C 6F 74 68 20 77 69 74 68 20 37 40 3E 40 | <Sloth with 7@>@ | +| 28 40 37 40 29 40 7B 53 6C 6F 74 68 74 65 78 74 | (@7@)@{Slothtext | +| 40 7D 0A 40 24 40 3C 53 6C 6F 74 68 20 77 69 74 | @}.@$@<Sloth wit | +| 68 20 38 40 3E 40 28 40 38 40 29 40 7B 53 6C 6F | h 8@>@(@8@)@{Slo | +| 74 68 74 65 78 74 40 7D 0A 40 24 40 3C 53 6C 6F | thtext@}.@$@<Slo | +| 74 68 20 77 69 74 68 20 39 40 3E 40 28 40 39 40 | th with 9@>@(@9@ | +| 29 40 7B 53 6C 6F 74 68 74 65 78 74 40 7D 0A 0A | )@{Slothtext@}.. | +| 34 2E 20 54 65 73 74 20 77 69 74 68 20 73 79 6E | 4. Test with syn | +| 74 61 78 20 65 72 72 6F 72 73 20 69 6E 20 74 68 | tax errors in th | +| 65 20 70 61 72 61 6D 65 74 65 72 20 6C 69 73 74 | e parameter list | +| 2E 0A 0A 40 24 40 3C 53 6C 6F 74 68 20 61 40 3E | ...@$@<Sloth a@> | +| 40 28 40 2B 40 39 40 29 40 7B 53 6C 6F 74 68 74 | @(@+@9@)@{Slotht | +| 65 78 74 40 7D 0A 40 41 40 3C 45 72 72 6F 72 20 | ext@}.@A@<Error | +| 72 65 63 6F 76 65 72 79 20 70 6F 69 6E 74 40 3E | recovery point@> | +| 0A 0A 40 24 40 3C 53 6C 6F 74 68 20 62 40 3E 40 | ..@$@<Sloth b@>@ | +| 39 40 29 40 7B 53 6C 6F 74 68 74 65 78 74 40 7D | 9@)@{Slothtext@} | +| 0A 40 41 40 3C 45 72 72 6F 72 20 72 65 63 6F 76 | .@A@<Error recov | +| 65 72 79 20 70 6F 69 6E 74 40 3E 0A 0A 40 24 40 | ery point@>..@$@ | +| 3C 53 6C 6F 74 68 20 63 40 3E 40 28 39 40 29 40 | <Sloth c@>@(9@)@ | +| 7B 53 6C 6F 74 68 74 65 78 74 40 7D 0A 40 41 40 | {Slothtext@}.@A@ | +| 3C 45 72 72 6F 72 20 72 65 63 6F 76 65 72 79 20 | <Error recovery | +| 70 6F 69 6E 74 40 3E 0A 0A 40 24 40 3C 53 6C 6F | point@>..@$@<Slo | +| 74 68 20 64 40 3E 40 39 40 29 40 7B 53 6C 6F 74 | th d@>@9@)@{Slot | +| 68 74 65 78 74 40 7D 0A 40 41 40 3C 45 72 72 6F | htext@}.@A@<Erro | +| 72 20 72 65 63 6F 76 65 72 79 20 70 6F 69 6E 74 | r recovery point | +| 40 3E 0A 0A 40 24 40 3C 53 6C 6F 74 68 20 65 40 | @>..@$@<Sloth e@ | +| 3E 40 28 40 39 40 29 40 29 40 7B 53 6C 6F 74 68 | >@(@9@)@)@{Sloth | +| 74 65 78 74 40 7D 0A 40 41 40 3C 45 72 72 6F 72 | text@}.@A@<Error | +| 20 72 65 63 6F 76 65 72 79 20 70 6F 69 6E 74 40 | recovery point@ | +| 3E 0A 0A 0A 0A | >.... | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| PR05: Test the parsing of formal parameter lists.<010> +00002 00002| <010> +00003 00003| First trip the parser so we don't get past the parser.<010> +00004 00004| @><010> +00005 00005| <010> +00006 00006| 1. Test macro definition with no formal parameters.<010> +00007 00007| @$@<Sloth@>@{Slothtext@}<010> +00008 00008| <010> +00009 00009| 2. Test macro definition with one formal parameter.<010> +00010 00010| @$@<Sloth with one@>@(@1@)@{Slothtext@}<010> +00011 00011| <010> +00012 00012| 3. Test macro definition with many formal parameters.<010> +00013 00013| @$@<Sloth with 2@>@(@2@)@{Slothtext@}<010> +00014 00014| @$@<Sloth with 3@>@(@3@)@{Slothtext@}<010> +00015 00015| @$@<Sloth with 4@>@(@4@)@{Slothtext@}<010> +00016 00016| @$@<Sloth with 5@>@(@5@)@{Slothtext@}<010> +00017 00017| @$@<Sloth with 6@>@(@6@)@{Slothtext@}<010> +00018 00018| @$@<Sloth with 7@>@(@7@)@{Slothtext@}<010> +00019 00019| @$@<Sloth with 8@>@(@8@)@{Slothtext@}<010> +00020 00020| @$@<Sloth with 9@>@(@9@)@{Slothtext@}<010> +00021 00021| <010> +00022 00022| 4. Test with syntax errors in the parameter list.<010> +00023 00023| <010> +00024 00024| @$@<Sloth a@>@(@+@9@)@{Slothtext@}<010> +00025 00025| @A@<Error recovery point@><010> +00026 00026| <010> +00027 00027| @$@<Sloth b@>@9@)@{Slothtext@}<010> +00028 00028| @A@<Error recovery point@><010> +00029 00029| <010> +00030 00030| @$@<Sloth c@>@(9@)@{Slothtext@}<010> +00031 00031| @A@<Error recovery point@><010> +00032 00032| <010> +00033 00033| @$@<Sloth d@>@9@)@{Slothtext@}<010> +00034 00034| @A@<Error recovery point@><010> +00035 00035| <010> +00036 00036| @$@<Sloth e@>@(@9@)@)@{Slothtext@}<010> +00037 00037| @A@<Error recovery point@><010> +00038 00038| <010> +00039 00039| <010> +00040 00040| <010> +00041 00041| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 191 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="PR05: Test the parsing of formal parameter lists.<010> +<010> +First trip the parser so we don't get past the parser.<010> +" +0004[01]: @> Close name. +0004[03]: Text. Text scrap[Grey]="<010> +<010> +1. Test macro definition with no formal parameters.<010> +" +0007[01]: @$ Macro defn. +0007[03]: @< Open name. +0007[05]: Text. Text scrap[Grey]="Sloth" +0007[10]: @> Close name. +0007[12]: @{ Open defn. +0007[14]: Text. Text scrap[Grey]="Slothtext" +0007[23]: @} Close defn. +0007[25]: Text. Text scrap[Grey]="<010> +<010> +2. Test macro definition with one formal parameter.<010> +" +0010[01]: @$ Macro defn. +0010[03]: @< Open name. +0010[05]: Text. Text scrap[Grey]="Sloth with one" +0010[19]: @> Close name. +0010[21]: @( Open param. +0010[23]: @n Parameter. Parameterno=1. +0010[25]: @} Close param. +0010[27]: @{ Open defn. +0010[29]: Text. Text scrap[Grey]="Slothtext" +0010[38]: @} Close defn. +0010[40]: Text. Text scrap[Grey]="<010> +<010> +3. Test macro definition with many formal parameters.<010> +" +0013[01]: @$ Macro defn. +0013[03]: @< Open name. +0013[05]: Text. Text scrap[Grey]="Sloth with 2" +0013[17]: @> Close name. +0013[19]: @( Open param. +0013[21]: @n Parameter. Parameterno=2. +0013[23]: @} Close param. +0013[25]: @{ Open defn. +0013[27]: Text. Text scrap[Grey]="Slothtext" +0013[36]: @} Close defn. +0013[38]: Text. Text scrap[White]="<010> +" +0014[01]: @$ Macro defn. +0014[03]: @< Open name. +0014[05]: Text. Text scrap[Grey]="Sloth with 3" +0014[17]: @> Close name. +0014[19]: @( Open param. +0014[21]: @n Parameter. Parameterno=3. +0014[23]: @} Close param. +0014[25]: @{ Open defn. +0014[27]: Text. Text scrap[Grey]="Slothtext" +0014[36]: @} Close defn. +0014[38]: Text. Text scrap[White]="<010> +" +0015[01]: @$ Macro defn. +0015[03]: @< Open name. +0015[05]: Text. Text scrap[Grey]="Sloth with 4" +0015[17]: @> Close name. +0015[19]: @( Open param. +0015[21]: @n Parameter. Parameterno=4. +0015[23]: @} Close param. +0015[25]: @{ Open defn. +0015[27]: Text. Text scrap[Grey]="Slothtext" +0015[36]: @} Close defn. +0015[38]: Text. Text scrap[White]="<010> +" +0016[01]: @$ Macro defn. +0016[03]: @< Open name. +0016[05]: Text. Text scrap[Grey]="Sloth with 5" +0016[17]: @> Close name. +0016[19]: @( Open param. +0016[21]: @n Parameter. Parameterno=5. +0016[23]: @} Close param. +0016[25]: @{ Open defn. +0016[27]: Text. Text scrap[Grey]="Slothtext" +0016[36]: @} Close defn. +0016[38]: Text. Text scrap[White]="<010> +" +0017[01]: @$ Macro defn. +0017[03]: @< Open name. +0017[05]: Text. Text scrap[Grey]="Sloth with 6" +0017[17]: @> Close name. +0017[19]: @( Open param. +0017[21]: @n Parameter. Parameterno=6. +0017[23]: @} Close param. +0017[25]: @{ Open defn. +0017[27]: Text. Text scrap[Grey]="Slothtext" +0017[36]: @} Close defn. +0017[38]: Text. Text scrap[White]="<010> +" +0018[01]: @$ Macro defn. +0018[03]: @< Open name. +0018[05]: Text. Text scrap[Grey]="Sloth with 7" +0018[17]: @> Close name. +0018[19]: @( Open param. +0018[21]: @n Parameter. Parameterno=7. +0018[23]: @} Close param. +0018[25]: @{ Open defn. +0018[27]: Text. Text scrap[Grey]="Slothtext" +0018[36]: @} Close defn. +0018[38]: Text. Text scrap[White]="<010> +" +0019[01]: @$ Macro defn. +0019[03]: @< Open name. +0019[05]: Text. Text scrap[Grey]="Sloth with 8" +0019[17]: @> Close name. +0019[19]: @( Open param. +0019[21]: @n Parameter. Parameterno=8. +0019[23]: @} Close param. +0019[25]: @{ Open defn. +0019[27]: Text. Text scrap[Grey]="Slothtext" +0019[36]: @} Close defn. +0019[38]: Text. Text scrap[White]="<010> +" +0020[01]: @$ Macro defn. +0020[03]: @< Open name. +0020[05]: Text. Text scrap[Grey]="Sloth with 9" +0020[17]: @> Close name. +0020[19]: @( Open param. +0020[21]: @n Parameter. Parameterno=9. +0020[23]: @} Close param. +0020[25]: @{ Open defn. +0020[27]: Text. Text scrap[Grey]="Slothtext" +0020[36]: @} Close defn. +0020[38]: Text. Text scrap[Grey]="<010> +<010> +4. Test with syntax errors in the parameter list.<010> +<010> +" +0024[01]: @$ Macro defn. +0024[03]: @< Open name. +0024[05]: Text. Text scrap[Grey]="Sloth a" +0024[12]: @> Close name. +0024[14]: @( Open param. +0024[16]: Text. Text scrap[White]="<010> +" +0024[18]: @n Parameter. Parameterno=9. +0024[20]: @} Close param. +0024[22]: @{ Open defn. +0024[24]: Text. Text scrap[Grey]="Slothtext" +0024[33]: @} Close defn. +0024[35]: Text. Text scrap[White]="<010> +" +0025[01]: @A New section (Level 1). +0025[03]: @< Open name. +0025[05]: Text. Text scrap[Grey]="Error recovery point" +0025[25]: @> Close name. +0025[27]: Text. Text scrap[White]="<010> +<010> +" +0027[01]: @$ Macro defn. +0027[03]: @< Open name. +0027[05]: Text. Text scrap[Grey]="Sloth b" +0027[12]: @> Close name. +0027[14]: @n Parameter. Parameterno=9. +0027[16]: @} Close param. +0027[18]: @{ Open defn. +0027[20]: Text. Text scrap[Grey]="Slothtext" +0027[29]: @} Close defn. +0027[31]: Text. Text scrap[White]="<010> +" +0028[01]: @A New section (Level 1). +0028[03]: @< Open name. +0028[05]: Text. Text scrap[Grey]="Error recovery point" +0028[25]: @> Close name. +0028[27]: Text. Text scrap[White]="<010> +<010> +" +0030[01]: @$ Macro defn. +0030[03]: @< Open name. +0030[05]: Text. Text scrap[Grey]="Sloth c" +0030[12]: @> Close name. +0030[14]: @( Open param. +0030[16]: Text. Text scrap[Grey]="9" +0030[17]: @} Close param. +0030[19]: @{ Open defn. +0030[21]: Text. Text scrap[Grey]="Slothtext" +0030[30]: @} Close defn. +0030[32]: Text. Text scrap[White]="<010> +" +0031[01]: @A New section (Level 1). +0031[03]: @< Open name. +0031[05]: Text. Text scrap[Grey]="Error recovery point" +0031[25]: @> Close name. +0031[27]: Text. Text scrap[White]="<010> +<010> +" +0033[01]: @$ Macro defn. +0033[03]: @< Open name. +0033[05]: Text. Text scrap[Grey]="Sloth d" +0033[12]: @> Close name. +0033[14]: @n Parameter. Parameterno=9. +0033[16]: @} Close param. +0033[18]: @{ Open defn. +0033[20]: Text. Text scrap[Grey]="Slothtext" +0033[29]: @} Close defn. +0033[31]: Text. Text scrap[White]="<010> +" +0034[01]: @A New section (Level 1). +0034[03]: @< Open name. +0034[05]: Text. Text scrap[Grey]="Error recovery point" +0034[25]: @> Close name. +0034[27]: Text. Text scrap[White]="<010> +<010> +" +0036[01]: @$ Macro defn. +0036[03]: @< Open name. +0036[05]: Text. Text scrap[Grey]="Sloth e" +0036[12]: @> Close name. +0036[14]: @( Open param. +0036[16]: @n Parameter. Parameterno=9. +0036[18]: @} Close param. +0036[20]: @} Close param. +0036[22]: @{ Open defn. +0036[24]: Text. Text scrap[Grey]="Slothtext" +0036[33]: @} Close defn. +0036[35]: Text. Text scrap[White]="<010> +" +0037[01]: @A New section (Level 1). +0037[03]: @< Open name. +0037[05]: Text. Text scrap[Grey]="Error recovery point" +0037[25]: @> Close name. +0037[27]: Text. Text scrap[White]="<010> +<010> +<010> +<010> +" +0041[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + + +========================== Start of MACRO TABLE DUMP =========================== + + +------------------- 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 : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=1, Pos(L,C)=(7,3), Expression follows: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Slothtext" +------ End Text Element ------ + +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Sloth a" +Defined? : No. +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Sloth b" +Defined? : Yes. +Parameters : 0 +Additive? : No. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 0 body parts. +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Sloth c" +Defined? : No. +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Sloth d" +Defined? : Yes. +Parameters : 0 +Additive? : No. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 0 body parts. +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Sloth e" +Defined? : Yes. +Parameters : 9 +Additive? : No. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 0 body parts. +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Sloth with 2" +Defined? : Yes. +Parameters : 2 +Additive? : No. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=3, Pos(L,C)=(13,3), Expression follows: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Slothtext" +------ End Text Element ------ + +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Sloth with 3" +Defined? : Yes. +Parameters : 3 +Additive? : No. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=4, Pos(L,C)=(14,3), Expression follows: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Slothtext" +------ End Text Element ------ + +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Sloth with 4" +Defined? : Yes. +Parameters : 4 +Additive? : No. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=5, Pos(L,C)=(15,3), Expression follows: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Slothtext" +------ End Text Element ------ + +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Sloth with 5" +Defined? : Yes. +Parameters : 5 +Additive? : No. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=6, Pos(L,C)=(16,3), Expression follows: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Slothtext" +------ End Text Element ------ + +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Sloth with 6" +Defined? : Yes. +Parameters : 6 +Additive? : No. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=7, Pos(L,C)=(17,3), Expression follows: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Slothtext" +------ End Text Element ------ + +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Sloth with 7" +Defined? : Yes. +Parameters : 7 +Additive? : No. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=8, Pos(L,C)=(18,3), Expression follows: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Slothtext" +------ End Text Element ------ + +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Sloth with 8" +Defined? : Yes. +Parameters : 8 +Additive? : No. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=9, Pos(L,C)=(19,3), Expression follows: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Slothtext" +------ End Text Element ------ + +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Sloth with 9" +Defined? : Yes. +Parameters : 9 +Additive? : No. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=10, Pos(L,C)=(20,3), Expression follows: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Slothtext" +------ End Text Element ------ + +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Sloth with one" +Defined? : Yes. +Parameters : 1 +Additive? : No. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=2, Pos(L,C)=(10,3), Expression follows: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Slothtext" +------ End Text Element ------ + +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +=========================== End of MACRO TABLE DUMP ============================ + + +========================= Start of DOCUMENT LIST DUMP ========================== + + +TEXT COMPONENT: Pos(L,C)=(1,1). + +-- Start of Text Scrap List -- +Text scrap[Grey]="PR05: Test the parsing of formal parameter lists.<010> +<010> +First trip the parser so we don't get past the parser.<010> +" +--- End of Text Scrap List --- + + +TEXT COMPONENT: Pos(L,C)=(4,3). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +1. Test macro definition with no formal parameters.<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(7,1). +Part 1 of macro @<Sloth@>. + +TEXT COMPONENT: Pos(L,C)=(7,25). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +2. Test macro definition with one formal parameter.<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(10,1). +Part 1 of macro @<Sloth with one@>. + +TEXT COMPONENT: Pos(L,C)=(10,40). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +3. Test macro definition with many formal parameters.<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(13,1). +Part 1 of macro @<Sloth with 2@>. + +TEXT COMPONENT: Pos(L,C)=(13,38). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(14,1). +Part 1 of macro @<Sloth with 3@>. + +TEXT COMPONENT: Pos(L,C)=(14,38). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(15,1). +Part 1 of macro @<Sloth with 4@>. + +TEXT COMPONENT: Pos(L,C)=(15,38). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(16,1). +Part 1 of macro @<Sloth with 5@>. + +TEXT COMPONENT: Pos(L,C)=(16,38). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(17,1). +Part 1 of macro @<Sloth with 6@>. + +TEXT COMPONENT: Pos(L,C)=(17,38). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(18,1). +Part 1 of macro @<Sloth with 7@>. + +TEXT COMPONENT: Pos(L,C)=(18,38). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(19,1). +Part 1 of macro @<Sloth with 8@>. + +TEXT COMPONENT: Pos(L,C)=(19,38). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(20,1). +Part 1 of macro @<Sloth with 9@>. + +TEXT COMPONENT: Pos(L,C)=(20,38). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +4. Test with syntax errors in the parameter list.<010> +<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "1", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(25,27). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "2", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(28,27). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "3", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(31,27). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "4", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(34,27). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "5", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(37,27). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +<010> +<010> +<010> +" +--- End of Text Scrap List --- + + +========================== End of DOCUMENT LIST DUMP =========================== + + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| PR05: Test the parsing of formal parameter lists. + 2 2| + 3 3| First trip the parser so we don't get past the parser. + 4 4| @> + Error|.^The parser was at the top level and was expecting + |.^one of: {Directive, Text, Macro definition, EOF}. + 5 5| + 6 6| 1. Test macro definition with no formal parameters. + 7 7| @$@<Sloth@>@{Slothtext@} + 8 8| + 9 9| 2. Test macro definition with one formal parameter. + 10 10| @$@<Sloth with one@>@(@1@)@{Slothtext@} + 11 11| + 12 12| 3. Test macro definition with many formal parameters. + 13 13| @$@<Sloth with 2@>@(@2@)@{Slothtext@} + 14 14| @$@<Sloth with 3@>@(@3@)@{Slothtext@} + 15 15| @$@<Sloth with 4@>@(@4@)@{Slothtext@} + 16 16| @$@<Sloth with 5@>@(@5@)@{Slothtext@} + 17 17| @$@<Sloth with 6@>@(@6@)@{Slothtext@} + 18 18| @$@<Sloth with 7@>@(@7@)@{Slothtext@} + 19 19| @$@<Sloth with 8@>@(@8@)@{Slothtext@} + 20 20| @$@<Sloth with 9@>@(@9@)@{Slothtext@} + 21 21| + 22 22| 4. Test with syntax errors in the parameter list. + 23 23| + 24 24| @$@<Sloth a@>@(@+@9@)@{Slothtext@} + Error|................^Expecting one of [@1..@9]. + |................^Skipping after error to the next major construct... + 25 25| @A@<Error recovery point@> + |.^...skipped to here after the error. + 26 26| + 27 27| @$@<Sloth b@>@9@)@{Slothtext@} + Error|..............^Expecting '@{'. + |..............^Skipping after error to the next major construct... + 28 28| @A@<Error recovery point@> + |.^...skipped to here after the error. + 29 29| + 30 30| @$@<Sloth c@>@(9@)@{Slothtext@} + Error|................^Expecting one of [@1..@9]. + |................^Skipping after error to the next major construct... + 31 31| @A@<Error recovery point@> + |.^...skipped to here after the error. + 32 32| + 33 33| @$@<Sloth d@>@9@)@{Slothtext@} + Error|..............^Expecting '@{'. + |..............^Skipping after error to the next major construct... + 34 34| @A@<Error recovery point@> + |.^...skipped to here after the error. + 35 35| + 36 36| @$@<Sloth e@>@(@9@)@)@{Slothtext@} + Error|....................^Expecting '@{'. + |....................^Skipping after error to the next major construct... + 37 37| @A@<Error recovery point@> + |.^...skipped to here after the error. + 38 38| + 39 39| + 40 40| + | <End-Of-File> +------------+------------------------------------------------------------------- + +There were 6 Errors. diff --git a/web/funnelAC/answers/pr06.lis b/web/funnelAC/answers/pr06.lis new file mode 100644 index 0000000000..2a7d80d8d9 --- /dev/null +++ b/web/funnelAC/answers/pr06.lis @@ -0,0 +1,698 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 50 52 30 36 3A 20 54 65 73 74 20 74 68 65 20 70 | PR06: Test the p | +| 61 72 73 69 6E 67 20 6F 6E 20 69 6E 76 6F 63 61 | arsing on invoca | +| 74 69 6F 6E 20 6E 75 6D 62 65 72 20 63 6F 6E 73 | tion number cons | +| 74 72 61 69 6E 74 73 2E 0A 0A 54 72 69 70 20 74 | traints...Trip t | +| 68 65 20 70 61 72 73 65 72 20 73 6F 20 77 65 20 | he parser so we | +| 64 6F 6E 27 74 20 67 65 74 20 70 61 73 74 20 69 | don't get past i | +| 74 2E 0A 40 3E 0A 0A 31 2E 20 54 65 73 74 20 77 | t..@>..1. Test w | +| 69 74 68 20 6E 6F 20 7A 65 72 6F 20 61 6E 64 20 | ith no zero and | +| 6E 6F 20 6D 61 6E 79 2E 0A 40 24 40 3C 53 6C 6F | no many..@$@<Slo | +| 74 68 40 3E 40 7B 4E 6F 20 7A 65 72 6F 20 61 6E | th@>@{No zero an | +| 64 20 6E 6F 20 6D 61 6E 79 20 69 6E 20 74 68 69 | d no many in thi | +| 73 20 6D 61 63 72 6F 40 7D 0A 0A 32 2E 20 54 65 | s macro@}..2. Te | +| 73 74 20 77 69 74 68 20 61 20 7A 65 72 6F 2E 0A | st with a zero.. | +| 40 24 40 3C 53 6C 6F 74 68 20 7A 65 72 6F 40 3E | @$@<Sloth zero@> | +| 40 5A 40 7B 43 61 6E 20 62 65 20 63 61 6C 6C 65 | @Z@{Can be calle | +| 64 20 66 72 6F 6D 20 30 20 74 6F 20 31 20 74 69 | d from 0 to 1 ti | +| 6D 65 73 2E 40 7D 0A 0A 33 2E 20 54 65 73 74 20 | mes.@}..3. Test | +| 77 69 74 68 20 61 20 6D 61 6E 79 2E 0A 40 24 40 | with a many..@$@ | +| 3C 53 6C 6F 74 68 20 6D 61 6E 79 40 3E 40 4D 40 | <Sloth many@>@M@ | +| 7B 43 61 6E 20 62 65 20 63 61 6C 6C 65 64 20 66 | {Can be called f | +| 72 6F 6D 20 31 20 74 6F 20 69 6E 66 69 6E 69 74 | rom 1 to infinit | +| 79 20 74 69 6D 65 73 2E 40 7D 0A 0A 34 2E 20 54 | y times.@}..4. T | +| 65 73 74 20 77 69 74 68 20 61 20 7A 65 72 6F 20 | est with a zero | +| 61 6E 64 20 61 20 6D 61 6E 79 2E 0A 40 24 40 3C | and a many..@$@< | +| 53 6C 6F 74 68 20 7A 65 72 6F 6D 61 6E 79 40 3E | Sloth zeromany@> | +| 40 5A 40 4D 40 7B 43 61 6E 20 62 65 20 63 61 6C | @Z@M@{Can be cal | +| 6C 65 64 20 66 72 6F 6D 20 30 20 74 6F 20 69 6E | led from 0 to in | +| 66 69 6E 69 74 79 20 74 69 6D 65 73 2E 40 7D 0A | finity times.@}. | +| 0A 35 2E 20 54 65 73 74 20 77 69 74 68 20 61 20 | .5. Test with a | +| 7A 65 72 6F 20 61 6E 64 20 61 20 6D 61 6E 79 20 | zero and a many | +| 62 75 74 20 6F 75 74 20 6F 66 20 6F 72 64 65 72 | but out of order | +| 20 28 73 68 6F 75 6C 64 20 67 69 76 65 20 65 72 | (should give er | +| 72 6F 72 29 2E 0A 40 24 40 3C 53 6C 6F 74 68 20 | ror)..@$@<Sloth | +| 6D 61 6E 79 7A 65 72 6F 40 3E 40 4D 40 5A 40 7B | manyzero@>@M@Z@{ | +| 4F 6F 70 73 2E 40 7D 0A 40 41 40 3C 45 72 72 6F | Oops.@}.@A@<Erro | +| 72 20 72 65 63 6F 76 65 72 79 20 70 6F 69 6E 74 | r recovery point | +| 40 3E 0A 0A 36 2E 20 54 65 73 74 20 77 69 74 68 | @>..6. Test with | +| 20 73 79 6E 74 61 63 74 69 63 20 65 72 72 6F 72 | syntactic error | +| 73 2E 0A 0A 40 24 40 3C 53 6C 6F 74 68 20 61 40 | s...@$@<Sloth a@ | +| 3E 20 40 4D 20 40 5A 20 40 7B 4F 6F 70 73 2E 40 | > @M @Z @{Oops.@ | +| 7D 0A 40 41 40 3C 45 72 72 6F 72 20 72 65 63 6F | }.@A@<Error reco | +| 76 65 72 79 20 70 6F 69 6E 74 40 3E 0A 0A 40 24 | very point@>..@$ | +| 40 3C 53 6C 6F 74 68 20 62 40 3E 40 5A 40 5A 40 | @<Sloth b@>@Z@Z@ | +| 7B 4F 6F 70 73 2E 40 7D 0A 40 41 40 3C 45 72 72 | {Oops.@}.@A@<Err | +| 6F 72 20 72 65 63 6F 76 65 72 79 20 70 6F 69 6E | or recovery poin | +| 74 40 3E 0A 0A 40 24 40 3C 53 6C 6F 74 68 20 63 | t@>..@$@<Sloth c | +| 40 5A 40 3E 40 7B 4F 6F 70 73 2E 40 7D 0A 40 41 | @Z@>@{Oops.@}.@A | +| 40 3C 45 72 72 6F 72 20 72 65 63 6F 76 65 72 79 | @<Error recovery | +| 20 70 6F 69 6E 74 40 3E 0A 0A 40 24 40 3C 53 6C | point@>..@$@<Sl | +| 6F 74 68 20 64 40 3E 5A 40 7B 4F 6F 70 73 2E 40 | oth d@>Z@{Oops.@ | +| 7D 0A 40 41 40 3C 45 72 72 6F 72 20 72 65 63 6F | }.@A@<Error reco | +| 76 65 72 79 20 70 6F 69 6E 74 40 3E 0A 0A 40 24 | very point@>..@$ | +| 40 3C 53 6C 6F 74 68 20 64 40 3E 40 5A 4D 40 7B | @<Sloth d@>@ZM@{ | +| 4F 6F 70 73 2E 40 7D 0A 40 41 40 3C 45 72 72 6F | Oops.@}.@A@<Erro | +| 72 20 72 65 63 6F 76 65 72 79 20 70 6F 69 6E 74 | r recovery point | +| 40 3E 0A 0A 0A | @>... | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| PR06: Test the parsing on invocation number constraints.<010> +00002 00002| <010> +00003 00003| Trip the parser so we don't get past it.<010> +00004 00004| @><010> +00005 00005| <010> +00006 00006| 1. Test with no zero and no many.<010> +00007 00007| @$@<Sloth@>@{No zero and no many in this macro@}<010> +00008 00008| <010> +00009 00009| 2. Test with a zero.<010> +00010 00010| @$@<Sloth zero@>@Z@{Can be called from 0 to 1 times.@}<010> +00011 00011| <010> +00012 00012| 3. Test with a many.<010> +00013 00013| @$@<Sloth many@>@M@{Can be called from 1 to infinity times.@}<010> +00014 00014| <010> +00015 00015| 4. Test with a zero and a many.<010> +00016 00016| @$@<Sloth zeromany@>@Z@M@{Can be called from 0 to infinity times.@}<010> +00017 00017| <010> +00018 00018| 5. Test with a zero and a many but out of order (should give error).<010> +00019 00019| @$@<Sloth manyzero@>@M@Z@{Oops.@}<010> +00020 00020| @A@<Error recovery point@><010> +00021 00021| <010> +00022 00022| 6. Test with syntactic errors.<010> +00023 00023| <010> +00024 00024| @$@<Sloth a@> @M @Z @{Oops.@}<010> +00025 00025| @A@<Error recovery point@><010> +00026 00026| <010> +00027 00027| @$@<Sloth b@>@Z@Z@{Oops.@}<010> +00028 00028| @A@<Error recovery point@><010> +00029 00029| <010> +00030 00030| @$@<Sloth c@Z@>@{Oops.@}<010> +00031 00031| @A@<Error recovery point@><010> +00032 00032| <010> +00033 00033| @$@<Sloth d@>Z@{Oops.@}<010> +00034 00034| @A@<Error recovery point@><010> +00035 00035| <010> +00036 00036| @$@<Sloth d@>@ZM@{Oops.@}<010> +00037 00037| @A@<Error recovery point@><010> +00038 00038| <010> +00039 00039| <010> +00040 00040| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 131 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="PR06: Test the parsing on invocation number constraints.<010> +<010> +Trip the parser so we don't get past it.<010> +" +0004[01]: @> Close name. +0004[03]: Text. Text scrap[Grey]="<010> +<010> +1. Test with no zero and no many.<010> +" +0007[01]: @$ Macro defn. +0007[03]: @< Open name. +0007[05]: Text. Text scrap[Grey]="Sloth" +0007[10]: @> Close name. +0007[12]: @{ Open defn. +0007[14]: Text. Text scrap[Grey]="No zero and no many in this macro" +0007[47]: @} Close defn. +0007[49]: Text. Text scrap[Grey]="<010> +<010> +2. Test with a zero.<010> +" +0010[01]: @$ Macro defn. +0010[03]: @< Open name. +0010[05]: Text. Text scrap[Grey]="Sloth zero" +0010[15]: @> Close name. +0010[17]: @Z Zero calls. +0010[19]: @{ Open defn. +0010[21]: Text. Text scrap[Grey]="Can be called from 0 to 1 times." +0010[53]: @} Close defn. +0010[55]: Text. Text scrap[Grey]="<010> +<010> +3. Test with a many.<010> +" +0013[01]: @$ Macro defn. +0013[03]: @< Open name. +0013[05]: Text. Text scrap[Grey]="Sloth many" +0013[15]: @> Close name. +0013[17]: @M Many calls. +0013[19]: @{ Open defn. +0013[21]: Text. Text scrap[Grey]="Can be called from 1 to infinity times." +0013[60]: @} Close defn. +0013[62]: Text. Text scrap[Grey]="<010> +<010> +4. Test with a zero and a many.<010> +" +0016[01]: @$ Macro defn. +0016[03]: @< Open name. +0016[05]: Text. Text scrap[Grey]="Sloth zeromany" +0016[19]: @> Close name. +0016[21]: @Z Zero calls. +0016[23]: @M Many calls. +0016[25]: @{ Open defn. +0016[27]: Text. Text scrap[Grey]="Can be called from 0 to infinity times." +0016[66]: @} Close defn. +0016[68]: Text. Text scrap[Grey]="<010> +<010> +5. Test with a zero and a many but out of order (should give error).<010> +" +0019[01]: @$ Macro defn. +0019[03]: @< Open name. +0019[05]: Text. Text scrap[Grey]="Sloth manyzero" +0019[19]: @> Close name. +0019[21]: @M Many calls. +0019[23]: @Z Zero calls. +0019[25]: @{ Open defn. +0019[27]: Text. Text scrap[Grey]="Oops." +0019[32]: @} Close defn. +0019[34]: Text. Text scrap[White]="<010> +" +0020[01]: @A New section (Level 1). +0020[03]: @< Open name. +0020[05]: Text. Text scrap[Grey]="Error recovery point" +0020[25]: @> Close name. +0020[27]: Text. Text scrap[Grey]="<010> +<010> +6. Test with syntactic errors.<010> +<010> +" +0024[01]: @$ Macro defn. +0024[03]: @< Open name. +0024[05]: Text. Text scrap[Grey]="Sloth a" +0024[12]: @> Close name. +0024[14]: Text. Text scrap[White]=" " +0024[15]: @M Many calls. +0024[17]: Text. Text scrap[White]=" " +0024[18]: @Z Zero calls. +0024[20]: Text. Text scrap[White]=" " +0024[21]: @{ Open defn. +0024[23]: Text. Text scrap[Grey]="Oops." +0024[28]: @} Close defn. +0024[30]: Text. Text scrap[White]="<010> +" +0025[01]: @A New section (Level 1). +0025[03]: @< Open name. +0025[05]: Text. Text scrap[Grey]="Error recovery point" +0025[25]: @> Close name. +0025[27]: Text. Text scrap[White]="<010> +<010> +" +0027[01]: @$ Macro defn. +0027[03]: @< Open name. +0027[05]: Text. Text scrap[Grey]="Sloth b" +0027[12]: @> Close name. +0027[14]: @Z Zero calls. +0027[16]: @Z Zero calls. +0027[18]: @{ Open defn. +0027[20]: Text. Text scrap[Grey]="Oops." +0027[25]: @} Close defn. +0027[27]: Text. Text scrap[White]="<010> +" +0028[01]: @A New section (Level 1). +0028[03]: @< Open name. +0028[05]: Text. Text scrap[Grey]="Error recovery point" +0028[25]: @> Close name. +0028[27]: Text. Text scrap[White]="<010> +<010> +" +0030[01]: @$ Macro defn. +0030[03]: @< Open name. +0030[05]: Text. Text scrap[Grey]="Sloth c" +0030[12]: @Z Zero calls. +0030[14]: @> Close name. +0030[16]: @{ Open defn. +0030[18]: Text. Text scrap[Grey]="Oops." +0030[23]: @} Close defn. +0030[25]: Text. Text scrap[White]="<010> +" +0031[01]: @A New section (Level 1). +0031[03]: @< Open name. +0031[05]: Text. Text scrap[Grey]="Error recovery point" +0031[25]: @> Close name. +0031[27]: Text. Text scrap[White]="<010> +<010> +" +0033[01]: @$ Macro defn. +0033[03]: @< Open name. +0033[05]: Text. Text scrap[Grey]="Sloth d" +0033[12]: @> Close name. +0033[14]: Text. Text scrap[Grey]="Z" +0033[15]: @{ Open defn. +0033[17]: Text. Text scrap[Grey]="Oops." +0033[22]: @} Close defn. +0033[24]: Text. Text scrap[White]="<010> +" +0034[01]: @A New section (Level 1). +0034[03]: @< Open name. +0034[05]: Text. Text scrap[Grey]="Error recovery point" +0034[25]: @> Close name. +0034[27]: Text. Text scrap[White]="<010> +<010> +" +0036[01]: @$ Macro defn. +0036[03]: @< Open name. +0036[05]: Text. Text scrap[Grey]="Sloth d" +0036[12]: @> Close name. +0036[14]: @Z Zero calls. +0036[16]: Text. Text scrap[Grey]="M" +0036[17]: @{ Open defn. +0036[19]: Text. Text scrap[Grey]="Oops." +0036[24]: @} Close defn. +0036[26]: Text. Text scrap[White]="<010> +" +0037[01]: @A New section (Level 1). +0037[03]: @< Open name. +0037[05]: Text. Text scrap[Grey]="Error recovery point" +0037[25]: @> Close name. +0037[27]: Text. Text scrap[White]="<010> +<010> +<010> +" +0040[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + + +========================== Start of MACRO TABLE DUMP =========================== + + +------------------- 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 : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=1, Pos(L,C)=(7,3), Expression follows: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="No zero and no many in this macro" +------ End Text Element ------ + +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Sloth a" +Defined? : No. +-------------------- End of Macro Dump --------------------- + + + +------------------- 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 : + +--Start of List of Body Parts-- +This macro has 0 body parts. +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Sloth d" +Defined? : No. +-------------------- End of Macro Dump --------------------- + + + +------------------- 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 : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=3, Pos(L,C)=(13,3), Expression follows: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Can be called from 1 to infinity times." +------ End Text Element ------ + +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- 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 : + +--Start of List of Body Parts-- +This macro has 0 body parts. +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- 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 : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=2, Pos(L,C)=(10,3), Expression follows: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Can be called from 0 to 1 times." +------ End Text Element ------ + +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- 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 : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=4, Pos(L,C)=(16,3), Expression follows: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Can be called from 0 to infinity times." +------ End Text Element ------ + +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +=========================== End of MACRO TABLE DUMP ============================ + + +========================= Start of DOCUMENT LIST DUMP ========================== + + +TEXT COMPONENT: Pos(L,C)=(1,1). + +-- Start of Text Scrap List -- +Text scrap[Grey]="PR06: Test the parsing on invocation number constraints.<010> +<010> +Trip the parser so we don't get past it.<010> +" +--- End of Text Scrap List --- + + +TEXT COMPONENT: Pos(L,C)=(4,3). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +1. Test with no zero and no many.<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(7,1). +Part 1 of macro @<Sloth@>. + +TEXT COMPONENT: Pos(L,C)=(7,49). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +2. Test with a zero.<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(10,1). +Part 1 of macro @<Sloth zero@>. + +TEXT COMPONENT: Pos(L,C)=(10,55). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +3. Test with a many.<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(13,1). +Part 1 of macro @<Sloth many@>. + +TEXT COMPONENT: Pos(L,C)=(13,62). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +4. Test with a zero and a many.<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(16,1). +Part 1 of macro @<Sloth zeromany@>. + +TEXT COMPONENT: Pos(L,C)=(16,68). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +5. Test with a zero and a many but out of order (should give error).<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "1", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(20,27). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +6. Test with syntactic errors.<010> +<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "2", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(25,27). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "3", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(28,27). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "4", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(31,27). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "5", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(34,27). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "6", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(37,27). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +<010> +<010> +" +--- End of Text Scrap List --- + + +========================== End of DOCUMENT LIST DUMP =========================== + + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| PR06: Test the parsing on invocation number constraints. + 2 2| + 3 3| Trip the parser so we don't get past it. + 4 4| @> + Error|.^The parser was at the top level and was expecting + |.^one of: {Directive, Text, Macro definition, EOF}. + 5 5| + 6 6| 1. Test with no zero and no many. + 7 7| @$@<Sloth@>@{No zero and no many in this macro@} + 8 8| + 9 9| 2. Test with a zero. + 10 10| @$@<Sloth zero@>@Z@{Can be called from 0 to 1 times.@} + 11 11| + 12 12| 3. Test with a many. + 13 13| @$@<Sloth many@>@M@{Can be called from 1 to infinity times.@} + 14 14| + 15 15| 4. Test with a zero and a many. + 16 16| @$@<Sloth zeromany@>@Z@M@{Can be called from 0 to infinity times.@} + 17 17| + 18 18| 5. Test with a zero and a many but out of order (should give error). + 19 19| @$@<Sloth manyzero@>@M@Z@{Oops.@} + Error|.......................^Expecting '@{'. + |.......................^Skipping after error to the next major construct... + 20 20| @A@<Error recovery point@> + |.^...skipped to here after the error. + 21 21| + 22 22| 6. Test with syntactic errors. + 23 23| + 24 24| @$@<Sloth a@> @M @Z @{Oops.@} + Error|..............^Expecting "==@{" or "+=@{" or just "@{". + |..............^(or @Z or @M if they have not already appeared). + |..............^Note: FunnelWeb is intolerant of spaces at this point. + |...............^Skipping after error to the next major construct... + 25 25| @A@<Error recovery point@> + |.^...skipped to here after the error. + 26 26| + 27 27| @$@<Sloth b@>@Z@Z@{Oops.@} + Error|................^Expecting '@{'. + |................^Skipping after error to the next major construct... + 28 28| @A@<Error recovery point@> + |.^...skipped to here after the error. + 29 29| + 30 30| @$@<Sloth c@Z@>@{Oops.@} + Error|............^Illegal character or symbol in name. + |............^Skipping after error to the next major construct... + 31 31| @A@<Error recovery point@> + |.^...skipped to here after the error. + 32 32| + 33 33| @$@<Sloth d@>Z@{Oops.@} + Error|..............^Expecting "==@{" or "+=@{" or just "@{". + |..............^(or @Z or @M if they have not already appeared). + |..............^Note: FunnelWeb is intolerant of spaces at this point. + |...............^Skipping after error to the next major construct... + 34 34| @A@<Error recovery point@> + |.^...skipped to here after the error. + 35 35| + 36 36| @$@<Sloth d@>@ZM@{Oops.@} + Error|................^Expecting "==@{" or "+=@{" or just "@{". + |................^(or @Z or @M if they have not already appeared). + |................^Note: FunnelWeb is intolerant of spaces at this point. + |.................^Skipping after error to the next major construct... + 37 37| @A@<Error recovery point@> + |.^...skipped to here after the error. + 38 38| + 39 39| + | <End-Of-File> +------------+------------------------------------------------------------------- + +There were 7 Errors. diff --git a/web/funnelAC/answers/pr07.lis b/web/funnelAC/answers/pr07.lis new file mode 100644 index 0000000000..d0f47f77c6 --- /dev/null +++ b/web/funnelAC/answers/pr07.lis @@ -0,0 +1,613 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 50 52 30 37 3A 20 54 65 73 74 20 74 68 65 20 70 | PR07: Test the p | +| 61 72 73 69 6E 67 20 6F 66 20 3D 3D 20 61 6E 64 | arsing of == and | +| 20 2B 3D 20 69 6E 20 6D 61 63 72 6F 20 64 65 66 | += in macro def | +| 69 6E 69 74 69 6F 6E 73 2E 0A 0A 54 72 69 70 20 | initions...Trip | +| 74 68 65 20 70 61 72 73 65 72 20 73 6F 20 77 65 | the parser so we | +| 20 64 6F 6E 27 74 20 67 65 74 20 61 6E 79 20 66 | don't get any f | +| 75 72 74 68 65 72 2E 0A 40 3E 0A 0A 31 2E 20 54 | urther..@>..1. T | +| 65 73 74 20 77 69 74 68 20 6E 6F 20 65 71 75 61 | est with no equa | +| 6C 73 2E 0A 40 24 40 3C 53 6C 6F 74 68 40 3E 40 | ls..@$@<Sloth@>@ | +| 7B 4E 6F 20 65 71 75 61 6C 73 20 69 6E 20 74 68 | {No equals in th | +| 69 73 20 6D 61 63 72 6F 20 64 65 66 69 6E 69 74 | is macro definit | +| 69 6F 6E 2E 40 7D 0A 0A 32 2E 20 54 65 73 74 20 | ion.@}..2. Test | +| 77 69 74 68 20 3D 3D 2E 0A 40 24 40 3C 53 6C 6F | with ==..@$@<Slo | +| 74 68 20 77 69 74 68 20 65 71 75 61 6C 73 40 3E | th with equals@> | +| 3D 3D 40 7B 4E 6F 20 65 71 75 61 6C 73 20 69 6E | ==@{No equals in | +| 20 74 68 69 73 20 6D 61 63 72 6F 20 64 65 66 69 | this macro defi | +| 6E 69 74 69 6F 6E 2E 40 7D 0A 0A 33 2E 20 54 65 | nition.@}..3. Te | +| 73 74 20 77 69 74 68 20 2B 3D 2E 0A 40 24 40 3C | st with +=..@$@< | +| 53 6C 6F 74 68 20 77 69 74 68 20 70 6C 75 73 40 | Sloth with plus@ | +| 3E 2B 3D 40 7B 4E 6F 20 65 71 75 61 6C 73 20 69 | >+=@{No equals i | +| 6E 20 74 68 69 73 20 6D 61 63 72 6F 20 64 65 66 | n this macro def | +| 69 6E 69 74 69 6F 6E 2E 40 7D 0A 0A 34 2E 20 54 | inition.@}..4. T | +| 65 73 74 20 77 69 74 68 20 73 79 6E 74 61 78 20 | est with syntax | +| 65 72 72 6F 72 73 2E 0A 0A 40 24 40 3C 45 72 72 | errors...@$@<Err | +| 6F 72 31 40 3E 2B 2B 40 7B 4E 6F 20 65 71 75 61 | or1@>++@{No equa | +| 6C 73 20 69 6E 20 74 68 69 73 20 6D 61 63 72 6F | ls in this macro | +| 20 64 65 66 69 6E 69 74 69 6F 6E 2E 40 7D 0A 40 | definition.@}.@ | +| 41 40 3C 45 72 72 6F 72 20 72 65 63 6F 76 65 72 | A@<Error recover | +| 79 20 70 6F 69 6E 74 40 3E 0A 0A 40 24 40 3C 45 | y point@>..@$@<E | +| 72 72 6F 72 32 40 3E 40 2B 3D 40 7B 4E 6F 20 65 | rror2@>@+=@{No e | +| 71 75 61 6C 73 20 69 6E 20 74 68 69 73 20 6D 61 | quals in this ma | +| 63 72 6F 20 64 65 66 69 6E 69 74 69 6F 6E 2E 40 | cro definition.@ | +| 7D 0A 40 41 40 3C 45 72 72 6F 72 20 72 65 63 6F | }.@A@<Error reco | +| 76 65 72 79 20 70 6F 69 6E 74 40 3E 0A 0A 40 24 | very point@>..@$ | +| 40 3C 45 72 72 6F 72 33 40 3E 2B 3D 3D 2B 40 7B | @<Error3@>+==+@{ | +| 4E 6F 20 65 71 75 61 6C 73 20 69 6E 20 74 68 69 | No equals in thi | +| 73 20 6D 61 63 72 6F 20 64 65 66 69 6E 69 74 69 | s macro definiti | +| 6F 6E 2E 40 7D 0A 40 41 40 3C 45 72 72 6F 72 20 | on.@}.@A@<Error | +| 72 65 63 6F 76 65 72 79 20 70 6F 69 6E 74 40 3E | recovery point@> | +| 0A 0A 40 24 40 3C 45 72 72 6F 72 34 40 3E 3D 2B | ..@$@<Error4@>=+ | +| 40 7B 4E 6F 20 65 71 75 61 6C 73 20 69 6E 20 74 | @{No equals in t | +| 68 69 73 20 6D 61 63 72 6F 20 64 65 66 69 6E 69 | his macro defini | +| 74 69 6F 6E 2E 40 7D 0A 40 41 40 3C 45 72 72 6F | tion.@}.@A@<Erro | +| 72 20 72 65 63 6F 76 65 72 79 20 70 6F 69 6E 74 | r recovery point | +| 40 3E 0A 0A 40 24 40 3C 45 72 72 6F 72 34 40 3E | @>..@$@<Error4@> | +| 40 3D 40 3D 40 7B 4E 6F 20 65 71 75 61 6C 73 20 | @=@=@{No equals | +| 69 6E 20 74 68 69 73 20 6D 61 63 72 6F 20 64 65 | in this macro de | +| 66 69 6E 69 74 69 6F 6E 2E 40 7D 0A 40 41 40 3C | finition.@}.@A@< | +| 45 72 72 6F 72 20 72 65 63 6F 76 65 72 79 20 70 | Error recovery p | +| 6F 69 6E 74 40 3E 0A 0A 40 24 40 3C 45 72 72 6F | oint@>..@$@<Erro | +| 72 34 40 3E 40 2B 40 3D 40 7B 4E 6F 20 65 71 75 | r4@>@+@=@{No equ | +| 61 6C 73 20 69 6E 20 74 68 69 73 20 6D 61 63 72 | als in this macr | +| 6F 20 64 65 66 69 6E 69 74 69 6F 6E 2E 40 7D 0A | o definition.@}. | +| 40 41 40 3C 45 72 72 6F 72 20 72 65 63 6F 76 65 | @A@<Error recove | +| 72 79 20 70 6F 69 6E 74 40 3E 0A 0A 0A 0A | ry point@>.... | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| PR07: Test the parsing of == and += in macro definitions.<010> +00002 00002| <010> +00003 00003| Trip the parser so we don't get any further.<010> +00004 00004| @><010> +00005 00005| <010> +00006 00006| 1. Test with no equals.<010> +00007 00007| @$@<Sloth@>@{No equals in this macro definition.@}<010> +00008 00008| <010> +00009 00009| 2. Test with ==.<010> +00010 00010| @$@<Sloth with equals@>==@{No equals in this macro definition.@}<010> +00011 00011| <010> +00012 00012| 3. Test with +=.<010> +00013 00013| @$@<Sloth with plus@>+=@{No equals in this macro definition.@}<010> +00014 00014| <010> +00015 00015| 4. Test with syntax errors.<010> +00016 00016| <010> +00017 00017| @$@<Error1@>++@{No equals in this macro definition.@}<010> +00018 00018| @A@<Error recovery point@><010> +00019 00019| <010> +00020 00020| @$@<Error2@>@+=@{No equals in this macro definition.@}<010> +00021 00021| @A@<Error recovery point@><010> +00022 00022| <010> +00023 00023| @$@<Error3@>+==+@{No equals in this macro definition.@}<010> +00024 00024| @A@<Error recovery point@><010> +00025 00025| <010> +00026 00026| @$@<Error4@>=+@{No equals in this macro definition.@}<010> +00027 00027| @A@<Error recovery point@><010> +00028 00028| <010> +00029 00029| @$@<Error4@>@=@=@{No equals in this macro definition.@}<010> +00030 00030| @A@<Error recovery point@><010> +00031 00031| <010> +00032 00032| @$@<Error4@>@+@=@{No equals in this macro definition.@}<010> +00033 00033| @A@<Error recovery point@><010> +00034 00034| <010> +00035 00035| <010> +00036 00036| <010> +00037 00037| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 114 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="PR07: Test the parsing of == and += in macro definitions.<010> +<010> +Trip the parser so we don't get any further.<010> +" +0004[01]: @> Close name. +0004[03]: Text. Text scrap[Grey]="<010> +<010> +1. Test with no equals.<010> +" +0007[01]: @$ Macro defn. +0007[03]: @< Open name. +0007[05]: Text. Text scrap[Grey]="Sloth" +0007[10]: @> Close name. +0007[12]: @{ Open defn. +0007[14]: Text. Text scrap[Grey]="No equals in this macro definition." +0007[49]: @} Close defn. +0007[51]: Text. Text scrap[Grey]="<010> +<010> +2. Test with ==.<010> +" +0010[01]: @$ Macro defn. +0010[03]: @< Open name. +0010[05]: Text. Text scrap[Grey]="Sloth with equals" +0010[22]: @> Close name. +0010[24]: Text. Text scrap[Grey]="==" +0010[26]: @{ Open defn. +0010[28]: Text. Text scrap[Grey]="No equals in this macro definition." +0010[63]: @} Close defn. +0010[65]: Text. Text scrap[Grey]="<010> +<010> +3. Test with +=.<010> +" +0013[01]: @$ Macro defn. +0013[03]: @< Open name. +0013[05]: Text. Text scrap[Grey]="Sloth with plus" +0013[20]: @> Close name. +0013[22]: Text. Text scrap[Grey]="+=" +0013[24]: @{ Open defn. +0013[26]: Text. Text scrap[Grey]="No equals in this macro definition." +0013[61]: @} Close defn. +0013[63]: Text. Text scrap[Grey]="<010> +<010> +4. Test with syntax errors.<010> +<010> +" +0017[01]: @$ Macro defn. +0017[03]: @< Open name. +0017[05]: Text. Text scrap[Grey]="Error1" +0017[11]: @> Close name. +0017[13]: Text. Text scrap[Grey]="++" +0017[15]: @{ Open defn. +0017[17]: Text. Text scrap[Grey]="No equals in this macro definition." +0017[52]: @} Close defn. +0017[54]: Text. Text scrap[White]="<010> +" +0018[01]: @A New section (Level 1). +0018[03]: @< Open name. +0018[05]: Text. Text scrap[Grey]="Error recovery point" +0018[25]: @> Close name. +0018[27]: Text. Text scrap[White]="<010> +<010> +" +0020[01]: @$ Macro defn. +0020[03]: @< Open name. +0020[05]: Text. Text scrap[Grey]="Error2" +0020[11]: @> Close name. +0020[13]: Text. Text scrap[White]="<010> +" +0020[15]: Text. Text scrap[Grey]="=" +0020[16]: @{ Open defn. +0020[18]: Text. Text scrap[Grey]="No equals in this macro definition." +0020[53]: @} Close defn. +0020[55]: Text. Text scrap[White]="<010> +" +0021[01]: @A New section (Level 1). +0021[03]: @< Open name. +0021[05]: Text. Text scrap[Grey]="Error recovery point" +0021[25]: @> Close name. +0021[27]: Text. Text scrap[White]="<010> +<010> +" +0023[01]: @$ Macro defn. +0023[03]: @< Open name. +0023[05]: Text. Text scrap[Grey]="Error3" +0023[11]: @> Close name. +0023[13]: Text. Text scrap[Grey]="+==+" +0023[17]: @{ Open defn. +0023[19]: Text. Text scrap[Grey]="No equals in this macro definition." +0023[54]: @} Close defn. +0023[56]: Text. Text scrap[White]="<010> +" +0024[01]: @A New section (Level 1). +0024[03]: @< Open name. +0024[05]: Text. Text scrap[Grey]="Error recovery point" +0024[25]: @> Close name. +0024[27]: Text. Text scrap[White]="<010> +<010> +" +0026[01]: @$ Macro defn. +0026[03]: @< Open name. +0026[05]: Text. Text scrap[Grey]="Error4" +0026[11]: @> Close name. +0026[13]: Text. Text scrap[Grey]="=+" +0026[15]: @{ Open defn. +0026[17]: Text. Text scrap[Grey]="No equals in this macro definition." +0026[52]: @} Close defn. +0026[54]: Text. Text scrap[White]="<010> +" +0027[01]: @A New section (Level 1). +0027[03]: @< Open name. +0027[05]: Text. Text scrap[Grey]="Error recovery point" +0027[25]: @> Close name. +0027[27]: Text. Text scrap[White]="<010> +<010> +" +0029[01]: @$ Macro defn. +0029[03]: @< Open name. +0029[05]: Text. Text scrap[Grey]="Error4" +0029[11]: @> Close name. +0029[16]: Text. Text scrap[Grey]="=" +0029[17]: @{ Open defn. +0029[19]: Text. Text scrap[Grey]="No equals in this macro definition." +0029[54]: @} Close defn. +0029[56]: Text. Text scrap[White]="<010> +" +0030[01]: @A New section (Level 1). +0030[03]: @< Open name. +0030[05]: Text. Text scrap[Grey]="Error recovery point" +0030[25]: @> Close name. +0030[27]: Text. Text scrap[White]="<010> +<010> +" +0032[01]: @$ Macro defn. +0032[03]: @< Open name. +0032[05]: Text. Text scrap[Grey]="Error4" +0032[11]: @> Close name. +0032[13]: Text. Text scrap[White]="<010> +" +0032[18]: Text. Text scrap[Grey]="{No equals in this macro definition." +0032[54]: @} Close defn. +0032[56]: Text. Text scrap[White]="<010> +" +0033[01]: @A New section (Level 1). +0033[03]: @< Open name. +0033[05]: Text. Text scrap[Grey]="Error recovery point" +0033[25]: @> Close name. +0033[27]: Text. Text scrap[White]="<010> +<010> +<010> +<010> +" +0037[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + + +========================== Start of MACRO TABLE DUMP =========================== + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Error1" +Defined? : No. +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Error2" +Defined? : No. +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Error3" +Defined? : No. +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Error4" +Defined? : No. +-------------------- End of Macro Dump --------------------- + + + +------------------- 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 : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=1, Pos(L,C)=(7,3), Expression follows: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="No equals in this macro definition." +------ End Text Element ------ + +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Sloth with equals" +Defined? : Yes. +Parameters : 0 +Additive? : No. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=2, Pos(L,C)=(10,3), Expression follows: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="No equals in this macro definition." +------ End Text Element ------ + +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Sloth with plus" +Defined? : Yes. +Parameters : 0 +Additive? : Yes. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=3, Pos(L,C)=(13,3), Expression follows: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="No equals in this macro definition." +------ End Text Element ------ + +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +=========================== End of MACRO TABLE DUMP ============================ + + +========================= Start of DOCUMENT LIST DUMP ========================== + + +TEXT COMPONENT: Pos(L,C)=(1,1). + +-- Start of Text Scrap List -- +Text scrap[Grey]="PR07: Test the parsing of == and += in macro definitions.<010> +<010> +Trip the parser so we don't get any further.<010> +" +--- End of Text Scrap List --- + + +TEXT COMPONENT: Pos(L,C)=(4,3). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +1. Test with no equals.<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(7,1). +Part 1 of macro @<Sloth@>. + +TEXT COMPONENT: Pos(L,C)=(7,51). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +2. Test with ==.<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(10,1). +Part 1 of macro @<Sloth with equals@>. + +TEXT COMPONENT: Pos(L,C)=(10,65). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +3. Test with +=.<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(13,1). +Part 1 of macro @<Sloth with plus@>. + +TEXT COMPONENT: Pos(L,C)=(13,63). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +4. Test with syntax errors.<010> +<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "1", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(18,27). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "2", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(21,27). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "3", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(24,27). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "4", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(27,27). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "5", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(30,27). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "6", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(33,27). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +<010> +<010> +<010> +" +--- End of Text Scrap List --- + + +========================== End of DOCUMENT LIST DUMP =========================== + + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| PR07: Test the parsing of == and += in macro definitions. + 2 2| + 3 3| Trip the parser so we don't get any further. + 4 4| @> + Error|.^The parser was at the top level and was expecting + |.^one of: {Directive, Text, Macro definition, EOF}. + 5 5| + 6 6| 1. Test with no equals. + 7 7| @$@<Sloth@>@{No equals in this macro definition.@} + 8 8| + 9 9| 2. Test with ==. + 10 10| @$@<Sloth with equals@>==@{No equals in this macro definition.@} + 11 11| + 12 12| 3. Test with +=. + 13 13| @$@<Sloth with plus@>+=@{No equals in this macro definition.@} + 14 14| + 15 15| 4. Test with syntax errors. + 16 16| + 17 17| @$@<Error1@>++@{No equals in this macro definition.@} + Error|.............^Expecting "==@{" or "+=@{" or just "@{". + |.............^(or @Z or @M if they have not already appeared). + |.............^Note: FunnelWeb is intolerant of spaces at this point. + |...............^Skipping after error to the next major construct... + 18 18| @A@<Error recovery point@> + |.^...skipped to here after the error. + 19 19| + 20 20| @$@<Error2@>@+=@{No equals in this macro definition.@} + Error|.............^Expecting "==@{" or "+=@{" or just "@{". + |.............^(or @Z or @M if they have not already appeared). + |.............^Note: FunnelWeb is intolerant of spaces at this point. + |................^Skipping after error to the next major construct... + 21 21| @A@<Error recovery point@> + |.^...skipped to here after the error. + 22 22| + 23 23| @$@<Error3@>+==+@{No equals in this macro definition.@} + Error|.............^Expecting "==@{" or "+=@{" or just "@{". + |.............^(or @Z or @M if they have not already appeared). + |.............^Note: FunnelWeb is intolerant of spaces at this point. + |.................^Skipping after error to the next major construct... + 24 24| @A@<Error recovery point@> + |.^...skipped to here after the error. + 25 25| + 26 26| @$@<Error4@>=+@{No equals in this macro definition.@} + Error|.............^Expecting "==@{" or "+=@{" or just "@{". + |.............^(or @Z or @M if they have not already appeared). + |.............^Note: FunnelWeb is intolerant of spaces at this point. + |...............^Skipping after error to the next major construct... + 27 27| @A@<Error recovery point@> + |.^...skipped to here after the error. + 28 28| + 29 29| @$@<Error4@>@=@=@{No equals in this macro definition.@} + Error|................^Expecting "==@{" or "+=@{" or just "@{". + |................^(or @Z or @M if they have not already appeared). + |................^Note: FunnelWeb is intolerant of spaces at this point. + |.................^Skipping after error to the next major construct... + 30 30| @A@<Error recovery point@> + |.^...skipped to here after the error. + 31 31| + 32 32| @$@<Error4@>@+@=@{No equals in this macro definition.@} + Error|.............^Expecting "==@{" or "+=@{" or just "@{". + |.............^(or @Z or @M if they have not already appeared). + |.............^Note: FunnelWeb is intolerant of spaces at this point. + |......................................................^Skipping after error to the next major construct... + 33 33| @A@<Error recovery point@> + |.^...skipped to here after the error. + 34 34| + 35 35| + 36 36| + | <End-Of-File> +------------+------------------------------------------------------------------- + +There were 7 Errors. diff --git a/web/funnelAC/answers/pr08.lis b/web/funnelAC/answers/pr08.lis new file mode 100644 index 0000000000..8d765756ad --- /dev/null +++ b/web/funnelAC/answers/pr08.lis @@ -0,0 +1,1266 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 50 52 30 38 3A 20 54 65 73 74 20 73 65 6D 61 6E | PR08: Test seman | +| 74 69 63 20 63 68 65 63 6B 69 6E 67 20 6F 66 20 | tic checking of | +| 6D 61 63 72 6F 20 64 65 66 69 6E 69 74 69 6F 6E | macro definition | +| 73 2E 0A 0A 54 72 69 70 20 70 61 72 73 65 72 20 | s...Trip parser | +| 74 6F 20 62 65 20 73 75 72 65 20 74 68 61 74 20 | to be sure that | +| 77 65 20 77 6F 6E 27 74 20 67 65 74 20 61 6E 79 | we won't get any | +| 20 6F 75 74 70 75 74 20 66 69 6C 65 73 21 0A 40 | output files!.@ | +| 3E 0A 0A 31 2E 20 46 69 6C 65 20 6D 61 63 72 6F | >..1. File macro | +| 20 68 61 73 20 70 61 72 61 6D 65 74 65 72 73 2E | has parameters. | +| 20 45 72 72 6F 72 2E 0A 40 4F 40 3C 53 6C 6F 74 | Error..@O@<Slot | +| 68 20 31 40 3E 40 28 40 33 40 29 40 7B 57 61 6C | h 1@>@(@3@)@{Wal | +| 72 75 73 40 7D 0A 40 41 40 3C 45 72 72 6F 72 20 | rus@}.@A@<Error | +| 72 65 63 6F 76 65 72 79 20 70 6F 69 6E 74 40 3E | recovery point@> | +| 0A 0A 32 2E 20 46 69 6C 65 20 6D 61 63 72 6F 20 | ..2. File macro | +| 69 73 20 61 64 64 69 74 69 76 65 2E 20 45 72 72 | is additive. Err | +| 6F 72 2E 0A 40 4F 40 3C 53 6C 6F 74 68 20 32 40 | or..@O@<Sloth 2@ | +| 3E 2B 3D 40 7B 57 61 6C 72 75 73 40 7D 0A 40 41 | >+=@{Walrus@}.@A | +| 40 3C 45 72 72 6F 72 20 72 65 63 6F 76 65 72 79 | @<Error recovery | +| 20 70 6F 69 6E 74 40 3E 0A 0A 33 2E 20 46 69 6C | point@>..3. Fil | +| 65 20 6D 61 63 72 6F 20 68 61 73 20 74 6F 6F 20 | e macro has too | +| 6C 6F 6E 67 20 61 20 6E 61 6D 65 2E 20 54 68 65 | long a name. The | +| 20 74 65 73 74 20 6E 61 6D 65 20 68 61 73 20 31 | test name has 1 | +| 32 30 30 20 63 68 61 72 61 63 74 65 72 73 2E 20 | 200 characters. | +| 45 72 72 2E 0A 4E 6F 74 65 3A 20 54 68 69 73 20 | Err..Note: This | +| 74 65 73 74 20 63 61 6E 27 74 20 74 65 73 74 20 | test can't test | +| 74 68 65 20 65 72 72 6F 72 20 6D 65 73 73 61 67 | the error messag | +| 65 20 69 66 20 74 68 65 20 6D 61 78 69 6D 75 6D | e if the maximum | +| 20 6C 65 6E 67 74 68 20 6F 66 20 61 0A 6D 61 63 | length of a.mac | +| 72 6F 20 6E 61 6D 65 20 69 73 20 6C 65 73 73 20 | ro name is less | +| 74 68 61 6E 20 74 68 65 20 6D 61 78 69 6D 75 6D | than the maximum | +| 20 6C 65 6E 67 74 68 20 6F 66 20 61 20 66 69 6C | length of a fil | +| 65 20 6E 61 6D 65 20 61 73 20 74 68 65 20 6E 61 | e name as the na | +| 6D 65 0A 65 72 72 6F 72 20 69 73 20 63 61 75 67 | me.error is caug | +| 68 74 20 66 69 72 73 74 2E 0A 40 70 20 6D 61 78 | ht first..@p max | +| 69 6D 75 6D 5F 69 6E 70 75 74 5F 6C 69 6E 65 5F | imum_input_line_ | +| 6C 65 6E 67 74 68 20 3D 20 69 6E 66 69 6E 69 74 | length = infinit | +| 79 0A 40 4F 40 3C 31 32 33 34 35 36 37 38 39 30 | y.@O@<1234567890 | +| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | +| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | +| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | +| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | +| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | +| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | +| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | +| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | +| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | +| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | +| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | +| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | +| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | +| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | +| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | +| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | +| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | +| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | +| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | +| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | +| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | +| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | +| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | +| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | +| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | +| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | +| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | +| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | +| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | +| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | +| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | +| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | +| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | +| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | +| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | +| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | +| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | +| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | +| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | +| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | +| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | +| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | +| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | +| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | +| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | +| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | +| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | +| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | +| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | +| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | +| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | +| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | +| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | +| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | +| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | +| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | +| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | +| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | +| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | +| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | +| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | +| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | +| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | +| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | +| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | +| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | +| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | +| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | +| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | +| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | +| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | +| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | +| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | +| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | +| 35 36 37 38 39 30 40 3E 40 7B 40 7D 0A 40 41 40 | 567890@>@{@}.@A@ | +| 3C 45 72 72 6F 72 20 72 65 63 6F 76 65 72 79 20 | <Error recovery | +| 70 6F 69 6E 74 40 3E 0A 0A 34 2E 20 46 69 6C 65 | point@>..4. File | +| 20 6D 61 63 72 6F 20 68 61 73 20 7A 65 72 6F 20 | macro has zero | +| 6F 72 20 6D 61 6E 79 20 61 74 74 72 69 62 75 74 | or many attribut | +| 65 73 2E 20 45 72 72 6F 72 2E 0A 40 4F 40 3C 53 | es. Error..@O@<S | +| 6C 6F 74 68 20 33 40 3E 40 5A 40 7B 57 61 6C 72 | loth 3@>@Z@{Walr | +| 75 73 40 7D 0A 40 41 40 3C 45 72 72 6F 72 20 72 | us@}.@A@<Error r | +| 65 63 6F 76 65 72 79 20 70 6F 69 6E 74 40 3E 0A | ecovery point@>. | +| 0A 40 4F 40 3C 53 6C 6F 74 68 20 34 40 3E 40 4D | .@O@<Sloth 4@>@M | +| 40 7B 57 61 6C 72 75 73 40 7D 0A 40 41 40 3C 45 | @{Walrus@}.@A@<E | +| 72 72 6F 72 20 72 65 63 6F 76 65 72 79 20 70 6F | rror recovery po | +| 69 6E 74 40 3E 0A 0A 40 4F 40 3C 53 6C 6F 74 68 | int@>..@O@<Sloth | +| 20 35 40 3E 40 5A 40 4D 40 7B 57 61 6C 72 75 73 | 5@>@Z@M@{Walrus | +| 40 7D 0A 40 41 40 3C 45 72 72 6F 72 20 72 65 63 | @}.@A@<Error rec | +| 6F 76 65 72 79 20 70 6F 69 6E 74 40 3E 0A 0A 35 | overy point@>..5 | +| 2E 20 50 72 65 76 69 6F 75 73 20 64 65 66 69 6E | . Previous defin | +| 69 74 69 6F 6E 20 69 73 20 66 75 6C 6C 2C 20 63 | ition is full, c | +| 75 72 72 65 6E 74 20 69 73 20 61 64 64 69 74 69 | urrent is additi | +| 76 65 2E 0A 40 24 40 3C 57 61 6C 72 75 73 20 31 | ve..@$@<Walrus 1 | +| 40 3E 3D 3D 40 7B 53 6C 6F 74 68 40 7D 0A 40 24 | @>==@{Sloth@}.@$ | +| 40 3C 57 61 6C 72 75 73 20 31 40 3E 2B 3D 40 7B | @<Walrus 1@>+=@{ | +| 41 61 72 64 76 61 72 6B 40 7D 0A 40 41 40 3C 45 | Aardvark@}.@A@<E | +| 72 72 6F 72 20 72 65 63 6F 76 65 72 79 20 70 6F | rror recovery po | +| 69 6E 74 40 3E 0A 0A 36 2E 20 50 72 65 76 69 6F | int@>..6. Previo | +| 75 73 20 64 65 66 69 6E 69 74 69 6F 6E 20 69 73 | us definition is | +| 20 61 64 64 69 74 69 76 65 2C 20 63 75 72 72 65 | additive, curre | +| 6E 74 20 69 73 20 66 75 6C 6C 2E 0A 40 24 40 3C | nt is full..@$@< | +| 57 61 6C 72 75 73 20 32 40 3E 2B 3D 40 7B 53 6C | Walrus 2@>+=@{Sl | +| 6F 74 68 40 7D 0A 40 24 40 3C 57 61 6C 72 75 73 | oth@}.@$@<Walrus | +| 20 32 40 3E 3D 3D 40 7B 41 61 72 64 76 61 72 6B | 2@>==@{Aardvark | +| 40 7D 0A 40 41 40 3C 45 72 72 6F 72 20 72 65 63 | @}.@A@<Error rec | +| 6F 76 65 72 79 20 70 6F 69 6E 74 40 3E 0A 0A 37 | overy point@>..7 | +| 2E 20 4E 6F 6E 2D 66 69 72 73 74 20 62 6F 64 79 | . Non-first body | +| 20 70 61 72 74 20 6F 66 20 70 61 72 74 69 61 6C | part of partial | +| 20 68 61 73 20 70 61 72 61 6D 65 74 65 72 2E 0A | has parameter.. | +| 40 24 40 3C 55 6E 69 63 6F 72 6E 40 3E 40 28 40 | @$@<Unicorn@>@(@ | +| 33 40 29 2B 3D 40 7B 54 75 72 6B 65 79 40 7D 0A | 3@)+=@{Turkey@}. | +| 40 24 40 3C 55 6E 69 63 6F 72 6E 40 3E 40 28 40 | @$@<Unicorn@>@(@ | +| 33 40 29 2B 3D 40 7B 54 75 72 6B 65 79 40 7D 0A | 3@)+=@{Turkey@}. | +| 40 41 40 3C 45 72 72 6F 72 20 72 65 63 6F 76 65 | @A@<Error recove | +| 72 79 20 70 6F 69 6E 74 40 3E 0A 0A 38 2E 20 5A | ry point@>..8. Z | +| 65 72 6F 20 6F 72 20 6D 61 6E 79 20 61 74 74 72 | ero or many attr | +| 69 62 75 74 65 73 20 6F 6E 20 6E 6F 6E 2D 66 69 | ibutes on non-fi | +| 72 73 74 20 62 6F 64 79 20 70 61 72 74 20 6F 66 | rst body part of | +| 20 61 64 64 69 74 69 76 65 2E 0A 40 24 40 3C 45 | additive..@$@<E | +| 6C 65 70 68 61 6E 74 40 3E 40 5A 40 4D 2B 3D 40 | lephant@>@Z@M+=@ | +| 7B 54 75 72 6B 65 79 40 7D 0A 40 24 40 3C 45 6C | {Turkey@}.@$@<El | +| 65 70 68 61 6E 74 40 3E 40 5A 40 4D 2B 3D 40 7B | ephant@>@Z@M+=@{ | +| 54 75 72 6B 65 79 40 7D 0A 40 41 40 3C 45 72 72 | Turkey@}.@A@<Err | +| 6F 72 20 72 65 63 6F 76 65 72 79 20 70 6F 69 6E | or recovery poin | +| 74 40 3E 0A 0A 39 2E 20 43 68 65 63 6B 20 74 68 | t@>..9. Check th | +| 61 74 20 6E 6F 6E 2D 65 78 69 73 74 65 6E 74 20 | at non-existent | +| 66 6F 72 6D 61 6C 20 70 61 72 61 6D 65 74 65 72 | formal parameter | +| 73 20 61 72 65 20 63 61 75 67 68 74 2E 0A 0A 40 | s are caught...@ | +| 24 40 3C 5A 65 72 6F 40 3E 40 5A 40 7B 53 6C 6F | $@<Zero@>@Z@{Slo | +| 74 68 40 31 57 61 6C 72 75 73 40 7D 0A 40 41 40 | th@1Walrus@}.@A@ | +| 3C 45 72 72 6F 72 20 72 65 63 6F 76 65 72 79 20 | <Error recovery | +| 70 6F 69 6E 74 40 3E 0A 0A 40 24 40 3C 4F 6E 65 | point@>..@$@<One | +| 40 3E 40 28 40 31 40 29 40 5A 40 7B 53 6C 6F 74 | @>@(@1@)@Z@{Slot | +| 68 40 32 57 61 6C 72 75 73 40 7D 0A 40 41 40 3C | h@2Walrus@}.@A@< | +| 45 72 72 6F 72 20 72 65 63 6F 76 65 72 79 20 70 | Error recovery p | +| 6F 69 6E 74 40 3E 0A 0A 40 24 40 3C 4D 61 6E 79 | oint@>..@$@<Many | +| 40 3E 40 28 40 37 40 29 40 5A 40 7B 53 6C 6F 74 | @>@(@7@)@Z@{Slot | +| 68 40 38 57 61 6C 72 75 73 40 7D 0A 40 41 40 3C | h@8Walrus@}.@A@< | +| 45 72 72 6F 72 20 72 65 63 6F 76 65 72 79 20 70 | Error recovery p | +| 6F 69 6E 74 40 3E 0A | oint@>. | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| PR08: Test semantic checking of macro definitions.<010> +00002 00002| <010> +00003 00003| Trip parser to be sure that we won't get any output files!<010> +00004 00004| @><010> +00005 00005| <010> +00006 00006| 1. File macro has parameters. Error.<010> +00007 00007| @O@<Sloth 1@>@(@3@)@{Walrus@}<010> +00008 00008| @A@<Error recovery point@><010> +00009 00009| <010> +00010 00010| 2. File macro is additive. Error.<010> +00011 00011| @O@<Sloth 2@>+=@{Walrus@}<010> +00012 00012| @A@<Error recovery point@><010> +00013 00013| <010> +00014 00014| 3. File macro has too long a name. The test name has 1200 characters. Err.<010> +00015 00015| Note: This test can't test the error message if the maximum length of a<010> +00016 00016| macro name is less than the maximum length of a file name as the name<010> +00017 00017| error is caught first.<010> +00018 00018| @p maximum_input_line_length = infinity<010> +00019 00019| @O@<123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890@>@{@}<010> +00020 00020| @A@<Error recovery point@><010> +00021 00021| <010> +00022 00022| 4. File macro has zero or many attributes. Error.<010> +00023 00023| @O@<Sloth 3@>@Z@{Walrus@}<010> +00024 00024| @A@<Error recovery point@><010> +00025 00025| <010> +00026 00026| @O@<Sloth 4@>@M@{Walrus@}<010> +00027 00027| @A@<Error recovery point@><010> +00028 00028| <010> +00029 00029| @O@<Sloth 5@>@Z@M@{Walrus@}<010> +00030 00030| @A@<Error recovery point@><010> +00031 00031| <010> +00032 00032| 5. Previous definition is full, current is additive.<010> +00033 00033| @$@<Walrus 1@>==@{Sloth@}<010> +00034 00034| @$@<Walrus 1@>+=@{Aardvark@}<010> +00035 00035| @A@<Error recovery point@><010> +00036 00036| <010> +00037 00037| 6. Previous definition is additive, current is full.<010> +00038 00038| @$@<Walrus 2@>+=@{Sloth@}<010> +00039 00039| @$@<Walrus 2@>==@{Aardvark@}<010> +00040 00040| @A@<Error recovery point@><010> +00041 00041| <010> +00042 00042| 7. Non-first body part of partial has parameter.<010> +00043 00043| @$@<Unicorn@>@(@3@)+=@{Turkey@}<010> +00044 00044| @$@<Unicorn@>@(@3@)+=@{Turkey@}<010> +00045 00045| @A@<Error recovery point@><010> +00046 00046| <010> +00047 00047| 8. Zero or many attributes on non-first body part of additive.<010> +00048 00048| @$@<Elephant@>@Z@M+=@{Turkey@}<010> +00049 00049| @$@<Elephant@>@Z@M+=@{Turkey@}<010> +00050 00050| @A@<Error recovery point@><010> +00051 00051| <010> +00052 00052| 9. Check that non-existent formal parameters are caught.<010> +00053 00053| <010> +00054 00054| @$@<Zero@>@Z@{Sloth@1Walrus@}<010> +00055 00055| @A@<Error recovery point@><010> +00056 00056| <010> +00057 00057| @$@<One@>@(@1@)@Z@{Sloth@2Walrus@}<010> +00058 00058| @A@<Error recovery point@><010> +00059 00059| <010> +00060 00060| @$@<Many@>@(@7@)@Z@{Sloth@8Walrus@}<010> +00061 00061| @A@<Error recovery point@><010> +00062 00062| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 245 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="PR08: Test semantic checking of macro definitions.<010> +<010> +Trip parser to be sure that we won't get any output files!<010> +" +0004[01]: @> Close name. +0004[03]: Text. Text scrap[Grey]="<010> +<010> +1. File macro has parameters. Error.<010> +" +0007[01]: @F File defn. +0007[03]: @< Open name. +0007[05]: Text. Text scrap[Grey]="Sloth 1" +0007[12]: @> Close name. +0007[14]: @( Open param. +0007[16]: @n Parameter. Parameterno=3. +0007[18]: @} Close param. +0007[20]: @{ Open defn. +0007[22]: Text. Text scrap[Grey]="Walrus" +0007[28]: @} Close defn. +0007[30]: Text. Text scrap[White]="<010> +" +0008[01]: @A New section (Level 1). +0008[03]: @< Open name. +0008[05]: Text. Text scrap[Grey]="Error recovery point" +0008[25]: @> Close name. +0008[27]: Text. Text scrap[Grey]="<010> +<010> +2. File macro is additive. Error.<010> +" +0011[01]: @F File defn. +0011[03]: @< Open name. +0011[05]: Text. Text scrap[Grey]="Sloth 2" +0011[12]: @> Close name. +0011[14]: Text. Text scrap[Grey]="+=" +0011[16]: @{ Open defn. +0011[18]: Text. Text scrap[Grey]="Walrus" +0011[24]: @} Close defn. +0011[26]: Text. Text scrap[White]="<010> +" +0012[01]: @A New section (Level 1). +0012[03]: @< Open name. +0012[05]: Text. Text scrap[Grey]="Error recovery point" +0012[25]: @> Close name. +0012[27]: Text. Text scrap[Grey]="<010> +<010> +3. File macro has too long a name. The test name has 1200 characters. Err.<010> +Note: This test can't test the error message if the maximum length of a<010> +macro name is less than the maximum length of a file name as the name<010> +error is caught first.<010> +" +0019[01]: @F File defn. +0019[03]: @< Open name. +0019[05]: Text. Text scrap[Grey]="123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" +0019[1205]: @> Close name. +0019[1207]: @{ Open defn. +0019[1209]: @} Close defn. +0019[1211]: Text. Text scrap[White]="<010> +" +0020[01]: @A New section (Level 1). +0020[03]: @< Open name. +0020[05]: Text. Text scrap[Grey]="Error recovery point" +0020[25]: @> Close name. +0020[27]: Text. Text scrap[Grey]="<010> +<010> +4. File macro has zero or many attributes. Error.<010> +" +0023[01]: @F File defn. +0023[03]: @< Open name. +0023[05]: Text. Text scrap[Grey]="Sloth 3" +0023[12]: @> Close name. +0023[14]: @Z Zero calls. +0023[16]: @{ Open defn. +0023[18]: Text. Text scrap[Grey]="Walrus" +0023[24]: @} Close defn. +0023[26]: Text. Text scrap[White]="<010> +" +0024[01]: @A New section (Level 1). +0024[03]: @< Open name. +0024[05]: Text. Text scrap[Grey]="Error recovery point" +0024[25]: @> Close name. +0024[27]: Text. Text scrap[White]="<010> +<010> +" +0026[01]: @F File defn. +0026[03]: @< Open name. +0026[05]: Text. Text scrap[Grey]="Sloth 4" +0026[12]: @> Close name. +0026[14]: @M Many calls. +0026[16]: @{ Open defn. +0026[18]: Text. Text scrap[Grey]="Walrus" +0026[24]: @} Close defn. +0026[26]: Text. Text scrap[White]="<010> +" +0027[01]: @A New section (Level 1). +0027[03]: @< Open name. +0027[05]: Text. Text scrap[Grey]="Error recovery point" +0027[25]: @> Close name. +0027[27]: Text. Text scrap[White]="<010> +<010> +" +0029[01]: @F File defn. +0029[03]: @< Open name. +0029[05]: Text. Text scrap[Grey]="Sloth 5" +0029[12]: @> Close name. +0029[14]: @Z Zero calls. +0029[16]: @M Many calls. +0029[18]: @{ Open defn. +0029[20]: Text. Text scrap[Grey]="Walrus" +0029[26]: @} Close defn. +0029[28]: Text. Text scrap[White]="<010> +" +0030[01]: @A New section (Level 1). +0030[03]: @< Open name. +0030[05]: Text. Text scrap[Grey]="Error recovery point" +0030[25]: @> Close name. +0030[27]: Text. Text scrap[Grey]="<010> +<010> +5. Previous definition is full, current is additive.<010> +" +0033[01]: @$ Macro defn. +0033[03]: @< Open name. +0033[05]: Text. Text scrap[Grey]="Walrus 1" +0033[13]: @> Close name. +0033[15]: Text. Text scrap[Grey]="==" +0033[17]: @{ Open defn. +0033[19]: Text. Text scrap[Grey]="Sloth" +0033[24]: @} Close defn. +0033[26]: Text. Text scrap[White]="<010> +" +0034[01]: @$ Macro defn. +0034[03]: @< Open name. +0034[05]: Text. Text scrap[Grey]="Walrus 1" +0034[13]: @> Close name. +0034[15]: Text. Text scrap[Grey]="+=" +0034[17]: @{ Open defn. +0034[19]: Text. Text scrap[Grey]="Aardvark" +0034[27]: @} Close defn. +0034[29]: Text. Text scrap[White]="<010> +" +0035[01]: @A New section (Level 1). +0035[03]: @< Open name. +0035[05]: Text. Text scrap[Grey]="Error recovery point" +0035[25]: @> Close name. +0035[27]: Text. Text scrap[Grey]="<010> +<010> +6. Previous definition is additive, current is full.<010> +" +0038[01]: @$ Macro defn. +0038[03]: @< Open name. +0038[05]: Text. Text scrap[Grey]="Walrus 2" +0038[13]: @> Close name. +0038[15]: Text. Text scrap[Grey]="+=" +0038[17]: @{ Open defn. +0038[19]: Text. Text scrap[Grey]="Sloth" +0038[24]: @} Close defn. +0038[26]: Text. Text scrap[White]="<010> +" +0039[01]: @$ Macro defn. +0039[03]: @< Open name. +0039[05]: Text. Text scrap[Grey]="Walrus 2" +0039[13]: @> Close name. +0039[15]: Text. Text scrap[Grey]="==" +0039[17]: @{ Open defn. +0039[19]: Text. Text scrap[Grey]="Aardvark" +0039[27]: @} Close defn. +0039[29]: Text. Text scrap[White]="<010> +" +0040[01]: @A New section (Level 1). +0040[03]: @< Open name. +0040[05]: Text. Text scrap[Grey]="Error recovery point" +0040[25]: @> Close name. +0040[27]: Text. Text scrap[Grey]="<010> +<010> +7. Non-first body part of partial has parameter.<010> +" +0043[01]: @$ Macro defn. +0043[03]: @< Open name. +0043[05]: Text. Text scrap[Grey]="Unicorn" +0043[12]: @> Close name. +0043[14]: @( Open param. +0043[16]: @n Parameter. Parameterno=3. +0043[18]: @} Close param. +0043[20]: Text. Text scrap[Grey]="+=" +0043[22]: @{ Open defn. +0043[24]: Text. Text scrap[Grey]="Turkey" +0043[30]: @} Close defn. +0043[32]: Text. Text scrap[White]="<010> +" +0044[01]: @$ Macro defn. +0044[03]: @< Open name. +0044[05]: Text. Text scrap[Grey]="Unicorn" +0044[12]: @> Close name. +0044[14]: @( Open param. +0044[16]: @n Parameter. Parameterno=3. +0044[18]: @} Close param. +0044[20]: Text. Text scrap[Grey]="+=" +0044[22]: @{ Open defn. +0044[24]: Text. Text scrap[Grey]="Turkey" +0044[30]: @} Close defn. +0044[32]: Text. Text scrap[White]="<010> +" +0045[01]: @A New section (Level 1). +0045[03]: @< Open name. +0045[05]: Text. Text scrap[Grey]="Error recovery point" +0045[25]: @> Close name. +0045[27]: Text. Text scrap[Grey]="<010> +<010> +8. Zero or many attributes on non-first body part of additive.<010> +" +0048[01]: @$ Macro defn. +0048[03]: @< Open name. +0048[05]: Text. Text scrap[Grey]="Elephant" +0048[13]: @> Close name. +0048[15]: @Z Zero calls. +0048[17]: @M Many calls. +0048[19]: Text. Text scrap[Grey]="+=" +0048[21]: @{ Open defn. +0048[23]: Text. Text scrap[Grey]="Turkey" +0048[29]: @} Close defn. +0048[31]: Text. Text scrap[White]="<010> +" +0049[01]: @$ Macro defn. +0049[03]: @< Open name. +0049[05]: Text. Text scrap[Grey]="Elephant" +0049[13]: @> Close name. +0049[15]: @Z Zero calls. +0049[17]: @M Many calls. +0049[19]: Text. Text scrap[Grey]="+=" +0049[21]: @{ Open defn. +0049[23]: Text. Text scrap[Grey]="Turkey" +0049[29]: @} Close defn. +0049[31]: Text. Text scrap[White]="<010> +" +0050[01]: @A New section (Level 1). +0050[03]: @< Open name. +0050[05]: Text. Text scrap[Grey]="Error recovery point" +0050[25]: @> Close name. +0050[27]: Text. Text scrap[Grey]="<010> +<010> +9. Check that non-existent formal parameters are caught.<010> +<010> +" +0054[01]: @$ Macro defn. +0054[03]: @< Open name. +0054[05]: Text. Text scrap[Grey]="Zero" +0054[09]: @> Close name. +0054[11]: @Z Zero calls. +0054[13]: @{ Open defn. +0054[15]: Text. Text scrap[Grey]="Sloth" +0054[20]: @n Parameter. Parameterno=1. +0054[22]: Text. Text scrap[Grey]="Walrus" +0054[28]: @} Close defn. +0054[30]: Text. Text scrap[White]="<010> +" +0055[01]: @A New section (Level 1). +0055[03]: @< Open name. +0055[05]: Text. Text scrap[Grey]="Error recovery point" +0055[25]: @> Close name. +0055[27]: Text. Text scrap[White]="<010> +<010> +" +0057[01]: @$ Macro defn. +0057[03]: @< Open name. +0057[05]: Text. Text scrap[Grey]="One" +0057[08]: @> Close name. +0057[10]: @( Open param. +0057[12]: @n Parameter. Parameterno=1. +0057[14]: @} Close param. +0057[16]: @Z Zero calls. +0057[18]: @{ Open defn. +0057[20]: Text. Text scrap[Grey]="Sloth" +0057[25]: @n Parameter. Parameterno=2. +0057[27]: Text. Text scrap[Grey]="Walrus" +0057[33]: @} Close defn. +0057[35]: Text. Text scrap[White]="<010> +" +0058[01]: @A New section (Level 1). +0058[03]: @< Open name. +0058[05]: Text. Text scrap[Grey]="Error recovery point" +0058[25]: @> Close name. +0058[27]: Text. Text scrap[White]="<010> +<010> +" +0060[01]: @$ Macro defn. +0060[03]: @< Open name. +0060[05]: Text. Text scrap[Grey]="Many" +0060[09]: @> Close name. +0060[11]: @( Open param. +0060[13]: @n Parameter. Parameterno=7. +0060[15]: @} Close param. +0060[17]: @Z Zero calls. +0060[19]: @{ Open defn. +0060[21]: Text. Text scrap[Grey]="Sloth" +0060[26]: @n Parameter. Parameterno=8. +0060[28]: Text. Text scrap[Grey]="Walrus" +0060[34]: @} Close defn. +0060[36]: Text. Text scrap[White]="<010> +" +0061[01]: @A New section (Level 1). +0061[03]: @< Open name. +0061[05]: Text. Text scrap[Grey]="Error recovery point" +0061[25]: @> Close name. +0061[27]: Text. Text scrap[White]="<010> +" +0062[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + + +========================== Start of MACRO TABLE DUMP =========================== + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Elephant" +Defined? : Yes. +Parameters : 0 +Additive? : Yes. +Zero Calls? : Yes. +Many Calls? : Yes. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=4, Pos(L,C)=(48,3), Expression follows: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Turkey" +------ End Text Element ------ + +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Many" +Defined? : Yes. +Parameters : 7 +Additive? : No. +Zero Calls? : Yes. +Many Calls? : No. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=7, Pos(L,C)=(60,3), Expression follows: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Sloth" +------ End Text Element ------ + + +-- Start Parameter Element -- +Parameter number=8. +Parameter is of macro "Many". +--- End Parameter Element --- + + +----- Start Text Element ----- +Text scrap[Grey]="Walrus" +------ End Text Element ------ + +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "One" +Defined? : Yes. +Parameters : 1 +Additive? : No. +Zero Calls? : Yes. +Many Calls? : No. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=6, Pos(L,C)=(57,3), Expression follows: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Sloth" +------ End Text Element ------ + + +-- Start Parameter Element -- +Parameter number=2. +Parameter is of macro "One". +--- End Parameter Element --- + + +----- Start Text Element ----- +Text scrap[Grey]="Walrus" +------ End Text Element ------ + +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Sloth 1" +Defined? : No. +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Sloth 2" +Defined? : No. +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Sloth 3" +Defined? : No. +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Sloth 4" +Defined? : No. +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Sloth 5" +Defined? : No. +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Unicorn" +Defined? : Yes. +Parameters : 3 +Additive? : Yes. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=3, Pos(L,C)=(43,3), Expression follows: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Turkey" +------ End Text Element ------ + +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Walrus 1" +Defined? : Yes. +Parameters : 0 +Additive? : No. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=1, Pos(L,C)=(33,3), Expression follows: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Sloth" +------ End Text Element ------ + +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Walrus 2" +Defined? : Yes. +Parameters : 0 +Additive? : Yes. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=2, Pos(L,C)=(38,3), Expression follows: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Sloth" +------ End Text Element ------ + +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Zero" +Defined? : Yes. +Parameters : 0 +Additive? : No. +Zero Calls? : Yes. +Many Calls? : No. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=5, Pos(L,C)=(54,3), Expression follows: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Sloth" +------ End Text Element ------ + + +-- Start Parameter Element -- +Parameter number=1. +Parameter is of macro "Zero". +--- End Parameter Element --- + + +----- Start Text Element ----- +Text scrap[Grey]="Walrus" +------ End Text Element ------ + +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +=========================== End of MACRO TABLE DUMP ============================ + + +========================= Start of DOCUMENT LIST DUMP ========================== + + +TEXT COMPONENT: Pos(L,C)=(1,1). + +-- Start of Text Scrap List -- +Text scrap[Grey]="PR08: Test semantic checking of macro definitions.<010> +<010> +Trip parser to be sure that we won't get any output files!<010> +" +--- End of Text Scrap List --- + + +TEXT COMPONENT: Pos(L,C)=(4,3). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +1. File macro has parameters. Error.<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "1", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(8,27). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +2. File macro is additive. Error.<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "2", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(12,27). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +3. File macro has too long a name. The test name has 1200 characters. Err.<010> +Note: This test can't test the error message if the maximum length of a<010> +macro name is less than the maximum length of a file name as the name<010> +error is caught first.<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "3", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(20,27). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +4. File macro has zero or many attributes. Error.<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "4", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(24,27). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "5", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(27,27). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "6", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(30,27). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +5. Previous definition is full, current is additive.<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(33,1). +Part 1 of macro @<Walrus 1@>. + +TEXT COMPONENT: Pos(L,C)=(33,26). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "7", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(35,27). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +6. Previous definition is additive, current is full.<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(38,1). +Part 1 of macro @<Walrus 2@>. + +TEXT COMPONENT: Pos(L,C)=(38,26). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "8", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(40,27). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +7. Non-first body part of partial has parameter.<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(43,1). +Part 1 of macro @<Unicorn@>. + +TEXT COMPONENT: Pos(L,C)=(43,32). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "9", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(45,27). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +8. Zero or many attributes on non-first body part of additive.<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(48,1). +Part 1 of macro @<Elephant@>. + +TEXT COMPONENT: Pos(L,C)=(48,31). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "10", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(50,27). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +9. Check that non-existent formal parameters are caught.<010> +<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(54,1). +Part 1 of macro @<Zero@>. + +TEXT COMPONENT: Pos(L,C)=(54,30). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "11", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(55,27). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(57,1). +Part 1 of macro @<One@>. + +TEXT COMPONENT: Pos(L,C)=(57,35). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "12", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(58,27). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(60,1). +Part 1 of macro @<Many@>. + +TEXT COMPONENT: Pos(L,C)=(60,36). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "13", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(61,27). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +========================== End of DOCUMENT LIST DUMP =========================== + + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| PR08: Test semantic checking of macro definitions. + 2 2| + 3 3| Trip parser to be sure that we won't get any output files! + 4 4| @> + Error|.^The parser was at the top level and was expecting + |.^one of: {Directive, Text, Macro definition, EOF}. + 5 5| + 6 6| 1. File macro has parameters. Error. + 7 7| @O@<Sloth 1@>@(@3@)@{Walrus@} + |...^Macro definition ignored. + Error|................^Macros attached to output files cannot be parameterized. + |................^Reason: No actual parameters would be available during + |................^ output file generation. + |....................^Skipping after error to the next major construct... + 8 8| @A@<Error recovery point@> + |.^...skipped to here after the error. + 9 9| + 10 10| 2. File macro is additive. Error. + 11 11| @O@<Sloth 2@>+=@{Walrus@} + |...^Macro definition ignored. + Error|..............^Macros attached to output files cannot be additive. + |..............^Reason: Preventing this makes it easy to find output + |..............^file macros later, because there will be exactly one + |..............^@O declaration in the input file for each output file. + |..............^To do what you are trying to do, just create an additive + |..............^bridging macro, like this: + |..............^ @O@<prog.c@>@{@<Bridge@>@} + |..............^ @$@<Bridge@>+=@{void stringhack()...@} + |..............^ @$@<Bridge@>+=@{main()...@} + |................^Skipping after error to the next major construct... + 12 12| @A@<Error recovery point@> + |.^...skipped to here after the error. + 13 13| + 14 14| 3. File macro has too long a name. The test name has 1200 characters. Err. + 15 15| Note: This test can't test the error message if the maximum length of a + 16 16| macro name is less than the maximum length of a file name as the name + 17 17| error is caught first. + 18 18| @p maximum_input_line_length = infinity + 19 19| @O@<123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890@>@{@} + Error|.....^Name is too long. + |.....^The maximum length of a legal name is 80 characters. + |.....^Skipping after error to the next major construct... + 20 20| @A@<Error recovery point@> + |.^...skipped to here after the error. + 21 21| + 22 22| 4. File macro has zero or many attributes. Error. + 23 23| @O@<Sloth 3@>@Z@{Walrus@} + |...^Macro definition ignored. + Error|..............^Macros attached to output files cannot have @Z or @M. + |..............^Reason: They are always called once to generate their + |..............^output file and they cannot be called from other macros. + |..............^Hence they are always called exactly once and so there + |..............^can be no need for @Z or @M in their declarations. + |................^Skipping after error to the next major construct... + 24 24| @A@<Error recovery point@> + |.^...skipped to here after the error. + 25 25| + 26 26| @O@<Sloth 4@>@M@{Walrus@} + |...^Macro definition ignored. + Error|..............^Macros attached to output files cannot have @Z or @M. + |..............^Reason: They are always called once to generate their + |..............^output file and they cannot be called from other macros. + |..............^Hence they are always called exactly once and so there + |..............^can be no need for @Z or @M in their declarations. + |................^Skipping after error to the next major construct... + 27 27| @A@<Error recovery point@> + |.^...skipped to here after the error. + 28 28| + 29 29| @O@<Sloth 5@>@Z@M@{Walrus@} + |...^Macro definition ignored. + Error|..............^Macros attached to output files cannot have @Z or @M. + |..............^Reason: They are always called once to generate their + |..............^output file and they cannot be called from other macros. + |..............^Hence they are always called exactly once and so there + |..............^can be no need for @Z or @M in their declarations. + |..................^Skipping after error to the next major construct... + 30 30| @A@<Error recovery point@> + |.^...skipped to here after the error. + 31 31| + 32 32| 5. Previous definition is full, current is additive. + 33 33| @$@<Walrus 1@>==@{Sloth@} + 34 34| @$@<Walrus 1@>+=@{Aardvark@} + Error|...^A full definition of this macro appears at line 33. + |...^Full and additive definitions of the same macro cannot coexist. + |...^Macro definition ignored. + |.................^Skipping after error to the next major construct... + 35 35| @A@<Error recovery point@> + |.^...skipped to here after the error. + 36 36| + 37 37| 6. Previous definition is additive, current is full. + 38 38| @$@<Walrus 2@>+=@{Sloth@} + 39 39| @$@<Walrus 2@>==@{Aardvark@} + Error|...^An additive definition of this macro appears at line 38. + |...^Full and additive definitions of the same macro cannot coexist. + |...^Macro definition ignored. + |.................^Skipping after error to the next major construct... + 40 40| @A@<Error recovery point@> + |.^...skipped to here after the error. + 41 41| + 42 42| 7. Non-first body part of partial has parameter. + 43 43| @$@<Unicorn@>@(@3@)+=@{Turkey@} + 44 44| @$@<Unicorn@>@(@3@)+=@{Turkey@} + |...^Macro definition ignored. + Error|................^The formal parameter list of an additive macro + |................^must be placed only in the first definition part. + |................^The first part of this macro appears at line 43. + |......................^Skipping after error to the next major construct... + 45 45| @A@<Error recovery point@> + |.^...skipped to here after the error. + 46 46| + 47 47| 8. Zero or many attributes on non-first body part of additive. + 48 48| @$@<Elephant@>@Z@M+=@{Turkey@} + 49 49| @$@<Elephant@>@Z@M+=@{Turkey@} + |...^Macro definition ignored. + Error|...............^@Z and @M modifiers for additive macros must + |...............^be placed only in the first definition part. + |...............^The first part of this macro appears at line 48. + |.....................^Skipping after error to the next major construct... + 50 50| @A@<Error recovery point@> + |.^...skipped to here after the error. + 51 51| + 52 52| 9. Check that non-existent formal parameters are caught. + 53 53| + 54 54| @$@<Zero@>@Z@{Sloth@1Walrus@} + Error|....................^Macro being defined has only 0 parameters. + 55 55| @A@<Error recovery point@> + 56 56| + 57 57| @$@<One@>@(@1@)@Z@{Sloth@2Walrus@} + Error|.........................^Macro being defined has only 1 parameter. + 58 58| @A@<Error recovery point@> + 59 59| + 60 60| @$@<Many@>@(@7@)@Z@{Sloth@8Walrus@} + Error|..........................^Macro being defined has only 7 parameters. + 61 61| @A@<Error recovery point@> + | <End-Of-File> +------------+------------------------------------------------------------------- + +There were 14 Errors. diff --git a/web/funnelAC/answers/pr09.lis b/web/funnelAC/answers/pr09.lis new file mode 100644 index 0000000000..a7aab08edb --- /dev/null +++ b/web/funnelAC/answers/pr09.lis @@ -0,0 +1,2133 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 50 52 30 39 3A 20 54 65 73 74 20 63 61 6C 6C 73 | PR09: Test calls | +| 20 61 6E 64 20 61 63 74 75 61 6C 20 70 61 72 61 | and actual para | +| 6D 65 74 65 72 20 6C 69 73 74 73 2E 0A 0A 46 69 | meter lists...Fi | +| 72 73 74 20 74 72 69 70 20 75 70 20 74 68 65 20 | rst trip up the | +| 70 61 72 73 65 72 20 73 6F 20 77 65 20 64 6F 6E | parser so we don | +| 27 74 20 67 65 74 20 61 6E 79 20 66 75 72 74 68 | 't get any furth | +| 65 72 2E 0A 40 3E 0A 0A 4E 6F 77 20 64 65 66 69 | er..@>..Now defi | +| 6E 65 20 73 6F 6D 65 20 6D 61 63 72 6F 73 20 74 | ne some macros t | +| 6F 20 63 61 6C 6C 2E 20 4E 6F 20 65 72 72 6F 72 | o call. No error | +| 2E 0A 0A 40 24 40 3C 5A 65 72 6F 40 3E 40 7B 40 | ...@$@<Zero@>@{@ | +| 7D 0A 40 24 40 3C 4F 6E 65 40 3E 40 28 40 31 40 | }.@$@<One@>@(@1@ | +| 29 40 7B 40 7D 0A 40 24 40 3C 54 77 6F 40 3E 40 | )@{@}.@$@<Two@>@ | +| 28 40 32 40 29 40 7B 40 7D 0A 40 24 40 3C 54 68 | (@2@)@{@}.@$@<Th | +| 72 65 65 40 3E 40 28 40 33 40 29 40 7B 40 7D 0A | ree@>@(@3@)@{@}. | +| 40 24 40 3C 4E 69 6E 65 40 3E 40 28 40 39 40 29 | @$@<Nine@>@(@9@) | +| 40 7B 40 7D 0A 40 24 40 23 22 40 7B 40 7D 0A 0A | @{@}.@$@#"@{@}.. | +| 54 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20 74 65 | The following te | +| 73 74 20 63 61 6C 6C 73 20 73 68 6F 75 6C 64 20 | st calls should | +| 4E 4F 54 20 67 65 6E 65 72 61 74 65 20 61 6E 79 | NOT generate any | +| 20 65 72 72 6F 72 73 2E 0A 0A 40 24 40 3C 4D 61 | errors...@$@<Ma | +| 63 72 6F 20 63 6F 6E 74 61 69 6E 69 6E 67 20 74 | cro containing t | +| 68 65 20 74 65 73 74 20 6D 61 63 72 6F 20 63 61 | he test macro ca | +| 6C 6C 73 2E 40 3E 3D 3D 40 7B 0A 31 2E 20 54 65 | lls.@>==@{.1. Te | +| 73 74 20 6D 61 63 72 6F 20 63 61 6C 6C 20 77 69 | st macro call wi | +| 74 68 20 6E 6F 20 70 61 72 61 6D 65 74 65 72 20 | th no parameter | +| 6C 69 73 74 2E 0A 40 3C 5A 65 72 6F 40 3E 0A 0A | list..@<Zero@>.. | +| 32 2E 20 54 65 73 74 20 6D 61 63 72 6F 20 63 61 | 2. Test macro ca | +| 6C 6C 20 77 69 74 68 20 71 75 69 63 6B 20 6E 61 | ll with quick na | +| 6D 65 2E 0A 40 23 22 0A 0A 33 2E 20 54 65 73 74 | me..@#"..3. Test | +| 20 6D 61 63 72 6F 20 63 61 6C 6C 20 77 69 74 68 | macro call with | +| 20 6F 6E 65 20 70 61 72 61 6D 65 74 65 72 2E 0A | one parameter.. | +| 40 3C 4F 6E 65 40 3E 40 28 54 6F 75 63 61 6E 40 | @<One@>@(Toucan@ | +| 29 0A 0A 34 2E 20 54 65 73 74 20 6D 61 63 72 6F | )..4. Test macro | +| 20 63 61 6C 6C 20 77 69 74 68 20 6D 61 6E 79 20 | call with many | +| 70 61 72 61 6D 65 74 65 72 73 2E 0A 40 3C 54 77 | parameters..@<Tw | +| 6F 40 3E 40 28 54 6F 75 63 61 6E 40 2C 54 65 61 | o@>@(Toucan@,Tea | +| 70 6F 74 40 29 0A 40 3C 54 68 72 65 65 40 3E 40 | pot@).@<Three@>@ | +| 28 54 6F 75 63 61 6E 40 2C 54 65 61 70 6F 74 40 | (Toucan@,Teapot@ | +| 2C 57 61 6C 72 75 73 40 29 0A 40 3C 4E 69 6E 65 | ,Walrus@).@<Nine | +| 40 3E 40 28 54 6F 75 63 61 6E 40 2C 54 65 61 70 | @>@(Toucan@,Teap | +| 6F 74 40 2C 57 61 6C 72 75 73 40 2C 0A 20 20 20 | ot@,Walrus@,. | +| 20 20 20 20 20 20 20 54 6F 75 63 61 6E 40 2C 54 | Toucan@,T | +| 65 61 70 6F 74 40 2C 57 61 6C 72 75 73 40 2C 0A | eapot@,Walrus@,. | +| 20 20 20 20 20 20 20 20 20 20 54 6F 75 63 61 6E | Toucan | +| 40 2C 54 65 61 70 6F 74 40 2C 57 61 6C 72 75 73 | @,Teapot@,Walrus | +| 40 29 0A 0A 35 2E 20 54 65 73 74 20 6D 61 63 72 | @)..5. Test macr | +| 6F 20 63 61 6C 6C 73 20 77 69 74 68 20 64 6F 75 | o calls with dou | +| 62 6C 65 20 71 75 6F 74 65 73 20 6F 6E 20 70 61 | ble quotes on pa | +| 72 61 6D 65 74 65 72 73 2E 0A 40 3C 4F 6E 65 40 | rameters..@<One@ | +| 3E 40 28 20 40 22 54 6F 75 63 61 6E 40 22 40 29 | >@( @"Toucan@"@) | +| 0A 40 3C 54 77 6F 40 3E 40 28 40 22 54 6F 75 63 | .@<Two@>@(@"Touc | +| 61 6E 40 22 20 20 20 40 2C 20 20 20 40 22 54 65 | an@" @, @"Te | +| 61 70 6F 74 40 22 40 29 0A 40 3C 54 68 72 65 65 | apot@"@).@<Three | +| 40 3E 40 28 40 22 54 6F 75 63 61 6E 40 22 20 40 | @>@(@"Toucan@" @ | +| 2C 0A 20 20 20 20 20 20 20 20 20 20 20 40 22 54 | ,. @"T | +| 65 61 70 6F 74 40 22 20 40 2C 0A 20 20 20 20 20 | eapot@" @,. | +| 20 20 20 20 20 20 40 22 57 61 6C 72 75 73 40 22 | @"Walrus@" | +| 20 40 29 0A 40 3C 4E 69 6E 65 40 3E 40 28 20 40 | @).@<Nine@>@( @ | +| 22 54 6F 75 63 61 6E 40 22 20 40 2C 20 40 22 54 | "Toucan@" @, @"T | +| 65 61 70 6F 74 40 22 20 40 2C 20 40 22 57 61 6C | eapot@" @, @"Wal | +| 72 75 73 40 22 20 40 2C 0A 20 20 20 20 20 20 20 | rus@" @,. | +| 20 20 20 20 40 22 54 6F 75 63 61 6E 40 22 20 40 | @"Toucan@" @ | +| 2C 20 40 22 54 65 61 70 6F 74 40 22 20 40 2C 20 | , @"Teapot@" @, | +| 40 22 57 61 6C 72 75 73 40 22 20 40 2C 0A 20 20 | @"Walrus@" @,. | +| 20 20 20 20 20 20 20 20 20 40 22 54 6F 75 63 61 | @"Touca | +| 6E 40 22 20 40 2C 20 40 22 54 65 61 70 6F 74 40 | n@" @, @"Teapot@ | +| 22 20 40 2C 20 40 22 57 61 6C 72 75 73 40 22 20 | " @, @"Walrus@" | +| 40 29 0A 0A 37 2E 20 54 65 73 74 20 6D 61 63 72 | @)..7. Test macr | +| 6F 20 63 61 6C 6C 73 20 77 69 74 68 20 6D 69 78 | o calls with mix | +| 65 64 20 64 6F 75 62 6C 65 20 71 75 6F 74 65 73 | ed double quotes | +| 20 6F 6E 20 70 61 72 61 6D 65 74 65 72 73 2E 0A | on parameters.. | +| 40 3C 54 77 6F 40 3E 40 28 40 22 54 6F 75 63 61 | @<Two@>@(@"Touca | +| 6E 40 22 20 20 20 40 2C 54 65 61 70 6F 74 40 29 | n@" @,Teapot@) | +| 0A 40 3C 54 68 72 65 65 40 3E 40 28 40 22 54 6F | .@<Three@>@(@"To | +| 75 63 61 6E 40 22 20 40 2C 0A 20 20 20 20 20 20 | ucan@" @,. | +| 20 20 20 20 20 40 22 54 65 61 70 6F 74 40 22 20 | @"Teapot@" | +| 40 2C 57 61 6C 72 75 73 40 29 0A 40 3C 4E 69 6E | @,Walrus@).@<Nin | +| 65 40 3E 40 28 20 40 22 54 6F 75 63 61 6E 40 22 | e@>@( @"Toucan@" | +| 20 40 2C 20 40 22 54 65 61 70 6F 74 40 22 20 40 | @, @"Teapot@" @ | +| 2C 20 20 20 57 61 6C 72 75 73 20 20 20 40 2C 0A | , Walrus @,. | +| 20 20 20 20 20 20 20 20 20 20 20 40 22 54 6F 75 | @"Tou | +| 63 61 6E 40 22 20 40 2C 20 20 20 54 65 61 70 6F | can@" @, Teapo | +| 74 20 20 20 40 2C 20 40 22 57 61 6C 72 75 73 40 | t @, @"Walrus@ | +| 22 20 40 2C 0A 20 20 20 20 20 20 20 20 20 20 20 | " @,. | +| 40 22 54 6F 75 63 61 6E 40 22 20 40 2C 20 40 22 | @"Toucan@" @, @" | +| 54 65 61 70 6F 74 40 22 20 40 2C 20 40 22 57 61 | Teapot@" @, @"Wa | +| 6C 72 75 73 40 22 20 40 29 0A 0A 40 7D 20 40 21 | lrus@" @)..@} @! | +| 20 45 6E 64 20 6F 66 20 6D 61 63 72 6F 20 64 65 | End of macro de | +| 66 69 6E 69 74 69 6F 6E 20 65 6E 63 6C 6F 73 69 | finition enclosi | +| 6E 67 20 61 6C 6C 20 74 68 65 73 65 20 6C 65 67 | ng all these leg | +| 61 6C 20 74 65 73 74 73 2E 0A 0A 38 2E 20 54 65 | al tests...8. Te | +| 73 74 20 6D 61 63 72 6F 20 63 61 6C 6C 73 20 77 | st macro calls w | +| 69 74 68 20 61 20 76 61 72 69 65 74 79 20 6F 66 | ith a variety of | +| 20 73 79 6E 74 61 78 20 65 72 72 6F 72 73 20 69 | syntax errors i | +| 6E 20 70 61 72 61 6D 65 74 65 72 20 6C 69 73 74 | n parameter list | +| 2E 0A 40 24 40 3C 45 72 72 6F 72 31 40 3E 40 7B | ..@$@<Error1@>@{ | +| 0A 40 3C 5A 65 72 6F 40 3E 40 28 0A 40 7D 0A 40 | .@<Zero@>@(.@}.@ | +| 41 40 3C 45 72 72 6F 72 20 72 65 63 6F 76 65 72 | A@<Error recover | +| 79 20 70 6F 69 6E 74 40 3E 0A 0A 40 24 40 3C 45 | y point@>..@$@<E | +| 72 72 6F 72 32 40 3E 40 7B 0A 40 3C 5A 65 72 6F | rror2@>@{.@<Zero | +| 40 3E 40 29 0A 40 7D 0A 40 41 40 3C 45 72 72 6F | @>@).@}.@A@<Erro | +| 72 20 72 65 63 6F 76 65 72 79 20 70 6F 69 6E 74 | r recovery point | +| 40 3E 0A 0A 40 24 40 3C 45 72 72 6F 72 33 40 3E | @>..@$@<Error3@> | +| 40 7B 0A 40 3C 4F 6E 65 40 3E 40 28 40 22 54 6F | @{.@<One@>@(@"To | +| 75 63 61 6E 40 29 0A 40 7D 0A 40 41 40 3C 45 72 | ucan@).@}.@A@<Er | +| 72 6F 72 20 72 65 63 6F 76 65 72 79 20 70 6F 69 | ror recovery poi | +| 6E 74 40 3E 0A 0A 40 24 40 3C 45 72 72 6F 72 34 | nt@>..@$@<Error4 | +| 40 3E 40 7B 0A 40 3C 4F 6E 65 40 3E 40 28 40 22 | @>@{.@<One@>@(@" | +| 54 6F 75 63 61 6E 40 22 40 22 53 6C 6F 74 68 40 | Toucan@"@"Sloth@ | +| 22 40 29 0A 40 7D 0A 40 41 40 3C 45 72 72 6F 72 | "@).@}.@A@<Error | +| 20 72 65 63 6F 76 65 72 79 20 70 6F 69 6E 74 40 | recovery point@ | +| 3E 0A 0A 40 24 40 3C 45 72 72 6F 72 35 40 3E 40 | >..@$@<Error5@>@ | +| 7B 0A 40 3C 54 77 6F 40 3E 40 28 40 22 54 6F 75 | {.@<Two@>@(@"Tou | +| 63 61 6E 40 22 54 65 61 70 6F 74 40 29 0A 40 7D | can@"Teapot@).@} | +| 0A 40 41 40 3C 45 72 72 6F 72 20 72 65 63 6F 76 | .@A@<Error recov | +| 65 72 79 20 70 6F 69 6E 74 40 3E 0A 0A 40 24 40 | ery point@>..@$@ | +| 3C 45 72 72 6F 72 36 40 3E 40 7B 0A 40 3C 54 77 | <Error6@>@{.@<Tw | +| 6F 40 3E 40 28 40 22 54 6F 75 63 61 6E 40 22 54 | o@>@(@"Toucan@"T | +| 65 61 70 6F 74 0A 40 7D 0A 40 41 40 3C 45 72 72 | eapot.@}.@A@<Err | +| 6F 72 20 72 65 63 6F 76 65 72 79 20 70 6F 69 6E | or recovery poin | +| 74 40 3E 0A 0A 40 24 40 3C 45 72 72 6F 72 37 40 | t@>..@$@<Error7@ | +| 3E 40 7B 0A 40 3C 54 77 6F 40 3E 40 28 40 22 54 | >@{.@<Two@>@(@"T | +| 6F 75 63 61 6E 40 22 54 65 61 70 6F 74 0A 40 3C | oucan@"Teapot.@< | +| 54 68 72 65 65 40 3E 40 28 54 6F 75 63 61 6E 40 | Three@>@(Toucan@ | +| 2C 0A 20 20 20 20 20 20 20 20 20 20 20 40 22 54 | ,. @"T | +| 65 61 70 6F 74 40 2C 57 61 6C 72 75 73 0A 0A 40 | eapot@,Walrus..@ | +| 7D 0A 40 41 40 3C 45 72 72 6F 72 20 72 65 63 6F | }.@A@<Error reco | +| 76 65 72 79 20 70 6F 69 6E 74 40 3E 0A 0A | very point@>.. | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| PR09: Test calls and actual parameter lists.<010> +00002 00002| <010> +00003 00003| First trip up the parser so we don't get any further.<010> +00004 00004| @><010> +00005 00005| <010> +00006 00006| Now define some macros to call. No error.<010> +00007 00007| <010> +00008 00008| @$@<Zero@>@{@}<010> +00009 00009| @$@<One@>@(@1@)@{@}<010> +00010 00010| @$@<Two@>@(@2@)@{@}<010> +00011 00011| @$@<Three@>@(@3@)@{@}<010> +00012 00012| @$@<Nine@>@(@9@)@{@}<010> +00013 00013| @$@#"@{@}<010> +00014 00014| <010> +00015 00015| The following test calls should NOT generate any errors.<010> +00016 00016| <010> +00017 00017| @$@<Macro containing the test macro calls.@>==@{<010> +00018 00018| 1. Test macro call with no parameter list.<010> +00019 00019| @<Zero@><010> +00020 00020| <010> +00021 00021| 2. Test macro call with quick name.<010> +00022 00022| @#"<010> +00023 00023| <010> +00024 00024| 3. Test macro call with one parameter.<010> +00025 00025| @<One@>@(Toucan@)<010> +00026 00026| <010> +00027 00027| 4. Test macro call with many parameters.<010> +00028 00028| @<Two@>@(Toucan@,Teapot@)<010> +00029 00029| @<Three@>@(Toucan@,Teapot@,Walrus@)<010> +00030 00030| @<Nine@>@(Toucan@,Teapot@,Walrus@,<010> +00031 00031| Toucan@,Teapot@,Walrus@,<010> +00032 00032| Toucan@,Teapot@,Walrus@)<010> +00033 00033| <010> +00034 00034| 5. Test macro calls with double quotes on parameters.<010> +00035 00035| @<One@>@( @"Toucan@"@)<010> +00036 00036| @<Two@>@(@"Toucan@" @, @"Teapot@"@)<010> +00037 00037| @<Three@>@(@"Toucan@" @,<010> +00038 00038| @"Teapot@" @,<010> +00039 00039| @"Walrus@" @)<010> +00040 00040| @<Nine@>@( @"Toucan@" @, @"Teapot@" @, @"Walrus@" @,<010> +00041 00041| @"Toucan@" @, @"Teapot@" @, @"Walrus@" @,<010> +00042 00042| @"Toucan@" @, @"Teapot@" @, @"Walrus@" @)<010> +00043 00043| <010> +00044 00044| 7. Test macro calls with mixed double quotes on parameters.<010> +00045 00045| @<Two@>@(@"Toucan@" @,Teapot@)<010> +00046 00046| @<Three@>@(@"Toucan@" @,<010> +00047 00047| @"Teapot@" @,Walrus@)<010> +00048 00048| @<Nine@>@( @"Toucan@" @, @"Teapot@" @, Walrus @,<010> +00049 00049| @"Toucan@" @, Teapot @, @"Walrus@" @,<010> +00050 00050| @"Toucan@" @, @"Teapot@" @, @"Walrus@" @)<010> +00051 00051| <010> +00052 00052| @} @! End of macro definition enclosing all these legal tests.<010> +00053 00053| <010> +00054 00054| 8. Test macro calls with a variety of syntax errors in parameter list.<010> +00055 00055| @$@<Error1@>@{<010> +00056 00056| @<Zero@>@(<010> +00057 00057| @}<010> +00058 00058| @A@<Error recovery point@><010> +00059 00059| <010> +00060 00060| @$@<Error2@>@{<010> +00061 00061| @<Zero@>@)<010> +00062 00062| @}<010> +00063 00063| @A@<Error recovery point@><010> +00064 00064| <010> +00065 00065| @$@<Error3@>@{<010> +00066 00066| @<One@>@(@"Toucan@)<010> +00067 00067| @}<010> +00068 00068| @A@<Error recovery point@><010> +00069 00069| <010> +00070 00070| @$@<Error4@>@{<010> +00071 00071| @<One@>@(@"Toucan@"@"Sloth@"@)<010> +00072 00072| @}<010> +00073 00073| @A@<Error recovery point@><010> +00074 00074| <010> +00075 00075| @$@<Error5@>@{<010> +00076 00076| @<Two@>@(@"Toucan@"Teapot@)<010> +00077 00077| @}<010> +00078 00078| @A@<Error recovery point@><010> +00079 00079| <010> +00080 00080| @$@<Error6@>@{<010> +00081 00081| @<Two@>@(@"Toucan@"Teapot<010> +00082 00082| @}<010> +00083 00083| @A@<Error recovery point@><010> +00084 00084| <010> +00085 00085| @$@<Error7@>@{<010> +00086 00086| @<Two@>@(@"Toucan@"Teapot<010> +00087 00087| @<Three@>@(Toucan@,<010> +00088 00088| @"Teapot@,Walrus<010> +00089 00089| <010> +00090 00090| @}<010> +00091 00091| @A@<Error recovery point@><010> +00092 00092| <010> +00093 00093| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 467 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="PR09: Test calls and actual parameter lists.<010> +<010> +First trip up the parser so we don't get any further.<010> +" +0004[01]: @> Close name. +0004[03]: Text. Text scrap[Grey]="<010> +<010> +Now define some macros to call. No error.<010> +<010> +" +0008[01]: @$ Macro defn. +0008[03]: @< Open name. +0008[05]: Text. Text scrap[Grey]="Zero" +0008[09]: @> Close name. +0008[11]: @{ Open defn. +0008[13]: @} Close defn. +0008[15]: Text. Text scrap[White]="<010> +" +0009[01]: @$ Macro defn. +0009[03]: @< Open name. +0009[05]: Text. Text scrap[Grey]="One" +0009[08]: @> Close name. +0009[10]: @( Open param. +0009[12]: @n Parameter. Parameterno=1. +0009[14]: @} Close param. +0009[16]: @{ Open defn. +0009[18]: @} Close defn. +0009[20]: Text. Text scrap[White]="<010> +" +0010[01]: @$ Macro defn. +0010[03]: @< Open name. +0010[05]: Text. Text scrap[Grey]="Two" +0010[08]: @> Close name. +0010[10]: @( Open param. +0010[12]: @n Parameter. Parameterno=2. +0010[14]: @} Close param. +0010[16]: @{ Open defn. +0010[18]: @} Close defn. +0010[20]: Text. Text scrap[White]="<010> +" +0011[01]: @$ Macro defn. +0011[03]: @< Open name. +0011[05]: Text. Text scrap[Grey]="Three" +0011[10]: @> Close name. +0011[12]: @( Open param. +0011[14]: @n Parameter. Parameterno=3. +0011[16]: @} Close param. +0011[18]: @{ Open defn. +0011[20]: @} Close defn. +0011[22]: Text. Text scrap[White]="<010> +" +0012[01]: @$ Macro defn. +0012[03]: @< Open name. +0012[05]: Text. Text scrap[Grey]="Nine" +0012[09]: @> Close name. +0012[11]: @( Open param. +0012[13]: @n Parameter. Parameterno=9. +0012[15]: @} Close param. +0012[17]: @{ Open defn. +0012[19]: @} Close defn. +0012[21]: Text. Text scrap[White]="<010> +" +0013[01]: @$ Macro defn. +0013[03]: @# Name. Character='"'. +0013[06]: @{ Open defn. +0013[08]: @} Close defn. +0013[10]: Text. Text scrap[Grey]="<010> +<010> +The following test calls should NOT generate any errors.<010> +<010> +" +0017[01]: @$ Macro defn. +0017[03]: @< Open name. +0017[05]: Text. Text scrap[Grey]="Macro containing the test macro calls." +0017[43]: @> Close name. +0017[45]: Text. Text scrap[Grey]="==" +0017[47]: @{ Open defn. +0017[49]: Text. Text scrap[Grey]="<010> +1. Test macro call with no parameter list.<010> +" +0019[01]: @< Open name. +0019[03]: Text. Text scrap[Grey]="Zero" +0019[07]: @> Close name. +0019[09]: Text. Text scrap[Grey]="<010> +<010> +2. Test macro call with quick name.<010> +" +0022[01]: @# Name. Character='"'. +0022[04]: Text. Text scrap[Grey]="<010> +<010> +3. Test macro call with one parameter.<010> +" +0025[01]: @< Open name. +0025[03]: Text. Text scrap[Grey]="One" +0025[06]: @> Close name. +0025[08]: @( Open param. +0025[10]: Text. Text scrap[Grey]="Toucan" +0025[16]: @} Close param. +0025[18]: Text. Text scrap[Grey]="<010> +<010> +4. Test macro call with many parameters.<010> +" +0028[01]: @< Open name. +0028[03]: Text. Text scrap[Grey]="Two" +0028[06]: @> Close name. +0028[08]: @( Open param. +0028[10]: Text. Text scrap[Grey]="Toucan" +0028[16]: @, Comma. +0028[18]: Text. Text scrap[Grey]="Teapot" +0028[24]: @} Close param. +0028[26]: Text. Text scrap[White]="<010> +" +0029[01]: @< Open name. +0029[03]: Text. Text scrap[Grey]="Three" +0029[08]: @> Close name. +0029[10]: @( Open param. +0029[12]: Text. Text scrap[Grey]="Toucan" +0029[18]: @, Comma. +0029[20]: Text. Text scrap[Grey]="Teapot" +0029[26]: @, Comma. +0029[28]: Text. Text scrap[Grey]="Walrus" +0029[34]: @} Close param. +0029[36]: Text. Text scrap[White]="<010> +" +0030[01]: @< Open name. +0030[03]: Text. Text scrap[Grey]="Nine" +0030[07]: @> Close name. +0030[09]: @( Open param. +0030[11]: Text. Text scrap[Grey]="Toucan" +0030[17]: @, Comma. +0030[19]: Text. Text scrap[Grey]="Teapot" +0030[25]: @, Comma. +0030[27]: Text. Text scrap[Grey]="Walrus" +0030[33]: @, Comma. +0030[35]: Text. Text scrap[Grey]="<010> + Toucan" +0031[17]: @, Comma. +0031[19]: Text. Text scrap[Grey]="Teapot" +0031[25]: @, Comma. +0031[27]: Text. Text scrap[Grey]="Walrus" +0031[33]: @, Comma. +0031[35]: Text. Text scrap[Grey]="<010> + Toucan" +0032[17]: @, Comma. +0032[19]: Text. Text scrap[Grey]="Teapot" +0032[25]: @, Comma. +0032[27]: Text. Text scrap[Grey]="Walrus" +0032[33]: @} Close param. +0032[35]: Text. Text scrap[Grey]="<010> +<010> +5. Test macro calls with double quotes on parameters.<010> +" +0035[01]: @< Open name. +0035[03]: Text. Text scrap[Grey]="One" +0035[06]: @> Close name. +0035[08]: @( Open param. +0035[10]: Text. Text scrap[White]=" " +0035[11]: @" Quote. +0035[13]: Text. Text scrap[Grey]="Toucan" +0035[19]: @" Quote. +0035[21]: @} Close param. +0035[23]: Text. Text scrap[White]="<010> +" +0036[01]: @< Open name. +0036[03]: Text. Text scrap[Grey]="Two" +0036[06]: @> Close name. +0036[08]: @( Open param. +0036[10]: @" Quote. +0036[12]: Text. Text scrap[Grey]="Toucan" +0036[18]: @" Quote. +0036[20]: Text. Text scrap[White]=" " +0036[23]: @, Comma. +0036[25]: Text. Text scrap[White]=" " +0036[28]: @" Quote. +0036[30]: Text. Text scrap[Grey]="Teapot" +0036[36]: @" Quote. +0036[38]: @} Close param. +0036[40]: Text. Text scrap[White]="<010> +" +0037[01]: @< Open name. +0037[03]: Text. Text scrap[Grey]="Three" +0037[08]: @> Close name. +0037[10]: @( Open param. +0037[12]: @" Quote. +0037[14]: Text. Text scrap[Grey]="Toucan" +0037[20]: @" Quote. +0037[22]: Text. Text scrap[White]=" " +0037[23]: @, Comma. +0037[25]: Text. Text scrap[White]="<010> + " +0038[12]: @" Quote. +0038[14]: Text. Text scrap[Grey]="Teapot" +0038[20]: @" Quote. +0038[22]: Text. Text scrap[White]=" " +0038[23]: @, Comma. +0038[25]: Text. Text scrap[White]="<010> + " +0039[12]: @" Quote. +0039[14]: Text. Text scrap[Grey]="Walrus" +0039[20]: @" Quote. +0039[22]: Text. Text scrap[White]=" " +0039[23]: @} Close param. +0039[25]: Text. Text scrap[White]="<010> +" +0040[01]: @< Open name. +0040[03]: Text. Text scrap[Grey]="Nine" +0040[07]: @> Close name. +0040[09]: @( Open param. +0040[11]: Text. Text scrap[White]=" " +0040[12]: @" Quote. +0040[14]: Text. Text scrap[Grey]="Toucan" +0040[20]: @" Quote. +0040[22]: Text. Text scrap[White]=" " +0040[23]: @, Comma. +0040[25]: Text. Text scrap[White]=" " +0040[26]: @" Quote. +0040[28]: Text. Text scrap[Grey]="Teapot" +0040[34]: @" Quote. +0040[36]: Text. Text scrap[White]=" " +0040[37]: @, Comma. +0040[39]: Text. Text scrap[White]=" " +0040[40]: @" Quote. +0040[42]: Text. Text scrap[Grey]="Walrus" +0040[48]: @" Quote. +0040[50]: Text. Text scrap[White]=" " +0040[51]: @, Comma. +0040[53]: Text. Text scrap[White]="<010> + " +0041[12]: @" Quote. +0041[14]: Text. Text scrap[Grey]="Toucan" +0041[20]: @" Quote. +0041[22]: Text. Text scrap[White]=" " +0041[23]: @, Comma. +0041[25]: Text. Text scrap[White]=" " +0041[26]: @" Quote. +0041[28]: Text. Text scrap[Grey]="Teapot" +0041[34]: @" Quote. +0041[36]: Text. Text scrap[White]=" " +0041[37]: @, Comma. +0041[39]: Text. Text scrap[White]=" " +0041[40]: @" Quote. +0041[42]: Text. Text scrap[Grey]="Walrus" +0041[48]: @" Quote. +0041[50]: Text. Text scrap[White]=" " +0041[51]: @, Comma. +0041[53]: Text. Text scrap[White]="<010> + " +0042[12]: @" Quote. +0042[14]: Text. Text scrap[Grey]="Toucan" +0042[20]: @" Quote. +0042[22]: Text. Text scrap[White]=" " +0042[23]: @, Comma. +0042[25]: Text. Text scrap[White]=" " +0042[26]: @" Quote. +0042[28]: Text. Text scrap[Grey]="Teapot" +0042[34]: @" Quote. +0042[36]: Text. Text scrap[White]=" " +0042[37]: @, Comma. +0042[39]: Text. Text scrap[White]=" " +0042[40]: @" Quote. +0042[42]: Text. Text scrap[Grey]="Walrus" +0042[48]: @" Quote. +0042[50]: Text. Text scrap[White]=" " +0042[51]: @} Close param. +0042[53]: Text. Text scrap[Grey]="<010> +<010> +7. Test macro calls with mixed double quotes on parameters.<010> +" +0045[01]: @< Open name. +0045[03]: Text. Text scrap[Grey]="Two" +0045[06]: @> Close name. +0045[08]: @( Open param. +0045[10]: @" Quote. +0045[12]: Text. Text scrap[Grey]="Toucan" +0045[18]: @" Quote. +0045[20]: Text. Text scrap[White]=" " +0045[23]: @, Comma. +0045[25]: Text. Text scrap[Grey]="Teapot" +0045[31]: @} Close param. +0045[33]: Text. Text scrap[White]="<010> +" +0046[01]: @< Open name. +0046[03]: Text. Text scrap[Grey]="Three" +0046[08]: @> Close name. +0046[10]: @( Open param. +0046[12]: @" Quote. +0046[14]: Text. Text scrap[Grey]="Toucan" +0046[20]: @" Quote. +0046[22]: Text. Text scrap[White]=" " +0046[23]: @, Comma. +0046[25]: Text. Text scrap[White]="<010> + " +0047[12]: @" Quote. +0047[14]: Text. Text scrap[Grey]="Teapot" +0047[20]: @" Quote. +0047[22]: Text. Text scrap[White]=" " +0047[23]: @, Comma. +0047[25]: Text. Text scrap[Grey]="Walrus" +0047[31]: @} Close param. +0047[33]: Text. Text scrap[White]="<010> +" +0048[01]: @< Open name. +0048[03]: Text. Text scrap[Grey]="Nine" +0048[07]: @> Close name. +0048[09]: @( Open param. +0048[11]: Text. Text scrap[White]=" " +0048[12]: @" Quote. +0048[14]: Text. Text scrap[Grey]="Toucan" +0048[20]: @" Quote. +0048[22]: Text. Text scrap[White]=" " +0048[23]: @, Comma. +0048[25]: Text. Text scrap[White]=" " +0048[26]: @" Quote. +0048[28]: Text. Text scrap[Grey]="Teapot" +0048[34]: @" Quote. +0048[36]: Text. Text scrap[White]=" " +0048[37]: @, Comma. +0048[39]: Text. Text scrap[Grey]=" Walrus " +0048[51]: @, Comma. +0048[53]: Text. Text scrap[White]="<010> + " +0049[12]: @" Quote. +0049[14]: Text. Text scrap[Grey]="Toucan" +0049[20]: @" Quote. +0049[22]: Text. Text scrap[White]=" " +0049[23]: @, Comma. +0049[25]: Text. Text scrap[Grey]=" Teapot " +0049[37]: @, Comma. +0049[39]: Text. Text scrap[White]=" " +0049[40]: @" Quote. +0049[42]: Text. Text scrap[Grey]="Walrus" +0049[48]: @" Quote. +0049[50]: Text. Text scrap[White]=" " +0049[51]: @, Comma. +0049[53]: Text. Text scrap[White]="<010> + " +0050[12]: @" Quote. +0050[14]: Text. Text scrap[Grey]="Toucan" +0050[20]: @" Quote. +0050[22]: Text. Text scrap[White]=" " +0050[23]: @, Comma. +0050[25]: Text. Text scrap[White]=" " +0050[26]: @" Quote. +0050[28]: Text. Text scrap[Grey]="Teapot" +0050[34]: @" Quote. +0050[36]: Text. Text scrap[White]=" " +0050[37]: @, Comma. +0050[39]: Text. Text scrap[White]=" " +0050[40]: @" Quote. +0050[42]: Text. Text scrap[Grey]="Walrus" +0050[48]: @" Quote. +0050[50]: Text. Text scrap[White]=" " +0050[51]: @} Close param. +0050[53]: Text. Text scrap[White]="<010> +<010> +" +0052[01]: @} Close defn. +0052[03]: Text. Text scrap[White]=" " +0053[01]: Text. Text scrap[Grey]="<010> +8. Test macro calls with a variety of syntax errors in parameter list.<010> +" +0055[01]: @$ Macro defn. +0055[03]: @< Open name. +0055[05]: Text. Text scrap[Grey]="Error1" +0055[11]: @> Close name. +0055[13]: @{ Open defn. +0055[15]: Text. Text scrap[White]="<010> +" +0056[01]: @< Open name. +0056[03]: Text. Text scrap[Grey]="Zero" +0056[07]: @> Close name. +0056[09]: @( Open param. +0056[11]: Text. Text scrap[White]="<010> +" +0057[01]: @} Close defn. +0057[03]: Text. Text scrap[White]="<010> +" +0058[01]: @A New section (Level 1). +0058[03]: @< Open name. +0058[05]: Text. Text scrap[Grey]="Error recovery point" +0058[25]: @> Close name. +0058[27]: Text. Text scrap[White]="<010> +<010> +" +0060[01]: @$ Macro defn. +0060[03]: @< Open name. +0060[05]: Text. Text scrap[Grey]="Error2" +0060[11]: @> Close name. +0060[13]: @{ Open defn. +0060[15]: Text. Text scrap[White]="<010> +" +0061[01]: @< Open name. +0061[03]: Text. Text scrap[Grey]="Zero" +0061[07]: @> Close name. +0061[09]: @} Close param. +0061[11]: Text. Text scrap[White]="<010> +" +0062[01]: @} Close defn. +0062[03]: Text. Text scrap[White]="<010> +" +0063[01]: @A New section (Level 1). +0063[03]: @< Open name. +0063[05]: Text. Text scrap[Grey]="Error recovery point" +0063[25]: @> Close name. +0063[27]: Text. Text scrap[White]="<010> +<010> +" +0065[01]: @$ Macro defn. +0065[03]: @< Open name. +0065[05]: Text. Text scrap[Grey]="Error3" +0065[11]: @> Close name. +0065[13]: @{ Open defn. +0065[15]: Text. Text scrap[White]="<010> +" +0066[01]: @< Open name. +0066[03]: Text. Text scrap[Grey]="One" +0066[06]: @> Close name. +0066[08]: @( Open param. +0066[10]: @" Quote. +0066[12]: Text. Text scrap[Grey]="Toucan" +0066[18]: @} Close param. +0066[20]: Text. Text scrap[White]="<010> +" +0067[01]: @} Close defn. +0067[03]: Text. Text scrap[White]="<010> +" +0068[01]: @A New section (Level 1). +0068[03]: @< Open name. +0068[05]: Text. Text scrap[Grey]="Error recovery point" +0068[25]: @> Close name. +0068[27]: Text. Text scrap[White]="<010> +<010> +" +0070[01]: @$ Macro defn. +0070[03]: @< Open name. +0070[05]: Text. Text scrap[Grey]="Error4" +0070[11]: @> Close name. +0070[13]: @{ Open defn. +0070[15]: Text. Text scrap[White]="<010> +" +0071[01]: @< Open name. +0071[03]: Text. Text scrap[Grey]="One" +0071[06]: @> Close name. +0071[08]: @( Open param. +0071[10]: @" Quote. +0071[12]: Text. Text scrap[Grey]="Toucan" +0071[18]: @" Quote. +0071[20]: @" Quote. +0071[22]: Text. Text scrap[Grey]="Sloth" +0071[27]: @" Quote. +0071[29]: @} Close param. +0071[31]: Text. Text scrap[White]="<010> +" +0072[01]: @} Close defn. +0072[03]: Text. Text scrap[White]="<010> +" +0073[01]: @A New section (Level 1). +0073[03]: @< Open name. +0073[05]: Text. Text scrap[Grey]="Error recovery point" +0073[25]: @> Close name. +0073[27]: Text. Text scrap[White]="<010> +<010> +" +0075[01]: @$ Macro defn. +0075[03]: @< Open name. +0075[05]: Text. Text scrap[Grey]="Error5" +0075[11]: @> Close name. +0075[13]: @{ Open defn. +0075[15]: Text. Text scrap[White]="<010> +" +0076[01]: @< Open name. +0076[03]: Text. Text scrap[Grey]="Two" +0076[06]: @> Close name. +0076[08]: @( Open param. +0076[10]: @" Quote. +0076[12]: Text. Text scrap[Grey]="Toucan" +0076[18]: @" Quote. +0076[20]: Text. Text scrap[Grey]="Teapot" +0076[26]: @} Close param. +0076[28]: Text. Text scrap[White]="<010> +" +0077[01]: @} Close defn. +0077[03]: Text. Text scrap[White]="<010> +" +0078[01]: @A New section (Level 1). +0078[03]: @< Open name. +0078[05]: Text. Text scrap[Grey]="Error recovery point" +0078[25]: @> Close name. +0078[27]: Text. Text scrap[White]="<010> +<010> +" +0080[01]: @$ Macro defn. +0080[03]: @< Open name. +0080[05]: Text. Text scrap[Grey]="Error6" +0080[11]: @> Close name. +0080[13]: @{ Open defn. +0080[15]: Text. Text scrap[White]="<010> +" +0081[01]: @< Open name. +0081[03]: Text. Text scrap[Grey]="Two" +0081[06]: @> Close name. +0081[08]: @( Open param. +0081[10]: @" Quote. +0081[12]: Text. Text scrap[Grey]="Toucan" +0081[18]: @" Quote. +0081[20]: Text. Text scrap[Grey]="Teapot<010> +" +0082[01]: @} Close defn. +0082[03]: Text. Text scrap[White]="<010> +" +0083[01]: @A New section (Level 1). +0083[03]: @< Open name. +0083[05]: Text. Text scrap[Grey]="Error recovery point" +0083[25]: @> Close name. +0083[27]: Text. Text scrap[White]="<010> +<010> +" +0085[01]: @$ Macro defn. +0085[03]: @< Open name. +0085[05]: Text. Text scrap[Grey]="Error7" +0085[11]: @> Close name. +0085[13]: @{ Open defn. +0085[15]: Text. Text scrap[White]="<010> +" +0086[01]: @< Open name. +0086[03]: Text. Text scrap[Grey]="Two" +0086[06]: @> Close name. +0086[08]: @( Open param. +0086[10]: @" Quote. +0086[12]: Text. Text scrap[Grey]="Toucan" +0086[18]: @" Quote. +0086[20]: Text. Text scrap[Grey]="Teapot<010> +" +0087[01]: @< Open name. +0087[03]: Text. Text scrap[Grey]="Three" +0087[08]: @> Close name. +0087[10]: @( Open param. +0087[12]: Text. Text scrap[Grey]="Toucan" +0087[18]: @, Comma. +0087[20]: Text. Text scrap[White]="<010> + " +0088[12]: @" Quote. +0088[14]: Text. Text scrap[Grey]="Teapot" +0088[20]: @, Comma. +0088[22]: Text. Text scrap[Grey]="Walrus<010> +<010> +" +0090[01]: @} Close defn. +0090[03]: Text. Text scrap[White]="<010> +" +0091[01]: @A New section (Level 1). +0091[03]: @< Open name. +0091[05]: Text. Text scrap[Grey]="Error recovery point" +0091[25]: @> Close name. +0091[27]: Text. Text scrap[White]="<010> +<010> +" +0093[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + + +========================== Start of MACRO TABLE DUMP =========================== + + +------------------- Start of Macro Dump -------------------- +Macro Name : """ +Defined? : Yes. +Parameters : 0 +Additive? : No. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : + Call 1: Parameters=0, Sequence num=7, Position(L,C)=(22,1). +Macro body : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=6, Pos(L,C)=(13,3), Expression follows: + +---- Start of Expression ---- +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Error1" +Defined? : Yes. +Parameters : 0 +Additive? : No. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 0 body parts. +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Error2" +Defined? : Yes. +Parameters : 0 +Additive? : No. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 0 body parts. +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Error3" +Defined? : Yes. +Parameters : 0 +Additive? : No. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 0 body parts. +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Error4" +Defined? : Yes. +Parameters : 0 +Additive? : No. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 0 body parts. +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Error5" +Defined? : Yes. +Parameters : 0 +Additive? : No. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=8, Pos(L,C)=(75,3), Expression follows: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[White]="<010> +" +------ End Text Element ------ + + +-- Begin Invocation Element -- +Invocation of macro @<Two@> +This invocation has 1 actual parameters. +Actual parameter list follows as a sequence of expressions: +(Text crud before and after parameter has been omitted). +Expression for parameter number 1: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Toucan" +------ End Text Element ------ + +----- End of Expression ----- + +--- End Invocation Element --- + + +----- Start Text Element ----- +Text scrap[White]="<010> +" +------ End Text Element ------ + +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Error6" +Defined? : Yes. +Parameters : 0 +Additive? : No. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 0 body parts. +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Error7" +Defined? : Yes. +Parameters : 0 +Additive? : No. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 0 body parts. +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Macro containing the test macro calls." +Defined? : Yes. +Parameters : 0 +Additive? : No. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=7, Pos(L,C)=(17,3), Expression follows: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="<010> +1. Test macro call with no parameter list.<010> +" +------ End Text Element ------ + + +-- Begin Invocation Element -- +Invocation of macro @<Zero@> +No actual parameters. +--- End Invocation Element --- + + +----- Start Text Element ----- +Text scrap[Grey]="<010> +<010> +2. Test macro call with quick name.<010> +" +------ End Text Element ------ + + +-- Begin Invocation Element -- +Invocation of macro @<"@> +No actual parameters. +--- End Invocation Element --- + + +----- Start Text Element ----- +Text scrap[Grey]="<010> +<010> +3. Test macro call with one parameter.<010> +" +------ End Text Element ------ + + +-- Begin Invocation Element -- +Invocation of macro @<One@> +This invocation has 1 actual parameters. +Actual parameter list follows as a sequence of expressions: +(Text crud before and after parameter has been omitted). +Expression for parameter number 1: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Toucan" +------ End Text Element ------ + +----- End of Expression ----- + +--- End Invocation Element --- + + +----- Start Text Element ----- +Text scrap[Grey]="<010> +<010> +4. Test macro call with many parameters.<010> +" +------ End Text Element ------ + + +-- Begin Invocation Element -- +Invocation of macro @<Two@> +This invocation has 2 actual parameters. +Actual parameter list follows as a sequence of expressions: +(Text crud before and after parameter has been omitted). +Expression for parameter number 1: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Toucan" +------ End Text Element ------ + +----- End of Expression ----- + +Expression for parameter number 2: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Teapot" +------ End Text Element ------ + +----- End of Expression ----- + +--- End Invocation Element --- + + +----- Start Text Element ----- +Text scrap[White]="<010> +" +------ End Text Element ------ + + +-- Begin Invocation Element -- +Invocation of macro @<Three@> +This invocation has 3 actual parameters. +Actual parameter list follows as a sequence of expressions: +(Text crud before and after parameter has been omitted). +Expression for parameter number 1: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Toucan" +------ End Text Element ------ + +----- End of Expression ----- + +Expression for parameter number 2: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Teapot" +------ End Text Element ------ + +----- End of Expression ----- + +Expression for parameter number 3: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Walrus" +------ End Text Element ------ + +----- End of Expression ----- + +--- End Invocation Element --- + + +----- Start Text Element ----- +Text scrap[White]="<010> +" +------ End Text Element ------ + + +-- Begin Invocation Element -- +Invocation of macro @<Nine@> +This invocation has 9 actual parameters. +Actual parameter list follows as a sequence of expressions: +(Text crud before and after parameter has been omitted). +Expression for parameter number 1: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Toucan" +------ End Text Element ------ + +----- End of Expression ----- + +Expression for parameter number 2: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Teapot" +------ End Text Element ------ + +----- End of Expression ----- + +Expression for parameter number 3: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Walrus" +------ End Text Element ------ + +----- End of Expression ----- + +Expression for parameter number 4: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="<010> + Toucan" +------ End Text Element ------ + +----- End of Expression ----- + +Expression for parameter number 5: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Teapot" +------ End Text Element ------ + +----- End of Expression ----- + +Expression for parameter number 6: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Walrus" +------ End Text Element ------ + +----- End of Expression ----- + +Expression for parameter number 7: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="<010> + Toucan" +------ End Text Element ------ + +----- End of Expression ----- + +Expression for parameter number 8: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Teapot" +------ End Text Element ------ + +----- End of Expression ----- + +Expression for parameter number 9: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Walrus" +------ End Text Element ------ + +----- End of Expression ----- + +--- End Invocation Element --- + + +----- Start Text Element ----- +Text scrap[Grey]="<010> +<010> +5. Test macro calls with double quotes on parameters.<010> +" +------ End Text Element ------ + + +-- Begin Invocation Element -- +Invocation of macro @<One@> +This invocation has 1 actual parameters. +Actual parameter list follows as a sequence of expressions: +(Text crud before and after parameter has been omitted). +Expression for parameter number 1: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Toucan" +------ End Text Element ------ + +----- End of Expression ----- + +--- End Invocation Element --- + + +----- Start Text Element ----- +Text scrap[White]="<010> +" +------ End Text Element ------ + + +-- Begin Invocation Element -- +Invocation of macro @<Two@> +This invocation has 2 actual parameters. +Actual parameter list follows as a sequence of expressions: +(Text crud before and after parameter has been omitted). +Expression for parameter number 1: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Toucan" +------ End Text Element ------ + +----- End of Expression ----- + +Expression for parameter number 2: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Teapot" +------ End Text Element ------ + +----- End of Expression ----- + +--- End Invocation Element --- + + +----- Start Text Element ----- +Text scrap[White]="<010> +" +------ End Text Element ------ + + +-- Begin Invocation Element -- +Invocation of macro @<Three@> +This invocation has 3 actual parameters. +Actual parameter list follows as a sequence of expressions: +(Text crud before and after parameter has been omitted). +Expression for parameter number 1: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Toucan" +------ End Text Element ------ + +----- End of Expression ----- + +Expression for parameter number 2: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Teapot" +------ End Text Element ------ + +----- End of Expression ----- + +Expression for parameter number 3: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Walrus" +------ End Text Element ------ + +----- End of Expression ----- + +--- End Invocation Element --- + + +----- Start Text Element ----- +Text scrap[White]="<010> +" +------ End Text Element ------ + + +-- Begin Invocation Element -- +Invocation of macro @<Nine@> +This invocation has 9 actual parameters. +Actual parameter list follows as a sequence of expressions: +(Text crud before and after parameter has been omitted). +Expression for parameter number 1: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Toucan" +------ End Text Element ------ + +----- End of Expression ----- + +Expression for parameter number 2: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Teapot" +------ End Text Element ------ + +----- End of Expression ----- + +Expression for parameter number 3: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Walrus" +------ End Text Element ------ + +----- End of Expression ----- + +Expression for parameter number 4: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Toucan" +------ End Text Element ------ + +----- End of Expression ----- + +Expression for parameter number 5: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Teapot" +------ End Text Element ------ + +----- End of Expression ----- + +Expression for parameter number 6: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Walrus" +------ End Text Element ------ + +----- End of Expression ----- + +Expression for parameter number 7: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Toucan" +------ End Text Element ------ + +----- End of Expression ----- + +Expression for parameter number 8: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Teapot" +------ End Text Element ------ + +----- End of Expression ----- + +Expression for parameter number 9: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Walrus" +------ End Text Element ------ + +----- End of Expression ----- + +--- End Invocation Element --- + + +----- Start Text Element ----- +Text scrap[Grey]="<010> +<010> +7. Test macro calls with mixed double quotes on parameters.<010> +" +------ End Text Element ------ + + +-- Begin Invocation Element -- +Invocation of macro @<Two@> +This invocation has 2 actual parameters. +Actual parameter list follows as a sequence of expressions: +(Text crud before and after parameter has been omitted). +Expression for parameter number 1: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Toucan" +------ End Text Element ------ + +----- End of Expression ----- + +Expression for parameter number 2: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Teapot" +------ End Text Element ------ + +----- End of Expression ----- + +--- End Invocation Element --- + + +----- Start Text Element ----- +Text scrap[White]="<010> +" +------ End Text Element ------ + + +-- Begin Invocation Element -- +Invocation of macro @<Three@> +This invocation has 3 actual parameters. +Actual parameter list follows as a sequence of expressions: +(Text crud before and after parameter has been omitted). +Expression for parameter number 1: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Toucan" +------ End Text Element ------ + +----- End of Expression ----- + +Expression for parameter number 2: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Teapot" +------ End Text Element ------ + +----- End of Expression ----- + +Expression for parameter number 3: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Walrus" +------ End Text Element ------ + +----- End of Expression ----- + +--- End Invocation Element --- + + +----- Start Text Element ----- +Text scrap[White]="<010> +" +------ End Text Element ------ + + +-- Begin Invocation Element -- +Invocation of macro @<Nine@> +This invocation has 9 actual parameters. +Actual parameter list follows as a sequence of expressions: +(Text crud before and after parameter has been omitted). +Expression for parameter number 1: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Toucan" +------ End Text Element ------ + +----- End of Expression ----- + +Expression for parameter number 2: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Teapot" +------ End Text Element ------ + +----- End of Expression ----- + +Expression for parameter number 3: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]=" Walrus " +------ End Text Element ------ + +----- End of Expression ----- + +Expression for parameter number 4: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Toucan" +------ End Text Element ------ + +----- End of Expression ----- + +Expression for parameter number 5: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]=" Teapot " +------ End Text Element ------ + +----- End of Expression ----- + +Expression for parameter number 6: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Walrus" +------ End Text Element ------ + +----- End of Expression ----- + +Expression for parameter number 7: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Toucan" +------ End Text Element ------ + +----- End of Expression ----- + +Expression for parameter number 8: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Teapot" +------ End Text Element ------ + +----- End of Expression ----- + +Expression for parameter number 9: + +---- Start of Expression ---- + +----- Start Text Element ----- +Text scrap[Grey]="Walrus" +------ End Text Element ------ + +----- End of Expression ----- + +--- End Invocation Element --- + + +----- Start Text Element ----- +Text scrap[White]="<010> +<010> +" +------ End Text Element ------ + +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Nine" +Defined? : Yes. +Parameters : 9 +Additive? : No. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : + Call 1: Parameters=9, Sequence num=7, Position(L,C)=(30,1). + Call 2: Parameters=9, Sequence num=7, Position(L,C)=(40,1). + Call 3: Parameters=9, Sequence num=7, Position(L,C)=(48,1). +Macro body : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=5, Pos(L,C)=(12,3), Expression follows: + +---- Start of Expression ---- +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "One" +Defined? : Yes. +Parameters : 1 +Additive? : No. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : + Call 1: Parameters=1, Sequence num=7, Position(L,C)=(25,1). + Call 2: Parameters=1, Sequence num=7, Position(L,C)=(35,1). +Macro body : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=2, Pos(L,C)=(9,3), Expression follows: + +---- Start of Expression ---- +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Three" +Defined? : Yes. +Parameters : 3 +Additive? : No. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : + Call 1: Parameters=3, Sequence num=7, Position(L,C)=(29,1). + Call 2: Parameters=3, Sequence num=7, Position(L,C)=(37,1). + Call 3: Parameters=3, Sequence num=7, Position(L,C)=(46,1). +Macro body : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=4, Pos(L,C)=(11,3), Expression follows: + +---- Start of Expression ---- +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Two" +Defined? : Yes. +Parameters : 2 +Additive? : No. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : + Call 1: Parameters=2, Sequence num=7, Position(L,C)=(28,1). + Call 2: Parameters=2, Sequence num=7, Position(L,C)=(36,1). + Call 3: Parameters=2, Sequence num=7, Position(L,C)=(45,1). + Call 4: Parameters=1, Sequence num=8, Position(L,C)=(76,1). +Macro body : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=3, Pos(L,C)=(10,3), Expression follows: + +---- Start of Expression ---- +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Zero" +Defined? : Yes. +Parameters : 0 +Additive? : No. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : + Call 1: Parameters=0, Sequence num=7, Position(L,C)=(19,1). + Call 2: Parameters=0, Sequence num=8, Position(L,C)=(61,1). +Macro body : + +--Start of List of Body Parts-- +This macro has 1 body part. +Body part 1: Seqnum=1, Pos(L,C)=(8,3), Expression follows: + +---- Start of Expression ---- +----- End of Expression ----- + +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +=========================== End of MACRO TABLE DUMP ============================ + + +========================= Start of DOCUMENT LIST DUMP ========================== + + +TEXT COMPONENT: Pos(L,C)=(1,1). + +-- Start of Text Scrap List -- +Text scrap[Grey]="PR09: Test calls and actual parameter lists.<010> +<010> +First trip up the parser so we don't get any further.<010> +" +--- End of Text Scrap List --- + + +TEXT COMPONENT: Pos(L,C)=(4,3). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +Now define some macros to call. No error.<010> +<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(8,1). +Part 1 of macro @<Zero@>. + +TEXT COMPONENT: Pos(L,C)=(8,15). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(9,1). +Part 1 of macro @<One@>. + +TEXT COMPONENT: Pos(L,C)=(9,20). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(10,1). +Part 1 of macro @<Two@>. + +TEXT COMPONENT: Pos(L,C)=(10,20). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(11,1). +Part 1 of macro @<Three@>. + +TEXT COMPONENT: Pos(L,C)=(11,22). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(12,1). +Part 1 of macro @<Nine@>. + +TEXT COMPONENT: Pos(L,C)=(12,21). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(13,1). +Part 1 of macro @<"@>. + +TEXT COMPONENT: Pos(L,C)=(13,10). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +The following test calls should NOT generate any errors.<010> +<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(17,1). +Part 1 of macro @<Macro containing the test macro calls.@>. + +TEXT COMPONENT: Pos(L,C)=(52,3). + +-- Start of Text Scrap List -- +Text scrap[White]=" " +Text scrap[Grey]="<010> +8. Test macro calls with a variety of syntax errors in parameter list.<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "1", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(58,27). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "2", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(63,27). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "3", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(68,27). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "4", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(73,27). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +<010> +" +--- End of Text Scrap List --- + + +MACRO DEFINITION COMPONENT: Pos(L,C)=(75,1). +Part 1 of macro @<Error5@>. + +TEXT COMPONENT: Pos(L,C)=(77,3). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "5", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(78,27). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "6", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(83,27). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "7", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(91,27). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +<010> +" +--- End of Text Scrap List --- + + +========================== End of DOCUMENT LIST DUMP =========================== + + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| PR09: Test calls and actual parameter lists. + 2 2| + 3 3| First trip up the parser so we don't get any further. + 4 4| @> + Error|.^The parser was at the top level and was expecting + |.^one of: {Directive, Text, Macro definition, EOF}. + 5 5| + 6 6| Now define some macros to call. No error. + 7 7| + 8 8| @$@<Zero@>@{@} + 9 9| @$@<One@>@(@1@)@{@} + 10 10| @$@<Two@>@(@2@)@{@} + 11 11| @$@<Three@>@(@3@)@{@} + 12 12| @$@<Nine@>@(@9@)@{@} + 13 13| @$@#"@{@} + 14 14| + 15 15| The following test calls should NOT generate any errors. + 16 16| + 17 17| @$@<Macro containing the test macro calls.@>==@{ + 18 18| 1. Test macro call with no parameter list. + 19 19| @<Zero@> + 20 20| + 21 21| 2. Test macro call with quick name. + 22 22| @#" + 23 23| + 24 24| 3. Test macro call with one parameter. + 25 25| @<One@>@(Toucan@) + 26 26| + 27 27| 4. Test macro call with many parameters. + 28 28| @<Two@>@(Toucan@,Teapot@) + 29 29| @<Three@>@(Toucan@,Teapot@,Walrus@) + 30 30| @<Nine@>@(Toucan@,Teapot@,Walrus@, + 31 31| Toucan@,Teapot@,Walrus@, + 32 32| Toucan@,Teapot@,Walrus@) + 33 33| + 34 34| 5. Test macro calls with double quotes on parameters. + 35 35| @<One@>@( @"Toucan@"@) + 36 36| @<Two@>@(@"Toucan@" @, @"Teapot@"@) + 37 37| @<Three@>@(@"Toucan@" @, + 38 38| @"Teapot@" @, + 39 39| @"Walrus@" @) + 40 40| @<Nine@>@( @"Toucan@" @, @"Teapot@" @, @"Walrus@" @, + 41 41| @"Toucan@" @, @"Teapot@" @, @"Walrus@" @, + 42 42| @"Toucan@" @, @"Teapot@" @, @"Walrus@" @) + 43 43| + 44 44| 7. Test macro calls with mixed double quotes on parameters. + 45 45| @<Two@>@(@"Toucan@" @,Teapot@) + 46 46| @<Three@>@(@"Toucan@" @, + 47 47| @"Teapot@" @,Walrus@) + 48 48| @<Nine@>@( @"Toucan@" @, @"Teapot@" @, Walrus @, + 49 49| @"Toucan@" @, Teapot @, @"Walrus@" @, + 50 50| @"Toucan@" @, @"Teapot@" @, @"Walrus@" @) + 51 51| + 52 52| @} @! End of macro definition enclosing all these legal tests. + 53 53| + 54 54| 8. Test macro calls with a variety of syntax errors in parameter list. + 55 55| @$@<Error1@>@{ + 56 56| @<Zero@>@( + 57 57| @} + Error|.^Expecting @" or @, or @). + |.^Skipping after error to the next major construct... + 58 58| @A@<Error recovery point@> + |.^...skipped to here after the error. + 59 59| + 60 60| @$@<Error2@>@{ + 61 61| @<Zero@>@) + Error|.........^Expecting '@}'. + |.........^Skipping after error to the next major construct... + 62 62| @} + 63 63| @A@<Error recovery point@> + |.^...skipped to here after the error. + 64 64| + 65 65| @$@<Error3@>@{ + 66 66| @<One@>@(@"Toucan@) + Error|..................^Expecting '@"'. + |..................^Skipping after error to the next major construct... + 67 67| @} + 68 68| @A@<Error recovery point@> + |.^...skipped to here after the error. + 69 69| + 70 70| @$@<Error4@>@{ + 71 71| @<One@>@(@"Toucan@"@"Sloth@"@) + Error|....................^Expecting @, or @). + |....................^Skipping after error to the next major construct... + 72 72| @} + 73 73| @A@<Error recovery point@> + |.^...skipped to here after the error. + 74 74| + 75 75| @$@<Error5@>@{ + 76 76| @<Two@>@(@"Toucan@"Teapot@) + Error|....................^Expecting whitespace text. + 77 77| @} + 78 78| @A@<Error recovery point@> + 79 79| + 80 80| @$@<Error6@>@{ + 81 81| @<Two@>@(@"Toucan@"Teapot + Error|....................^Expecting whitespace text. + 82 82| @} + Error|.^Expecting @, or @). + |.^Skipping after error to the next major construct... + 83 83| @A@<Error recovery point@> + |.^...skipped to here after the error. + 84 84| + 85 85| @$@<Error7@>@{ + 86 86| @<Two@>@(@"Toucan@"Teapot + Error|....................^Expecting whitespace text. + 87 87| @<Three@>@(Toucan@, + Error|.^Expecting @, or @). + |.^Skipping after error to the next major construct... + 88 88| @"Teapot@,Walrus + 89 89| + 90 90| @} + 91 91| @A@<Error recovery point@> + |.^...skipped to here after the error. + 92 92| + | <End-Of-File> +------------+------------------------------------------------------------------- + +There were 10 Errors. diff --git a/web/funnelAC/answers/pr10.lis b/web/funnelAC/answers/pr10.lis new file mode 100644 index 0000000000..f6d03439d5 --- /dev/null +++ b/web/funnelAC/answers/pr10.lis @@ -0,0 +1,396 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 50 52 31 30 3A 20 54 65 73 74 20 73 79 6E 74 61 | PR10: Test synta | +| 63 74 69 63 20 65 72 72 6F 72 20 72 65 63 6F 76 | ctic error recov | +| 65 72 79 2E 0A 0A 31 2E 20 54 65 73 74 20 72 65 | ery...1. Test re | +| 63 6F 76 65 72 79 20 61 74 20 74 6F 70 20 70 61 | covery at top pa | +| 72 73 69 6E 67 20 6C 65 76 65 6C 2E 0A 40 3C 0A | rsing level..@<. | +| 0A 40 41 40 3C 45 72 72 6F 72 20 72 65 63 6F 76 | .@A@<Error recov | +| 65 72 79 20 70 6F 69 6E 74 40 3E 0A 0A 32 2E 20 | ery point@>..2. | +| 54 65 73 74 20 72 65 63 6F 76 65 72 79 20 69 6E | Test recovery in | +| 73 69 64 65 20 6D 61 63 72 6F 20 64 65 66 69 6E | side macro defin | +| 69 74 69 6F 6E 2E 0A 0A 40 24 40 3C 53 6C 6F 74 | ition...@$@<Slot | +| 68 31 40 3E 40 3E 3D 3D 40 7B 0A 57 61 6C 72 75 | h1@>@>==@{.Walru | +| 73 40 7D 0A 0A 40 24 40 3C 53 6C 6F 74 68 32 40 | s@}..@$@<Sloth2@ | +| 3E 3D 3D 40 7B 0A 40 3C 57 61 6C 72 75 73 40 3C | >==@{.@<Walrus@< | +| 0A 40 7D 0A 40 41 40 3C 45 72 72 6F 72 20 72 65 | .@}.@A@<Error re | +| 63 6F 76 65 72 79 20 70 6F 69 6E 74 40 3E 0A 0A | covery point@>.. | +| 33 2E 20 54 65 73 74 20 72 65 63 6F 76 65 72 79 | 3. Test recovery | +| 20 69 6E 73 69 64 65 20 61 63 74 75 61 6C 20 70 | inside actual p | +| 61 72 61 6D 65 74 65 72 20 6C 69 73 74 20 69 6E | arameter list in | +| 20 6D 61 63 72 6F 20 64 65 66 69 6E 69 74 69 6F | macro definitio | +| 6E 2E 0A 40 24 40 3C 53 6C 6F 74 68 33 40 3E 3D | n..@$@<Sloth3@>= | +| 3D 40 7B 0A 40 3C 57 61 6C 72 75 73 40 3E 40 28 | =@{.@<Walrus@>@( | +| 40 22 61 61 72 64 76 61 72 6B 40 3E 0A 40 7D 0A | @"aardvark@>.@}. | +| 40 41 40 3C 45 72 72 6F 72 20 72 65 63 6F 76 65 | @A@<Error recove | +| 72 79 20 70 6F 69 6E 74 40 3E 0A 0A 34 2E 20 54 | ry point@>..4. T | +| 65 73 74 20 45 4F 46 20 69 6E 20 74 68 65 20 6D | est EOF in the m | +| 69 64 64 6C 65 20 6F 66 20 61 20 63 6F 6D 70 6C | iddle of a compl | +| 69 63 61 74 65 64 20 63 6F 6E 73 74 72 75 63 74 | icated construct | +| 2E 0A 54 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20 | ..The following | +| 6D 61 6B 65 73 20 74 68 65 20 65 6E 64 20 6F 66 | makes the end of | +| 20 74 68 65 20 66 69 6C 65 20 6C 6F 6F 6B 65 64 | the file looked | +| 20 63 68 6F 70 70 65 64 20 6F 66 66 2C 20 62 75 | chopped off, bu | +| 74 20 69 74 20 69 73 0A 61 63 74 75 61 6C 6C 79 | t it is.actually | +| 20 69 6E 74 65 6E 74 69 6F 6E 61 6C 2E 0A 40 24 | intentional..@$ | +| 40 3C 53 6C 6F 74 68 34 40 3E 3D 3D 40 7B 0A 40 | @<Sloth4@>==@{.@ | +| 3C 57 61 6C 72 75 73 40 3E 40 28 40 22 61 61 72 | <Walrus@>@(@"aar | +| 64 76 61 0A | dva. | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| PR10: Test syntactic error recovery.<010> +00002 00002| <010> +00003 00003| 1. Test recovery at top parsing level.<010> +00004 00004| @<<010> +00005 00005| <010> +00006 00006| @A@<Error recovery point@><010> +00007 00007| <010> +00008 00008| 2. Test recovery inside macro definition.<010> +00009 00009| <010> +00010 00010| @$@<Sloth1@>@>==@{<010> +00011 00011| Walrus@}<010> +00012 00012| <010> +00013 00013| @$@<Sloth2@>==@{<010> +00014 00014| @<Walrus@<<010> +00015 00015| @}<010> +00016 00016| @A@<Error recovery point@><010> +00017 00017| <010> +00018 00018| 3. Test recovery inside actual parameter list in macro definition.<010> +00019 00019| @$@<Sloth3@>==@{<010> +00020 00020| @<Walrus@>@(@"aardvark@><010> +00021 00021| @}<010> +00022 00022| @A@<Error recovery point@><010> +00023 00023| <010> +00024 00024| 4. Test EOF in the middle of a complicated construct.<010> +00025 00025| The following makes the end of the file looked chopped off, but it is<010> +00026 00026| actually intentional.<010> +00027 00027| @$@<Sloth4@>==@{<010> +00028 00028| @<Walrus@>@(@"aardva<010> +00029 00029| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 72 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="PR10: Test syntactic error recovery.<010> +<010> +1. Test recovery at top parsing level.<010> +" +0004[01]: @< Open name. +0004[03]: Text. Text scrap[White]="<010> +<010> +" +0006[01]: @A New section (Level 1). +0006[03]: @< Open name. +0006[05]: Text. Text scrap[Grey]="Error recovery point" +0006[25]: @> Close name. +0006[27]: Text. Text scrap[Grey]="<010> +<010> +2. Test recovery inside macro definition.<010> +<010> +" +0010[01]: @$ Macro defn. +0010[03]: @< Open name. +0010[05]: Text. Text scrap[Grey]="Sloth1" +0010[11]: @> Close name. +0010[13]: @> Close name. +0010[15]: Text. Text scrap[Grey]="==" +0010[17]: @{ Open defn. +0010[19]: Text. Text scrap[Grey]="<010> +Walrus" +0011[07]: @} Close defn. +0011[09]: Text. Text scrap[White]="<010> +<010> +" +0013[01]: @$ Macro defn. +0013[03]: @< Open name. +0013[05]: Text. Text scrap[Grey]="Sloth2" +0013[11]: @> Close name. +0013[13]: Text. Text scrap[Grey]="==" +0013[15]: @{ Open defn. +0013[17]: Text. Text scrap[White]="<010> +" +0014[01]: @< Open name. +0014[03]: Text. Text scrap[Grey]="Walrus" +0014[09]: @< Open name. +0014[11]: Text. Text scrap[White]="<010> +" +0015[01]: @} Close defn. +0015[03]: Text. Text scrap[White]="<010> +" +0016[01]: @A New section (Level 1). +0016[03]: @< Open name. +0016[05]: Text. Text scrap[Grey]="Error recovery point" +0016[25]: @> Close name. +0016[27]: Text. Text scrap[Grey]="<010> +<010> +3. Test recovery inside actual parameter list in macro definition.<010> +" +0019[01]: @$ Macro defn. +0019[03]: @< Open name. +0019[05]: Text. Text scrap[Grey]="Sloth3" +0019[11]: @> Close name. +0019[13]: Text. Text scrap[Grey]="==" +0019[15]: @{ Open defn. +0019[17]: Text. Text scrap[White]="<010> +" +0020[01]: @< Open name. +0020[03]: Text. Text scrap[Grey]="Walrus" +0020[09]: @> Close name. +0020[11]: @( Open param. +0020[13]: @" Quote. +0020[15]: Text. Text scrap[Grey]="aardvark" +0020[23]: @> Close name. +0020[25]: Text. Text scrap[White]="<010> +" +0021[01]: @} Close defn. +0021[03]: Text. Text scrap[White]="<010> +" +0022[01]: @A New section (Level 1). +0022[03]: @< Open name. +0022[05]: Text. Text scrap[Grey]="Error recovery point" +0022[25]: @> Close name. +0022[27]: Text. Text scrap[Grey]="<010> +<010> +4. Test EOF in the middle of a complicated construct.<010> +The following makes the end of the file looked chopped off, but it is<010> +actually intentional.<010> +" +0027[01]: @$ Macro defn. +0027[03]: @< Open name. +0027[05]: Text. Text scrap[Grey]="Sloth4" +0027[11]: @> Close name. +0027[13]: Text. Text scrap[Grey]="==" +0027[15]: @{ Open defn. +0027[17]: Text. Text scrap[White]="<010> +" +0028[01]: @< Open name. +0028[03]: Text. Text scrap[Grey]="Walrus" +0028[09]: @> Close name. +0028[11]: @( Open param. +0028[13]: @" Quote. +0028[15]: Text. Text scrap[Grey]="aardva<010> +" +0029[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + + +========================== Start of MACRO TABLE DUMP =========================== + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Sloth1" +Defined? : Yes. +Parameters : 0 +Additive? : No. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 0 body parts. +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Sloth2" +Defined? : Yes. +Parameters : 0 +Additive? : No. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 0 body parts. +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Sloth3" +Defined? : Yes. +Parameters : 0 +Additive? : No. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 0 body parts. +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +------------------- Start of Macro Dump -------------------- +Macro Name : "Sloth4" +Defined? : Yes. +Parameters : 0 +Additive? : No. +Zero Calls? : No. +Many Calls? : No. +Output File?: No. +Call list : +Macro body : + +--Start of List of Body Parts-- +This macro has 0 body parts. +---End of List of Body Parts--- + +-------------------- End of Macro Dump --------------------- + + + +=========================== End of MACRO TABLE DUMP ============================ + + +========================= Start of DOCUMENT LIST DUMP ========================== + + +TEXT COMPONENT: Pos(L,C)=(1,1). + +-- Start of Text Scrap List -- +Text scrap[Grey]="PR10: Test syntactic error recovery.<010> +<010> +1. Test recovery at top parsing level.<010> +" +--- End of Text Scrap List --- + + +TEXT COMPONENT: Pos(L,C)=(4,3). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "1", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(6,27). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +2. Test recovery inside macro definition.<010> +<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "2", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(16,27). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +3. Test recovery inside actual parameter list in macro definition.<010> +" +--- End of Text Scrap List --- + + +TYPESETTER DIRECTIVE COMPONENT: + Section "3", Section name="Error recovery point". + +TEXT COMPONENT: Pos(L,C)=(22,27). + +-- Start of Text Scrap List -- +Text scrap[Grey]="<010> +<010> +4. Test EOF in the middle of a complicated construct.<010> +The following makes the end of the file looked chopped off, but it is<010> +actually intentional.<010> +" +--- End of Text Scrap List --- + + +========================== End of DOCUMENT LIST DUMP =========================== + + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| PR10: Test syntactic error recovery. + 2 2| + 3 3| 1. Test recovery at top parsing level. + 4 4| @< + Error|.^The parser was at the top level and was expecting + |.^one of: {Directive, Text, Macro definition, EOF}. + 5 5| + 6 6| @A@<Error recovery point@> + 7 7| + 8 8| 2. Test recovery inside macro definition. + 9 9| + 10 10| @$@<Sloth1@>@>==@{ + Error|.............^Expecting '@{'. + |.............^Skipping after error to the next major construct... + 11 11| Walrus@} + 12 12| + 13 13| @$@<Sloth2@>==@{ + |.^...skipped to here after the error. + 14 14| @<Walrus@< + Error|.........^Illegal character or symbol in name. + |.........^Skipping after error to the next major construct... + 15 15| @} + 16 16| @A@<Error recovery point@> + |.^...skipped to here after the error. + 17 17| + 18 18| 3. Test recovery inside actual parameter list in macro definition. + 19 19| @$@<Sloth3@>==@{ + 20 20| @<Walrus@>@(@"aardvark@> + Error|.......................^Expecting '@"'. + |.......................^Skipping after error to the next major construct... + 21 21| @} + 22 22| @A@<Error recovery point@> + |.^...skipped to here after the error. + 23 23| + 24 24| 4. Test EOF in the middle of a complicated construct. + 25 25| The following makes the end of the file looked chopped off, but it is + 26 26| actually intentional. + 27 27| @$@<Sloth4@>==@{ + 28 28| @<Walrus@>@(@"aardva + | <End-Of-File> + Error|.^Expecting '@"'. + |.^Skipping after error to the next major construct... + |.^...skipped to here after the error. +------------+------------------------------------------------------------------- + +There were 5 Errors. diff --git a/web/funnelAC/answers/sc01.lis b/web/funnelAC/answers/sc01.lis new file mode 100644 index 0000000000..63a28eb6b6 --- /dev/null +++ b/web/funnelAC/answers/sc01.lis @@ -0,0 +1,35 @@ +FUNNELWEB LISTING FILE +====================== + +S: Error opening input file "<<Suppressed>>". + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 1 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + +Macro table dump skipped (Parser was not invoked). +Document list dump skipped (Parser was not invoked). + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +There was 1 Severe error. diff --git a/web/funnelAC/answers/sc02.lis b/web/funnelAC/answers/sc02.lis new file mode 100644 index 0000000000..7f0317cff0 --- /dev/null +++ b/web/funnelAC/answers/sc02.lis @@ -0,0 +1,57 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 1 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + + +========================== Start of MACRO TABLE DUMP =========================== + + +=========================== End of MACRO TABLE DUMP ============================ + + +========================= Start of DOCUMENT LIST DUMP ========================== + + +========================== End of DOCUMENT LIST DUMP =========================== + +E: No macros defined. +E: No output files specified. + +Global Local| Input File +------------+------------------------------------------------------------------- + | <End-Of-File> + Warning|.^Input file is empty (not a byte in syte)! +------------+------------------------------------------------------------------- + +There were 2 Errors and 1 Warning. diff --git a/web/funnelAC/answers/sc03.lis b/web/funnelAC/answers/sc03.lis new file mode 100644 index 0000000000..a00b57f003 --- /dev/null +++ b/web/funnelAC/answers/sc03.lis @@ -0,0 +1,68 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 0A | . | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| <010> +00002 00002| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 2 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[White]="<010> +" +0002[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + + +========================== Start of MACRO TABLE DUMP =========================== + + +=========================== End of MACRO TABLE DUMP ============================ + + +========================= Start of DOCUMENT LIST DUMP ========================== + + +TEXT COMPONENT: Pos(L,C)=(1,1). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +========================== End of DOCUMENT LIST DUMP =========================== + +E: No macros defined. +E: No output files specified. + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +There were 2 Errors. diff --git a/web/funnelAC/answers/sc04.lis b/web/funnelAC/answers/sc04.lis new file mode 100644 index 0000000000..e2f5906b5e --- /dev/null +++ b/web/funnelAC/answers/sc04.lis @@ -0,0 +1,71 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 0A 0A | .. | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| <010> +00002 00002| <010> +00003 00003| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 2 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[White]="<010> +<010> +" +0003[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + + +========================== Start of MACRO TABLE DUMP =========================== + + +=========================== End of MACRO TABLE DUMP ============================ + + +========================= Start of DOCUMENT LIST DUMP ========================== + + +TEXT COMPONENT: Pos(L,C)=(1,1). + +-- Start of Text Scrap List -- +Text scrap[White]="<010> +<010> +" +--- End of Text Scrap List --- + + +========================== End of DOCUMENT LIST DUMP =========================== + +E: No macros defined. +E: No output files specified. + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +There were 2 Errors. diff --git a/web/funnelAC/answers/sc05.lis b/web/funnelAC/answers/sc05.lis new file mode 100644 index 0000000000..efb602b4d6 --- /dev/null +++ b/web/funnelAC/answers/sc05.lis @@ -0,0 +1,72 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 30 35 3A 20 54 68 69 73 20 69 6E 70 75 74 | SC05: This input | +| 20 66 69 6C 65 20 63 6F 6E 74 61 69 6E 73 20 61 | file contains a | +| 20 73 69 6E 67 6C 65 20 6C 69 6E 65 20 63 6F 6E | single line con | +| 74 61 69 6E 69 6E 67 20 74 68 69 73 20 74 65 78 | taining this tex | +| 74 21 0A | t!. | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| SC05: This input file contains a single line containing this text!<010> +00002 00002| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 2 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="SC05: This input file contains a single line containing this text!<010> +" +0002[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + + +========================== Start of MACRO TABLE DUMP =========================== + + +=========================== End of MACRO TABLE DUMP ============================ + + +========================= Start of DOCUMENT LIST DUMP ========================== + + +TEXT COMPONENT: Pos(L,C)=(1,1). + +-- Start of Text Scrap List -- +Text scrap[Grey]="SC05: This input file contains a single line containing this text!<010> +" +--- End of Text Scrap List --- + + +========================== End of DOCUMENT LIST DUMP =========================== + +E: No macros defined. +E: No output files specified. + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +There were 2 Errors. diff --git a/web/funnelAC/answers/sc06.lis b/web/funnelAC/answers/sc06.lis new file mode 100644 index 0000000000..a03421049e --- /dev/null +++ b/web/funnelAC/answers/sc06.lis @@ -0,0 +1,91 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 30 36 3A 20 54 65 73 74 20 46 75 6E 6E 65 | SC06: Test Funne | +| 6C 57 65 62 20 6F 6E 20 61 20 66 69 6C 65 20 77 | lWeb on a file w | +| 68 6F 73 65 20 6C 61 73 74 20 6C 69 6E 65 20 69 | hose last line i | +| 73 20 6E 6F 74 20 74 65 72 6D 69 6E 61 74 65 64 | s not terminated | +| 20 70 72 6F 70 65 72 6C 79 0A 77 69 74 68 20 61 | properly.with a | +| 6E 20 65 6E 64 20 6F 66 20 6C 69 6E 65 20 6D 61 | n end of line ma | +| 72 6B 65 72 2E 0A 0A 48 65 72 65 20 69 73 20 74 | rker...Here is t | +| 68 65 20 69 6D 70 72 6F 70 65 72 20 74 65 72 6D | he improper term | +| 69 6E 61 74 69 6F 6E 21 2D 2D 2D 2D 3E | ination!----> | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| SC06: Test FunnelWeb on a file whose last line is not terminated properly<010> +00002 00002| with an end of line marker.<010> +00003 00003| <010> +00004 00004| Here is the improper termination!----><010> +00005 00005| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 2 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="SC06: Test FunnelWeb on a file whose last line is not terminated properly<010> +with an end of line marker.<010> +<010> +Here is the improper termination!----><010> +" +0005[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + + +========================== Start of MACRO TABLE DUMP =========================== + + +=========================== End of MACRO TABLE DUMP ============================ + + +========================= Start of DOCUMENT LIST DUMP ========================== + + +TEXT COMPONENT: Pos(L,C)=(1,1). + +-- Start of Text Scrap List -- +Text scrap[Grey]="SC06: Test FunnelWeb on a file whose last line is not terminated properly<010> +with an end of line marker.<010> +<010> +Here is the improper termination!----><010> +" +--- End of Text Scrap List --- + + +========================== End of DOCUMENT LIST DUMP =========================== + +E: No macros defined. +E: No output files specified. + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| SC06: Test FunnelWeb on a file whose last line is not terminated properly + 2 2| with an end of line marker. + 3 3| + 4 4| Here is the improper termination!----> + | <End-Of-File> + Warning|.^The last line of the input file was terminated by EOF. + |.^An EOL was inserted at the end of the last line. +------------+------------------------------------------------------------------- + +There were 2 Errors and 1 Warning. diff --git a/web/funnelAC/answers/sc07.lis b/web/funnelAC/answers/sc07.lis new file mode 100644 index 0000000000..b4f069ddcf --- /dev/null +++ b/web/funnelAC/answers/sc07.lis @@ -0,0 +1,187 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 30 37 3A 20 50 72 6F 63 65 73 73 69 6E 67 | SC07: Processing | +| 20 6F 66 20 6C 6F 6E 67 20 6C 69 6E 65 73 2E 0A | of long lines.. | +| 0A 53 43 30 37 2E 31 3A 20 44 65 74 65 63 74 69 | .SC07.1: Detecti | +| 6F 6E 20 6F 66 20 61 20 6C 69 6E 65 20 6C 6F 6E | on of a line lon | +| 67 65 72 20 74 68 61 6E 20 74 68 65 20 64 65 66 | ger than the def | +| 61 75 6C 74 20 6C 69 6D 69 74 2E 0A 0A 54 68 65 | ault limit...The | +| 20 64 65 66 61 75 6C 74 20 6C 69 6D 69 74 20 69 | default limit i | +| 73 20 38 30 20 63 68 61 72 61 63 74 65 72 73 20 | s 80 characters | +| 73 6F 20 77 65 20 77 69 6C 6C 20 74 65 73 74 20 | so we will test | +| 6F 6E 20 65 69 74 68 65 72 20 73 69 64 65 20 6F | on either side o | +| 66 0A 74 68 61 74 3A 0A 20 20 20 20 20 20 20 20 | f.that:. | +| 20 31 20 20 20 20 20 20 20 20 20 32 20 20 20 20 | 1 2 | +| 20 20 20 20 20 33 20 20 20 20 20 20 20 20 20 34 | 3 4 | +| 20 20 20 20 20 20 20 20 20 35 20 20 20 20 20 20 | 5 | +| 20 20 20 36 20 20 20 20 20 20 20 20 20 37 20 20 | 6 7 | +| 20 20 20 20 20 20 20 38 0A 31 32 33 34 35 36 37 | 8.1234567 | +| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 | +| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 | +| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 | +| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 | +| 32 33 34 35 36 37 38 39 30 0A 54 68 65 20 61 62 | 234567890.The ab | +| 6F 76 65 20 73 68 6F 75 6C 64 20 6E 6F 74 20 74 | ove should not t | +| 72 69 67 67 65 72 20 61 20 22 6C 69 6E 65 20 74 | rigger a "line t | +| 6F 6F 20 6C 6F 6E 67 20 65 72 72 6F 72 22 2E 20 | oo long error". | +| 42 75 74 20 74 68 69 73 20 6C 69 6E 65 20 73 68 | But this line sh | +| 6F 75 6C 64 21 2D 2D 2D 2D 2D 2D 0A 0A 53 43 30 | ould!------..SC0 | +| 37 2E 33 3A 20 54 65 73 74 20 74 68 65 20 6C 69 | 7.3: Test the li | +| 6D 69 74 20 73 65 74 20 61 74 20 69 6E 66 69 6E | mit set at infin | +| 69 74 79 2E 0A 0A 40 70 20 6D 61 78 69 6D 75 6D | ity...@p maximum | +| 5F 69 6E 70 75 74 5F 6C 69 6E 65 5F 6C 65 6E 67 | _input_line_leng | +| 74 68 20 3D 20 69 6E 66 69 6E 69 74 79 0A 0A 20 | th = infinity.. | +| 20 20 20 20 20 20 20 20 31 20 20 20 20 20 20 20 | 1 | +| 20 20 32 20 20 20 20 20 20 20 20 20 33 20 20 20 | 2 3 | +| 20 20 20 20 20 20 34 20 20 20 20 20 20 20 20 20 | 4 | +| 35 20 20 20 20 20 20 20 20 20 36 20 20 20 20 20 | 5 6 | +| 20 20 20 20 37 20 20 20 20 20 20 20 20 20 38 0A | 7 8. | +| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | +| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | +| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | +| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | +| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | +| 0A 54 68 65 20 61 62 6F 76 65 20 73 68 6F 75 6C | .The above shoul | +| 64 20 6E 6F 74 20 74 72 69 67 67 65 72 20 61 20 | d not trigger a | +| 22 6C 69 6E 65 20 74 6F 6F 20 6C 6F 6E 67 20 65 | "line too long e | +| 72 72 6F 72 22 2E 20 4E 6F 72 20 73 68 6F 75 6C | rror". Nor shoul | +| 64 20 74 68 69 73 20 6F 6E 65 21 2D 2D 2D 2D 2D | d this one!----- | +| 2D 2D 0A 0A 53 43 30 37 2E 33 3A 20 54 65 73 74 | --..SC07.3: Test | +| 20 74 68 65 20 6C 69 6D 69 74 20 73 65 74 20 6C | the limit set l | +| 6F 77 65 72 2E 0A 0A 40 70 20 6D 61 78 69 6D 75 | ower...@p maximu | +| 6D 5F 69 6E 70 75 74 5F 6C 69 6E 65 5F 6C 65 6E | m_input_line_len | +| 67 74 68 20 3D 20 35 30 0A 0A 20 20 20 20 20 20 | gth = 50.. | +| 20 20 20 31 20 20 20 20 20 20 20 20 20 32 20 20 | 1 2 | +| 20 20 20 20 20 20 20 33 20 20 20 20 20 20 20 20 | 3 | +| 20 34 20 20 20 20 20 20 20 20 20 35 0A 31 32 33 | 4 5.123 | +| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 | +| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 | +| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 0A | 678901234567890. | +| 4E 6F 20 65 72 72 6F 72 20 66 6F 72 20 74 68 65 | No error for the | +| 20 61 62 6F 76 65 20 62 75 74 20 74 68 69 73 20 | above but this | +| 6C 69 6E 65 20 77 69 6C 6C 21 2D 2D 2D 2D 2D 2D | line will!------ | +| 2D 2D 2D 0A | ---. | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| SC07: Processing of long lines.<010> +00002 00002| <010> +00003 00003| SC07.1: Detection of a line longer than the default limit.<010> +00004 00004| <010> +00005 00005| The default limit is 80 characters so we will test on either side of<010> +00006 00006| that:<010> +00007 00007| 1 2 3 4 5 6 7 8<010> +00008 00008| 12345678901234567890123456789012345678901234567890123456789012345678901234567890<010> +00009 00009| The above should not trigger a "line too long error". But this line should!------<010> +00010 00010| <010> +00011 00011| SC07.3: Test the limit set at infinity.<010> +00012 00012| <010> +00013 00013| @p maximum_input_line_length = infinity<010> +00014 00014| <010> +00015 00015| 1 2 3 4 5 6 7 8<010> +00016 00016| 12345678901234567890123456789012345678901234567890123456789012345678901234567890<010> +00017 00017| The above should not trigger a "line too long error". Nor should this one!-------<010> +00018 00018| <010> +00019 00019| SC07.3: Test the limit set lower.<010> +00020 00020| <010> +00021 00021| @p maximum_input_line_length = 50<010> +00022 00022| <010> +00023 00023| 1 2 3 4 5<010> +00024 00024| 12345678901234567890123456789012345678901234567890<010> +00025 00025| No error for the above but this line will!---------<010> +00026 00026| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 4 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="SC07: Processing of long lines.<010> +<010> +SC07.1: Detection of a line longer than the default limit.<010> +<010> +The default limit is 80 characters so we will test on either side of<010> +that:<010> + 1 2 3 4 5 6 7 8<010> +12345678901234567890123456789012345678901234567890123456789012345678901234567890<010> +The above should not trigger a "line too long error". But this line should!------<010> +<010> +SC07.3: Test the limit set at infinity.<010> +<010> +" +0014[01]: Text. Text scrap[Grey]="<010> + 1 2 3 4 5 6 7 8<010> +12345678901234567890123456789012345678901234567890123456789012345678901234567890<010> +The above should not trigger a "line too long error". Nor should this one!-------<010> +<010> +SC07.3: Test the limit set lower.<010> +<010> +" +0022[01]: Text. Text scrap[Grey]="<010> + 1 2 3 4 5<010> +12345678901234567890123456789012345678901234567890<010> +No error for the above but this line will!---------<010> +" +0026[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + +Macro table dump skipped (Parser was not invoked). +Document list dump skipped (Parser was not invoked). + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| SC07: Processing of long lines. + 2 2| + 3 3| SC07.1: Detection of a line longer than the default limit. + 4 4| + 5 5| The default limit is 80 characters so we will test on either side of + 6 6| that: + 7 7| 1 2 3 4 5 6 7 8 + 8 8| 12345678901234567890123456789012345678901234567890123456789012345678901234567890 + 9 9| The above should not trigger a "line too long error". But this line should!------ + Error|.................................................................................^Input line is too long (this character is the first offender). + |.................................................................................^Currently, the maximum allowable input line length is 80. + |.................................................................................^Note: You can change this using a pragma directive (@p). + 10 10| + 11 11| SC07.3: Test the limit set at infinity. + 12 12| + 13 13| @p maximum_input_line_length = infinity + 14 14| + 15 15| 1 2 3 4 5 6 7 8 + 16 16| 12345678901234567890123456789012345678901234567890123456789012345678901234567890 + 17 17| The above should not trigger a "line too long error". Nor should this one!------- + 18 18| + 19 19| SC07.3: Test the limit set lower. + 20 20| + 21 21| @p maximum_input_line_length = 50 + 22 22| + 23 23| 1 2 3 4 5 + 24 24| 12345678901234567890123456789012345678901234567890 + 25 25| No error for the above but this line will!--------- + Error|...................................................^Input line is too long (this character is the first offender). + |...................................................^Currently, the maximum allowable input line length is 50. + |...................................................^Note: You can change this using a pragma directive (@p). + | <End-Of-File> +------------+------------------------------------------------------------------- + +There were 2 Errors. diff --git a/web/funnelAC/answers/sc08.lis b/web/funnelAC/answers/sc08.lis new file mode 100644 index 0000000000..b12e7d8c30 --- /dev/null +++ b/web/funnelAC/answers/sc08.lis @@ -0,0 +1,104 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 30 38 3A 20 44 65 74 65 63 74 69 6F 6E 20 | SC08: Detection | +| 6F 66 20 74 72 61 69 6C 69 6E 67 20 73 70 61 63 | of trailing spac | +| 65 73 2E 0A 0A 54 68 69 73 20 6C 69 6E 65 20 68 | es...This line h | +| 61 73 20 7A 65 72 6F 20 20 74 72 61 69 6C 69 6E | as zero trailin | +| 67 20 73 70 61 63 65 73 20 7C 0A 54 68 69 73 20 | g spaces |.This | +| 6C 69 6E 65 20 68 61 73 20 6F 6E 65 20 20 20 74 | line has one t | +| 72 61 69 6C 69 6E 67 20 73 70 61 63 65 20 20 7C | railing space | | +| 20 0A 54 68 69 73 20 6C 69 6E 65 20 68 61 73 20 | .This line has | +| 74 77 6F 20 20 20 74 72 61 69 6C 69 6E 67 20 73 | two trailing s | +| 70 61 63 65 73 20 7C 20 20 0A 54 68 69 73 20 6C | paces | .This l | +| 69 6E 65 20 68 61 73 20 74 68 72 65 65 20 74 72 | ine has three tr | +| 61 69 6C 69 6E 67 20 73 70 61 63 65 73 20 7C 20 | ailing spaces | | +| 20 20 0A | . | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| SC08: Detection of trailing spaces.<010> +00002 00002| <010> +00003 00003| This line has zero trailing spaces |<010> +00004 00004| This line has one trailing space | <010> +00005 00005| This line has two trailing spaces | <010> +00006 00006| This line has three trailing spaces | <010> +00007 00007| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 2 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="SC08: Detection of trailing spaces.<010> +<010> +This line has zero trailing spaces |<010> +This line has one trailing space | <010> +This line has two trailing spaces | <010> +This line has three trailing spaces | <010> +" +0007[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + + +========================== Start of MACRO TABLE DUMP =========================== + + +=========================== End of MACRO TABLE DUMP ============================ + + +========================= Start of DOCUMENT LIST DUMP ========================== + + +TEXT COMPONENT: Pos(L,C)=(1,1). + +-- Start of Text Scrap List -- +Text scrap[Grey]="SC08: Detection of trailing spaces.<010> +<010> +This line has zero trailing spaces |<010> +This line has one trailing space | <010> +This line has two trailing spaces | <010> +This line has three trailing spaces | <010> +" +--- End of Text Scrap List --- + + +========================== End of DOCUMENT LIST DUMP =========================== + +E: No macros defined. +E: No output files specified. + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| SC08: Detection of trailing spaces. + 2 2| + 3 3| This line has zero trailing spaces | + 4 4| This line has one trailing space | + Warning|......................................^Line has trailing spaces up to and including this space. + 5 5| This line has two trailing spaces | + Warning|.......................................^Line has trailing spaces up to and including this space. + 6 6| This line has three trailing spaces | + Warning|........................................^Line has trailing spaces up to and including this space. + | <End-Of-File> +------------+------------------------------------------------------------------- + +There were 2 Errors and 3 Warnings. diff --git a/web/funnelAC/answers/sc09.lis b/web/funnelAC/answers/sc09.lis new file mode 100644 index 0000000000..eeea2f8c82 --- /dev/null +++ b/web/funnelAC/answers/sc09.lis @@ -0,0 +1,106 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 30 39 3A 20 44 65 74 65 63 74 69 6F 6E 20 | SC09: Detection | +| 6F 66 20 63 6F 6E 74 72 6F 6C 20 63 68 61 72 61 | of control chara | +| 63 74 65 72 73 2E 0A 0A 53 43 30 39 2E 31 20 54 | cters...SC09.1 T | +| 65 73 74 20 74 68 61 74 20 63 6F 6E 74 72 6F 6C | est that control | +| 20 63 68 61 72 61 63 74 65 72 73 20 61 72 65 20 | characters are | +| 64 65 74 65 63 74 65 64 20 61 6E 64 20 72 65 70 | detected and rep | +| 6C 61 63 65 64 20 62 79 20 22 3F 22 2E 0A 53 43 | laced by "?"..SC | +| 30 39 2E 32 20 54 65 73 74 20 6E 6F 6E 20 70 72 | 09.2 Test non pr | +| 69 6E 74 61 62 6C 65 20 74 68 61 74 20 68 61 73 | intable that has | +| 20 61 20 6D 6E 65 6D 6F 6E 69 63 2E 0A 0A 54 68 | a mnemonic...Th | +| 65 72 65 20 69 73 20 61 20 74 61 62 20 62 65 74 | ere is a tab bet | +| 77 65 65 6E 20 74 68 65 73 65 20 74 77 6F 20 62 | ween these two b | +| 61 72 73 20 7C 09 7C 20 77 68 69 63 68 20 73 68 | ars |.| which sh | +| 6F 75 6C 64 20 63 6F 6D 65 20 6F 75 74 20 61 73 | ould come out as | +| 20 22 3F 22 2E 0A 54 68 65 20 61 62 6F 76 65 20 | "?"..The above | +| 65 72 72 6F 72 20 6D 65 73 73 61 67 65 20 73 68 | error message sh | +| 6F 75 6C 64 20 63 6F 6E 74 61 69 6E 20 74 68 65 | ould contain the | +| 20 6D 6E 65 6D 6F 6E 69 63 20 22 48 54 22 2E 0A | mnemonic "HT".. | +| 0A 53 43 30 39 2E 33 20 54 65 73 74 20 6E 6F 6E | .SC09.3 Test non | +| 20 70 72 69 6E 74 61 62 6C 65 20 74 68 61 74 20 | printable that | +| 68 61 73 20 6E 6F 20 6D 6E 65 6D 6F 6E 69 63 2E | has no mnemonic. | +| 0A 0A 54 68 65 72 65 20 69 73 20 61 20 6E 6F 6E | ..There is a non | +| 2D 6D 6E 65 6D 6F 6E 69 63 20 63 6F 6E 74 72 6F | -mnemonic contro | +| 6C 20 63 68 61 72 61 63 74 65 72 20 62 65 74 77 | l character betw | +| 65 65 6E 20 74 68 65 73 65 20 62 61 72 73 20 7C | een these bars | | +| EA 7C 2E 0A | .|.. | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| SC09: Detection of control characters.<010> +00002 00002| <010> +00003 00003| SC09.1 Test that control characters are detected and replaced by "?".<010> +00004 00004| SC09.2 Test non printable that has a mnemonic.<010> +00005 00005| <010> +00006 00006| There is a tab between these two bars |?| which should come out as "?".<010> +00007 00007| The above error message should contain the mnemonic "HT".<010> +00008 00008| <010> +00009 00009| SC09.3 Test non printable that has no mnemonic.<010> +00010 00010| <010> +00011 00011| There is a non-mnemonic control character between these bars |?|.<010> +00012 00012| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 2 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="SC09: Detection of control characters.<010> +<010> +SC09.1 Test that control characters are detected and replaced by "?".<010> +SC09.2 Test non printable that has a mnemonic.<010> +<010> +There is a tab between these two bars |?| which should come out as "?".<010> +The above error message should contain the mnemonic "HT".<010> +<010> +SC09.3 Test non printable that has no mnemonic.<010> +<010> +There is a non-mnemonic control character between these bars |?|.<010> +" +0012[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + +Macro table dump skipped (Parser was not invoked). +Document list dump skipped (Parser was not invoked). + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| SC09: Detection of control characters. + 2 2| + 3 3| SC09.1 Test that control characters are detected and replaced by "?". + 4 4| SC09.2 Test non printable that has a mnemonic. + 5 5| + 6 6| There is a tab between these two bars |?| which should come out as "?". + Error|........................................^Non printable character (Sym=HT, Dec=009, Hex=09, Oct=011). + 7 7| The above error message should contain the mnemonic "HT". + 8 8| + 9 9| SC09.3 Test non printable that has no mnemonic. + 10 10| + 11 11| There is a non-mnemonic control character between these bars |?|. + Error|...............................................................^Non printable character (Sym=<none>, Dec=234, Hex=EA, Oct=352). + | <End-Of-File> +------------+------------------------------------------------------------------- + +There were 2 Errors. diff --git a/web/funnelAC/answers/sc10.lis b/web/funnelAC/answers/sc10.lis new file mode 100644 index 0000000000..91c73ab487 --- /dev/null +++ b/web/funnelAC/answers/sc10.lis @@ -0,0 +1,864 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 63 61 6E 6E 65 72 20 54 65 73 74 3A 20 53 70 | Scanner Test: Sp | +| 65 63 69 61 6C 20 53 65 71 75 65 6E 63 65 20 52 | ecial Sequence R | +| 65 63 6F 67 6E 69 74 69 6F 6E 0A 3D 3D 3D 3D 3D | ecognition.===== | +| 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D | ================ | +| 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D | ================ | +| 3D 3D 3D 3D 3D 0A 54 68 69 73 20 74 65 73 74 20 | =====.This test | +| 74 65 73 74 73 20 74 6F 20 73 65 65 20 74 68 61 | tests to see tha | +| 74 20 46 75 6E 6E 65 6C 57 65 62 20 69 73 20 72 | t FunnelWeb is r | +| 65 63 6F 67 6E 69 73 69 6E 67 20 74 68 65 20 66 | ecognising the f | +| 75 6C 6C 20 73 65 74 20 6F 66 20 73 70 65 63 69 | ull set of speci | +| 61 6C 0A 73 65 71 75 65 6E 63 65 73 2E 0A 0A 54 | al.sequences...T | +| 75 72 6E 20 4F 66 66 20 74 68 65 20 50 61 72 73 | urn Off the Pars | +| 65 72 0A 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D | er.------------- | +| 2D 2D 2D 2D 2D 2D 0A 46 69 72 73 74 20 77 65 20 | ------.First we | +| 63 61 75 73 65 20 61 20 64 65 6C 69 62 65 72 61 | cause a delibera | +| 74 65 20 73 63 61 6E 6E 65 72 20 65 72 72 6F 72 | te scanner error | +| 20 73 6F 20 61 73 20 74 6F 20 70 72 65 76 65 6E | so as to preven | +| 74 20 74 68 65 20 70 61 72 73 65 72 20 66 72 6F | t the parser fro | +| 6D 0A 67 65 6E 65 72 61 74 69 6E 67 20 6C 6F 74 | m.generating lot | +| 73 20 6F 66 20 65 72 72 6F 72 73 20 6F 76 65 72 | s of errors over | +| 20 74 68 65 20 73 79 6E 74 61 63 74 69 63 20 72 | the syntactic r | +| 75 62 62 69 73 68 20 70 72 65 73 65 6E 74 65 64 | ubbish presented | +| 20 68 65 72 65 2E 0A 0A 20 20 20 40 20 0A 0A 4C | here... @ ..L | +| 69 73 74 20 6F 66 20 41 6C 6C 20 50 6F 73 73 69 | ist of All Possi | +| 62 6C 65 20 53 70 65 63 69 61 6C 20 53 65 71 75 | ble Special Sequ | +| 65 6E 63 65 73 0A 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D | ences.---------- | +| 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D | ---------------- | +| 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0A 54 68 65 | ------------.The | +| 20 66 6F 6C 6C 6F 77 69 6E 67 20 69 73 20 61 20 | following is a | +| 6C 69 73 74 20 6F 66 20 74 68 65 20 64 65 66 61 | list of the defa | +| 75 6C 74 20 73 70 65 63 69 61 6C 20 63 68 61 72 | ult special char | +| 61 63 74 65 72 20 66 6F 6C 6C 6F 77 65 64 20 62 | acter followed b | +| 79 20 65 61 63 68 20 6F 66 0A 74 68 65 20 41 53 | y each of.the AS | +| 43 49 49 20 70 72 69 6E 74 61 62 6C 65 73 2E 0A | CII printables.. | +| 30 30 30 20 74 6F 20 30 33 31 20 61 72 65 20 75 | 000 to 031 are u | +| 6E 70 72 69 6E 74 61 62 6C 65 20 63 6F 6E 74 72 | nprintable contr | +| 6F 6C 20 63 68 61 72 61 63 74 65 72 73 2E 0A 0A | ol characters... | +| 30 33 32 20 20 40 20 20 20 20 2D 20 49 4C 4C 45 | 032 @ - ILLE | +| 47 41 4C 2E 20 20 28 4E 6F 74 65 3A 20 48 79 70 | GAL. (Note: Hyp | +| 68 65 6E 20 69 73 20 6E 65 65 64 65 64 20 74 6F | hen is needed to | +| 20 61 76 6F 69 64 20 74 72 61 69 6C 69 6E 67 20 | avoid trailing | +| 62 6C 61 6E 6B 73 20 65 72 72 6F 72 2E 29 0A 30 | blanks error.).0 | +| 33 33 20 20 40 21 20 20 20 2D 20 43 6F 6D 6D 65 | 33 @! - Comme | +| 6E 74 2E 0A 30 33 34 20 20 40 22 20 20 20 2D 20 | nt..034 @" - | +| 50 61 72 61 6D 65 74 65 72 20 64 65 6C 69 6D 65 | Parameter delime | +| 74 65 72 2E 0A 30 33 35 20 20 40 23 58 20 20 2D | ter..035 @#X - | +| 20 53 68 6F 72 74 20 6E 61 6D 65 20 73 65 71 75 | Short name sequ | +| 65 6E 63 65 2E 0A 40 24 20 20 20 30 33 36 20 20 | ence..@$ 036 | +| 2D 20 44 65 66 69 6E 65 20 6D 61 63 72 6F 2E 20 | - Define macro. | +| 48 61 73 20 74 6F 20 62 65 20 61 74 20 73 74 61 | Has to be at sta | +| 72 74 20 6F 66 20 6C 69 6E 65 2E 0A 30 33 37 20 | rt of line..037 | +| 20 40 25 20 20 20 2D 20 49 4C 4C 45 47 41 4C 2E | @% - ILLEGAL. | +| 0A 30 33 38 20 20 40 26 20 20 20 2D 20 49 4C 4C | .038 @& - ILL | +| 45 47 41 4C 2E 0A 30 33 39 20 20 40 27 20 20 20 | EGAL..039 @' | +| 2D 20 49 4C 4C 45 47 41 4C 2E 0A 30 34 30 20 20 | - ILLEGAL..040 | +| 40 28 20 20 20 2D 20 4F 70 65 6E 20 70 61 72 61 | @( - Open para | +| 6D 65 74 65 72 20 6C 69 73 74 2E 0A 30 34 31 20 | meter list..041 | +| 20 40 29 20 20 20 2D 20 43 6C 6F 73 65 20 70 61 | @) - Close pa | +| 72 61 6D 65 74 65 72 20 6C 69 73 74 2E 0A 30 34 | rameter list..04 | +| 32 0A 40 2A 20 20 20 20 20 20 20 20 2D 20 4F 6C | 2.@* - Ol | +| 64 20 66 61 73 68 69 6F 6E 65 64 20 73 65 63 74 | d fashioned sect | +| 69 6F 6E 20 6D 61 72 6B 65 72 20 28 68 61 73 20 | ion marker (has | +| 74 6F 20 62 65 20 61 74 20 73 74 61 72 74 20 6F | to be at start o | +| 66 20 61 20 6C 69 6E 65 2E 29 2E 0A 30 34 33 20 | f a line.)..043 | +| 20 40 2B 20 20 20 2D 20 49 6E 73 65 72 74 20 6E | @+ - Insert n | +| 65 77 6C 69 6E 65 2E 0A 30 34 34 20 20 40 2C 20 | ewline..044 @, | +| 20 20 2D 20 50 61 72 61 6D 65 74 65 72 20 73 65 | - Parameter se | +| 70 61 72 61 74 6F 72 2E 0A 30 34 35 20 20 40 2D | parator..045 @- | +| 0A 20 20 20 20 20 20 20 20 20 20 2D 20 49 67 6E | . - Ign | +| 6F 72 65 20 65 6E 64 20 6F 66 20 6C 69 6E 65 20 | ore end of line | +| 6D 61 72 6B 65 72 20 28 68 61 73 20 74 6F 20 62 | marker (has to b | +| 65 20 61 74 20 65 6E 64 20 6F 66 20 6C 69 6E 65 | e at end of line | +| 29 2E 0A 30 34 36 20 20 40 2E 20 20 20 2D 20 49 | )..046 @. - I | +| 4C 4C 45 47 41 4C 2E 0A 30 34 37 20 20 40 2F 20 | LLEGAL..047 @/ | +| 20 20 2D 20 45 6D 70 68 61 73 69 73 65 64 20 74 | - Emphasised t | +| 65 78 74 2E 0A 30 34 38 20 20 40 30 20 20 20 2D | ext..048 @0 - | +| 20 49 4C 4C 45 47 41 4C 2E 0A 30 34 39 20 20 40 | ILLEGAL..049 @ | +| 31 20 20 20 2D 20 46 6F 72 6D 61 6C 20 70 61 72 | 1 - Formal par | +| 61 6D 65 74 65 72 20 31 2E 0A 30 35 30 20 20 40 | ameter 1..050 @ | +| 32 20 20 20 2D 20 46 6F 72 6D 61 6C 20 70 61 72 | 2 - Formal par | +| 61 6D 65 74 65 72 20 32 2E 0A 30 35 31 20 20 40 | ameter 2..051 @ | +| 33 20 20 20 2D 20 46 6F 72 6D 61 6C 20 70 61 72 | 3 - Formal par | +| 61 6D 65 74 65 72 20 33 2E 0A 30 35 32 20 20 40 | ameter 3..052 @ | +| 34 20 20 20 2D 20 46 6F 72 6D 61 6C 20 70 61 72 | 4 - Formal par | +| 61 6D 65 74 65 72 20 34 2E 0A 30 35 33 20 20 40 | ameter 4..053 @ | +| 35 20 20 20 2D 20 46 6F 72 6D 61 6C 20 70 61 72 | 5 - Formal par | +| 61 6D 65 74 65 72 20 35 2E 0A 30 35 34 20 20 40 | ameter 5..054 @ | +| 36 20 20 20 2D 20 46 6F 72 6D 61 6C 20 70 61 72 | 6 - Formal par | +| 61 6D 65 74 65 72 20 36 2E 0A 30 35 35 20 20 40 | ameter 6..055 @ | +| 37 20 20 20 2D 20 46 6F 72 6D 61 6C 20 70 61 72 | 7 - Formal par | +| 61 6D 65 74 65 72 20 37 2E 0A 30 35 36 20 20 40 | ameter 7..056 @ | +| 38 20 20 20 2D 20 46 6F 72 6D 61 6C 20 70 61 72 | 8 - Formal par | +| 61 6D 65 74 65 72 20 38 2E 0A 30 35 37 20 20 40 | ameter 8..057 @ | +| 39 20 20 20 2D 20 46 6F 72 6D 61 6C 20 70 61 72 | 9 - Formal par | +| 61 6D 65 74 65 72 20 39 2E 0A 30 35 38 20 20 40 | ameter 9..058 @ | +| 3A 20 20 20 2D 20 49 4C 4C 45 47 41 4C 2E 0A 30 | : - ILLEGAL..0 | +| 35 39 20 20 40 3B 20 20 20 2D 20 49 4C 4C 45 47 | 59 @; - ILLEG | +| 41 4C 2E 0A 30 36 30 20 20 40 3C 20 20 20 2D 20 | AL..060 @< - | +| 4F 70 65 6E 20 6D 61 63 72 6F 20 6E 61 6D 65 2E | Open macro name. | +| 0A 30 36 31 20 20 40 3D 40 20 20 2D 20 53 65 74 | .061 @=@ - Set | +| 20 73 70 65 63 69 61 6C 20 63 68 61 72 61 63 74 | special charact | +| 65 72 2E 0A 30 36 32 20 20 40 3E 20 20 20 2D 20 | er..062 @> - | +| 43 6C 6F 73 65 20 6D 61 63 72 6F 20 6E 61 6D 65 | Close macro name | +| 2E 0A 30 36 33 20 20 40 3F 20 20 20 2D 20 49 4C | ..063 @? - IL | +| 4C 45 47 41 4C 2E 0A 30 36 34 20 20 40 40 20 20 | LEGAL..064 @@ | +| 20 2D 20 49 6E 73 65 72 74 20 73 70 65 63 69 61 | - Insert specia | +| 6C 20 63 68 61 72 61 63 74 65 72 20 69 6E 74 6F | l character into | +| 20 74 65 78 74 2E 0A 40 41 20 20 30 36 35 20 20 | text..@A 065 | +| 20 2D 20 4E 65 77 20 73 65 63 74 69 6F 6E 20 28 | - New section ( | +| 6C 65 76 65 6C 20 31 29 2E 20 4D 75 73 74 20 62 | level 1). Must b | +| 65 20 61 74 20 73 74 61 72 74 20 6F 66 20 61 20 | e at start of a | +| 6C 69 6E 65 2E 0A 40 42 20 20 30 36 36 20 20 20 | line..@B 066 | +| 2D 20 4E 65 77 20 73 65 63 74 69 6F 6E 20 28 6C | - New section (l | +| 65 76 65 6C 20 32 29 2E 20 4D 75 73 74 20 62 65 | evel 2). Must be | +| 20 61 74 20 73 74 61 72 74 20 6F 66 20 61 20 6C | at start of a l | +| 69 6E 65 2E 0A 40 43 20 20 30 36 37 20 20 20 2D | ine..@C 067 - | +| 20 4E 65 77 20 73 65 63 74 69 6F 6E 20 28 6C 65 | New section (le | +| 76 65 6C 20 33 29 2E 20 4D 75 73 74 20 62 65 20 | vel 3). Must be | +| 61 74 20 73 74 61 72 74 20 6F 66 20 61 20 6C 69 | at start of a li | +| 6E 65 2E 0A 40 44 20 20 30 36 38 20 20 20 2D 20 | ne..@D 068 - | +| 4E 65 77 20 73 65 63 74 69 6F 6E 20 28 6C 65 76 | New section (lev | +| 65 6C 20 34 29 2E 20 4D 75 73 74 20 62 65 20 61 | el 4). Must be a | +| 74 20 73 74 61 72 74 20 6F 66 20 61 20 6C 69 6E | t start of a lin | +| 65 2E 0A 40 45 20 20 30 36 39 20 20 20 2D 20 4E | e..@E 069 - N | +| 65 77 20 73 65 63 74 69 6F 6E 20 28 6C 65 76 65 | ew section (leve | +| 6C 20 35 29 2E 20 4D 75 73 74 20 62 65 20 61 74 | l 5). Must be at | +| 20 73 74 61 72 74 20 6F 66 20 61 20 6C 69 6E 65 | start of a line | +| 2E 0A 30 37 30 20 20 40 46 20 20 20 2D 20 49 4C | ..070 @F - IL | +| 4C 45 47 41 4C 2E 0A 30 37 31 20 20 40 47 20 20 | LEGAL..071 @G | +| 20 2D 20 49 4C 4C 45 47 41 4C 2E 0A 30 37 32 20 | - ILLEGAL..072 | +| 20 40 48 20 20 20 2D 20 49 4C 4C 45 47 41 4C 2E | @H - ILLEGAL. | +| 0A 30 37 33 20 20 40 49 20 20 20 2D 20 49 6E 63 | .073 @I - Inc | +| 6C 75 64 65 20 66 69 6C 65 2E 20 57 69 6C 6C 20 | lude file. Will | +| 70 72 6F 76 6F 6B 65 20 61 6E 20 65 72 72 6F 72 | provoke an error | +| 20 68 65 72 65 20 74 68 6F 75 67 68 2E 0A 30 37 | here though..07 | +| 34 20 20 40 4A 20 20 20 2D 20 49 4C 4C 45 47 41 | 4 @J - ILLEGA | +| 4C 2E 0A 30 37 35 20 20 40 4B 20 20 20 2D 20 49 | L..075 @K - I | +| 4C 4C 45 47 41 4C 2E 0A 30 37 36 20 20 40 4C 20 | LLEGAL..076 @L | +| 20 20 2D 20 49 4C 4C 45 47 41 4C 2E 0A 30 37 37 | - ILLEGAL..077 | +| 20 20 40 4D 20 20 20 2D 20 54 61 67 73 20 6D 61 | @M - Tags ma | +| 63 72 6F 20 61 73 20 62 65 69 6E 67 20 61 6C 6C | cro as being all | +| 6F 77 65 64 20 74 6F 20 62 65 20 63 61 6C 6C 65 | owed to be calle | +| 64 20 6D 61 6E 79 20 74 69 6D 65 73 2E 0A 30 37 | d many times..07 | +| 38 20 20 40 4E 20 20 20 2D 20 49 4C 4C 45 47 41 | 8 @N - ILLEGA | +| 4C 2E 0A 40 4F 20 20 20 30 37 39 20 20 2D 20 4E | L..@O 079 - N | +| 65 77 20 6D 61 63 72 6F 20 61 74 74 61 63 68 65 | ew macro attache | +| 64 20 74 6F 20 6F 75 74 70 75 74 20 66 69 6C 65 | d to output file | +| 2E 20 48 61 73 20 74 6F 20 62 65 20 61 74 20 73 | . Has to be at s | +| 74 61 72 74 20 6F 66 20 6C 69 6E 65 2E 0A 30 38 | tart of line..08 | +| 30 20 20 40 50 20 20 20 2D 20 50 72 61 67 6D 61 | 0 @P - Pragma | +| 2E 20 57 69 6C 6C 20 63 61 75 73 65 20 65 72 72 | . Will cause err | +| 6F 72 20 68 65 72 65 20 74 68 6F 75 67 68 2E 0A | or here though.. | +| 30 38 31 20 20 40 51 20 20 20 2D 20 49 4C 4C 45 | 081 @Q - ILLE | +| 47 41 4C 2E 0A 30 38 32 20 20 40 52 20 20 20 2D | GAL..082 @R - | +| 20 49 4C 4C 45 47 41 4C 2E 0A 30 38 33 20 20 40 | ILLEGAL..083 @ | +| 53 20 20 20 2D 20 49 4C 4C 45 47 41 4C 2E 0A 30 | S - ILLEGAL..0 | +| 38 34 20 20 40 54 20 20 20 2D 20 54 79 70 65 73 | 84 @T - Types | +| 65 74 74 65 72 20 64 69 72 65 63 74 69 76 65 2E | etter directive. | +| 20 57 69 6C 6C 20 63 61 75 73 65 20 61 6E 20 65 | Will cause an e | +| 72 72 6F 72 20 68 65 72 65 20 74 68 6F 75 67 68 | rror here though | +| 2E 0A 30 38 35 20 20 40 55 20 20 20 2D 20 49 4C | ..085 @U - IL | +| 4C 45 47 41 4C 2E 0A 30 38 36 20 20 40 56 20 20 | LEGAL..086 @V | +| 20 2D 20 49 4C 4C 45 47 41 4C 2E 0A 30 38 37 20 | - ILLEGAL..087 | +| 20 40 57 20 20 20 2D 20 49 4C 4C 45 47 41 4C 2E | @W - ILLEGAL. | +| 0A 30 38 38 20 20 40 58 20 20 20 2D 20 49 4C 4C | .088 @X - ILL | +| 45 47 41 4C 2E 0A 30 38 39 20 20 40 59 20 20 20 | EGAL..089 @Y | +| 2D 20 49 4C 4C 45 47 41 4C 2E 0A 30 39 30 20 20 | - ILLEGAL..090 | +| 40 5A 20 20 20 2D 20 54 61 67 73 20 6D 61 63 72 | @Z - Tags macr | +| 6F 20 61 73 20 62 65 69 6E 67 20 61 6C 6C 6F 77 | o as being allow | +| 65 64 20 74 6F 20 62 65 20 63 61 6C 6C 65 64 20 | ed to be called | +| 7A 65 72 6F 20 74 69 6D 65 73 2E 0A 30 39 31 20 | zero times..091 | +| 20 40 5B 20 20 20 2D 20 49 4C 4C 45 47 41 4C 2E | @[ - ILLEGAL. | +| 0A 30 39 32 20 20 40 5C 20 20 20 2D 20 49 4C 4C | .092 @\ - ILL | +| 45 47 41 4C 2E 0A 30 39 33 20 20 40 5D 20 20 20 | EGAL..093 @] | +| 2D 20 49 4C 4C 45 47 41 4C 2E 0A 30 39 34 20 20 | - ILLEGAL..094 | +| 40 5E 44 28 30 36 35 29 20 2D 20 49 6E 73 65 72 | @^D(065) - Inser | +| 74 20 63 6F 6E 74 72 6F 6C 20 63 68 61 72 61 63 | t control charac | +| 74 65 72 20 69 6E 74 6F 20 74 65 78 74 0A 30 39 | ter into text.09 | +| 35 20 20 40 5F 20 20 20 2D 20 49 4C 4C 45 47 41 | 5 @_ - ILLEGA | +| 4C 2E 0A 30 39 36 20 20 40 60 20 20 20 2D 20 49 | L..096 @` - I | +| 4C 4C 45 47 41 4C 2E 0A 40 61 20 20 20 30 39 37 | LLEGAL..@a 097 | +| 20 20 2D 20 4E 65 77 20 73 65 63 74 69 6F 6E 20 | - New section | +| 28 6C 65 76 65 6C 20 31 29 2E 20 4D 75 73 74 20 | (level 1). Must | +| 62 65 20 61 74 20 73 74 61 72 74 20 6F 66 20 61 | be at start of a | +| 20 6C 69 6E 65 2E 0A 40 62 20 20 20 30 39 38 20 | line..@b 098 | +| 20 2D 20 4E 65 77 20 73 65 63 74 69 6F 6E 20 28 | - New section ( | +| 6C 65 76 65 6C 20 31 29 2E 20 4D 75 73 74 20 62 | level 1). Must b | +| 65 20 61 74 20 73 74 61 72 74 20 6F 66 20 61 20 | e at start of a | +| 6C 69 6E 65 2E 0A 40 63 20 20 20 30 39 39 20 20 | line..@c 099 | +| 2D 20 4E 65 77 20 73 65 63 74 69 6F 6E 20 28 6C | - New section (l | +| 65 76 65 6C 20 31 29 2E 20 4D 75 73 74 20 62 65 | evel 1). Must be | +| 20 61 74 20 73 74 61 72 74 20 6F 66 20 61 20 6C | at start of a l | +| 69 6E 65 2E 0A 40 64 20 20 20 31 30 30 20 20 2D | ine..@d 100 - | +| 20 4E 65 77 20 73 65 63 74 69 6F 6E 20 28 6C 65 | New section (le | +| 76 65 6C 20 31 29 2E 20 4D 75 73 74 20 62 65 20 | vel 1). Must be | +| 61 74 20 73 74 61 72 74 20 6F 66 20 61 20 6C 69 | at start of a li | +| 6E 65 2E 0A 40 65 20 20 20 31 30 31 20 20 2D 20 | ne..@e 101 - | +| 4E 65 77 20 73 65 63 74 69 6F 6E 20 28 6C 65 76 | New section (lev | +| 65 6C 20 31 29 2E 20 4D 75 73 74 20 62 65 20 61 | el 1). Must be a | +| 74 20 73 74 61 72 74 20 6F 66 20 61 20 6C 69 6E | t start of a lin | +| 65 2E 0A 31 30 32 20 20 40 66 20 20 20 2D 20 49 | e..102 @f - I | +| 4C 4C 45 47 41 4C 2E 0A 31 30 33 20 20 40 67 20 | LLEGAL..103 @g | +| 20 20 2D 20 49 4C 4C 45 47 41 4C 2E 0A 31 30 34 | - ILLEGAL..104 | +| 20 20 40 68 20 20 20 2D 20 49 4C 4C 45 47 41 4C | @h - ILLEGAL | +| 2E 0A 31 30 35 20 20 40 69 20 20 20 2D 20 49 6E | ..105 @i - In | +| 63 6C 75 64 65 20 66 69 6C 65 2E 20 57 69 6C 6C | clude file. Will | +| 20 70 72 6F 76 6F 6B 65 20 61 6E 20 65 72 72 6F | provoke an erro | +| 72 20 68 65 72 65 20 74 68 6F 75 67 68 2E 0A 31 | r here though..1 | +| 30 36 20 20 40 6A 20 20 20 2D 20 49 4C 4C 45 47 | 06 @j - ILLEG | +| 41 4C 2E 0A 31 30 37 20 20 40 6B 20 20 20 2D 20 | AL..107 @k - | +| 49 4C 4C 45 47 41 4C 2E 0A 31 30 38 20 20 40 6C | ILLEGAL..108 @l | +| 20 20 20 2D 20 49 4C 4C 45 47 41 4C 2E 0A 31 30 | - ILLEGAL..10 | +| 39 20 20 40 6D 20 20 20 2D 20 54 61 67 73 20 6D | 9 @m - Tags m | +| 61 63 72 6F 20 61 73 20 62 65 69 6E 67 20 61 6C | acro as being al | +| 6C 6F 77 65 64 20 74 6F 20 62 65 20 63 61 6C 6C | lowed to be call | +| 65 64 20 6D 61 6E 79 20 74 69 6D 65 73 2E 0A 31 | ed many times..1 | +| 31 30 20 20 40 6E 20 20 20 2D 20 49 4C 4C 45 47 | 10 @n - ILLEG | +| 41 4C 2E 0A 40 4F 20 20 20 31 31 31 20 20 2D 20 | AL..@O 111 - | +| 4E 65 77 20 6D 61 63 72 6F 20 61 74 74 61 63 68 | New macro attach | +| 65 64 20 74 6F 20 6F 75 74 70 75 74 20 66 69 6C | ed to output fil | +| 65 2E 20 48 61 73 20 74 6F 20 62 65 20 61 74 20 | e. Has to be at | +| 73 74 61 72 74 20 6F 66 20 6C 69 6E 65 2E 0A 31 | start of line..1 | +| 31 32 20 20 40 70 20 20 20 2D 20 50 72 61 67 6D | 12 @p - Pragm | +| 61 2E 20 57 69 6C 6C 20 63 61 75 73 65 20 65 72 | a. Will cause er | +| 72 6F 72 20 68 65 72 65 20 74 68 6F 75 67 68 2E | ror here though. | +| 0A 31 31 33 20 20 40 71 20 20 20 2D 20 49 4C 4C | .113 @q - ILL | +| 45 47 41 4C 2E 0A 31 31 34 20 20 40 72 20 20 20 | EGAL..114 @r | +| 2D 20 49 4C 4C 45 47 41 4C 2E 0A 31 31 35 20 20 | - ILLEGAL..115 | +| 40 73 20 20 20 2D 20 49 4C 4C 45 47 41 4C 2E 0A | @s - ILLEGAL.. | +| 31 31 36 20 20 40 74 20 20 20 2D 20 54 79 70 65 | 116 @t - Type | +| 73 65 74 74 65 72 20 64 69 72 65 63 74 69 76 65 | setter directive | +| 2E 20 57 69 6C 6C 20 63 61 75 73 65 20 61 6E 20 | . Will cause an | +| 65 72 72 6F 72 20 68 65 72 65 20 74 68 6F 75 67 | error here thoug | +| 68 2E 0A 31 31 37 20 20 40 75 20 20 20 2D 20 49 | h..117 @u - I | +| 4C 4C 45 47 41 4C 2E 0A 31 31 38 20 20 40 76 20 | LLEGAL..118 @v | +| 20 20 2D 20 49 4C 4C 45 47 41 4C 2E 0A 31 31 39 | - ILLEGAL..119 | +| 20 20 40 77 20 20 20 2D 20 49 4C 4C 45 47 41 4C | @w - ILLEGAL | +| 2E 0A 31 32 30 20 20 40 78 20 20 20 2D 20 49 4C | ..120 @x - IL | +| 4C 45 47 41 4C 2E 0A 31 32 31 20 20 40 79 20 20 | LEGAL..121 @y | +| 20 2D 20 49 4C 4C 45 47 41 4C 2E 0A 31 32 32 20 | - ILLEGAL..122 | +| 20 40 7A 20 20 20 2D 20 54 61 67 73 20 6D 61 63 | @z - Tags mac | +| 72 6F 20 61 73 20 62 65 69 6E 67 20 61 6C 6C 6F | ro as being allo | +| 77 65 64 20 74 6F 20 62 65 20 63 61 6C 6C 65 64 | wed to be called | +| 20 7A 65 72 6F 20 74 69 6D 65 73 2E 0A 31 32 33 | zero times..123 | +| 20 20 40 7B 20 20 20 2D 20 4F 70 65 6E 20 6D 61 | @{ - Open ma | +| 63 72 6F 20 62 6F 64 79 2E 0A 31 32 34 20 20 40 | cro body..124 @ | +| 7C 20 20 20 2D 20 49 4C 4C 45 47 41 4C 2E 0A 31 | | - ILLEGAL..1 | +| 32 35 20 20 40 7D 20 20 20 2D 20 43 6C 6F 73 65 | 25 @} - Close | +| 20 6D 61 63 72 6F 20 62 6F 64 79 2E 0A 31 32 36 | macro body..126 | +| 20 20 40 7E 20 20 20 2D 20 49 4C 4C 45 47 41 4C | @~ - ILLEGAL | +| 2E 0A 31 32 37 20 74 6F 20 32 35 35 20 61 72 65 | ..127 to 255 are | +| 20 6E 6F 74 20 73 74 61 6E 64 61 72 64 20 70 72 | not standard pr | +| 69 6E 74 61 62 6C 65 20 41 53 43 49 49 20 63 68 | intable ASCII ch | +| 61 72 61 63 74 65 72 73 2E 0A | aracters.. | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| Scanner Test: Special Sequence Recognition<010> +00002 00002| ==========================================<010> +00003 00003| This test tests to see that FunnelWeb is recognising the full set of special<010> +00004 00004| sequences.<010> +00005 00005| <010> +00006 00006| Turn Off the Parser<010> +00007 00007| -------------------<010> +00008 00008| First we cause a deliberate scanner error so as to prevent the parser from<010> +00009 00009| generating lots of errors over the syntactic rubbish presented here.<010> +00010 00010| <010> +00011 00011| @ <010> +00012 00012| <010> +00013 00013| List of All Possible Special Sequences<010> +00014 00014| --------------------------------------<010> +00015 00015| The following is a list of the default special character followed by each of<010> +00016 00016| the ASCII printables.<010> +00017 00017| 000 to 031 are unprintable control characters.<010> +00018 00018| <010> +00019 00019| 032 @ - ILLEGAL. (Note: Hyphen is needed to avoid trailing blanks error.)<010> +00020 00020| 033 @! - Comment.<010> +00021 00021| 034 @" - Parameter delimeter.<010> +00022 00022| 035 @#X - Short name sequence.<010> +00023 00023| @$ 036 - Define macro. Has to be at start of line.<010> +00024 00024| 037 @% - ILLEGAL.<010> +00025 00025| 038 @& - ILLEGAL.<010> +00026 00026| 039 @' - ILLEGAL.<010> +00027 00027| 040 @( - Open parameter list.<010> +00028 00028| 041 @) - Close parameter list.<010> +00029 00029| 042<010> +00030 00030| @* - Old fashioned section marker (has to be at start of a line.).<010> +00031 00031| 043 @+ - Insert newline.<010> +00032 00032| 044 @, - Parameter separator.<010> +00033 00033| 045 @-<010> +00034 00034| - Ignore end of line marker (has to be at end of line).<010> +00035 00035| 046 @. - ILLEGAL.<010> +00036 00036| 047 @/ - Emphasised text.<010> +00037 00037| 048 @0 - ILLEGAL.<010> +00038 00038| 049 @1 - Formal parameter 1.<010> +00039 00039| 050 @2 - Formal parameter 2.<010> +00040 00040| 051 @3 - Formal parameter 3.<010> +00041 00041| 052 @4 - Formal parameter 4.<010> +00042 00042| 053 @5 - Formal parameter 5.<010> +00043 00043| 054 @6 - Formal parameter 6.<010> +00044 00044| 055 @7 - Formal parameter 7.<010> +00045 00045| 056 @8 - Formal parameter 8.<010> +00046 00046| 057 @9 - Formal parameter 9.<010> +00047 00047| 058 @: - ILLEGAL.<010> +00048 00048| 059 @; - ILLEGAL.<010> +00049 00049| 060 @< - Open macro name.<010> +00050 00050| 061 @=@ - Set special character.<010> +00051 00051| 062 @> - Close macro name.<010> +00052 00052| 063 @? - ILLEGAL.<010> +00053 00053| 064 @@ - Insert special character into text.<010> +00054 00054| @A 065 - New section (level 1). Must be at start of a line.<010> +00055 00055| @B 066 - New section (level 2). Must be at start of a line.<010> +00056 00056| @C 067 - New section (level 3). Must be at start of a line.<010> +00057 00057| @D 068 - New section (level 4). Must be at start of a line.<010> +00058 00058| @E 069 - New section (level 5). Must be at start of a line.<010> +00059 00059| 070 @F - ILLEGAL.<010> +00060 00060| 071 @G - ILLEGAL.<010> +00061 00061| 072 @H - ILLEGAL.<010> +00062 00062| 073 @I - Include file. Will provoke an error here though.<010> +00063 00063| 074 @J - ILLEGAL.<010> +00064 00064| 075 @K - ILLEGAL.<010> +00065 00065| 076 @L - ILLEGAL.<010> +00066 00066| 077 @M - Tags macro as being allowed to be called many times.<010> +00067 00067| 078 @N - ILLEGAL.<010> +00068 00068| @O 079 - New macro attached to output file. Has to be at start of line.<010> +00069 00069| 080 @P - Pragma. Will cause error here though.<010> +00070 00070| 081 @Q - ILLEGAL.<010> +00071 00071| 082 @R - ILLEGAL.<010> +00072 00072| 083 @S - ILLEGAL.<010> +00073 00073| 084 @T - Typesetter directive. Will cause an error here though.<010> +00074 00074| 085 @U - ILLEGAL.<010> +00075 00075| 086 @V - ILLEGAL.<010> +00076 00076| 087 @W - ILLEGAL.<010> +00077 00077| 088 @X - ILLEGAL.<010> +00078 00078| 089 @Y - ILLEGAL.<010> +00079 00079| 090 @Z - Tags macro as being allowed to be called zero times.<010> +00080 00080| 091 @[ - ILLEGAL.<010> +00081 00081| 092 @\ - ILLEGAL.<010> +00082 00082| 093 @] - ILLEGAL.<010> +00083 00083| 094 @^D(065) - Insert control character into text<010> +00084 00084| 095 @_ - ILLEGAL.<010> +00085 00085| 096 @` - ILLEGAL.<010> +00086 00086| @a 097 - New section (level 1). Must be at start of a line.<010> +00087 00087| @b 098 - New section (level 1). Must be at start of a line.<010> +00088 00088| @c 099 - New section (level 1). Must be at start of a line.<010> +00089 00089| @d 100 - New section (level 1). Must be at start of a line.<010> +00090 00090| @e 101 - New section (level 1). Must be at start of a line.<010> +00091 00091| 102 @f - ILLEGAL.<010> +00092 00092| 103 @g - ILLEGAL.<010> +00093 00093| 104 @h - ILLEGAL.<010> +00094 00094| 105 @i - Include file. Will provoke an error here though.<010> +00095 00095| 106 @j - ILLEGAL.<010> +00096 00096| 107 @k - ILLEGAL.<010> +00097 00097| 108 @l - ILLEGAL.<010> +00098 00098| 109 @m - Tags macro as being allowed to be called many times.<010> +00099 00099| 110 @n - ILLEGAL.<010> +00100 00100| @O 111 - New macro attached to output file. Has to be at start of line.<010> +00101 00101| 112 @p - Pragma. Will cause error here though.<010> +00102 00102| 113 @q - ILLEGAL.<010> +00103 00103| 114 @r - ILLEGAL.<010> +00104 00104| 115 @s - ILLEGAL.<010> +00105 00105| 116 @t - Typesetter directive. Will cause an error here though.<010> +00106 00106| 117 @u - ILLEGAL.<010> +00107 00107| 118 @v - ILLEGAL.<010> +00108 00108| 119 @w - ILLEGAL.<010> +00109 00109| 120 @x - ILLEGAL.<010> +00110 00110| 121 @y - ILLEGAL.<010> +00111 00111| 122 @z - Tags macro as being allowed to be called zero times.<010> +00112 00112| 123 @{ - Open macro body.<010> +00113 00113| 124 @| - ILLEGAL.<010> +00114 00114| 125 @} - Close macro body.<010> +00115 00115| 126 @~ - ILLEGAL.<010> +00116 00116| 127 to 255 are not standard printable ASCII characters.<010> +00117 00117| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 137 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="Scanner Test: Special Sequence Recognition<010> +==========================================<010> +This test tests to see that FunnelWeb is recognising the full set of special<010> +sequences.<010> +<010> +Turn Off the Parser<010> +-------------------<010> +First we cause a deliberate scanner error so as to prevent the parser from<010> +generating lots of errors over the syntactic rubbish presented here.<010> +<010> + " +0011[06]: Text. Text scrap[Grey]="<010> +<010> +List of All Possible Special Sequences<010> +--------------------------------------<010> +The following is a list of the default special character followed by each of<010> +the ASCII printables.<010> +000 to 031 are unprintable control characters.<010> +<010> +032 " +0019[08]: Text. Text scrap[Grey]=" - ILLEGAL. (Note: Hyphen is needed to avoid trailing blanks error.)<010> +033 " +0021[01]: Text. Text scrap[Grey]="034 " +0021[06]: @" Quote. +0021[08]: Text. Text scrap[Grey]=" - Parameter delimeter.<010> +035 " +0022[06]: @# Name. Character='X'. +0022[09]: Text. Text scrap[Grey]=" - Short name sequence.<010> +" +0023[01]: @$ Macro defn. +0023[03]: Text. Text scrap[Grey]=" 036 - Define macro. Has to be at start of line.<010> +037 " +0024[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +038 " +0025[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +039 " +0026[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +040 " +0027[06]: @( Open param. +0027[08]: Text. Text scrap[Grey]=" - Open parameter list.<010> +041 " +0028[06]: @} Close param. +0028[08]: Text. Text scrap[Grey]=" - Close parameter list.<010> +042<010> +" +0030[03]: Text. Text scrap[Grey]=" - Old fashioned section marker (has to be at start of a line.).<010> +043 " +0031[06]: Text. Text scrap[White]="<010> +" +0031[08]: Text. Text scrap[Grey]=" - Insert newline.<010> +044 " +0032[06]: @, Comma. +0032[08]: Text. Text scrap[Grey]=" - Parameter separator.<010> +045 " +0034[01]: Text. Text scrap[Grey]=" - Ignore end of line marker (has to be at end of line).<010> +046 " +0035[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +047 " +0036[06]: @/ Emphasise. +0036[08]: Text. Text scrap[Grey]=" - Emphasised text.<010> +048 " +0037[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +049 " +0038[06]: @n Parameter. Parameterno=1. +0038[08]: Text. Text scrap[Grey]=" - Formal parameter 1.<010> +050 " +0039[06]: @n Parameter. Parameterno=2. +0039[08]: Text. Text scrap[Grey]=" - Formal parameter 2.<010> +051 " +0040[06]: @n Parameter. Parameterno=3. +0040[08]: Text. Text scrap[Grey]=" - Formal parameter 3.<010> +052 " +0041[06]: @n Parameter. Parameterno=4. +0041[08]: Text. Text scrap[Grey]=" - Formal parameter 4.<010> +053 " +0042[06]: @n Parameter. Parameterno=5. +0042[08]: Text. Text scrap[Grey]=" - Formal parameter 5.<010> +054 " +0043[06]: @n Parameter. Parameterno=6. +0043[08]: Text. Text scrap[Grey]=" - Formal parameter 6.<010> +055 " +0044[06]: @n Parameter. Parameterno=7. +0044[08]: Text. Text scrap[Grey]=" - Formal parameter 7.<010> +056 " +0045[06]: @n Parameter. Parameterno=8. +0045[08]: Text. Text scrap[Grey]=" - Formal parameter 8.<010> +057 " +0046[06]: @n Parameter. Parameterno=9. +0046[08]: Text. Text scrap[Grey]=" - Formal parameter 9.<010> +058 " +0047[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +059 " +0048[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +060 " +0049[06]: @< Open name. +0049[08]: Text. Text scrap[Grey]=" - Open macro name.<010> +061 " +0050[09]: Text. Text scrap[Grey]=" - Set special character.<010> +062 " +0051[06]: @> Close name. +0051[08]: Text. Text scrap[Grey]=" - Close macro name.<010> +063 " +0052[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +064 " +0053[06]: Text. Text scrap[Grey]="@" +0053[08]: Text. Text scrap[Grey]=" - Insert special character into text.<010> +" +0054[01]: @A New section (Level 1). +0054[03]: Text. Text scrap[Grey]=" 065 - New section (level 1). Must be at start of a line.<010> +" +0055[01]: @B New section (Level 2). +0055[03]: Text. Text scrap[Grey]=" 066 - New section (level 2). Must be at start of a line.<010> +" +0056[01]: @C New section (Level 3). +0056[03]: Text. Text scrap[Grey]=" 067 - New section (level 3). Must be at start of a line.<010> +" +0057[01]: @D New section (Level 4). +0057[03]: Text. Text scrap[Grey]=" 068 - New section (level 4). Must be at start of a line.<010> +" +0058[01]: @E New section (Level 5). +0058[03]: Text. Text scrap[Grey]=" 069 - New section (level 5). Must be at start of a line.<010> +070 " +0059[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +071 " +0060[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +072 " +0061[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +073 " +0063[01]: Text. Text scrap[Grey]="074 " +0063[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +075 " +0064[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +076 " +0065[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +077 " +0066[06]: @M Many calls. +0066[08]: Text. Text scrap[Grey]=" - Tags macro as being allowed to be called many times.<010> +078 " +0067[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +" +0068[01]: @F File defn. +0068[03]: Text. Text scrap[Grey]=" 079 - New macro attached to output file. Has to be at start of line.<010> +080 " +0070[01]: Text. Text scrap[Grey]="081 " +0070[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +082 " +0071[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +083 " +0072[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +084 " +0074[01]: Text. Text scrap[Grey]="085 " +0074[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +086 " +0075[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +087 " +0076[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +088 " +0077[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +089 " +0078[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +090 " +0079[06]: @Z Zero calls. +0079[08]: Text. Text scrap[Grey]=" - Tags macro as being allowed to be called zero times.<010> +091 " +0080[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +092 " +0081[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +093 " +0082[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +094 " +0083[06]: Text. Text scrap[Grey]="A" +0083[14]: Text. Text scrap[Grey]=" - Insert control character into text<010> +095 " +0084[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +096 " +0085[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +" +0086[01]: @A New section (Level 1). +0086[03]: Text. Text scrap[Grey]=" 097 - New section (level 1). Must be at start of a line.<010> +" +0087[01]: @B New section (Level 2). +0087[03]: Text. Text scrap[Grey]=" 098 - New section (level 1). Must be at start of a line.<010> +" +0088[01]: @C New section (Level 3). +0088[03]: Text. Text scrap[Grey]=" 099 - New section (level 1). Must be at start of a line.<010> +" +0089[01]: @D New section (Level 4). +0089[03]: Text. Text scrap[Grey]=" 100 - New section (level 1). Must be at start of a line.<010> +" +0090[01]: @E New section (Level 5). +0090[03]: Text. Text scrap[Grey]=" 101 - New section (level 1). Must be at start of a line.<010> +102 " +0091[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +103 " +0092[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +104 " +0093[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +105 " +0095[01]: Text. Text scrap[Grey]="106 " +0095[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +107 " +0096[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +108 " +0097[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +109 " +0098[06]: @M Many calls. +0098[08]: Text. Text scrap[Grey]=" - Tags macro as being allowed to be called many times.<010> +110 " +0099[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +" +0100[01]: @F File defn. +0100[03]: Text. Text scrap[Grey]=" 111 - New macro attached to output file. Has to be at start of line.<010> +112 " +0102[01]: Text. Text scrap[Grey]="113 " +0102[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +114 " +0103[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +115 " +0104[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +116 " +0106[01]: Text. Text scrap[Grey]="117 " +0106[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +118 " +0107[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +119 " +0108[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +120 " +0109[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +121 " +0110[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +122 " +0111[06]: @Z Zero calls. +0111[08]: Text. Text scrap[Grey]=" - Tags macro as being allowed to be called zero times.<010> +123 " +0112[06]: @{ Open defn. +0112[08]: Text. Text scrap[Grey]=" - Open macro body.<010> +124 " +0113[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +125 " +0114[06]: @} Close defn. +0114[08]: Text. Text scrap[Grey]=" - Close macro body.<010> +126 " +0115[08]: Text. Text scrap[Grey]=" - ILLEGAL.<010> +127 to 255 are not standard printable ASCII characters.<010> +" +0117[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + +Macro table dump skipped (Parser was not invoked). +Document list dump skipped (Parser was not invoked). + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| Scanner Test: Special Sequence Recognition + 2 2| ========================================== + 3 3| This test tests to see that FunnelWeb is recognising the full set of special + 4 4| sequences. + 5 5| + 6 6| Turn Off the Parser + 7 7| ------------------- + 8 8| First we cause a deliberate scanner error so as to prevent the parser from + 9 9| generating lots of errors over the syntactic rubbish presented here. + 10 10| + 11 11| @ + Error|....^<special><space> is not a legal special sequence. + Warning|.....^Line has trailing spaces up to and including this space. + 12 12| + 13 13| List of All Possible Special Sequences + 14 14| -------------------------------------- + 15 15| The following is a list of the default special character followed by each of + 16 16| the ASCII printables. + 17 17| 000 to 031 are unprintable control characters. + 18 18| + 19 19| 032 @ - ILLEGAL. (Note: Hyphen is needed to avoid trailing blanks error.) + Error|......^<special><space> is not a legal special sequence. + 20 20| 033 @! - Comment. + 21 21| 034 @" - Parameter delimeter. + 22 22| 035 @#X - Short name sequence. + 23 23| @$ 036 - Define macro. Has to be at start of line. + 24 24| 037 @% - ILLEGAL. + Error|......^Unknown special sequence. + 25 25| 038 @& - ILLEGAL. + Error|......^Unknown special sequence. + 26 26| 039 @' - ILLEGAL. + Error|......^Unknown special sequence. + 27 27| 040 @( - Open parameter list. + 28 28| 041 @) - Close parameter list. + 29 29| 042 + 30 30| @* - Old fashioned section marker (has to be at start of a line.). + Error|.^Unknown special sequence. + 31 31| 043 @+ - Insert newline. + 32 32| 044 @, - Parameter separator. + 33 33| 045 @- + 34 34| - Ignore end of line marker (has to be at end of line). + 35 35| 046 @. - ILLEGAL. + Error|......^Unknown special sequence. + 36 36| 047 @/ - Emphasised text. + 37 37| 048 @0 - ILLEGAL. + Error|......^Unknown special sequence. + 38 38| 049 @1 - Formal parameter 1. + 39 39| 050 @2 - Formal parameter 2. + 40 40| 051 @3 - Formal parameter 3. + 41 41| 052 @4 - Formal parameter 4. + 42 42| 053 @5 - Formal parameter 5. + 43 43| 054 @6 - Formal parameter 6. + 44 44| 055 @7 - Formal parameter 7. + 45 45| 056 @8 - Formal parameter 8. + 46 46| 057 @9 - Formal parameter 9. + 47 47| 058 @: - ILLEGAL. + Error|......^Unknown special sequence. + 48 48| 059 @; - ILLEGAL. + Error|......^Unknown special sequence. + 49 49| 060 @< - Open macro name. + 50 50| 061 @=@ - Set special character. + 51 51| 062 @> - Close macro name. + 52 52| 063 @? - ILLEGAL. + Error|......^Unknown special sequence. + 53 53| 064 @@ - Insert special character into text. + 54 54| @A 065 - New section (level 1). Must be at start of a line. + 55 55| @B 066 - New section (level 2). Must be at start of a line. + 56 56| @C 067 - New section (level 3). Must be at start of a line. + 57 57| @D 068 - New section (level 4). Must be at start of a line. + 58 58| @E 069 - New section (level 5). Must be at start of a line. + 59 59| 070 @F - ILLEGAL. + Error|......^Unknown special sequence. + 60 60| 071 @G - ILLEGAL. + Error|......^Unknown special sequence. + 61 61| 072 @H - ILLEGAL. + Error|......^Unknown special sequence. + 62 62| 073 @I - Include file. Will provoke an error here though. + Error|......^Include sequence must be at the beginning of a line. + |......^Include ignored. + 63 63| 074 @J - ILLEGAL. + Error|......^Unknown special sequence. + 64 64| 075 @K - ILLEGAL. + Error|......^Unknown special sequence. + 65 65| 076 @L - ILLEGAL. + Error|......^Unknown special sequence. + 66 66| 077 @M - Tags macro as being allowed to be called many times. + 67 67| 078 @N - ILLEGAL. + Error|......^Unknown special sequence. + 68 68| @O 079 - New macro attached to output file. Has to be at start of line. + 69 69| 080 @P - Pragma. Will cause error here though. + Error|......^Pragma sequence @p must be at the start of a line. + |......^The rest of this line will be ignored. + Error|......^Unrecognised pragma. Possible legal pragmas are: + |......^ @p indentation = none | blank + |......^ @p maximum_input_line_length = <num>|infinity + |......^ @p maximum_output_line_length = <num>|infinity + |......^ @p typesetter = none | tex + |......^The blanks between arguments are important. + |......^Pragma ignored. + 70 70| 081 @Q - ILLEGAL. + Error|......^Unknown special sequence. + 71 71| 082 @R - ILLEGAL. + Error|......^Unknown special sequence. + 72 72| 083 @S - ILLEGAL. + Error|......^Unknown special sequence. + 73 73| 084 @T - Typesetter directive. Will cause an error here though. + Error|......^Typesetter directive @t must be at the start of a line. + |......^The rest of this line will be ignored. + Error|......^Unrecognised typesetter directive. Legal ones are: + |......^ @t new_page + |......^ @t table_of_contents + |......^ @t title <font> <align> <string> + |......^ @t vskip <num> mm + |......^The blanks between arguments are important. + |......^Typesetter directive ignored. + 74 74| 085 @U - ILLEGAL. + Error|......^Unknown special sequence. + 75 75| 086 @V - ILLEGAL. + Error|......^Unknown special sequence. + 76 76| 087 @W - ILLEGAL. + Error|......^Unknown special sequence. + 77 77| 088 @X - ILLEGAL. + Error|......^Unknown special sequence. + 78 78| 089 @Y - ILLEGAL. + Error|......^Unknown special sequence. + 79 79| 090 @Z - Tags macro as being allowed to be called zero times. + 80 80| 091 @[ - ILLEGAL. + Error|......^Unknown special sequence. + 81 81| 092 @\ - ILLEGAL. + Error|......^Unknown special sequence. + 82 82| 093 @] - ILLEGAL. + Error|......^Unknown special sequence. + 83 83| 094 @^D(065) - Insert control character into text + 84 84| 095 @_ - ILLEGAL. + Error|......^Unknown special sequence. + 85 85| 096 @` - ILLEGAL. + Error|......^Unknown special sequence. + 86 86| @a 097 - New section (level 1). Must be at start of a line. + 87 87| @b 098 - New section (level 1). Must be at start of a line. + 88 88| @c 099 - New section (level 1). Must be at start of a line. + 89 89| @d 100 - New section (level 1). Must be at start of a line. + 90 90| @e 101 - New section (level 1). Must be at start of a line. + 91 91| 102 @f - ILLEGAL. + Error|......^Unknown special sequence. + 92 92| 103 @g - ILLEGAL. + Error|......^Unknown special sequence. + 93 93| 104 @h - ILLEGAL. + Error|......^Unknown special sequence. + 94 94| 105 @i - Include file. Will provoke an error here though. + Error|......^Include sequence must be at the beginning of a line. + |......^Include ignored. + 95 95| 106 @j - ILLEGAL. + Error|......^Unknown special sequence. + 96 96| 107 @k - ILLEGAL. + Error|......^Unknown special sequence. + 97 97| 108 @l - ILLEGAL. + Error|......^Unknown special sequence. + 98 98| 109 @m - Tags macro as being allowed to be called many times. + 99 99| 110 @n - ILLEGAL. + Error|......^Unknown special sequence. + 100 100| @O 111 - New macro attached to output file. Has to be at start of line. + 101 101| 112 @p - Pragma. Will cause error here though. + Error|......^Pragma sequence @p must be at the start of a line. + |......^The rest of this line will be ignored. + Error|......^Unrecognised pragma. Possible legal pragmas are: + |......^ @p indentation = none | blank + |......^ @p maximum_input_line_length = <num>|infinity + |......^ @p maximum_output_line_length = <num>|infinity + |......^ @p typesetter = none | tex + |......^The blanks between arguments are important. + |......^Pragma ignored. + 102 102| 113 @q - ILLEGAL. + Error|......^Unknown special sequence. + 103 103| 114 @r - ILLEGAL. + Error|......^Unknown special sequence. + 104 104| 115 @s - ILLEGAL. + Error|......^Unknown special sequence. + 105 105| 116 @t - Typesetter directive. Will cause an error here though. + Error|......^Typesetter directive @t must be at the start of a line. + |......^The rest of this line will be ignored. + Error|......^Unrecognised typesetter directive. Legal ones are: + |......^ @t new_page + |......^ @t table_of_contents + |......^ @t title <font> <align> <string> + |......^ @t vskip <num> mm + |......^The blanks between arguments are important. + |......^Typesetter directive ignored. + 106 106| 117 @u - ILLEGAL. + Error|......^Unknown special sequence. + 107 107| 118 @v - ILLEGAL. + Error|......^Unknown special sequence. + 108 108| 119 @w - ILLEGAL. + Error|......^Unknown special sequence. + 109 109| 120 @x - ILLEGAL. + Error|......^Unknown special sequence. + 110 110| 121 @y - ILLEGAL. + Error|......^Unknown special sequence. + 111 111| 122 @z - Tags macro as being allowed to be called zero times. + 112 112| 123 @{ - Open macro body. + 113 113| 124 @| - ILLEGAL. + Error|......^Unknown special sequence. + 114 114| 125 @} - Close macro body. + 115 115| 126 @~ - ILLEGAL. + Error|......^Unknown special sequence. + 116 116| 127 to 255 are not standard printable ASCII characters. + | <End-Of-File> +------------+------------------------------------------------------------------- + +There were 58 Errors and 1 Warning. diff --git a/web/funnelAC/answers/sc11.lis b/web/funnelAC/answers/sc11.lis new file mode 100644 index 0000000000..6082c059c4 --- /dev/null +++ b/web/funnelAC/answers/sc11.lis @@ -0,0 +1,307 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 31 31 3A 20 53 79 6E 74 61 78 20 6F 66 20 | SC11: Syntax of | +| 74 68 65 20 69 6E 63 6C 75 64 65 20 70 72 61 67 | the include prag | +| 6D 61 2E 0A 0A 31 2E 20 54 65 73 74 20 69 6E 63 | ma...1. Test inc | +| 6C 75 64 65 20 70 72 61 67 6D 61 20 6E 6F 74 20 | lude pragma not | +| 61 74 20 73 74 61 72 74 20 6F 66 20 6C 69 6E 65 | at start of line | +| 2E 0A 0A 20 20 20 40 69 0A 0A 32 2E 20 54 65 73 | ... @i..2. Tes | +| 74 20 41 54 69 20 6E 6F 74 20 66 6F 6C 6C 6F 77 | t ATi not follow | +| 65 64 20 62 79 20 61 20 62 6C 61 6E 6B 2E 0A 0A | ed by a blank... | +| 40 69 78 0A 0A 33 2E 20 54 65 73 74 20 69 6E 63 | @ix..3. Test inc | +| 6C 75 64 65 20 66 69 6C 65 6E 61 6D 65 20 69 73 | lude filename is | +| 20 74 6F 6F 20 6C 6F 6E 67 2E 20 54 68 65 20 6D | too long. The m | +| 61 78 69 6D 75 6D 20 6F 6E 20 74 68 65 20 4D 61 | aximum on the Ma | +| 63 69 6E 74 6F 73 68 20 69 73 0A 20 20 20 32 35 | cintosh is. 25 | +| 35 20 62 75 74 20 77 65 20 77 69 6C 6C 20 75 73 | 5 but we will us | +| 65 20 61 20 66 69 6C 65 6E 61 6D 65 20 6F 66 20 | e a filename of | +| 6F 76 65 72 20 31 30 32 34 20 63 68 61 72 61 63 | over 1024 charac | +| 74 65 72 73 20 73 6F 20 61 73 20 74 6F 20 6D 61 | ters so as to ma | +| 6B 65 0A 20 20 20 74 68 65 20 74 65 73 74 20 70 | ke. the test p | +| 6F 72 74 61 62 6C 65 2E 20 54 68 65 20 61 63 74 | ortable. The act | +| 75 61 6C 20 6C 65 6E 67 74 68 20 75 73 65 64 20 | ual length used | +| 69 73 20 31 31 30 30 20 63 68 61 72 61 63 74 65 | is 1100 characte | +| 72 73 20 69 6E 20 74 68 65 0A 20 20 20 66 69 6C | rs in the. fil | +| 65 6E 61 6D 65 2E 0A 0A 20 20 20 20 20 20 20 20 | ename... | +| 20 20 20 20 31 20 20 20 20 20 20 20 20 20 32 20 | 1 2 | +| 20 20 20 20 20 20 20 20 33 20 20 20 20 20 20 20 | 3 | +| 20 20 34 20 20 20 20 20 20 20 20 20 35 20 20 20 | 4 5 | +| 20 20 20 20 20 20 36 20 20 20 20 20 20 20 20 20 | 6 | +| 37 20 20 20 20 20 20 20 20 20 38 20 20 20 20 20 | 7 8 | +| 20 20 20 20 39 20 20 20 20 20 20 20 20 20 30 20 | 9 0 | +| 20 20 20 20 20 20 20 20 31 20 20 20 20 20 20 20 | 1 | +| 20 20 32 20 20 20 20 20 20 20 20 20 33 20 20 20 | 2 3 | +| 20 20 20 20 20 20 34 20 20 20 20 20 20 20 20 20 | 4 | +| 35 20 20 20 20 20 20 20 20 20 36 20 20 20 20 20 | 5 6 | +| 20 20 20 20 37 20 20 20 20 20 20 20 20 20 38 20 | 7 8 | +| 20 20 20 20 20 20 20 20 39 20 20 20 20 20 20 20 | 9 | +| 20 20 30 20 20 20 20 20 20 20 20 20 31 20 20 20 | 0 1 | +| 20 20 20 20 20 20 32 20 20 20 20 20 20 20 20 20 | 2 | +| 33 20 20 20 20 20 20 20 20 20 34 20 20 20 20 20 | 3 4 | +| 20 20 20 20 35 20 20 20 20 20 20 20 20 20 36 20 | 5 6 | +| 20 20 20 20 20 20 20 20 37 20 20 20 20 20 20 20 | 7 | +| 20 20 38 20 20 20 20 20 20 20 20 20 39 20 20 20 | 8 9 | +| 20 20 20 20 20 20 30 20 20 20 20 20 20 20 20 20 | 0 | +| 31 20 20 20 20 20 20 20 20 20 32 20 20 20 20 20 | 1 2 | +| 20 20 20 20 33 20 20 20 20 20 20 20 20 20 34 20 | 3 4 | +| 20 20 20 20 20 20 20 20 35 20 20 20 20 20 20 20 | 5 | +| 20 20 36 20 20 20 20 20 20 20 20 20 37 20 20 20 | 6 7 | +| 20 20 20 20 20 20 38 20 20 20 20 20 20 20 20 20 | 8 | +| 39 20 20 20 20 20 20 20 20 20 30 20 20 20 20 20 | 9 0 | +| 20 20 20 20 31 20 20 20 20 20 20 20 20 20 32 20 | 1 2 | +| 20 20 20 20 20 20 20 20 33 20 20 20 20 20 20 20 | 3 | +| 20 20 34 20 20 20 20 20 20 20 20 20 35 20 20 20 | 4 5 | +| 20 20 20 20 20 20 36 20 20 20 20 20 20 20 20 20 | 6 | +| 37 20 20 20 20 20 20 20 20 20 38 20 20 20 20 20 | 7 8 | +| 20 20 20 20 39 20 20 20 20 20 20 20 20 20 30 20 | 9 0 | +| 20 20 20 20 20 20 20 20 31 20 20 20 20 20 20 20 | 1 | +| 20 20 32 20 20 20 20 20 20 20 20 20 33 20 20 20 | 2 3 | +| 20 20 20 20 20 20 34 20 20 20 20 20 20 20 20 20 | 4 | +| 35 20 20 20 20 20 20 20 20 20 36 20 20 20 20 20 | 5 6 | +| 20 20 20 20 37 20 20 20 20 20 20 20 20 20 38 20 | 7 8 | +| 20 20 20 20 20 20 20 20 39 20 20 20 20 20 20 20 | 9 | +| 20 20 30 20 20 20 20 20 20 20 20 20 31 20 20 20 | 0 1 | +| 20 20 20 20 20 20 32 20 20 20 20 20 20 20 20 20 | 2 | +| 33 20 20 20 20 20 20 20 20 20 34 20 20 20 20 20 | 3 4 | +| 20 20 20 20 35 20 20 20 20 20 20 20 20 20 36 20 | 5 6 | +| 20 20 20 20 20 20 20 20 37 20 20 20 20 20 20 20 | 7 | +| 20 20 38 20 20 20 20 20 20 20 20 20 39 20 20 20 | 8 9 | +| 20 20 20 20 20 20 30 20 20 20 20 20 20 20 20 20 | 0 | +| 31 20 20 20 20 20 20 20 20 20 32 20 20 20 20 20 | 1 2 | +| 20 20 20 20 33 20 20 20 20 20 20 20 20 20 34 20 | 3 4 | +| 20 20 20 20 20 20 20 20 35 20 20 20 20 20 20 20 | 5 | +| 20 20 36 20 20 20 20 20 20 20 20 20 37 20 20 20 | 6 7 | +| 20 20 20 20 20 20 38 20 20 20 20 20 20 20 20 20 | 8 | +| 39 20 20 20 20 20 20 20 20 20 30 20 20 20 20 20 | 9 0 | +| 20 20 20 20 31 20 20 20 20 20 20 20 20 20 32 20 | 1 2 | +| 20 20 20 20 20 20 20 20 33 20 20 20 20 20 20 20 | 3 | +| 20 20 34 20 20 20 20 20 20 20 20 20 35 20 20 20 | 4 5 | +| 20 20 20 20 20 20 36 20 20 20 20 20 20 20 20 20 | 6 | +| 37 20 20 20 20 20 20 20 20 20 38 20 20 20 20 20 | 7 8 | +| 20 20 20 20 39 20 20 20 20 20 20 20 20 20 30 20 | 9 0 | +| 20 20 20 20 20 20 20 20 31 20 20 20 20 20 20 20 | 1 | +| 20 20 32 20 20 20 20 20 20 20 20 20 33 20 20 20 | 2 3 | +| 20 20 20 20 20 20 34 20 20 20 20 20 20 20 20 20 | 4 | +| 35 20 20 20 20 20 20 20 20 20 36 20 20 20 20 20 | 5 6 | +| 20 20 20 20 37 20 20 20 20 20 20 20 20 20 38 20 | 7 8 | +| 20 20 20 20 20 20 20 20 39 20 20 20 20 20 20 20 | 9 | +| 20 20 30 20 20 20 20 20 20 20 20 20 31 20 20 20 | 0 1 | +| 20 20 20 20 20 20 32 20 20 20 20 20 20 20 20 20 | 2 | +| 33 20 20 20 20 20 20 20 20 20 34 20 20 20 20 20 | 3 4 | +| 20 20 20 20 35 20 20 20 20 20 20 20 20 20 36 20 | 5 6 | +| 20 20 20 20 20 20 20 20 37 20 20 20 20 20 20 20 | 7 | +| 20 20 38 20 20 20 20 20 20 20 20 20 39 20 20 20 | 8 9 | +| 20 20 20 20 20 20 30 0A 40 69 20 31 32 33 34 35 | 0.@i 12345 | +| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 | +| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 | +| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 | +| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 | +| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 | +| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 | +| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 | +| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 | +| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 | +| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 | +| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 | +| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 | +| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 | +| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 | +| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 | +| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 | +| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 | +| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 | +| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 | +| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 | +| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 | +| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 | +| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 | +| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 | +| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 | +| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 | +| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 | +| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 | +| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 | +| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 | +| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 | +| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 | +| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 | +| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 | +| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 | +| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 | +| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 | +| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 | +| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 | +| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 | +| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 | +| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 | +| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 | +| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 | +| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 | +| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 | +| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 | +| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 | +| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 | +| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 | +| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 | +| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 | +| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 | +| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 | +| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 | +| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 | +| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 | +| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 | +| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 | +| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 | +| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 | +| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 | +| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 | +| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 | +| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 | +| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 | +| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 | +| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 | +| 34 35 36 37 38 39 30 0A 0A 34 2E 20 49 6E 63 6C | 4567890..4. Incl | +| 75 64 65 20 70 72 61 67 6D 61 20 68 61 73 20 61 | ude pragma has a | +| 6E 20 65 6D 70 74 79 20 66 69 6C 65 6E 61 6D 65 | n empty filename | +| 2E 20 4E 6F 74 65 3A 20 42 65 63 61 75 73 65 20 | . Note: Because | +| 74 68 65 20 41 54 69 20 68 61 73 20 74 6F 20 62 | the ATi has to b | +| 65 0A 20 20 20 66 6F 6C 6C 6F 77 65 64 20 62 79 | e. followed by | +| 20 61 20 62 6C 61 6E 6B 2C 20 77 65 20 68 61 76 | a blank, we hav | +| 65 20 74 6F 20 69 6E 63 75 72 20 61 20 74 72 61 | e to incur a tra | +| 69 6C 69 6E 67 20 62 6C 61 6E 6B 20 65 72 72 6F | iling blank erro | +| 72 20 68 65 72 65 20 69 6E 0A 20 20 20 6F 72 64 | r here in. ord | +| 65 72 20 74 6F 20 70 72 6F 76 6F 6B 65 20 74 68 | er to provoke th | +| 65 20 65 72 72 6F 72 20 77 65 20 72 65 61 6C 6C | e error we reall | +| 79 20 77 61 6E 74 20 74 6F 20 73 65 65 2E 0A 0A | y want to see... | +| 40 69 20 0A 0A | @i .. | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| SC11: Syntax of the include pragma.<010> +00002 00002| <010> +00003 00003| 1. Test include pragma not at start of line.<010> +00004 00004| <010> +00005 00005| @i<010> +00006 00006| <010> +00007 00007| 2. Test ATi not followed by a blank.<010> +00008 00008| <010> +00009 00009| @ix<010> +00010 00010| <010> +00011 00011| 3. Test include filename is too long. The maximum on the Macintosh is<010> +00012 00012| 255 but we will use a filename of over 1024 characters so as to make<010> +00013 00013| the test portable. The actual length used is 1100 characters in the<010> +00014 00014| filename.<010> +00015 00015| <010> +00016 00016| 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0<010> +00017 00017| @i 12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890<010> +00018 00018| <010> +00019 00019| 4. Include pragma has an empty filename. Note: Because the ATi has to be<010> +00020 00020| followed by a blank, we have to incur a trailing blank error here in<010> +00021 00021| order to provoke the error we really want to see.<010> +00022 00022| <010> +00023 00023| @i <010> +00024 00024| <010> +00025 00025| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 6 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="SC11: Syntax of the include pragma.<010> +<010> +1. Test include pragma not at start of line.<010> +<010> + " +0006[01]: Text. Text scrap[Grey]="<010> +2. Test ATi not followed by a blank.<010> +<010> +" +0010[01]: Text. Text scrap[Grey]="<010> +3. Test include filename is too long. The maximum on the Macintosh is<010> + 255 but we will use a filename of over 1024 characters so as to make<010> + the test portable. The actual length used is 1100 characters in the<010> + filename.<010> +<010> + 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0<010> +" +0018[01]: Text. Text scrap[Grey]="<010> +4. Include pragma has an empty filename. Note: Because the ATi has to be<010> + followed by a blank, we have to incur a trailing blank error here in<010> + order to provoke the error we really want to see.<010> +<010> +" +0024[01]: Text. Text scrap[White]="<010> +" +0025[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + +Macro table dump skipped (Parser was not invoked). +Document list dump skipped (Parser was not invoked). + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| SC11: Syntax of the include pragma. + 2 2| + 3 3| 1. Test include pragma not at start of line. + 4 4| + 5 5| @i + Error|....^Include sequence must be at the beginning of a line. + |....^Include ignored. + 6 6| + 7 7| 2. Test ATi not followed by a blank. + 8 8| + 9 9| @ix + Error|...^Include sequence (@i) must be followed by a blank. + |...^Example include: @i macros.fwi + |...^Include ignored. + 10 10| + 11 11| 3. Test include filename is too long. The maximum on the Macintosh is + 12 12| 255 but we will use a filename of over 1024 characters so as to make + 13 13| the test portable. The actual length used is 1100 characters in the + 14 14| filename. + 15 15| + 16 16| 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 + Error|.................................................................................^Input line is too long (this character is the first offender). + |.................................................................................^Currently, the maximum allowable input line length is 80. + |.................................................................................^Note: You can change this using a pragma directive (@p). + 17 17| @i 12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 + Error|.^This include command's file specification is too long. + |.^The maximum file name length is <<Suppressed>> characters. + |.^Include ignored. + Error|.................................................................................^Input line is too long (this character is the first offender). + |.................................................................................^Currently, the maximum allowable input line length is 80. + |.................................................................................^Note: You can change this using a pragma directive (@p). + 18 18| + 19 19| 4. Include pragma has an empty filename. Note: Because the ATi has to be + 20 20| followed by a blank, we have to incur a trailing blank error here in + 21 21| order to provoke the error we really want to see. + 22 22| + 23 23| @i + Warning|...^Line has trailing spaces up to and including this space. + Error|....^Expecting the name of a file to include. + 24 24| + | <End-Of-File> +------------+------------------------------------------------------------------- + +There were 6 Errors and 1 Warning. diff --git a/web/funnelAC/answers/sc12.lis b/web/funnelAC/answers/sc12.lis new file mode 100644 index 0000000000..1421eacfbc --- /dev/null +++ b/web/funnelAC/answers/sc12.lis @@ -0,0 +1,77 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 31 32 3A 20 49 6E 63 6C 75 64 65 20 66 69 | SC12: Include fi | +| 6C 65 20 63 61 6E 6E 6F 74 20 62 65 20 66 6F 75 | le cannot be fou | +| 6E 64 2E 0A 54 65 73 74 20 70 65 72 73 6F 6E 3A | nd..Test person: | +| 20 44 4F 4E 54 20 63 72 65 61 74 65 20 73 63 31 | DONT create sc1 | +| 32 61 2E 69 6E 63 2E 20 49 74 20 69 73 20 6E 6F | 2a.inc. It is no | +| 74 20 73 75 70 70 6F 73 65 64 20 74 6F 20 65 78 | t supposed to ex | +| 69 73 74 21 0A 54 68 65 20 66 6F 6C 6C 6F 77 69 | ist!.The followi | +| 6E 67 20 69 6E 63 6C 75 64 65 20 73 68 6F 75 6C | ng include shoul | +| 64 20 79 69 65 6C 64 20 61 20 22 66 69 6C 65 20 | d yield a "file | +| 6E 6F 74 20 66 6F 75 6E 64 20 65 72 72 6F 72 2E | not found error. | +| 22 0A 0A 40 69 20 73 63 31 32 61 2E 69 6E 63 0A | "..@i sc12a.inc. | +| 0A | . | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| SC12: Include file cannot be found.<010> +00002 00002| Test person: DONT create sc12a.inc. It is not supposed to exist!<010> +00003 00003| The following include should yield a "file not found error."<010> +00004 00004| <010> +00005 00005| @i sc12a.inc<010> +00006 00006| <010> +00007 00007| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 3 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="SC12: Include file cannot be found.<010> +Test person: DONT create sc12a.inc. It is not supposed to exist!<010> +The following include should yield a "file not found error."<010> +<010> +" +0006[01]: Text. Text scrap[White]="<010> +" +0007[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + +Macro table dump skipped (Parser was not invoked). +Document list dump skipped (Parser was not invoked). + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| SC12: Include file cannot be found. + 2 2| Test person: DONT create sc12a.inc. It is not supposed to exist! + 3 3| The following include should yield a "file not found error." + 4 4| + 5 5| @i sc12a.inc + Error|....^Error opening include file. + |....^The include file's expanded name was "<<Suppressed>>". + 6 6| + | <End-Of-File> +------------+------------------------------------------------------------------- + +There was 1 Error. diff --git a/web/funnelAC/answers/sc13.lis b/web/funnelAC/answers/sc13.lis new file mode 100644 index 0000000000..7876c45446 --- /dev/null +++ b/web/funnelAC/answers/sc13.lis @@ -0,0 +1,422 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 31 33 3A 20 56 61 72 69 6F 75 73 20 6B 69 | SC13: Various ki | +| 6E 64 73 20 6F 66 20 69 6E 63 6C 75 64 65 20 66 | nds of include f | +| 69 6C 65 2E 0A 0A 31 2E 20 49 6E 63 6C 75 64 65 | ile...1. Include | +| 20 66 69 6C 65 20 69 73 20 65 6D 70 74 79 2E 0A | file is empty.. | +| 42 65 66 6F 72 65 20 69 6E 63 6C 75 64 65 0A 40 | Before include.@ | +| 69 20 73 63 31 33 61 0A 41 66 74 65 72 20 69 6E | i sc13a.After in | +| 63 6C 75 64 65 0A 0A 32 2E 20 49 6E 63 6C 75 64 | clude..2. Includ | +| 65 20 66 69 6C 65 20 63 6F 6E 74 61 69 6E 73 20 | e file contains | +| 61 20 73 69 6E 67 6C 65 20 62 6C 61 6E 6B 20 6C | a single blank l | +| 69 6E 65 2E 0A 42 65 66 6F 72 65 20 69 6E 63 6C | ine..Before incl | +| 75 64 65 0A 40 69 20 73 63 31 33 62 0A 41 66 74 | ude.@i sc13b.Aft | +| 65 72 20 69 6E 63 6C 75 64 65 0A 0A 33 2E 20 49 | er include..3. I | +| 6E 63 6C 75 64 65 20 66 69 6C 65 20 63 6F 6E 74 | nclude file cont | +| 61 69 6E 73 20 74 77 6F 20 62 6C 61 6E 6B 20 6C | ains two blank l | +| 69 6E 65 73 2E 0A 42 65 66 6F 72 65 20 69 6E 63 | ines..Before inc | +| 6C 75 64 65 0A 40 69 20 73 63 31 33 63 0A 41 66 | lude.@i sc13c.Af | +| 74 65 72 20 69 6E 63 6C 75 64 65 0A 0A 34 2E 20 | ter include..4. | +| 49 6E 63 6C 75 64 65 20 66 69 6C 65 20 63 6F 6E | Include file con | +| 74 61 69 6E 73 20 61 20 73 69 6E 67 6C 65 20 6C | tains a single l | +| 69 6E 65 20 77 69 74 68 20 74 65 78 74 20 6F 6E | ine with text on | +| 20 69 74 2E 0A 42 65 66 6F 72 65 20 69 6E 63 6C | it..Before incl | +| 75 64 65 0A 40 69 20 73 63 31 33 64 0A 41 66 74 | ude.@i sc13d.Aft | +| 65 72 20 69 6E 63 6C 75 64 65 0A 0A 35 2E 20 49 | er include..5. I | +| 6E 63 6C 75 64 65 20 66 69 6C 65 27 73 20 6C 61 | nclude file's la | +| 73 74 20 6C 69 6E 65 20 69 73 20 6E 6F 74 20 70 | st line is not p | +| 72 6F 70 65 72 6C 79 20 74 65 72 6D 69 6E 61 74 | roperly terminat | +| 65 64 2E 0A 42 65 66 6F 72 65 20 69 6E 63 6C 75 | ed..Before inclu | +| 64 65 0A 40 69 20 73 63 31 33 65 0A 41 66 74 65 | de.@i sc13e.Afte | +| 72 20 69 6E 63 6C 75 64 65 0A 0A 36 2E 20 49 6E | r include..6. In | +| 63 6C 75 64 65 20 66 69 6C 65 20 69 73 20 6F 72 | clude file is or | +| 64 69 6E 61 72 79 2E 0A 42 65 66 6F 72 65 20 69 | dinary..Before i | +| 6E 63 6C 75 64 65 0A 40 69 20 73 63 31 33 66 0A | nclude.@i sc13f. | +| 41 66 74 65 72 20 69 6E 63 6C 75 64 65 0A 0A 37 | After include..7 | +| 2E 20 54 65 73 74 20 75 70 70 65 72 20 63 61 73 | . Test upper cas | +| 65 20 49 20 61 6E 64 20 66 69 6C 65 20 65 78 74 | e I and file ext | +| 65 6E 73 69 6F 6E 20 69 6E 68 65 72 69 74 61 6E | ension inheritan | +| 63 65 2E 0A 42 65 66 6F 72 65 20 69 6E 63 6C 75 | ce..Before inclu | +| 64 65 0A 40 49 20 73 63 31 33 66 0A 41 66 74 65 | de.@I sc13f.Afte | +| 72 20 69 6E 63 6C 75 64 65 0A 0A 45 6E 64 20 6F | r include..End o | +| 66 20 74 65 73 74 20 46 69 6C 65 2E 0A | f test File.. | ++-------------------------------------------------+------------------+ + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ ++-------------------------------------------------+------------------+ + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 0A | . | ++-------------------------------------------------+------------------+ + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 0A 0A | .. | ++-------------------------------------------------+------------------+ + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 54 68 69 73 20 69 73 20 74 68 65 20 69 6E 63 6C | This is the incl | +| 75 64 65 20 66 69 6C 65 20 66 6F 72 20 74 65 73 | ude file for tes | +| 74 20 53 43 31 33 64 2E 20 4A 75 73 74 20 61 20 | t SC13d. Just a | +| 66 69 6C 65 20 63 6F 6E 74 61 69 6E 69 6E 67 20 | file containing | +| 6F 6E 65 20 6C 69 6E 65 2E 0A | one line.. | ++-------------------------------------------------+------------------+ + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 54 68 69 73 20 69 73 20 74 68 65 20 69 6E 63 6C | This is the incl | +| 75 64 65 20 66 69 6C 65 20 66 6F 72 20 74 65 73 | ude file for tes | +| 74 20 53 43 31 33 65 2E 20 54 68 65 20 74 65 73 | t SC13e. The tes | +| 74 20 69 73 20 74 6F 20 73 65 65 20 68 6F 77 20 | t is to see how | +| 46 75 6E 6E 65 6C 57 65 62 0A 63 6F 70 65 73 20 | FunnelWeb.copes | +| 77 69 74 68 20 61 6E 20 69 6E 63 6C 75 64 65 20 | with an include | +| 66 69 6C 65 20 74 68 61 74 20 68 61 73 20 61 6E | file that has an | +| 20 69 6D 70 72 6F 70 65 72 6C 79 20 74 65 72 6D | improperly term | +| 69 6E 61 74 65 64 20 6C 61 73 74 20 6C 69 6E 65 | inated last line | +| 2E 0A 0A 48 65 72 65 20 69 73 20 74 68 65 20 69 | ...Here is the i | +| 6D 70 72 6F 70 65 72 20 74 65 72 6D 69 6E 61 74 | mproper terminat | +| 69 6F 6E 21 2D 2D 2D 2D 3E | ion!----> | ++-------------------------------------------------+------------------+ + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 54 68 69 73 20 69 73 20 74 68 65 20 69 6E 63 6C | This is the incl | +| 75 64 65 20 66 69 6C 65 20 66 6F 72 20 74 65 73 | ude file for tes | +| 74 73 20 53 43 31 33 2E 36 20 61 6E 64 20 53 43 | ts SC13.6 and SC | +| 31 33 2E 37 2E 0A 54 68 65 72 65 20 61 72 65 20 | 13.7..There are | +| 6F 6E 6C 79 20 74 77 6F 20 6C 69 6E 65 73 2C 20 | only two lines, | +| 61 6E 64 20 74 68 69 73 20 69 73 20 74 68 65 20 | and this is the | +| 73 65 63 6F 6E 64 20 6F 6E 65 2E 0A | second one.. | ++-------------------------------------------------+------------------+ + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 54 68 69 73 20 69 73 20 74 68 65 20 69 6E 63 6C | This is the incl | +| 75 64 65 20 66 69 6C 65 20 66 6F 72 20 74 65 73 | ude file for tes | +| 74 73 20 53 43 31 33 2E 36 20 61 6E 64 20 53 43 | ts SC13.6 and SC | +| 31 33 2E 37 2E 0A 54 68 65 72 65 20 61 72 65 20 | 13.7..There are | +| 6F 6E 6C 79 20 74 77 6F 20 6C 69 6E 65 73 2C 20 | only two lines, | +| 61 6E 64 20 74 68 69 73 20 69 73 20 74 68 65 20 | and this is the | +| 73 65 63 6F 6E 64 20 6F 6E 65 2E 0A | second one.. | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| SC13: Various kinds of include file.<010> +00002 00002| <010> +00003 00003| 1. Include file is empty.<010> +00004 00004| Before include<010> +00005 00005| @i sc13a<010> +00006 00006| After include<010> +00007 00007| <010> +00008 00008| 2. Include file contains a single blank line.<010> +00009 00009| Before include<010> +00010 00010| @i sc13b<010> +00011 00001| <010> +00012 00011| After include<010> +00013 00012| <010> +00014 00013| 3. Include file contains two blank lines.<010> +00015 00014| Before include<010> +00016 00015| @i sc13c<010> +00017 00001| <010> +00018 00002| <010> +00019 00016| After include<010> +00020 00017| <010> +00021 00018| 4. Include file contains a single line with text on it.<010> +00022 00019| Before include<010> +00023 00020| @i sc13d<010> +00024 00001| This is the include file for test SC13d. Just a file containing one line.<010> +00025 00021| After include<010> +00026 00022| <010> +00027 00023| 5. Include file's last line is not properly terminated.<010> +00028 00024| Before include<010> +00029 00025| @i sc13e<010> +00030 00001| This is the include file for test SC13e. The test is to see how FunnelWeb<010> +00031 00002| copes with an include file that has an improperly terminated last line.<010> +00032 00003| <010> +00033 00004| Here is the improper termination!----><010> +00034 00026| After include<010> +00035 00027| <010> +00036 00028| 6. Include file is ordinary.<010> +00037 00029| Before include<010> +00038 00030| @i sc13f<010> +00039 00001| This is the include file for tests SC13.6 and SC13.7.<010> +00040 00002| There are only two lines, and this is the second one.<010> +00041 00031| After include<010> +00042 00032| <010> +00043 00033| 7. Test upper case I and file extension inheritance.<010> +00044 00034| Before include<010> +00045 00035| @I sc13f<010> +00046 00001| This is the include file for tests SC13.6 and SC13.7.<010> +00047 00002| There are only two lines, and this is the second one.<010> +00048 00036| After include<010> +00049 00037| <010> +00050 00038| End of test File.<010> +00051 00039| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 15 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="SC13: Various kinds of include file.<010> +<010> +1. Include file is empty.<010> +Before include<010> +" +0006[01]: Text. Text scrap[Grey]="After include<010> +<010> +2. Include file contains a single blank line.<010> +Before include<010> +" +0011[01]: Text. Text scrap[White]="<010> +" +0012[01]: Text. Text scrap[Grey]="After include<010> +<010> +3. Include file contains two blank lines.<010> +Before include<010> +" +0017[01]: Text. Text scrap[White]="<010> +<010> +" +0019[01]: Text. Text scrap[Grey]="After include<010> +<010> +4. Include file contains a single line with text on it.<010> +Before include<010> +" +0024[01]: Text. Text scrap[Grey]="This is the include file for test SC13d. Just a file containing one line.<010> +" +0025[01]: Text. Text scrap[Grey]="After include<010> +<010> +5. Include file's last line is not properly terminated.<010> +Before include<010> +" +0030[01]: Text. Text scrap[Grey]="This is the include file for test SC13e. The test is to see how FunnelWeb<010> +copes with an include file that has an improperly terminated last line.<010> +<010> +Here is the improper termination!----><010> +" +0034[01]: Text. Text scrap[Grey]="After include<010> +<010> +6. Include file is ordinary.<010> +Before include<010> +" +0039[01]: Text. Text scrap[Grey]="This is the include file for tests SC13.6 and SC13.7.<010> +There are only two lines, and this is the second one.<010> +" +0041[01]: Text. Text scrap[Grey]="After include<010> +<010> +7. Test upper case I and file extension inheritance.<010> +Before include<010> +" +0046[01]: Text. Text scrap[Grey]="This is the include file for tests SC13.6 and SC13.7.<010> +There are only two lines, and this is the second one.<010> +" +0048[01]: Text. Text scrap[Grey]="After include<010> +<010> +End of test File.<010> +" +0051[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + + +========================== Start of MACRO TABLE DUMP =========================== + + +=========================== End of MACRO TABLE DUMP ============================ + + +========================= Start of DOCUMENT LIST DUMP ========================== + + +TEXT COMPONENT: Pos(L,C)=(1,1). + +-- Start of Text Scrap List -- +Text scrap[Grey]="SC13: Various kinds of include file.<010> +<010> +1. Include file is empty.<010> +Before include<010> +" +Text scrap[Grey]="After include<010> +<010> +2. Include file contains a single blank line.<010> +Before include<010> +" +Text scrap[White]="<010> +" +Text scrap[Grey]="After include<010> +<010> +3. Include file contains two blank lines.<010> +Before include<010> +" +Text scrap[White]="<010> +<010> +" +Text scrap[Grey]="After include<010> +<010> +4. Include file contains a single line with text on it.<010> +Before include<010> +" +Text scrap[Grey]="This is the include file for test SC13d. Just a file containing one line.<010> +" +Text scrap[Grey]="After include<010> +<010> +5. Include file's last line is not properly terminated.<010> +Before include<010> +" +Text scrap[Grey]="This is the include file for test SC13e. The test is to see how FunnelWeb<010> +copes with an include file that has an improperly terminated last line.<010> +<010> +Here is the improper termination!----><010> +" +Text scrap[Grey]="After include<010> +<010> +6. Include file is ordinary.<010> +Before include<010> +" +Text scrap[Grey]="This is the include file for tests SC13.6 and SC13.7.<010> +There are only two lines, and this is the second one.<010> +" +Text scrap[Grey]="After include<010> +<010> +7. Test upper case I and file extension inheritance.<010> +Before include<010> +" +Text scrap[Grey]="This is the include file for tests SC13.6 and SC13.7.<010> +There are only two lines, and this is the second one.<010> +" +Text scrap[Grey]="After include<010> +<010> +End of test File.<010> +" +--- End of Text Scrap List --- + + +========================== End of DOCUMENT LIST DUMP =========================== + +E: No macros defined. +E: No output files specified. + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| SC13: Various kinds of include file. + 2 2| + 3 3| 1. Include file is empty. + 4 4| Before include + 5 5| @i sc13a + Warning|.^Include file is empty (not a byte in syte)! + 6 6| After include + 7 7| + 8 8| 2. Include file contains a single blank line. + 9 9| Before include + 10 10| @i sc13b + 11 1| + 12 11| After include + 13 12| + 14 13| 3. Include file contains two blank lines. + 15 14| Before include + 16 15| @i sc13c + 17 1| + 18 2| + 19 16| After include + 20 17| + 21 18| 4. Include file contains a single line with text on it. + 22 19| Before include + 23 20| @i sc13d + 24 1| This is the include file for test SC13d. Just a file containing one line. + 25 21| After include + 26 22| + 27 23| 5. Include file's last line is not properly terminated. + 28 24| Before include + 29 25| @i sc13e + 30 1| This is the include file for test SC13e. The test is to see how FunnelWeb + 31 2| copes with an include file that has an improperly terminated last line. + 32 3| + 33 4| Here is the improper termination!----> + 34 26| After include + Warning|.^The last line of the include file was terminated by EOF. + |.^An EOL was inserted at the end of the last line. + 35 27| + 36 28| 6. Include file is ordinary. + 37 29| Before include + 38 30| @i sc13f + 39 1| This is the include file for tests SC13.6 and SC13.7. + 40 2| There are only two lines, and this is the second one. + 41 31| After include + 42 32| + 43 33| 7. Test upper case I and file extension inheritance. + 44 34| Before include + 45 35| @I sc13f + 46 1| This is the include file for tests SC13.6 and SC13.7. + 47 2| There are only two lines, and this is the second one. + 48 36| After include + 49 37| + 50 38| End of test File. + | <End-Of-File> +------------+------------------------------------------------------------------- + +There were 2 Errors and 2 Warnings. diff --git a/web/funnelAC/answers/sc14.lis b/web/funnelAC/answers/sc14.lis new file mode 100644 index 0000000000..228c6c5f64 --- /dev/null +++ b/web/funnelAC/answers/sc14.lis @@ -0,0 +1,477 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 31 34 3A 20 54 65 73 74 20 74 68 61 74 20 | SC14: Test that | +| 74 68 65 20 6D 61 78 69 6D 75 6D 20 6E 75 6D 62 | the maximum numb | +| 65 72 20 6F 66 20 6C 65 76 65 6C 73 20 6F 66 20 | er of levels of | +| 69 6E 63 6C 75 64 65 20 66 69 6C 65 20 69 73 20 | include file is | +| 31 30 2E 0A 54 68 69 73 20 69 73 20 6D 6F 73 74 | 10..This is most | +| 20 65 61 73 69 6C 79 20 64 6F 6E 65 20 77 69 74 | easily done wit | +| 68 20 61 20 72 65 63 75 72 73 69 76 65 20 69 6E | h a recursive in | +| 63 6C 75 73 69 6F 6E 2E 0A 0A 42 65 66 6F 72 65 | clusion...Before | +| 20 74 68 65 20 69 6E 63 6C 75 64 65 0A 40 69 20 | the include.@i | +| 73 63 31 34 2E 66 77 0A 41 66 74 65 72 20 74 68 | sc14.fw.After th | +| 65 20 69 6E 63 6C 75 64 65 0A | e include. | ++-------------------------------------------------+------------------+ + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 31 34 3A 20 54 65 73 74 20 74 68 61 74 20 | SC14: Test that | +| 74 68 65 20 6D 61 78 69 6D 75 6D 20 6E 75 6D 62 | the maximum numb | +| 65 72 20 6F 66 20 6C 65 76 65 6C 73 20 6F 66 20 | er of levels of | +| 69 6E 63 6C 75 64 65 20 66 69 6C 65 20 69 73 20 | include file is | +| 31 30 2E 0A 54 68 69 73 20 69 73 20 6D 6F 73 74 | 10..This is most | +| 20 65 61 73 69 6C 79 20 64 6F 6E 65 20 77 69 74 | easily done wit | +| 68 20 61 20 72 65 63 75 72 73 69 76 65 20 69 6E | h a recursive in | +| 63 6C 75 73 69 6F 6E 2E 0A 0A 42 65 66 6F 72 65 | clusion...Before | +| 20 74 68 65 20 69 6E 63 6C 75 64 65 0A 40 69 20 | the include.@i | +| 73 63 31 34 2E 66 77 0A 41 66 74 65 72 20 74 68 | sc14.fw.After th | +| 65 20 69 6E 63 6C 75 64 65 0A | e include. | ++-------------------------------------------------+------------------+ + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 31 34 3A 20 54 65 73 74 20 74 68 61 74 20 | SC14: Test that | +| 74 68 65 20 6D 61 78 69 6D 75 6D 20 6E 75 6D 62 | the maximum numb | +| 65 72 20 6F 66 20 6C 65 76 65 6C 73 20 6F 66 20 | er of levels of | +| 69 6E 63 6C 75 64 65 20 66 69 6C 65 20 69 73 20 | include file is | +| 31 30 2E 0A 54 68 69 73 20 69 73 20 6D 6F 73 74 | 10..This is most | +| 20 65 61 73 69 6C 79 20 64 6F 6E 65 20 77 69 74 | easily done wit | +| 68 20 61 20 72 65 63 75 72 73 69 76 65 20 69 6E | h a recursive in | +| 63 6C 75 73 69 6F 6E 2E 0A 0A 42 65 66 6F 72 65 | clusion...Before | +| 20 74 68 65 20 69 6E 63 6C 75 64 65 0A 40 69 20 | the include.@i | +| 73 63 31 34 2E 66 77 0A 41 66 74 65 72 20 74 68 | sc14.fw.After th | +| 65 20 69 6E 63 6C 75 64 65 0A | e include. | ++-------------------------------------------------+------------------+ + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 31 34 3A 20 54 65 73 74 20 74 68 61 74 20 | SC14: Test that | +| 74 68 65 20 6D 61 78 69 6D 75 6D 20 6E 75 6D 62 | the maximum numb | +| 65 72 20 6F 66 20 6C 65 76 65 6C 73 20 6F 66 20 | er of levels of | +| 69 6E 63 6C 75 64 65 20 66 69 6C 65 20 69 73 20 | include file is | +| 31 30 2E 0A 54 68 69 73 20 69 73 20 6D 6F 73 74 | 10..This is most | +| 20 65 61 73 69 6C 79 20 64 6F 6E 65 20 77 69 74 | easily done wit | +| 68 20 61 20 72 65 63 75 72 73 69 76 65 20 69 6E | h a recursive in | +| 63 6C 75 73 69 6F 6E 2E 0A 0A 42 65 66 6F 72 65 | clusion...Before | +| 20 74 68 65 20 69 6E 63 6C 75 64 65 0A 40 69 20 | the include.@i | +| 73 63 31 34 2E 66 77 0A 41 66 74 65 72 20 74 68 | sc14.fw.After th | +| 65 20 69 6E 63 6C 75 64 65 0A | e include. | ++-------------------------------------------------+------------------+ + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 31 34 3A 20 54 65 73 74 20 74 68 61 74 20 | SC14: Test that | +| 74 68 65 20 6D 61 78 69 6D 75 6D 20 6E 75 6D 62 | the maximum numb | +| 65 72 20 6F 66 20 6C 65 76 65 6C 73 20 6F 66 20 | er of levels of | +| 69 6E 63 6C 75 64 65 20 66 69 6C 65 20 69 73 20 | include file is | +| 31 30 2E 0A 54 68 69 73 20 69 73 20 6D 6F 73 74 | 10..This is most | +| 20 65 61 73 69 6C 79 20 64 6F 6E 65 20 77 69 74 | easily done wit | +| 68 20 61 20 72 65 63 75 72 73 69 76 65 20 69 6E | h a recursive in | +| 63 6C 75 73 69 6F 6E 2E 0A 0A 42 65 66 6F 72 65 | clusion...Before | +| 20 74 68 65 20 69 6E 63 6C 75 64 65 0A 40 69 20 | the include.@i | +| 73 63 31 34 2E 66 77 0A 41 66 74 65 72 20 74 68 | sc14.fw.After th | +| 65 20 69 6E 63 6C 75 64 65 0A | e include. | ++-------------------------------------------------+------------------+ + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 31 34 3A 20 54 65 73 74 20 74 68 61 74 20 | SC14: Test that | +| 74 68 65 20 6D 61 78 69 6D 75 6D 20 6E 75 6D 62 | the maximum numb | +| 65 72 20 6F 66 20 6C 65 76 65 6C 73 20 6F 66 20 | er of levels of | +| 69 6E 63 6C 75 64 65 20 66 69 6C 65 20 69 73 20 | include file is | +| 31 30 2E 0A 54 68 69 73 20 69 73 20 6D 6F 73 74 | 10..This is most | +| 20 65 61 73 69 6C 79 20 64 6F 6E 65 20 77 69 74 | easily done wit | +| 68 20 61 20 72 65 63 75 72 73 69 76 65 20 69 6E | h a recursive in | +| 63 6C 75 73 69 6F 6E 2E 0A 0A 42 65 66 6F 72 65 | clusion...Before | +| 20 74 68 65 20 69 6E 63 6C 75 64 65 0A 40 69 20 | the include.@i | +| 73 63 31 34 2E 66 77 0A 41 66 74 65 72 20 74 68 | sc14.fw.After th | +| 65 20 69 6E 63 6C 75 64 65 0A | e include. | ++-------------------------------------------------+------------------+ + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 31 34 3A 20 54 65 73 74 20 74 68 61 74 20 | SC14: Test that | +| 74 68 65 20 6D 61 78 69 6D 75 6D 20 6E 75 6D 62 | the maximum numb | +| 65 72 20 6F 66 20 6C 65 76 65 6C 73 20 6F 66 20 | er of levels of | +| 69 6E 63 6C 75 64 65 20 66 69 6C 65 20 69 73 20 | include file is | +| 31 30 2E 0A 54 68 69 73 20 69 73 20 6D 6F 73 74 | 10..This is most | +| 20 65 61 73 69 6C 79 20 64 6F 6E 65 20 77 69 74 | easily done wit | +| 68 20 61 20 72 65 63 75 72 73 69 76 65 20 69 6E | h a recursive in | +| 63 6C 75 73 69 6F 6E 2E 0A 0A 42 65 66 6F 72 65 | clusion...Before | +| 20 74 68 65 20 69 6E 63 6C 75 64 65 0A 40 69 20 | the include.@i | +| 73 63 31 34 2E 66 77 0A 41 66 74 65 72 20 74 68 | sc14.fw.After th | +| 65 20 69 6E 63 6C 75 64 65 0A | e include. | ++-------------------------------------------------+------------------+ + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 31 34 3A 20 54 65 73 74 20 74 68 61 74 20 | SC14: Test that | +| 74 68 65 20 6D 61 78 69 6D 75 6D 20 6E 75 6D 62 | the maximum numb | +| 65 72 20 6F 66 20 6C 65 76 65 6C 73 20 6F 66 20 | er of levels of | +| 69 6E 63 6C 75 64 65 20 66 69 6C 65 20 69 73 20 | include file is | +| 31 30 2E 0A 54 68 69 73 20 69 73 20 6D 6F 73 74 | 10..This is most | +| 20 65 61 73 69 6C 79 20 64 6F 6E 65 20 77 69 74 | easily done wit | +| 68 20 61 20 72 65 63 75 72 73 69 76 65 20 69 6E | h a recursive in | +| 63 6C 75 73 69 6F 6E 2E 0A 0A 42 65 66 6F 72 65 | clusion...Before | +| 20 74 68 65 20 69 6E 63 6C 75 64 65 0A 40 69 20 | the include.@i | +| 73 63 31 34 2E 66 77 0A 41 66 74 65 72 20 74 68 | sc14.fw.After th | +| 65 20 69 6E 63 6C 75 64 65 0A | e include. | ++-------------------------------------------------+------------------+ + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 31 34 3A 20 54 65 73 74 20 74 68 61 74 20 | SC14: Test that | +| 74 68 65 20 6D 61 78 69 6D 75 6D 20 6E 75 6D 62 | the maximum numb | +| 65 72 20 6F 66 20 6C 65 76 65 6C 73 20 6F 66 20 | er of levels of | +| 69 6E 63 6C 75 64 65 20 66 69 6C 65 20 69 73 20 | include file is | +| 31 30 2E 0A 54 68 69 73 20 69 73 20 6D 6F 73 74 | 10..This is most | +| 20 65 61 73 69 6C 79 20 64 6F 6E 65 20 77 69 74 | easily done wit | +| 68 20 61 20 72 65 63 75 72 73 69 76 65 20 69 6E | h a recursive in | +| 63 6C 75 73 69 6F 6E 2E 0A 0A 42 65 66 6F 72 65 | clusion...Before | +| 20 74 68 65 20 69 6E 63 6C 75 64 65 0A 40 69 20 | the include.@i | +| 73 63 31 34 2E 66 77 0A 41 66 74 65 72 20 74 68 | sc14.fw.After th | +| 65 20 69 6E 63 6C 75 64 65 0A | e include. | ++-------------------------------------------------+------------------+ + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 31 34 3A 20 54 65 73 74 20 74 68 61 74 20 | SC14: Test that | +| 74 68 65 20 6D 61 78 69 6D 75 6D 20 6E 75 6D 62 | the maximum numb | +| 65 72 20 6F 66 20 6C 65 76 65 6C 73 20 6F 66 20 | er of levels of | +| 69 6E 63 6C 75 64 65 20 66 69 6C 65 20 69 73 20 | include file is | +| 31 30 2E 0A 54 68 69 73 20 69 73 20 6D 6F 73 74 | 10..This is most | +| 20 65 61 73 69 6C 79 20 64 6F 6E 65 20 77 69 74 | easily done wit | +| 68 20 61 20 72 65 63 75 72 73 69 76 65 20 69 6E | h a recursive in | +| 63 6C 75 73 69 6F 6E 2E 0A 0A 42 65 66 6F 72 65 | clusion...Before | +| 20 74 68 65 20 69 6E 63 6C 75 64 65 0A 40 69 20 | the include.@i | +| 73 63 31 34 2E 66 77 0A 41 66 74 65 72 20 74 68 | sc14.fw.After th | +| 65 20 69 6E 63 6C 75 64 65 0A | e include. | ++-------------------------------------------------+------------------+ + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 31 34 3A 20 54 65 73 74 20 74 68 61 74 20 | SC14: Test that | +| 74 68 65 20 6D 61 78 69 6D 75 6D 20 6E 75 6D 62 | the maximum numb | +| 65 72 20 6F 66 20 6C 65 76 65 6C 73 20 6F 66 20 | er of levels of | +| 69 6E 63 6C 75 64 65 20 66 69 6C 65 20 69 73 20 | include file is | +| 31 30 2E 0A 54 68 69 73 20 69 73 20 6D 6F 73 74 | 10..This is most | +| 20 65 61 73 69 6C 79 20 64 6F 6E 65 20 77 69 74 | easily done wit | +| 68 20 61 20 72 65 63 75 72 73 69 76 65 20 69 6E | h a recursive in | +| 63 6C 75 73 69 6F 6E 2E 0A 0A 42 65 66 6F 72 65 | clusion...Before | +| 20 74 68 65 20 69 6E 63 6C 75 64 65 0A 40 69 20 | the include.@i | +| 73 63 31 34 2E 66 77 0A 41 66 74 65 72 20 74 68 | sc14.fw.After th | +| 65 20 69 6E 63 6C 75 64 65 0A | e include. | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| SC14: Test that the maximum number of levels of include file is 10.<010> +00002 00002| This is most easily done with a recursive inclusion.<010> +00003 00003| <010> +00004 00004| Before the include<010> +00005 00005| @i sc14.fw<010> +00006 00001| SC14: Test that the maximum number of levels of include file is 10.<010> +00007 00002| This is most easily done with a recursive inclusion.<010> +00008 00003| <010> +00009 00004| Before the include<010> +00010 00005| @i sc14.fw<010> +00011 00001| SC14: Test that the maximum number of levels of include file is 10.<010> +00012 00002| This is most easily done with a recursive inclusion.<010> +00013 00003| <010> +00014 00004| Before the include<010> +00015 00005| @i sc14.fw<010> +00016 00001| SC14: Test that the maximum number of levels of include file is 10.<010> +00017 00002| This is most easily done with a recursive inclusion.<010> +00018 00003| <010> +00019 00004| Before the include<010> +00020 00005| @i sc14.fw<010> +00021 00001| SC14: Test that the maximum number of levels of include file is 10.<010> +00022 00002| This is most easily done with a recursive inclusion.<010> +00023 00003| <010> +00024 00004| Before the include<010> +00025 00005| @i sc14.fw<010> +00026 00001| SC14: Test that the maximum number of levels of include file is 10.<010> +00027 00002| This is most easily done with a recursive inclusion.<010> +00028 00003| <010> +00029 00004| Before the include<010> +00030 00005| @i sc14.fw<010> +00031 00001| SC14: Test that the maximum number of levels of include file is 10.<010> +00032 00002| This is most easily done with a recursive inclusion.<010> +00033 00003| <010> +00034 00004| Before the include<010> +00035 00005| @i sc14.fw<010> +00036 00001| SC14: Test that the maximum number of levels of include file is 10.<010> +00037 00002| This is most easily done with a recursive inclusion.<010> +00038 00003| <010> +00039 00004| Before the include<010> +00040 00005| @i sc14.fw<010> +00041 00001| SC14: Test that the maximum number of levels of include file is 10.<010> +00042 00002| This is most easily done with a recursive inclusion.<010> +00043 00003| <010> +00044 00004| Before the include<010> +00045 00005| @i sc14.fw<010> +00046 00001| SC14: Test that the maximum number of levels of include file is 10.<010> +00047 00002| This is most easily done with a recursive inclusion.<010> +00048 00003| <010> +00049 00004| Before the include<010> +00050 00005| @i sc14.fw<010> +00051 00001| SC14: Test that the maximum number of levels of include file is 10.<010> +00052 00002| This is most easily done with a recursive inclusion.<010> +00053 00003| <010> +00054 00004| Before the include<010> +00055 00005| @i sc14.fw<010> +00056 00006| After the include<010> +00057 00006| After the include<010> +00058 00006| After the include<010> +00059 00006| After the include<010> +00060 00006| After the include<010> +00061 00006| After the include<010> +00062 00006| After the include<010> +00063 00006| After the include<010> +00064 00006| After the include<010> +00065 00006| After the include<010> +00066 00006| After the include<010> +00067 00007| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 23 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="SC14: Test that the maximum number of levels of include file is 10.<010> +This is most easily done with a recursive inclusion.<010> +<010> +Before the include<010> +" +0006[01]: Text. Text scrap[Grey]="SC14: Test that the maximum number of levels of include file is 10.<010> +This is most easily done with a recursive inclusion.<010> +<010> +Before the include<010> +" +0011[01]: Text. Text scrap[Grey]="SC14: Test that the maximum number of levels of include file is 10.<010> +This is most easily done with a recursive inclusion.<010> +<010> +Before the include<010> +" +0016[01]: Text. Text scrap[Grey]="SC14: Test that the maximum number of levels of include file is 10.<010> +This is most easily done with a recursive inclusion.<010> +<010> +Before the include<010> +" +0021[01]: Text. Text scrap[Grey]="SC14: Test that the maximum number of levels of include file is 10.<010> +This is most easily done with a recursive inclusion.<010> +<010> +Before the include<010> +" +0026[01]: Text. Text scrap[Grey]="SC14: Test that the maximum number of levels of include file is 10.<010> +This is most easily done with a recursive inclusion.<010> +<010> +Before the include<010> +" +0031[01]: Text. Text scrap[Grey]="SC14: Test that the maximum number of levels of include file is 10.<010> +This is most easily done with a recursive inclusion.<010> +<010> +Before the include<010> +" +0036[01]: Text. Text scrap[Grey]="SC14: Test that the maximum number of levels of include file is 10.<010> +This is most easily done with a recursive inclusion.<010> +<010> +Before the include<010> +" +0041[01]: Text. Text scrap[Grey]="SC14: Test that the maximum number of levels of include file is 10.<010> +This is most easily done with a recursive inclusion.<010> +<010> +Before the include<010> +" +0046[01]: Text. Text scrap[Grey]="SC14: Test that the maximum number of levels of include file is 10.<010> +This is most easily done with a recursive inclusion.<010> +<010> +Before the include<010> +" +0051[01]: Text. Text scrap[Grey]="SC14: Test that the maximum number of levels of include file is 10.<010> +This is most easily done with a recursive inclusion.<010> +<010> +Before the include<010> +" +0056[01]: Text. Text scrap[Grey]="After the include<010> +" +0057[01]: Text. Text scrap[Grey]="After the include<010> +" +0058[01]: Text. Text scrap[Grey]="After the include<010> +" +0059[01]: Text. Text scrap[Grey]="After the include<010> +" +0060[01]: Text. Text scrap[Grey]="After the include<010> +" +0061[01]: Text. Text scrap[Grey]="After the include<010> +" +0062[01]: Text. Text scrap[Grey]="After the include<010> +" +0063[01]: Text. Text scrap[Grey]="After the include<010> +" +0064[01]: Text. Text scrap[Grey]="After the include<010> +" +0065[01]: Text. Text scrap[Grey]="After the include<010> +" +0066[01]: Text. Text scrap[Grey]="After the include<010> +" +0067[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + +Macro table dump skipped (Parser was not invoked). +Document list dump skipped (Parser was not invoked). + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| SC14: Test that the maximum number of levels of include file is 10. + 2 2| This is most easily done with a recursive inclusion. + 3 3| + 4 4| Before the include + 5 5| @i sc14.fw + 6 1| SC14: Test that the maximum number of levels of include file is 10. + 7 2| This is most easily done with a recursive inclusion. + 8 3| + 9 4| Before the include + 10 5| @i sc14.fw + 11 1| SC14: Test that the maximum number of levels of include file is 10. + 12 2| This is most easily done with a recursive inclusion. + 13 3| + 14 4| Before the include + 15 5| @i sc14.fw + 16 1| SC14: Test that the maximum number of levels of include file is 10. + 17 2| This is most easily done with a recursive inclusion. + 18 3| + 19 4| Before the include + 20 5| @i sc14.fw + 21 1| SC14: Test that the maximum number of levels of include file is 10. + 22 2| This is most easily done with a recursive inclusion. + 23 3| + 24 4| Before the include + 25 5| @i sc14.fw + 26 1| SC14: Test that the maximum number of levels of include file is 10. + 27 2| This is most easily done with a recursive inclusion. + 28 3| + 29 4| Before the include + 30 5| @i sc14.fw + 31 1| SC14: Test that the maximum number of levels of include file is 10. + 32 2| This is most easily done with a recursive inclusion. + 33 3| + 34 4| Before the include + 35 5| @i sc14.fw + 36 1| SC14: Test that the maximum number of levels of include file is 10. + 37 2| This is most easily done with a recursive inclusion. + 38 3| + 39 4| Before the include + 40 5| @i sc14.fw + 41 1| SC14: Test that the maximum number of levels of include file is 10. + 42 2| This is most easily done with a recursive inclusion. + 43 3| + 44 4| Before the include + 45 5| @i sc14.fw + 46 1| SC14: Test that the maximum number of levels of include file is 10. + 47 2| This is most easily done with a recursive inclusion. + 48 3| + 49 4| Before the include + 50 5| @i sc14.fw + 51 1| SC14: Test that the maximum number of levels of include file is 10. + 52 2| This is most easily done with a recursive inclusion. + 53 3| + 54 4| Before the include + 55 5| @i sc14.fw + Error|.^This include file is nested too deeply. It's probably recursive. + |.^The maximum level of nested includes is 10. + |.^Include ignored. + 56 6| After the include + 57 6| After the include + 58 6| After the include + 59 6| After the include + 60 6| After the include + 61 6| After the include + 62 6| After the include + 63 6| After the include + 64 6| After the include + 65 6| After the include + 66 6| After the include + | <End-Of-File> +------------+------------------------------------------------------------------- + +There was 1 Error. diff --git a/web/funnelAC/answers/sc15.lis b/web/funnelAC/answers/sc15.lis new file mode 100644 index 0000000000..317e9453cc --- /dev/null +++ b/web/funnelAC/answers/sc15.lis @@ -0,0 +1,355 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 31 35 3A 20 54 65 73 74 20 74 68 61 74 20 | SC15: Test that | +| 63 65 72 74 61 69 6E 20 61 74 74 72 69 62 75 74 | certain attribut | +| 65 73 20 61 72 65 20 73 61 76 65 64 20 61 63 72 | es are saved acr | +| 6F 73 73 20 69 6E 63 6C 75 73 69 6F 6E 73 2E 0A | oss inclusions.. | +| 0A 31 2E 20 4D 61 78 69 6D 75 6D 20 69 6E 70 75 | .1. Maximum inpu | +| 74 20 6C 69 6E 65 20 6C 65 6E 67 74 68 2E 0A 32 | t line length..2 | +| 2E 20 53 70 65 63 69 61 6C 20 63 68 61 72 61 63 | . Special charac | +| 74 65 72 2E 0A 33 2E 20 4C 6F 63 61 6C 20 6C 69 | ter..3. Local li | +| 6E 65 20 6E 75 6D 62 65 72 2E 0A 0A 54 6F 20 74 | ne number...To t | +| 65 73 74 20 74 68 69 73 2C 20 77 65 20 66 69 72 | est this, we fir | +| 73 74 20 73 65 74 20 74 68 65 20 66 69 72 73 74 | st set the first | +| 20 74 77 6F 20 61 74 74 72 69 62 75 74 65 73 20 | two attributes | +| 61 77 61 79 20 66 72 6F 6D 20 74 68 65 0A 64 65 | away from the.de | +| 66 61 75 6C 74 2E 20 54 68 69 73 20 77 69 6C 6C | fault. This will | +| 20 65 6E 61 62 6C 65 20 75 73 20 74 6F 20 62 65 | enable us to be | +| 20 73 75 72 65 20 74 68 61 74 20 77 68 65 6E 20 | sure that when | +| 74 68 65 79 20 61 72 65 20 72 65 73 74 6F 72 65 | they are restore | +| 64 20 74 68 61 74 0A 74 68 65 79 20 61 72 65 20 | d that.they are | +| 62 65 69 6E 67 20 72 65 73 74 6F 72 65 64 20 74 | being restored t | +| 6F 20 74 68 65 69 72 20 66 6F 72 6D 65 72 20 76 | o their former v | +| 61 6C 75 65 73 20 61 6E 64 20 6E 6F 74 20 6A 75 | alues and not ju | +| 73 74 20 73 65 74 20 74 6F 20 74 68 65 0A 64 65 | st set to the.de | +| 66 61 75 6C 74 2E 0A 0A 40 3D 2A 20 20 20 2A 21 | fault...@=* *! | +| 20 43 68 61 6E 67 65 20 74 68 65 20 73 70 65 63 | Change the spec | +| 69 61 6C 20 63 68 61 72 61 63 74 65 72 2E 0A 2A | ial character..* | +| 70 20 6D 61 78 69 6D 75 6D 5F 69 6E 70 75 74 5F | p maximum_input_ | +| 6C 69 6E 65 5F 6C 65 6E 67 74 68 20 3D 20 37 35 | line_length = 75 | +| 0A 0A 42 65 66 6F 72 65 20 69 6E 63 6C 75 64 65 | ..Before include | +| 2E 0A 2A 69 20 73 63 31 35 61 0A 41 66 74 65 72 | ..*i sc15a.After | +| 20 69 6E 63 6C 75 64 65 2E 0A 0A 49 66 20 74 68 | include...If th | +| 65 20 6D 61 78 69 6D 75 6D 20 69 6E 70 75 74 20 | e maximum input | +| 6C 69 6E 65 20 6C 65 6E 67 74 68 20 68 61 73 20 | line length has | +| 62 65 65 6E 20 63 6F 72 72 65 63 74 6C 79 20 72 | been correctly r | +| 65 73 74 6F 72 65 64 20 74 68 65 6E 20 74 68 65 | estored then the | +| 0A 73 65 63 6F 6E 64 20 6F 66 20 74 68 65 20 66 | .second of the f | +| 6F 6C 6C 6F 77 69 6E 67 20 74 77 6F 20 6C 69 6E | ollowing two lin | +| 65 73 20 73 68 6F 75 6C 64 20 67 69 76 65 20 61 | es should give a | +| 6E 20 65 72 72 6F 72 2C 20 62 75 74 20 6E 6F 74 | n error, but not | +| 20 74 68 65 20 66 69 72 73 74 2E 0A 31 32 33 34 | the first..1234 | +| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | +| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | +| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | +| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | +| 39 30 31 32 33 34 35 0A 31 32 33 34 35 36 37 38 | 9012345.12345678 | +| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | +| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | +| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | +| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | +| 33 34 35 36 0A 0A 49 66 20 74 68 65 20 73 70 65 | 3456..If the spe | +| 63 69 61 6C 20 63 68 61 72 61 63 74 65 72 20 68 | cial character h | +| 61 73 20 62 65 65 6E 20 70 72 65 73 65 72 76 65 | as been preserve | +| 64 2C 20 74 68 65 6E 20 74 68 65 20 66 6F 6C 6C | d, then the foll | +| 6F 77 69 6E 67 20 73 68 6F 75 6C 64 0A 67 65 6E | owing should.gen | +| 65 72 61 74 65 20 61 6E 20 65 72 72 6F 72 2E 0A | erate an error.. | +| 0A 2A 20 20 20 2D 20 54 68 69 73 20 73 68 6F 75 | .* - This shou | +| 6C 64 20 67 65 6E 65 72 61 74 65 20 61 6E 20 65 | ld generate an e | +| 72 72 6F 72 20 69 66 20 61 6C 6C 20 69 73 20 77 | rror if all is w | +| 65 6C 6C 2E 0A 0A 50 72 65 73 65 72 76 61 74 69 | ell...Preservati | +| 6F 6E 20 6F 66 20 74 68 65 20 6C 6F 63 61 6C 20 | on of the local | +| 6C 69 6E 65 20 6E 75 6D 62 65 72 20 63 61 6E 20 | line number can | +| 62 65 20 63 68 65 63 6B 65 64 20 62 79 20 6C 6F | be checked by lo | +| 6F 6B 69 6E 67 20 61 74 20 74 68 65 0A 6C 69 73 | oking at the.lis | +| 74 69 6E 67 20 66 69 6C 65 2E 0A | ting file.. | ++-------------------------------------------------+------------------+ + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 54 68 69 73 20 69 73 20 74 68 65 20 69 6E 63 6C | This is the incl | +| 75 64 65 20 66 69 6C 65 20 66 6F 72 20 74 65 73 | ude file for tes | +| 74 20 53 43 31 35 2E 20 54 68 65 20 53 43 31 35 | t SC15. The SC15 | +| 20 74 65 73 74 20 63 68 65 63 6B 73 20 74 6F 20 | test checks to | +| 6D 61 6B 65 0A 73 75 72 65 20 74 68 61 74 20 46 | make.sure that F | +| 75 6E 6E 65 6C 57 65 62 20 69 73 20 73 61 76 69 | unnelWeb is savi | +| 6E 67 20 61 6E 64 20 72 65 73 74 6F 72 69 6E 67 | ng and restoring | +| 20 74 68 72 65 65 20 73 63 61 6E 6E 69 6E 67 0A | three scanning. | +| 61 74 74 72 69 62 75 74 65 73 20 61 63 72 6F 73 | attributes acros | +| 73 20 69 6E 63 6C 75 64 65 20 66 69 6C 65 73 2E | s include files. | +| 20 57 65 20 61 6C 73 6F 20 77 61 6E 74 20 74 6F | We also want to | +| 20 6D 61 6B 65 20 73 75 72 65 0A 74 68 61 74 20 | make sure.that | +| 74 68 65 20 73 63 61 6E 6E 65 72 20 69 73 20 69 | the scanner is i | +| 6E 69 74 69 61 6C 69 7A 69 6E 67 20 74 68 65 73 | nitializing thes | +| 65 20 61 74 74 72 69 62 75 74 65 73 20 63 6F 72 | e attributes cor | +| 72 65 63 74 6C 79 20 77 69 74 68 69 6E 0A 74 68 | rectly within.th | +| 65 20 69 6E 63 6C 75 64 65 20 66 69 6C 65 2E 0A | e include file.. | +| 0A 53 43 31 35 2E 34 3A 20 4D 61 6B 65 20 73 75 | .SC15.4: Make su | +| 72 65 20 74 68 61 74 20 74 68 65 20 73 70 65 63 | re that the spec | +| 69 61 6C 20 63 68 61 72 61 63 74 65 72 20 69 73 | ial character is | +| 20 41 54 20 61 74 20 74 68 65 20 73 74 61 72 74 | AT at the start | +| 20 6F 66 0A 69 6E 63 6C 75 64 65 20 66 69 6C 65 | of.include file | +| 73 2E 0A 0A 40 20 20 20 20 2D 20 54 68 69 73 20 | s...@ - This | +| 73 68 6F 75 6C 64 20 79 69 65 6C 64 20 61 6E 20 | should yield an | +| 65 72 72 6F 72 2E 0A 0A 53 43 31 35 2E 35 20 45 | error...SC15.5 E | +| 6E 73 75 72 65 20 74 68 61 74 20 74 68 65 20 6D | nsure that the m | +| 61 78 69 6D 75 6D 20 69 6E 70 75 74 20 6C 69 6E | aximum input lin | +| 65 20 6C 65 6E 67 74 68 20 69 73 20 38 30 20 61 | e length is 80 a | +| 74 20 74 68 65 20 73 74 61 72 74 0A 6F 66 20 61 | t the start.of a | +| 6E 20 69 6E 63 6C 75 64 65 20 66 69 6C 65 2E 20 | n include file. | +| 49 66 20 61 6C 6C 20 69 73 20 77 65 6C 6C 2C 20 | If all is well, | +| 6F 6E 6C 79 20 74 68 65 20 73 65 63 6F 6E 64 20 | only the second | +| 6F 66 20 74 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 | of the following | +| 20 74 77 6F 0A 6C 69 6E 65 73 20 77 69 6C 6C 20 | two.lines will | +| 70 72 6F 76 6F 6B 65 20 61 20 22 6C 69 6E 65 20 | provoke a "line | +| 74 6F 6F 20 6C 6F 6E 67 22 20 65 72 72 6F 72 2E | too long" error. | +| 0A 0A 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | ..12345678901234 | +| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | +| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | +| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | +| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | +| 39 30 0A 31 32 33 34 35 36 37 38 39 30 31 32 33 | 90.1234567890123 | +| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 | +| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 | +| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 | +| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 | +| 38 39 30 31 0A 0A 4E 6F 77 20 74 68 61 74 20 77 | 8901..Now that w | +| 65 20 68 61 76 65 20 63 68 65 63 6B 65 64 20 74 | e have checked t | +| 68 65 20 64 65 66 61 75 6C 74 20 61 74 74 72 69 | he default attri | +| 62 75 74 65 73 20 6F 6E 20 65 6E 74 65 72 69 6E | butes on enterin | +| 67 20 61 6E 20 69 6E 63 6C 75 64 65 20 66 69 6C | g an include fil | +| 65 2C 0A 77 65 20 77 61 6E 74 20 74 6F 20 73 74 | e,.we want to st | +| 75 66 66 20 74 68 65 6D 20 75 70 20 73 6F 20 61 | uff them up so a | +| 73 20 74 6F 20 6D 61 6B 65 20 73 75 72 65 20 74 | s to make sure t | +| 68 61 74 20 74 68 65 20 61 74 74 72 69 62 75 74 | hat the attribut | +| 65 73 0A 70 72 65 76 61 69 6C 69 6E 67 20 77 68 | es.prevailing wh | +| 65 6E 20 74 68 65 20 69 6E 63 6C 75 64 65 20 77 | en the include w | +| 61 73 20 68 69 74 20 61 72 65 20 72 65 73 74 6F | as hit are resto | +| 72 65 64 2E 0A 0A 40 70 20 6D 61 78 69 6D 75 6D | red...@p maximum | +| 5F 69 6E 70 75 74 5F 6C 69 6E 65 5F 6C 65 6E 67 | _input_line_leng | +| 74 68 20 3D 20 36 35 0A 40 3D 2B 0A 0A | th = 65.@=+.. | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| SC15: Test that certain attributes are saved across inclusions.<010> +00002 00002| <010> +00003 00003| 1. Maximum input line length.<010> +00004 00004| 2. Special character.<010> +00005 00005| 3. Local line number.<010> +00006 00006| <010> +00007 00007| To test this, we first set the first two attributes away from the<010> +00008 00008| default. This will enable us to be sure that when they are restored that<010> +00009 00009| they are being restored to their former values and not just set to the<010> +00010 00010| default.<010> +00011 00011| <010> +00012 00012| @=* *! Change the special character.<010> +00013 00013| *p maximum_input_line_length = 75<010> +00014 00014| <010> +00015 00015| Before include.<010> +00016 00016| *i sc15a<010> +00017 00001| This is the include file for test SC15. The SC15 test checks to make<010> +00018 00002| sure that FunnelWeb is saving and restoring three scanning<010> +00019 00003| attributes across include files. We also want to make sure<010> +00020 00004| that the scanner is initializing these attributes correctly within<010> +00021 00005| the include file.<010> +00022 00006| <010> +00023 00007| SC15.4: Make sure that the special character is AT at the start of<010> +00024 00008| include files.<010> +00025 00009| <010> +00026 00010| @ - This should yield an error.<010> +00027 00011| <010> +00028 00012| SC15.5 Ensure that the maximum input line length is 80 at the start<010> +00029 00013| of an include file. If all is well, only the second of the following two<010> +00030 00014| lines will provoke a "line too long" error.<010> +00031 00015| <010> +00032 00016| 12345678901234567890123456789012345678901234567890123456789012345678901234567890<010> +00033 00017| 123456789012345678901234567890123456789012345678901234567890123456789012345678901<010> +00034 00018| <010> +00035 00019| Now that we have checked the default attributes on entering an include file,<010> +00036 00020| we want to stuff them up so as to make sure that the attributes<010> +00037 00021| prevailing when the include was hit are restored.<010> +00038 00022| <010> +00039 00023| @p maximum_input_line_length = 65<010> +00040 00024| @=+<010> +00041 00025| <010> +00042 00017| After include.<010> +00043 00018| <010> +00044 00019| If the maximum input line length has been correctly restored then the<010> +00045 00020| second of the following two lines should give an error, but not the first.<010> +00046 00021| 123456789012345678901234567890123456789012345678901234567890123456789012345<010> +00047 00022| 1234567890123456789012345678901234567890123456789012345678901234567890123456<010> +00048 00023| <010> +00049 00024| If the special character has been preserved, then the following should<010> +00050 00025| generate an error.<010> +00051 00026| <010> +00052 00027| * - This should generate an error if all is well.<010> +00053 00028| <010> +00054 00029| Preservation of the local line number can be checked by looking at the<010> +00055 00030| listing file.<010> +00056 00031| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 9 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="SC15: Test that certain attributes are saved across inclusions.<010> +<010> +1. Maximum input line length.<010> +2. Special character.<010> +3. Local line number.<010> +<010> +To test this, we first set the first two attributes away from the<010> +default. This will enable us to be sure that when they are restored that<010> +they are being restored to their former values and not just set to the<010> +default.<010> +<010> +" +0012[04]: Text. Text scrap[White]=" " +0014[01]: Text. Text scrap[Grey]="<010> +Before include.<010> +" +0017[01]: Text. Text scrap[Grey]="This is the include file for test SC15. The SC15 test checks to make<010> +sure that FunnelWeb is saving and restoring three scanning<010> +attributes across include files. We also want to make sure<010> +that the scanner is initializing these attributes correctly within<010> +the include file.<010> +<010> +SC15.4: Make sure that the special character is AT at the start of<010> +include files.<010> +<010> +" +0026[03]: Text. Text scrap[Grey]=" - This should yield an error.<010> +<010> +SC15.5 Ensure that the maximum input line length is 80 at the start<010> +of an include file. If all is well, only the second of the following two<010> +lines will provoke a "line too long" error.<010> +<010> +12345678901234567890123456789012345678901234567890123456789012345678901234567890<010> +123456789012345678901234567890123456789012345678901234567890123456789012345678901<010> +<010> +Now that we have checked the default attributes on entering an include file,<010> +we want to stuff them up so as to make sure that the attributes<010> +prevailing when the include was hit are restored.<010> +<010> +" +0040[04]: Text. Text scrap[White]="<010> +<010> +" +0042[01]: Text. Text scrap[Grey]="After include.<010> +<010> +If the maximum input line length has been correctly restored then the<010> +second of the following two lines should give an error, but not the first.<010> +123456789012345678901234567890123456789012345678901234567890123456789012345<010> +1234567890123456789012345678901234567890123456789012345678901234567890123456<010> +<010> +If the special character has been preserved, then the following should<010> +generate an error.<010> +<010> +" +0052[03]: Text. Text scrap[Grey]=" - This should generate an error if all is well.<010> +<010> +Preservation of the local line number can be checked by looking at the<010> +listing file.<010> +" +0056[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + +Macro table dump skipped (Parser was not invoked). +Document list dump skipped (Parser was not invoked). + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| SC15: Test that certain attributes are saved across inclusions. + 2 2| + 3 3| 1. Maximum input line length. + 4 4| 2. Special character. + 5 5| 3. Local line number. + 6 6| + 7 7| To test this, we first set the first two attributes away from the + 8 8| default. This will enable us to be sure that when they are restored that + 9 9| they are being restored to their former values and not just set to the + 10 10| default. + 11 11| + 12 12| @=* *! Change the special character. + 13 13| *p maximum_input_line_length = 75 + 14 14| + 15 15| Before include. + 16 16| *i sc15a + 17 1| This is the include file for test SC15. The SC15 test checks to make + 18 2| sure that FunnelWeb is saving and restoring three scanning + 19 3| attributes across include files. We also want to make sure + 20 4| that the scanner is initializing these attributes correctly within + 21 5| the include file. + 22 6| + 23 7| SC15.4: Make sure that the special character is AT at the start of + 24 8| include files. + 25 9| + 26 10| @ - This should yield an error. + Error|.^<special><space> is not a legal special sequence. + 27 11| + 28 12| SC15.5 Ensure that the maximum input line length is 80 at the start + 29 13| of an include file. If all is well, only the second of the following two + 30 14| lines will provoke a "line too long" error. + 31 15| + 32 16| 12345678901234567890123456789012345678901234567890123456789012345678901234567890 + 33 17| 123456789012345678901234567890123456789012345678901234567890123456789012345678901 + Error|.................................................................................^Input line is too long (this character is the first offender). + |.................................................................................^Currently, the maximum allowable input line length is 80. + |.................................................................................^Note: You can change this using a pragma directive (@p). + 34 18| + 35 19| Now that we have checked the default attributes on entering an include file, + 36 20| we want to stuff them up so as to make sure that the attributes + 37 21| prevailing when the include was hit are restored. + 38 22| + 39 23| @p maximum_input_line_length = 65 + 40 24| @=+ + 41 25| + 42 17| After include. + 43 18| + 44 19| If the maximum input line length has been correctly restored then the + 45 20| second of the following two lines should give an error, but not the first. + 46 21| 123456789012345678901234567890123456789012345678901234567890123456789012345 + 47 22| 1234567890123456789012345678901234567890123456789012345678901234567890123456 + Error|............................................................................^Input line is too long (this character is the first offender). + |............................................................................^Currently, the maximum allowable input line length is 75. + |............................................................................^Note: You can change this using a pragma directive (@p). + 48 23| + 49 24| If the special character has been preserved, then the following should + 50 25| generate an error. + 51 26| + 52 27| * - This should generate an error if all is well. + Error|.^<special><space> is not a legal special sequence. + 53 28| + 54 29| Preservation of the local line number can be checked by looking at the + 55 30| listing file. + | <End-Of-File> +------------+------------------------------------------------------------------- + +There were 4 Errors. diff --git a/web/funnelAC/answers/sc16.lis b/web/funnelAC/answers/sc16.lis new file mode 100644 index 0000000000..3170ba293f --- /dev/null +++ b/web/funnelAC/answers/sc16.lis @@ -0,0 +1,456 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 31 36 3A 20 54 65 73 74 20 3C 73 70 65 63 | SC16: Test <spec | +| 69 61 6C 3E 5E 20 73 65 71 75 65 6E 63 65 2E 0A | ial>^ sequence.. | +| 0A 31 2E 20 54 65 73 74 20 74 68 61 74 20 61 6C | .1. Test that al | +| 6C 20 62 61 73 65 20 63 68 61 72 61 63 74 65 72 | l base character | +| 73 20 77 6F 72 6B 20 28 69 6E 20 62 6F 74 68 20 | s work (in both | +| 63 61 73 65 73 29 2E 0A 20 20 20 54 68 65 73 65 | cases).. These | +| 20 73 68 6F 75 6C 64 20 70 72 6F 76 6F 6B 65 20 | should provoke | +| 6E 6F 20 65 72 72 6F 72 73 2E 0A 0A 20 20 20 40 | no errors... @ | +| 5E 42 28 30 30 30 30 30 30 30 30 29 20 20 20 40 | ^B(00000000) @ | +| 5E 62 28 30 30 30 30 30 30 30 30 29 0A 20 20 20 | ^b(00000000). | +| 40 5E 4F 28 30 30 30 29 20 20 20 40 5E 6F 28 30 | @^O(000) @^o(0 | +| 30 30 29 0A 20 20 20 40 5E 51 28 30 30 30 29 20 | 00). @^Q(000) | +| 20 20 40 5E 71 28 30 30 30 29 0A 20 20 20 40 5E | @^q(000). @^ | +| 44 28 30 30 30 29 20 20 20 40 5E 64 28 30 30 30 | D(000) @^d(000 | +| 29 0A 20 20 20 40 5E 48 28 30 30 29 20 20 20 20 | ). @^H(00) | +| 40 5E 68 28 30 30 29 0A 20 20 20 40 5E 58 28 30 | @^h(00). @^X(0 | +| 30 29 20 20 20 20 40 5E 78 28 30 30 29 0A 0A 32 | 0) @^x(00)..2 | +| 2E 20 54 65 73 74 20 74 68 61 74 20 73 6F 6D 65 | . Test that some | +| 20 6F 74 68 65 72 20 62 61 73 65 20 63 68 61 72 | other base char | +| 61 63 74 65 72 73 20 67 65 6E 65 72 61 74 65 20 | acters generate | +| 61 6E 20 65 72 72 6F 72 2E 0A 0A 20 20 20 40 5E | an error... @^ | +| 75 28 30 29 0A 20 20 20 40 5E 79 0A 20 20 20 40 | u(0). @^y. @ | +| 5E 23 0A 20 20 20 40 5E 28 0A 0A 33 2E 20 54 65 | ^#. @^(..3. Te | +| 73 74 20 74 68 61 74 20 61 6E 20 65 72 72 6F 72 | st that an error | +| 20 69 73 20 67 65 6E 65 72 61 74 65 64 20 69 66 | is generated if | +| 20 70 61 72 65 6E 74 68 65 73 69 73 20 69 73 20 | parenthesis is | +| 6D 69 73 73 69 6E 67 2E 0A 0A 20 20 20 40 5E 44 | missing... @^D | +| 33 34 29 0A 0A 34 2E 20 54 65 73 74 20 6C 65 67 | 34)..4. Test leg | +| 61 6C 20 64 69 67 69 74 73 20 69 6E 20 65 61 63 | al digits in eac | +| 68 20 62 61 73 65 2E 0A 0A 20 20 20 40 5E 42 28 | h base... @^B( | +| 30 30 30 30 31 31 31 31 29 0A 20 20 20 40 5E 4F | 00001111). @^O | +| 28 30 31 32 29 20 20 40 5E 4F 28 30 33 34 29 20 | (012) @^O(034) | +| 40 5E 4F 28 30 35 36 29 20 40 5E 4F 28 30 37 37 | @^O(056) @^O(077 | +| 29 0A 20 20 20 40 5E 44 28 30 31 32 29 20 20 40 | ). @^D(012) @ | +| 5E 44 28 30 33 34 29 20 40 5E 44 28 30 35 36 29 | ^D(034) @^D(056) | +| 20 40 5E 44 28 30 37 38 29 20 40 5E 44 28 30 39 | @^D(078) @^D(09 | +| 39 29 0A 20 20 20 40 5E 48 28 30 31 29 20 40 5E | 9). @^H(01) @^ | +| 48 28 32 33 29 20 40 5E 48 28 34 35 29 20 40 5E | H(23) @^H(45) @^ | +| 48 28 36 37 29 0A 20 20 20 40 5E 48 28 38 39 29 | H(67). @^H(89) | +| 20 40 5E 48 28 41 42 29 20 40 5E 58 28 43 44 29 | @^H(AB) @^X(CD) | +| 20 40 5E 58 28 45 46 29 20 20 40 5E 78 28 61 66 | @^X(EF) @^x(af | +| 29 0A 0A 35 2E 20 54 65 73 74 20 69 6C 6C 65 67 | )..5. Test illeg | +| 61 6C 20 64 69 67 69 74 73 20 69 6E 20 65 61 63 | al digits in eac | +| 68 20 62 61 73 65 2E 0A 0A 20 20 20 40 5E 42 28 | h base... @^B( | +| 30 30 30 30 30 30 30 32 29 0A 20 20 20 40 5E 4F | 00000002). @^O | +| 28 30 30 38 29 0A 20 20 20 40 5E 44 28 30 30 41 | (008). @^D(00A | +| 29 0A 20 20 20 40 5E 48 28 30 47 29 0A 0A 36 2E | ). @^H(0G)..6. | +| 20 54 65 73 74 20 77 68 61 74 20 68 61 70 70 65 | Test what happe | +| 6E 73 20 69 66 20 74 68 65 72 65 20 61 72 65 20 | ns if there are | +| 74 68 65 20 77 72 6F 6E 67 20 6E 75 6D 62 65 72 | the wrong number | +| 20 6F 66 20 64 69 67 69 74 73 0A 20 20 20 28 74 | of digits. (t | +| 6F 6F 20 66 65 77 2C 20 74 6F 6F 20 6D 61 6E 79 | oo few, too many | +| 29 2E 0A 0A 20 20 20 40 5E 42 28 31 29 0A 20 20 | )... @^B(1). | +| 20 40 5E 4F 28 31 29 0A 20 20 20 40 5E 44 28 31 | @^O(1). @^D(1 | +| 29 0A 20 20 20 40 5E 48 28 31 29 0A 0A 20 20 20 | ). @^H(1).. | +| 40 5E 42 28 30 30 30 30 30 30 30 30 31 29 0A 20 | @^B(000000001). | +| 20 20 40 5E 4F 28 30 30 30 34 29 0A 20 20 20 40 | @^O(0004). @ | +| 5E 44 28 30 30 30 31 29 0A 20 20 20 40 5E 48 28 | ^D(0001). @^H( | +| 30 30 35 29 0A 0A 37 2E 20 54 65 73 74 20 74 68 | 005)..7. Test th | +| 61 74 20 61 6E 20 65 72 72 6F 72 20 69 73 20 67 | at an error is g | +| 65 6E 65 72 61 74 65 64 20 66 6F 72 20 61 20 6D | enerated for a m | +| 69 73 73 69 6E 67 20 63 6C 6F 73 69 6E 67 20 70 | issing closing p | +| 61 72 65 6E 74 68 65 73 69 73 2E 0A 0A 20 20 40 | arenthesis... @ | +| 5E 42 28 30 30 30 30 30 30 30 30 0A 20 20 40 5E | ^B(00000000. @^ | +| 44 28 30 34 35 28 0A 0A 38 2E 20 54 65 73 74 20 | D(045(..8. Test | +| 77 68 61 74 20 68 61 70 70 65 6E 73 20 69 6E 20 | what happens in | +| 6E 75 6D 62 65 72 20 69 73 20 6F 75 74 20 6F 66 | number is out of | +| 20 74 68 65 20 72 61 6E 67 65 20 5B 30 2C 32 35 | the range [0,25 | +| 35 5D 2E 0A 0A 20 20 40 5E 44 28 32 35 35 29 0A | 5]... @^D(255). | +| 20 20 40 5E 44 28 32 35 36 29 0A 20 20 40 5E 44 | @^D(256). @^D | +| 28 39 39 39 29 0A 0A | (999).. | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| SC16: Test <special>^ sequence.<010> +00002 00002| <010> +00003 00003| 1. Test that all base characters work (in both cases).<010> +00004 00004| These should provoke no errors.<010> +00005 00005| <010> +00006 00006| @^B(00000000) @^b(00000000)<010> +00007 00007| @^O(000) @^o(000)<010> +00008 00008| @^Q(000) @^q(000)<010> +00009 00009| @^D(000) @^d(000)<010> +00010 00010| @^H(00) @^h(00)<010> +00011 00011| @^X(00) @^x(00)<010> +00012 00012| <010> +00013 00013| 2. Test that some other base characters generate an error.<010> +00014 00014| <010> +00015 00015| @^u(0)<010> +00016 00016| @^y<010> +00017 00017| @^#<010> +00018 00018| @^(<010> +00019 00019| <010> +00020 00020| 3. Test that an error is generated if parenthesis is missing.<010> +00021 00021| <010> +00022 00022| @^D34)<010> +00023 00023| <010> +00024 00024| 4. Test legal digits in each base.<010> +00025 00025| <010> +00026 00026| @^B(00001111)<010> +00027 00027| @^O(012) @^O(034) @^O(056) @^O(077)<010> +00028 00028| @^D(012) @^D(034) @^D(056) @^D(078) @^D(099)<010> +00029 00029| @^H(01) @^H(23) @^H(45) @^H(67)<010> +00030 00030| @^H(89) @^H(AB) @^X(CD) @^X(EF) @^x(af)<010> +00031 00031| <010> +00032 00032| 5. Test illegal digits in each base.<010> +00033 00033| <010> +00034 00034| @^B(00000002)<010> +00035 00035| @^O(008)<010> +00036 00036| @^D(00A)<010> +00037 00037| @^H(0G)<010> +00038 00038| <010> +00039 00039| 6. Test what happens if there are the wrong number of digits<010> +00040 00040| (too few, too many).<010> +00041 00041| <010> +00042 00042| @^B(1)<010> +00043 00043| @^O(1)<010> +00044 00044| @^D(1)<010> +00045 00045| @^H(1)<010> +00046 00046| <010> +00047 00047| @^B(000000001)<010> +00048 00048| @^O(0004)<010> +00049 00049| @^D(0001)<010> +00050 00050| @^H(005)<010> +00051 00051| <010> +00052 00052| 7. Test that an error is generated for a missing closing parenthesis.<010> +00053 00053| <010> +00054 00054| @^B(00000000<010> +00055 00055| @^D(045(<010> +00056 00056| <010> +00057 00057| 8. Test what happens in number is out of the range [0,255].<010> +00058 00058| <010> +00059 00059| @^D(255)<010> +00060 00060| @^D(256)<010> +00061 00061| @^D(999)<010> +00062 00062| <010> +00063 00063| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 87 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="SC16: Test <special>^ sequence.<010> +<010> +1. Test that all base characters work (in both cases).<010> + These should provoke no errors.<010> +<010> + " +0006[04]: Text. Text scrap[Grey]="<000>" +0006[17]: Text. Text scrap[White]=" " +0006[20]: Text. Text scrap[Grey]="<000>" +0006[33]: Text. Text scrap[White]="<010> + " +0007[04]: Text. Text scrap[Grey]="<000>" +0007[12]: Text. Text scrap[White]=" " +0007[15]: Text. Text scrap[Grey]="<000>" +0007[23]: Text. Text scrap[White]="<010> + " +0008[04]: Text. Text scrap[Grey]="<000>" +0008[12]: Text. Text scrap[White]=" " +0008[15]: Text. Text scrap[Grey]="<000>" +0008[23]: Text. Text scrap[White]="<010> + " +0009[04]: Text. Text scrap[Grey]="<000>" +0009[12]: Text. Text scrap[White]=" " +0009[15]: Text. Text scrap[Grey]="<000>" +0009[23]: Text. Text scrap[White]="<010> + " +0010[04]: Text. Text scrap[Grey]="<000>" +0010[11]: Text. Text scrap[White]=" " +0010[15]: Text. Text scrap[Grey]="<000>" +0010[22]: Text. Text scrap[White]="<010> + " +0011[04]: Text. Text scrap[Grey]="<000>" +0011[11]: Text. Text scrap[White]=" " +0011[15]: Text. Text scrap[Grey]="<000>" +0011[22]: Text. Text scrap[Grey]="<010> +<010> +2. Test that some other base characters generate an error.<010> +<010> + " +0015[07]: Text. Text scrap[Grey]="(0)<010> + " +0016[07]: Text. Text scrap[White]="<010> + " +0017[07]: Text. Text scrap[White]="<010> + " +0018[07]: Text. Text scrap[Grey]="<010> +<010> +3. Test that an error is generated if parenthesis is missing.<010> +<010> + " +0022[08]: Text. Text scrap[Grey]="4)<010> +<010> +4. Test legal digits in each base.<010> +<010> + " +0026[04]: Text. Text scrap[Grey]="<015>" +0026[17]: Text. Text scrap[White]="<010> + " +0027[04]: Text. Text scrap[Grey]="<010> +" +0027[12]: Text. Text scrap[White]=" " +0027[14]: Text. Text scrap[Grey]="<028>" +0027[22]: Text. Text scrap[White]=" " +0027[23]: Text. Text scrap[Grey]="." +0027[31]: Text. Text scrap[White]=" " +0027[32]: Text. Text scrap[Grey]="?" +0027[40]: Text. Text scrap[White]="<010> + " +0028[04]: Text. Text scrap[Grey]="<012>" +0028[12]: Text. Text scrap[White]=" " +0028[14]: Text. Text scrap[Grey]=""" +0028[22]: Text. Text scrap[White]=" " +0028[23]: Text. Text scrap[Grey]="8" +0028[31]: Text. Text scrap[White]=" " +0028[32]: Text. Text scrap[Grey]="N" +0028[40]: Text. Text scrap[White]=" " +0028[41]: Text. Text scrap[Grey]="c" +0028[49]: Text. Text scrap[White]="<010> + " +0029[04]: Text. Text scrap[Grey]="<001>" +0029[11]: Text. Text scrap[White]=" " +0029[12]: Text. Text scrap[Grey]="#" +0029[19]: Text. Text scrap[White]=" " +0029[20]: Text. Text scrap[Grey]="E" +0029[27]: Text. Text scrap[White]=" " +0029[28]: Text. Text scrap[Grey]="g" +0029[35]: Text. Text scrap[White]="<010> + " +0030[04]: Text. Text scrap[Grey]="<137>" +0030[11]: Text. Text scrap[White]=" " +0030[12]: Text. Text scrap[Grey]="<171>" +0030[19]: Text. Text scrap[White]=" " +0030[20]: Text. Text scrap[Grey]="<205>" +0030[27]: Text. Text scrap[White]=" " +0030[28]: Text. Text scrap[Grey]="<239>" +0030[35]: Text. Text scrap[White]=" " +0030[37]: Text. Text scrap[Grey]="<175>" +0030[44]: Text. Text scrap[Grey]="<010> +<010> +5. Test illegal digits in each base.<010> +<010> + " +0034[16]: Text. Text scrap[Grey]=")<010> + " +0035[11]: Text. Text scrap[Grey]=")<010> + " +0036[11]: Text. Text scrap[Grey]=")<010> + " +0037[10]: Text. Text scrap[Grey]=")<010> +<010> +6. Test what happens if there are the wrong number of digits<010> + (too few, too many).<010> +<010> + " +0042[10]: Text. Text scrap[White]="<010> + " +0043[10]: Text. Text scrap[White]="<010> + " +0044[10]: Text. Text scrap[White]="<010> + " +0045[10]: Text. Text scrap[White]="<010> +<010> + " +0047[17]: Text. Text scrap[Grey]=")<010> + " +0048[12]: Text. Text scrap[Grey]=")<010> + " +0049[12]: Text. Text scrap[Grey]=")<010> + " +0050[11]: Text. Text scrap[Grey]=")<010> +<010> +7. Test that an error is generated for a missing closing parenthesis.<010> +<010> + " +0055[01]: Text. Text scrap[White]=" " +0055[11]: Text. Text scrap[Grey]="<010> +<010> +8. Test what happens in number is out of the range [0,255].<010> +<010> + " +0059[03]: Text. Text scrap[Grey]="<255>" +0059[11]: Text. Text scrap[White]="<010> + " +0060[11]: Text. Text scrap[White]="<010> + " +0061[11]: Text. Text scrap[White]="<010> +<010> +" +0063[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + +Macro table dump skipped (Parser was not invoked). +Document list dump skipped (Parser was not invoked). + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| SC16: Test <special>^ sequence. + 2 2| + 3 3| 1. Test that all base characters work (in both cases). + 4 4| These should provoke no errors. + 5 5| + 6 6| @^B(00000000) @^b(00000000) + 7 7| @^O(000) @^o(000) + 8 8| @^Q(000) @^q(000) + 9 9| @^D(000) @^d(000) + 10 10| @^H(00) @^h(00) + 11 11| @^X(00) @^x(00) + 12 12| + 13 13| 2. Test that some other base characters generate an error. + 14 14| + 15 15| @^u(0) + Error|......^Expecting one of 'B', 'Q', 'D', 'H'. + |......^(For Binary, Octal, Decimal, and Hexadecimal). + |......^A decimal character representation takes the form "@^D(ddd)". + |......^(exactly 3 digits) where each digit d is in the range 0..9. + 16 16| @^y + Error|......^Expecting one of 'B', 'Q', 'D', 'H'. + |......^(For Binary, Octal, Decimal, and Hexadecimal). + |......^A decimal character representation takes the form "@^D(ddd)". + |......^(exactly 3 digits) where each digit d is in the range 0..9. + 17 17| @^# + Error|......^Expecting one of 'B', 'Q', 'D', 'H'. + |......^(For Binary, Octal, Decimal, and Hexadecimal). + |......^A decimal character representation takes the form "@^D(ddd)". + |......^(exactly 3 digits) where each digit d is in the range 0..9. + 18 18| @^( + Error|......^Expecting one of 'B', 'Q', 'D', 'H'. + |......^(For Binary, Octal, Decimal, and Hexadecimal). + |......^A decimal character representation takes the form "@^D(ddd)". + |......^(exactly 3 digits) where each digit d is in the range 0..9. + 19 19| + 20 20| 3. Test that an error is generated if parenthesis is missing. + 21 21| + 22 22| @^D34) + Error|.......^Expecting '('. + |.......^A decimal character representation takes the form "@^D(ddd)". + |.......^(exactly 3 digits) where each digit d is in the range 0..9. + 23 23| + 24 24| 4. Test legal digits in each base. + 25 25| + 26 26| @^B(00001111) + 27 27| @^O(012) @^O(034) @^O(056) @^O(077) + 28 28| @^D(012) @^D(034) @^D(056) @^D(078) @^D(099) + 29 29| @^H(01) @^H(23) @^H(45) @^H(67) + 30 30| @^H(89) @^H(AB) @^X(CD) @^X(EF) @^x(af) + 31 31| + 32 32| 5. Test illegal digits in each base. + 33 33| + 34 34| @^B(00000002) + Error|...............^Illegal digit. + |...............^A binary character representation takes the form "@^B(dddddddd)". + |...............^(exactly 8 digits) where each digit d is either 0 or 1. + 35 35| @^O(008) + Error|..........^Illegal digit. + |..........^An octal character representation takes the form "@^Q(ddd)" (or "@^O(ddd)"). + |..........^(exactly 3 digits) where each digit d is in the range 0..7. + 36 36| @^D(00A) + Error|..........^Illegal digit. + |..........^A decimal character representation takes the form "@^D(ddd)". + |..........^(exactly 3 digits) where each digit d is in the range 0..9. + 37 37| @^H(0G) + Error|.........^Illegal digit. + |.........^A hexadecimal character representation takes the form "@^X(dd)" (or "@^H(dd)"). + |.........^(exactly 2 digits) where each digit d is in the range 0..9,A..F. + 38 38| + 39 39| 6. Test what happens if there are the wrong number of digits + 40 40| (too few, too many). + 41 41| + 42 42| @^B(1) + Error|.........^Illegal digit. + |.........^A binary character representation takes the form "@^B(dddddddd)". + |.........^(exactly 8 digits) where each digit d is either 0 or 1. + 43 43| @^O(1) + Error|.........^Illegal digit. + |.........^An octal character representation takes the form "@^Q(ddd)" (or "@^O(ddd)"). + |.........^(exactly 3 digits) where each digit d is in the range 0..7. + 44 44| @^D(1) + Error|.........^Illegal digit. + |.........^A decimal character representation takes the form "@^D(ddd)". + |.........^(exactly 3 digits) where each digit d is in the range 0..9. + 45 45| @^H(1) + Error|.........^Illegal digit. + |.........^A hexadecimal character representation takes the form "@^X(dd)" (or "@^H(dd)"). + |.........^(exactly 2 digits) where each digit d is in the range 0..9,A..F. + 46 46| + 47 47| @^B(000000001) + Error|................^Expecting ')'. + |................^A binary character representation takes the form "@^B(dddddddd)". + |................^(exactly 8 digits) where each digit d is either 0 or 1. + 48 48| @^O(0004) + Error|...........^Expecting ')'. + |...........^An octal character representation takes the form "@^Q(ddd)" (or "@^O(ddd)"). + |...........^(exactly 3 digits) where each digit d is in the range 0..7. + 49 49| @^D(0001) + Error|...........^Expecting ')'. + |...........^A decimal character representation takes the form "@^D(ddd)". + |...........^(exactly 3 digits) where each digit d is in the range 0..9. + 50 50| @^H(005) + Error|..........^Expecting ')'. + |..........^A hexadecimal character representation takes the form "@^X(dd)" (or "@^H(dd)"). + |..........^(exactly 2 digits) where each digit d is in the range 0..9,A..F. + 51 51| + 52 52| 7. Test that an error is generated for a missing closing parenthesis. + 53 53| + 54 54| @^B(00000000 + Error|...............^Expecting ')'. + |...............^A binary character representation takes the form "@^B(dddddddd)". + |...............^(exactly 8 digits) where each digit d is either 0 or 1. + 55 55| @^D(045( + Error|..........^Expecting ')'. + |..........^A decimal character representation takes the form "@^D(ddd)". + |..........^(exactly 3 digits) where each digit d is in the range 0..9. + 56 56| + 57 57| 8. Test what happens in number is out of the range [0,255]. + 58 58| + 59 59| @^D(255) + 60 60| @^D(256) + Error|..........^Character number is too large. + |..........^Character number must be in the range [0,255] (decimal). + |..........^A decimal character representation takes the form "@^D(ddd)". + |..........^(exactly 3 digits) where each digit d is in the range 0..9. + 61 61| @^D(999) + Error|..........^Character number is too large. + |..........^Character number must be in the range [0,255] (decimal). + |..........^A decimal character representation takes the form "@^D(ddd)". + |..........^(exactly 3 digits) where each digit d is in the range 0..9. + 62 62| + | <End-Of-File> +------------+------------------------------------------------------------------- + +There were 21 Errors. diff --git a/web/funnelAC/answers/sc17.lis b/web/funnelAC/answers/sc17.lis new file mode 100644 index 0000000000..e23bf05b1d --- /dev/null +++ b/web/funnelAC/answers/sc17.lis @@ -0,0 +1,352 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 31 37 3A 20 54 65 73 74 20 3C 73 70 65 63 | SC17: Test <spec | +| 69 61 6C 3E 23 2E 0A 0A 46 69 72 73 74 20 77 65 | ial>#...First we | +| 20 74 72 69 70 20 75 70 20 74 68 65 20 73 63 61 | trip up the sca | +| 6E 6E 65 72 20 73 6F 20 6E 6F 20 66 75 72 74 68 | nner so no furth | +| 65 72 20 70 61 73 73 65 73 20 74 61 6B 65 20 70 | er passes take p | +| 6C 61 63 65 2E 0A 0A 40 0A 0A 31 2E 20 54 65 73 | lace...@..1. Tes | +| 74 20 77 69 74 68 20 61 6C 6C 20 70 6F 73 73 69 | t with all possi | +| 62 6C 65 20 70 72 69 6E 74 61 62 6C 65 20 63 68 | ble printable ch | +| 61 72 61 63 74 65 72 73 2E 0A 0A 40 23 21 20 40 | aracters...@#! @ | +| 23 22 20 40 23 23 20 40 23 24 20 40 23 25 20 40 | #" @## @#$ @#% @ | +| 23 26 20 40 23 27 20 40 23 28 20 40 23 29 20 40 | #& @#' @#( @#) @ | +| 23 2A 20 40 23 2B 20 40 23 2C 20 40 23 2D 20 40 | #* @#+ @#, @#- @ | +| 23 2E 20 40 23 2F 0A 40 23 30 20 40 23 31 20 40 | #. @#/.@#0 @#1 @ | +| 23 32 20 40 23 33 20 40 23 34 20 40 23 35 20 40 | #2 @#3 @#4 @#5 @ | +| 23 36 20 40 23 37 20 40 23 38 20 40 23 39 20 40 | #6 @#7 @#8 @#9 @ | +| 23 3A 20 40 23 3B 20 40 23 3C 20 40 23 3D 20 40 | #: @#; @#< @#= @ | +| 23 3E 0A 40 23 3F 20 40 23 40 20 40 23 41 20 40 | #>.@#? @#@ @#A @ | +| 23 42 20 40 23 43 20 40 23 44 20 40 23 45 20 40 | #B @#C @#D @#E @ | +| 23 46 20 40 23 47 20 40 23 48 20 40 23 49 20 40 | #F @#G @#H @#I @ | +| 23 4A 20 40 23 4B 20 40 23 4C 20 40 23 4D 0A 40 | #J @#K @#L @#M.@ | +| 23 4E 20 40 23 4F 20 40 23 50 20 40 23 51 20 40 | #N @#O @#P @#Q @ | +| 23 52 20 40 23 53 20 40 23 54 20 40 23 55 20 40 | #R @#S @#T @#U @ | +| 23 56 20 40 23 57 20 40 23 58 20 40 23 59 20 40 | #V @#W @#X @#Y @ | +| 23 5A 20 40 23 5B 20 40 23 5C 0A 40 23 5D 20 40 | #Z @#[ @#\.@#] @ | +| 23 5E 20 40 23 5F 20 40 23 60 20 40 23 61 20 40 | #^ @#_ @#` @#a @ | +| 23 62 20 40 23 63 20 40 23 64 20 40 23 65 20 40 | #b @#c @#d @#e @ | +| 23 66 20 40 23 67 20 40 23 68 20 40 23 69 20 40 | #f @#g @#h @#i @ | +| 23 6A 20 40 23 6B 0A 40 23 6C 20 40 23 6D 20 40 | #j @#k.@#l @#m @ | +| 23 6E 20 40 23 6F 20 40 23 70 20 40 23 71 20 40 | #n @#o @#p @#q @ | +| 23 72 20 40 23 73 20 40 23 74 20 40 23 75 20 40 | #r @#s @#t @#u @ | +| 23 76 20 40 23 77 20 40 23 78 20 40 23 79 20 40 | #v @#w @#x @#y @ | +| 23 7A 0A 40 23 7B 20 40 23 7C 20 40 23 7D 20 40 | #z.@#{ @#| @#} @ | +| 23 7E 0A 0A 32 2E 20 54 65 73 74 20 74 68 61 74 | #~..2. Test that | +| 20 3C 73 70 65 63 69 61 6C 3E 23 3C 73 70 61 63 | <special>#<spac | +| 65 3E 20 69 73 20 66 6C 61 67 67 65 64 20 61 73 | e> is flagged as | +| 20 61 6E 20 65 72 72 6F 72 2E 0A 0A 20 20 20 40 | an error... @ | +| 23 20 20 20 20 20 40 21 20 53 68 6F 75 6C 64 20 | # @! Should | +| 62 65 20 66 6C 61 67 67 65 64 20 61 73 20 61 6E | be flagged as an | +| 20 65 72 72 6F 72 2E 0A 0A 33 2E 20 54 65 73 74 | error...3. Test | +| 20 74 68 61 74 20 3C 73 70 65 63 69 61 6C 3E 23 | that <special># | +| 45 4F 4C 20 69 73 20 66 6C 61 67 67 65 64 20 61 | EOL is flagged a | +| 73 20 61 6E 20 65 72 72 6F 72 2E 0A 0A 20 20 20 | s an error... | +| 40 23 0A 0A | @#.. | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| SC17: Test <special>#.<010> +00002 00002| <010> +00003 00003| First we trip up the scanner so no further passes take place.<010> +00004 00004| <010> +00005 00005| @<010> +00006 00006| <010> +00007 00007| 1. Test with all possible printable characters.<010> +00008 00008| <010> +00009 00009| @#! @#" @## @#$ @#% @#& @#' @#( @#) @#* @#+ @#, @#- @#. @#/<010> +00010 00010| @#0 @#1 @#2 @#3 @#4 @#5 @#6 @#7 @#8 @#9 @#: @#; @#< @#= @#><010> +00011 00011| @#? @#@ @#A @#B @#C @#D @#E @#F @#G @#H @#I @#J @#K @#L @#M<010> +00012 00012| @#N @#O @#P @#Q @#R @#S @#T @#U @#V @#W @#X @#Y @#Z @#[ @#\<010> +00013 00013| @#] @#^ @#_ @#` @#a @#b @#c @#d @#e @#f @#g @#h @#i @#j @#k<010> +00014 00014| @#l @#m @#n @#o @#p @#q @#r @#s @#t @#u @#v @#w @#x @#y @#z<010> +00015 00015| @#{ @#| @#} @#~<010> +00016 00016| <010> +00017 00017| 2. Test that <special>#<space> is flagged as an error.<010> +00018 00018| <010> +00019 00019| @# @! Should be flagged as an error.<010> +00020 00020| <010> +00021 00021| 3. Test that <special>#EOL is flagged as an error.<010> +00022 00022| <010> +00023 00023| @#<010> +00024 00024| <010> +00025 00025| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 194 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="SC17: Test <special>#.<010> +<010> +First we trip up the scanner so no further passes take place.<010> +<010> +" +0006[01]: Text. Text scrap[Grey]="<010> +1. Test with all possible printable characters.<010> +<010> +" +0009[01]: @# Name. Character='!'. +0009[04]: Text. Text scrap[White]=" " +0009[05]: @# Name. Character='"'. +0009[08]: Text. Text scrap[White]=" " +0009[09]: @# Name. Character='#'. +0009[12]: Text. Text scrap[White]=" " +0009[13]: @# Name. Character='$'. +0009[16]: Text. Text scrap[White]=" " +0009[17]: @# Name. Character='%'. +0009[20]: Text. Text scrap[White]=" " +0009[21]: @# Name. Character='&'. +0009[24]: Text. Text scrap[White]=" " +0009[25]: @# Name. Character='''. +0009[28]: Text. Text scrap[White]=" " +0009[29]: @# Name. Character='('. +0009[32]: Text. Text scrap[White]=" " +0009[33]: @# Name. Character=')'. +0009[36]: Text. Text scrap[White]=" " +0009[37]: @# Name. Character='*'. +0009[40]: Text. Text scrap[White]=" " +0009[41]: @# Name. Character='+'. +0009[44]: Text. Text scrap[White]=" " +0009[45]: @# Name. Character=','. +0009[48]: Text. Text scrap[White]=" " +0009[49]: @# Name. Character='-'. +0009[52]: Text. Text scrap[White]=" " +0009[53]: @# Name. Character='.'. +0009[56]: Text. Text scrap[White]=" " +0009[57]: @# Name. Character='/'. +0009[60]: Text. Text scrap[White]="<010> +" +0010[01]: @# Name. Character='0'. +0010[04]: Text. Text scrap[White]=" " +0010[05]: @# Name. Character='1'. +0010[08]: Text. Text scrap[White]=" " +0010[09]: @# Name. Character='2'. +0010[12]: Text. Text scrap[White]=" " +0010[13]: @# Name. Character='3'. +0010[16]: Text. Text scrap[White]=" " +0010[17]: @# Name. Character='4'. +0010[20]: Text. Text scrap[White]=" " +0010[21]: @# Name. Character='5'. +0010[24]: Text. Text scrap[White]=" " +0010[25]: @# Name. Character='6'. +0010[28]: Text. Text scrap[White]=" " +0010[29]: @# Name. Character='7'. +0010[32]: Text. Text scrap[White]=" " +0010[33]: @# Name. Character='8'. +0010[36]: Text. Text scrap[White]=" " +0010[37]: @# Name. Character='9'. +0010[40]: Text. Text scrap[White]=" " +0010[41]: @# Name. Character=':'. +0010[44]: Text. Text scrap[White]=" " +0010[45]: @# Name. Character=';'. +0010[48]: Text. Text scrap[White]=" " +0010[49]: @# Name. Character='<'. +0010[52]: Text. Text scrap[White]=" " +0010[53]: @# Name. Character='='. +0010[56]: Text. Text scrap[White]=" " +0010[57]: @# Name. Character='>'. +0010[60]: Text. Text scrap[White]="<010> +" +0011[01]: @# Name. Character='?'. +0011[04]: Text. Text scrap[White]=" " +0011[05]: @# Name. Character='@'. +0011[08]: Text. Text scrap[White]=" " +0011[09]: @# Name. Character='A'. +0011[12]: Text. Text scrap[White]=" " +0011[13]: @# Name. Character='B'. +0011[16]: Text. Text scrap[White]=" " +0011[17]: @# Name. Character='C'. +0011[20]: Text. Text scrap[White]=" " +0011[21]: @# Name. Character='D'. +0011[24]: Text. Text scrap[White]=" " +0011[25]: @# Name. Character='E'. +0011[28]: Text. Text scrap[White]=" " +0011[29]: @# Name. Character='F'. +0011[32]: Text. Text scrap[White]=" " +0011[33]: @# Name. Character='G'. +0011[36]: Text. Text scrap[White]=" " +0011[37]: @# Name. Character='H'. +0011[40]: Text. Text scrap[White]=" " +0011[41]: @# Name. Character='I'. +0011[44]: Text. Text scrap[White]=" " +0011[45]: @# Name. Character='J'. +0011[48]: Text. Text scrap[White]=" " +0011[49]: @# Name. Character='K'. +0011[52]: Text. Text scrap[White]=" " +0011[53]: @# Name. Character='L'. +0011[56]: Text. Text scrap[White]=" " +0011[57]: @# Name. Character='M'. +0011[60]: Text. Text scrap[White]="<010> +" +0012[01]: @# Name. Character='N'. +0012[04]: Text. Text scrap[White]=" " +0012[05]: @# Name. Character='O'. +0012[08]: Text. Text scrap[White]=" " +0012[09]: @# Name. Character='P'. +0012[12]: Text. Text scrap[White]=" " +0012[13]: @# Name. Character='Q'. +0012[16]: Text. Text scrap[White]=" " +0012[17]: @# Name. Character='R'. +0012[20]: Text. Text scrap[White]=" " +0012[21]: @# Name. Character='S'. +0012[24]: Text. Text scrap[White]=" " +0012[25]: @# Name. Character='T'. +0012[28]: Text. Text scrap[White]=" " +0012[29]: @# Name. Character='U'. +0012[32]: Text. Text scrap[White]=" " +0012[33]: @# Name. Character='V'. +0012[36]: Text. Text scrap[White]=" " +0012[37]: @# Name. Character='W'. +0012[40]: Text. Text scrap[White]=" " +0012[41]: @# Name. Character='X'. +0012[44]: Text. Text scrap[White]=" " +0012[45]: @# Name. Character='Y'. +0012[48]: Text. Text scrap[White]=" " +0012[49]: @# Name. Character='Z'. +0012[52]: Text. Text scrap[White]=" " +0012[53]: @# Name. Character='['. +0012[56]: Text. Text scrap[White]=" " +0012[57]: @# Name. Character='\'. +0012[60]: Text. Text scrap[White]="<010> +" +0013[01]: @# Name. Character=']'. +0013[04]: Text. Text scrap[White]=" " +0013[05]: @# Name. Character='^'. +0013[08]: Text. Text scrap[White]=" " +0013[09]: @# Name. Character='_'. +0013[12]: Text. Text scrap[White]=" " +0013[13]: @# Name. Character='`'. +0013[16]: Text. Text scrap[White]=" " +0013[17]: @# Name. Character='a'. +0013[20]: Text. Text scrap[White]=" " +0013[21]: @# Name. Character='b'. +0013[24]: Text. Text scrap[White]=" " +0013[25]: @# Name. Character='c'. +0013[28]: Text. Text scrap[White]=" " +0013[29]: @# Name. Character='d'. +0013[32]: Text. Text scrap[White]=" " +0013[33]: @# Name. Character='e'. +0013[36]: Text. Text scrap[White]=" " +0013[37]: @# Name. Character='f'. +0013[40]: Text. Text scrap[White]=" " +0013[41]: @# Name. Character='g'. +0013[44]: Text. Text scrap[White]=" " +0013[45]: @# Name. Character='h'. +0013[48]: Text. Text scrap[White]=" " +0013[49]: @# Name. Character='i'. +0013[52]: Text. Text scrap[White]=" " +0013[53]: @# Name. Character='j'. +0013[56]: Text. Text scrap[White]=" " +0013[57]: @# Name. Character='k'. +0013[60]: Text. Text scrap[White]="<010> +" +0014[01]: @# Name. Character='l'. +0014[04]: Text. Text scrap[White]=" " +0014[05]: @# Name. Character='m'. +0014[08]: Text. Text scrap[White]=" " +0014[09]: @# Name. Character='n'. +0014[12]: Text. Text scrap[White]=" " +0014[13]: @# Name. Character='o'. +0014[16]: Text. Text scrap[White]=" " +0014[17]: @# Name. Character='p'. +0014[20]: Text. Text scrap[White]=" " +0014[21]: @# Name. Character='q'. +0014[24]: Text. Text scrap[White]=" " +0014[25]: @# Name. Character='r'. +0014[28]: Text. Text scrap[White]=" " +0014[29]: @# Name. Character='s'. +0014[32]: Text. Text scrap[White]=" " +0014[33]: @# Name. Character='t'. +0014[36]: Text. Text scrap[White]=" " +0014[37]: @# Name. Character='u'. +0014[40]: Text. Text scrap[White]=" " +0014[41]: @# Name. Character='v'. +0014[44]: Text. Text scrap[White]=" " +0014[45]: @# Name. Character='w'. +0014[48]: Text. Text scrap[White]=" " +0014[49]: @# Name. Character='x'. +0014[52]: Text. Text scrap[White]=" " +0014[53]: @# Name. Character='y'. +0014[56]: Text. Text scrap[White]=" " +0014[57]: @# Name. Character='z'. +0014[60]: Text. Text scrap[White]="<010> +" +0015[01]: @# Name. Character='{'. +0015[04]: Text. Text scrap[White]=" " +0015[05]: @# Name. Character='|'. +0015[08]: Text. Text scrap[White]=" " +0015[09]: @# Name. Character='}'. +0015[12]: Text. Text scrap[White]=" " +0015[13]: @# Name. Character='~'. +0015[16]: Text. Text scrap[Grey]="<010> +<010> +2. Test that <special>#<space> is flagged as an error.<010> +<010> + " +0019[07]: Text. Text scrap[White]=" " +0020[01]: Text. Text scrap[Grey]="<010> +3. Test that <special>#EOL is flagged as an error.<010> +<010> + " +0024[01]: Text. Text scrap[White]="<010> +" +0025[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + +Macro table dump skipped (Parser was not invoked). +Document list dump skipped (Parser was not invoked). + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| SC17: Test <special>#. + 2 2| + 3 3| First we trip up the scanner so no further passes take place. + 4 4| + 5 5| @ + Error|.^<special><endofline> is not a legal special sequence. + 6 6| + 7 7| 1. Test with all possible printable characters. + 8 8| + 9 9| @#! @#" @## @#$ @#% @#& @#' @#( @#) @#* @#+ @#, @#- @#. @#/ + 10 10| @#0 @#1 @#2 @#3 @#4 @#5 @#6 @#7 @#8 @#9 @#: @#; @#< @#= @#> + 11 11| @#? @#@ @#A @#B @#C @#D @#E @#F @#G @#H @#I @#J @#K @#L @#M + 12 12| @#N @#O @#P @#Q @#R @#S @#T @#U @#V @#W @#X @#Y @#Z @#[ @#\ + 13 13| @#] @#^ @#_ @#` @#a @#b @#c @#d @#e @#f @#g @#h @#i @#j @#k + 14 14| @#l @#m @#n @#o @#p @#q @#r @#s @#t @#u @#v @#w @#x @#y @#z + 15 15| @#{ @#| @#} @#~ + 16 16| + 17 17| 2. Test that <special>#<space> is flagged as an error. + 18 18| + 19 19| @# @! Should be flagged as an error. + Error|......^Expecting a printable character. + 20 20| + 21 21| 3. Test that <special>#EOL is flagged as an error. + 22 22| + 23 23| @# + Error|......^Expecting a printable character. + 24 24| + | <End-Of-File> +------------+------------------------------------------------------------------- + +There were 3 Errors. diff --git a/web/funnelAC/answers/sc18.lis b/web/funnelAC/answers/sc18.lis new file mode 100644 index 0000000000..1442d3938d --- /dev/null +++ b/web/funnelAC/answers/sc18.lis @@ -0,0 +1,261 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 31 38 3A 20 54 65 73 74 20 3C 73 70 65 63 | SC18: Test <spec | +| 69 61 6C 3E 23 3D 0A 0A 46 69 72 73 74 20 77 65 | ial>#=..First we | +| 20 74 72 69 70 20 75 70 20 74 68 65 20 73 63 61 | trip up the sca | +| 6E 6E 65 72 20 73 6F 20 6E 6F 20 66 75 72 74 68 | nner so no furth | +| 65 72 20 70 61 73 73 65 73 20 74 61 6B 65 20 70 | er passes take p | +| 6C 61 63 65 2E 0A 0A 40 0A 0A 31 2E 20 54 65 73 | lace...@..1. Tes | +| 74 20 77 69 74 68 20 61 6C 6C 20 70 6F 73 73 69 | t with all possi | +| 62 6C 65 20 70 72 69 6E 74 61 62 6C 65 20 63 68 | ble printable ch | +| 61 72 61 63 74 65 72 73 2E 0A 0A 40 3D 21 20 21 | aracters...@=! ! | +| 3D 22 20 22 3D 23 20 23 3D 24 20 24 3D 25 20 25 | =" "=# #=$ $=% % | +| 3D 26 20 26 3D 27 20 27 3D 28 20 28 3D 29 20 29 | =& &=' '=( (=) ) | +| 3D 2A 20 2A 3D 2B 20 2B 3D 2C 20 2C 3D 2D 20 2D | =* *=+ +=, ,=- - | +| 3D 2E 20 2E 3D 2F 0A 2F 3D 30 20 30 3D 31 20 31 | =. .=/./=0 0=1 1 | +| 3D 32 20 32 3D 33 20 33 3D 34 20 34 3D 35 20 35 | =2 2=3 3=4 4=5 5 | +| 3D 36 20 36 3D 37 20 37 3D 38 20 38 3D 39 20 39 | =6 6=7 7=8 8=9 9 | +| 3D 3A 20 3A 3D 3B 20 3B 3D 3C 20 3C 3D 3D 20 3D | =: :=; ;=< <== = | +| 3D 3E 0A 3E 3D 3F 20 3F 3D 40 20 40 3D 41 20 41 | =>.>=? ?=@ @=A A | +| 3D 42 20 42 3D 43 20 43 3D 44 20 44 3D 45 20 45 | =B B=C C=D D=E E | +| 3D 46 20 46 3D 47 20 47 3D 48 20 48 3D 49 20 49 | =F F=G G=H H=I I | +| 3D 4A 20 4A 3D 4B 20 4B 3D 4C 20 4C 3D 4D 0A 4D | =J J=K K=L L=M.M | +| 3D 4E 20 4E 3D 4F 20 4F 3D 50 20 50 3D 51 20 51 | =N N=O O=P P=Q Q | +| 3D 52 20 52 3D 53 20 53 3D 54 20 54 3D 55 20 55 | =R R=S S=T T=U U | +| 3D 56 20 56 3D 57 20 57 3D 58 20 58 3D 59 20 59 | =V V=W W=X X=Y Y | +| 3D 5A 20 5A 3D 5B 20 5B 3D 5C 0A 5C 3D 5D 20 5D | =Z Z=[ [=\.\=] ] | +| 3D 5E 20 5E 3D 5F 20 5F 3D 60 20 60 3D 61 20 61 | =^ ^=_ _=` `=a a | +| 3D 62 20 62 3D 63 20 63 3D 64 20 64 3D 65 20 65 | =b b=c c=d d=e e | +| 3D 66 20 66 3D 67 20 67 3D 68 20 68 3D 69 20 69 | =f f=g g=h h=i i | +| 3D 6A 20 6A 3D 6B 0A 6B 3D 6C 20 6C 3D 6D 20 6D | =j j=k.k=l l=m m | +| 3D 6E 20 6E 3D 6F 20 6F 3D 70 20 70 3D 71 20 71 | =n n=o o=p p=q q | +| 3D 72 20 72 3D 73 20 73 3D 74 20 74 3D 75 20 75 | =r r=s s=t t=u u | +| 3D 76 20 76 3D 77 20 77 3D 78 20 78 3D 79 20 79 | =v v=w w=x x=y y | +| 3D 7A 0A 7A 3D 7B 20 7B 3D 7C 20 7C 3D 7D 20 7D | =z.z={ {=| |=} } | +| 3D 7E 20 7E 3D 40 0A 0A 32 2E 20 54 65 73 74 20 | =~ ~=@..2. Test | +| 74 68 61 74 20 3C 73 70 65 63 69 61 6C 3E 3D 3C | that <special>=< | +| 73 70 61 63 65 3E 20 69 73 20 66 6C 61 67 67 65 | space> is flagge | +| 64 20 61 73 20 61 6E 20 65 72 72 6F 72 2E 0A 0A | d as an error... | +| 20 20 20 40 3D 20 20 20 20 20 40 21 20 53 68 6F | @= @! Sho | +| 75 6C 64 20 62 65 20 66 6C 61 67 67 65 64 20 61 | uld be flagged a | +| 73 20 61 6E 20 65 72 72 6F 72 2E 0A 0A 33 2E 20 | s an error...3. | +| 54 65 73 74 20 74 68 61 74 20 3C 73 70 65 63 69 | Test that <speci | +| 61 6C 3E 3D 45 4F 4C 20 69 73 20 66 6C 61 67 67 | al>=EOL is flagg | +| 65 64 20 61 73 20 61 6E 20 65 72 72 6F 72 2E 0A | ed as an error.. | +| 0A 20 20 20 40 3D 0A 0A | . @=.. | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| SC18: Test <special>#=<010> +00002 00002| <010> +00003 00003| First we trip up the scanner so no further passes take place.<010> +00004 00004| <010> +00005 00005| @<010> +00006 00006| <010> +00007 00007| 1. Test with all possible printable characters.<010> +00008 00008| <010> +00009 00009| @=! !=" "=# #=$ $=% %=& &=' '=( (=) )=* *=+ +=, ,=- -=. .=/<010> +00010 00010| /=0 0=1 1=2 2=3 3=4 4=5 5=6 6=7 7=8 8=9 9=: :=; ;=< <== ==><010> +00011 00011| >=? ?=@ @=A A=B B=C C=D D=E E=F F=G G=H H=I I=J J=K K=L L=M<010> +00012 00012| M=N N=O O=P P=Q Q=R R=S S=T T=U U=V V=W W=X X=Y Y=Z Z=[ [=\<010> +00013 00013| \=] ]=^ ^=_ _=` `=a a=b b=c c=d d=e e=f f=g g=h h=i i=j j=k<010> +00014 00014| k=l l=m m=n n=o o=p p=q q=r r=s s=t t=u u=v v=w w=x x=y y=z<010> +00015 00015| z={ {=| |=} }=~ ~=@<010> +00016 00016| <010> +00017 00017| 2. Test that <special>=<space> is flagged as an error.<010> +00018 00018| <010> +00019 00019| @= @! Should be flagged as an error.<010> +00020 00020| <010> +00021 00021| 3. Test that <special>=EOL is flagged as an error.<010> +00022 00022| <010> +00023 00023| @=<010> +00024 00024| <010> +00025 00025| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 101 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="SC18: Test <special>#=<010> +<010> +First we trip up the scanner so no further passes take place.<010> +<010> +" +0006[01]: Text. Text scrap[Grey]="<010> +1. Test with all possible printable characters.<010> +<010> +" +0009[04]: Text. Text scrap[White]=" " +0009[08]: Text. Text scrap[White]=" " +0009[12]: Text. Text scrap[White]=" " +0009[16]: Text. Text scrap[White]=" " +0009[20]: Text. Text scrap[White]=" " +0009[24]: Text. Text scrap[White]=" " +0009[28]: Text. Text scrap[White]=" " +0009[32]: Text. Text scrap[White]=" " +0009[36]: Text. Text scrap[White]=" " +0009[40]: Text. Text scrap[White]=" " +0009[44]: Text. Text scrap[White]=" " +0009[48]: Text. Text scrap[White]=" " +0009[52]: Text. Text scrap[White]=" " +0009[56]: Text. Text scrap[White]=" " +0009[60]: Text. Text scrap[White]="<010> +" +0010[04]: Text. Text scrap[White]=" " +0010[08]: Text. Text scrap[White]=" " +0010[12]: Text. Text scrap[White]=" " +0010[16]: Text. Text scrap[White]=" " +0010[20]: Text. Text scrap[White]=" " +0010[24]: Text. Text scrap[White]=" " +0010[28]: Text. Text scrap[White]=" " +0010[32]: Text. Text scrap[White]=" " +0010[36]: Text. Text scrap[White]=" " +0010[40]: Text. Text scrap[White]=" " +0010[44]: Text. Text scrap[White]=" " +0010[48]: Text. Text scrap[White]=" " +0010[52]: Text. Text scrap[White]=" " +0010[56]: Text. Text scrap[White]=" " +0010[60]: Text. Text scrap[White]="<010> +" +0011[04]: Text. Text scrap[White]=" " +0011[08]: Text. Text scrap[White]=" " +0011[12]: Text. Text scrap[White]=" " +0011[16]: Text. Text scrap[White]=" " +0011[20]: Text. Text scrap[White]=" " +0011[24]: Text. Text scrap[White]=" " +0011[28]: Text. Text scrap[White]=" " +0011[32]: Text. Text scrap[White]=" " +0011[36]: Text. Text scrap[White]=" " +0011[40]: Text. Text scrap[White]=" " +0011[44]: Text. Text scrap[White]=" " +0011[48]: Text. Text scrap[White]=" " +0011[52]: Text. Text scrap[White]=" " +0011[56]: Text. Text scrap[White]=" " +0011[60]: Text. Text scrap[White]="<010> +" +0012[04]: Text. Text scrap[White]=" " +0012[08]: Text. Text scrap[White]=" " +0012[12]: Text. Text scrap[White]=" " +0012[16]: Text. Text scrap[White]=" " +0012[20]: Text. Text scrap[White]=" " +0012[24]: Text. Text scrap[White]=" " +0012[28]: Text. Text scrap[White]=" " +0012[32]: Text. Text scrap[White]=" " +0012[36]: Text. Text scrap[White]=" " +0012[40]: Text. Text scrap[White]=" " +0012[44]: Text. Text scrap[White]=" " +0012[48]: Text. Text scrap[White]=" " +0012[52]: Text. Text scrap[White]=" " +0012[56]: Text. Text scrap[White]=" " +0012[60]: Text. Text scrap[White]="<010> +" +0013[04]: Text. Text scrap[White]=" " +0013[08]: Text. Text scrap[White]=" " +0013[12]: Text. Text scrap[White]=" " +0013[16]: Text. Text scrap[White]=" " +0013[20]: Text. Text scrap[White]=" " +0013[24]: Text. Text scrap[White]=" " +0013[28]: Text. Text scrap[White]=" " +0013[32]: Text. Text scrap[White]=" " +0013[36]: Text. Text scrap[White]=" " +0013[40]: Text. Text scrap[White]=" " +0013[44]: Text. Text scrap[White]=" " +0013[48]: Text. Text scrap[White]=" " +0013[52]: Text. Text scrap[White]=" " +0013[56]: Text. Text scrap[White]=" " +0013[60]: Text. Text scrap[White]="<010> +" +0014[04]: Text. Text scrap[White]=" " +0014[08]: Text. Text scrap[White]=" " +0014[12]: Text. Text scrap[White]=" " +0014[16]: Text. Text scrap[White]=" " +0014[20]: Text. Text scrap[White]=" " +0014[24]: Text. Text scrap[White]=" " +0014[28]: Text. Text scrap[White]=" " +0014[32]: Text. Text scrap[White]=" " +0014[36]: Text. Text scrap[White]=" " +0014[40]: Text. Text scrap[White]=" " +0014[44]: Text. Text scrap[White]=" " +0014[48]: Text. Text scrap[White]=" " +0014[52]: Text. Text scrap[White]=" " +0014[56]: Text. Text scrap[White]=" " +0014[60]: Text. Text scrap[White]="<010> +" +0015[04]: Text. Text scrap[White]=" " +0015[08]: Text. Text scrap[White]=" " +0015[12]: Text. Text scrap[White]=" " +0015[16]: Text. Text scrap[White]=" " +0015[20]: Text. Text scrap[Grey]="<010> +<010> +2. Test that <special>=<space> is flagged as an error.<010> +<010> + " +0019[07]: Text. Text scrap[White]=" " +0020[01]: Text. Text scrap[Grey]="<010> +3. Test that <special>=EOL is flagged as an error.<010> +<010> + " +0024[01]: Text. Text scrap[White]="<010> +" +0025[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + +Macro table dump skipped (Parser was not invoked). +Document list dump skipped (Parser was not invoked). + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| SC18: Test <special>#= + 2 2| + 3 3| First we trip up the scanner so no further passes take place. + 4 4| + 5 5| @ + Error|.^<special><endofline> is not a legal special sequence. + 6 6| + 7 7| 1. Test with all possible printable characters. + 8 8| + 9 9| @=! !=" "=# #=$ $=% %=& &=' '=( (=) )=* *=+ +=, ,=- -=. .=/ + 10 10| /=0 0=1 1=2 2=3 3=4 4=5 5=6 6=7 7=8 8=9 9=: :=; ;=< <== ==> + 11 11| >=? ?=@ @=A A=B B=C C=D D=E E=F F=G G=H H=I I=J J=K K=L L=M + 12 12| M=N N=O O=P P=Q Q=R R=S S=T T=U U=V V=W W=X X=Y Y=Z Z=[ [=\ + 13 13| \=] ]=^ ^=_ _=` `=a a=b b=c c=d d=e e=f f=g g=h h=i i=j j=k + 14 14| k=l l=m m=n n=o o=p p=q q=r r=s s=t t=u u=v v=w w=x x=y y=z + 15 15| z={ {=| |=} }=~ ~=@ + 16 16| + 17 17| 2. Test that <special>=<space> is flagged as an error. + 18 18| + 19 19| @= @! Should be flagged as an error. + Error|....^You cannot set the special character to <space>! + |....^Special sequence ignored. + 20 20| + 21 21| 3. Test that <special>=EOL is flagged as an error. + 22 22| + 23 23| @= + Error|....^You cannot set the special character to <endofline>! + |....^Special sequence ignored. + 24 24| + | <End-Of-File> +------------+------------------------------------------------------------------- + +There were 3 Errors. diff --git a/web/funnelAC/answers/sc19.lis b/web/funnelAC/answers/sc19.lis new file mode 100644 index 0000000000..4cfda7a5a4 --- /dev/null +++ b/web/funnelAC/answers/sc19.lis @@ -0,0 +1,94 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 31 39 3A 20 54 65 73 74 20 3C 73 70 65 63 | SC19: Test <spec | +| 69 61 6C 3E 2D 0A 0A 31 2E 20 54 65 73 74 20 74 | ial>-..1. Test t | +| 68 61 74 20 65 72 72 6F 72 20 69 73 20 66 6C 61 | hat error is fla | +| 67 67 65 64 20 69 66 20 73 65 71 75 65 6E 63 65 | gged if sequence | +| 20 69 73 20 6E 6F 74 20 61 74 20 74 68 65 20 65 | is not at the e | +| 6E 64 20 6F 66 20 61 20 6C 69 6E 65 2E 0A 0A 54 | nd of a line...T | +| 68 69 73 20 69 73 20 61 20 6C 69 6E 65 20 63 6F | his is a line co | +| 6E 74 61 69 6E 69 6E 67 20 40 2D 20 74 68 65 20 | ntaining @- the | +| 65 6E 64 20 6F 66 20 6C 69 6E 65 20 73 75 70 70 | end of line supp | +| 72 65 73 73 6F 72 2E 0A 0A 32 2E 20 54 65 73 74 | ressor...2. Test | +| 20 74 68 65 20 73 65 71 75 65 6E 63 65 20 66 6F | the sequence fo | +| 6C 6C 6F 77 65 64 20 62 79 20 74 72 61 69 6C 69 | llowed by traili | +| 6E 67 20 62 6C 61 6E 6B 73 2E 0A 0A 20 20 20 20 | ng blanks... | +| 20 40 2D 20 20 20 0A 0A | @- .. | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| SC19: Test <special>-<010> +00002 00002| <010> +00003 00003| 1. Test that error is flagged if sequence is not at the end of a line.<010> +00004 00004| <010> +00005 00005| This is a line containing @- the end of line suppressor.<010> +00006 00006| <010> +00007 00007| 2. Test the sequence followed by trailing blanks.<010> +00008 00008| <010> +00009 00009| @- <010> +00010 00010| <010> +00011 00011| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 4 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="SC19: Test <special>-<010> +<010> +1. Test that error is flagged if sequence is not at the end of a line.<010> +<010> +This is a line containing " +0005[29]: Text. Text scrap[Grey]=" the end of line suppressor.<010> +<010> +2. Test the sequence followed by trailing blanks.<010> +<010> + " +0009[08]: Text. Text scrap[White]=" <010> +<010> +" +0011[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + +Macro table dump skipped (Parser was not invoked). +Document list dump skipped (Parser was not invoked). + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| SC19: Test <special>- + 2 2| + 3 3| 1. Test that error is flagged if sequence is not at the end of a line. + 4 4| + 5 5| This is a line containing @- the end of line suppressor. + Error|...........................^Suppress EOL sequence is legal only at the end of a line. + 6 6| + 7 7| 2. Test the sequence followed by trailing blanks. + 8 8| + 9 9| @- + Error|......^Suppress EOL sequence is legal only at the end of a line. + Warning|..........^Line has trailing spaces up to and including this space. + 10 10| + | <End-Of-File> +------------+------------------------------------------------------------------- + +There were 2 Errors and 1 Warning. diff --git a/web/funnelAC/answers/sc20.lis b/web/funnelAC/answers/sc20.lis new file mode 100644 index 0000000000..84db05a3ec --- /dev/null +++ b/web/funnelAC/answers/sc20.lis @@ -0,0 +1,112 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 32 30 3A 20 54 65 73 74 20 40 21 0A 0A 31 | SC20: Test @!..1 | +| 2E 20 54 65 73 74 20 61 74 20 74 68 65 20 73 74 | . Test at the st | +| 61 72 74 20 6F 66 20 61 20 6C 69 6E 65 2E 0A 0A | art of a line... | +| 40 21 20 54 68 69 73 20 69 73 20 61 20 63 6F 6D | @! This is a com | +| 6D 65 6E 74 20 61 6E 64 20 77 65 20 63 61 6E 20 | ment and we can | +| 73 74 69 63 6B 20 61 6E 79 20 73 6F 72 74 20 6F | stick any sort o | +| 66 20 72 75 62 62 69 73 68 20 69 6E 20 69 74 2E | f rubbish in it. | +| 0A 40 21 20 40 23 20 40 69 20 40 5E 64 73 3B 61 | .@! @# @i @^ds;a | +| 66 3B 6C 73 64 6D 66 3B 6C 61 6E 64 20 6F 74 68 | f;lsdmf;land oth | +| 65 72 20 40 20 72 75 62 62 69 73 68 2E 0A 0A 32 | er @ rubbish...2 | +| 2E 20 54 65 73 74 20 68 61 6C 66 77 61 79 20 74 | . Test halfway t | +| 68 72 6F 75 67 68 20 61 20 6C 69 6E 65 2E 0A 0A | hrough a line... | +| 54 68 69 73 20 69 73 20 61 20 6C 69 6E 65 20 40 | This is a line @ | +| 21 20 77 68 6F 73 65 20 73 65 63 6F 6E 64 20 68 | ! whose second h | +| 61 6C 66 20 6E 65 76 65 72 20 73 65 65 73 20 74 | alf never sees t | +| 68 65 20 64 61 79 6C 69 67 68 74 2E 20 40 69 20 | he daylight. @i | +| 40 3C 0A 0A | @<.. | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| SC20: Test @!<010> +00002 00002| <010> +00003 00003| 1. Test at the start of a line.<010> +00004 00004| <010> +00005 00005| @! This is a comment and we can stick any sort of rubbish in it.<010> +00006 00006| @! @# @i @^ds;af;lsdmf;land other @ rubbish.<010> +00007 00007| <010> +00008 00008| 2. Test halfway through a line.<010> +00009 00009| <010> +00010 00010| This is a line @! whose second half never sees the daylight. @i @<<010> +00011 00011| <010> +00012 00012| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 5 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="SC20: Test " +0002[01]: Text. Text scrap[Grey]="<010> +1. Test at the start of a line.<010> +<010> +" +0007[01]: Text. Text scrap[Grey]="<010> +2. Test halfway through a line.<010> +<010> +This is a line " +0011[01]: Text. Text scrap[White]="<010> +" +0012[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + + +========================== Start of MACRO TABLE DUMP =========================== + + +=========================== End of MACRO TABLE DUMP ============================ + + +========================= Start of DOCUMENT LIST DUMP ========================== + + +TEXT COMPONENT: Pos(L,C)=(1,1). + +-- Start of Text Scrap List -- +Text scrap[Grey]="SC20: Test " +Text scrap[Grey]="<010> +1. Test at the start of a line.<010> +<010> +" +Text scrap[Grey]="<010> +2. Test halfway through a line.<010> +<010> +This is a line " +Text scrap[White]="<010> +" +--- End of Text Scrap List --- + + +========================== End of DOCUMENT LIST DUMP =========================== + +E: No macros defined. +E: No output files specified. + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +There were 2 Errors. diff --git a/web/funnelAC/answers/sc21.lis b/web/funnelAC/answers/sc21.lis new file mode 100644 index 0000000000..e64bcb3ac2 --- /dev/null +++ b/web/funnelAC/answers/sc21.lis @@ -0,0 +1,339 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 32 31 3A 20 54 65 73 74 20 67 65 6E 65 72 | SC21: Test gener | +| 69 63 20 73 79 6E 74 61 78 20 63 68 65 63 6B 69 | ic syntax checki | +| 6E 67 20 6F 66 20 70 72 61 67 6D 61 73 20 61 6E | ng of pragmas an | +| 64 20 74 79 70 65 73 65 74 74 65 72 20 64 69 72 | d typesetter dir | +| 65 63 74 69 76 65 73 2E 0A 0A 31 2E 20 54 65 73 | ectives...1. Tes | +| 74 20 70 72 61 67 6D 61 20 6E 6F 74 20 61 74 20 | t pragma not at | +| 74 68 65 20 73 74 61 72 74 20 6F 66 20 6C 69 6E | the start of lin | +| 65 2E 0A 20 20 20 40 70 0A 20 20 20 40 74 0A 0A | e.. @p. @t.. | +| 32 2E 20 54 65 73 74 20 63 68 61 72 61 63 74 65 | 2. Test characte | +| 72 20 66 6F 6C 6C 6F 77 69 6E 67 20 3C 73 70 65 | r following <spe | +| 63 69 61 6C 3E 70 20 69 73 20 6E 6F 74 20 61 20 | cial>p is not a | +| 62 6C 61 6E 6B 2E 0A 40 70 78 0A 40 74 78 0A 40 | blank..@px.@tx.@ | +| 70 0A 40 74 0A 0A 33 2E 20 54 65 73 74 20 70 72 | p.@t..3. Test pr | +| 61 67 6D 61 20 6C 69 6E 65 20 69 73 20 74 6F 6F | agma line is too | +| 20 6C 6F 6E 67 20 28 6C 69 6D 69 74 20 69 73 20 | long (limit is | +| 31 30 30 29 0A 20 20 20 20 20 20 20 20 20 31 20 | 100). 1 | +| 20 20 20 20 20 20 20 20 32 20 20 20 20 20 20 20 | 2 | +| 20 20 33 20 20 20 20 20 20 20 20 20 34 20 20 20 | 3 4 | +| 20 20 20 20 20 20 35 20 20 20 20 20 20 20 20 20 | 5 | +| 36 20 20 20 20 20 20 20 20 20 37 20 20 20 20 20 | 6 7 | +| 20 20 20 20 38 20 20 20 20 20 20 20 20 20 39 20 | 8 9 | +| 20 20 20 20 20 20 20 20 31 0A 40 70 20 34 35 36 | 1.@p 456 | +| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | +| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | +| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | +| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | +| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | +| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 0A 40 | 78901234567890.@ | +| 70 20 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | p 45678901234567 | +| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 | +| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 | +| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 | +| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 | +| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 | +| 38 39 30 31 0A 40 74 20 34 35 36 37 38 39 30 31 | 8901.@t 45678901 | +| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 | +| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 | +| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 | +| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 | +| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 | +| 32 33 34 35 36 37 38 39 30 0A 40 74 20 34 35 36 | 234567890.@t 456 | +| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | +| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | +| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | +| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | +| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | +| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 0A | 789012345678901. | +| 0A 34 2E 20 54 65 73 74 20 76 61 72 69 6F 75 73 | .4. Test various | +| 20 64 69 66 66 65 72 65 6E 74 20 70 72 61 67 6D | different pragm | +| 61 20 6C 69 6E 65 73 2E 0A 40 70 20 24 23 25 40 | a lines..@p $#%@ | +| 20 32 35 32 35 20 20 73 6C 6F 74 68 0A 40 74 20 | 2525 sloth.@t | +| 24 23 25 40 20 32 35 32 35 20 20 73 6C 6F 74 68 | $#%@ 2525 sloth | +| 0A 0A 35 2E 20 54 65 73 74 20 70 72 61 67 6D 61 | ..5. Test pragma | +| 20 77 69 74 68 20 6E 6F 20 61 72 67 75 6D 65 6E | with no argumen | +| 74 73 2E 20 28 57 69 6C 6C 20 67 65 74 20 61 20 | ts. (Will get a | +| 74 72 61 69 6C 69 6E 67 20 62 6C 61 6E 6B 73 20 | trailing blanks | +| 65 72 72 6F 72 2E 29 2E 0A 40 70 20 20 20 20 0A | error.)..@p . | +| 40 74 20 20 20 20 0A 0A 36 2E 20 54 65 73 74 20 | @t ..6. Test | +| 70 72 61 67 6D 61 20 77 69 74 68 20 74 6F 6F 20 | pragma with too | +| 6D 61 6E 79 20 61 72 67 75 6D 65 6E 74 73 2E 0A | many arguments.. | +| 40 70 20 61 20 62 20 63 20 64 20 65 20 66 20 67 | @p a b c d e f g | +| 20 68 20 69 20 6A 20 6B 20 6C 20 6D 20 6E 20 6F | h i j k l m n o | +| 20 70 20 71 20 72 20 73 20 74 20 75 20 76 20 77 | p q r s t u v w | +| 20 78 20 79 20 7A 0A 40 74 20 61 20 62 20 63 20 | x y z.@t a b c | +| 64 20 65 20 66 20 67 20 68 20 69 20 6A 20 6B 20 | d e f g h i j k | +| 6C 20 6D 20 6E 20 6F 20 70 20 71 20 72 20 73 20 | l m n o p q r s | +| 74 20 75 20 76 20 77 20 78 20 79 20 7A 0A 0A | t u v w x y z.. | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| SC21: Test generic syntax checking of pragmas and typesetter directives.<010> +00002 00002| <010> +00003 00003| 1. Test pragma not at the start of line.<010> +00004 00004| @p<010> +00005 00005| @t<010> +00006 00006| <010> +00007 00007| 2. Test character following <special>p is not a blank.<010> +00008 00008| @px<010> +00009 00009| @tx<010> +00010 00010| @p<010> +00011 00011| @t<010> +00012 00012| <010> +00013 00013| 3. Test pragma line is too long (limit is 100)<010> +00014 00014| 1 2 3 4 5 6 7 8 9 1<010> +00015 00015| @p 4567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890<010> +00016 00016| @p 45678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901<010> +00017 00017| @t 4567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890<010> +00018 00018| @t 45678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901<010> +00019 00019| <010> +00020 00020| 4. Test various different pragma lines.<010> +00021 00021| @p $#%@ 2525 sloth<010> +00022 00022| @t $#%@ 2525 sloth<010> +00023 00023| <010> +00024 00024| 5. Test pragma with no arguments. (Will get a trailing blanks error.).<010> +00025 00025| @p <010> +00026 00026| @t <010> +00027 00027| <010> +00028 00028| 6. Test pragma with too many arguments.<010> +00029 00029| @p a b c d e f g h i j k l m n o p q r s t u v w x y z<010> +00030 00030| @t a b c d e f g h i j k l m n o p q r s t u v w x y z<010> +00031 00031| <010> +00032 00032| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 9 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="SC21: Test generic syntax checking of pragmas and typesetter directives.<010> +<010> +1. Test pragma not at the start of line.<010> + " +0005[01]: Text. Text scrap[White]=" " +0006[01]: Text. Text scrap[Grey]="<010> +2. Test character following <special>p is not a blank.<010> +" +0012[01]: Text. Text scrap[Grey]="<010> +3. Test pragma line is too long (limit is 100)<010> + 1 2 3 4 5 6 7 8 9 1<010> +" +0019[01]: Text. Text scrap[Grey]="<010> +4. Test various different pragma lines.<010> +" +0023[01]: Text. Text scrap[Grey]="<010> +5. Test pragma with no arguments. (Will get a trailing blanks error.).<010> +" +0027[01]: Text. Text scrap[Grey]="<010> +6. Test pragma with too many arguments.<010> +" +0031[01]: Text. Text scrap[White]="<010> +" +0032[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + +Macro table dump skipped (Parser was not invoked). +Document list dump skipped (Parser was not invoked). + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| SC21: Test generic syntax checking of pragmas and typesetter directives. + 2 2| + 3 3| 1. Test pragma not at the start of line. + 4 4| @p + Error|....^Pragma sequence @p must be at the start of a line. + |....^The rest of this line will be ignored. + Error|....^Unrecognised pragma. Possible legal pragmas are: + |....^ @p indentation = none | blank + |....^ @p maximum_input_line_length = <num>|infinity + |....^ @p maximum_output_line_length = <num>|infinity + |....^ @p typesetter = none | tex + |....^The blanks between arguments are important. + |....^Pragma ignored. + 5 5| @t + Error|....^Typesetter directive @t must be at the start of a line. + |....^The rest of this line will be ignored. + Error|....^Unrecognised typesetter directive. Legal ones are: + |....^ @t new_page + |....^ @t table_of_contents + |....^ @t title <font> <align> <string> + |....^ @t vskip <num> mm + |....^The blanks between arguments are important. + |....^Typesetter directive ignored. + 6 6| + 7 7| 2. Test character following <special>p is not a blank. + 8 8| @px + Error|.^Pragma sequence @p must be followed by a blank. + Error|.^Unrecognised pragma. Possible legal pragmas are: + |.^ @p indentation = none | blank + |.^ @p maximum_input_line_length = <num>|infinity + |.^ @p maximum_output_line_length = <num>|infinity + |.^ @p typesetter = none | tex + |.^The blanks between arguments are important. + |.^Pragma ignored. + 9 9| @tx + Error|.^Typesetter directive @t must be followed by a blank. + Error|.^Unrecognised typesetter directive. Legal ones are: + |.^ @t new_page + |.^ @t table_of_contents + |.^ @t title <font> <align> <string> + |.^ @t vskip <num> mm + |.^The blanks between arguments are important. + |.^Typesetter directive ignored. + 10 10| @p + Error|.^Pragma sequence @p must be followed by a blank. + Error|.^Unrecognised pragma. Possible legal pragmas are: + |.^ @p indentation = none | blank + |.^ @p maximum_input_line_length = <num>|infinity + |.^ @p maximum_output_line_length = <num>|infinity + |.^ @p typesetter = none | tex + |.^The blanks between arguments are important. + |.^Pragma ignored. + 11 11| @t + Error|.^Typesetter directive @t must be followed by a blank. + Error|.^Unrecognised typesetter directive. Legal ones are: + |.^ @t new_page + |.^ @t table_of_contents + |.^ @t title <font> <align> <string> + |.^ @t vskip <num> mm + |.^The blanks between arguments are important. + |.^Typesetter directive ignored. + 12 12| + 13 13| 3. Test pragma line is too long (limit is 100) + 14 14| 1 2 3 4 5 6 7 8 9 1 + Error|.................................................................................^Input line is too long (this character is the first offender). + |.................................................................................^Currently, the maximum allowable input line length is 80. + |.................................................................................^Note: You can change this using a pragma directive (@p). + 15 15| @p 4567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 + Error|.^Unrecognised pragma. Possible legal pragmas are: + |.^ @p indentation = none | blank + |.^ @p maximum_input_line_length = <num>|infinity + |.^ @p maximum_output_line_length = <num>|infinity + |.^ @p typesetter = none | tex + |.^The blanks between arguments are important. + |.^Pragma ignored. + Error|.................................................................................^Input line is too long (this character is the first offender). + |.................................................................................^Currently, the maximum allowable input line length is 80. + |.................................................................................^Note: You can change this using a pragma directive (@p). + 16 16| @p 45678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901 + Error|.^This pragma line is too long. + |.^The maximum pragma line length is 100 characters. + Error|.^Unrecognised pragma. Possible legal pragmas are: + |.^ @p indentation = none | blank + |.^ @p maximum_input_line_length = <num>|infinity + |.^ @p maximum_output_line_length = <num>|infinity + |.^ @p typesetter = none | tex + |.^The blanks between arguments are important. + |.^Pragma ignored. + Error|.................................................................................^Input line is too long (this character is the first offender). + |.................................................................................^Currently, the maximum allowable input line length is 80. + |.................................................................................^Note: You can change this using a pragma directive (@p). + 17 17| @t 4567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 + Error|.^Unrecognised typesetter directive. Legal ones are: + |.^ @t new_page + |.^ @t table_of_contents + |.^ @t title <font> <align> <string> + |.^ @t vskip <num> mm + |.^The blanks between arguments are important. + |.^Typesetter directive ignored. + Error|.................................................................................^Input line is too long (this character is the first offender). + |.................................................................................^Currently, the maximum allowable input line length is 80. + |.................................................................................^Note: You can change this using a pragma directive (@p). + 18 18| @t 45678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901 + Error|.^This typestter directive line is too long. + |.^The maximum typesetter directive line length is 100 characters. + Error|.^Unrecognised typesetter directive. Legal ones are: + |.^ @t new_page + |.^ @t table_of_contents + |.^ @t title <font> <align> <string> + |.^ @t vskip <num> mm + |.^The blanks between arguments are important. + |.^Typesetter directive ignored. + Error|.................................................................................^Input line is too long (this character is the first offender). + |.................................................................................^Currently, the maximum allowable input line length is 80. + |.................................................................................^Note: You can change this using a pragma directive (@p). + 19 19| + 20 20| 4. Test various different pragma lines. + 21 21| @p $#%@ 2525 sloth + Error|.^Unrecognised pragma. Possible legal pragmas are: + |.^ @p indentation = none | blank + |.^ @p maximum_input_line_length = <num>|infinity + |.^ @p maximum_output_line_length = <num>|infinity + |.^ @p typesetter = none | tex + |.^The blanks between arguments are important. + |.^Pragma ignored. + 22 22| @t $#%@ 2525 sloth + Error|.^Unrecognised typesetter directive. Legal ones are: + |.^ @t new_page + |.^ @t table_of_contents + |.^ @t title <font> <align> <string> + |.^ @t vskip <num> mm + |.^The blanks between arguments are important. + |.^Typesetter directive ignored. + 23 23| + 24 24| 5. Test pragma with no arguments. (Will get a trailing blanks error.). + 25 25| @p + Error|.^Pragma sequence @p must be followed by a keyword. + Error|.^Unrecognised pragma. Possible legal pragmas are: + |.^ @p indentation = none | blank + |.^ @p maximum_input_line_length = <num>|infinity + |.^ @p maximum_output_line_length = <num>|infinity + |.^ @p typesetter = none | tex + |.^The blanks between arguments are important. + |.^Pragma ignored. + Warning|......^Line has trailing spaces up to and including this space. + 26 26| @t + Error|.^Typesetter directive @t must be followed by a keyword. + Error|.^Unrecognised typesetter directive. Legal ones are: + |.^ @t new_page + |.^ @t table_of_contents + |.^ @t title <font> <align> <string> + |.^ @t vskip <num> mm + |.^The blanks between arguments are important. + |.^Typesetter directive ignored. + Warning|......^Line has trailing spaces up to and including this space. + 27 27| + 28 28| 6. Test pragma with too many arguments. + 29 29| @p a b c d e f g h i j k l m n o p q r s t u v w x y z + Error|.^Unrecognised pragma. Possible legal pragmas are: + |.^ @p indentation = none | blank + |.^ @p maximum_input_line_length = <num>|infinity + |.^ @p maximum_output_line_length = <num>|infinity + |.^ @p typesetter = none | tex + |.^The blanks between arguments are important. + |.^Pragma ignored. + 30 30| @t a b c d e f g h i j k l m n o p q r s t u v w x y z + Error|.^Unrecognised typesetter directive. Legal ones are: + |.^ @t new_page + |.^ @t table_of_contents + |.^ @t title <font> <align> <string> + |.^ @t vskip <num> mm + |.^The blanks between arguments are important. + |.^Typesetter directive ignored. + 31 31| + | <End-Of-File> +------------+------------------------------------------------------------------- + +There were 31 Errors and 2 Warnings. diff --git a/web/funnelAC/answers/sc22.lis b/web/funnelAC/answers/sc22.lis new file mode 100644 index 0000000000..5fd10d7311 --- /dev/null +++ b/web/funnelAC/answers/sc22.lis @@ -0,0 +1,165 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 32 32 3A 20 54 65 73 74 20 73 79 6E 74 61 | SC22: Test synta | +| 78 20 63 68 65 63 6B 69 6E 67 20 6F 66 20 69 6E | x checking of in | +| 70 75 74 20 6C 69 6E 65 20 6C 65 6E 67 74 68 20 | put line length | +| 70 72 61 67 6D 61 2E 0A 0A 31 2E 20 54 65 73 74 | pragma...1. Test | +| 20 6E 6F 74 20 74 68 72 65 65 20 61 72 67 75 6D | not three argum | +| 65 6E 74 73 2E 0A 40 70 20 6D 61 78 69 6D 75 6D | ents..@p maximum | +| 5F 69 6E 70 75 74 5F 6C 69 6E 65 5F 6C 65 6E 67 | _input_line_leng | +| 74 68 0A 40 70 20 6D 61 78 69 6D 75 6D 5F 69 6E | th.@p maximum_in | +| 70 75 74 5F 6C 69 6E 65 5F 6C 65 6E 67 74 68 20 | put_line_length | +| 3D 0A 40 70 20 6D 61 78 69 6D 75 6D 5F 69 6E 70 | =.@p maximum_inp | +| 75 74 5F 6C 69 6E 65 5F 6C 65 6E 67 74 68 20 3D | ut_line_length = | +| 20 78 78 78 20 79 79 79 0A 0A 32 2E 20 54 65 73 | xxx yyy..2. Tes | +| 74 20 73 65 63 6F 6E 64 20 61 72 67 75 6D 65 6E | t second argumen | +| 74 20 6E 6F 74 20 22 3D 22 2E 0A 40 70 20 6D 61 | t not "="..@p ma | +| 78 69 6D 75 6D 5F 69 6E 70 75 74 5F 6C 69 6E 65 | ximum_input_line | +| 5F 6C 65 6E 67 74 68 20 78 20 73 6C 6F 74 68 0A | _length x sloth. | +| 0A 33 2E 20 54 65 73 74 20 76 61 6C 75 65 20 6F | .3. Test value o | +| 66 20 69 6E 66 69 6E 69 74 79 2E 0A 40 70 20 6D | f infinity..@p m | +| 61 78 69 6D 75 6D 5F 69 6E 70 75 74 5F 6C 69 6E | aximum_input_lin | +| 65 5F 6C 65 6E 67 74 68 20 3D 20 69 6E 66 69 6E | e_length = infin | +| 69 74 79 0A 0A 34 2E 20 54 65 73 74 20 6E 6F 6E | ity..4. Test non | +| 2D 64 65 63 69 6D 61 6C 20 64 69 67 69 74 20 69 | -decimal digit i | +| 6E 20 6E 75 6D 62 65 72 2E 0A 40 70 20 6D 61 78 | n number..@p max | +| 69 6D 75 6D 5F 69 6E 70 75 74 5F 6C 69 6E 65 5F | imum_input_line_ | +| 6C 65 6E 67 74 68 20 3D 20 32 65 66 0A 0A 35 2E | length = 2ef..5. | +| 20 54 65 73 74 20 6E 75 6D 62 65 72 20 69 73 20 | Test number is | +| 6D 6F 72 65 20 74 68 61 6E 20 65 69 67 68 74 20 | more than eight | +| 64 69 67 69 74 73 20 6C 6F 6E 67 2E 0A 40 70 20 | digits long..@p | +| 6D 61 78 69 6D 75 6D 5F 69 6E 70 75 74 5F 6C 69 | maximum_input_li | +| 6E 65 5F 6C 65 6E 67 74 68 20 3D 20 31 32 33 34 | ne_length = 1234 | +| 35 36 37 38 39 0A 0A 36 2E 20 54 65 73 74 20 6E | 56789..6. Test n | +| 75 6D 62 65 72 20 69 73 20 65 78 61 63 74 6C 79 | umber is exactly | +| 20 65 69 67 68 74 20 64 69 67 69 74 73 20 6C 6F | eight digits lo | +| 6E 67 2E 0A 40 70 20 6D 61 78 69 6D 75 6D 5F 69 | ng..@p maximum_i | +| 6E 70 75 74 5F 6C 69 6E 65 5F 6C 65 6E 67 74 68 | nput_line_length | +| 20 3D 20 31 32 33 34 35 36 37 38 0A 0A 0A | = 12345678... | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| SC22: Test syntax checking of input line length pragma.<010> +00002 00002| <010> +00003 00003| 1. Test not three arguments.<010> +00004 00004| @p maximum_input_line_length<010> +00005 00005| @p maximum_input_line_length =<010> +00006 00006| @p maximum_input_line_length = xxx yyy<010> +00007 00007| <010> +00008 00008| 2. Test second argument not "=".<010> +00009 00009| @p maximum_input_line_length x sloth<010> +00010 00010| <010> +00011 00011| 3. Test value of infinity.<010> +00012 00012| @p maximum_input_line_length = infinity<010> +00013 00013| <010> +00014 00014| 4. Test non-decimal digit in number.<010> +00015 00015| @p maximum_input_line_length = 2ef<010> +00016 00016| <010> +00017 00017| 5. Test number is more than eight digits long.<010> +00018 00018| @p maximum_input_line_length = 123456789<010> +00019 00019| <010> +00020 00020| 6. Test number is exactly eight digits long.<010> +00021 00021| @p maximum_input_line_length = 12345678<010> +00022 00022| <010> +00023 00023| <010> +00024 00024| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 8 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="SC22: Test syntax checking of input line length pragma.<010> +<010> +1. Test not three arguments.<010> +" +0007[01]: Text. Text scrap[Grey]="<010> +2. Test second argument not "=".<010> +" +0010[01]: Text. Text scrap[Grey]="<010> +3. Test value of infinity.<010> +" +0013[01]: Text. Text scrap[Grey]="<010> +4. Test non-decimal digit in number.<010> +" +0016[01]: Text. Text scrap[Grey]="<010> +5. Test number is more than eight digits long.<010> +" +0019[01]: Text. Text scrap[Grey]="<010> +6. Test number is exactly eight digits long.<010> +" +0022[01]: Text. Text scrap[White]="<010> +<010> +" +0024[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + +Macro table dump skipped (Parser was not invoked). +Document list dump skipped (Parser was not invoked). + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| SC22: Test syntax checking of input line length pragma. + 2 2| + 3 3| 1. Test not three arguments. + 4 4| @p maximum_input_line_length + Error|.^This pragma has the wrong number of arguments. + |.^The correct format is: "@p maximum_input_line_length = <num>|infinity". + |.^Pragma ignored. + 5 5| @p maximum_input_line_length = + Error|.^This pragma has the wrong number of arguments. + |.^The correct format is: "@p maximum_input_line_length = <num>|infinity". + |.^Pragma ignored. + 6 6| @p maximum_input_line_length = xxx yyy + Error|.^This pragma has the wrong number of arguments. + |.^The correct format is: "@p maximum_input_line_length = <num>|infinity". + |.^Pragma ignored. + 7 7| + 8 8| 2. Test second argument not "=". + 9 9| @p maximum_input_line_length x sloth + |.^The correct format is: "@p maximum_input_line_length = <num>|infinity". + |.^Pragma ignored. + Error|..............................^Expecting "=". + 10 10| + 11 11| 3. Test value of infinity. + 12 12| @p maximum_input_line_length = infinity + 13 13| + 14 14| 4. Test non-decimal digit in number. + 15 15| @p maximum_input_line_length = 2ef + Error|.................................^Illegal digit. Value must consist entirely of decimal digits. + |.................................^You can also use the value "infinity". + |.................................^Pragma ignored. + 16 16| + 17 17| 5. Test number is more than eight digits long. + 18 18| @p maximum_input_line_length = 123456789 + Error|................................^Too many digits. The maximum is eight. + |................................^Pragma ignored. + 19 19| + 20 20| 6. Test number is exactly eight digits long. + 21 21| @p maximum_input_line_length = 12345678 + 22 22| + 23 23| + | <End-Of-File> +------------+------------------------------------------------------------------- + +There were 6 Errors. diff --git a/web/funnelAC/answers/sc23.lis b/web/funnelAC/answers/sc23.lis new file mode 100644 index 0000000000..df72bd6601 --- /dev/null +++ b/web/funnelAC/answers/sc23.lis @@ -0,0 +1,188 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 32 33 3A 20 54 65 73 74 20 73 79 6E 74 61 | SC23: Test synta | +| 78 20 63 68 65 63 6B 69 6E 67 20 6F 66 20 6F 75 | x checking of ou | +| 74 70 75 74 20 6C 69 6E 65 20 6C 65 6E 67 74 68 | tput line length | +| 20 70 72 61 67 6D 61 2E 0A 0A 31 2E 20 54 65 73 | pragma...1. Tes | +| 74 20 6E 6F 74 20 74 68 72 65 65 20 61 72 67 75 | t not three argu | +| 6D 65 6E 74 73 2E 0A 40 70 20 6D 61 78 69 6D 75 | ments..@p maximu | +| 6D 5F 6F 75 74 70 75 74 5F 6C 69 6E 65 5F 6C 65 | m_output_line_le | +| 6E 67 74 68 0A 40 70 20 6D 61 78 69 6D 75 6D 5F | ngth.@p maximum_ | +| 6F 75 74 70 75 74 5F 6C 69 6E 65 5F 6C 65 6E 67 | output_line_leng | +| 74 68 20 3D 0A 40 70 20 6D 61 78 69 6D 75 6D 5F | th =.@p maximum_ | +| 6F 75 74 70 75 74 5F 6C 69 6E 65 5F 6C 65 6E 67 | output_line_leng | +| 74 68 20 3D 20 78 78 78 20 79 79 79 0A 0A 32 2E | th = xxx yyy..2. | +| 20 54 65 73 74 20 73 65 63 6F 6E 64 20 61 72 67 | Test second arg | +| 75 6D 65 6E 74 20 6E 6F 74 20 22 3D 22 2E 0A 40 | ument not "="..@ | +| 70 20 6D 61 78 69 6D 75 6D 5F 6F 75 74 70 75 74 | p maximum_output | +| 5F 6C 69 6E 65 5F 6C 65 6E 67 74 68 20 78 20 73 | _line_length x s | +| 6C 6F 74 68 0A 0A 33 2E 20 54 65 73 74 20 76 61 | loth..3. Test va | +| 6C 75 65 20 6F 66 20 69 6E 66 69 6E 69 74 79 2E | lue of infinity. | +| 0A 40 70 20 6D 61 78 69 6D 75 6D 5F 6F 75 74 70 | .@p maximum_outp | +| 75 74 5F 6C 69 6E 65 5F 6C 65 6E 67 74 68 20 3D | ut_line_length = | +| 20 69 6E 66 69 6E 69 74 79 0A 0A 34 2E 20 54 65 | infinity..4. Te | +| 73 74 20 6E 6F 6E 2D 64 65 63 69 6D 61 6C 20 64 | st non-decimal d | +| 69 67 69 74 20 69 6E 20 6E 75 6D 62 65 72 2E 0A | igit in number.. | +| 40 70 20 6D 61 78 69 6D 75 6D 5F 6F 75 74 70 75 | @p maximum_outpu | +| 74 5F 6C 69 6E 65 5F 6C 65 6E 67 74 68 20 3D 20 | t_line_length = | +| 32 65 66 0A 0A 35 2E 20 54 65 73 74 20 6E 75 6D | 2ef..5. Test num | +| 62 65 72 20 69 73 20 6D 6F 72 65 20 74 68 61 6E | ber is more than | +| 20 65 69 67 68 74 20 64 69 67 69 74 73 20 6C 6F | eight digits lo | +| 6E 67 2E 0A 40 70 20 6D 61 78 69 6D 75 6D 5F 6F | ng..@p maximum_o | +| 75 74 70 75 74 5F 6C 69 6E 65 5F 6C 65 6E 67 74 | utput_line_lengt | +| 68 20 3D 20 31 32 33 34 35 36 37 38 39 0A 0A 36 | h = 123456789..6 | +| 2E 20 54 65 73 74 20 6E 75 6D 62 65 72 20 69 73 | . Test number is | +| 20 65 78 61 63 74 6C 79 20 65 69 67 68 74 20 64 | exactly eight d | +| 69 67 69 74 73 20 6C 6F 6E 67 2E 0A 37 2E 20 54 | igits long..7. T | +| 65 73 74 20 70 72 61 67 6D 61 20 6F 70 70 6F 73 | est pragma oppos | +| 69 6E 67 20 65 61 72 6C 69 65 72 20 70 72 61 67 | ing earlier prag | +| 6D 61 2E 0A 40 70 20 6D 61 78 69 6D 75 6D 5F 6F | ma..@p maximum_o | +| 75 74 70 75 74 5F 6C 69 6E 65 5F 6C 65 6E 67 74 | utput_line_lengt | +| 68 20 3D 20 31 32 33 34 35 36 37 38 0A 0A 38 2E | h = 12345678..8. | +| 20 54 65 73 74 20 70 72 61 67 6D 61 20 6E 6F 74 | Test pragma not | +| 20 6F 70 70 6F 73 69 6E 67 20 65 61 72 6C 69 65 | opposing earlie | +| 72 20 70 72 61 67 6D 61 2E 0A 40 70 20 6D 61 78 | r pragma..@p max | +| 69 6D 75 6D 5F 6F 75 74 70 75 74 5F 6C 69 6E 65 | imum_output_line | +| 5F 6C 65 6E 67 74 68 20 3D 20 69 6E 66 69 6E 69 | _length = infini | +| 74 79 0A 0A | ty.. | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| SC23: Test syntax checking of output line length pragma.<010> +00002 00002| <010> +00003 00003| 1. Test not three arguments.<010> +00004 00004| @p maximum_output_line_length<010> +00005 00005| @p maximum_output_line_length =<010> +00006 00006| @p maximum_output_line_length = xxx yyy<010> +00007 00007| <010> +00008 00008| 2. Test second argument not "=".<010> +00009 00009| @p maximum_output_line_length x sloth<010> +00010 00010| <010> +00011 00011| 3. Test value of infinity.<010> +00012 00012| @p maximum_output_line_length = infinity<010> +00013 00013| <010> +00014 00014| 4. Test non-decimal digit in number.<010> +00015 00015| @p maximum_output_line_length = 2ef<010> +00016 00016| <010> +00017 00017| 5. Test number is more than eight digits long.<010> +00018 00018| @p maximum_output_line_length = 123456789<010> +00019 00019| <010> +00020 00020| 6. Test number is exactly eight digits long.<010> +00021 00021| 7. Test pragma opposing earlier pragma.<010> +00022 00022| @p maximum_output_line_length = 12345678<010> +00023 00023| <010> +00024 00024| 8. Test pragma not opposing earlier pragma.<010> +00025 00025| @p maximum_output_line_length = infinity<010> +00026 00026| <010> +00027 00027| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 9 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="SC23: Test syntax checking of output line length pragma.<010> +<010> +1. Test not three arguments.<010> +" +0007[01]: Text. Text scrap[Grey]="<010> +2. Test second argument not "=".<010> +" +0010[01]: Text. Text scrap[Grey]="<010> +3. Test value of infinity.<010> +" +0013[01]: Text. Text scrap[Grey]="<010> +4. Test non-decimal digit in number.<010> +" +0016[01]: Text. Text scrap[Grey]="<010> +5. Test number is more than eight digits long.<010> +" +0019[01]: Text. Text scrap[Grey]="<010> +6. Test number is exactly eight digits long.<010> +7. Test pragma opposing earlier pragma.<010> +" +0023[01]: Text. Text scrap[Grey]="<010> +8. Test pragma not opposing earlier pragma.<010> +" +0026[01]: Text. Text scrap[White]="<010> +" +0027[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + +Macro table dump skipped (Parser was not invoked). +Document list dump skipped (Parser was not invoked). + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| SC23: Test syntax checking of output line length pragma. + 2 2| + 3 3| 1. Test not three arguments. + 4 4| @p maximum_output_line_length + Error|.^This pragma has the wrong number of arguments. + |.^The correct format is: "@p maximum_output_line_length = <num>|infinity". + |.^Pragma ignored. + 5 5| @p maximum_output_line_length = + Error|.^This pragma has the wrong number of arguments. + |.^The correct format is: "@p maximum_output_line_length = <num>|infinity". + |.^Pragma ignored. + 6 6| @p maximum_output_line_length = xxx yyy + Error|.^This pragma has the wrong number of arguments. + |.^The correct format is: "@p maximum_output_line_length = <num>|infinity". + |.^Pragma ignored. + 7 7| + 8 8| 2. Test second argument not "=". + 9 9| @p maximum_output_line_length x sloth + |.^The correct format is: "@p maximum_output_line_length = <num>|infinity". + |.^Pragma ignored. + Error|...............................^Expecting "=". + 10 10| + 11 11| 3. Test value of infinity. + 12 12| @p maximum_output_line_length = infinity + |.^This pragma is opposed by the pragma at line 22. + 13 13| + 14 14| 4. Test non-decimal digit in number. + 15 15| @p maximum_output_line_length = 2ef + Error|..................................^Illegal digit. Value must consist entirely of decimal digits. + |..................................^You can also use the value "infinity". + |..................................^Pragma ignored. + 16 16| + 17 17| 5. Test number is more than eight digits long. + 18 18| @p maximum_output_line_length = 123456789 + Error|.................................^Too many digits. The maximum is eight. + |.................................^Pragma ignored. + 19 19| + 20 20| 6. Test number is exactly eight digits long. + 21 21| 7. Test pragma opposing earlier pragma. + 22 22| @p maximum_output_line_length = 12345678 + Error|.^This pragma opposes the pragma at line 12. + |.^You can have as many output line length pragmas + |.^as you like, but they all have to be the same! + |.^Pragma ignored. + 23 23| + 24 24| 8. Test pragma not opposing earlier pragma. + 25 25| @p maximum_output_line_length = infinity + 26 26| + | <End-Of-File> +------------+------------------------------------------------------------------- + +There were 7 Errors. diff --git a/web/funnelAC/answers/sc24.lis b/web/funnelAC/answers/sc24.lis new file mode 100644 index 0000000000..804e5e5d64 --- /dev/null +++ b/web/funnelAC/answers/sc24.lis @@ -0,0 +1,162 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 32 33 3A 20 54 65 73 74 20 73 79 6E 74 61 | SC23: Test synta | +| 78 20 63 68 65 63 6B 69 6E 67 20 6F 66 20 69 6E | x checking of in | +| 64 65 6E 74 61 74 69 6F 6E 20 70 72 61 67 6D 61 | dentation pragma | +| 2E 0A 0A 31 2E 20 54 65 73 74 20 6E 6F 74 20 74 | ...1. Test not t | +| 68 72 65 65 20 61 72 67 75 6D 65 6E 74 73 2E 0A | hree arguments.. | +| 40 70 20 69 6E 64 65 6E 74 61 74 69 6F 6E 0A 40 | @p indentation.@ | +| 70 20 69 6E 64 65 6E 74 61 74 69 6F 6E 20 3D 0A | p indentation =. | +| 40 70 20 69 6E 64 65 6E 74 61 74 69 6F 6E 20 3D | @p indentation = | +| 20 78 78 78 20 79 79 79 0A 0A 32 2E 20 54 65 73 | xxx yyy..2. Tes | +| 74 20 73 65 63 6F 6E 64 20 61 72 67 75 6D 65 6E | t second argumen | +| 74 20 6E 6F 74 20 22 3D 22 2E 0A 40 70 20 69 6E | t not "="..@p in | +| 64 65 6E 74 61 74 69 6F 6E 20 78 20 73 6C 6F 74 | dentation x slot | +| 68 0A 0A 33 2E 20 54 65 73 74 20 74 68 69 72 64 | h..3. Test third | +| 20 61 72 67 75 6D 65 6E 74 20 69 73 20 6E 6F 74 | argument is not | +| 20 6C 65 67 61 6C 2E 0A 40 70 20 69 6E 64 65 6E | legal..@p inden | +| 74 61 74 69 6F 6E 20 3D 20 73 6C 6F 74 68 0A 0A | tation = sloth.. | +| 34 2E 20 54 65 73 74 20 74 68 69 72 64 20 61 72 | 4. Test third ar | +| 67 75 6D 65 6E 74 20 69 73 20 6E 6F 6E 65 2E 0A | gument is none.. | +| 40 70 20 69 6E 64 65 6E 74 61 74 69 6F 6E 20 3D | @p indentation = | +| 20 6E 6F 6E 65 0A 0A 35 2E 20 54 65 73 74 20 74 | none..5. Test t | +| 68 69 72 64 20 61 72 67 75 6D 65 6E 74 20 69 73 | hird argument is | +| 20 62 6C 61 6E 6B 2E 0A 36 2E 20 54 65 73 74 20 | blank..6. Test | +| 70 72 61 67 6D 61 20 6F 70 70 6F 73 65 73 20 65 | pragma opposes e | +| 61 72 6C 69 65 72 20 70 72 61 67 6D 61 2E 0A 40 | arlier pragma..@ | +| 70 20 69 6E 64 65 6E 74 61 74 69 6F 6E 20 3D 20 | p indentation = | +| 62 6C 61 6E 6B 0A 0A 37 2E 20 54 65 73 74 20 70 | blank..7. Test p | +| 72 61 67 6D 61 20 64 6F 65 73 20 6E 6F 74 20 6F | ragma does not o | +| 70 70 6F 73 65 20 65 61 72 6C 69 65 72 20 70 72 | ppose earlier pr | +| 61 67 6D 61 2E 0A 40 70 20 69 6E 64 65 6E 74 61 | agma..@p indenta | +| 74 69 6F 6E 20 3D 20 6E 6F 6E 65 0A 0A | tion = none.. | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| SC23: Test syntax checking of indentation pragma.<010> +00002 00002| <010> +00003 00003| 1. Test not three arguments.<010> +00004 00004| @p indentation<010> +00005 00005| @p indentation =<010> +00006 00006| @p indentation = xxx yyy<010> +00007 00007| <010> +00008 00008| 2. Test second argument not "=".<010> +00009 00009| @p indentation x sloth<010> +00010 00010| <010> +00011 00011| 3. Test third argument is not legal.<010> +00012 00012| @p indentation = sloth<010> +00013 00013| <010> +00014 00014| 4. Test third argument is none.<010> +00015 00015| @p indentation = none<010> +00016 00016| <010> +00017 00017| 5. Test third argument is blank.<010> +00018 00018| 6. Test pragma opposes earlier pragma.<010> +00019 00019| @p indentation = blank<010> +00020 00020| <010> +00021 00021| 7. Test pragma does not oppose earlier pragma.<010> +00022 00022| @p indentation = none<010> +00023 00023| <010> +00024 00024| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 8 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="SC23: Test syntax checking of indentation pragma.<010> +<010> +1. Test not three arguments.<010> +" +0007[01]: Text. Text scrap[Grey]="<010> +2. Test second argument not "=".<010> +" +0010[01]: Text. Text scrap[Grey]="<010> +3. Test third argument is not legal.<010> +" +0013[01]: Text. Text scrap[Grey]="<010> +4. Test third argument is none.<010> +" +0016[01]: Text. Text scrap[Grey]="<010> +5. Test third argument is blank.<010> +6. Test pragma opposes earlier pragma.<010> +" +0020[01]: Text. Text scrap[Grey]="<010> +7. Test pragma does not oppose earlier pragma.<010> +" +0023[01]: Text. Text scrap[White]="<010> +" +0024[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + +Macro table dump skipped (Parser was not invoked). +Document list dump skipped (Parser was not invoked). + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| SC23: Test syntax checking of indentation pragma. + 2 2| + 3 3| 1. Test not three arguments. + 4 4| @p indentation + Error|.^This indentation pragma has the wrong number of arguments. + |.^The correct format is: "@p indentation = none|blank". + |.^Pragma ignored. + 5 5| @p indentation = + Error|.^This indentation pragma has the wrong number of arguments. + |.^The correct format is: "@p indentation = none|blank". + |.^Pragma ignored. + 6 6| @p indentation = xxx yyy + Error|.^This indentation pragma has the wrong number of arguments. + |.^The correct format is: "@p indentation = none|blank". + |.^Pragma ignored. + 7 7| + 8 8| 2. Test second argument not "=". + 9 9| @p indentation x sloth + |.^The correct format is: "@p indentation = none|blank". + |.^Pragma ignored. + Error|................^Expecting "=". + 10 10| + 11 11| 3. Test third argument is not legal. + 12 12| @p indentation = sloth + |.^The correct format is: "@p indentation = none|blank". + |.^Pragma ignored. + Error|..................^Expecting either "none" or "blank". + 13 13| + 14 14| 4. Test third argument is none. + 15 15| @p indentation = none + |.^This pragma is opposed by the pragma at line 19. + 16 16| + 17 17| 5. Test third argument is blank. + 18 18| 6. Test pragma opposes earlier pragma. + 19 19| @p indentation = blank + Error|.^This pragma opposes the pragma at line 15. + |.^You can have as many indentation pragmas as you like, + |.^but they all have to be the same! + |.^Pragma ignored. + 20 20| + 21 21| 7. Test pragma does not oppose earlier pragma. + 22 22| @p indentation = none + 23 23| + | <End-Of-File> +------------+------------------------------------------------------------------- + +There were 6 Errors. diff --git a/web/funnelAC/answers/sc25.lis b/web/funnelAC/answers/sc25.lis new file mode 100644 index 0000000000..0182f4e147 --- /dev/null +++ b/web/funnelAC/answers/sc25.lis @@ -0,0 +1,85 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 32 35 3A 20 54 65 73 74 20 73 79 6E 74 61 | SC25: Test synta | +| 78 20 63 68 65 63 6B 69 6E 67 20 6F 66 20 6E 65 | x checking of ne | +| 77 20 70 61 67 65 20 74 79 70 65 73 65 74 74 65 | w page typesette | +| 72 20 64 69 72 65 63 74 69 76 65 2E 0A 0A 31 2E | r directive...1. | +| 20 4D 61 6B 65 20 73 75 72 65 20 74 68 61 74 20 | Make sure that | +| 61 20 6C 65 67 61 6C 20 6E 65 77 20 70 61 67 65 | a legal new page | +| 20 64 69 72 65 63 74 69 76 65 20 69 73 20 4F 4B | directive is OK | +| 2E 0A 40 74 20 6E 65 77 5F 70 61 67 65 0A 0A 32 | ..@t new_page..2 | +| 2E 20 43 68 65 63 6B 20 74 68 61 74 20 69 74 20 | . Check that it | +| 64 6F 65 73 6E 27 74 20 73 74 61 6E 64 20 66 6F | doesn't stand fo | +| 72 20 61 6E 79 20 6E 6F 6E 73 65 6E 73 65 2E 0A | r any nonsense.. | +| 40 74 20 6E 65 77 5F 70 61 67 65 20 6E 6F 6E 73 | @t new_page nons | +| 65 6E 73 65 0A 0A | ense.. | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| SC25: Test syntax checking of new page typesetter directive.<010> +00002 00002| <010> +00003 00003| 1. Make sure that a legal new page directive is OK.<010> +00004 00004| @t new_page<010> +00005 00005| <010> +00006 00006| 2. Check that it doesn't stand for any nonsense.<010> +00007 00007| @t new_page nonsense<010> +00008 00008| <010> +00009 00009| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 5 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="SC25: Test syntax checking of new page typesetter directive.<010> +<010> +1. Make sure that a legal new page directive is OK.<010> +" +0004[01]: @t.. Newpage. +0005[01]: Text. Text scrap[Grey]="<010> +2. Check that it doesn't stand for any nonsense.<010> +" +0008[01]: Text. Text scrap[White]="<010> +" +0009[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + +Macro table dump skipped (Parser was not invoked). +Document list dump skipped (Parser was not invoked). + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| SC25: Test syntax checking of new page typesetter directive. + 2 2| + 3 3| 1. Make sure that a legal new page directive is OK. + 4 4| @t new_page + 5 5| + 6 6| 2. Check that it doesn't stand for any nonsense. + 7 7| @t new_page nonsense + Error|.............^The new_page directive does not take arguments. + |.............^Directive ignored. + 8 8| + | <End-Of-File> +------------+------------------------------------------------------------------- + +There was 1 Error. diff --git a/web/funnelAC/answers/sc26.lis b/web/funnelAC/answers/sc26.lis new file mode 100644 index 0000000000..5cb968aa74 --- /dev/null +++ b/web/funnelAC/answers/sc26.lis @@ -0,0 +1,87 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 32 36 3A 20 54 65 73 74 20 73 79 6E 74 61 | SC26: Test synta | +| 78 20 63 68 65 63 6B 69 6E 67 20 6F 66 20 74 61 | x checking of ta | +| 62 6C 65 20 6F 66 20 63 6F 6E 74 65 6E 74 73 20 | ble of contents | +| 74 79 70 65 73 65 74 74 69 6E 67 20 70 72 61 67 | typesetting prag | +| 6D 61 2E 0A 0A 31 2E 20 4D 61 6B 65 20 73 75 72 | ma...1. Make sur | +| 65 20 74 68 61 74 20 61 20 6C 65 67 61 6C 20 74 | e that a legal t | +| 61 62 6C 65 20 6F 66 20 63 6F 6E 74 65 6E 74 73 | able of contents | +| 20 64 69 72 65 63 74 69 76 65 20 69 73 20 4F 4B | directive is OK | +| 2E 0A 40 74 20 74 61 62 6C 65 5F 6F 66 5F 63 6F | ..@t table_of_co | +| 6E 74 65 6E 74 73 0A 0A 32 2E 20 43 68 65 63 6B | ntents..2. Check | +| 20 74 68 61 74 20 69 74 20 64 6F 65 73 6E 27 74 | that it doesn't | +| 20 73 74 61 6E 64 20 66 6F 72 20 61 6E 79 20 6E | stand for any n | +| 6F 6E 73 65 6E 73 65 2E 0A 40 74 20 74 61 62 6C | onsense..@t tabl | +| 65 5F 6F 66 5F 63 6F 6E 74 65 6E 74 73 20 6E 6F | e_of_contents no | +| 6E 73 65 6E 73 65 0A 0A | nsense.. | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| SC26: Test syntax checking of table of contents typesetting pragma.<010> +00002 00002| <010> +00003 00003| 1. Make sure that a legal table of contents directive is OK.<010> +00004 00004| @t table_of_contents<010> +00005 00005| <010> +00006 00006| 2. Check that it doesn't stand for any nonsense.<010> +00007 00007| @t table_of_contents nonsense<010> +00008 00008| <010> +00009 00009| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 5 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="SC26: Test syntax checking of table of contents typesetting pragma.<010> +<010> +1. Make sure that a legal table of contents directive is OK.<010> +" +0004[01]: @t.. TOC. +0005[01]: Text. Text scrap[Grey]="<010> +2. Check that it doesn't stand for any nonsense.<010> +" +0008[01]: Text. Text scrap[White]="<010> +" +0009[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + +Macro table dump skipped (Parser was not invoked). +Document list dump skipped (Parser was not invoked). + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| SC26: Test syntax checking of table of contents typesetting pragma. + 2 2| + 3 3| 1. Make sure that a legal table of contents directive is OK. + 4 4| @t table_of_contents + 5 5| + 6 6| 2. Check that it doesn't stand for any nonsense. + 7 7| @t table_of_contents nonsense + Error|......................^The table_of_contents directive does not take arguments. + |......................^Directive ignored. + 8 8| + | <End-Of-File> +------------+------------------------------------------------------------------- + +There was 1 Error. diff --git a/web/funnelAC/answers/sc27.lis b/web/funnelAC/answers/sc27.lis new file mode 100644 index 0000000000..404a5b2827 --- /dev/null +++ b/web/funnelAC/answers/sc27.lis @@ -0,0 +1,145 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 32 37 3A 20 54 65 73 74 20 73 79 6E 74 61 | SC27: Test synta | +| 78 20 63 68 65 63 6B 69 6E 67 20 6F 66 20 76 73 | x checking of vs | +| 6B 69 70 20 74 79 70 65 73 65 74 74 69 6E 67 20 | kip typesetting | +| 64 69 72 65 63 74 69 76 65 2E 0A 0A 31 2E 20 54 | directive...1. T | +| 65 73 74 20 6E 6F 74 20 65 78 61 63 74 6C 79 20 | est not exactly | +| 74 68 72 65 65 20 61 72 67 75 6D 65 6E 74 73 20 | three arguments | +| 28 69 6E 63 6C 75 64 65 73 20 76 73 6B 69 70 29 | (includes vskip) | +| 2E 0A 40 74 20 76 73 6B 69 70 0A 40 74 20 76 73 | ..@t vskip.@t vs | +| 6B 69 70 20 6F 6E 65 0A 40 74 20 76 73 6B 69 70 | kip one.@t vskip | +| 20 6F 6E 65 20 74 77 6F 20 74 68 72 65 65 20 66 | one two three f | +| 6F 75 72 0A 0A 32 2E 20 54 65 73 74 20 74 68 69 | our..2. Test thi | +| 72 64 20 61 72 67 75 6D 65 6E 74 20 6E 6F 74 20 | rd argument not | +| 22 6D 6D 22 2E 0A 40 74 20 76 73 6B 69 70 20 33 | "mm"..@t vskip 3 | +| 32 20 78 78 0A 0A 33 2E 20 54 65 73 74 20 73 65 | 2 xx..3. Test se | +| 63 6F 6E 64 20 61 72 67 75 6D 65 6E 74 20 68 61 | cond argument ha | +| 73 20 62 61 64 20 64 69 67 69 74 2E 0A 40 74 20 | s bad digit..@t | +| 76 73 6B 69 70 20 33 66 20 6D 6D 0A 0A 34 2E 20 | vskip 3f mm..4. | +| 54 65 73 74 20 6E 75 6D 62 65 72 20 68 61 73 20 | Test number has | +| 6D 6F 72 65 20 74 68 61 6E 20 74 68 72 65 65 20 | more than three | +| 64 69 67 69 74 73 0A 0A 40 74 20 76 73 6B 69 70 | digits..@t vskip | +| 20 34 33 35 35 20 6D 6D 0A 0A 35 2E 20 54 65 73 | 4355 mm..5. Tes | +| 74 20 61 20 6C 65 67 61 6C 20 6F 6E 65 20 74 6F | t a legal one to | +| 6F 2E 0A 40 74 20 76 73 6B 69 70 20 32 30 20 6D | o..@t vskip 20 m | +| 6D 0A 0A | m.. | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| SC27: Test syntax checking of vskip typesetting directive.<010> +00002 00002| <010> +00003 00003| 1. Test not exactly three arguments (includes vskip).<010> +00004 00004| @t vskip<010> +00005 00005| @t vskip one<010> +00006 00006| @t vskip one two three four<010> +00007 00007| <010> +00008 00008| 2. Test third argument not "mm".<010> +00009 00009| @t vskip 32 xx<010> +00010 00010| <010> +00011 00011| 3. Test second argument has bad digit.<010> +00012 00012| @t vskip 3f mm<010> +00013 00013| <010> +00014 00014| 4. Test number has more than three digits<010> +00015 00015| <010> +00016 00016| @t vskip 4355 mm<010> +00017 00017| <010> +00018 00018| 5. Test a legal one too.<010> +00019 00019| @t vskip 20 mm<010> +00020 00020| <010> +00021 00021| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 8 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="SC27: Test syntax checking of vskip typesetting directive.<010> +<010> +1. Test not exactly three arguments (includes vskip).<010> +" +0007[01]: Text. Text scrap[Grey]="<010> +2. Test third argument not "mm".<010> +" +0010[01]: Text. Text scrap[Grey]="<010> +3. Test second argument has bad digit.<010> +" +0013[01]: Text. Text scrap[Grey]="<010> +4. Test number has more than three digits<010> +<010> +" +0017[01]: Text. Text scrap[Grey]="<010> +5. Test a legal one too.<010> +" +0019[01]: @t.. Vertical skip. Vertical space skipped=20mm. +0020[01]: Text. Text scrap[White]="<010> +" +0021[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + +Macro table dump skipped (Parser was not invoked). +Document list dump skipped (Parser was not invoked). + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| SC27: Test syntax checking of vskip typesetting directive. + 2 2| + 3 3| 1. Test not exactly three arguments (includes vskip). + 4 4| @t vskip + Error|.^This directive has the wrong number of arguments. + |.^The correct format is: "@t vskip <num> mm". + |.^Directive ignored. + 5 5| @t vskip one + Error|.^This directive has the wrong number of arguments. + |.^The correct format is: "@t vskip <num> mm". + |.^Directive ignored. + 6 6| @t vskip one two three four + Error|.^This directive has the wrong number of arguments. + |.^The correct format is: "@t vskip <num> mm". + |.^Directive ignored. + 7 7| + 8 8| 2. Test third argument not "mm". + 9 9| @t vskip 32 xx + |.^The correct format is: "@t vskip <num> mm". + |.^Directive ignored. + Error|.............^Expecting "mm". + 10 10| + 11 11| 3. Test second argument has bad digit. + 12 12| @t vskip 3f mm + Error|...........^Illegal digit. + |...........^Value must consist entirely of decimal digits. + |...........^Directive ignored. + 13 13| + 14 14| 4. Test number has more than three digits + 15 15| + 16 16| @t vskip 4355 mm + Error|..........^Too many digits. The maximum is three. + |..........^Directive ignored. + 17 17| + 18 18| 5. Test a legal one too. + 19 19| @t vskip 20 mm + 20 20| + | <End-Of-File> +------------+------------------------------------------------------------------- + +There were 6 Errors. diff --git a/web/funnelAC/answers/sc28.lis b/web/funnelAC/answers/sc28.lis new file mode 100644 index 0000000000..8208193d4b --- /dev/null +++ b/web/funnelAC/answers/sc28.lis @@ -0,0 +1,253 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 32 38 3A 20 54 65 73 74 20 73 79 6E 74 61 | SC28: Test synta | +| 78 20 63 68 65 63 6B 69 6E 67 20 6F 66 20 74 69 | x checking of ti | +| 74 6C 65 20 74 79 70 65 73 65 74 74 69 6E 67 20 | tle typesetting | +| 64 69 72 65 63 74 69 76 65 2E 0A 0A 31 2E 20 54 | directive...1. T | +| 65 73 74 20 6C 65 73 73 20 74 68 61 6E 20 66 6F | est less than fo | +| 75 72 20 61 72 67 75 6D 65 6E 74 73 20 28 69 6E | ur arguments (in | +| 63 6C 75 64 65 73 20 74 69 74 6C 65 29 2E 0A 4E | cludes title)..N | +| 6F 74 65 3A 20 54 68 65 20 74 69 74 6C 65 20 63 | ote: The title c | +| 6F 6D 6D 61 6E 64 20 70 75 6C 6C 73 20 61 20 68 | ommand pulls a h | +| 61 63 6B 20 74 72 65 61 74 69 6E 67 20 74 68 65 | ack treating the | +| 20 72 65 73 74 20 6F 66 20 74 68 65 20 6C 69 6E | rest of the lin | +| 65 20 61 66 74 65 72 0A 74 77 6F 20 61 72 67 75 | e after.two argu | +| 6D 65 6E 74 73 20 61 73 20 74 68 65 20 73 74 72 | ments as the str | +| 69 6E 67 2E 20 53 6F 20 69 74 20 63 61 6E 27 74 | ing. So it can't | +| 20 64 65 74 65 63 74 20 61 6E 20 45 58 43 45 53 | detect an EXCES | +| 53 20 6F 66 20 61 72 67 75 6D 65 6E 74 73 21 0A | S of arguments!. | +| 40 74 20 74 69 74 6C 65 0A 40 74 20 74 69 74 6C | @t title.@t titl | +| 65 20 74 77 6F 0A 40 74 20 74 69 74 6C 65 20 74 | e two.@t title t | +| 77 6F 20 74 68 72 65 65 0A 0A 32 2E 20 54 65 73 | wo three..2. Tes | +| 74 20 6F 75 74 20 62 61 64 20 66 6F 6E 74 2E 0A | t out bad font.. | +| 40 74 20 74 69 74 6C 65 20 73 6C 6F 74 68 66 6F | @t title slothfo | +| 6E 74 20 6C 65 66 74 20 22 53 6C 6F 74 68 22 0A | nt left "Sloth". | +| 0A 33 2E 20 54 65 73 74 20 6F 75 74 20 62 61 64 | .3. Test out bad | +| 20 61 6C 69 67 6E 6D 65 6E 74 2E 0A 40 74 20 74 | alignment..@t t | +| 69 74 6C 65 20 74 69 74 6C 65 66 6F 6E 74 20 77 | itle titlefont w | +| 65 73 74 77 61 72 64 20 22 53 6C 6F 74 68 22 0A | estward "Sloth". | +| 0A 34 2E 20 54 65 73 74 20 6F 75 74 20 66 75 6E | .4. Test out fun | +| 6E 79 20 73 74 72 69 6E 67 73 2E 0A 40 74 20 74 | ny strings..@t t | +| 69 74 6C 65 20 74 69 74 6C 65 66 6F 6E 74 20 6C | itle titlefont l | +| 65 66 74 20 22 0A 40 74 20 74 69 74 6C 65 20 74 | eft ".@t title t | +| 69 74 6C 65 66 6F 6E 74 20 6C 65 66 74 20 22 22 | itlefont left "" | +| 0A 40 21 20 4E 6F 74 65 3A 20 54 68 65 20 66 6F | .@! Note: The fo | +| 6C 6C 6F 77 69 6E 67 2C 20 62 65 6C 69 65 76 65 | llowing, believe | +| 20 69 74 20 6F 72 20 6E 6F 74 2C 20 69 73 20 61 | it or not, is a | +| 63 74 75 61 6C 6C 79 20 4C 45 47 41 4C 21 0A 40 | ctually LEGAL!.@ | +| 74 20 74 69 74 6C 65 20 74 69 74 6C 65 66 6F 6E | t title titlefon | +| 74 20 6C 65 66 74 20 22 73 6C 6F 74 68 22 73 6C | t left "sloth"sl | +| 6F 74 68 22 0A 0A 35 2E 20 54 65 73 74 20 6F 75 | oth"..5. Test ou | +| 74 20 61 6C 6C 20 63 6F 6D 62 69 6E 61 74 69 6F | t all combinatio | +| 6E 73 20 6F 66 20 66 6F 6E 74 20 61 6E 64 20 61 | ns of font and a | +| 6C 69 67 6E 6D 65 6E 74 2E 0A 40 74 20 74 69 74 | lignment..@t tit | +| 6C 65 20 74 69 74 6C 65 66 6F 6E 74 20 20 20 20 | le titlefont | +| 20 20 6C 65 66 74 20 20 20 22 53 6C 6F 74 68 22 | left "Sloth" | +| 0A 40 74 20 74 69 74 6C 65 20 74 69 74 6C 65 66 | .@t title titlef | +| 6F 6E 74 20 20 20 20 20 20 63 65 6E 74 72 65 20 | ont centre | +| 22 53 6C 6F 74 68 22 0A 40 74 20 74 69 74 6C 65 | "Sloth".@t title | +| 20 74 69 74 6C 65 66 6F 6E 74 20 20 20 20 20 20 | titlefont | +| 72 69 67 68 74 20 20 22 53 6C 6F 74 68 22 0A 40 | right "Sloth".@ | +| 74 20 74 69 74 6C 65 20 73 6D 61 6C 6C 74 69 74 | t title smalltit | +| 6C 65 66 6F 6E 74 20 6C 65 66 74 20 20 20 22 53 | lefont left "S | +| 6C 6F 74 68 22 0A 40 74 20 74 69 74 6C 65 20 73 | loth".@t title s | +| 6D 61 6C 6C 74 69 74 6C 65 66 6F 6E 74 20 63 65 | malltitlefont ce | +| 6E 74 72 65 20 22 53 6C 6F 74 68 22 0A 40 74 20 | ntre "Sloth".@t | +| 74 69 74 6C 65 20 73 6D 61 6C 6C 74 69 74 6C 65 | title smalltitle | +| 66 6F 6E 74 20 72 69 67 68 74 20 20 22 53 6C 6F | font right "Slo | +| 74 68 22 0A 40 74 20 74 69 74 6C 65 20 6E 6F 72 | th".@t title nor | +| 6D 61 6C 66 6F 6E 74 20 20 20 20 20 6C 65 66 74 | malfont left | +| 20 20 20 22 53 6C 6F 74 68 22 0A 40 74 20 74 69 | "Sloth".@t ti | +| 74 6C 65 20 6E 6F 72 6D 61 6C 66 6F 6E 74 20 20 | tle normalfont | +| 20 20 20 63 65 6E 74 72 65 20 22 53 6C 6F 74 68 | centre "Sloth | +| 22 0A 40 74 20 74 69 74 6C 65 20 6E 6F 72 6D 61 | ".@t title norma | +| 6C 66 6F 6E 74 20 20 20 20 20 72 69 67 68 74 20 | lfont right | +| 20 22 53 6C 6F 74 68 22 0A 0A 36 2E 20 54 65 73 | "Sloth"..6. Tes | +| 74 20 6D 69 73 73 70 65 6C 6C 69 6E 67 20 6F 66 | t misspelling of | +| 20 63 65 6E 74 72 65 20 28 52 6F 73 73 27 73 20 | centre (Ross's | +| 72 65 76 65 6E 67 65 29 2E 0A 40 74 20 74 69 74 | revenge)..@t tit | +| 6C 65 20 6E 6F 72 6D 61 6C 66 6F 6E 74 20 20 20 | le normalfont | +| 20 20 63 65 6E 74 65 72 20 22 53 6C 6F 74 68 22 | center "Sloth" | +| 0A | . | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| SC28: Test syntax checking of title typesetting directive.<010> +00002 00002| <010> +00003 00003| 1. Test less than four arguments (includes title).<010> +00004 00004| Note: The title command pulls a hack treating the rest of the line after<010> +00005 00005| two arguments as the string. So it can't detect an EXCESS of arguments!<010> +00006 00006| @t title<010> +00007 00007| @t title two<010> +00008 00008| @t title two three<010> +00009 00009| <010> +00010 00010| 2. Test out bad font.<010> +00011 00011| @t title slothfont left "Sloth"<010> +00012 00012| <010> +00013 00013| 3. Test out bad alignment.<010> +00014 00014| @t title titlefont westward "Sloth"<010> +00015 00015| <010> +00016 00016| 4. Test out funny strings.<010> +00017 00017| @t title titlefont left "<010> +00018 00018| @t title titlefont left ""<010> +00019 00019| @! Note: The following, believe it or not, is actually LEGAL!<010> +00020 00020| @t title titlefont left "sloth"sloth"<010> +00021 00021| <010> +00022 00022| 5. Test out all combinations of font and alignment.<010> +00023 00023| @t title titlefont left "Sloth"<010> +00024 00024| @t title titlefont centre "Sloth"<010> +00025 00025| @t title titlefont right "Sloth"<010> +00026 00026| @t title smalltitlefont left "Sloth"<010> +00027 00027| @t title smalltitlefont centre "Sloth"<010> +00028 00028| @t title smalltitlefont right "Sloth"<010> +00029 00029| @t title normalfont left "Sloth"<010> +00030 00030| @t title normalfont centre "Sloth"<010> +00031 00031| @t title normalfont right "Sloth"<010> +00032 00032| <010> +00033 00033| 6. Test misspelling of centre (Ross's revenge).<010> +00034 00034| @t title normalfont center "Sloth"<010> +00035 00035| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 18 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="SC28: Test syntax checking of title typesetting directive.<010> +<010> +1. Test less than four arguments (includes title).<010> +Note: The title command pulls a hack treating the rest of the line after<010> +two arguments as the string. So it can't detect an EXCESS of arguments!<010> +" +0009[01]: Text. Text scrap[Grey]="<010> +2. Test out bad font.<010> +" +0012[01]: Text. Text scrap[Grey]="<010> +3. Test out bad alignment.<010> +" +0015[01]: Text. Text scrap[Grey]="<010> +4. Test out funny strings.<010> +" +0018[01]: @t.. Title. Font=Title, Alignment=Left. Title text follows: +Text scrap[Grey]="" +0020[01]: @t.. Title. Font=Title, Alignment=Left. Title text follows: +Text scrap[Grey]="sloth"sloth" +0021[01]: Text. Text scrap[Grey]="<010> +5. Test out all combinations of font and alignment.<010> +" +0023[01]: @t.. Title. Font=Title, Alignment=Left. Title text follows: +Text scrap[Grey]="Sloth" +0024[01]: @t.. Title. Font=Title, Alignment=Centre. Title text follows: +Text scrap[Grey]="Sloth" +0025[01]: @t.. Title. Font=Title, Alignment=Right. Title text follows: +Text scrap[Grey]="Sloth" +0026[01]: @t.. Title. Font=Small Title, Alignment=Left. Title text follows: +Text scrap[Grey]="Sloth" +0027[01]: @t.. Title. Font=Small Title, Alignment=Centre. Title text follows: +Text scrap[Grey]="Sloth" +0028[01]: @t.. Title. Font=Small Title, Alignment=Right. Title text follows: +Text scrap[Grey]="Sloth" +0029[01]: @t.. Title. Font=Normal, Alignment=Left. Title text follows: +Text scrap[Grey]="Sloth" +0030[01]: @t.. Title. Font=Normal, Alignment=Centre. Title text follows: +Text scrap[Grey]="Sloth" +0031[01]: @t.. Title. Font=Normal, Alignment=Right. Title text follows: +Text scrap[Grey]="Sloth" +0032[01]: Text. Text scrap[Grey]="<010> +6. Test misspelling of centre (Ross's revenge).<010> +" +0035[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + +Macro table dump skipped (Parser was not invoked). +Document list dump skipped (Parser was not invoked). + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| SC28: Test syntax checking of title typesetting directive. + 2 2| + 3 3| 1. Test less than four arguments (includes title). + 4 4| Note: The title command pulls a hack treating the rest of the line after + 5 5| two arguments as the string. So it can't detect an EXCESS of arguments! + 6 6| @t title + Error|.^This directive has too few arguments. + |.^The correct format is: "@t title <font> <align> <text>". + |.^ where <font> = titlefont | smalltitlefont | normalfont. + |.^ and <align> = left | centre | right. + |.^ and <text> = text delimited by double quotes. + |.^Directive ignored. + 7 7| @t title two + Error|.^This directive has too few arguments. + |.^The correct format is: "@t title <font> <align> <text>". + |.^ where <font> = titlefont | smalltitlefont | normalfont. + |.^ and <align> = left | centre | right. + |.^ and <text> = text delimited by double quotes. + |.^Directive ignored. + 8 8| @t title two three + Error|.^This directive has too few arguments. + |.^The correct format is: "@t title <font> <align> <text>". + |.^ where <font> = titlefont | smalltitlefont | normalfont. + |.^ and <align> = left | centre | right. + |.^ and <text> = text delimited by double quotes. + |.^Directive ignored. + 9 9| + 10 10| 2. Test out bad font. + 11 11| @t title slothfont left "Sloth" + Error|..........^Expecting one of {titlefont,smalltitlefont,normalfont}. + |..........^Directive ignored. + 12 12| + 13 13| 3. Test out bad alignment. + 14 14| @t title titlefont westward "Sloth" + Error|....................^Expecting one of {left,right,centre}. + |....................^Directive ignored. + 15 15| + 16 16| 4. Test out funny strings. + 17 17| @t title titlefont left " + Error|.........................^Text argument must be delimited by double quotes. + |.........................^Directive ignored. + 18 18| @t title titlefont left "" + 19 19| @! Note: The following, believe it or not, is actually LEGAL! + 20 20| @t title titlefont left "sloth"sloth" + 21 21| + 22 22| 5. Test out all combinations of font and alignment. + 23 23| @t title titlefont left "Sloth" + 24 24| @t title titlefont centre "Sloth" + 25 25| @t title titlefont right "Sloth" + 26 26| @t title smalltitlefont left "Sloth" + 27 27| @t title smalltitlefont centre "Sloth" + 28 28| @t title smalltitlefont right "Sloth" + 29 29| @t title normalfont left "Sloth" + 30 30| @t title normalfont centre "Sloth" + 31 31| @t title normalfont right "Sloth" + 32 32| + 33 33| 6. Test misspelling of centre (Ross's revenge). + 34 34| @t title normalfont center "Sloth" + Error|.........................^Expecting one of {left,right,centre}. + |.........................^Note: Centre is spelt centRE, not centER. + |.........................^ This is my revenge for years of getting error messages + |.........................^ from TeX whenever I accidentally wrote \centreline - Ross Williams. + |.........................^Directive ignored. + | <End-Of-File> +------------+------------------------------------------------------------------- + +There were 7 Errors. diff --git a/web/funnelAC/answers/sc29.lis b/web/funnelAC/answers/sc29.lis new file mode 100644 index 0000000000..4253f03689 --- /dev/null +++ b/web/funnelAC/answers/sc29.lis @@ -0,0 +1,161 @@ +FUNNELWEB LISTING FILE +====================== + +Dump of mapped file "<<Suppressed>>". + +MEMORY DUMP OF MAPPED FILE +========================== + ++-------------------------------------------------+------------------+ +| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | ++-------------------------------------------------+------------------+ +| 53 43 32 39 3A 20 54 65 73 74 20 73 79 6E 74 61 | SC29: Test synta | +| 78 20 63 68 65 63 6B 69 6E 67 20 6F 66 20 74 79 | x checking of ty | +| 70 65 73 65 74 74 65 72 20 70 72 61 67 6D 61 2E | pesetter pragma. | +| 0A 0A 31 2E 20 54 65 73 74 20 6E 6F 74 20 74 68 | ..1. Test not th | +| 72 65 65 20 61 72 67 75 6D 65 6E 74 73 2E 0A 40 | ree arguments..@ | +| 70 20 74 79 70 65 73 65 74 74 65 72 0A 40 70 20 | p typesetter.@p | +| 74 79 70 65 73 65 74 74 65 72 20 3D 0A 40 70 20 | typesetter =.@p | +| 74 79 70 65 73 65 74 74 65 72 20 3D 20 78 78 78 | typesetter = xxx | +| 20 79 79 79 0A 0A 32 2E 20 54 65 73 74 20 73 65 | yyy..2. Test se | +| 63 6F 6E 64 20 61 72 67 75 6D 65 6E 74 20 6E 6F | cond argument no | +| 74 20 22 3D 22 2E 0A 40 70 20 74 79 70 65 73 65 | t "="..@p typese | +| 74 74 65 72 20 78 20 73 6C 6F 74 68 0A 0A 33 2E | tter x sloth..3. | +| 20 54 65 73 74 20 74 68 69 72 64 20 61 72 67 75 | Test third argu | +| 6D 65 6E 74 20 69 73 20 6E 6F 74 20 6C 65 67 61 | ment is not lega | +| 6C 2E 0A 40 70 20 74 79 70 65 73 65 74 74 65 72 | l..@p typesetter | +| 20 3D 20 73 6C 6F 74 68 0A 0A 34 2E 20 54 65 73 | = sloth..4. Tes | +| 74 20 74 68 69 72 64 20 61 72 67 75 6D 65 6E 74 | t third argument | +| 20 69 73 20 6E 6F 6E 65 2E 0A 40 70 20 74 79 70 | is none..@p typ | +| 65 73 65 74 74 65 72 20 3D 20 6E 6F 6E 65 0A 0A | esetter = none.. | +| 35 2E 20 54 65 73 74 20 74 68 69 72 64 20 61 72 | 5. Test third ar | +| 67 75 6D 65 6E 74 20 69 73 20 74 65 78 2E 0A 36 | gument is tex..6 | +| 2E 20 54 65 73 74 20 70 72 61 67 6D 61 20 6F 70 | . Test pragma op | +| 70 6F 73 65 73 20 65 61 72 6C 69 65 72 20 70 72 | poses earlier pr | +| 61 67 6D 61 2E 0A 40 70 20 74 79 70 65 73 65 74 | agma..@p typeset | +| 74 65 72 20 3D 20 74 65 78 0A 0A 37 2E 20 54 65 | ter = tex..7. Te | +| 73 74 20 70 72 61 67 6D 61 20 64 6F 65 73 20 6E | st pragma does n | +| 6F 74 20 6F 70 70 6F 73 65 20 65 61 72 6C 69 65 | ot oppose earlie | +| 72 20 70 72 61 67 6D 61 2E 0A 40 70 20 74 79 70 | r pragma..@p typ | +| 65 73 65 74 74 65 72 20 3D 20 6E 6F 6E 65 0A 0A | esetter = none.. | ++-------------------------------------------------+------------------+ + + +=========================== Start of LINE LIST DUMP ============================ + +Globl Local| Text +-----------+-------------------------------------------------------------------- +00001 00001| SC29: Test syntax checking of typesetter pragma.<010> +00002 00002| <010> +00003 00003| 1. Test not three arguments.<010> +00004 00004| @p typesetter<010> +00005 00005| @p typesetter =<010> +00006 00006| @p typesetter = xxx yyy<010> +00007 00007| <010> +00008 00008| 2. Test second argument not "=".<010> +00009 00009| @p typesetter x sloth<010> +00010 00010| <010> +00011 00011| 3. Test third argument is not legal.<010> +00012 00012| @p typesetter = sloth<010> +00013 00013| <010> +00014 00014| 4. Test third argument is none.<010> +00015 00015| @p typesetter = none<010> +00016 00016| <010> +00017 00017| 5. Test third argument is tex.<010> +00018 00018| 6. Test pragma opposes earlier pragma.<010> +00019 00019| @p typesetter = tex<010> +00020 00020| <010> +00021 00021| 7. Test pragma does not oppose earlier pragma.<010> +00022 00022| @p typesetter = none<010> +00023 00023| <010> +00024 00024| <End-Of-File><010> +-----------+-------------------------------------------------------------------- +Globl Local| Text + +============================ End of LINE LIST DUMP ============================= + + +=========================== Start of TOKEN LIST DUMP =========================== + +Summary: There are 8 tokens in the token list. + +Line[Column]: Token Description +------------------------------- + +0001[01]: Text. Text scrap[Grey]="SC29: Test syntax checking of typesetter pragma.<010> +<010> +1. Test not three arguments.<010> +" +0007[01]: Text. Text scrap[Grey]="<010> +2. Test second argument not "=".<010> +" +0010[01]: Text. Text scrap[Grey]="<010> +3. Test third argument is not legal.<010> +" +0013[01]: Text. Text scrap[Grey]="<010> +4. Test third argument is none.<010> +" +0016[01]: Text. Text scrap[Grey]="<010> +5. Test third argument is tex.<010> +6. Test pragma opposes earlier pragma.<010> +" +0020[01]: Text. Text scrap[Grey]="<010> +7. Test pragma does not oppose earlier pragma.<010> +" +0023[01]: Text. Text scrap[White]="<010> +" +0024[01]: End Of File. +============================ End of TOKEN LIST DUMP ============================ + +Macro table dump skipped (Parser was not invoked). +Document list dump skipped (Parser was not invoked). + +Global Local| Input File +------------+------------------------------------------------------------------- + 1 1| SC29: Test syntax checking of typesetter pragma. + 2 2| + 3 3| 1. Test not three arguments. + 4 4| @p typesetter + Error|.^This typesetter pragma has the wrong number of arguments. + |.^The correct format is: "@p typesetter = none|tex". + |.^Pragma ignored. + 5 5| @p typesetter = + Error|.^This typesetter pragma has the wrong number of arguments. + |.^The correct format is: "@p typesetter = none|tex". + |.^Pragma ignored. + 6 6| @p typesetter = xxx yyy + Error|.^This typesetter pragma has the wrong number of arguments. + |.^The correct format is: "@p typesetter = none|tex". + |.^Pragma ignored. + 7 7| + 8 8| 2. Test second argument not "=". + 9 9| @p typesetter x sloth + |.^The correct format is: "@p typesetter = none|tex". + |.^Pragma ignored. + Error|...............^Expecting "=". + 10 10| + 11 11| 3. Test third argument is not legal. + 12 12| @p typesetter = sloth + |.^The correct format is: "@p typesetter = none|tex". + |.^Pragma ignored. + Error|.................^Expecting either "none" or "tex". + 13 13| + 14 14| 4. Test third argument is none. + 15 15| @p typesetter = none + |.^This pragma is opposed by the pragma at line 19. + 16 16| + 17 17| 5. Test third argument is tex. + 18 18| 6. Test pragma opposes earlier pragma. + 19 19| @p typesetter = tex + Error|.^This pragma opposes the pragma at line 15. + |.^You can have as many typesetter pragmas as you like, + |.^but they all have to be the same! + |.^Pragma ignored. + 20 20| + 21 21| 7. Test pragma does not oppose earlier pragma. + 22 22| @p typesetter = none + 23 23| + | <End-Of-File> +------------+------------------------------------------------------------------- + +There were 6 Errors. diff --git a/web/funnelAC/answers/tg01.lis b/web/funnelAC/answers/tg01.lis new file mode 100644 index 0000000000..47a43fdf7f --- /dev/null +++ b/web/funnelAC/answers/tg01.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Tangle: Completed .out. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/tg01.out b/web/funnelAC/answers/tg01.out new file mode 100644 index 0000000000..148e1e38a0 --- /dev/null +++ b/web/funnelAC/answers/tg01.out @@ -0,0 +1,3 @@ +Patterson's prayer: + "There is nothing I would rather be, than chairman of the ABC." + - Les Patterson diff --git a/web/funnelAC/answers/tg02.lis b/web/funnelAC/answers/tg02.lis new file mode 100644 index 0000000000..a9dac774ec --- /dev/null +++ b/web/funnelAC/answers/tg02.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Tangle: Completed tg02.out. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/tg02.out b/web/funnelAC/answers/tg02.out new file mode 100644 index 0000000000..4f731e9543 --- /dev/null +++ b/web/funnelAC/answers/tg02.out @@ -0,0 +1,23 @@ +The other day upon the stair, +I met a man who wasn't there. +He wasn't there again today, +I think he's from the CIA. + +In the output begin0 should be at the left margin, then begin1 to begin wayout +should be indented by three spaces. Then the "It's scary" should be +positioned over the "a" ofd margin. The rest should be at the left margin. + +begin0 + begin1 + begin2 + begin3 + begin4 + begin wayout----------V + It's scary out here +So far from the left margin. +end wayout----------^ +end4 +end3 +end2 +end1 +end0 diff --git a/web/funnelAC/answers/tg03.lis b/web/funnelAC/answers/tg03.lis new file mode 100644 index 0000000000..346577fb0d --- /dev/null +++ b/web/funnelAC/answers/tg03.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Tangle: Completed tg03.out. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/tg03.out b/web/funnelAC/answers/tg03.out new file mode 100644 index 0000000000..1d638b1c32 --- /dev/null +++ b/web/funnelAC/answers/tg03.out @@ -0,0 +1,21 @@ +The other day upon the stair, +I met a man who wasn't there. +He wasn't there again today, +I think he's from the CIA. + +The following nest of begin and ends should be indented in a nest. + +begin0 + begin1 + begin2 + begin3 + begin4 + begin wayout----------V + It's scary out here + So far from the left margin. + end wayout----------^ + end4 + end3 + end2 + end1 +end0 diff --git a/web/funnelAC/answers/tg04.lis b/web/funnelAC/answers/tg04.lis new file mode 100644 index 0000000000..0ffe1aacf9 --- /dev/null +++ b/web/funnelAC/answers/tg04.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Tangle: Completed tg04.out. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/tg04.out b/web/funnelAC/answers/tg04.out new file mode 100644 index 0000000000..e65d9bf4ab --- /dev/null +++ b/web/funnelAC/answers/tg04.out @@ -0,0 +1,22 @@ + + +1. Test macro call with no parameters. +"Teapot" = +"Teapot" + +2. Test macro call with one parameter. +"Left Testing Right" = +"Left Testing Right" + +3. Test macro call with many parameters. +"Left x Middle y Right" = +"Left x Middle y Right" + +4. Test macro call as a parameter of another macro call. +"Left Ostrich Middle Left Wombat Right Right" = +"Left Ostrich Middle Left Wombat Right Right" + +5. Test expression recursive macro call. +"[X[[Walrus]]Y]" = +"[X[[Walrus]]Y]" + diff --git a/web/funnelAC/answers/tg05.lis b/web/funnelAC/answers/tg05.lis new file mode 100644 index 0000000000..a9502089a9 --- /dev/null +++ b/web/funnelAC/answers/tg05.lis @@ -0,0 +1,17 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +E: Product file line is too long (line 4 of "<<Suppressed>>"). + Product file line length limit is 80 characters. + Note: You can change the limit by specifying. + @p maximum_output_line_length = <desired length> + somewhere in the input file. +Tangle: Completed tg05.out. + +There was 1 Error. diff --git a/web/funnelAC/answers/tg05.out b/web/funnelAC/answers/tg05.out new file mode 100644 index 0000000000..1cc2528cae --- /dev/null +++ b/web/funnelAC/answers/tg05.out @@ -0,0 +1,4 @@ +We test the default limit of 80 characters. +Only the second of the following two lines should provoke an error. +12345678901234567890123456789012345678901234567890123456789012345678901234567890 +123456789012345678901234567890123456789012345678901234567890123456789012345678901 diff --git a/web/funnelAC/answers/tg06.lis b/web/funnelAC/answers/tg06.lis new file mode 100644 index 0000000000..749c27a39f --- /dev/null +++ b/web/funnelAC/answers/tg06.lis @@ -0,0 +1,17 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +E: Product file line is too long (line 6 of "<<Suppressed>>"). + Product file line length limit is 60 characters. + Note: You can change the limit by specifying. + @p maximum_output_line_length = <desired length> + somewhere in the input file. +Tangle: Completed tg06.out. + +There was 1 Error. diff --git a/web/funnelAC/answers/tg06.out b/web/funnelAC/answers/tg06.out new file mode 100644 index 0000000000..6d95ce3bf8 --- /dev/null +++ b/web/funnelAC/answers/tg06.out @@ -0,0 +1,6 @@ +We test the user-set limit of 60 characters. +Only the third of the following three lines +should provoke an error. + 1 2 3 4 5 6 +123456789012345678901234567890123456789012345678901234567890 +1234567890123456789012345678901234567890123456789012345678901 diff --git a/web/funnelAC/answers/tg07.lis b/web/funnelAC/answers/tg07.lis new file mode 100644 index 0000000000..d6bcf21b41 --- /dev/null +++ b/web/funnelAC/answers/tg07.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Tangle: Completed tg07.out. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/tg07.out b/web/funnelAC/answers/tg07.out new file mode 100644 index 0000000000..113b1fac7b --- /dev/null +++ b/web/funnelAC/answers/tg07.out @@ -0,0 +1,2 @@ +The following long line should not blow the line length limit. +12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 diff --git a/web/funnelAC/answers/tg08.lis b/web/funnelAC/answers/tg08.lis new file mode 100644 index 0000000000..a3d0140430 --- /dev/null +++ b/web/funnelAC/answers/tg08.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Tangle: Completed tg08.out. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/tg08.out b/web/funnelAC/answers/tg08.out new file mode 100644 index 0000000000..aab49f17ad --- /dev/null +++ b/web/funnelAC/answers/tg08.out @@ -0,0 +1,7 @@ +Is this a mouse I see before me? +Its contours moulded for my hand? +Come, let me clutch thee! + +Now might I drink hot jolt cola +And create hacks in C +That would not bear witness of the Sun. diff --git a/web/funnelAC/answers/tg09.lis b/web/funnelAC/answers/tg09.lis new file mode 100644 index 0000000000..f8c0868d36 --- /dev/null +++ b/web/funnelAC/answers/tg09.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Tangle: Completed tg09.out. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/tg09.out b/web/funnelAC/answers/tg09.out new file mode 100644 index 0000000000..64d7ff5028 --- /dev/null +++ b/web/funnelAC/answers/tg09.out @@ -0,0 +1,23 @@ +A Megastar's Mantras +-------------------- +(Things that Mean a Lot to Me) + +A is for Australia +The land I adore; +It's so spotless and clean +You can eat off the floor. + +B is for Boomerang, +Which our quaint Abos launch +In the hope it will bring back +A roast quokka's haunch. + +C is for Culture +Which blossoms unchecked, +You can't move in my homeland +for Beckett and Brecht. + +...more... + +- Dame Edna Everage, +"Neglected Poems and Other Creatures" by Barry Humphries, 1991. diff --git a/web/funnelAC/answers/wv01.lis b/web/funnelAC/answers/wv01.lis new file mode 100644 index 0000000000..342bdb414d --- /dev/null +++ b/web/funnelAC/answers/wv01.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Weave: Completed <<Suppressed>>. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/wv01.tex b/web/funnelAC/answers/wv01.tex new file mode 100644 index 0000000000..83e0d3a42a --- /dev/null +++ b/web/funnelAC/answers/wv01.tex @@ -0,0 +1,367 @@ + +%******************************************************************************* +%* START OF AUTOMATICALLY GENERATED TEX FILE * +%******************************************************************************* +%* * +%* This TeX file was automatically generated by the FunnelWeb preprocessor. * +%* You can typeset this file to produce printed documentation by running it * +%* through the TeX typesetter using a command such as: * +%* tex thisfilename * +%* The resultant file thisfilename.dvi can be printed using a command such as: * +%* lpr -Pcslw -d thisfilename.dvi * +%* * +%* FunnelWeb is a preprocessor that allows programmers to weave programs and * +%* their documentation together in a single document. The FunnelWeb program * +%* analyses such documents producing both program files and typeset * +%* documentation such as this TeX file. * +%* FunnelWeb was created by Ross Williams. * +%* * +%* For more information on FunnelWeb look in the following FTP archive: * +%* Machine : sirius.itd.adelaide.edu.au [IP=129.127.40.3]. * +%* Directory: ~pub/funnelweb/ * +%* (or some other appropriately named directory). * +%* or email Ross Williams at ross@spam.adelaide.edu.au * +%* * +%******************************************************************************* + + +%===================== Start of FunnelWeb TeX Definitions ====================== + + +% Version +% ------- +% This is FunnelWeb TeX Macro Library Version 1.0. + + +% Copyright +% --------- +% This set of FunnelWeb TeX definitions was written by Ross Williams and was +% originally Copyright (C) 1992 Ross N. Williams. However, I, Ross Williams, +% hereby forego any claim to Copyright in this set of FunnelWeb TeX definitions +% and hereby authorize that the set of TeX definitions pass into the public +% domain. -- Ross N. Williams, 3:41pm 07-May-1992, Adelaide, Australia. + + +% Modification +% ------------ +% Please record all modifications to these TeX definitions here. Unless +% otherwise specified, all modified definitions fall in the public domain too. +% +% Programmers: +% RNW Ross N. Williams ross@spam.adelaide.edu.au +% +% Changes: +% 07-May-1992 RNW Prepared this work for public domain release. +% + + +% General Comments +% ---------------- +% This set of TeX definitions exists for two reasons: +% +% 1. To shorten and neaten the FunnelWeb TeX output. +% 2. To allow users to fiddle with the output format in their input files +% (by inserting redefining "\def"s) without having to resort to +% modifying the FunnelWeb code. +% +% The user is warned that these definitions may be changed from time to time +% (but probably not much). The user should not be too sneaky. In particular, +% users wishing to redefine some of these macros should do so in an explicitly +% defined section at the top of their input file. This will mean that in the +% event of problems, that section can simply be deleted or commented out to +% allow the document to at least be typeset in the default format. Users should +% limit themselves to redefining these macros in such a section and should +% refrain from using the macros throughout their documents. + + +% Environment Parameters +% ---------------------- +% \tolerance tells TeX how tolerant it should be about making bad line and +% page breaks. Here we set it to it's maximum, as +% 1) Computer programs are likely to cause lots of bad breaks. +% 2) In most cases the user would probably rather get the TeX file through +% TeX without any errors than fiddle with spacings for perfection. +\tolerance=10000 + +% I don't like indentation as it makes the page look more busy. Instead, +% paragraphs are separated by a little space (see next). +\parindent=0pt + +% In many cases, users will produce documents with long runs of paragraphs. +% In order to space out these paragraphs, it is convenient to maintain a +% prevailing non-zero \parskip (end-of-paragaph skip). The only trouble is +% that the skip becomes a problem in macro definitions which require no skip +% and so we have to turn the skip on and off. The following two macros +% simplify this process. +\def\fwparskipon{\parskip=\medskipamount} +\def\fwparskipoff{\parskip=0pt} +\fwparskipon + +% Setting raggedbottom allows TeX to leave a bit of space at the bottom of the +% page in order to better vertically align the rest of the page (e.g. skips +% won't stretch as much). It also means that headings are less likely to be +% isolated at the bottom of the page without any following text. +\raggedbottom + + +% Fonts +% ----- +% Most of the typeset output is set in 10pt roman and 10pt tt font. +% The major extra font needs spring from titles and headings. +% For portability's sake we use only the following fonts: +% cmr10 +% cmbx10 +% cmtt10 +% and some enlargements of them. These fonts are all "standard" fonts +% in Plain TeX. See The TeXbook p.350. +\font\fwfontnote=cmr7 + +\font\fwfontnorm=cmr10 +\font\fwfontnorma=cmr10 scaled \magstep1 +\font\fwfontnormb=cmr10 scaled \magstep2 + +\font\fwfontbold=cmbx10 +\font\fwfontbolda=cmbx10 scaled \magstep1 +\font\fwfontboldb=cmbx10 scaled \magstep2 +\font\fwfontboldc=cmbx10 scaled \magstep3 +\font\fwfontboldd=cmbx10 scaled \magstep4 + + +% Macros for Stylistic Details +% ---------------------------- +% This section contains all the fiddly little macros for setting the details +% of each macro definition. + +% Macro definitions are sandwiched by calls to these macros which can be used +% to sort out the spacing before and after the macro definition. +\def\fwbeginmacro{\fwparskipoff\bigskip} +\def\fwendmacro{\fwparskipon\par} + +% These macros deal with the macro name and definition line. +\def\fwmacroname#1#2{{\sl #1\/}$\lbrack$#2$\rbrack$} +\def\fwfilename#1#2{{\bf #1}$\lbrack$#2$\rbrack$} +\def\fwzero#1{{\bf Z}} +\def\fwmany#1{{\bf M}} +\def\fwequals{ $\equiv$} +\def\fwplusequals{ $+\equiv$} + +% Now for the actual body of the definition. It looks nice to have the tt +% code indented a little. Again, we use macros instead of writing direct TeX, +% so as to allow the user to fiddle this stuff to taste without having to +% modify the FunnelWeb C code. +\def\fwodef{\parindent=15pt\vskip0pt$\lbrace$\parindent=20pt} +\def\fwcdef{$\rbrace$\vskip0pt\parindent=0pt} +\def\fwoquote{`} +\def\fwcquote{'} +\def\fwoparen{$($} +\def\fwcomma{$,$} +\def\fwcparen{$)$} +\def\fwparam#1{$\diamond #1$} +\def\fwparams#1{$(\diamond #1)$} + +% These macros deal with the notes that are appended at the end of each +% macro definition. Note that even though \fwisafile,\fwusedin, and \fwseealso +% have the same definition, they are given different names so as to allow the +% user to redefine these macros to typeset each kind of information differently +% if desired. +\def\fwbeginmacronotes{\begingroup\baselineskip=9pt\smallskip} +\def\fwnote#1{{\fwfontnote #1}\par} +\def\fwisafile#1{\fwnote{#1}} +\def\fwusedin#1{\fwnote{#1}} +\def\fwseealso#1{\fwnote{#1}} +\def\fwendmacronotes{\endgroup} + + +% Macros to Typeset Program Code Verbatim +% --------------------------------------- +% This is by far the hairiest and most difficult part of the typesetting task +% because we have to turn off most of TeX's natural instincts in order to +% typeset the program text exactly as it appears in the input file. +% Two macros are defined to pull this off: \fwbtx and \fwverbatimgobble. +% Their code was inspired by the following sections of "The TeXbook": +% Appendix D: Dirty Tricks, 3.Verbatim listing, p.380-382. +% Appendix E: Example Formats, p.421. +% The \fwbtx[ (for "FunnelWeb Begin TeXt") macro does most of the hard work. +% The liberal use of "%" is because I don't understand TeX well enough to +% understand when an end of line will cause trouble, and I am playing it safe. + +% Before defining the main \fwbtx macro, we have to stash away some definitions +% in the hidden part of TeX's environment. Let's hope that these "hidden" +% definitions don't affect anything except what is desired to be affected. + +% The tt font in which we wish to set the text has two Latin lurking ligatures! +% These are ?` and !`. To disable them, we define the left quote when ACTIVE +% to be defined in such a way as to prevent ligatures. The main TeX text will +% normally not be exposed to this definition because normally the leftquote +% character is not active. The \fwbtx macro temporarily makes the left quote +% character active thus activating the deactivation of left quote ligatures. +% See The TeXbook p.381. +{\catcode`\`=\active \gdef`{\relax\lq}} + +% TeX is fairly carefree about spaces and so we have to make it more serious. +% To do so we pull the same trick as above, setting up a definition for active +% space, but only making space active during the span of the verbatim text. +% In Plain TeX the active space is defined to be simply a space, but here we +% define it to be a control space. This ensures that the space cannot +% be gobbled up by one of TeX's mysterious mechanisms when activated. +% See The TeXbook, p.381 and p.352. +{\obeyspaces\global\let =\ } + +% Here is the main \fwbtx verbatim text macro. +% Note: The order in which all these pieces of business have to be done is +% still a partial mystery to me. Don't fiddle with this stuff unless you +% think you know what you are doing. +\def\fwbtx[{% +% +% The funnies involved in getting verbatim output are safely housed inside +% this \begingroup, and the \endgroup in \fwverbatimgobble. Groups are used +% instead of curly braces because we have to be able to signal the end of +% this macro with a curly brace. +\begingroup% +% +% \pars at the end of empty lines in the verbatim text won't come out normally +% because TeX is in vertical mode and they get gobbled up. To prevent this, +% we force \par to exit vertical mode first. See The TeXbook p.381. +\def\par{\leavevmode\endgraf}% +% +% Activate the leftquote character so as to avoid ligatures (see above). +\catcode`\`=\active% +% +% The \obeylines macro simply defines end of line (^M) to be \par. This ensures +% that TeX will treat each verbatim line as a new paragraph. +\obeylines% +% +% To get verbatim output, we have to desex all the special characters. This +% is explained in detail in The TeXbook p.380. +\def\do##1{\catcode`##1=12 }\dospecials% +% +% Activate the space character so as to make TeX treat blanks seriously. +% This activation invokes an eralier definition (see above). +\obeyspaces +% +% Interparagraph skips do not help the cause. +% Note: We have to preserve the indentation though, as the code is actually +% indented in the final output. See \fwodef in an earlier section. +\parskip=0pt% +% +% We typeset the verbatim text in tt font (courier on the Macintosh) for a +% number of reasons: +% - tt font has the same horizontal spacing for each character. +% - tt font covers the ASCII character set. +% - tt font doesn't have many surprises (e.g. ligatures). +% - tt font looks much what you might see on a computer terminal screen. +\tt% +% +% Having set up an environment for verbatim, we are ready to use it. +% By invoking \fwverbatimgobble, this \fwbtx macro gobbles up text verbatim (as +% part of the parameter of \fwverbatimgobble) until it sees the termination +% string "]fwetx=" (the "=" was thrown in to add obscurity as this sequence +% must never occur in the verbatim text). +\fwverbatimgobble} + +% The \fwverbatimgobble macro exists to allow \fwbtx to bracket verbatim text. +\def\fwverbatimgobble#1]fwetx={#1\endgroup} + + +% Table of Contents +% ----------------- +% The five levels of table of contents that FunnelWeb supports are identified +% by the five letters [A..E]. These are used throughout the following macros. + +% The following macros are utilities to the TOC macros to follow. +\def\fwrule{\medskip\hrule\medskip} +\def\fwqh{\hskip1.5em\relax} +\def\fwbeforesec{\penalty-200\bigskip\medskip\par} + +% The following macros are used to typeset the table of contents. +\def\fwtocstart#1{\fwrule\leftline{\fwfontbolda Table of Contents}\fwrule} +\def\fwtoca#1#2{\leftline{{\bf #1 #2}}} +\def\fwtocb#1#2{\leftline{\fwqh #1 #2}} +\def\fwtocc#1#2{\leftline{\fwqh\fwqh #1 #2}} +\def\fwtocd#1#2{\leftline{\fwqh\fwqh\fwqh #1 #2}} +\def\fwtoce#1#2{\leftline{\fwqh\fwqh\fwqh\fwqh #1 #2}} +\def\fwtocfinish#1{\fwrule} + +% The following "library" macros define five different strengths of headings +% which can be used later in the section macros. +\def\fwliba#1#2{\vfill\eject{\fwfontboldc #1 #2}\penalty200\smallskip} +\def\fwlibb#1#2{\fwbeforesec{\fwfontboldb #1 #2}\penalty200\smallskip} +\def\fwlibc#1#2{\fwbeforesec{\fwfontnormb #1 #2}\penalty200\smallskip} +\def\fwlibd#1#2{\fwbeforesec{\bf #1 #2}\penalty200} +\def\fwlibe#1#2{\fwbeforesec{\bf #1 #2}} + +% Here are the macros that actually typeset the section headings throughout +% the document. The fwlib system has been employed so as to easily allow the +% user to redefine the strengths of headings to taste. For example, the +% user could insert in the input document a similar set of definitions to these +% but with the b..e headings set to \fwlibc. This would tone down the output. +\def\fwseca#1#2{\fwliba{#1}{#2}} +\def\fwsecb#1#2{\fwlibb{#1}{#2}} +\def\fwsecc#1#2{\fwlibc{#1}{#2}} +\def\fwsecd#1#2{\fwlibd{#1}{#2}} +\def\fwsece#1#2{\fwlibe{#1}{#2}} + + +% Support for Explicit Typesetting +% -------------------------------- +% FunnelWeb supports pragmas and other constructs that allow +% typesetter-independent typesetting commands to be given. The +% following macros support these features. + +% The in-text literal @{sloth@} and emphasise @[walrus@] features. +\def\fwlit#1{{\tt #1}} +\def\fwemp#1{{\it #1}} + +% The "@p new_page" pragma. +\def\fwnewpage{\vfill\eject} + +% The "@p vskip Nmm" pragma. +\def\fwvskip#1{\null\vskip #1mm} + +% The "@p title <font> <align> <text>" pragma. +\def\fwfontnormal#1{{\fwfontnorm {#1}}} +\def\fwfonttitle#1{{\fwfontboldd {#1}}} +\def\fwfontsmalltitle#1{{\fwfontboldb {#1}}} +\def\fwleftline#1{\leftline{#1}} +\def\fwcenterline#1{\centerline{#1}} +\def\fwrightline#1{\rightline{#1}} + + +% Support for Old FunnelWeb +% ------------------------- +% The following macros were used extensively in the first version of +% FunnelWeb and are retained so that these older input files will still +% typeset cleanly. +\def\p#1{{\tt #1}} % P for Program text. +\def\flagpage#1#2{ + \null + \vfill + \centerline{\fwfontboldd #1} + \vskip 1cm + \centerline{\fwfontboldd #2} + \vfill + \null + \vfill +} + +%====================== End of FunnelWeb TeX Definitions ======================= +WV01: Test basic typeset file output mechanism. + +\fwseca{1}{A section for no particular reason} + +\fwbeginmacro +\fwfilename{wv01.out}{1}\fwequals \fwodef \fwbtx[Some text for no particular reason. +]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwisafile{This macro is attached to an output file.} +\fwendmacronotes +\fwendmacro + +\bye + + +%******************************************************************************* +%* END OF AUTOMATICALLY GENERATED TEX FILE * +%******************************************************************************* + diff --git a/web/funnelAC/answers/wv02.lis b/web/funnelAC/answers/wv02.lis new file mode 100644 index 0000000000..342bdb414d --- /dev/null +++ b/web/funnelAC/answers/wv02.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Weave: Completed <<Suppressed>>. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/wv02.tex b/web/funnelAC/answers/wv02.tex new file mode 100644 index 0000000000..aab813ee0f --- /dev/null +++ b/web/funnelAC/answers/wv02.tex @@ -0,0 +1,454 @@ + +%******************************************************************************* +%* START OF AUTOMATICALLY GENERATED TEX FILE * +%******************************************************************************* +%* * +%* This TeX file was automatically generated by the FunnelWeb preprocessor. * +%* You can typeset this file to produce printed documentation by running it * +%* through the TeX typesetter using a command such as: * +%* tex thisfilename * +%* The resultant file thisfilename.dvi can be printed using a command such as: * +%* lpr -Pcslw -d thisfilename.dvi * +%* * +%* FunnelWeb is a preprocessor that allows programmers to weave programs and * +%* their documentation together in a single document. The FunnelWeb program * +%* analyses such documents producing both program files and typeset * +%* documentation such as this TeX file. * +%* FunnelWeb was created by Ross Williams. * +%* * +%* For more information on FunnelWeb look in the following FTP archive: * +%* Machine : sirius.itd.adelaide.edu.au [IP=129.127.40.3]. * +%* Directory: ~pub/funnelweb/ * +%* (or some other appropriately named directory). * +%* or email Ross Williams at ross@spam.adelaide.edu.au * +%* * +%******************************************************************************* + + +%===================== Start of FunnelWeb TeX Definitions ====================== + + +% Version +% ------- +% This is FunnelWeb TeX Macro Library Version 1.0. + + +% Copyright +% --------- +% This set of FunnelWeb TeX definitions was written by Ross Williams and was +% originally Copyright (C) 1992 Ross N. Williams. However, I, Ross Williams, +% hereby forego any claim to Copyright in this set of FunnelWeb TeX definitions +% and hereby authorize that the set of TeX definitions pass into the public +% domain. -- Ross N. Williams, 3:41pm 07-May-1992, Adelaide, Australia. + + +% Modification +% ------------ +% Please record all modifications to these TeX definitions here. Unless +% otherwise specified, all modified definitions fall in the public domain too. +% +% Programmers: +% RNW Ross N. Williams ross@spam.adelaide.edu.au +% +% Changes: +% 07-May-1992 RNW Prepared this work for public domain release. +% + + +% General Comments +% ---------------- +% This set of TeX definitions exists for two reasons: +% +% 1. To shorten and neaten the FunnelWeb TeX output. +% 2. To allow users to fiddle with the output format in their input files +% (by inserting redefining "\def"s) without having to resort to +% modifying the FunnelWeb code. +% +% The user is warned that these definitions may be changed from time to time +% (but probably not much). The user should not be too sneaky. In particular, +% users wishing to redefine some of these macros should do so in an explicitly +% defined section at the top of their input file. This will mean that in the +% event of problems, that section can simply be deleted or commented out to +% allow the document to at least be typeset in the default format. Users should +% limit themselves to redefining these macros in such a section and should +% refrain from using the macros throughout their documents. + + +% Environment Parameters +% ---------------------- +% \tolerance tells TeX how tolerant it should be about making bad line and +% page breaks. Here we set it to it's maximum, as +% 1) Computer programs are likely to cause lots of bad breaks. +% 2) In most cases the user would probably rather get the TeX file through +% TeX without any errors than fiddle with spacings for perfection. +\tolerance=10000 + +% I don't like indentation as it makes the page look more busy. Instead, +% paragraphs are separated by a little space (see next). +\parindent=0pt + +% In many cases, users will produce documents with long runs of paragraphs. +% In order to space out these paragraphs, it is convenient to maintain a +% prevailing non-zero \parskip (end-of-paragaph skip). The only trouble is +% that the skip becomes a problem in macro definitions which require no skip +% and so we have to turn the skip on and off. The following two macros +% simplify this process. +\def\fwparskipon{\parskip=\medskipamount} +\def\fwparskipoff{\parskip=0pt} +\fwparskipon + +% Setting raggedbottom allows TeX to leave a bit of space at the bottom of the +% page in order to better vertically align the rest of the page (e.g. skips +% won't stretch as much). It also means that headings are less likely to be +% isolated at the bottom of the page without any following text. +\raggedbottom + + +% Fonts +% ----- +% Most of the typeset output is set in 10pt roman and 10pt tt font. +% The major extra font needs spring from titles and headings. +% For portability's sake we use only the following fonts: +% cmr10 +% cmbx10 +% cmtt10 +% and some enlargements of them. These fonts are all "standard" fonts +% in Plain TeX. See The TeXbook p.350. +\font\fwfontnote=cmr7 + +\font\fwfontnorm=cmr10 +\font\fwfontnorma=cmr10 scaled \magstep1 +\font\fwfontnormb=cmr10 scaled \magstep2 + +\font\fwfontbold=cmbx10 +\font\fwfontbolda=cmbx10 scaled \magstep1 +\font\fwfontboldb=cmbx10 scaled \magstep2 +\font\fwfontboldc=cmbx10 scaled \magstep3 +\font\fwfontboldd=cmbx10 scaled \magstep4 + + +% Macros for Stylistic Details +% ---------------------------- +% This section contains all the fiddly little macros for setting the details +% of each macro definition. + +% Macro definitions are sandwiched by calls to these macros which can be used +% to sort out the spacing before and after the macro definition. +\def\fwbeginmacro{\fwparskipoff\bigskip} +\def\fwendmacro{\fwparskipon\par} + +% These macros deal with the macro name and definition line. +\def\fwmacroname#1#2{{\sl #1\/}$\lbrack$#2$\rbrack$} +\def\fwfilename#1#2{{\bf #1}$\lbrack$#2$\rbrack$} +\def\fwzero#1{{\bf Z}} +\def\fwmany#1{{\bf M}} +\def\fwequals{ $\equiv$} +\def\fwplusequals{ $+\equiv$} + +% Now for the actual body of the definition. It looks nice to have the tt +% code indented a little. Again, we use macros instead of writing direct TeX, +% so as to allow the user to fiddle this stuff to taste without having to +% modify the FunnelWeb C code. +\def\fwodef{\parindent=15pt\vskip0pt$\lbrace$\parindent=20pt} +\def\fwcdef{$\rbrace$\vskip0pt\parindent=0pt} +\def\fwoquote{`} +\def\fwcquote{'} +\def\fwoparen{$($} +\def\fwcomma{$,$} +\def\fwcparen{$)$} +\def\fwparam#1{$\diamond #1$} +\def\fwparams#1{$(\diamond #1)$} + +% These macros deal with the notes that are appended at the end of each +% macro definition. Note that even though \fwisafile,\fwusedin, and \fwseealso +% have the same definition, they are given different names so as to allow the +% user to redefine these macros to typeset each kind of information differently +% if desired. +\def\fwbeginmacronotes{\begingroup\baselineskip=9pt\smallskip} +\def\fwnote#1{{\fwfontnote #1}\par} +\def\fwisafile#1{\fwnote{#1}} +\def\fwusedin#1{\fwnote{#1}} +\def\fwseealso#1{\fwnote{#1}} +\def\fwendmacronotes{\endgroup} + + +% Macros to Typeset Program Code Verbatim +% --------------------------------------- +% This is by far the hairiest and most difficult part of the typesetting task +% because we have to turn off most of TeX's natural instincts in order to +% typeset the program text exactly as it appears in the input file. +% Two macros are defined to pull this off: \fwbtx and \fwverbatimgobble. +% Their code was inspired by the following sections of "The TeXbook": +% Appendix D: Dirty Tricks, 3.Verbatim listing, p.380-382. +% Appendix E: Example Formats, p.421. +% The \fwbtx[ (for "FunnelWeb Begin TeXt") macro does most of the hard work. +% The liberal use of "%" is because I don't understand TeX well enough to +% understand when an end of line will cause trouble, and I am playing it safe. + +% Before defining the main \fwbtx macro, we have to stash away some definitions +% in the hidden part of TeX's environment. Let's hope that these "hidden" +% definitions don't affect anything except what is desired to be affected. + +% The tt font in which we wish to set the text has two Latin lurking ligatures! +% These are ?` and !`. To disable them, we define the left quote when ACTIVE +% to be defined in such a way as to prevent ligatures. The main TeX text will +% normally not be exposed to this definition because normally the leftquote +% character is not active. The \fwbtx macro temporarily makes the left quote +% character active thus activating the deactivation of left quote ligatures. +% See The TeXbook p.381. +{\catcode`\`=\active \gdef`{\relax\lq}} + +% TeX is fairly carefree about spaces and so we have to make it more serious. +% To do so we pull the same trick as above, setting up a definition for active +% space, but only making space active during the span of the verbatim text. +% In Plain TeX the active space is defined to be simply a space, but here we +% define it to be a control space. This ensures that the space cannot +% be gobbled up by one of TeX's mysterious mechanisms when activated. +% See The TeXbook, p.381 and p.352. +{\obeyspaces\global\let =\ } + +% Here is the main \fwbtx verbatim text macro. +% Note: The order in which all these pieces of business have to be done is +% still a partial mystery to me. Don't fiddle with this stuff unless you +% think you know what you are doing. +\def\fwbtx[{% +% +% The funnies involved in getting verbatim output are safely housed inside +% this \begingroup, and the \endgroup in \fwverbatimgobble. Groups are used +% instead of curly braces because we have to be able to signal the end of +% this macro with a curly brace. +\begingroup% +% +% \pars at the end of empty lines in the verbatim text won't come out normally +% because TeX is in vertical mode and they get gobbled up. To prevent this, +% we force \par to exit vertical mode first. See The TeXbook p.381. +\def\par{\leavevmode\endgraf}% +% +% Activate the leftquote character so as to avoid ligatures (see above). +\catcode`\`=\active% +% +% The \obeylines macro simply defines end of line (^M) to be \par. This ensures +% that TeX will treat each verbatim line as a new paragraph. +\obeylines% +% +% To get verbatim output, we have to desex all the special characters. This +% is explained in detail in The TeXbook p.380. +\def\do##1{\catcode`##1=12 }\dospecials% +% +% Activate the space character so as to make TeX treat blanks seriously. +% This activation invokes an eralier definition (see above). +\obeyspaces +% +% Interparagraph skips do not help the cause. +% Note: We have to preserve the indentation though, as the code is actually +% indented in the final output. See \fwodef in an earlier section. +\parskip=0pt% +% +% We typeset the verbatim text in tt font (courier on the Macintosh) for a +% number of reasons: +% - tt font has the same horizontal spacing for each character. +% - tt font covers the ASCII character set. +% - tt font doesn't have many surprises (e.g. ligatures). +% - tt font looks much what you might see on a computer terminal screen. +\tt% +% +% Having set up an environment for verbatim, we are ready to use it. +% By invoking \fwverbatimgobble, this \fwbtx macro gobbles up text verbatim (as +% part of the parameter of \fwverbatimgobble) until it sees the termination +% string "]fwetx=" (the "=" was thrown in to add obscurity as this sequence +% must never occur in the verbatim text). +\fwverbatimgobble} + +% The \fwverbatimgobble macro exists to allow \fwbtx to bracket verbatim text. +\def\fwverbatimgobble#1]fwetx={#1\endgroup} + + +% Table of Contents +% ----------------- +% The five levels of table of contents that FunnelWeb supports are identified +% by the five letters [A..E]. These are used throughout the following macros. + +% The following macros are utilities to the TOC macros to follow. +\def\fwrule{\medskip\hrule\medskip} +\def\fwqh{\hskip1.5em\relax} +\def\fwbeforesec{\penalty-200\bigskip\medskip\par} + +% The following macros are used to typeset the table of contents. +\def\fwtocstart#1{\fwrule\leftline{\fwfontbolda Table of Contents}\fwrule} +\def\fwtoca#1#2{\leftline{{\bf #1 #2}}} +\def\fwtocb#1#2{\leftline{\fwqh #1 #2}} +\def\fwtocc#1#2{\leftline{\fwqh\fwqh #1 #2}} +\def\fwtocd#1#2{\leftline{\fwqh\fwqh\fwqh #1 #2}} +\def\fwtoce#1#2{\leftline{\fwqh\fwqh\fwqh\fwqh #1 #2}} +\def\fwtocfinish#1{\fwrule} + +% The following "library" macros define five different strengths of headings +% which can be used later in the section macros. +\def\fwliba#1#2{\vfill\eject{\fwfontboldc #1 #2}\penalty200\smallskip} +\def\fwlibb#1#2{\fwbeforesec{\fwfontboldb #1 #2}\penalty200\smallskip} +\def\fwlibc#1#2{\fwbeforesec{\fwfontnormb #1 #2}\penalty200\smallskip} +\def\fwlibd#1#2{\fwbeforesec{\bf #1 #2}\penalty200} +\def\fwlibe#1#2{\fwbeforesec{\bf #1 #2}} + +% Here are the macros that actually typeset the section headings throughout +% the document. The fwlib system has been employed so as to easily allow the +% user to redefine the strengths of headings to taste. For example, the +% user could insert in the input document a similar set of definitions to these +% but with the b..e headings set to \fwlibc. This would tone down the output. +\def\fwseca#1#2{\fwliba{#1}{#2}} +\def\fwsecb#1#2{\fwlibb{#1}{#2}} +\def\fwsecc#1#2{\fwlibc{#1}{#2}} +\def\fwsecd#1#2{\fwlibd{#1}{#2}} +\def\fwsece#1#2{\fwlibe{#1}{#2}} + + +% Support for Explicit Typesetting +% -------------------------------- +% FunnelWeb supports pragmas and other constructs that allow +% typesetter-independent typesetting commands to be given. The +% following macros support these features. + +% The in-text literal @{sloth@} and emphasise @[walrus@] features. +\def\fwlit#1{{\tt #1}} +\def\fwemp#1{{\it #1}} + +% The "@p new_page" pragma. +\def\fwnewpage{\vfill\eject} + +% The "@p vskip Nmm" pragma. +\def\fwvskip#1{\null\vskip #1mm} + +% The "@p title <font> <align> <text>" pragma. +\def\fwfontnormal#1{{\fwfontnorm {#1}}} +\def\fwfonttitle#1{{\fwfontboldd {#1}}} +\def\fwfontsmalltitle#1{{\fwfontboldb {#1}}} +\def\fwleftline#1{\leftline{#1}} +\def\fwcenterline#1{\centerline{#1}} +\def\fwrightline#1{\rightline{#1}} + + +% Support for Old FunnelWeb +% ------------------------- +% The following macros were used extensively in the first version of +% FunnelWeb and are retained so that these older input files will still +% typeset cleanly. +\def\p#1{{\tt #1}} % P for Program text. +\def\flagpage#1#2{ + \null + \vfill + \centerline{\fwfontboldd #1} + \vskip 1cm + \centerline{\fwfontboldd #2} + \vfill + \null + \vfill +} + +%====================== End of FunnelWeb TeX Definitions ======================= +WV05: Test typesetting features. + +\fwbeginmacro +\fwfilename{wv05.out}{1}\fwequals \fwodef \fwbtx[ +]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwisafile{This macro is attached to an output file.} +\fwendmacronotes +\fwendmacro + + +1. Test all five levels of headings with explicit titles. + +\fwseca{1}{One} +\fwsecb{1.1}{Two} +\fwsecc{1.1.1}{Three} +\fwsecd{1.1.1.1}{Four} +\fwsece{1.1.1.1.1}{Five} + +2. Test all five levels of headings with implicit titles. + +\fwseca{2}{Macro at level one} +\fwbeginmacro +\fwmacroname{Macro at level one}{2}\fwzero{}\fwequals \fwodef \fwbtx[Sloth]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwusedin{This macro is NEVER invoked.} +\fwendmacronotes +\fwendmacro + + +\fwsecb{2.1}{Macro at level two} +\fwbeginmacro +\fwmacroname{Macro at level two}{3}\fwzero{}\fwequals \fwodef \fwbtx[Walrus]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwusedin{This macro is NEVER invoked.} +\fwendmacronotes +\fwendmacro + + +\fwsecc{2.1.1}{Macro at level three} +\fwbeginmacro +\fwmacroname{Macro at level three}{4}\fwzero{}\fwequals \fwodef \fwbtx[Aardvark]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwusedin{This macro is NEVER invoked.} +\fwendmacronotes +\fwendmacro + + +\fwsecd{2.1.1.1}{Macro at level four} +\fwbeginmacro +\fwmacroname{Macro at level four}{5}\fwzero{}\fwequals \fwodef \fwbtx[Teapot]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwusedin{This macro is NEVER invoked.} +\fwendmacronotes +\fwendmacro + + +\fwsece{2.1.1.1.1}{Macro at level five} +\fwbeginmacro +\fwmacroname{Macro at level five}{6}\fwzero{}\fwequals \fwodef \fwbtx[Emu]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwusedin{This macro is NEVER invoked.} +\fwendmacronotes +\fwendmacro + + +3. Test the table of contents directive. + +\fwtocstart{} +\fwtoca{1}{One} +\fwtocb{1.1}{Two} +\fwtocc{1.1.1}{Three} +\fwtocd{1.1.1.1}{Four} +\fwtoce{1.1.1.1.1}{Five} +\fwtoca{2}{Macro at level one} +\fwtocb{2.1}{Macro at level two} +\fwtocc{2.1.1}{Macro at level three} +\fwtocd{2.1.1.1}{Macro at level four} +\fwtoce{2.1.1.1.1}{Macro at level five} +\fwtocfinish{} + + +4. Test the newpage directive. + +\fwnewpage + + +5. Test the vskip directive. +\fwvskip{50} + +6. Test the title directive. +\fwcenterline{\fwfonttitle{This is a test Title}} + + +\bye + + +%******************************************************************************* +%* END OF AUTOMATICALLY GENERATED TEX FILE * +%******************************************************************************* + diff --git a/web/funnelAC/answers/wv03.lis b/web/funnelAC/answers/wv03.lis new file mode 100644 index 0000000000..342bdb414d --- /dev/null +++ b/web/funnelAC/answers/wv03.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Weave: Completed <<Suppressed>>. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/wv03.tex b/web/funnelAC/answers/wv03.tex new file mode 100644 index 0000000000..f9d5bda6cd --- /dev/null +++ b/web/funnelAC/answers/wv03.tex @@ -0,0 +1,568 @@ + +%******************************************************************************* +%* START OF AUTOMATICALLY GENERATED TEX FILE * +%******************************************************************************* +%* * +%* This TeX file was automatically generated by the FunnelWeb preprocessor. * +%* You can typeset this file to produce printed documentation by running it * +%* through the TeX typesetter using a command such as: * +%* tex thisfilename * +%* The resultant file thisfilename.dvi can be printed using a command such as: * +%* lpr -Pcslw -d thisfilename.dvi * +%* * +%* FunnelWeb is a preprocessor that allows programmers to weave programs and * +%* their documentation together in a single document. The FunnelWeb program * +%* analyses such documents producing both program files and typeset * +%* documentation such as this TeX file. * +%* FunnelWeb was created by Ross Williams. * +%* * +%* For more information on FunnelWeb look in the following FTP archive: * +%* Machine : sirius.itd.adelaide.edu.au [IP=129.127.40.3]. * +%* Directory: ~pub/funnelweb/ * +%* (or some other appropriately named directory). * +%* or email Ross Williams at ross@spam.adelaide.edu.au * +%* * +%******************************************************************************* + + +%===================== Start of FunnelWeb TeX Definitions ====================== + + +% Version +% ------- +% This is FunnelWeb TeX Macro Library Version 1.0. + + +% Copyright +% --------- +% This set of FunnelWeb TeX definitions was written by Ross Williams and was +% originally Copyright (C) 1992 Ross N. Williams. However, I, Ross Williams, +% hereby forego any claim to Copyright in this set of FunnelWeb TeX definitions +% and hereby authorize that the set of TeX definitions pass into the public +% domain. -- Ross N. Williams, 3:41pm 07-May-1992, Adelaide, Australia. + + +% Modification +% ------------ +% Please record all modifications to these TeX definitions here. Unless +% otherwise specified, all modified definitions fall in the public domain too. +% +% Programmers: +% RNW Ross N. Williams ross@spam.adelaide.edu.au +% +% Changes: +% 07-May-1992 RNW Prepared this work for public domain release. +% + + +% General Comments +% ---------------- +% This set of TeX definitions exists for two reasons: +% +% 1. To shorten and neaten the FunnelWeb TeX output. +% 2. To allow users to fiddle with the output format in their input files +% (by inserting redefining "\def"s) without having to resort to +% modifying the FunnelWeb code. +% +% The user is warned that these definitions may be changed from time to time +% (but probably not much). The user should not be too sneaky. In particular, +% users wishing to redefine some of these macros should do so in an explicitly +% defined section at the top of their input file. This will mean that in the +% event of problems, that section can simply be deleted or commented out to +% allow the document to at least be typeset in the default format. Users should +% limit themselves to redefining these macros in such a section and should +% refrain from using the macros throughout their documents. + + +% Environment Parameters +% ---------------------- +% \tolerance tells TeX how tolerant it should be about making bad line and +% page breaks. Here we set it to it's maximum, as +% 1) Computer programs are likely to cause lots of bad breaks. +% 2) In most cases the user would probably rather get the TeX file through +% TeX without any errors than fiddle with spacings for perfection. +\tolerance=10000 + +% I don't like indentation as it makes the page look more busy. Instead, +% paragraphs are separated by a little space (see next). +\parindent=0pt + +% In many cases, users will produce documents with long runs of paragraphs. +% In order to space out these paragraphs, it is convenient to maintain a +% prevailing non-zero \parskip (end-of-paragaph skip). The only trouble is +% that the skip becomes a problem in macro definitions which require no skip +% and so we have to turn the skip on and off. The following two macros +% simplify this process. +\def\fwparskipon{\parskip=\medskipamount} +\def\fwparskipoff{\parskip=0pt} +\fwparskipon + +% Setting raggedbottom allows TeX to leave a bit of space at the bottom of the +% page in order to better vertically align the rest of the page (e.g. skips +% won't stretch as much). It also means that headings are less likely to be +% isolated at the bottom of the page without any following text. +\raggedbottom + + +% Fonts +% ----- +% Most of the typeset output is set in 10pt roman and 10pt tt font. +% The major extra font needs spring from titles and headings. +% For portability's sake we use only the following fonts: +% cmr10 +% cmbx10 +% cmtt10 +% and some enlargements of them. These fonts are all "standard" fonts +% in Plain TeX. See The TeXbook p.350. +\font\fwfontnote=cmr7 + +\font\fwfontnorm=cmr10 +\font\fwfontnorma=cmr10 scaled \magstep1 +\font\fwfontnormb=cmr10 scaled \magstep2 + +\font\fwfontbold=cmbx10 +\font\fwfontbolda=cmbx10 scaled \magstep1 +\font\fwfontboldb=cmbx10 scaled \magstep2 +\font\fwfontboldc=cmbx10 scaled \magstep3 +\font\fwfontboldd=cmbx10 scaled \magstep4 + + +% Macros for Stylistic Details +% ---------------------------- +% This section contains all the fiddly little macros for setting the details +% of each macro definition. + +% Macro definitions are sandwiched by calls to these macros which can be used +% to sort out the spacing before and after the macro definition. +\def\fwbeginmacro{\fwparskipoff\bigskip} +\def\fwendmacro{\fwparskipon\par} + +% These macros deal with the macro name and definition line. +\def\fwmacroname#1#2{{\sl #1\/}$\lbrack$#2$\rbrack$} +\def\fwfilename#1#2{{\bf #1}$\lbrack$#2$\rbrack$} +\def\fwzero#1{{\bf Z}} +\def\fwmany#1{{\bf M}} +\def\fwequals{ $\equiv$} +\def\fwplusequals{ $+\equiv$} + +% Now for the actual body of the definition. It looks nice to have the tt +% code indented a little. Again, we use macros instead of writing direct TeX, +% so as to allow the user to fiddle this stuff to taste without having to +% modify the FunnelWeb C code. +\def\fwodef{\parindent=15pt\vskip0pt$\lbrace$\parindent=20pt} +\def\fwcdef{$\rbrace$\vskip0pt\parindent=0pt} +\def\fwoquote{`} +\def\fwcquote{'} +\def\fwoparen{$($} +\def\fwcomma{$,$} +\def\fwcparen{$)$} +\def\fwparam#1{$\diamond #1$} +\def\fwparams#1{$(\diamond #1)$} + +% These macros deal with the notes that are appended at the end of each +% macro definition. Note that even though \fwisafile,\fwusedin, and \fwseealso +% have the same definition, they are given different names so as to allow the +% user to redefine these macros to typeset each kind of information differently +% if desired. +\def\fwbeginmacronotes{\begingroup\baselineskip=9pt\smallskip} +\def\fwnote#1{{\fwfontnote #1}\par} +\def\fwisafile#1{\fwnote{#1}} +\def\fwusedin#1{\fwnote{#1}} +\def\fwseealso#1{\fwnote{#1}} +\def\fwendmacronotes{\endgroup} + + +% Macros to Typeset Program Code Verbatim +% --------------------------------------- +% This is by far the hairiest and most difficult part of the typesetting task +% because we have to turn off most of TeX's natural instincts in order to +% typeset the program text exactly as it appears in the input file. +% Two macros are defined to pull this off: \fwbtx and \fwverbatimgobble. +% Their code was inspired by the following sections of "The TeXbook": +% Appendix D: Dirty Tricks, 3.Verbatim listing, p.380-382. +% Appendix E: Example Formats, p.421. +% The \fwbtx[ (for "FunnelWeb Begin TeXt") macro does most of the hard work. +% The liberal use of "%" is because I don't understand TeX well enough to +% understand when an end of line will cause trouble, and I am playing it safe. + +% Before defining the main \fwbtx macro, we have to stash away some definitions +% in the hidden part of TeX's environment. Let's hope that these "hidden" +% definitions don't affect anything except what is desired to be affected. + +% The tt font in which we wish to set the text has two Latin lurking ligatures! +% These are ?` and !`. To disable them, we define the left quote when ACTIVE +% to be defined in such a way as to prevent ligatures. The main TeX text will +% normally not be exposed to this definition because normally the leftquote +% character is not active. The \fwbtx macro temporarily makes the left quote +% character active thus activating the deactivation of left quote ligatures. +% See The TeXbook p.381. +{\catcode`\`=\active \gdef`{\relax\lq}} + +% TeX is fairly carefree about spaces and so we have to make it more serious. +% To do so we pull the same trick as above, setting up a definition for active +% space, but only making space active during the span of the verbatim text. +% In Plain TeX the active space is defined to be simply a space, but here we +% define it to be a control space. This ensures that the space cannot +% be gobbled up by one of TeX's mysterious mechanisms when activated. +% See The TeXbook, p.381 and p.352. +{\obeyspaces\global\let =\ } + +% Here is the main \fwbtx verbatim text macro. +% Note: The order in which all these pieces of business have to be done is +% still a partial mystery to me. Don't fiddle with this stuff unless you +% think you know what you are doing. +\def\fwbtx[{% +% +% The funnies involved in getting verbatim output are safely housed inside +% this \begingroup, and the \endgroup in \fwverbatimgobble. Groups are used +% instead of curly braces because we have to be able to signal the end of +% this macro with a curly brace. +\begingroup% +% +% \pars at the end of empty lines in the verbatim text won't come out normally +% because TeX is in vertical mode and they get gobbled up. To prevent this, +% we force \par to exit vertical mode first. See The TeXbook p.381. +\def\par{\leavevmode\endgraf}% +% +% Activate the leftquote character so as to avoid ligatures (see above). +\catcode`\`=\active% +% +% The \obeylines macro simply defines end of line (^M) to be \par. This ensures +% that TeX will treat each verbatim line as a new paragraph. +\obeylines% +% +% To get verbatim output, we have to desex all the special characters. This +% is explained in detail in The TeXbook p.380. +\def\do##1{\catcode`##1=12 }\dospecials% +% +% Activate the space character so as to make TeX treat blanks seriously. +% This activation invokes an eralier definition (see above). +\obeyspaces +% +% Interparagraph skips do not help the cause. +% Note: We have to preserve the indentation though, as the code is actually +% indented in the final output. See \fwodef in an earlier section. +\parskip=0pt% +% +% We typeset the verbatim text in tt font (courier on the Macintosh) for a +% number of reasons: +% - tt font has the same horizontal spacing for each character. +% - tt font covers the ASCII character set. +% - tt font doesn't have many surprises (e.g. ligatures). +% - tt font looks much what you might see on a computer terminal screen. +\tt% +% +% Having set up an environment for verbatim, we are ready to use it. +% By invoking \fwverbatimgobble, this \fwbtx macro gobbles up text verbatim (as +% part of the parameter of \fwverbatimgobble) until it sees the termination +% string "]fwetx=" (the "=" was thrown in to add obscurity as this sequence +% must never occur in the verbatim text). +\fwverbatimgobble} + +% The \fwverbatimgobble macro exists to allow \fwbtx to bracket verbatim text. +\def\fwverbatimgobble#1]fwetx={#1\endgroup} + + +% Table of Contents +% ----------------- +% The five levels of table of contents that FunnelWeb supports are identified +% by the five letters [A..E]. These are used throughout the following macros. + +% The following macros are utilities to the TOC macros to follow. +\def\fwrule{\medskip\hrule\medskip} +\def\fwqh{\hskip1.5em\relax} +\def\fwbeforesec{\penalty-200\bigskip\medskip\par} + +% The following macros are used to typeset the table of contents. +\def\fwtocstart#1{\fwrule\leftline{\fwfontbolda Table of Contents}\fwrule} +\def\fwtoca#1#2{\leftline{{\bf #1 #2}}} +\def\fwtocb#1#2{\leftline{\fwqh #1 #2}} +\def\fwtocc#1#2{\leftline{\fwqh\fwqh #1 #2}} +\def\fwtocd#1#2{\leftline{\fwqh\fwqh\fwqh #1 #2}} +\def\fwtoce#1#2{\leftline{\fwqh\fwqh\fwqh\fwqh #1 #2}} +\def\fwtocfinish#1{\fwrule} + +% The following "library" macros define five different strengths of headings +% which can be used later in the section macros. +\def\fwliba#1#2{\vfill\eject{\fwfontboldc #1 #2}\penalty200\smallskip} +\def\fwlibb#1#2{\fwbeforesec{\fwfontboldb #1 #2}\penalty200\smallskip} +\def\fwlibc#1#2{\fwbeforesec{\fwfontnormb #1 #2}\penalty200\smallskip} +\def\fwlibd#1#2{\fwbeforesec{\bf #1 #2}\penalty200} +\def\fwlibe#1#2{\fwbeforesec{\bf #1 #2}} + +% Here are the macros that actually typeset the section headings throughout +% the document. The fwlib system has been employed so as to easily allow the +% user to redefine the strengths of headings to taste. For example, the +% user could insert in the input document a similar set of definitions to these +% but with the b..e headings set to \fwlibc. This would tone down the output. +\def\fwseca#1#2{\fwliba{#1}{#2}} +\def\fwsecb#1#2{\fwlibb{#1}{#2}} +\def\fwsecc#1#2{\fwlibc{#1}{#2}} +\def\fwsecd#1#2{\fwlibd{#1}{#2}} +\def\fwsece#1#2{\fwlibe{#1}{#2}} + + +% Support for Explicit Typesetting +% -------------------------------- +% FunnelWeb supports pragmas and other constructs that allow +% typesetter-independent typesetting commands to be given. The +% following macros support these features. + +% The in-text literal @{sloth@} and emphasise @[walrus@] features. +\def\fwlit#1{{\tt #1}} +\def\fwemp#1{{\it #1}} + +% The "@p new_page" pragma. +\def\fwnewpage{\vfill\eject} + +% The "@p vskip Nmm" pragma. +\def\fwvskip#1{\null\vskip #1mm} + +% The "@p title <font> <align> <text>" pragma. +\def\fwfontnormal#1{{\fwfontnorm {#1}}} +\def\fwfonttitle#1{{\fwfontboldd {#1}}} +\def\fwfontsmalltitle#1{{\fwfontboldb {#1}}} +\def\fwleftline#1{\leftline{#1}} +\def\fwcenterline#1{\centerline{#1}} +\def\fwrightline#1{\rightline{#1}} + + +% Support for Old FunnelWeb +% ------------------------- +% The following macros were used extensively in the first version of +% FunnelWeb and are retained so that these older input files will still +% typeset cleanly. +\def\p#1{{\tt #1}} % P for Program text. +\def\flagpage#1#2{ + \null + \vfill + \centerline{\fwfontboldd #1} + \vskip 1cm + \centerline{\fwfontboldd #2} + \vfill + \null + \vfill +} + +%====================== End of FunnelWeb TeX Definitions ======================= +WV03: Test the typesetting of various kinds of macros. + +First create an output file to keep the analyser happy. +\fwbeginmacro +\fwfilename{wv03.out}{1}\fwequals \fwodef \fwcdef +\fwbeginmacronotes +\fwisafile{This macro is attached to an output file.} +\fwendmacronotes +\fwendmacro + + +1. Test macro never used. +\fwbeginmacro +\fwmacroname{Never Used}{2}\fwzero{}\fwequals \fwodef \fwcdef +\fwbeginmacronotes +\fwusedin{This macro is NEVER invoked.} +\fwendmacronotes +\fwendmacro + + +2. Test a macro used once. +\fwbeginmacro +\fwmacroname{Used Once}{3}\fwequals \fwodef \fwcdef +\fwbeginmacronotes +\fwusedin{This macro is invoked in definition 7.} +\fwendmacronotes +\fwendmacro + + +3. Test a macro used twice. +\fwbeginmacro +\fwmacroname{Used Twice}{4}\fwmany{}\fwequals \fwodef \fwcdef +\fwbeginmacronotes +\fwusedin{This macro is invoked in definitions 7 and 8.} +\fwendmacronotes +\fwendmacro + + +4. Test a macro used three times. +\fwbeginmacro +\fwmacroname{Used Thrice}{5}\fwmany{}\fwequals \fwodef \fwcdef +\fwbeginmacronotes +\fwusedin{This macro is invoked in definitions 7, 8, and 9.} +\fwendmacronotes +\fwendmacro + + +5. Test a macro used five times. +\fwbeginmacro +\fwmacroname{Used Quice}{6}\fwmany{}\fwequals \fwodef \fwcdef +\fwbeginmacronotes +\fwusedin{This macro is invoked in definitions 7, 8, 9, 10, and 11.} +\fwendmacronotes +\fwendmacro + + +Here is the macro that does all the calling for the above. +\fwbeginmacro +\fwmacroname{Dummy1}{7}\fwzero{}\fwequals \fwodef \fwmacroname{Used Once}{3}\fwbtx[ +]fwetx=% +\fwmacroname{Used Twice}{4}\fwbtx[ +]fwetx=% +\fwmacroname{Used Thrice}{5}\fwbtx[ +]fwetx=% +\fwmacroname{Used Quice}{6}\fwbtx[ +]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwusedin{This macro is NEVER invoked.} +\fwendmacronotes +\fwendmacro + + +\fwbeginmacro +\fwmacroname{Dummy2}{8}\fwzero{}\fwequals \fwodef \fwmacroname{Used Twice}{4}\fwbtx[ +]fwetx=% +\fwmacroname{Used Thrice}{5}\fwbtx[ +]fwetx=% +\fwmacroname{Used Quice}{6}\fwbtx[ +]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwusedin{This macro is NEVER invoked.} +\fwendmacronotes +\fwendmacro + + +\fwbeginmacro +\fwmacroname{Dummy3}{9}\fwzero{}\fwequals \fwodef \fwmacroname{Used Thrice}{5}\fwbtx[ +]fwetx=% +\fwmacroname{Used Quice}{6}\fwbtx[ +]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwusedin{This macro is NEVER invoked.} +\fwendmacronotes +\fwendmacro + + +\fwbeginmacro +\fwmacroname{Dummy4}{10}\fwzero{}\fwequals \fwodef \fwmacroname{Used Quice}{6}\fwbtx[ +]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwusedin{This macro is NEVER invoked.} +\fwendmacronotes +\fwendmacro + + +\fwbeginmacro +\fwmacroname{Dummy5}{11}\fwzero{}\fwequals \fwodef \fwmacroname{Used Quice}{6}\fwbtx[ +]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwusedin{This macro is NEVER invoked.} +\fwendmacronotes +\fwendmacro + + +6. Test a macro with two body parts. +\fwbeginmacro +\fwmacroname{Two body parts}{12}\fwzero{}\fwplusequals \fwodef \fwbtx[Sloth]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwseealso{This macro is defined in definitions 12 and 13.} +\fwusedin{This macro is invoked in definition 21.} +\fwendmacronotes +\fwendmacro + +\fwbeginmacro +\fwmacroname{Two body parts}{13}\fwzero{}\fwplusequals \fwodef \fwbtx[Walrus]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwseealso{This macro is defined in definitions 12 and 13.} +\fwusedin{This macro is invoked in definition 21.} +\fwendmacronotes +\fwendmacro + + +7. Test a macro with three body parts. +\fwbeginmacro +\fwmacroname{Three body parts}{14}\fwzero{}\fwplusequals \fwodef \fwbtx[Sloth]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwseealso{This macro is defined in definitions 14, 15, and 16.} +\fwusedin{This macro is invoked in definition 19.} +\fwendmacronotes +\fwendmacro + +\fwbeginmacro +\fwmacroname{Three body parts}{15}\fwzero{}\fwplusequals \fwodef \fwbtx[Walrus]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwseealso{This macro is defined in definitions 14, 15, and 16.} +\fwusedin{This macro is invoked in definition 19.} +\fwendmacronotes +\fwendmacro + +\fwbeginmacro +\fwmacroname{Three body parts}{16}\fwzero{}\fwplusequals \fwodef \fwbtx[Aardvaark]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwseealso{This macro is defined in definitions 14, 15, and 16.} +\fwusedin{This macro is invoked in definition 19.} +\fwendmacronotes +\fwendmacro + + +8. Test a macro with five body parts. +\fwbeginmacro +\fwmacroname{Five body parts}{17}\fwzero{}\fwplusequals \fwodef \fwbtx[Sloth]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwseealso{This macro is defined in definitions 17, 18, 19, 20, and 21.} +\fwusedin{This macro is NEVER invoked.} +\fwendmacronotes +\fwendmacro + +\fwbeginmacro +\fwmacroname{Five body parts}{18}\fwzero{}\fwplusequals \fwodef \fwbtx[Walrus]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwseealso{This macro is defined in definitions 17, 18, 19, 20, and 21.} +\fwusedin{This macro is NEVER invoked.} +\fwendmacronotes +\fwendmacro + +\fwbeginmacro +\fwmacroname{Five body parts}{19}\fwzero{}\fwplusequals \fwodef \fwmacroname{Three body parts}{14}\fwcdef +\fwbeginmacronotes +\fwseealso{This macro is defined in definitions 17, 18, 19, 20, and 21.} +\fwusedin{This macro is NEVER invoked.} +\fwendmacronotes +\fwendmacro + +\fwbeginmacro +\fwmacroname{Five body parts}{20}\fwzero{}\fwplusequals \fwodef \fwbtx[Aardvaark]fwetx=% +\fwcdef +\fwbeginmacronotes +\fwseealso{This macro is defined in definitions 17, 18, 19, 20, and 21.} +\fwusedin{This macro is NEVER invoked.} +\fwendmacronotes +\fwendmacro + +\fwbeginmacro +\fwmacroname{Five body parts}{21}\fwzero{}\fwplusequals \fwodef \fwmacroname{Two body parts}{12}\fwcdef +\fwbeginmacronotes +\fwseealso{This macro is defined in definitions 17, 18, 19, 20, and 21.} +\fwusedin{This macro is NEVER invoked.} +\fwendmacronotes +\fwendmacro + + + +\bye + + +%******************************************************************************* +%* END OF AUTOMATICALLY GENERATED TEX FILE * +%******************************************************************************* + diff --git a/web/funnelAC/answers/wv04.lis b/web/funnelAC/answers/wv04.lis new file mode 100644 index 0000000000..342bdb414d --- /dev/null +++ b/web/funnelAC/answers/wv04.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Weave: Completed <<Suppressed>>. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/wv04.tex b/web/funnelAC/answers/wv04.tex new file mode 100644 index 0000000000..f60d8158a3 --- /dev/null +++ b/web/funnelAC/answers/wv04.tex @@ -0,0 +1,397 @@ + +%******************************************************************************* +%* START OF AUTOMATICALLY GENERATED TEX FILE * +%******************************************************************************* +%* * +%* This TeX file was automatically generated by the FunnelWeb preprocessor. * +%* You can typeset this file to produce printed documentation by running it * +%* through the TeX typesetter using a command such as: * +%* tex thisfilename * +%* The resultant file thisfilename.dvi can be printed using a command such as: * +%* lpr -Pcslw -d thisfilename.dvi * +%* * +%* FunnelWeb is a preprocessor that allows programmers to weave programs and * +%* their documentation together in a single document. The FunnelWeb program * +%* analyses such documents producing both program files and typeset * +%* documentation such as this TeX file. * +%* FunnelWeb was created by Ross Williams. * +%* * +%* For more information on FunnelWeb look in the following FTP archive: * +%* Machine : sirius.itd.adelaide.edu.au [IP=129.127.40.3]. * +%* Directory: ~pub/funnelweb/ * +%* (or some other appropriately named directory). * +%* or email Ross Williams at ross@spam.adelaide.edu.au * +%* * +%******************************************************************************* + + +%===================== Start of FunnelWeb TeX Definitions ====================== + + +% Version +% ------- +% This is FunnelWeb TeX Macro Library Version 1.0. + + +% Copyright +% --------- +% This set of FunnelWeb TeX definitions was written by Ross Williams and was +% originally Copyright (C) 1992 Ross N. Williams. However, I, Ross Williams, +% hereby forego any claim to Copyright in this set of FunnelWeb TeX definitions +% and hereby authorize that the set of TeX definitions pass into the public +% domain. -- Ross N. Williams, 3:41pm 07-May-1992, Adelaide, Australia. + + +% Modification +% ------------ +% Please record all modifications to these TeX definitions here. Unless +% otherwise specified, all modified definitions fall in the public domain too. +% +% Programmers: +% RNW Ross N. Williams ross@spam.adelaide.edu.au +% +% Changes: +% 07-May-1992 RNW Prepared this work for public domain release. +% + + +% General Comments +% ---------------- +% This set of TeX definitions exists for two reasons: +% +% 1. To shorten and neaten the FunnelWeb TeX output. +% 2. To allow users to fiddle with the output format in their input files +% (by inserting redefining "\def"s) without having to resort to +% modifying the FunnelWeb code. +% +% The user is warned that these definitions may be changed from time to time +% (but probably not much). The user should not be too sneaky. In particular, +% users wishing to redefine some of these macros should do so in an explicitly +% defined section at the top of their input file. This will mean that in the +% event of problems, that section can simply be deleted or commented out to +% allow the document to at least be typeset in the default format. Users should +% limit themselves to redefining these macros in such a section and should +% refrain from using the macros throughout their documents. + + +% Environment Parameters +% ---------------------- +% \tolerance tells TeX how tolerant it should be about making bad line and +% page breaks. Here we set it to it's maximum, as +% 1) Computer programs are likely to cause lots of bad breaks. +% 2) In most cases the user would probably rather get the TeX file through +% TeX without any errors than fiddle with spacings for perfection. +\tolerance=10000 + +% I don't like indentation as it makes the page look more busy. Instead, +% paragraphs are separated by a little space (see next). +\parindent=0pt + +% In many cases, users will produce documents with long runs of paragraphs. +% In order to space out these paragraphs, it is convenient to maintain a +% prevailing non-zero \parskip (end-of-paragaph skip). The only trouble is +% that the skip becomes a problem in macro definitions which require no skip +% and so we have to turn the skip on and off. The following two macros +% simplify this process. +\def\fwparskipon{\parskip=\medskipamount} +\def\fwparskipoff{\parskip=0pt} +\fwparskipon + +% Setting raggedbottom allows TeX to leave a bit of space at the bottom of the +% page in order to better vertically align the rest of the page (e.g. skips +% won't stretch as much). It also means that headings are less likely to be +% isolated at the bottom of the page without any following text. +\raggedbottom + + +% Fonts +% ----- +% Most of the typeset output is set in 10pt roman and 10pt tt font. +% The major extra font needs spring from titles and headings. +% For portability's sake we use only the following fonts: +% cmr10 +% cmbx10 +% cmtt10 +% and some enlargements of them. These fonts are all "standard" fonts +% in Plain TeX. See The TeXbook p.350. +\font\fwfontnote=cmr7 + +\font\fwfontnorm=cmr10 +\font\fwfontnorma=cmr10 scaled \magstep1 +\font\fwfontnormb=cmr10 scaled \magstep2 + +\font\fwfontbold=cmbx10 +\font\fwfontbolda=cmbx10 scaled \magstep1 +\font\fwfontboldb=cmbx10 scaled \magstep2 +\font\fwfontboldc=cmbx10 scaled \magstep3 +\font\fwfontboldd=cmbx10 scaled \magstep4 + + +% Macros for Stylistic Details +% ---------------------------- +% This section contains all the fiddly little macros for setting the details +% of each macro definition. + +% Macro definitions are sandwiched by calls to these macros which can be used +% to sort out the spacing before and after the macro definition. +\def\fwbeginmacro{\fwparskipoff\bigskip} +\def\fwendmacro{\fwparskipon\par} + +% These macros deal with the macro name and definition line. +\def\fwmacroname#1#2{{\sl #1\/}$\lbrack$#2$\rbrack$} +\def\fwfilename#1#2{{\bf #1}$\lbrack$#2$\rbrack$} +\def\fwzero#1{{\bf Z}} +\def\fwmany#1{{\bf M}} +\def\fwequals{ $\equiv$} +\def\fwplusequals{ $+\equiv$} + +% Now for the actual body of the definition. It looks nice to have the tt +% code indented a little. Again, we use macros instead of writing direct TeX, +% so as to allow the user to fiddle this stuff to taste without having to +% modify the FunnelWeb C code. +\def\fwodef{\parindent=15pt\vskip0pt$\lbrace$\parindent=20pt} +\def\fwcdef{$\rbrace$\vskip0pt\parindent=0pt} +\def\fwoquote{`} +\def\fwcquote{'} +\def\fwoparen{$($} +\def\fwcomma{$,$} +\def\fwcparen{$)$} +\def\fwparam#1{$\diamond #1$} +\def\fwparams#1{$(\diamond #1)$} + +% These macros deal with the notes that are appended at the end of each +% macro definition. Note that even though \fwisafile,\fwusedin, and \fwseealso +% have the same definition, they are given different names so as to allow the +% user to redefine these macros to typeset each kind of information differently +% if desired. +\def\fwbeginmacronotes{\begingroup\baselineskip=9pt\smallskip} +\def\fwnote#1{{\fwfontnote #1}\par} +\def\fwisafile#1{\fwnote{#1}} +\def\fwusedin#1{\fwnote{#1}} +\def\fwseealso#1{\fwnote{#1}} +\def\fwendmacronotes{\endgroup} + + +% Macros to Typeset Program Code Verbatim +% --------------------------------------- +% This is by far the hairiest and most difficult part of the typesetting task +% because we have to turn off most of TeX's natural instincts in order to +% typeset the program text exactly as it appears in the input file. +% Two macros are defined to pull this off: \fwbtx and \fwverbatimgobble. +% Their code was inspired by the following sections of "The TeXbook": +% Appendix D: Dirty Tricks, 3.Verbatim listing, p.380-382. +% Appendix E: Example Formats, p.421. +% The \fwbtx[ (for "FunnelWeb Begin TeXt") macro does most of the hard work. +% The liberal use of "%" is because I don't understand TeX well enough to +% understand when an end of line will cause trouble, and I am playing it safe. + +% Before defining the main \fwbtx macro, we have to stash away some definitions +% in the hidden part of TeX's environment. Let's hope that these "hidden" +% definitions don't affect anything except what is desired to be affected. + +% The tt font in which we wish to set the text has two Latin lurking ligatures! +% These are ?` and !`. To disable them, we define the left quote when ACTIVE +% to be defined in such a way as to prevent ligatures. The main TeX text will +% normally not be exposed to this definition because normally the leftquote +% character is not active. The \fwbtx macro temporarily makes the left quote +% character active thus activating the deactivation of left quote ligatures. +% See The TeXbook p.381. +{\catcode`\`=\active \gdef`{\relax\lq}} + +% TeX is fairly carefree about spaces and so we have to make it more serious. +% To do so we pull the same trick as above, setting up a definition for active +% space, but only making space active during the span of the verbatim text. +% In Plain TeX the active space is defined to be simply a space, but here we +% define it to be a control space. This ensures that the space cannot +% be gobbled up by one of TeX's mysterious mechanisms when activated. +% See The TeXbook, p.381 and p.352. +{\obeyspaces\global\let =\ } + +% Here is the main \fwbtx verbatim text macro. +% Note: The order in which all these pieces of business have to be done is +% still a partial mystery to me. Don't fiddle with this stuff unless you +% think you know what you are doing. +\def\fwbtx[{% +% +% The funnies involved in getting verbatim output are safely housed inside +% this \begingroup, and the \endgroup in \fwverbatimgobble. Groups are used +% instead of curly braces because we have to be able to signal the end of +% this macro with a curly brace. +\begingroup% +% +% \pars at the end of empty lines in the verbatim text won't come out normally +% because TeX is in vertical mode and they get gobbled up. To prevent this, +% we force \par to exit vertical mode first. See The TeXbook p.381. +\def\par{\leavevmode\endgraf}% +% +% Activate the leftquote character so as to avoid ligatures (see above). +\catcode`\`=\active% +% +% The \obeylines macro simply defines end of line (^M) to be \par. This ensures +% that TeX will treat each verbatim line as a new paragraph. +\obeylines% +% +% To get verbatim output, we have to desex all the special characters. This +% is explained in detail in The TeXbook p.380. +\def\do##1{\catcode`##1=12 }\dospecials% +% +% Activate the space character so as to make TeX treat blanks seriously. +% This activation invokes an eralier definition (see above). +\obeyspaces +% +% Interparagraph skips do not help the cause. +% Note: We have to preserve the indentation though, as the code is actually +% indented in the final output. See \fwodef in an earlier section. +\parskip=0pt% +% +% We typeset the verbatim text in tt font (courier on the Macintosh) for a +% number of reasons: +% - tt font has the same horizontal spacing for each character. +% - tt font covers the ASCII character set. +% - tt font doesn't have many surprises (e.g. ligatures). +% - tt font looks much what you might see on a computer terminal screen. +\tt% +% +% Having set up an environment for verbatim, we are ready to use it. +% By invoking \fwverbatimgobble, this \fwbtx macro gobbles up text verbatim (as +% part of the parameter of \fwverbatimgobble) until it sees the termination +% string "]fwetx=" (the "=" was thrown in to add obscurity as this sequence +% must never occur in the verbatim text). +\fwverbatimgobble} + +% The \fwverbatimgobble macro exists to allow \fwbtx to bracket verbatim text. +\def\fwverbatimgobble#1]fwetx={#1\endgroup} + + +% Table of Contents +% ----------------- +% The five levels of table of contents that FunnelWeb supports are identified +% by the five letters [A..E]. These are used throughout the following macros. + +% The following macros are utilities to the TOC macros to follow. +\def\fwrule{\medskip\hrule\medskip} +\def\fwqh{\hskip1.5em\relax} +\def\fwbeforesec{\penalty-200\bigskip\medskip\par} + +% The following macros are used to typeset the table of contents. +\def\fwtocstart#1{\fwrule\leftline{\fwfontbolda Table of Contents}\fwrule} +\def\fwtoca#1#2{\leftline{{\bf #1 #2}}} +\def\fwtocb#1#2{\leftline{\fwqh #1 #2}} +\def\fwtocc#1#2{\leftline{\fwqh\fwqh #1 #2}} +\def\fwtocd#1#2{\leftline{\fwqh\fwqh\fwqh #1 #2}} +\def\fwtoce#1#2{\leftline{\fwqh\fwqh\fwqh\fwqh #1 #2}} +\def\fwtocfinish#1{\fwrule} + +% The following "library" macros define five different strengths of headings +% which can be used later in the section macros. +\def\fwliba#1#2{\vfill\eject{\fwfontboldc #1 #2}\penalty200\smallskip} +\def\fwlibb#1#2{\fwbeforesec{\fwfontboldb #1 #2}\penalty200\smallskip} +\def\fwlibc#1#2{\fwbeforesec{\fwfontnormb #1 #2}\penalty200\smallskip} +\def\fwlibd#1#2{\fwbeforesec{\bf #1 #2}\penalty200} +\def\fwlibe#1#2{\fwbeforesec{\bf #1 #2}} + +% Here are the macros that actually typeset the section headings throughout +% the document. The fwlib system has been employed so as to easily allow the +% user to redefine the strengths of headings to taste. For example, the +% user could insert in the input document a similar set of definitions to these +% but with the b..e headings set to \fwlibc. This would tone down the output. +\def\fwseca#1#2{\fwliba{#1}{#2}} +\def\fwsecb#1#2{\fwlibb{#1}{#2}} +\def\fwsecc#1#2{\fwlibc{#1}{#2}} +\def\fwsecd#1#2{\fwlibd{#1}{#2}} +\def\fwsece#1#2{\fwlibe{#1}{#2}} + + +% Support for Explicit Typesetting +% -------------------------------- +% FunnelWeb supports pragmas and other constructs that allow +% typesetter-independent typesetting commands to be given. The +% following macros support these features. + +% The in-text literal @{sloth@} and emphasise @[walrus@] features. +\def\fwlit#1{{\tt #1}} +\def\fwemp#1{{\it #1}} + +% The "@p new_page" pragma. +\def\fwnewpage{\vfill\eject} + +% The "@p vskip Nmm" pragma. +\def\fwvskip#1{\null\vskip #1mm} + +% The "@p title <font> <align> <text>" pragma. +\def\fwfontnormal#1{{\fwfontnorm {#1}}} +\def\fwfonttitle#1{{\fwfontboldd {#1}}} +\def\fwfontsmalltitle#1{{\fwfontboldb {#1}}} +\def\fwleftline#1{\leftline{#1}} +\def\fwcenterline#1{\centerline{#1}} +\def\fwrightline#1{\rightline{#1}} + + +% Support for Old FunnelWeb +% ------------------------- +% The following macros were used extensively in the first version of +% FunnelWeb and are retained so that these older input files will still +% typeset cleanly. +\def\p#1{{\tt #1}} % P for Program text. +\def\flagpage#1#2{ + \null + \vfill + \centerline{\fwfontboldd #1} + \vskip 1cm + \centerline{\fwfontboldd #2} + \vfill + \null + \vfill +} + +%====================== End of FunnelWeb TeX Definitions ======================= +WV04: Test ugly string processing. + +\fwbeginmacro +\fwfilename{wv04.out}{1}\fwequals \fwodef \fwcdef +\fwbeginmacronotes +\fwisafile{This macro is attached to an output file.} +\fwendmacronotes +\fwendmacro + + +1. Test ugly string in section name. +\fwseca{1}{ !\char`\"\#\$\%'()*+,-./0123456789:;$<$=$>$?} +\fwseca{2}{ABCDEFGHIJKLMNOPQRSTUVWXYZ[$\backslash$]\char`\^\_`} +\fwseca{3}{abcdefghijklmnopqrstuvwxyz$\{$$|$$\}$\char`\~} + +2. Test ugly string in macro name. +\fwbeginmacro +\fwmacroname{ !\char`\"\#\$\%'()*+,-./0123456789:;$<$=$>$?}{2}\fwzero{}\fwequals \fwodef \fwcdef +\fwbeginmacronotes +\fwusedin{This macro is NEVER invoked.} +\fwendmacronotes +\fwendmacro + +\fwbeginmacro +\fwmacroname{ABCDEFGHIJKLMNOPQRSTUVWXYZ[$\backslash$]\char`\^\_`}{3}\fwzero{}\fwequals \fwodef \fwcdef +\fwbeginmacronotes +\fwusedin{This macro is NEVER invoked.} +\fwendmacronotes +\fwendmacro + +\fwbeginmacro +\fwmacroname{abcdefghijklmnopqrstuvwxyz$\{$$|$$\}$\char`\~}{4}\fwzero{}\fwequals \fwodef \fwcdef +\fwbeginmacronotes +\fwusedin{This macro is NEVER invoked.} +\fwendmacronotes +\fwendmacro + + +3. Test ugly string in literal section. +\fwlit{ !\char`\"\#\$\%'()*+,-./0123456789:;\char`\<=\char`\>?} +\fwlit{ABCDEFGHIJKLMNOPQRSTUVWXYZ[\char`\\]\char`\^\_`} +\fwlit{abcdefghijklmnopqrstuvwxyz\char`\{\char`\|\char`\}\char`\~} + +\bye + + +%******************************************************************************* +%* END OF AUTOMATICALLY GENERATED TEX FILE * +%******************************************************************************* + diff --git a/web/funnelAC/answers/wv05.lis b/web/funnelAC/answers/wv05.lis new file mode 100644 index 0000000000..342bdb414d --- /dev/null +++ b/web/funnelAC/answers/wv05.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Weave: Completed <<Suppressed>>. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/wv05.tex b/web/funnelAC/answers/wv05.tex new file mode 100644 index 0000000000..833907b66e --- /dev/null +++ b/web/funnelAC/answers/wv05.tex @@ -0,0 +1,442 @@ + +%******************************************************************************* +%* START OF AUTOMATICALLY GENERATED TEX FILE * +%******************************************************************************* +%* * +%* This TeX file was automatically generated by the FunnelWeb preprocessor. * +%* You can typeset this file to produce printed documentation by running it * +%* through the TeX typesetter using a command such as: * +%* tex thisfilename * +%* The resultant file thisfilename.dvi can be printed using a command such as: * +%* lpr -Pcslw -d thisfilename.dvi * +%* * +%* FunnelWeb is a preprocessor that allows programmers to weave programs and * +%* their documentation together in a single document. The FunnelWeb program * +%* analyses such documents producing both program files and typeset * +%* documentation such as this TeX file. * +%* FunnelWeb was created by Ross Williams. * +%* * +%* For more information on FunnelWeb look in the following FTP archive: * +%* Machine : sirius.itd.adelaide.edu.au [IP=129.127.40.3]. * +%* Directory: ~pub/funnelweb/ * +%* (or some other appropriately named directory). * +%* or email Ross Williams at ross@spam.adelaide.edu.au * +%* * +%******************************************************************************* + + +%===================== Start of FunnelWeb TeX Definitions ====================== + + +% Version +% ------- +% This is FunnelWeb TeX Macro Library Version 1.0. + + +% Copyright +% --------- +% This set of FunnelWeb TeX definitions was written by Ross Williams and was +% originally Copyright (C) 1992 Ross N. Williams. However, I, Ross Williams, +% hereby forego any claim to Copyright in this set of FunnelWeb TeX definitions +% and hereby authorize that the set of TeX definitions pass into the public +% domain. -- Ross N. Williams, 3:41pm 07-May-1992, Adelaide, Australia. + + +% Modification +% ------------ +% Please record all modifications to these TeX definitions here. Unless +% otherwise specified, all modified definitions fall in the public domain too. +% +% Programmers: +% RNW Ross N. Williams ross@spam.adelaide.edu.au +% +% Changes: +% 07-May-1992 RNW Prepared this work for public domain release. +% + + +% General Comments +% ---------------- +% This set of TeX definitions exists for two reasons: +% +% 1. To shorten and neaten the FunnelWeb TeX output. +% 2. To allow users to fiddle with the output format in their input files +% (by inserting redefining "\def"s) without having to resort to +% modifying the FunnelWeb code. +% +% The user is warned that these definitions may be changed from time to time +% (but probably not much). The user should not be too sneaky. In particular, +% users wishing to redefine some of these macros should do so in an explicitly +% defined section at the top of their input file. This will mean that in the +% event of problems, that section can simply be deleted or commented out to +% allow the document to at least be typeset in the default format. Users should +% limit themselves to redefining these macros in such a section and should +% refrain from using the macros throughout their documents. + + +% Environment Parameters +% ---------------------- +% \tolerance tells TeX how tolerant it should be about making bad line and +% page breaks. Here we set it to it's maximum, as +% 1) Computer programs are likely to cause lots of bad breaks. +% 2) In most cases the user would probably rather get the TeX file through +% TeX without any errors than fiddle with spacings for perfection. +\tolerance=10000 + +% I don't like indentation as it makes the page look more busy. Instead, +% paragraphs are separated by a little space (see next). +\parindent=0pt + +% In many cases, users will produce documents with long runs of paragraphs. +% In order to space out these paragraphs, it is convenient to maintain a +% prevailing non-zero \parskip (end-of-paragaph skip). The only trouble is +% that the skip becomes a problem in macro definitions which require no skip +% and so we have to turn the skip on and off. The following two macros +% simplify this process. +\def\fwparskipon{\parskip=\medskipamount} +\def\fwparskipoff{\parskip=0pt} +\fwparskipon + +% Setting raggedbottom allows TeX to leave a bit of space at the bottom of the +% page in order to better vertically align the rest of the page (e.g. skips +% won't stretch as much). It also means that headings are less likely to be +% isolated at the bottom of the page without any following text. +\raggedbottom + + +% Fonts +% ----- +% Most of the typeset output is set in 10pt roman and 10pt tt font. +% The major extra font needs spring from titles and headings. +% For portability's sake we use only the following fonts: +% cmr10 +% cmbx10 +% cmtt10 +% and some enlargements of them. These fonts are all "standard" fonts +% in Plain TeX. See The TeXbook p.350. +\font\fwfontnote=cmr7 + +\font\fwfontnorm=cmr10 +\font\fwfontnorma=cmr10 scaled \magstep1 +\font\fwfontnormb=cmr10 scaled \magstep2 + +\font\fwfontbold=cmbx10 +\font\fwfontbolda=cmbx10 scaled \magstep1 +\font\fwfontboldb=cmbx10 scaled \magstep2 +\font\fwfontboldc=cmbx10 scaled \magstep3 +\font\fwfontboldd=cmbx10 scaled \magstep4 + + +% Macros for Stylistic Details +% ---------------------------- +% This section contains all the fiddly little macros for setting the details +% of each macro definition. + +% Macro definitions are sandwiched by calls to these macros which can be used +% to sort out the spacing before and after the macro definition. +\def\fwbeginmacro{\fwparskipoff\bigskip} +\def\fwendmacro{\fwparskipon\par} + +% These macros deal with the macro name and definition line. +\def\fwmacroname#1#2{{\sl #1\/}$\lbrack$#2$\rbrack$} +\def\fwfilename#1#2{{\bf #1}$\lbrack$#2$\rbrack$} +\def\fwzero#1{{\bf Z}} +\def\fwmany#1{{\bf M}} +\def\fwequals{ $\equiv$} +\def\fwplusequals{ $+\equiv$} + +% Now for the actual body of the definition. It looks nice to have the tt +% code indented a little. Again, we use macros instead of writing direct TeX, +% so as to allow the user to fiddle this stuff to taste without having to +% modify the FunnelWeb C code. +\def\fwodef{\parindent=15pt\vskip0pt$\lbrace$\parindent=20pt} +\def\fwcdef{$\rbrace$\vskip0pt\parindent=0pt} +\def\fwoquote{`} +\def\fwcquote{'} +\def\fwoparen{$($} +\def\fwcomma{$,$} +\def\fwcparen{$)$} +\def\fwparam#1{$\diamond #1$} +\def\fwparams#1{$(\diamond #1)$} + +% These macros deal with the notes that are appended at the end of each +% macro definition. Note that even though \fwisafile,\fwusedin, and \fwseealso +% have the same definition, they are given different names so as to allow the +% user to redefine these macros to typeset each kind of information differently +% if desired. +\def\fwbeginmacronotes{\begingroup\baselineskip=9pt\smallskip} +\def\fwnote#1{{\fwfontnote #1}\par} +\def\fwisafile#1{\fwnote{#1}} +\def\fwusedin#1{\fwnote{#1}} +\def\fwseealso#1{\fwnote{#1}} +\def\fwendmacronotes{\endgroup} + + +% Macros to Typeset Program Code Verbatim +% --------------------------------------- +% This is by far the hairiest and most difficult part of the typesetting task +% because we have to turn off most of TeX's natural instincts in order to +% typeset the program text exactly as it appears in the input file. +% Two macros are defined to pull this off: \fwbtx and \fwverbatimgobble. +% Their code was inspired by the following sections of "The TeXbook": +% Appendix D: Dirty Tricks, 3.Verbatim listing, p.380-382. +% Appendix E: Example Formats, p.421. +% The \fwbtx[ (for "FunnelWeb Begin TeXt") macro does most of the hard work. +% The liberal use of "%" is because I don't understand TeX well enough to +% understand when an end of line will cause trouble, and I am playing it safe. + +% Before defining the main \fwbtx macro, we have to stash away some definitions +% in the hidden part of TeX's environment. Let's hope that these "hidden" +% definitions don't affect anything except what is desired to be affected. + +% The tt font in which we wish to set the text has two Latin lurking ligatures! +% These are ?` and !`. To disable them, we define the left quote when ACTIVE +% to be defined in such a way as to prevent ligatures. The main TeX text will +% normally not be exposed to this definition because normally the leftquote +% character is not active. The \fwbtx macro temporarily makes the left quote +% character active thus activating the deactivation of left quote ligatures. +% See The TeXbook p.381. +{\catcode`\`=\active \gdef`{\relax\lq}} + +% TeX is fairly carefree about spaces and so we have to make it more serious. +% To do so we pull the same trick as above, setting up a definition for active +% space, but only making space active during the span of the verbatim text. +% In Plain TeX the active space is defined to be simply a space, but here we +% define it to be a control space. This ensures that the space cannot +% be gobbled up by one of TeX's mysterious mechanisms when activated. +% See The TeXbook, p.381 and p.352. +{\obeyspaces\global\let =\ } + +% Here is the main \fwbtx verbatim text macro. +% Note: The order in which all these pieces of business have to be done is +% still a partial mystery to me. Don't fiddle with this stuff unless you +% think you know what you are doing. +\def\fwbtx[{% +% +% The funnies involved in getting verbatim output are safely housed inside +% this \begingroup, and the \endgroup in \fwverbatimgobble. Groups are used +% instead of curly braces because we have to be able to signal the end of +% this macro with a curly brace. +\begingroup% +% +% \pars at the end of empty lines in the verbatim text won't come out normally +% because TeX is in vertical mode and they get gobbled up. To prevent this, +% we force \par to exit vertical mode first. See The TeXbook p.381. +\def\par{\leavevmode\endgraf}% +% +% Activate the leftquote character so as to avoid ligatures (see above). +\catcode`\`=\active% +% +% The \obeylines macro simply defines end of line (^M) to be \par. This ensures +% that TeX will treat each verbatim line as a new paragraph. +\obeylines% +% +% To get verbatim output, we have to desex all the special characters. This +% is explained in detail in The TeXbook p.380. +\def\do##1{\catcode`##1=12 }\dospecials% +% +% Activate the space character so as to make TeX treat blanks seriously. +% This activation invokes an eralier definition (see above). +\obeyspaces +% +% Interparagraph skips do not help the cause. +% Note: We have to preserve the indentation though, as the code is actually +% indented in the final output. See \fwodef in an earlier section. +\parskip=0pt% +% +% We typeset the verbatim text in tt font (courier on the Macintosh) for a +% number of reasons: +% - tt font has the same horizontal spacing for each character. +% - tt font covers the ASCII character set. +% - tt font doesn't have many surprises (e.g. ligatures). +% - tt font looks much what you might see on a computer terminal screen. +\tt% +% +% Having set up an environment for verbatim, we are ready to use it. +% By invoking \fwverbatimgobble, this \fwbtx macro gobbles up text verbatim (as +% part of the parameter of \fwverbatimgobble) until it sees the termination +% string "]fwetx=" (the "=" was thrown in to add obscurity as this sequence +% must never occur in the verbatim text). +\fwverbatimgobble} + +% The \fwverbatimgobble macro exists to allow \fwbtx to bracket verbatim text. +\def\fwverbatimgobble#1]fwetx={#1\endgroup} + + +% Table of Contents +% ----------------- +% The five levels of table of contents that FunnelWeb supports are identified +% by the five letters [A..E]. These are used throughout the following macros. + +% The following macros are utilities to the TOC macros to follow. +\def\fwrule{\medskip\hrule\medskip} +\def\fwqh{\hskip1.5em\relax} +\def\fwbeforesec{\penalty-200\bigskip\medskip\par} + +% The following macros are used to typeset the table of contents. +\def\fwtocstart#1{\fwrule\leftline{\fwfontbolda Table of Contents}\fwrule} +\def\fwtoca#1#2{\leftline{{\bf #1 #2}}} +\def\fwtocb#1#2{\leftline{\fwqh #1 #2}} +\def\fwtocc#1#2{\leftline{\fwqh\fwqh #1 #2}} +\def\fwtocd#1#2{\leftline{\fwqh\fwqh\fwqh #1 #2}} +\def\fwtoce#1#2{\leftline{\fwqh\fwqh\fwqh\fwqh #1 #2}} +\def\fwtocfinish#1{\fwrule} + +% The following "library" macros define five different strengths of headings +% which can be used later in the section macros. +\def\fwliba#1#2{\vfill\eject{\fwfontboldc #1 #2}\penalty200\smallskip} +\def\fwlibb#1#2{\fwbeforesec{\fwfontboldb #1 #2}\penalty200\smallskip} +\def\fwlibc#1#2{\fwbeforesec{\fwfontnormb #1 #2}\penalty200\smallskip} +\def\fwlibd#1#2{\fwbeforesec{\bf #1 #2}\penalty200} +\def\fwlibe#1#2{\fwbeforesec{\bf #1 #2}} + +% Here are the macros that actually typeset the section headings throughout +% the document. The fwlib system has been employed so as to easily allow the +% user to redefine the strengths of headings to taste. For example, the +% user could insert in the input document a similar set of definitions to these +% but with the b..e headings set to \fwlibc. This would tone down the output. +\def\fwseca#1#2{\fwliba{#1}{#2}} +\def\fwsecb#1#2{\fwlibb{#1}{#2}} +\def\fwsecc#1#2{\fwlibc{#1}{#2}} +\def\fwsecd#1#2{\fwlibd{#1}{#2}} +\def\fwsece#1#2{\fwlibe{#1}{#2}} + + +% Support for Explicit Typesetting +% -------------------------------- +% FunnelWeb supports pragmas and other constructs that allow +% typesetter-independent typesetting commands to be given. The +% following macros support these features. + +% The in-text literal @{sloth@} and emphasise @[walrus@] features. +\def\fwlit#1{{\tt #1}} +\def\fwemp#1{{\it #1}} + +% The "@p new_page" pragma. +\def\fwnewpage{\vfill\eject} + +% The "@p vskip Nmm" pragma. +\def\fwvskip#1{\null\vskip #1mm} + +% The "@p title <font> <align> <text>" pragma. +\def\fwfontnormal#1{{\fwfontnorm {#1}}} +\def\fwfonttitle#1{{\fwfontboldd {#1}}} +\def\fwfontsmalltitle#1{{\fwfontboldb {#1}}} +\def\fwleftline#1{\leftline{#1}} +\def\fwcenterline#1{\centerline{#1}} +\def\fwrightline#1{\rightline{#1}} + + +% Support for Old FunnelWeb +% ------------------------- +% The following macros were used extensively in the first version of +% FunnelWeb and are retained so that these older input files will still +% typeset cleanly. +\def\p#1{{\tt #1}} % P for Program text. +\def\flagpage#1#2{ + \null + \vfill + \centerline{\fwfontboldd #1} + \vskip 1cm + \centerline{\fwfontboldd #2} + \vfill + \null + \vfill +} + +%====================== End of FunnelWeb TeX Definitions ======================= +WV05: Test processing of ugly strings as ordinary and protected text +with no typesetter set. + +\fwbeginmacro +\fwfilename{wv05.out}{1}\fwequals \fwodef \fwcdef +\fwbeginmacronotes +\fwisafile{This macro is attached to an output file.} +\fwendmacronotes +\fwendmacro + + +A paragraph in ordinary mode. + +33 con!text +34 con\char`\"text +35 con\#text +36 con\$text +37 con\%text +38 con\&text +39 con'text +40 con(text +41 con)text +42 con*text +43 con+text +44 con,text +45 con-text +46 con.text +47 con/text +48-57 con0123456789text +58 con:text +59 con;text +60 con$<$text +61 con=text +62 con$>$text +63 con?text +64 con@text +65-90 conABCDEFGHIJKLMNOPQRSTUVWXYZtext +91 con[text +92 con$\backslash$text +93 con]text +94 con\char`\^text +95 con\_text +96 con`text +97-122 conabcdefghijklmnopqrstuvwxyztext +123 con$\{$text +124 con$|$text +125 con$\}$text +126 con\char`\~text + +Now again, but this time inside protective braces. + +\fwlit{ +33 con!text +34 con\char`\"text +35 con\#text +36 con\$text +37 con\%text +38 con\&text +39 con'text +40 con(text +41 con)text +42 con*text +43 con+text +44 con,text +45 con-text +46 con.text +47 con/text +48-57 con0123456789text +58 con:text +59 con;text +60 con\char`\<text +61 con=text +62 con\char`\>text +63 con?text +64 con@text +65-90 conABCDEFGHIJKLMNOPQRSTUVWXYZtext +91 con[text +92 con\char`\\text +93 con]text +94 con\char`\^text +95 con\_text +96 con`text +97-122 conabcdefghijklmnopqrstuvwxyztext +123 con\char`\{text +124 con\char`\|text +125 con\char`\}text +126 con\char`\~text +} +\bye + + +%******************************************************************************* +%* END OF AUTOMATICALLY GENERATED TEX FILE * +%******************************************************************************* + diff --git a/web/funnelAC/answers/wv06.lis b/web/funnelAC/answers/wv06.lis new file mode 100644 index 0000000000..342bdb414d --- /dev/null +++ b/web/funnelAC/answers/wv06.lis @@ -0,0 +1,12 @@ +FUNNELWEB LISTING FILE +====================== + + +Global Local| Input File +------------+------------------------------------------------------------------- +................. +------------+------------------------------------------------------------------- + +Weave: Completed <<Suppressed>>. + +SUCCESS: No diagnostics. diff --git a/web/funnelAC/answers/wv06.tex b/web/funnelAC/answers/wv06.tex new file mode 100644 index 0000000000..e2626dbb69 --- /dev/null +++ b/web/funnelAC/answers/wv06.tex @@ -0,0 +1,443 @@ + +%******************************************************************************* +%* START OF AUTOMATICALLY GENERATED TEX FILE * +%******************************************************************************* +%* * +%* This TeX file was automatically generated by the FunnelWeb preprocessor. * +%* You can typeset this file to produce printed documentation by running it * +%* through the TeX typesetter using a command such as: * +%* tex thisfilename * +%* The resultant file thisfilename.dvi can be printed using a command such as: * +%* lpr -Pcslw -d thisfilename.dvi * +%* * +%* FunnelWeb is a preprocessor that allows programmers to weave programs and * +%* their documentation together in a single document. The FunnelWeb program * +%* analyses such documents producing both program files and typeset * +%* documentation such as this TeX file. * +%* FunnelWeb was created by Ross Williams. * +%* * +%* For more information on FunnelWeb look in the following FTP archive: * +%* Machine : sirius.itd.adelaide.edu.au [IP=129.127.40.3]. * +%* Directory: ~pub/funnelweb/ * +%* (or some other appropriately named directory). * +%* or email Ross Williams at ross@spam.adelaide.edu.au * +%* * +%******************************************************************************* + + +%===================== Start of FunnelWeb TeX Definitions ====================== + + +% Version +% ------- +% This is FunnelWeb TeX Macro Library Version 1.0. + + +% Copyright +% --------- +% This set of FunnelWeb TeX definitions was written by Ross Williams and was +% originally Copyright (C) 1992 Ross N. Williams. However, I, Ross Williams, +% hereby forego any claim to Copyright in this set of FunnelWeb TeX definitions +% and hereby authorize that the set of TeX definitions pass into the public +% domain. -- Ross N. Williams, 3:41pm 07-May-1992, Adelaide, Australia. + + +% Modification +% ------------ +% Please record all modifications to these TeX definitions here. Unless +% otherwise specified, all modified definitions fall in the public domain too. +% +% Programmers: +% RNW Ross N. Williams ross@spam.adelaide.edu.au +% +% Changes: +% 07-May-1992 RNW Prepared this work for public domain release. +% + + +% General Comments +% ---------------- +% This set of TeX definitions exists for two reasons: +% +% 1. To shorten and neaten the FunnelWeb TeX output. +% 2. To allow users to fiddle with the output format in their input files +% (by inserting redefining "\def"s) without having to resort to +% modifying the FunnelWeb code. +% +% The user is warned that these definitions may be changed from time to time +% (but probably not much). The user should not be too sneaky. In particular, +% users wishing to redefine some of these macros should do so in an explicitly +% defined section at the top of their input file. This will mean that in the +% event of problems, that section can simply be deleted or commented out to +% allow the document to at least be typeset in the default format. Users should +% limit themselves to redefining these macros in such a section and should +% refrain from using the macros throughout their documents. + + +% Environment Parameters +% ---------------------- +% \tolerance tells TeX how tolerant it should be about making bad line and +% page breaks. Here we set it to it's maximum, as +% 1) Computer programs are likely to cause lots of bad breaks. +% 2) In most cases the user would probably rather get the TeX file through +% TeX without any errors than fiddle with spacings for perfection. +\tolerance=10000 + +% I don't like indentation as it makes the page look more busy. Instead, +% paragraphs are separated by a little space (see next). +\parindent=0pt + +% In many cases, users will produce documents with long runs of paragraphs. +% In order to space out these paragraphs, it is convenient to maintain a +% prevailing non-zero \parskip (end-of-paragaph skip). The only trouble is +% that the skip becomes a problem in macro definitions which require no skip +% and so we have to turn the skip on and off. The following two macros +% simplify this process. +\def\fwparskipon{\parskip=\medskipamount} +\def\fwparskipoff{\parskip=0pt} +\fwparskipon + +% Setting raggedbottom allows TeX to leave a bit of space at the bottom of the +% page in order to better vertically align the rest of the page (e.g. skips +% won't stretch as much). It also means that headings are less likely to be +% isolated at the bottom of the page without any following text. +\raggedbottom + + +% Fonts +% ----- +% Most of the typeset output is set in 10pt roman and 10pt tt font. +% The major extra font needs spring from titles and headings. +% For portability's sake we use only the following fonts: +% cmr10 +% cmbx10 +% cmtt10 +% and some enlargements of them. These fonts are all "standard" fonts +% in Plain TeX. See The TeXbook p.350. +\font\fwfontnote=cmr7 + +\font\fwfontnorm=cmr10 +\font\fwfontnorma=cmr10 scaled \magstep1 +\font\fwfontnormb=cmr10 scaled \magstep2 + +\font\fwfontbold=cmbx10 +\font\fwfontbolda=cmbx10 scaled \magstep1 +\font\fwfontboldb=cmbx10 scaled \magstep2 +\font\fwfontboldc=cmbx10 scaled \magstep3 +\font\fwfontboldd=cmbx10 scaled \magstep4 + + +% Macros for Stylistic Details +% ---------------------------- +% This section contains all the fiddly little macros for setting the details +% of each macro definition. + +% Macro definitions are sandwiched by calls to these macros which can be used +% to sort out the spacing before and after the macro definition. +\def\fwbeginmacro{\fwparskipoff\bigskip} +\def\fwendmacro{\fwparskipon\par} + +% These macros deal with the macro name and definition line. +\def\fwmacroname#1#2{{\sl #1\/}$\lbrack$#2$\rbrack$} +\def\fwfilename#1#2{{\bf #1}$\lbrack$#2$\rbrack$} +\def\fwzero#1{{\bf Z}} +\def\fwmany#1{{\bf M}} +\def\fwequals{ $\equiv$} +\def\fwplusequals{ $+\equiv$} + +% Now for the actual body of the definition. It looks nice to have the tt +% code indented a little. Again, we use macros instead of writing direct TeX, +% so as to allow the user to fiddle this stuff to taste without having to +% modify the FunnelWeb C code. +\def\fwodef{\parindent=15pt\vskip0pt$\lbrace$\parindent=20pt} +\def\fwcdef{$\rbrace$\vskip0pt\parindent=0pt} +\def\fwoquote{`} +\def\fwcquote{'} +\def\fwoparen{$($} +\def\fwcomma{$,$} +\def\fwcparen{$)$} +\def\fwparam#1{$\diamond #1$} +\def\fwparams#1{$(\diamond #1)$} + +% These macros deal with the notes that are appended at the end of each +% macro definition. Note that even though \fwisafile,\fwusedin, and \fwseealso +% have the same definition, they are given different names so as to allow the +% user to redefine these macros to typeset each kind of information differently +% if desired. +\def\fwbeginmacronotes{\begingroup\baselineskip=9pt\smallskip} +\def\fwnote#1{{\fwfontnote #1}\par} +\def\fwisafile#1{\fwnote{#1}} +\def\fwusedin#1{\fwnote{#1}} +\def\fwseealso#1{\fwnote{#1}} +\def\fwendmacronotes{\endgroup} + + +% Macros to Typeset Program Code Verbatim +% --------------------------------------- +% This is by far the hairiest and most difficult part of the typesetting task +% because we have to turn off most of TeX's natural instincts in order to +% typeset the program text exactly as it appears in the input file. +% Two macros are defined to pull this off: \fwbtx and \fwverbatimgobble. +% Their code was inspired by the following sections of "The TeXbook": +% Appendix D: Dirty Tricks, 3.Verbatim listing, p.380-382. +% Appendix E: Example Formats, p.421. +% The \fwbtx[ (for "FunnelWeb Begin TeXt") macro does most of the hard work. +% The liberal use of "%" is because I don't understand TeX well enough to +% understand when an end of line will cause trouble, and I am playing it safe. + +% Before defining the main \fwbtx macro, we have to stash away some definitions +% in the hidden part of TeX's environment. Let's hope that these "hidden" +% definitions don't affect anything except what is desired to be affected. + +% The tt font in which we wish to set the text has two Latin lurking ligatures! +% These are ?` and !`. To disable them, we define the left quote when ACTIVE +% to be defined in such a way as to prevent ligatures. The main TeX text will +% normally not be exposed to this definition because normally the leftquote +% character is not active. The \fwbtx macro temporarily makes the left quote +% character active thus activating the deactivation of left quote ligatures. +% See The TeXbook p.381. +{\catcode`\`=\active \gdef`{\relax\lq}} + +% TeX is fairly carefree about spaces and so we have to make it more serious. +% To do so we pull the same trick as above, setting up a definition for active +% space, but only making space active during the span of the verbatim text. +% In Plain TeX the active space is defined to be simply a space, but here we +% define it to be a control space. This ensures that the space cannot +% be gobbled up by one of TeX's mysterious mechanisms when activated. +% See The TeXbook, p.381 and p.352. +{\obeyspaces\global\let =\ } + +% Here is the main \fwbtx verbatim text macro. +% Note: The order in which all these pieces of business have to be done is +% still a partial mystery to me. Don't fiddle with this stuff unless you +% think you know what you are doing. +\def\fwbtx[{% +% +% The funnies involved in getting verbatim output are safely housed inside +% this \begingroup, and the \endgroup in \fwverbatimgobble. Groups are used +% instead of curly braces because we have to be able to signal the end of +% this macro with a curly brace. +\begingroup% +% +% \pars at the end of empty lines in the verbatim text won't come out normally +% because TeX is in vertical mode and they get gobbled up. To prevent this, +% we force \par to exit vertical mode first. See The TeXbook p.381. +\def\par{\leavevmode\endgraf}% +% +% Activate the leftquote character so as to avoid ligatures (see above). +\catcode`\`=\active% +% +% The \obeylines macro simply defines end of line (^M) to be \par. This ensures +% that TeX will treat each verbatim line as a new paragraph. +\obeylines% +% +% To get verbatim output, we have to desex all the special characters. This +% is explained in detail in The TeXbook p.380. +\def\do##1{\catcode`##1=12 }\dospecials% +% +% Activate the space character so as to make TeX treat blanks seriously. +% This activation invokes an eralier definition (see above). +\obeyspaces +% +% Interparagraph skips do not help the cause. +% Note: We have to preserve the indentation though, as the code is actually +% indented in the final output. See \fwodef in an earlier section. +\parskip=0pt% +% +% We typeset the verbatim text in tt font (courier on the Macintosh) for a +% number of reasons: +% - tt font has the same horizontal spacing for each character. +% - tt font covers the ASCII character set. +% - tt font doesn't have many surprises (e.g. ligatures). +% - tt font looks much what you might see on a computer terminal screen. +\tt% +% +% Having set up an environment for verbatim, we are ready to use it. +% By invoking \fwverbatimgobble, this \fwbtx macro gobbles up text verbatim (as +% part of the parameter of \fwverbatimgobble) until it sees the termination +% string "]fwetx=" (the "=" was thrown in to add obscurity as this sequence +% must never occur in the verbatim text). +\fwverbatimgobble} + +% The \fwverbatimgobble macro exists to allow \fwbtx to bracket verbatim text. +\def\fwverbatimgobble#1]fwetx={#1\endgroup} + + +% Table of Contents +% ----------------- +% The five levels of table of contents that FunnelWeb supports are identified +% by the five letters [A..E]. These are used throughout the following macros. + +% The following macros are utilities to the TOC macros to follow. +\def\fwrule{\medskip\hrule\medskip} +\def\fwqh{\hskip1.5em\relax} +\def\fwbeforesec{\penalty-200\bigskip\medskip\par} + +% The following macros are used to typeset the table of contents. +\def\fwtocstart#1{\fwrule\leftline{\fwfontbolda Table of Contents}\fwrule} +\def\fwtoca#1#2{\leftline{{\bf #1 #2}}} +\def\fwtocb#1#2{\leftline{\fwqh #1 #2}} +\def\fwtocc#1#2{\leftline{\fwqh\fwqh #1 #2}} +\def\fwtocd#1#2{\leftline{\fwqh\fwqh\fwqh #1 #2}} +\def\fwtoce#1#2{\leftline{\fwqh\fwqh\fwqh\fwqh #1 #2}} +\def\fwtocfinish#1{\fwrule} + +% The following "library" macros define five different strengths of headings +% which can be used later in the section macros. +\def\fwliba#1#2{\vfill\eject{\fwfontboldc #1 #2}\penalty200\smallskip} +\def\fwlibb#1#2{\fwbeforesec{\fwfontboldb #1 #2}\penalty200\smallskip} +\def\fwlibc#1#2{\fwbeforesec{\fwfontnormb #1 #2}\penalty200\smallskip} +\def\fwlibd#1#2{\fwbeforesec{\bf #1 #2}\penalty200} +\def\fwlibe#1#2{\fwbeforesec{\bf #1 #2}} + +% Here are the macros that actually typeset the section headings throughout +% the document. The fwlib system has been employed so as to easily allow the +% user to redefine the strengths of headings to taste. For example, the +% user could insert in the input document a similar set of definitions to these +% but with the b..e headings set to \fwlibc. This would tone down the output. +\def\fwseca#1#2{\fwliba{#1}{#2}} +\def\fwsecb#1#2{\fwlibb{#1}{#2}} +\def\fwsecc#1#2{\fwlibc{#1}{#2}} +\def\fwsecd#1#2{\fwlibd{#1}{#2}} +\def\fwsece#1#2{\fwlibe{#1}{#2}} + + +% Support for Explicit Typesetting +% -------------------------------- +% FunnelWeb supports pragmas and other constructs that allow +% typesetter-independent typesetting commands to be given. The +% following macros support these features. + +% The in-text literal @{sloth@} and emphasise @[walrus@] features. +\def\fwlit#1{{\tt #1}} +\def\fwemp#1{{\it #1}} + +% The "@p new_page" pragma. +\def\fwnewpage{\vfill\eject} + +% The "@p vskip Nmm" pragma. +\def\fwvskip#1{\null\vskip #1mm} + +% The "@p title <font> <align> <text>" pragma. +\def\fwfontnormal#1{{\fwfontnorm {#1}}} +\def\fwfonttitle#1{{\fwfontboldd {#1}}} +\def\fwfontsmalltitle#1{{\fwfontboldb {#1}}} +\def\fwleftline#1{\leftline{#1}} +\def\fwcenterline#1{\centerline{#1}} +\def\fwrightline#1{\rightline{#1}} + + +% Support for Old FunnelWeb +% ------------------------- +% The following macros were used extensively in the first version of +% FunnelWeb and are retained so that these older input files will still +% typeset cleanly. +\def\p#1{{\tt #1}} % P for Program text. +\def\flagpage#1#2{ + \null + \vfill + \centerline{\fwfontboldd #1} + \vskip 1cm + \centerline{\fwfontboldd #2} + \vfill + \null + \vfill +} + +%====================== End of FunnelWeb TeX Definitions ======================= +WV06: Test processing of ugly strings as ordinary and protected text +with typesetter = tex. + + +\fwbeginmacro +\fwfilename{wv06.out}{1}\fwequals \fwodef \fwcdef +\fwbeginmacronotes +\fwisafile{This macro is attached to an output file.} +\fwendmacronotes +\fwendmacro + + +A paragraph in ordinary mode. + +33 con!text +34 con"text +35 con#text +36 con$text +37 con%text +38 con&text +39 con'text +40 con(text +41 con)text +42 con*text +43 con+text +44 con,text +45 con-text +46 con.text +47 con/text +48-57 con0123456789text +58 con:text +59 con;text +60 con<text +61 con=text +62 con>text +63 con?text +64 con@text +65-90 conABCDEFGHIJKLMNOPQRSTUVWXYZtext +91 con[text +92 con\text +93 con]text +94 con^text +95 con_text +96 con`text +97-122 conabcdefghijklmnopqrstuvwxyztext +123 con{text +124 con|text +125 con}text +126 con~text + +Now again, but this time inside protective braces. + +\fwlit{ +33 con!text +34 con\char`\"text +35 con\#text +36 con\$text +37 con\%text +38 con\&text +39 con'text +40 con(text +41 con)text +42 con*text +43 con+text +44 con,text +45 con-text +46 con.text +47 con/text +48-57 con0123456789text +58 con:text +59 con;text +60 con\char`\<text +61 con=text +62 con\char`\>text +63 con?text +64 con@text +65-90 conABCDEFGHIJKLMNOPQRSTUVWXYZtext +91 con[text +92 con\char`\\text +93 con]text +94 con\char`\^text +95 con\_text +96 con`text +97-122 conabcdefghijklmnopqrstuvwxyztext +123 con\char`\{text +124 con\char`\|text +125 con\char`\}text +126 con\char`\~text +} +\bye + + +%******************************************************************************* +%* END OF AUTOMATICALLY GENERATED TEX FILE * +%******************************************************************************* + |