home *** CD-ROM | disk | FTP | other *** search
Wrap
Text File | 1993-04-10 | 121.6 KB | 2,569 lines
Newsgroups: comp.sources.unix From: ross@spam.adelaide.edu.au (Ross Williams) Subject: v26i130: funnelweb - a tool for literate programming in C, Part10/20 Sender: unix-sources-moderator@vix.com Approved: paul@vix.com Submitted-By: ross@spam.adelaide.edu.au (Ross Williams) Posting-Number: Volume 26, Issue 130 Archive-Name: funnelweb/part10 #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of archive 10 (of 20)." # Contents: answers/ex13.tex answers/pr07.lis answers/sc15.lis # answers/sc16.lis answers/sc21.lis userman/u_manual.aux # Wrapped by vixie@gw.home.vix.com on Sun Apr 11 11:00:24 1993 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'answers/ex13.tex' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'answers/ex13.tex'\" else echo shar: Extracting \"'answers/ex13.tex'\" \(19047 characters\) sed "s/^X//" >'answers/ex13.tex' <<'END_OF_FILE' X X%******************************************************************************* X%* START OF AUTOMATICALLY GENERATED TEX FILE * X%******************************************************************************* X%* * X%* This TeX file was automatically generated by the FunnelWeb preprocessor. * X%* You can typeset this file to produce printed documentation by running it * X%* through the TeX typesetter using a command such as: * X%* tex thisfilename * X%* The resultant file thisfilename.dvi can be printed using a command such as: * X%* lpr -Pcslw -d thisfilename.dvi * X%* * X%* FunnelWeb is a preprocessor that allows programmers to weave programs and * X%* their documentation together in a single document. The FunnelWeb program * X%* analyses such documents producing both program files and typeset * X%* documentation such as this TeX file. * X%* FunnelWeb was created by Ross Williams. * X%* * X%* For more information on FunnelWeb look in the following FTP archive: * X%* Machine : sirius.itd.adelaide.edu.au [IP=129.127.40.3]. * X%* Directory: ~pub/funnelweb/ * X%* (or some other appropriately named directory). * X%* or email Ross Williams at ross@spam.adelaide.edu.au * X%* * X%******************************************************************************* X X X%===================== Start of FunnelWeb TeX Definitions ====================== X X X% Version X% ------- X% This is FunnelWeb TeX Macro Library Version 1.0. X X X% Copyright X% --------- X% This set of FunnelWeb TeX definitions was written by Ross Williams and was X% originally Copyright (C) 1992 Ross N. Williams. However, I, Ross Williams, X% hereby forego any claim to Copyright in this set of FunnelWeb TeX definitions X% and hereby authorize that the set of TeX definitions pass into the public X% domain. -- Ross N. Williams, 3:41pm 07-May-1992, Adelaide, Australia. X X X% Modification X% ------------ X% Please record all modifications to these TeX definitions here. Unless X% otherwise specified, all modified definitions fall in the public domain too. X% X% Programmers: X% RNW Ross N. Williams ross@spam.adelaide.edu.au X% X% Changes: X% 07-May-1992 RNW Prepared this work for public domain release. X% X X X% General Comments X% ---------------- X% This set of TeX definitions exists for two reasons: X% X% 1. To shorten and neaten the FunnelWeb TeX output. X% 2. To allow users to fiddle with the output format in their input files X% (by inserting redefining "\def"s) without having to resort to X% modifying the FunnelWeb code. X% X% The user is warned that these definitions may be changed from time to time X% (but probably not much). The user should not be too sneaky. In particular, X% users wishing to redefine some of these macros should do so in an explicitly X% defined section at the top of their input file. This will mean that in the X% event of problems, that section can simply be deleted or commented out to X% allow the document to at least be typeset in the default format. Users should X% limit themselves to redefining these macros in such a section and should X% refrain from using the macros throughout their documents. X X X% Environment Parameters X% ---------------------- X% \tolerance tells TeX how tolerant it should be about making bad line and X% page breaks. Here we set it to it's maximum, as X% 1) Computer programs are likely to cause lots of bad breaks. X% 2) In most cases the user would probably rather get the TeX file through X% TeX without any errors than fiddle with spacings for perfection. X\tolerance=10000 X X% I don't like indentation as it makes the page look more busy. Instead, X% paragraphs are separated by a little space (see next). X\parindent=0pt X X% In many cases, users will produce documents with long runs of paragraphs. X% In order to space out these paragraphs, it is convenient to maintain a X% prevailing non-zero \parskip (end-of-paragaph skip). The only trouble is X% that the skip becomes a problem in macro definitions which require no skip X% and so we have to turn the skip on and off. The following two macros X% simplify this process. X\def\fwparskipon{\parskip=\medskipamount} X\def\fwparskipoff{\parskip=0pt} X\fwparskipon X X% Setting raggedbottom allows TeX to leave a bit of space at the bottom of the X% page in order to better vertically align the rest of the page (e.g. skips X% won't stretch as much). It also means that headings are less likely to be X% isolated at the bottom of the page without any following text. X\raggedbottom X X X% Fonts X% ----- X% Most of the typeset output is set in 10pt roman and 10pt tt font. X% The major extra font needs spring from titles and headings. X% For portability's sake we use only the following fonts: X% cmr10 X% cmbx10 X% cmtt10 X% and some enlargements of them. These fonts are all "standard" fonts X% in Plain TeX. See The TeXbook p.350. X\font\fwfontnote=cmr7 X X\font\fwfontnorm=cmr10 X\font\fwfontnorma=cmr10 scaled \magstep1 X\font\fwfontnormb=cmr10 scaled \magstep2 X X\font\fwfontbold=cmbx10 X\font\fwfontbolda=cmbx10 scaled \magstep1 X\font\fwfontboldb=cmbx10 scaled \magstep2 X\font\fwfontboldc=cmbx10 scaled \magstep3 X\font\fwfontboldd=cmbx10 scaled \magstep4 X X X% Macros for Stylistic Details X% ---------------------------- X% This section contains all the fiddly little macros for setting the details X% of each macro definition. X X% Macro definitions are sandwiched by calls to these macros which can be used X% to sort out the spacing before and after the macro definition. X\def\fwbeginmacro{\fwparskipoff\bigskip} X\def\fwendmacro{\fwparskipon\par} X X% These macros deal with the macro name and definition line. X\def\fwmacroname#1#2{{\sl #1\/}$\lbrack$#2$\rbrack$} X\def\fwfilename#1#2{{\bf #1}$\lbrack$#2$\rbrack$} X\def\fwzero#1{{\bf Z}} X\def\fwmany#1{{\bf M}} X\def\fwequals{ $\equiv$} X\def\fwplusequals{ $+\equiv$} X X% Now for the actual body of the definition. It looks nice to have the tt X% code indented a little. Again, we use macros instead of writing direct TeX, X% so as to allow the user to fiddle this stuff to taste without having to X% modify the FunnelWeb C code. X\def\fwodef{\parindent=15pt\vskip0pt$\lbrace$\parindent=20pt} X\def\fwcdef{$\rbrace$\vskip0pt\parindent=0pt} X\def\fwoquote{`} X\def\fwcquote{'} X\def\fwoparen{$($} X\def\fwcomma{$,$} X\def\fwcparen{$)$} X\def\fwparam#1{$\diamond #1$} X\def\fwparams#1{$(\diamond #1)$} X X% These macros deal with the notes that are appended at the end of each X% macro definition. Note that even though \fwisafile,\fwusedin, and \fwseealso X% have the same definition, they are given different names so as to allow the X% user to redefine these macros to typeset each kind of information differently X% if desired. X\def\fwbeginmacronotes{\begingroup\baselineskip=9pt\smallskip} X\def\fwnote#1{{\fwfontnote #1}\par} X\def\fwisafile#1{\fwnote{#1}} X\def\fwusedin#1{\fwnote{#1}} X\def\fwseealso#1{\fwnote{#1}} X\def\fwendmacronotes{\endgroup} X X X% Macros to Typeset Program Code Verbatim X% --------------------------------------- X% This is by far the hairiest and most difficult part of the typesetting task X% because we have to turn off most of TeX's natural instincts in order to X% typeset the program text exactly as it appears in the input file. X% Two macros are defined to pull this off: \fwbtx and \fwverbatimgobble. X% Their code was inspired by the following sections of "The TeXbook": X% Appendix D: Dirty Tricks, 3.Verbatim listing, p.380-382. X% Appendix E: Example Formats, p.421. X% The \fwbtx[ (for "FunnelWeb Begin TeXt") macro does most of the hard work. X% The liberal use of "%" is because I don't understand TeX well enough to X% understand when an end of line will cause trouble, and I am playing it safe. X X% Before defining the main \fwbtx macro, we have to stash away some definitions X% in the hidden part of TeX's environment. Let's hope that these "hidden" X% definitions don't affect anything except what is desired to be affected. X X% The tt font in which we wish to set the text has two Latin lurking ligatures! X% These are ?` and !`. To disable them, we define the left quote when ACTIVE X% to be defined in such a way as to prevent ligatures. The main TeX text will X% normally not be exposed to this definition because normally the leftquote X% character is not active. The \fwbtx macro temporarily makes the left quote X% character active thus activating the deactivation of left quote ligatures. X% See The TeXbook p.381. X{\catcode`\`=\active \gdef`{\relax\lq}} X X% TeX is fairly carefree about spaces and so we have to make it more serious. X% To do so we pull the same trick as above, setting up a definition for active X% space, but only making space active during the span of the verbatim text. X% In Plain TeX the active space is defined to be simply a space, but here we X% define it to be a control space. This ensures that the space cannot X% be gobbled up by one of TeX's mysterious mechanisms when activated. X% See The TeXbook, p.381 and p.352. X{\obeyspaces\global\let =\ } X X% Here is the main \fwbtx verbatim text macro. X% Note: The order in which all these pieces of business have to be done is X% still a partial mystery to me. Don't fiddle with this stuff unless you X% think you know what you are doing. X\def\fwbtx[{% X% X% The funnies involved in getting verbatim output are safely housed inside X% this \begingroup, and the \endgroup in \fwverbatimgobble. Groups are used X% instead of curly braces because we have to be able to signal the end of X% this macro with a curly brace. X\begingroup% X% X% \pars at the end of empty lines in the verbatim text won't come out normally X% because TeX is in vertical mode and they get gobbled up. To prevent this, X% we force \par to exit vertical mode first. See The TeXbook p.381. X\def\par{\leavevmode\endgraf}% X% X% Activate the leftquote character so as to avoid ligatures (see above). X\catcode`\`=\active% X% X% The \obeylines macro simply defines end of line (^M) to be \par. This ensures X% that TeX will treat each verbatim line as a new paragraph. X\obeylines% X% X% To get verbatim output, we have to desex all the special characters. This X% is explained in detail in The TeXbook p.380. X\def\do##1{\catcode`##1=12 }\dospecials% X% X% Activate the space character so as to make TeX treat blanks seriously. X% This activation invokes an eralier definition (see above). X\obeyspaces X% X% Interparagraph skips do not help the cause. X% Note: We have to preserve the indentation though, as the code is actually X% indented in the final output. See \fwodef in an earlier section. X\parskip=0pt% X% X% We typeset the verbatim text in tt font (courier on the Macintosh) for a X% number of reasons: X% - tt font has the same horizontal spacing for each character. X% - tt font covers the ASCII character set. X% - tt font doesn't have many surprises (e.g. ligatures). X% - tt font looks much what you might see on a computer terminal screen. X\tt% X% X% Having set up an environment for verbatim, we are ready to use it. X% By invoking \fwverbatimgobble, this \fwbtx macro gobbles up text verbatim (as X% part of the parameter of \fwverbatimgobble) until it sees the termination X% string "]fwetx=" (the "=" was thrown in to add obscurity as this sequence X% must never occur in the verbatim text). X\fwverbatimgobble} X X% The \fwverbatimgobble macro exists to allow \fwbtx to bracket verbatim text. X\def\fwverbatimgobble#1]fwetx={#1\endgroup} X X X% Table of Contents X% ----------------- X% The five levels of table of contents that FunnelWeb supports are identified X% by the five letters [A..E]. These are used throughout the following macros. X X% The following macros are utilities to the TOC macros to follow. X\def\fwrule{\medskip\hrule\medskip} X\def\fwqh{\hskip1.5em\relax} X\def\fwbeforesec{\penalty-200\bigskip\medskip\par} X X% The following macros are used to typeset the table of contents. X\def\fwtocstart#1{\fwrule\leftline{\fwfontbolda Table of Contents}\fwrule} X\def\fwtoca#1#2{\leftline{{\bf #1 #2}}} X\def\fwtocb#1#2{\leftline{\fwqh #1 #2}} X\def\fwtocc#1#2{\leftline{\fwqh\fwqh #1 #2}} X\def\fwtocd#1#2{\leftline{\fwqh\fwqh\fwqh #1 #2}} X\def\fwtoce#1#2{\leftline{\fwqh\fwqh\fwqh\fwqh #1 #2}} X\def\fwtocfinish#1{\fwrule} X X% The following "library" macros define five different strengths of headings X% which can be used later in the section macros. X\def\fwliba#1#2{\vfill\eject{\fwfontboldc #1 #2}\penalty200\smallskip} X\def\fwlibb#1#2{\fwbeforesec{\fwfontboldb #1 #2}\penalty200\smallskip} X\def\fwlibc#1#2{\fwbeforesec{\fwfontnormb #1 #2}\penalty200\smallskip} X\def\fwlibd#1#2{\fwbeforesec{\bf #1 #2}\penalty200} X\def\fwlibe#1#2{\fwbeforesec{\bf #1 #2}} X X% Here are the macros that actually typeset the section headings throughout X% the document. The fwlib system has been employed so as to easily allow the X% user to redefine the strengths of headings to taste. For example, the X% user could insert in the input document a similar set of definitions to these X% but with the b..e headings set to \fwlibc. This would tone down the output. X\def\fwseca#1#2{\fwliba{#1}{#2}} X\def\fwsecb#1#2{\fwlibb{#1}{#2}} X\def\fwsecc#1#2{\fwlibc{#1}{#2}} X\def\fwsecd#1#2{\fwlibd{#1}{#2}} X\def\fwsece#1#2{\fwlibe{#1}{#2}} X X X% Support for Explicit Typesetting X% -------------------------------- X% FunnelWeb supports pragmas and other constructs that allow X% typesetter-independent typesetting commands to be given. The X% following macros support these features. X X% The in-text literal @{sloth@} and emphasise @[walrus@] features. X\def\fwlit#1{{\tt #1}} X\def\fwemp#1{{\it #1}} X X% The "@p new_page" pragma. X\def\fwnewpage{\vfill\eject} X X% The "@p vskip Nmm" pragma. X\def\fwvskip#1{\null\vskip #1mm} X X% The "@p title <font> <align> <text>" pragma. X\def\fwfontnormal#1{{\fwfontnorm {#1}}} X\def\fwfonttitle#1{{\fwfontboldd {#1}}} X\def\fwfontsmalltitle#1{{\fwfontboldb {#1}}} X\def\fwleftline#1{\leftline{#1}} X\def\fwcenterline#1{\centerline{#1}} X\def\fwrightline#1{\rightline{#1}} X X X% Support for Old FunnelWeb X% ------------------------- X% The following macros were used extensively in the first version of X% FunnelWeb and are retained so that these older input files will still X% typeset cleanly. X\def\p#1{{\tt #1}} % P for Program text. X\def\flagpage#1#2{ X \null X \vfill X \centerline{\fwfontboldd #1} X \vskip 1cm X \centerline{\fwfontboldd #2} X \vfill X \null X \vfill X} X X%====================== End of FunnelWeb TeX Definitions ======================= XEX13: This example is used to generate typeset documentation which is X discussed in the tutorial in the FunnelWeb user's manual. X X X\fwseca{1}{Table of Contents} X X X\fwtocstart{} X\fwtoca{1}{Table of Contents} X\fwtoca{2}{Macros for Moral Support} X\fwtoca{3}{An Extremely Imperative Stack Abstraction} X\fwtocb{3.1}{Define the Stack} X\fwtocb{3.2}{Push the Stack} X\fwtocb{3.3}{Pop the Stack} X\fwtocb{3.4}{Rough the Stack Up a Bit} X\fwtocfinish{} X X X\fwseca{2}{Macros for Moral Support} X The following macro contain comments that provide moral support in the output code. X X\fwbeginmacro X\fwmacroname{Programmer's Cheer}{1}\fwmany{}\fwequals \fwodef \fwbtx[ X-- Shift to the left! X-- Shift to the right! X-- Pop up, push down! X-- Byte! Byte! Byte! X-- (From "The New Hacker's Dictionary"). X]fwetx=% X\fwcdef X\fwbeginmacronotes X\fwusedin{This macro is invoked in definitions 6 and 8.} X\fwendmacronotes X\fwendmacro X X The next macro is similar but is distributed throughout the program. X\fwbeginmacro X\fwmacroname{Hacker's Cheer}{2}\fwplusequals \fwodef \fwbtx[ X-- Pointer to the left X]fwetx=% X\fwcdef X\fwbeginmacronotes X\fwseealso{This macro is defined in definitions 2, 3, 5, 7, and 9.} X\fwusedin{This macro is invoked in definition 10.} X\fwendmacronotes X\fwendmacro X X X\fwseca{3}{An Extremely Imperative Stack Abstraction} X X\fwsecb{3.1}{Define the Stack} X\fwbeginmacro X\fwmacroname{Hacker's Cheer}{3}\fwplusequals \fwodef \fwbtx[-- Pointer to the right X]fwetx=% X\fwcdef X\fwbeginmacronotes X\fwseealso{This macro is defined in definitions 2, 3, 5, 7, and 9.} X\fwusedin{This macro is invoked in definition 10.} X\fwendmacronotes X\fwendmacro X X\fwbeginmacro X\fwmacroname{Stack Type}{4}\fwzero{}\fwequals \fwodef \fwbtx[type stack = record ... end;]fwetx=% X\fwcdef X\fwbeginmacronotes X\fwusedin{This macro is NEVER invoked.} X\fwendmacronotes X\fwendmacro X X X\fwsecb{3.2}{Push the Stack} X\fwbeginmacro X\fwmacroname{Hacker's Cheer}{5}\fwplusequals \fwodef \fwbtx[-- Hack that code X]fwetx=% X\fwcdef X\fwbeginmacronotes X\fwseealso{This macro is defined in definitions 2, 3, 5, 7, and 9.} X\fwusedin{This macro is invoked in definition 10.} X\fwendmacronotes X\fwendmacro X X\fwbeginmacro X\fwmacroname{Push Procedure}{6}\fwzero{}\fwequals \fwodef \fwbtx[procedure push(var b:stack; v:value); ]fwetx=% X\fwmacroname{Programmer's Cheer}{1}\fwbtx[ {...}]fwetx=% X\fwcdef X\fwbeginmacronotes X\fwusedin{This macro is NEVER invoked.} X\fwendmacronotes X\fwendmacro X X X\fwsecb{3.3}{Pop the Stack} X\fwbeginmacro X\fwmacroname{Hacker's Cheer}{7}\fwplusequals \fwodef \fwbtx[-- Tight! Tight! Tight! X]fwetx=% X\fwcdef X\fwbeginmacronotes X\fwseealso{This macro is defined in definitions 2, 3, 5, 7, and 9.} X\fwusedin{This macro is invoked in definition 10.} X\fwendmacronotes X\fwendmacro X X\fwbeginmacro X\fwmacroname{Pop Procedure}{8}\fwzero{}\fwequals \fwodef \fwbtx[procedure pop(var b:stack); ]fwetx=% X\fwmacroname{Programmer's Cheer}{1}\fwbtx[ {...}]fwetx=% X\fwcdef X\fwbeginmacronotes X\fwusedin{This macro is NEVER invoked.} X\fwendmacronotes X\fwendmacro X X X\fwsecb{3.4}{Rough the Stack Up a Bit} X\fwbeginmacro X\fwmacroname{Hacker's Cheer}{9}\fwplusequals \fwodef \fwbtx[-- (RNW, 04-Jan-1991). X]fwetx=% X\fwcdef X\fwbeginmacronotes X\fwseealso{This macro is defined in definitions 2, 3, 5, 7, and 9.} X\fwusedin{This macro is invoked in definition 10.} X\fwendmacronotes X\fwendmacro X X\fwbeginmacro X\fwmacroname{Rough Procedure}{10}\fwzero{}\fwequals \fwodef \fwbtx[procedure rough(var b:stack); ]fwetx=% X\fwmacroname{Hacker's Cheer}{2}\fwbtx[ {...}]fwetx=% X\fwcdef X\fwbeginmacronotes X\fwusedin{This macro is NEVER invoked.} X\fwendmacronotes X\fwendmacro X X X\fwbeginmacro X\fwfilename{dummy.txt}{11}\fwequals \fwodef \fwbtx[dummy X]fwetx=% X\fwcdef X\fwbeginmacronotes X\fwisafile{This macro is attached to an output file.} X\fwendmacronotes X\fwendmacro X X\bye X X X%******************************************************************************* X%* END OF AUTOMATICALLY GENERATED TEX FILE * X%******************************************************************************* X END_OF_FILE if test 19047 -ne `wc -c <'answers/ex13.tex'`; then echo shar: \"'answers/ex13.tex'\" unpacked with wrong size! fi # end of 'answers/ex13.tex' fi if test -f 'answers/pr07.lis' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'answers/pr07.lis'\" else echo shar: Extracting \"'answers/pr07.lis'\" \(20255 characters\) sed "s/^X//" >'answers/pr07.lis' <<'END_OF_FILE' XFUNNELWEB LISTING FILE X====================== X Dump of mapped file "<<Suppressed>>". X MEMORY DUMP OF MAPPED FILE X========================== X X+-------------------------------------------------+------------------+ X| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | X+-------------------------------------------------+------------------+ X| 50 52 30 37 3A 20 54 65 73 74 20 74 68 65 20 70 | PR07: Test the p | X| 61 72 73 69 6E 67 20 6F 66 20 3D 3D 20 61 6E 64 | arsing of == and | X| 20 2B 3D 20 69 6E 20 6D 61 63 72 6F 20 64 65 66 | += in macro def | X| 69 6E 69 74 69 6F 6E 73 2E 0A 0A 54 72 69 70 20 | initions...Trip | X| 74 68 65 20 70 61 72 73 65 72 20 73 6F 20 77 65 | the parser so we | X| 20 64 6F 6E 27 74 20 67 65 74 20 61 6E 79 20 66 | don't get any f | X| 75 72 74 68 65 72 2E 0A 40 3E 0A 0A 31 2E 20 54 | urther..@>..1. T | X| 65 73 74 20 77 69 74 68 20 6E 6F 20 65 71 75 61 | est with no equa | X| 6C 73 2E 0A 40 24 40 3C 53 6C 6F 74 68 40 3E 40 | ls..@$@<Sloth@>@ | X| 7B 4E 6F 20 65 71 75 61 6C 73 20 69 6E 20 74 68 | {No equals in th | X| 69 73 20 6D 61 63 72 6F 20 64 65 66 69 6E 69 74 | is macro definit | X| 69 6F 6E 2E 40 7D 0A 0A 32 2E 20 54 65 73 74 20 | ion.@}..2. Test | X| 77 69 74 68 20 3D 3D 2E 0A 40 24 40 3C 53 6C 6F | with ==..@$@<Slo | X| 74 68 20 77 69 74 68 20 65 71 75 61 6C 73 40 3E | th with equals@> | X| 3D 3D 40 7B 4E 6F 20 65 71 75 61 6C 73 20 69 6E | ==@{No equals in | X| 20 74 68 69 73 20 6D 61 63 72 6F 20 64 65 66 69 | this macro defi | X| 6E 69 74 69 6F 6E 2E 40 7D 0A 0A 33 2E 20 54 65 | nition.@}..3. Te | X| 73 74 20 77 69 74 68 20 2B 3D 2E 0A 40 24 40 3C | st with +=..@$@< | X| 53 6C 6F 74 68 20 77 69 74 68 20 70 6C 75 73 40 | Sloth with plus@ | X| 3E 2B 3D 40 7B 4E 6F 20 65 71 75 61 6C 73 20 69 | >+=@{No equals i | X| 6E 20 74 68 69 73 20 6D 61 63 72 6F 20 64 65 66 | n this macro def | X| 69 6E 69 74 69 6F 6E 2E 40 7D 0A 0A 34 2E 20 54 | inition.@}..4. T | X| 65 73 74 20 77 69 74 68 20 73 79 6E 74 61 78 20 | est with syntax | X| 65 72 72 6F 72 73 2E 0A 0A 40 24 40 3C 45 72 72 | errors...@$@<Err | X| 6F 72 31 40 3E 2B 2B 40 7B 4E 6F 20 65 71 75 61 | or1@>++@{No equa | X| 6C 73 20 69 6E 20 74 68 69 73 20 6D 61 63 72 6F | ls in this macro | X| 20 64 65 66 69 6E 69 74 69 6F 6E 2E 40 7D 0A 40 | definition.@}.@ | X| 41 40 3C 45 72 72 6F 72 20 72 65 63 6F 76 65 72 | A@<Error recover | X| 79 20 70 6F 69 6E 74 40 3E 0A 0A 40 24 40 3C 45 | y point@>..@$@<E | X| 72 72 6F 72 32 40 3E 40 2B 3D 40 7B 4E 6F 20 65 | rror2@>@+=@{No e | X| 71 75 61 6C 73 20 69 6E 20 74 68 69 73 20 6D 61 | quals in this ma | X| 63 72 6F 20 64 65 66 69 6E 69 74 69 6F 6E 2E 40 | cro definition.@ | X| 7D 0A 40 41 40 3C 45 72 72 6F 72 20 72 65 63 6F | }.@A@<Error reco | X| 76 65 72 79 20 70 6F 69 6E 74 40 3E 0A 0A 40 24 | very point@>..@$ | X| 40 3C 45 72 72 6F 72 33 40 3E 2B 3D 3D 2B 40 7B | @<Error3@>+==+@{ | X| 4E 6F 20 65 71 75 61 6C 73 20 69 6E 20 74 68 69 | No equals in thi | X| 73 20 6D 61 63 72 6F 20 64 65 66 69 6E 69 74 69 | s macro definiti | X| 6F 6E 2E 40 7D 0A 40 41 40 3C 45 72 72 6F 72 20 | on.@}.@A@<Error | X| 72 65 63 6F 76 65 72 79 20 70 6F 69 6E 74 40 3E | recovery point@> | X| 0A 0A 40 24 40 3C 45 72 72 6F 72 34 40 3E 3D 2B | ..@$@<Error4@>=+ | X| 40 7B 4E 6F 20 65 71 75 61 6C 73 20 69 6E 20 74 | @{No equals in t | X| 68 69 73 20 6D 61 63 72 6F 20 64 65 66 69 6E 69 | his macro defini | X| 74 69 6F 6E 2E 40 7D 0A 40 41 40 3C 45 72 72 6F | tion.@}.@A@<Erro | X| 72 20 72 65 63 6F 76 65 72 79 20 70 6F 69 6E 74 | r recovery point | X| 40 3E 0A 0A 40 24 40 3C 45 72 72 6F 72 34 40 3E | @>..@$@<Error4@> | X| 40 3D 40 3D 40 7B 4E 6F 20 65 71 75 61 6C 73 20 | @=@=@{No equals | X| 69 6E 20 74 68 69 73 20 6D 61 63 72 6F 20 64 65 | in this macro de | X| 66 69 6E 69 74 69 6F 6E 2E 40 7D 0A 40 41 40 3C | finition.@}.@A@< | X| 45 72 72 6F 72 20 72 65 63 6F 76 65 72 79 20 70 | Error recovery p | X| 6F 69 6E 74 40 3E 0A 0A 40 24 40 3C 45 72 72 6F | oint@>..@$@<Erro | X| 72 34 40 3E 40 2B 40 3D 40 7B 4E 6F 20 65 71 75 | r4@>@+@=@{No equ | X| 61 6C 73 20 69 6E 20 74 68 69 73 20 6D 61 63 72 | als in this macr | X| 6F 20 64 65 66 69 6E 69 74 69 6F 6E 2E 40 7D 0A | o definition.@}. | X| 40 41 40 3C 45 72 72 6F 72 20 72 65 63 6F 76 65 | @A@<Error recove | X| 72 79 20 70 6F 69 6E 74 40 3E 0A 0A 0A 0A | ry point@>.... | X+-------------------------------------------------+------------------+ X X X=========================== Start of LINE LIST DUMP ============================ X Globl Local| Text X-----------+-------------------------------------------------------------------- X00001 00001| PR07: Test the parsing of == and += in macro definitions.<010> X00002 00002| <010> X00003 00003| Trip the parser so we don't get any further.<010> X00004 00004| @><010> X00005 00005| <010> X00006 00006| 1. Test with no equals.<010> X00007 00007| @$@<Sloth@>@{No equals in this macro definition.@}<010> X00008 00008| <010> X00009 00009| 2. Test with ==.<010> X00010 00010| @$@<Sloth with equals@>==@{No equals in this macro definition.@}<010> X00011 00011| <010> X00012 00012| 3. Test with +=.<010> X00013 00013| @$@<Sloth with plus@>+=@{No equals in this macro definition.@}<010> X00014 00014| <010> X00015 00015| 4. Test with syntax errors.<010> X00016 00016| <010> X00017 00017| @$@<Error1@>++@{No equals in this macro definition.@}<010> X00018 00018| @A@<Error recovery point@><010> X00019 00019| <010> X00020 00020| @$@<Error2@>@+=@{No equals in this macro definition.@}<010> X00021 00021| @A@<Error recovery point@><010> X00022 00022| <010> X00023 00023| @$@<Error3@>+==+@{No equals in this macro definition.@}<010> X00024 00024| @A@<Error recovery point@><010> X00025 00025| <010> X00026 00026| @$@<Error4@>=+@{No equals in this macro definition.@}<010> X00027 00027| @A@<Error recovery point@><010> X00028 00028| <010> X00029 00029| @$@<Error4@>@=@=@{No equals in this macro definition.@}<010> X00030 00030| @A@<Error recovery point@><010> X00031 00031| <010> X00032 00032| @$@<Error4@>@+@=@{No equals in this macro definition.@}<010> X00033 00033| @A@<Error recovery point@><010> X00034 00034| <010> X00035 00035| <010> X00036 00036| <010> X00037 00037| <End-Of-File><010> X-----------+-------------------------------------------------------------------- Globl Local| Text X X============================ End of LINE LIST DUMP ============================= X X X=========================== Start of TOKEN LIST DUMP =========================== X Summary: There are 114 tokens in the token list. X Line[Column]: Token Description X------------------------------- X X0001[01]: Text. Text scrap[Grey]="PR07: Test the parsing of == and += in macro definitions.<010> X<010> Trip the parser so we don't get any further.<010> X" X0004[01]: @> Close name. X0004[03]: Text. Text scrap[Grey]="<010> X<010> X1. Test with no equals.<010> X" X0007[01]: @$ Macro defn. X0007[03]: @< Open name. X0007[05]: Text. Text scrap[Grey]="Sloth" X0007[10]: @> Close name. X0007[12]: @{ Open defn. X0007[14]: Text. Text scrap[Grey]="No equals in this macro definition." X0007[49]: @} Close defn. X0007[51]: Text. Text scrap[Grey]="<010> X<010> X2. Test with ==.<010> X" X0010[01]: @$ Macro defn. X0010[03]: @< Open name. X0010[05]: Text. Text scrap[Grey]="Sloth with equals" X0010[22]: @> Close name. X0010[24]: Text. Text scrap[Grey]="==" X0010[26]: @{ Open defn. X0010[28]: Text. Text scrap[Grey]="No equals in this macro definition." X0010[63]: @} Close defn. X0010[65]: Text. Text scrap[Grey]="<010> X<010> X3. Test with +=.<010> X" X0013[01]: @$ Macro defn. X0013[03]: @< Open name. X0013[05]: Text. Text scrap[Grey]="Sloth with plus" X0013[20]: @> Close name. X0013[22]: Text. Text scrap[Grey]="+=" X0013[24]: @{ Open defn. X0013[26]: Text. Text scrap[Grey]="No equals in this macro definition." X0013[61]: @} Close defn. X0013[63]: Text. Text scrap[Grey]="<010> X<010> X4. Test with syntax errors.<010> X<010> X" X0017[01]: @$ Macro defn. X0017[03]: @< Open name. X0017[05]: Text. Text scrap[Grey]="Error1" X0017[11]: @> Close name. X0017[13]: Text. Text scrap[Grey]="++" X0017[15]: @{ Open defn. X0017[17]: Text. Text scrap[Grey]="No equals in this macro definition." X0017[52]: @} Close defn. X0017[54]: Text. Text scrap[White]="<010> X" X0018[01]: @A New section (Level 1). X0018[03]: @< Open name. X0018[05]: Text. Text scrap[Grey]="Error recovery point" X0018[25]: @> Close name. X0018[27]: Text. Text scrap[White]="<010> X<010> X" X0020[01]: @$ Macro defn. X0020[03]: @< Open name. X0020[05]: Text. Text scrap[Grey]="Error2" X0020[11]: @> Close name. X0020[13]: Text. Text scrap[White]="<010> X" X0020[15]: Text. Text scrap[Grey]="=" X0020[16]: @{ Open defn. X0020[18]: Text. Text scrap[Grey]="No equals in this macro definition." X0020[53]: @} Close defn. X0020[55]: Text. Text scrap[White]="<010> X" X0021[01]: @A New section (Level 1). X0021[03]: @< Open name. X0021[05]: Text. Text scrap[Grey]="Error recovery point" X0021[25]: @> Close name. X0021[27]: Text. Text scrap[White]="<010> X<010> X" X0023[01]: @$ Macro defn. X0023[03]: @< Open name. X0023[05]: Text. Text scrap[Grey]="Error3" X0023[11]: @> Close name. X0023[13]: Text. Text scrap[Grey]="+==+" X0023[17]: @{ Open defn. X0023[19]: Text. Text scrap[Grey]="No equals in this macro definition." X0023[54]: @} Close defn. X0023[56]: Text. Text scrap[White]="<010> X" X0024[01]: @A New section (Level 1). X0024[03]: @< Open name. X0024[05]: Text. Text scrap[Grey]="Error recovery point" X0024[25]: @> Close name. X0024[27]: Text. Text scrap[White]="<010> X<010> X" X0026[01]: @$ Macro defn. X0026[03]: @< Open name. X0026[05]: Text. Text scrap[Grey]="Error4" X0026[11]: @> Close name. X0026[13]: Text. Text scrap[Grey]="=+" X0026[15]: @{ Open defn. X0026[17]: Text. Text scrap[Grey]="No equals in this macro definition." X0026[52]: @} Close defn. X0026[54]: Text. Text scrap[White]="<010> X" X0027[01]: @A New section (Level 1). X0027[03]: @< Open name. X0027[05]: Text. Text scrap[Grey]="Error recovery point" X0027[25]: @> Close name. X0027[27]: Text. Text scrap[White]="<010> X<010> X" X0029[01]: @$ Macro defn. X0029[03]: @< Open name. X0029[05]: Text. Text scrap[Grey]="Error4" X0029[11]: @> Close name. X0029[16]: Text. Text scrap[Grey]="=" X0029[17]: @{ Open defn. X0029[19]: Text. Text scrap[Grey]="No equals in this macro definition." X0029[54]: @} Close defn. X0029[56]: Text. Text scrap[White]="<010> X" X0030[01]: @A New section (Level 1). X0030[03]: @< Open name. X0030[05]: Text. Text scrap[Grey]="Error recovery point" X0030[25]: @> Close name. X0030[27]: Text. Text scrap[White]="<010> X<010> X" X0032[01]: @$ Macro defn. X0032[03]: @< Open name. X0032[05]: Text. Text scrap[Grey]="Error4" X0032[11]: @> Close name. X0032[13]: Text. Text scrap[White]="<010> X" X0032[18]: Text. Text scrap[Grey]="{No equals in this macro definition." X0032[54]: @} Close defn. X0032[56]: Text. Text scrap[White]="<010> X" X0033[01]: @A New section (Level 1). X0033[03]: @< Open name. X0033[05]: Text. Text scrap[Grey]="Error recovery point" X0033[25]: @> Close name. X0033[27]: Text. Text scrap[White]="<010> X<010> X<010> X<010> X" X0037[01]: End Of File. X============================ End of TOKEN LIST DUMP ============================ X X X========================== Start of MACRO TABLE DUMP =========================== X X X------------------- Start of Macro Dump -------------------- Macro Name : "Error1" Defined? : No. X-------------------- End of Macro Dump --------------------- X X X X------------------- Start of Macro Dump -------------------- Macro Name : "Error2" Defined? : No. X-------------------- End of Macro Dump --------------------- X X X X------------------- Start of Macro Dump -------------------- Macro Name : "Error3" Defined? : No. X-------------------- End of Macro Dump --------------------- X X X X------------------- Start of Macro Dump -------------------- Macro Name : "Error4" Defined? : No. X-------------------- End of Macro Dump --------------------- X X X X------------------- Start of Macro Dump -------------------- Macro Name : "Sloth" Defined? : Yes. Parameters : 0 Additive? : No. Zero Calls? : No. Many Calls? : No. Output File?: No. Call list : Macro body : X X--Start of List of Body Parts-- This macro has 1 body part. Body part 1: Seqnum=1, Pos(L,C)=(7,3), Expression follows: X X---- Start of Expression ---- X X----- Start Text Element ----- Text scrap[Grey]="No equals in this macro definition." X------ End Text Element ------ X X----- End of Expression ----- X X---End of List of Body Parts--- X X-------------------- End of Macro Dump --------------------- X X X X------------------- Start of Macro Dump -------------------- Macro Name : "Sloth with equals" Defined? : Yes. Parameters : 0 Additive? : No. Zero Calls? : No. Many Calls? : No. Output File?: No. Call list : Macro body : X X--Start of List of Body Parts-- This macro has 1 body part. Body part 1: Seqnum=2, Pos(L,C)=(10,3), Expression follows: X X---- Start of Expression ---- X X----- Start Text Element ----- Text scrap[Grey]="No equals in this macro definition." X------ End Text Element ------ X X----- End of Expression ----- X X---End of List of Body Parts--- X X-------------------- End of Macro Dump --------------------- X X X X------------------- Start of Macro Dump -------------------- Macro Name : "Sloth with plus" Defined? : Yes. Parameters : 0 Additive? : Yes. Zero Calls? : No. Many Calls? : No. Output File?: No. Call list : Macro body : X X--Start of List of Body Parts-- This macro has 1 body part. Body part 1: Seqnum=3, Pos(L,C)=(13,3), Expression follows: X X---- Start of Expression ---- X X----- Start Text Element ----- Text scrap[Grey]="No equals in this macro definition." X------ End Text Element ------ X X----- End of Expression ----- X X---End of List of Body Parts--- X X-------------------- End of Macro Dump --------------------- X X X X=========================== End of MACRO TABLE DUMP ============================ X X X========================= Start of DOCUMENT LIST DUMP ========================== X X TEXT COMPONENT: Pos(L,C)=(1,1). X X-- Start of Text Scrap List -- Text scrap[Grey]="PR07: Test the parsing of == and += in macro definitions.<010> X<010> Trip the parser so we don't get any further.<010> X" X--- End of Text Scrap List --- X X TEXT COMPONENT: Pos(L,C)=(4,3). X X-- Start of Text Scrap List -- Text scrap[Grey]="<010> X<010> X1. Test with no equals.<010> X" X--- End of Text Scrap List --- X X MACRO DEFINITION COMPONENT: Pos(L,C)=(7,1). Part 1 of macro @<Sloth@>. X TEXT COMPONENT: Pos(L,C)=(7,51). X X-- Start of Text Scrap List -- Text scrap[Grey]="<010> X<010> X2. Test with ==.<010> X" X--- End of Text Scrap List --- X X MACRO DEFINITION COMPONENT: Pos(L,C)=(10,1). Part 1 of macro @<Sloth with equals@>. X TEXT COMPONENT: Pos(L,C)=(10,65). X X-- Start of Text Scrap List -- Text scrap[Grey]="<010> X<010> X3. Test with +=.<010> X" X--- End of Text Scrap List --- X X MACRO DEFINITION COMPONENT: Pos(L,C)=(13,1). Part 1 of macro @<Sloth with plus@>. X TEXT COMPONENT: Pos(L,C)=(13,63). X X-- Start of Text Scrap List -- Text scrap[Grey]="<010> X<010> X4. Test with syntax errors.<010> X<010> X" X--- End of Text Scrap List --- X X TYPESETTER DIRECTIVE COMPONENT: X Section "1", Section name="Error recovery point". X TEXT COMPONENT: Pos(L,C)=(18,27). X X-- Start of Text Scrap List -- Text scrap[White]="<010> X<010> X" X--- End of Text Scrap List --- X X TYPESETTER DIRECTIVE COMPONENT: X Section "2", Section name="Error recovery point". X TEXT COMPONENT: Pos(L,C)=(21,27). X X-- Start of Text Scrap List -- Text scrap[White]="<010> X<010> X" X--- End of Text Scrap List --- X X TYPESETTER DIRECTIVE COMPONENT: X Section "3", Section name="Error recovery point". X TEXT COMPONENT: Pos(L,C)=(24,27). X X-- Start of Text Scrap List -- Text scrap[White]="<010> X<010> X" X--- End of Text Scrap List --- X X TYPESETTER DIRECTIVE COMPONENT: X Section "4", Section name="Error recovery point". X TEXT COMPONENT: Pos(L,C)=(27,27). X X-- Start of Text Scrap List -- Text scrap[White]="<010> X<010> X" X--- End of Text Scrap List --- X X TYPESETTER DIRECTIVE COMPONENT: X Section "5", Section name="Error recovery point". X TEXT COMPONENT: Pos(L,C)=(30,27). X X-- Start of Text Scrap List -- Text scrap[White]="<010> X<010> X" X--- End of Text Scrap List --- X X TYPESETTER DIRECTIVE COMPONENT: X Section "6", Section name="Error recovery point". X TEXT COMPONENT: Pos(L,C)=(33,27). X X-- Start of Text Scrap List -- Text scrap[White]="<010> X<010> X<010> X<010> X" X--- End of Text Scrap List --- X X X========================== End of DOCUMENT LIST DUMP =========================== X X Global Local| Input File X------------+------------------------------------------------------------------- X 1 1| PR07: Test the parsing of == and += in macro definitions. X 2 2| X 3 3| Trip the parser so we don't get any further. X 4 4| @> X Error|.^The parser was at the top level and was expecting X |.^one of: {Directive, Text, Macro definition, EOF}. X 5 5| X 6 6| 1. Test with no equals. X 7 7| @$@<Sloth@>@{No equals in this macro definition.@} X 8 8| X 9 9| 2. Test with ==. X 10 10| @$@<Sloth with equals@>==@{No equals in this macro definition.@} X 11 11| X 12 12| 3. Test with +=. X 13 13| @$@<Sloth with plus@>+=@{No equals in this macro definition.@} X 14 14| X 15 15| 4. Test with syntax errors. X 16 16| X 17 17| @$@<Error1@>++@{No equals in this macro definition.@} X Error|.............^Expecting "==@{" or "+=@{" or just "@{". X |.............^(or @Z or @M if they have not already appeared). X |.............^Note: FunnelWeb is intolerant of spaces at this point. X |...............^Skipping after error to the next major construct... X 18 18| @A@<Error recovery point@> X |.^...skipped to here after the error. X 19 19| X 20 20| @$@<Error2@>@+=@{No equals in this macro definition.@} X Error|.............^Expecting "==@{" or "+=@{" or just "@{". X |.............^(or @Z or @M if they have not already appeared). X |.............^Note: FunnelWeb is intolerant of spaces at this point. X |................^Skipping after error to the next major construct... X 21 21| @A@<Error recovery point@> X |.^...skipped to here after the error. X 22 22| X 23 23| @$@<Error3@>+==+@{No equals in this macro definition.@} X Error|.............^Expecting "==@{" or "+=@{" or just "@{". X |.............^(or @Z or @M if they have not already appeared). X |.............^Note: FunnelWeb is intolerant of spaces at this point. X |.................^Skipping after error to the next major construct... X 24 24| @A@<Error recovery point@> X |.^...skipped to here after the error. X 25 25| X 26 26| @$@<Error4@>=+@{No equals in this macro definition.@} X Error|.............^Expecting "==@{" or "+=@{" or just "@{". X |.............^(or @Z or @M if they have not already appeared). X |.............^Note: FunnelWeb is intolerant of spaces at this point. X |...............^Skipping after error to the next major construct... X 27 27| @A@<Error recovery point@> X |.^...skipped to here after the error. X 28 28| X 29 29| @$@<Error4@>@=@=@{No equals in this macro definition.@} X Error|................^Expecting "==@{" or "+=@{" or just "@{". X |................^(or @Z or @M if they have not already appeared). X |................^Note: FunnelWeb is intolerant of spaces at this point. X |.................^Skipping after error to the next major construct... X 30 30| @A@<Error recovery point@> X |.^...skipped to here after the error. X 31 31| X 32 32| @$@<Error4@>@+@=@{No equals in this macro definition.@} X Error|.............^Expecting "==@{" or "+=@{" or just "@{". X |.............^(or @Z or @M if they have not already appeared). X |.............^Note: FunnelWeb is intolerant of spaces at this point. X |......................................................^Skipping after error to the next major construct... X 33 33| @A@<Error recovery point@> X |.^...skipped to here after the error. X 34 34| X 35 35| X 36 36| X | <End-Of-File> X------------+------------------------------------------------------------------- X There were 7 Errors. END_OF_FILE if test 20255 -ne `wc -c <'answers/pr07.lis'`; then echo shar: \"'answers/pr07.lis'\" unpacked with wrong size! fi # end of 'answers/pr07.lis' fi if test -f 'answers/sc15.lis' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'answers/sc15.lis'\" else echo shar: Extracting \"'answers/sc15.lis'\" \(19803 characters\) sed "s/^X//" >'answers/sc15.lis' <<'END_OF_FILE' XFUNNELWEB LISTING FILE X====================== X Dump of mapped file "<<Suppressed>>". X MEMORY DUMP OF MAPPED FILE X========================== X X+-------------------------------------------------+------------------+ X| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | X+-------------------------------------------------+------------------+ X| 53 43 31 35 3A 20 54 65 73 74 20 74 68 61 74 20 | SC15: Test that | X| 63 65 72 74 61 69 6E 20 61 74 74 72 69 62 75 74 | certain attribut | X| 65 73 20 61 72 65 20 73 61 76 65 64 20 61 63 72 | es are saved acr | X| 6F 73 73 20 69 6E 63 6C 75 73 69 6F 6E 73 2E 0A | oss inclusions.. | X| 0A 31 2E 20 4D 61 78 69 6D 75 6D 20 69 6E 70 75 | .1. Maximum inpu | X| 74 20 6C 69 6E 65 20 6C 65 6E 67 74 68 2E 0A 32 | t line length..2 | X| 2E 20 53 70 65 63 69 61 6C 20 63 68 61 72 61 63 | . Special charac | X| 74 65 72 2E 0A 33 2E 20 4C 6F 63 61 6C 20 6C 69 | ter..3. Local li | X| 6E 65 20 6E 75 6D 62 65 72 2E 0A 0A 54 6F 20 74 | ne number...To t | X| 65 73 74 20 74 68 69 73 2C 20 77 65 20 66 69 72 | est this, we fir | X| 73 74 20 73 65 74 20 74 68 65 20 66 69 72 73 74 | st set the first | X| 20 74 77 6F 20 61 74 74 72 69 62 75 74 65 73 20 | two attributes | X| 61 77 61 79 20 66 72 6F 6D 20 74 68 65 0A 64 65 | away from the.de | X| 66 61 75 6C 74 2E 20 54 68 69 73 20 77 69 6C 6C | fault. This will | X| 20 65 6E 61 62 6C 65 20 75 73 20 74 6F 20 62 65 | enable us to be | X| 20 73 75 72 65 20 74 68 61 74 20 77 68 65 6E 20 | sure that when | X| 74 68 65 79 20 61 72 65 20 72 65 73 74 6F 72 65 | they are restore | X| 64 20 74 68 61 74 0A 74 68 65 79 20 61 72 65 20 | d that.they are | X| 62 65 69 6E 67 20 72 65 73 74 6F 72 65 64 20 74 | being restored t | X| 6F 20 74 68 65 69 72 20 66 6F 72 6D 65 72 20 76 | o their former v | X| 61 6C 75 65 73 20 61 6E 64 20 6E 6F 74 20 6A 75 | alues and not ju | X| 73 74 20 73 65 74 20 74 6F 20 74 68 65 0A 64 65 | st set to the.de | X| 66 61 75 6C 74 2E 0A 0A 40 3D 2A 20 20 20 2A 21 | fault...@=* *! | X| 20 43 68 61 6E 67 65 20 74 68 65 20 73 70 65 63 | Change the spec | X| 69 61 6C 20 63 68 61 72 61 63 74 65 72 2E 0A 2A | ial character..* | X| 70 20 6D 61 78 69 6D 75 6D 5F 69 6E 70 75 74 5F | p maximum_input_ | X| 6C 69 6E 65 5F 6C 65 6E 67 74 68 20 3D 20 37 35 | line_length = 75 | X| 0A 0A 42 65 66 6F 72 65 20 69 6E 63 6C 75 64 65 | ..Before include | X| 2E 0A 2A 69 20 73 63 31 35 61 0A 41 66 74 65 72 | ..*i sc15a.After | X| 20 69 6E 63 6C 75 64 65 2E 0A 0A 49 66 20 74 68 | include...If th | X| 65 20 6D 61 78 69 6D 75 6D 20 69 6E 70 75 74 20 | e maximum input | X| 6C 69 6E 65 20 6C 65 6E 67 74 68 20 68 61 73 20 | line length has | X| 62 65 65 6E 20 63 6F 72 72 65 63 74 6C 79 20 72 | been correctly r | X| 65 73 74 6F 72 65 64 20 74 68 65 6E 20 74 68 65 | estored then the | X| 0A 73 65 63 6F 6E 64 20 6F 66 20 74 68 65 20 66 | .second of the f | X| 6F 6C 6C 6F 77 69 6E 67 20 74 77 6F 20 6C 69 6E | ollowing two lin | X| 65 73 20 73 68 6F 75 6C 64 20 67 69 76 65 20 61 | es should give a | X| 6E 20 65 72 72 6F 72 2C 20 62 75 74 20 6E 6F 74 | n error, but not | X| 20 74 68 65 20 66 69 72 73 74 2E 0A 31 32 33 34 | the first..1234 | X| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | X| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | X| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | X| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | X| 39 30 31 32 33 34 35 0A 31 32 33 34 35 36 37 38 | 9012345.12345678 | X| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | X| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | X| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | X| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | X| 33 34 35 36 0A 0A 49 66 20 74 68 65 20 73 70 65 | 3456..If the spe | X| 63 69 61 6C 20 63 68 61 72 61 63 74 65 72 20 68 | cial character h | X| 61 73 20 62 65 65 6E 20 70 72 65 73 65 72 76 65 | as been preserve | X| 64 2C 20 74 68 65 6E 20 74 68 65 20 66 6F 6C 6C | d, then the foll | X| 6F 77 69 6E 67 20 73 68 6F 75 6C 64 0A 67 65 6E | owing should.gen | X| 65 72 61 74 65 20 61 6E 20 65 72 72 6F 72 2E 0A | erate an error.. | X| 0A 2A 20 20 20 2D 20 54 68 69 73 20 73 68 6F 75 | .* - This shou | X| 6C 64 20 67 65 6E 65 72 61 74 65 20 61 6E 20 65 | ld generate an e | X| 72 72 6F 72 20 69 66 20 61 6C 6C 20 69 73 20 77 | rror if all is w | X| 65 6C 6C 2E 0A 0A 50 72 65 73 65 72 76 61 74 69 | ell...Preservati | X| 6F 6E 20 6F 66 20 74 68 65 20 6C 6F 63 61 6C 20 | on of the local | X| 6C 69 6E 65 20 6E 75 6D 62 65 72 20 63 61 6E 20 | line number can | X| 62 65 20 63 68 65 63 6B 65 64 20 62 79 20 6C 6F | be checked by lo | X| 6F 6B 69 6E 67 20 61 74 20 74 68 65 0A 6C 69 73 | oking at the.lis | X| 74 69 6E 67 20 66 69 6C 65 2E 0A | ting file.. | X+-------------------------------------------------+------------------+ X Dump of mapped file "<<Suppressed>>". X MEMORY DUMP OF MAPPED FILE X========================== X X+-------------------------------------------------+------------------+ X| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | X+-------------------------------------------------+------------------+ X| 54 68 69 73 20 69 73 20 74 68 65 20 69 6E 63 6C | This is the incl | X| 75 64 65 20 66 69 6C 65 20 66 6F 72 20 74 65 73 | ude file for tes | X| 74 20 53 43 31 35 2E 20 54 68 65 20 53 43 31 35 | t SC15. The SC15 | X| 20 74 65 73 74 20 63 68 65 63 6B 73 20 74 6F 20 | test checks to | X| 6D 61 6B 65 0A 73 75 72 65 20 74 68 61 74 20 46 | make.sure that F | X| 75 6E 6E 65 6C 57 65 62 20 69 73 20 73 61 76 69 | unnelWeb is savi | X| 6E 67 20 61 6E 64 20 72 65 73 74 6F 72 69 6E 67 | ng and restoring | X| 20 74 68 72 65 65 20 73 63 61 6E 6E 69 6E 67 0A | three scanning. | X| 61 74 74 72 69 62 75 74 65 73 20 61 63 72 6F 73 | attributes acros | X| 73 20 69 6E 63 6C 75 64 65 20 66 69 6C 65 73 2E | s include files. | X| 20 57 65 20 61 6C 73 6F 20 77 61 6E 74 20 74 6F | We also want to | X| 20 6D 61 6B 65 20 73 75 72 65 0A 74 68 61 74 20 | make sure.that | X| 74 68 65 20 73 63 61 6E 6E 65 72 20 69 73 20 69 | the scanner is i | X| 6E 69 74 69 61 6C 69 7A 69 6E 67 20 74 68 65 73 | nitializing thes | X| 65 20 61 74 74 72 69 62 75 74 65 73 20 63 6F 72 | e attributes cor | X| 72 65 63 74 6C 79 20 77 69 74 68 69 6E 0A 74 68 | rectly within.th | X| 65 20 69 6E 63 6C 75 64 65 20 66 69 6C 65 2E 0A | e include file.. | X| 0A 53 43 31 35 2E 34 3A 20 4D 61 6B 65 20 73 75 | .SC15.4: Make su | X| 72 65 20 74 68 61 74 20 74 68 65 20 73 70 65 63 | re that the spec | X| 69 61 6C 20 63 68 61 72 61 63 74 65 72 20 69 73 | ial character is | X| 20 41 54 20 61 74 20 74 68 65 20 73 74 61 72 74 | AT at the start | X| 20 6F 66 0A 69 6E 63 6C 75 64 65 20 66 69 6C 65 | of.include file | X| 73 2E 0A 0A 40 20 20 20 20 2D 20 54 68 69 73 20 | s...@ - This | X| 73 68 6F 75 6C 64 20 79 69 65 6C 64 20 61 6E 20 | should yield an | X| 65 72 72 6F 72 2E 0A 0A 53 43 31 35 2E 35 20 45 | error...SC15.5 E | X| 6E 73 75 72 65 20 74 68 61 74 20 74 68 65 20 6D | nsure that the m | X| 61 78 69 6D 75 6D 20 69 6E 70 75 74 20 6C 69 6E | aximum input lin | X| 65 20 6C 65 6E 67 74 68 20 69 73 20 38 30 20 61 | e length is 80 a | X| 74 20 74 68 65 20 73 74 61 72 74 0A 6F 66 20 61 | t the start.of a | X| 6E 20 69 6E 63 6C 75 64 65 20 66 69 6C 65 2E 20 | n include file. | X| 49 66 20 61 6C 6C 20 69 73 20 77 65 6C 6C 2C 20 | If all is well, | X| 6F 6E 6C 79 20 74 68 65 20 73 65 63 6F 6E 64 20 | only the second | X| 6F 66 20 74 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 | of the following | X| 20 74 77 6F 0A 6C 69 6E 65 73 20 77 69 6C 6C 20 | two.lines will | X| 70 72 6F 76 6F 6B 65 20 61 20 22 6C 69 6E 65 20 | provoke a "line | X| 74 6F 6F 20 6C 6F 6E 67 22 20 65 72 72 6F 72 2E | too long" error. | X| 0A 0A 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | ..12345678901234 | X| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | X| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | X| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | X| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | X| 39 30 0A 31 32 33 34 35 36 37 38 39 30 31 32 33 | 90.1234567890123 | X| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 | X| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 | X| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 | X| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 | X| 38 39 30 31 0A 0A 4E 6F 77 20 74 68 61 74 20 77 | 8901..Now that w | X| 65 20 68 61 76 65 20 63 68 65 63 6B 65 64 20 74 | e have checked t | X| 68 65 20 64 65 66 61 75 6C 74 20 61 74 74 72 69 | he default attri | X| 62 75 74 65 73 20 6F 6E 20 65 6E 74 65 72 69 6E | butes on enterin | X| 67 20 61 6E 20 69 6E 63 6C 75 64 65 20 66 69 6C | g an include fil | X| 65 2C 0A 77 65 20 77 61 6E 74 20 74 6F 20 73 74 | e,.we want to st | X| 75 66 66 20 74 68 65 6D 20 75 70 20 73 6F 20 61 | uff them up so a | X| 73 20 74 6F 20 6D 61 6B 65 20 73 75 72 65 20 74 | s to make sure t | X| 68 61 74 20 74 68 65 20 61 74 74 72 69 62 75 74 | hat the attribut | X| 65 73 0A 70 72 65 76 61 69 6C 69 6E 67 20 77 68 | es.prevailing wh | X| 65 6E 20 74 68 65 20 69 6E 63 6C 75 64 65 20 77 | en the include w | X| 61 73 20 68 69 74 20 61 72 65 20 72 65 73 74 6F | as hit are resto | X| 72 65 64 2E 0A 0A 40 70 20 6D 61 78 69 6D 75 6D | red...@p maximum | X| 5F 69 6E 70 75 74 5F 6C 69 6E 65 5F 6C 65 6E 67 | _input_line_leng | X| 74 68 20 3D 20 36 35 0A 40 3D 2B 0A 0A | th = 65.@=+.. | X+-------------------------------------------------+------------------+ X X X=========================== Start of LINE LIST DUMP ============================ X Globl Local| Text X-----------+-------------------------------------------------------------------- X00001 00001| SC15: Test that certain attributes are saved across inclusions.<010> X00002 00002| <010> X00003 00003| 1. Maximum input line length.<010> X00004 00004| 2. Special character.<010> X00005 00005| 3. Local line number.<010> X00006 00006| <010> X00007 00007| To test this, we first set the first two attributes away from the<010> X00008 00008| default. This will enable us to be sure that when they are restored that<010> X00009 00009| they are being restored to their former values and not just set to the<010> X00010 00010| default.<010> X00011 00011| <010> X00012 00012| @=* *! Change the special character.<010> X00013 00013| *p maximum_input_line_length = 75<010> X00014 00014| <010> X00015 00015| Before include.<010> X00016 00016| *i sc15a<010> X00017 00001| This is the include file for test SC15. The SC15 test checks to make<010> X00018 00002| sure that FunnelWeb is saving and restoring three scanning<010> X00019 00003| attributes across include files. We also want to make sure<010> X00020 00004| that the scanner is initializing these attributes correctly within<010> X00021 00005| the include file.<010> X00022 00006| <010> X00023 00007| SC15.4: Make sure that the special character is AT at the start of<010> X00024 00008| include files.<010> X00025 00009| <010> X00026 00010| @ - This should yield an error.<010> X00027 00011| <010> X00028 00012| SC15.5 Ensure that the maximum input line length is 80 at the start<010> X00029 00013| of an include file. If all is well, only the second of the following two<010> X00030 00014| lines will provoke a "line too long" error.<010> X00031 00015| <010> X00032 00016| 12345678901234567890123456789012345678901234567890123456789012345678901234567890<010> X00033 00017| 123456789012345678901234567890123456789012345678901234567890123456789012345678901<010> X00034 00018| <010> X00035 00019| Now that we have checked the default attributes on entering an include file,<010> X00036 00020| we want to stuff them up so as to make sure that the attributes<010> X00037 00021| prevailing when the include was hit are restored.<010> X00038 00022| <010> X00039 00023| @p maximum_input_line_length = 65<010> X00040 00024| @=+<010> X00041 00025| <010> X00042 00017| After include.<010> X00043 00018| <010> X00044 00019| If the maximum input line length has been correctly restored then the<010> X00045 00020| second of the following two lines should give an error, but not the first.<010> X00046 00021| 123456789012345678901234567890123456789012345678901234567890123456789012345<010> X00047 00022| 1234567890123456789012345678901234567890123456789012345678901234567890123456<010> X00048 00023| <010> X00049 00024| If the special character has been preserved, then the following should<010> X00050 00025| generate an error.<010> X00051 00026| <010> X00052 00027| * - This should generate an error if all is well.<010> X00053 00028| <010> X00054 00029| Preservation of the local line number can be checked by looking at the<010> X00055 00030| listing file.<010> X00056 00031| <End-Of-File><010> X-----------+-------------------------------------------------------------------- Globl Local| Text X X============================ End of LINE LIST DUMP ============================= X X X=========================== Start of TOKEN LIST DUMP =========================== X Summary: There are 9 tokens in the token list. X Line[Column]: Token Description X------------------------------- X X0001[01]: Text. Text scrap[Grey]="SC15: Test that certain attributes are saved across inclusions.<010> X<010> X1. Maximum input line length.<010> X2. Special character.<010> X3. Local line number.<010> X<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> X<010> X" X0012[04]: Text. Text scrap[White]=" " X0014[01]: Text. Text scrap[Grey]="<010> Before include.<010> X" X0017[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> X<010> SC15.4: Make sure that the special character is AT at the start of<010> include files.<010> X<010> X" X0026[03]: Text. Text scrap[Grey]=" - This should yield an error.<010> X<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> X<010> X12345678901234567890123456789012345678901234567890123456789012345678901234567890<010> X123456789012345678901234567890123456789012345678901234567890123456789012345678901<010> X<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> X<010> X" X0040[04]: Text. Text scrap[White]="<010> X<010> X" X0042[01]: Text. Text scrap[Grey]="After include.<010> X<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> X123456789012345678901234567890123456789012345678901234567890123456789012345<010> X1234567890123456789012345678901234567890123456789012345678901234567890123456<010> X<010> If the special character has been preserved, then the following should<010> generate an error.<010> X<010> X" X0052[03]: Text. Text scrap[Grey]=" - This should generate an error if all is well.<010> X<010> Preservation of the local line number can be checked by looking at the<010> listing file.<010> X" X0056[01]: End Of File. X============================ End of TOKEN LIST DUMP ============================ X Macro table dump skipped (Parser was not invoked). Document list dump skipped (Parser was not invoked). X Global Local| Input File X------------+------------------------------------------------------------------- X 1 1| SC15: Test that certain attributes are saved across inclusions. X 2 2| X 3 3| 1. Maximum input line length. X 4 4| 2. Special character. X 5 5| 3. Local line number. X 6 6| X 7 7| To test this, we first set the first two attributes away from the X 8 8| default. This will enable us to be sure that when they are restored that X 9 9| they are being restored to their former values and not just set to the X 10 10| default. X 11 11| X 12 12| @=* *! Change the special character. X 13 13| *p maximum_input_line_length = 75 X 14 14| X 15 15| Before include. X 16 16| *i sc15a X 17 1| This is the include file for test SC15. The SC15 test checks to make X 18 2| sure that FunnelWeb is saving and restoring three scanning X 19 3| attributes across include files. We also want to make sure X 20 4| that the scanner is initializing these attributes correctly within X 21 5| the include file. X 22 6| X 23 7| SC15.4: Make sure that the special character is AT at the start of X 24 8| include files. X 25 9| X 26 10| @ - This should yield an error. X Error|.^<special><space> is not a legal special sequence. X 27 11| X 28 12| SC15.5 Ensure that the maximum input line length is 80 at the start X 29 13| of an include file. If all is well, only the second of the following two X 30 14| lines will provoke a "line too long" error. X 31 15| X 32 16| 12345678901234567890123456789012345678901234567890123456789012345678901234567890 X 33 17| 123456789012345678901234567890123456789012345678901234567890123456789012345678901 X Error|.................................................................................^Input line is too long (this character is the first offender). X |.................................................................................^Currently, the maximum allowable input line length is 80. X |.................................................................................^Note: You can change this using a pragma directive (@p). X 34 18| X 35 19| Now that we have checked the default attributes on entering an include file, X 36 20| we want to stuff them up so as to make sure that the attributes X 37 21| prevailing when the include was hit are restored. X 38 22| X 39 23| @p maximum_input_line_length = 65 X 40 24| @=+ X 41 25| X 42 17| After include. X 43 18| X 44 19| If the maximum input line length has been correctly restored then the X 45 20| second of the following two lines should give an error, but not the first. X 46 21| 123456789012345678901234567890123456789012345678901234567890123456789012345 X 47 22| 1234567890123456789012345678901234567890123456789012345678901234567890123456 X Error|............................................................................^Input line is too long (this character is the first offender). X |............................................................................^Currently, the maximum allowable input line length is 75. X |............................................................................^Note: You can change this using a pragma directive (@p). X 48 23| X 49 24| If the special character has been preserved, then the following should X 50 25| generate an error. X 51 26| X 52 27| * - This should generate an error if all is well. X Error|.^<special><space> is not a legal special sequence. X 53 28| X 54 29| Preservation of the local line number can be checked by looking at the X 55 30| listing file. X | <End-Of-File> X------------+------------------------------------------------------------------- X There were 4 Errors. END_OF_FILE if test 19803 -ne `wc -c <'answers/sc15.lis'`; then echo shar: \"'answers/sc15.lis'\" unpacked with wrong size! fi # end of 'answers/sc15.lis' fi if test -f 'answers/sc16.lis' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'answers/sc16.lis'\" else echo shar: Extracting \"'answers/sc16.lis'\" \(20071 characters\) sed "s/^X//" >'answers/sc16.lis' <<'END_OF_FILE' XFUNNELWEB LISTING FILE X====================== X Dump of mapped file "<<Suppressed>>". X MEMORY DUMP OF MAPPED FILE X========================== X X+-------------------------------------------------+------------------+ X| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | X+-------------------------------------------------+------------------+ X| 53 43 31 36 3A 20 54 65 73 74 20 3C 73 70 65 63 | SC16: Test <spec | X| 69 61 6C 3E 5E 20 73 65 71 75 65 6E 63 65 2E 0A | ial>^ sequence.. | X| 0A 31 2E 20 54 65 73 74 20 74 68 61 74 20 61 6C | .1. Test that al | X| 6C 20 62 61 73 65 20 63 68 61 72 61 63 74 65 72 | l base character | X| 73 20 77 6F 72 6B 20 28 69 6E 20 62 6F 74 68 20 | s work (in both | X| 63 61 73 65 73 29 2E 0A 20 20 20 54 68 65 73 65 | cases).. These | X| 20 73 68 6F 75 6C 64 20 70 72 6F 76 6F 6B 65 20 | should provoke | X| 6E 6F 20 65 72 72 6F 72 73 2E 0A 0A 20 20 20 40 | no errors... @ | X| 5E 42 28 30 30 30 30 30 30 30 30 29 20 20 20 40 | ^B(00000000) @ | X| 5E 62 28 30 30 30 30 30 30 30 30 29 0A 20 20 20 | ^b(00000000). | X| 40 5E 4F 28 30 30 30 29 20 20 20 40 5E 6F 28 30 | @^O(000) @^o(0 | X| 30 30 29 0A 20 20 20 40 5E 51 28 30 30 30 29 20 | 00). @^Q(000) | X| 20 20 40 5E 71 28 30 30 30 29 0A 20 20 20 40 5E | @^q(000). @^ | X| 44 28 30 30 30 29 20 20 20 40 5E 64 28 30 30 30 | D(000) @^d(000 | X| 29 0A 20 20 20 40 5E 48 28 30 30 29 20 20 20 20 | ). @^H(00) | X| 40 5E 68 28 30 30 29 0A 20 20 20 40 5E 58 28 30 | @^h(00). @^X(0 | X| 30 29 20 20 20 20 40 5E 78 28 30 30 29 0A 0A 32 | 0) @^x(00)..2 | X| 2E 20 54 65 73 74 20 74 68 61 74 20 73 6F 6D 65 | . Test that some | X| 20 6F 74 68 65 72 20 62 61 73 65 20 63 68 61 72 | other base char | X| 61 63 74 65 72 73 20 67 65 6E 65 72 61 74 65 20 | acters generate | X| 61 6E 20 65 72 72 6F 72 2E 0A 0A 20 20 20 40 5E | an error... @^ | X| 75 28 30 29 0A 20 20 20 40 5E 79 0A 20 20 20 40 | u(0). @^y. @ | X| 5E 23 0A 20 20 20 40 5E 28 0A 0A 33 2E 20 54 65 | ^#. @^(..3. Te | X| 73 74 20 74 68 61 74 20 61 6E 20 65 72 72 6F 72 | st that an error | X| 20 69 73 20 67 65 6E 65 72 61 74 65 64 20 69 66 | is generated if | X| 20 70 61 72 65 6E 74 68 65 73 69 73 20 69 73 20 | parenthesis is | X| 6D 69 73 73 69 6E 67 2E 0A 0A 20 20 20 40 5E 44 | missing... @^D | X| 33 34 29 0A 0A 34 2E 20 54 65 73 74 20 6C 65 67 | 34)..4. Test leg | X| 61 6C 20 64 69 67 69 74 73 20 69 6E 20 65 61 63 | al digits in eac | X| 68 20 62 61 73 65 2E 0A 0A 20 20 20 40 5E 42 28 | h base... @^B( | X| 30 30 30 30 31 31 31 31 29 0A 20 20 20 40 5E 4F | 00001111). @^O | X| 28 30 31 32 29 20 20 40 5E 4F 28 30 33 34 29 20 | (012) @^O(034) | X| 40 5E 4F 28 30 35 36 29 20 40 5E 4F 28 30 37 37 | @^O(056) @^O(077 | X| 29 0A 20 20 20 40 5E 44 28 30 31 32 29 20 20 40 | ). @^D(012) @ | X| 5E 44 28 30 33 34 29 20 40 5E 44 28 30 35 36 29 | ^D(034) @^D(056) | X| 20 40 5E 44 28 30 37 38 29 20 40 5E 44 28 30 39 | @^D(078) @^D(09 | X| 39 29 0A 20 20 20 40 5E 48 28 30 31 29 20 40 5E | 9). @^H(01) @^ | X| 48 28 32 33 29 20 40 5E 48 28 34 35 29 20 40 5E | H(23) @^H(45) @^ | X| 48 28 36 37 29 0A 20 20 20 40 5E 48 28 38 39 29 | H(67). @^H(89) | X| 20 40 5E 48 28 41 42 29 20 40 5E 58 28 43 44 29 | @^H(AB) @^X(CD) | X| 20 40 5E 58 28 45 46 29 20 20 40 5E 78 28 61 66 | @^X(EF) @^x(af | X| 29 0A 0A 35 2E 20 54 65 73 74 20 69 6C 6C 65 67 | )..5. Test illeg | X| 61 6C 20 64 69 67 69 74 73 20 69 6E 20 65 61 63 | al digits in eac | X| 68 20 62 61 73 65 2E 0A 0A 20 20 20 40 5E 42 28 | h base... @^B( | X| 30 30 30 30 30 30 30 32 29 0A 20 20 20 40 5E 4F | 00000002). @^O | X| 28 30 30 38 29 0A 20 20 20 40 5E 44 28 30 30 41 | (008). @^D(00A | X| 29 0A 20 20 20 40 5E 48 28 30 47 29 0A 0A 36 2E | ). @^H(0G)..6. | X| 20 54 65 73 74 20 77 68 61 74 20 68 61 70 70 65 | Test what happe | X| 6E 73 20 69 66 20 74 68 65 72 65 20 61 72 65 20 | ns if there are | X| 74 68 65 20 77 72 6F 6E 67 20 6E 75 6D 62 65 72 | the wrong number | X| 20 6F 66 20 64 69 67 69 74 73 0A 20 20 20 28 74 | of digits. (t | X| 6F 6F 20 66 65 77 2C 20 74 6F 6F 20 6D 61 6E 79 | oo few, too many | X| 29 2E 0A 0A 20 20 20 40 5E 42 28 31 29 0A 20 20 | )... @^B(1). | X| 20 40 5E 4F 28 31 29 0A 20 20 20 40 5E 44 28 31 | @^O(1). @^D(1 | X| 29 0A 20 20 20 40 5E 48 28 31 29 0A 0A 20 20 20 | ). @^H(1).. | X| 40 5E 42 28 30 30 30 30 30 30 30 30 31 29 0A 20 | @^B(000000001). | X| 20 20 40 5E 4F 28 30 30 30 34 29 0A 20 20 20 40 | @^O(0004). @ | X| 5E 44 28 30 30 30 31 29 0A 20 20 20 40 5E 48 28 | ^D(0001). @^H( | X| 30 30 35 29 0A 0A 37 2E 20 54 65 73 74 20 74 68 | 005)..7. Test th | X| 61 74 20 61 6E 20 65 72 72 6F 72 20 69 73 20 67 | at an error is g | X| 65 6E 65 72 61 74 65 64 20 66 6F 72 20 61 20 6D | enerated for a m | X| 69 73 73 69 6E 67 20 63 6C 6F 73 69 6E 67 20 70 | issing closing p | X| 61 72 65 6E 74 68 65 73 69 73 2E 0A 0A 20 20 40 | arenthesis... @ | X| 5E 42 28 30 30 30 30 30 30 30 30 0A 20 20 40 5E | ^B(00000000. @^ | X| 44 28 30 34 35 28 0A 0A 38 2E 20 54 65 73 74 20 | D(045(..8. Test | X| 77 68 61 74 20 68 61 70 70 65 6E 73 20 69 6E 20 | what happens in | X| 6E 75 6D 62 65 72 20 69 73 20 6F 75 74 20 6F 66 | number is out of | X| 20 74 68 65 20 72 61 6E 67 65 20 5B 30 2C 32 35 | the range [0,25 | X| 35 5D 2E 0A 0A 20 20 40 5E 44 28 32 35 35 29 0A | 5]... @^D(255). | X| 20 20 40 5E 44 28 32 35 36 29 0A 20 20 40 5E 44 | @^D(256). @^D | X| 28 39 39 39 29 0A 0A | (999).. | X+-------------------------------------------------+------------------+ X X X=========================== Start of LINE LIST DUMP ============================ X Globl Local| Text X-----------+-------------------------------------------------------------------- X00001 00001| SC16: Test <special>^ sequence.<010> X00002 00002| <010> X00003 00003| 1. Test that all base characters work (in both cases).<010> X00004 00004| These should provoke no errors.<010> X00005 00005| <010> X00006 00006| @^B(00000000) @^b(00000000)<010> X00007 00007| @^O(000) @^o(000)<010> X00008 00008| @^Q(000) @^q(000)<010> X00009 00009| @^D(000) @^d(000)<010> X00010 00010| @^H(00) @^h(00)<010> X00011 00011| @^X(00) @^x(00)<010> X00012 00012| <010> X00013 00013| 2. Test that some other base characters generate an error.<010> X00014 00014| <010> X00015 00015| @^u(0)<010> X00016 00016| @^y<010> X00017 00017| @^#<010> X00018 00018| @^(<010> X00019 00019| <010> X00020 00020| 3. Test that an error is generated if parenthesis is missing.<010> X00021 00021| <010> X00022 00022| @^D34)<010> X00023 00023| <010> X00024 00024| 4. Test legal digits in each base.<010> X00025 00025| <010> X00026 00026| @^B(00001111)<010> X00027 00027| @^O(012) @^O(034) @^O(056) @^O(077)<010> X00028 00028| @^D(012) @^D(034) @^D(056) @^D(078) @^D(099)<010> X00029 00029| @^H(01) @^H(23) @^H(45) @^H(67)<010> X00030 00030| @^H(89) @^H(AB) @^X(CD) @^X(EF) @^x(af)<010> X00031 00031| <010> X00032 00032| 5. Test illegal digits in each base.<010> X00033 00033| <010> X00034 00034| @^B(00000002)<010> X00035 00035| @^O(008)<010> X00036 00036| @^D(00A)<010> X00037 00037| @^H(0G)<010> X00038 00038| <010> X00039 00039| 6. Test what happens if there are the wrong number of digits<010> X00040 00040| (too few, too many).<010> X00041 00041| <010> X00042 00042| @^B(1)<010> X00043 00043| @^O(1)<010> X00044 00044| @^D(1)<010> X00045 00045| @^H(1)<010> X00046 00046| <010> X00047 00047| @^B(000000001)<010> X00048 00048| @^O(0004)<010> X00049 00049| @^D(0001)<010> X00050 00050| @^H(005)<010> X00051 00051| <010> X00052 00052| 7. Test that an error is generated for a missing closing parenthesis.<010> X00053 00053| <010> X00054 00054| @^B(00000000<010> X00055 00055| @^D(045(<010> X00056 00056| <010> X00057 00057| 8. Test what happens in number is out of the range [0,255].<010> X00058 00058| <010> X00059 00059| @^D(255)<010> X00060 00060| @^D(256)<010> X00061 00061| @^D(999)<010> X00062 00062| <010> X00063 00063| <End-Of-File><010> X-----------+-------------------------------------------------------------------- Globl Local| Text X X============================ End of LINE LIST DUMP ============================= X X X=========================== Start of TOKEN LIST DUMP =========================== X Summary: There are 87 tokens in the token list. X Line[Column]: Token Description X------------------------------- X X0001[01]: Text. Text scrap[Grey]="SC16: Test <special>^ sequence.<010> X<010> X1. Test that all base characters work (in both cases).<010> X These should provoke no errors.<010> X<010> X " X0006[04]: Text. Text scrap[Grey]="<000>" X0006[17]: Text. Text scrap[White]=" " X0006[20]: Text. Text scrap[Grey]="<000>" X0006[33]: Text. Text scrap[White]="<010> X " X0007[04]: Text. Text scrap[Grey]="<000>" X0007[12]: Text. Text scrap[White]=" " X0007[15]: Text. Text scrap[Grey]="<000>" X0007[23]: Text. Text scrap[White]="<010> X " X0008[04]: Text. Text scrap[Grey]="<000>" X0008[12]: Text. Text scrap[White]=" " X0008[15]: Text. Text scrap[Grey]="<000>" X0008[23]: Text. Text scrap[White]="<010> X " X0009[04]: Text. Text scrap[Grey]="<000>" X0009[12]: Text. Text scrap[White]=" " X0009[15]: Text. Text scrap[Grey]="<000>" X0009[23]: Text. Text scrap[White]="<010> X " X0010[04]: Text. Text scrap[Grey]="<000>" X0010[11]: Text. Text scrap[White]=" " X0010[15]: Text. Text scrap[Grey]="<000>" X0010[22]: Text. Text scrap[White]="<010> X " X0011[04]: Text. Text scrap[Grey]="<000>" X0011[11]: Text. Text scrap[White]=" " X0011[15]: Text. Text scrap[Grey]="<000>" X0011[22]: Text. Text scrap[Grey]="<010> X<010> X2. Test that some other base characters generate an error.<010> X<010> X " X0015[07]: Text. Text scrap[Grey]="(0)<010> X " X0016[07]: Text. Text scrap[White]="<010> X " X0017[07]: Text. Text scrap[White]="<010> X " X0018[07]: Text. Text scrap[Grey]="<010> X<010> X3. Test that an error is generated if parenthesis is missing.<010> X<010> X " X0022[08]: Text. Text scrap[Grey]="4)<010> X<010> X4. Test legal digits in each base.<010> X<010> X " X0026[04]: Text. Text scrap[Grey]="<015>" X0026[17]: Text. Text scrap[White]="<010> X " X0027[04]: Text. Text scrap[Grey]="<010> X" X0027[12]: Text. Text scrap[White]=" " X0027[14]: Text. Text scrap[Grey]="<028>" X0027[22]: Text. Text scrap[White]=" " X0027[23]: Text. Text scrap[Grey]="." X0027[31]: Text. Text scrap[White]=" " X0027[32]: Text. Text scrap[Grey]="?" X0027[40]: Text. Text scrap[White]="<010> X " X0028[04]: Text. Text scrap[Grey]="<012>" X0028[12]: Text. Text scrap[White]=" " X0028[14]: Text. Text scrap[Grey]=""" X0028[22]: Text. Text scrap[White]=" " X0028[23]: Text. Text scrap[Grey]="8" X0028[31]: Text. Text scrap[White]=" " X0028[32]: Text. Text scrap[Grey]="N" X0028[40]: Text. Text scrap[White]=" " X0028[41]: Text. Text scrap[Grey]="c" X0028[49]: Text. Text scrap[White]="<010> X " X0029[04]: Text. Text scrap[Grey]="<001>" X0029[11]: Text. Text scrap[White]=" " X0029[12]: Text. Text scrap[Grey]="#" X0029[19]: Text. Text scrap[White]=" " X0029[20]: Text. Text scrap[Grey]="E" X0029[27]: Text. Text scrap[White]=" " X0029[28]: Text. Text scrap[Grey]="g" X0029[35]: Text. Text scrap[White]="<010> X " X0030[04]: Text. Text scrap[Grey]="<137>" X0030[11]: Text. Text scrap[White]=" " X0030[12]: Text. Text scrap[Grey]="<171>" X0030[19]: Text. Text scrap[White]=" " X0030[20]: Text. Text scrap[Grey]="<205>" X0030[27]: Text. Text scrap[White]=" " X0030[28]: Text. Text scrap[Grey]="<239>" X0030[35]: Text. Text scrap[White]=" " X0030[37]: Text. Text scrap[Grey]="<175>" X0030[44]: Text. Text scrap[Grey]="<010> X<010> X5. Test illegal digits in each base.<010> X<010> X " X0034[16]: Text. Text scrap[Grey]=")<010> X " X0035[11]: Text. Text scrap[Grey]=")<010> X " X0036[11]: Text. Text scrap[Grey]=")<010> X " X0037[10]: Text. Text scrap[Grey]=")<010> X<010> X6. Test what happens if there are the wrong number of digits<010> X (too few, too many).<010> X<010> X " X0042[10]: Text. Text scrap[White]="<010> X " X0043[10]: Text. Text scrap[White]="<010> X " X0044[10]: Text. Text scrap[White]="<010> X " X0045[10]: Text. Text scrap[White]="<010> X<010> X " X0047[17]: Text. Text scrap[Grey]=")<010> X " X0048[12]: Text. Text scrap[Grey]=")<010> X " X0049[12]: Text. Text scrap[Grey]=")<010> X " X0050[11]: Text. Text scrap[Grey]=")<010> X<010> X7. Test that an error is generated for a missing closing parenthesis.<010> X<010> X " X0055[01]: Text. Text scrap[White]=" " X0055[11]: Text. Text scrap[Grey]="<010> X<010> X8. Test what happens in number is out of the range [0,255].<010> X<010> X " X0059[03]: Text. Text scrap[Grey]="<255>" X0059[11]: Text. Text scrap[White]="<010> X " X0060[11]: Text. Text scrap[White]="<010> X " X0061[11]: Text. Text scrap[White]="<010> X<010> X" X0063[01]: End Of File. X============================ End of TOKEN LIST DUMP ============================ X Macro table dump skipped (Parser was not invoked). Document list dump skipped (Parser was not invoked). X Global Local| Input File X------------+------------------------------------------------------------------- X 1 1| SC16: Test <special>^ sequence. X 2 2| X 3 3| 1. Test that all base characters work (in both cases). X 4 4| These should provoke no errors. X 5 5| X 6 6| @^B(00000000) @^b(00000000) X 7 7| @^O(000) @^o(000) X 8 8| @^Q(000) @^q(000) X 9 9| @^D(000) @^d(000) X 10 10| @^H(00) @^h(00) X 11 11| @^X(00) @^x(00) X 12 12| X 13 13| 2. Test that some other base characters generate an error. X 14 14| X 15 15| @^u(0) X Error|......^Expecting one of 'B', 'Q', 'D', 'H'. X |......^(For Binary, Octal, Decimal, and Hexadecimal). X |......^A decimal character representation takes the form "@^D(ddd)". X |......^(exactly 3 digits) where each digit d is in the range 0..9. X 16 16| @^y X Error|......^Expecting one of 'B', 'Q', 'D', 'H'. X |......^(For Binary, Octal, Decimal, and Hexadecimal). X |......^A decimal character representation takes the form "@^D(ddd)". X |......^(exactly 3 digits) where each digit d is in the range 0..9. X 17 17| @^# X Error|......^Expecting one of 'B', 'Q', 'D', 'H'. X |......^(For Binary, Octal, Decimal, and Hexadecimal). X |......^A decimal character representation takes the form "@^D(ddd)". X |......^(exactly 3 digits) where each digit d is in the range 0..9. X 18 18| @^( X Error|......^Expecting one of 'B', 'Q', 'D', 'H'. X |......^(For Binary, Octal, Decimal, and Hexadecimal). X |......^A decimal character representation takes the form "@^D(ddd)". X |......^(exactly 3 digits) where each digit d is in the range 0..9. X 19 19| X 20 20| 3. Test that an error is generated if parenthesis is missing. X 21 21| X 22 22| @^D34) X Error|.......^Expecting '('. X |.......^A decimal character representation takes the form "@^D(ddd)". X |.......^(exactly 3 digits) where each digit d is in the range 0..9. X 23 23| X 24 24| 4. Test legal digits in each base. X 25 25| X 26 26| @^B(00001111) X 27 27| @^O(012) @^O(034) @^O(056) @^O(077) X 28 28| @^D(012) @^D(034) @^D(056) @^D(078) @^D(099) X 29 29| @^H(01) @^H(23) @^H(45) @^H(67) X 30 30| @^H(89) @^H(AB) @^X(CD) @^X(EF) @^x(af) X 31 31| X 32 32| 5. Test illegal digits in each base. X 33 33| X 34 34| @^B(00000002) X Error|...............^Illegal digit. X |...............^A binary character representation takes the form "@^B(dddddddd)". X |...............^(exactly 8 digits) where each digit d is either 0 or 1. X 35 35| @^O(008) X Error|..........^Illegal digit. X |..........^An octal character representation takes the form "@^Q(ddd)" (or "@^O(ddd)"). X |..........^(exactly 3 digits) where each digit d is in the range 0..7. X 36 36| @^D(00A) X Error|..........^Illegal digit. X |..........^A decimal character representation takes the form "@^D(ddd)". X |..........^(exactly 3 digits) where each digit d is in the range 0..9. X 37 37| @^H(0G) X Error|.........^Illegal digit. X |.........^A hexadecimal character representation takes the form "@^X(dd)" (or "@^H(dd)"). X |.........^(exactly 2 digits) where each digit d is in the range 0..9,A..F. X 38 38| X 39 39| 6. Test what happens if there are the wrong number of digits X 40 40| (too few, too many). X 41 41| X 42 42| @^B(1) X Error|.........^Illegal digit. X |.........^A binary character representation takes the form "@^B(dddddddd)". X |.........^(exactly 8 digits) where each digit d is either 0 or 1. X 43 43| @^O(1) X Error|.........^Illegal digit. X |.........^An octal character representation takes the form "@^Q(ddd)" (or "@^O(ddd)"). X |.........^(exactly 3 digits) where each digit d is in the range 0..7. X 44 44| @^D(1) X Error|.........^Illegal digit. X |.........^A decimal character representation takes the form "@^D(ddd)". X |.........^(exactly 3 digits) where each digit d is in the range 0..9. X 45 45| @^H(1) X Error|.........^Illegal digit. X |.........^A hexadecimal character representation takes the form "@^X(dd)" (or "@^H(dd)"). X |.........^(exactly 2 digits) where each digit d is in the range 0..9,A..F. X 46 46| X 47 47| @^B(000000001) X Error|................^Expecting ')'. X |................^A binary character representation takes the form "@^B(dddddddd)". X |................^(exactly 8 digits) where each digit d is either 0 or 1. X 48 48| @^O(0004) X Error|...........^Expecting ')'. X |...........^An octal character representation takes the form "@^Q(ddd)" (or "@^O(ddd)"). X |...........^(exactly 3 digits) where each digit d is in the range 0..7. X 49 49| @^D(0001) X Error|...........^Expecting ')'. X |...........^A decimal character representation takes the form "@^D(ddd)". X |...........^(exactly 3 digits) where each digit d is in the range 0..9. X 50 50| @^H(005) X Error|..........^Expecting ')'. X |..........^A hexadecimal character representation takes the form "@^X(dd)" (or "@^H(dd)"). X |..........^(exactly 2 digits) where each digit d is in the range 0..9,A..F. X 51 51| X 52 52| 7. Test that an error is generated for a missing closing parenthesis. X 53 53| X 54 54| @^B(00000000 X Error|...............^Expecting ')'. X |...............^A binary character representation takes the form "@^B(dddddddd)". X |...............^(exactly 8 digits) where each digit d is either 0 or 1. X 55 55| @^D(045( X Error|..........^Expecting ')'. X |..........^A decimal character representation takes the form "@^D(ddd)". X |..........^(exactly 3 digits) where each digit d is in the range 0..9. X 56 56| X 57 57| 8. Test what happens in number is out of the range [0,255]. X 58 58| X 59 59| @^D(255) X 60 60| @^D(256) X Error|..........^Character number is too large. X |..........^Character number must be in the range [0,255] (decimal). X |..........^A decimal character representation takes the form "@^D(ddd)". X |..........^(exactly 3 digits) where each digit d is in the range 0..9. X 61 61| @^D(999) X Error|..........^Character number is too large. X |..........^Character number must be in the range [0,255] (decimal). X |..........^A decimal character representation takes the form "@^D(ddd)". X |..........^(exactly 3 digits) where each digit d is in the range 0..9. X 62 62| X | <End-Of-File> X------------+------------------------------------------------------------------- X There were 21 Errors. END_OF_FILE if test 20071 -ne `wc -c <'answers/sc16.lis'`; then echo shar: \"'answers/sc16.lis'\" unpacked with wrong size! fi # end of 'answers/sc16.lis' fi if test -f 'answers/sc21.lis' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'answers/sc21.lis'\" else echo shar: Extracting \"'answers/sc21.lis'\" \(19255 characters\) sed "s/^X//" >'answers/sc21.lis' <<'END_OF_FILE' XFUNNELWEB LISTING FILE X====================== X Dump of mapped file "<<Suppressed>>". X MEMORY DUMP OF MAPPED FILE X========================== X X+-------------------------------------------------+------------------+ X| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF | X+-------------------------------------------------+------------------+ X| 53 43 32 31 3A 20 54 65 73 74 20 67 65 6E 65 72 | SC21: Test gener | X| 69 63 20 73 79 6E 74 61 78 20 63 68 65 63 6B 69 | ic syntax checki | X| 6E 67 20 6F 66 20 70 72 61 67 6D 61 73 20 61 6E | ng of pragmas an | X| 64 20 74 79 70 65 73 65 74 74 65 72 20 64 69 72 | d typesetter dir | X| 65 63 74 69 76 65 73 2E 0A 0A 31 2E 20 54 65 73 | ectives...1. Tes | X| 74 20 70 72 61 67 6D 61 20 6E 6F 74 20 61 74 20 | t pragma not at | X| 74 68 65 20 73 74 61 72 74 20 6F 66 20 6C 69 6E | the start of lin | X| 65 2E 0A 20 20 20 40 70 0A 20 20 20 40 74 0A 0A | e.. @p. @t.. | X| 32 2E 20 54 65 73 74 20 63 68 61 72 61 63 74 65 | 2. Test characte | X| 72 20 66 6F 6C 6C 6F 77 69 6E 67 20 3C 73 70 65 | r following <spe | X| 63 69 61 6C 3E 70 20 69 73 20 6E 6F 74 20 61 20 | cial>p is not a | X| 62 6C 61 6E 6B 2E 0A 40 70 78 0A 40 74 78 0A 40 | blank..@px.@tx.@ | X| 70 0A 40 74 0A 0A 33 2E 20 54 65 73 74 20 70 72 | p.@t..3. Test pr | X| 61 67 6D 61 20 6C 69 6E 65 20 69 73 20 74 6F 6F | agma line is too | X| 20 6C 6F 6E 67 20 28 6C 69 6D 69 74 20 69 73 20 | long (limit is | X| 31 30 30 29 0A 20 20 20 20 20 20 20 20 20 31 20 | 100). 1 | X| 20 20 20 20 20 20 20 20 32 20 20 20 20 20 20 20 | 2 | X| 20 20 33 20 20 20 20 20 20 20 20 20 34 20 20 20 | 3 4 | X| 20 20 20 20 20 20 35 20 20 20 20 20 20 20 20 20 | 5 | X| 36 20 20 20 20 20 20 20 20 20 37 20 20 20 20 20 | 6 7 | X| 20 20 20 20 38 20 20 20 20 20 20 20 20 20 39 20 | 8 9 | X| 20 20 20 20 20 20 20 20 31 0A 40 70 20 34 35 36 | 1.@p 456 | X| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | X| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | X| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | X| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | X| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | X| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 0A 40 | 78901234567890.@ | X| 70 20 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | p 45678901234567 | X| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 | X| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 | X| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 | X| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 | X| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 | X| 38 39 30 31 0A 40 74 20 34 35 36 37 38 39 30 31 | 8901.@t 45678901 | X| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 | X| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 | X| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 | X| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 | X| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 | X| 32 33 34 35 36 37 38 39 30 0A 40 74 20 34 35 36 | 234567890.@t 456 | X| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 | X| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 | X| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 | X| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 | X| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 | X| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 0A | 789012345678901. | X| 0A 34 2E 20 54 65 73 74 20 76 61 72 69 6F 75 73 | .4. Test various | X| 20 64 69 66 66 65 72 65 6E 74 20 70 72 61 67 6D | different pragm | X| 61 20 6C 69 6E 65 73 2E 0A 40 70 20 24 23 25 40 | a lines..@p $#%@ | X| 20 32 35 32 35 20 20 73 6C 6F 74 68 0A 40 74 20 | 2525 sloth.@t | X| 24 23 25 40 20 32 35 32 35 20 20 73 6C 6F 74 68 | $#%@ 2525 sloth | X| 0A 0A 35 2E 20 54 65 73 74 20 70 72 61 67 6D 61 | ..5. Test pragma | X| 20 77 69 74 68 20 6E 6F 20 61 72 67 75 6D 65 6E | with no argumen | X| 74 73 2E 20 28 57 69 6C 6C 20 67 65 74 20 61 20 | ts. (Will get a | X| 74 72 61 69 6C 69 6E 67 20 62 6C 61 6E 6B 73 20 | trailing blanks | X| 65 72 72 6F 72 2E 29 2E 0A 40 70 20 20 20 20 0A | error.)..@p . | X| 40 74 20 20 20 20 0A 0A 36 2E 20 54 65 73 74 20 | @t ..6. Test | X| 70 72 61 67 6D 61 20 77 69 74 68 20 74 6F 6F 20 | pragma with too | X| 6D 61 6E 79 20 61 72 67 75 6D 65 6E 74 73 2E 0A | many arguments.. | X| 40 70 20 61 20 62 20 63 20 64 20 65 20 66 20 67 | @p a b c d e f g | X| 20 68 20 69 20 6A 20 6B 20 6C 20 6D 20 6E 20 6F | h i j k l m n o | X| 20 70 20 71 20 72 20 73 20 74 20 75 20 76 20 77 | p q r s t u v w | X| 20 78 20 79 20 7A 0A 40 74 20 61 20 62 20 63 20 | x y z.@t a b c | X| 64 20 65 20 66 20 67 20 68 20 69 20 6A 20 6B 20 | d e f g h i j k | X| 6C 20 6D 20 6E 20 6F 20 70 20 71 20 72 20 73 20 | l m n o p q r s | X| 74 20 75 20 76 20 77 20 78 20 79 20 7A 0A 0A | t u v w x y z.. | X+-------------------------------------------------+------------------+ X X X=========================== Start of LINE LIST DUMP ============================ X Globl Local| Text X-----------+-------------------------------------------------------------------- X00001 00001| SC21: Test generic syntax checking of pragmas and typesetter directives.<010> X00002 00002| <010> X00003 00003| 1. Test pragma not at the start of line.<010> X00004 00004| @p<010> X00005 00005| @t<010> X00006 00006| <010> X00007 00007| 2. Test character following <special>p is not a blank.<010> X00008 00008| @px<010> X00009 00009| @tx<010> X00010 00010| @p<010> X00011 00011| @t<010> X00012 00012| <010> X00013 00013| 3. Test pragma line is too long (limit is 100)<010> X00014 00014| 1 2 3 4 5 6 7 8 9 1<010> X00015 00015| @p 4567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890<010> X00016 00016| @p 45678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901<010> X00017 00017| @t 4567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890<010> X00018 00018| @t 45678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901<010> X00019 00019| <010> X00020 00020| 4. Test various different pragma lines.<010> X00021 00021| @p $#%@ 2525 sloth<010> X00022 00022| @t $#%@ 2525 sloth<010> X00023 00023| <010> X00024 00024| 5. Test pragma with no arguments. (Will get a trailing blanks error.).<010> X00025 00025| @p <010> X00026 00026| @t <010> X00027 00027| <010> X00028 00028| 6. Test pragma with too many arguments.<010> X00029 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> X00030 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> X00031 00031| <010> X00032 00032| <End-Of-File><010> X-----------+-------------------------------------------------------------------- Globl Local| Text X X============================ End of LINE LIST DUMP ============================= X X X=========================== Start of TOKEN LIST DUMP =========================== X Summary: There are 9 tokens in the token list. X Line[Column]: Token Description X------------------------------- X X0001[01]: Text. Text scrap[Grey]="SC21: Test generic syntax checking of pragmas and typesetter directives.<010> X<010> X1. Test pragma not at the start of line.<010> X " X0005[01]: Text. Text scrap[White]=" " X0006[01]: Text. Text scrap[Grey]="<010> X2. Test character following <special>p is not a blank.<010> X" X0012[01]: Text. Text scrap[Grey]="<010> X3. Test pragma line is too long (limit is 100)<010> X 1 2 3 4 5 6 7 8 9 1<010> X" X0019[01]: Text. Text scrap[Grey]="<010> X4. Test various different pragma lines.<010> X" X0023[01]: Text. Text scrap[Grey]="<010> X5. Test pragma with no arguments. (Will get a trailing blanks error.).<010> X" X0027[01]: Text. Text scrap[Grey]="<010> X6. Test pragma with too many arguments.<010> X" X0031[01]: Text. Text scrap[White]="<010> X" X0032[01]: End Of File. X============================ End of TOKEN LIST DUMP ============================ X Macro table dump skipped (Parser was not invoked). Document list dump skipped (Parser was not invoked). X Global Local| Input File X------------+------------------------------------------------------------------- X 1 1| SC21: Test generic syntax checking of pragmas and typesetter directives. X 2 2| X 3 3| 1. Test pragma not at the start of line. X 4 4| @p X Error|....^Pragma sequence @p must be at the start of a line. X |....^The rest of this line will be ignored. X Error|....^Unrecognised pragma. Possible legal pragmas are: X |....^ @p indentation = none | blank X |....^ @p maximum_input_line_length = <num>|infinity X |....^ @p maximum_output_line_length = <num>|infinity X |....^ @p typesetter = none | tex X |....^The blanks between arguments are important. X |....^Pragma ignored. X 5 5| @t X Error|....^Typesetter directive @t must be at the start of a line. X |....^The rest of this line will be ignored. X Error|....^Unrecognised typesetter directive. Legal ones are: X |....^ @t new_page X |....^ @t table_of_contents X |....^ @t title <font> <align> <string> X |....^ @t vskip <num> mm X |....^The blanks between arguments are important. X |....^Typesetter directive ignored. X 6 6| X 7 7| 2. Test character following <special>p is not a blank. X 8 8| @px X Error|.^Pragma sequence @p must be followed by a blank. X Error|.^Unrecognised pragma. Possible legal pragmas are: X |.^ @p indentation = none | blank X |.^ @p maximum_input_line_length = <num>|infinity X |.^ @p maximum_output_line_length = <num>|infinity X |.^ @p typesetter = none | tex X |.^The blanks between arguments are important. X |.^Pragma ignored. X 9 9| @tx X Error|.^Typesetter directive @t must be followed by a blank. X Error|.^Unrecognised typesetter directive. Legal ones are: X |.^ @t new_page X |.^ @t table_of_contents X |.^ @t title <font> <align> <string> X |.^ @t vskip <num> mm X |.^The blanks between arguments are important. X |.^Typesetter directive ignored. X 10 10| @p X Error|.^Pragma sequence @p must be followed by a blank. X Error|.^Unrecognised pragma. Possible legal pragmas are: X |.^ @p indentation = none | blank X |.^ @p maximum_input_line_length = <num>|infinity X |.^ @p maximum_output_line_length = <num>|infinity X |.^ @p typesetter = none | tex X |.^The blanks between arguments are important. X |.^Pragma ignored. X 11 11| @t X Error|.^Typesetter directive @t must be followed by a blank. X Error|.^Unrecognised typesetter directive. Legal ones are: X |.^ @t new_page X |.^ @t table_of_contents X |.^ @t title <font> <align> <string> X |.^ @t vskip <num> mm X |.^The blanks between arguments are important. X |.^Typesetter directive ignored. X 12 12| X 13 13| 3. Test pragma line is too long (limit is 100) X 14 14| 1 2 3 4 5 6 7 8 9 1 X Error|.................................................................................^Input line is too long (this character is the first offender). X |.................................................................................^Currently, the maximum allowable input line length is 80. X |.................................................................................^Note: You can change this using a pragma directive (@p). X 15 15| @p 4567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 X Error|.^Unrecognised pragma. Possible legal pragmas are: X |.^ @p indentation = none | blank X |.^ @p maximum_input_line_length = <num>|infinity X |.^ @p maximum_output_line_length = <num>|infinity X |.^ @p typesetter = none | tex X |.^The blanks between arguments are important. X |.^Pragma ignored. X Error|.................................................................................^Input line is too long (this character is the first offender). X |.................................................................................^Currently, the maximum allowable input line length is 80. X |.................................................................................^Note: You can change this using a pragma directive (@p). X 16 16| @p 45678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901 X Error|.^This pragma line is too long. X |.^The maximum pragma line length is 100 characters. X Error|.^Unrecognised pragma. Possible legal pragmas are: X |.^ @p indentation = none | blank X |.^ @p maximum_input_line_length = <num>|infinity X |.^ @p maximum_output_line_length = <num>|infinity X |.^ @p typesetter = none | tex X |.^The blanks between arguments are important. X |.^Pragma ignored. X Error|.................................................................................^Input line is too long (this character is the first offender). X |.................................................................................^Currently, the maximum allowable input line length is 80. X |.................................................................................^Note: You can change this using a pragma directive (@p). X 17 17| @t 4567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 X Error|.^Unrecognised typesetter directive. Legal ones are: X |.^ @t new_page X |.^ @t table_of_contents X |.^ @t title <font> <align> <string> X |.^ @t vskip <num> mm X |.^The blanks between arguments are important. X |.^Typesetter directive ignored. X Error|.................................................................................^Input line is too long (this character is the first offender). X |.................................................................................^Currently, the maximum allowable input line length is 80. X |.................................................................................^Note: You can change this using a pragma directive (@p). X 18 18| @t 45678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901 X Error|.^This typestter directive line is too long. X |.^The maximum typesetter directive line length is 100 characters. X Error|.^Unrecognised typesetter directive. Legal ones are: X |.^ @t new_page X |.^ @t table_of_contents X |.^ @t title <font> <align> <string> X |.^ @t vskip <num> mm X |.^The blanks between arguments are important. X |.^Typesetter directive ignored. X Error|.................................................................................^Input line is too long (this character is the first offender). X |.................................................................................^Currently, the maximum allowable input line length is 80. X |.................................................................................^Note: You can change this using a pragma directive (@p). X 19 19| X 20 20| 4. Test various different pragma lines. X 21 21| @p $#%@ 2525 sloth X Error|.^Unrecognised pragma. Possible legal pragmas are: X |.^ @p indentation = none | blank X |.^ @p maximum_input_line_length = <num>|infinity X |.^ @p maximum_output_line_length = <num>|infinity X |.^ @p typesetter = none | tex X |.^The blanks between arguments are important. X |.^Pragma ignored. X 22 22| @t $#%@ 2525 sloth X Error|.^Unrecognised typesetter directive. Legal ones are: X |.^ @t new_page X |.^ @t table_of_contents X |.^ @t title <font> <align> <string> X |.^ @t vskip <num> mm X |.^The blanks between arguments are important. X |.^Typesetter directive ignored. X 23 23| X 24 24| 5. Test pragma with no arguments. (Will get a trailing blanks error.). X 25 25| @p X Error|.^Pragma sequence @p must be followed by a keyword. X Error|.^Unrecognised pragma. Possible legal pragmas are: X |.^ @p indentation = none | blank X |.^ @p maximum_input_line_length = <num>|infinity X |.^ @p maximum_output_line_length = <num>|infinity X |.^ @p typesetter = none | tex X |.^The blanks between arguments are important. X |.^Pragma ignored. X Warning|......^Line has trailing spaces up to and including this space. X 26 26| @t X Error|.^Typesetter directive @t must be followed by a keyword. X Error|.^Unrecognised typesetter directive. Legal ones are: X |.^ @t new_page X |.^ @t table_of_contents X |.^ @t title <font> <align> <string> X |.^ @t vskip <num> mm X |.^The blanks between arguments are important. X |.^Typesetter directive ignored. X Warning|......^Line has trailing spaces up to and including this space. X 27 27| X 28 28| 6. Test pragma with too many arguments. X 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 X Error|.^Unrecognised pragma. Possible legal pragmas are: X |.^ @p indentation = none | blank X |.^ @p maximum_input_line_length = <num>|infinity X |.^ @p maximum_output_line_length = <num>|infinity X |.^ @p typesetter = none | tex X |.^The blanks between arguments are important. X |.^Pragma ignored. X 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 X Error|.^Unrecognised typesetter directive. Legal ones are: X |.^ @t new_page X |.^ @t table_of_contents X |.^ @t title <font> <align> <string> X |.^ @t vskip <num> mm X |.^The blanks between arguments are important. X |.^Typesetter directive ignored. X 31 31| X | <End-Of-File> X------------+------------------------------------------------------------------- X There were 31 Errors and 2 Warnings. END_OF_FILE if test 19255 -ne `wc -c <'answers/sc21.lis'`; then echo shar: \"'answers/sc21.lis'\" unpacked with wrong size! fi # end of 'answers/sc21.lis' fi if test -f 'userman/u_manual.aux' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'userman/u_manual.aux'\" else echo shar: Extracting \"'userman/u_manual.aux'\" \(19933 characters\) sed "s/^X//" >'userman/u_manual.aux' <<'END_OF_FILE' X\relax X\@writefile{toc}{\string\contentsline\space {chapter}{Preface}{9}} X\@writefile{toc}{\string\contentsline\space {chapter}{Acknowledgements}{11}} X\@writefile{toc}{\string\contentsline\space {chapter}{Presentation Notes}{13}} X\@writefile{toc}{\string\contentsline\space {chapter}{\string\numberline\space {1}A Tutorial Introduction}{15}} X\@writefile{lof}{\string\addvspace\space {10pt}} X\@writefile{lot}{\string\addvspace\space {10pt}} X\newlabel{chapintroduction}{{1}{15}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {1.1}What is Literate Programming?}{15}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {1.2}What is FunnelWeb?}{18}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {1.3}The Name FunnelWeb}{19}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {1.4}A FunnelWeb Tutorial}{19}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {1.5}A Hello World Document}{20}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {1.6}Macro Facilities}{22}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.6.1}Simple Macros}{22}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.6.2}Number of Times Called}{23}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.6.3}Indentation}{25}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.6.4}Additive Macros}{26}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.6.5}Parameterized Macros}{28}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.6.6}Macro Expansion}{30}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.6.7}Include Files}{30}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {1.7}Typesetting Facilities}{32}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.7.1}Overview}{32}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.7.2}Typesetter Independence}{34}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.7.3}Hierarchical Structure}{34}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.7.4}Understanding the Printed Documentation}{35}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.7.5}Literals and Emphasis}{37}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.7.6}Adding a Header Page}{37}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.7.7}Comments}{37}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {1.8}A Complete Example}{38}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {1.9}Summary}{39}} X\@writefile{toc}{\string\contentsline\space {chapter}{\string\numberline\space {2}FunnelWeb Hints}{41}} X\@writefile{lof}{\string\addvspace\space {10pt}} X\@writefile{lot}{\string\addvspace\space {10pt}} X\newlabel{chapadvanced}{{2}{41}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {2.1}Macro Names}{41}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {2.2}Quick Names}{42}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {2.3}FunnelWeb the Martinet}{42}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {2.4}Fiddling With End of Lines}{43}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {2.5}Fudging Conditionals}{44}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {2.6}Changing the Strength of Headings}{46}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {2.7}Efficiency Notes}{47}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {2.8}Interactive Mode}{47}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {2.9}Setting Up Default Options}{49}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {2.10}FunnelWeb and Make}{49}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {2.11}The Dangers of FunnelWeb}{50}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {2.12}Wholistic Debugging}{53}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {2.13}Examples of FunnelWeb Applications}{53}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {2.13.1}Analyzing the Monster Postscript Header File}{54}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {2.13.2}Making Ada ADTs more A}{55}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {2.13.3}Multiple Language Systems}{55}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {2.13.4}The Case of the Small Function}{56}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {2.13.5}When Comments are Bad}{57}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {2.13.6}Documents That Share Text}{58}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {2.13.7}Generics}{59}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {2.14}Summary}{62}} X\@writefile{toc}{\string\contentsline\space {chapter}{\string\numberline\space {3}FunnelWeb Definition}{63}} X\@writefile{lof}{\string\addvspace\space {10pt}} X\@writefile{lot}{\string\addvspace\space {10pt}} X\newlabel{chapdefinition}{{3}{63}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3.1}Introduction}{63}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3.2}Notation}{63}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3.3}Terminology}{63}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3.4}An Architectural Overview}{64}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3.5}Diagnostics}{65}} X\newlabel{diagnostics}{{3.5}{65}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3.6}Typesetter Independence}{65}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3.7}Command Line Interface}{66}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.7.1}Invoking FunnelWeb}{66}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.7.2}Command Line Arguments}{67}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.7.3}Options}{68}} X\newlabel{commandlineoptions}{{3.7.3}{68}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3.8}File Name Inheritance}{70}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3.9}FunnelWeb Startup}{70}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3.10}Scanner}{71}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.10.1}Basic Input File Processing}{71}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.10.2}Special Sequences}{72}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.10.3}Setting the Special Character}{74}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.10.4}Inserting the Special Character into the Text}{74}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.10.5}Inserting Arbitrary Characters into the Text}{74}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.10.6}Comments}{75}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.10.7}Quick Names}{76}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.10.8}Inserting End of Line Markers}{76}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.10.9}Suppressing End of Line Markers}{77}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.10.10}Include Files}{77}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.10.11}Pragmas}{78}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.10.11.1}Indentation}{78}} X\newlabel{indentationpragma}{{3.10.11.1}{78}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.10.11.2}Maximum Input Line Length}{79}} X\newlabel{millpragma}{{3.10.11.2}{79}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.10.11.3}Maximum Output File Line Length}{79}} X\newlabel{mollpragma}{{3.10.11.3}{79}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.10.11.4}Typesetter}{80}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.10.12}Freestanding Typesetter Directives}{81}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.10.12.1}New Page}{81}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.10.12.2}Table of Contents}{81}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.10.12.3}Vertical Skip}{81}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.10.12.4}Title}{82}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.10.13}Scanner/Parser Interface}{82}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3.11}Parser}{82}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.11.1}High Level Structure}{82}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.11.2}Free Text}{83}} X\newlabel{typesetterpragma}{{3.11.2}{83}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.11.3}Typesetter Directives}{83}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.11.3.1}Section}{83}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.11.3.2}Literal Directive}{84}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.11.3.3}Emphasis Directive}{85}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.11.4}Macros}{85}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.11.4.1}Names}{86}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.11.4.2}Formal Parameter Lists}{86}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.11.5}Expressions}{86}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.11.6}Macro Calls}{86}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.11.7}Formal Parameters}{87}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.11.8}Macros are Static}{87}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3.12}Analyser}{88}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3.13}Tangle}{88}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3.14}Weave}{89}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.14.1}Target Typesetter}{89}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.14.2}Cross Reference Numbering}{89}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3.15}FunnelWeb Shell}{90}} X\newlabel{commandshell}{{3.15}{90}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.15.1}Introduction}{90}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.15.2}Return Statuses}{90}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.15.3}Command Line Length}{91}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.15.4}String Substitution}{91}} X\newlabel{stringsubstitution}{{3.15.4}{91}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.15.5}How a Command Line is Processed}{92}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.15.6}Options}{92}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.15.7}Shell Commands}{93}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.1}Absent}{93}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.2}Codify}{93}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.3}Compare}{93}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.4}Define}{94}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.5}Diff}{94}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.6}Diffsummary}{95}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.7}Diffzero}{95}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.8}Eneo}{95}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.9}Execute}{96}} X\newlabel{executecommand}{{3.15.7.9}{96}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.10}Exists}{96}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.11}Fixeols}{96}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.12}Fw}{97}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.13}Help}{97}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.14}Here}{98}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.15}Quit}{98}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.16}Set}{98}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.17}Show}{98}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.18}Skipto}{98}} X\newlabel{skiptocommand}{{3.15.7.18}{98}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.19}Status}{99}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.20}Tolerate}{100}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.21}Trace}{100}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.22}Write}{100}} X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.23}Writeu}{100}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3.16}Concluding Remarks}{100}} X\@writefile{toc}{\string\contentsline\space {chapter}{\string\numberline\space {4}FunnelWeb Installation}{101}} X\@writefile{lof}{\string\addvspace\space {10pt}} X\@writefile{lot}{\string\addvspace\space {10pt}} X\newlabel{chapinstall}{{4}{101}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {4.1}Obtaining a Copy of FunnelWeb}{101}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {4.2}Establishing The Directory Tree}{102}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {4.2.1}Admin Directory}{102}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {4.2.2}Answers Directory}{102}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {4.2.3}Hackman Directory}{103}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {4.2.4}Results Directory}{103}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {4.2.5}Scripts Directory}{103}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {4.2.6}Sources Directory}{103}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {4.2.7}Tests Directory}{104}} X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {4.2.8}Userman Directory}{105}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {4.3}Compiling FunnelWeb}{105}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {4.4}Testing FunnelWeb}{105}} X\newlabel{testingfunnelweb}{{4.4}{105}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {4.5}Installing FunnelWeb}{106}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {4.6}Printing Manuals}{107}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {4.7}Installation Problems?}{107}} X\@writefile{toc}{\string\contentsline\space {chapter}{\string\numberline\space {5}FunnelWeb Administration}{109}} X\@writefile{lof}{\string\addvspace\space {10pt}} X\@writefile{lot}{\string\addvspace\space {10pt}} X\newlabel{chapadministration}{{5}{109}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {5.1}Introduction}{109}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {5.2}The User's Commitment To FunnelWeb}{109}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {5.3}Documentation}{110}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {5.4}Registration}{110}} X\newlabel{registration}{{5.4}{110}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {5.5}Support}{110}} X\newlabel{support}{{5.5}{110}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {5.6}Copyright}{112}} X\newlabel{copyright}{{5.6}{112}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {5.7}Nowarranty}{112}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {5.8}Distribution}{113}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {5.9}Modification}{113}} X\newlabel{modification}{{5.9}{113}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {5.10}Versions}{114}} X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {5.11}FTP Archive and Author}{114}} X\newlabel{ftparchive}{{5.11}{114}} X\@writefile{toc}{\string\contentsline\space {chapter}{\string\numberline\space {A}Glossary}{115}} X\@writefile{lof}{\string\addvspace\space {10pt}} X\@writefile{lot}{\string\addvspace\space {10pt}} X\@writefile{toc}{\string\contentsline\space {chapter}{\string\numberline\space {B}References}{117}} X\@writefile{lof}{\string\addvspace\space {10pt}} X\@writefile{lot}{\string\addvspace\space {10pt}} X\@writefile{toc}{\string\contentsline\space {chapter}{Index}{117}} END_OF_FILE if test 19933 -ne `wc -c <'userman/u_manual.aux'`; then echo shar: \"'userman/u_manual.aux'\" unpacked with wrong size! fi # end of 'userman/u_manual.aux' fi echo shar: End of archive 10 \(of 20\). cp /dev/null ark10isdone MISSING="" for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked all 20 archives. rm -f ark[1-9]isdone ark[1-9][0-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0