home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / unix / volume26 / funnlweb / part10 < prev    next >
Encoding:
Text File  |  1993-04-10  |  121.6 KB  |  2,569 lines

  1. Newsgroups: comp.sources.unix
  2. From: ross@spam.adelaide.edu.au (Ross Williams)
  3. Subject: v26i130: funnelweb - a tool for literate programming in C, Part10/20
  4. Sender: unix-sources-moderator@vix.com
  5. Approved: paul@vix.com
  6.  
  7. Submitted-By: ross@spam.adelaide.edu.au (Ross Williams)
  8. Posting-Number: Volume 26, Issue 130
  9. Archive-Name: funnelweb/part10
  10.  
  11. #! /bin/sh
  12. # This is a shell archive.  Remove anything before this line, then unpack
  13. # it by saving it into a file and typing "sh file".  To overwrite existing
  14. # files, type "sh file -c".  You can also feed this as standard input via
  15. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  16. # will see the following message at the end:
  17. #        "End of archive 10 (of 20)."
  18. # Contents:  answers/ex13.tex answers/pr07.lis answers/sc15.lis
  19. #   answers/sc16.lis answers/sc21.lis userman/u_manual.aux
  20. # Wrapped by vixie@gw.home.vix.com on Sun Apr 11 11:00:24 1993
  21. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  22. if test -f 'answers/ex13.tex' -a "${1}" != "-c" ; then 
  23.   echo shar: Will not clobber existing file \"'answers/ex13.tex'\"
  24. else
  25. echo shar: Extracting \"'answers/ex13.tex'\" \(19047 characters\)
  26. sed "s/^X//" >'answers/ex13.tex' <<'END_OF_FILE'
  27. X
  28. X%*******************************************************************************
  29. X%*                    START OF AUTOMATICALLY GENERATED TEX FILE                *
  30. X%*******************************************************************************
  31. X%*                                                                             *
  32. X%* This TeX file was automatically generated by the FunnelWeb preprocessor.    *
  33. X%* You can typeset this file to produce printed documentation by running it    *
  34. X%* through the TeX typesetter using a command such as:                         *
  35. X%*    tex thisfilename                                                         *
  36. X%* The resultant file thisfilename.dvi can be printed using a command such as: *
  37. X%*    lpr -Pcslw -d thisfilename.dvi                                           *
  38. X%*                                                                             *
  39. X%* FunnelWeb is a preprocessor that allows programmers to weave programs and   *
  40. X%* their documentation together in a single document. The FunnelWeb program    *
  41. X%* analyses such documents producing both program files and typeset            *
  42. X%* documentation such as this TeX file.                                        *
  43. X%* FunnelWeb was created by Ross Williams.                                     *
  44. X%*                                                                             *
  45. X%* For more information on FunnelWeb look in the following FTP archive:        *
  46. X%*    Machine  : sirius.itd.adelaide.edu.au [IP=129.127.40.3].                 *
  47. X%*    Directory: ~pub/funnelweb/                                               *
  48. X%*               (or some other appropriately named directory).                *
  49. X%* or email Ross Williams at ross@spam.adelaide.edu.au                         *
  50. X%*                                                                             *
  51. X%*******************************************************************************
  52. X
  53. X
  54. X%===================== Start of FunnelWeb TeX Definitions ======================
  55. X
  56. X
  57. X% Version
  58. X% -------
  59. X% This is FunnelWeb TeX Macro Library Version 1.0.
  60. X
  61. X
  62. X% Copyright
  63. X% ---------
  64. X% This set of FunnelWeb TeX definitions was written by Ross Williams and was
  65. X% originally Copyright (C) 1992 Ross N. Williams.  However, I, Ross Williams,
  66. X% hereby forego any claim to Copyright in this set of FunnelWeb TeX definitions
  67. X% and hereby authorize that the set of TeX definitions pass into the public
  68. X% domain. -- Ross N. Williams, 3:41pm 07-May-1992, Adelaide, Australia.
  69. X
  70. X
  71. X% Modification
  72. X% ------------
  73. X% Please record all modifications to these TeX definitions here. Unless
  74. X% otherwise specified, all modified definitions fall in the public domain too.
  75. X%
  76. X% Programmers:
  77. X%    RNW  Ross N. Williams  ross@spam.adelaide.edu.au
  78. X%
  79. X% Changes:
  80. X%    07-May-1992  RNW  Prepared this work for public domain release.
  81. X%
  82. X
  83. X
  84. X% General Comments
  85. X% ----------------
  86. X% This set of TeX definitions exists for two reasons:
  87. X%
  88. X%    1. To shorten and neaten the FunnelWeb TeX output.
  89. X%    2. To allow users to fiddle with the output format in their input files
  90. X%       (by inserting redefining "\def"s) without having to resort to
  91. X%       modifying the FunnelWeb code.
  92. X%
  93. X% The user is warned that these definitions may be changed from time to time
  94. X% (but probably not much). The user should not be too sneaky. In particular,
  95. X% users wishing to redefine some of these macros should do so in an explicitly
  96. X% defined section at the top of their input file. This will mean that in the
  97. X% event of problems, that section can simply be deleted or commented out to
  98. X% allow the document to at least be typeset in the default format. Users should
  99. X% limit themselves to redefining these macros in such a section and should
  100. X% refrain from using the macros throughout their documents.
  101. X
  102. X
  103. X% Environment Parameters
  104. X% ----------------------
  105. X% \tolerance tells TeX how tolerant it should be about making bad line and
  106. X% page breaks. Here we set it to it's maximum, as
  107. X%   1) Computer programs are likely to cause lots of bad breaks.
  108. X%   2) In most cases the user would probably rather get the TeX file through
  109. X%      TeX without any errors than fiddle with spacings for perfection.
  110. X\tolerance=10000
  111. X
  112. X% I don't like indentation as it makes the page look more busy. Instead,
  113. X% paragraphs are separated by a little space (see next).
  114. X\parindent=0pt
  115. X
  116. X% In many cases, users will produce documents with long runs of paragraphs.
  117. X% In order to space out these paragraphs, it is convenient to maintain a
  118. X% prevailing non-zero \parskip (end-of-paragaph skip). The only trouble is
  119. X% that the skip becomes a problem in macro definitions which require no skip
  120. X% and so we have to turn the skip on and off. The following two macros
  121. X% simplify this process.
  122. X\def\fwparskipon{\parskip=\medskipamount}
  123. X\def\fwparskipoff{\parskip=0pt}
  124. X\fwparskipon
  125. X
  126. X% Setting raggedbottom allows TeX to leave a bit of space at the bottom of the
  127. X% page in order to better vertically align the rest of the page (e.g. skips
  128. X% won't stretch as much). It also means that headings are less likely to be
  129. X% isolated at the bottom of the page without any following text.
  130. X\raggedbottom
  131. X
  132. X
  133. X% Fonts
  134. X% -----
  135. X% Most of the typeset output is set in 10pt roman and 10pt tt font.
  136. X% The major extra font needs spring from titles and headings.
  137. X% For portability's sake we use only the following fonts:
  138. X%    cmr10
  139. X%    cmbx10
  140. X%    cmtt10
  141. X% and some enlargements of them. These fonts are all "standard" fonts
  142. X% in Plain TeX. See The TeXbook p.350.
  143. X\font\fwfontnote=cmr7
  144. X
  145. X\font\fwfontnorm=cmr10
  146. X\font\fwfontnorma=cmr10 scaled \magstep1
  147. X\font\fwfontnormb=cmr10 scaled \magstep2
  148. X
  149. X\font\fwfontbold=cmbx10
  150. X\font\fwfontbolda=cmbx10 scaled \magstep1
  151. X\font\fwfontboldb=cmbx10 scaled \magstep2
  152. X\font\fwfontboldc=cmbx10 scaled \magstep3
  153. X\font\fwfontboldd=cmbx10 scaled \magstep4
  154. X
  155. X
  156. X% Macros for Stylistic Details
  157. X% ----------------------------
  158. X% This section contains all the fiddly little macros for setting the details
  159. X% of each macro definition.
  160. X
  161. X% Macro definitions are sandwiched by calls to these macros which can be used
  162. X% to sort out the spacing before and after the macro definition.
  163. X\def\fwbeginmacro{\fwparskipoff\bigskip}
  164. X\def\fwendmacro{\fwparskipon\par}
  165. X
  166. X% These macros deal with the macro name and definition line.
  167. X\def\fwmacroname#1#2{{\sl #1\/}$\lbrack$#2$\rbrack$}
  168. X\def\fwfilename#1#2{{\bf #1}$\lbrack$#2$\rbrack$}
  169. X\def\fwzero#1{{\bf Z}}
  170. X\def\fwmany#1{{\bf M}}
  171. X\def\fwequals{ $\equiv$}
  172. X\def\fwplusequals{ $+\equiv$}
  173. X
  174. X% Now for the actual body of the definition. It looks nice to have the tt
  175. X% code indented a little. Again, we use macros instead of writing direct TeX,
  176. X% so as to allow the user to fiddle this stuff to taste without having to
  177. X% modify the FunnelWeb C code.
  178. X\def\fwodef{\parindent=15pt\vskip0pt$\lbrace$\parindent=20pt}
  179. X\def\fwcdef{$\rbrace$\vskip0pt\parindent=0pt}
  180. X\def\fwoquote{`}
  181. X\def\fwcquote{'}
  182. X\def\fwoparen{$($}
  183. X\def\fwcomma{$,$}
  184. X\def\fwcparen{$)$}
  185. X\def\fwparam#1{$\diamond #1$}
  186. X\def\fwparams#1{$(\diamond #1)$}
  187. X
  188. X% These macros deal with the notes that are appended at the end of each
  189. X% macro definition. Note that even though \fwisafile,\fwusedin, and \fwseealso
  190. X% have the same definition, they are given different names so as to allow the
  191. X% user to redefine these macros to typeset each kind of information differently
  192. X% if desired.
  193. X\def\fwbeginmacronotes{\begingroup\baselineskip=9pt\smallskip}
  194. X\def\fwnote#1{{\fwfontnote #1}\par}
  195. X\def\fwisafile#1{\fwnote{#1}}
  196. X\def\fwusedin#1{\fwnote{#1}}
  197. X\def\fwseealso#1{\fwnote{#1}}
  198. X\def\fwendmacronotes{\endgroup}
  199. X
  200. X
  201. X% Macros to Typeset Program Code Verbatim
  202. X% ---------------------------------------
  203. X% This is by far the hairiest and most difficult part of the typesetting task
  204. X% because we have to turn off most of TeX's natural instincts in order to
  205. X% typeset the program text exactly as it appears in the input file.
  206. X% Two macros are defined to pull this off: \fwbtx and \fwverbatimgobble.
  207. X% Their code was inspired by the following sections of "The TeXbook":
  208. X%    Appendix D: Dirty Tricks, 3.Verbatim listing, p.380-382.
  209. X%    Appendix E: Example Formats, p.421.
  210. X% The \fwbtx[ (for "FunnelWeb Begin TeXt") macro does most of the hard work.
  211. X% The liberal use of "%" is because I don't understand TeX well enough to
  212. X% understand when an end of line will cause trouble, and I am playing it safe.
  213. X
  214. X% Before defining the main \fwbtx macro, we have to stash away some definitions
  215. X% in the hidden part of TeX's environment. Let's hope that these "hidden"
  216. X% definitions don't affect anything except what is desired to be affected.
  217. X
  218. X% The tt font in which we wish to set the text has two Latin lurking ligatures!
  219. X% These are ?` and !`. To disable them, we define the left quote when ACTIVE
  220. X% to be defined in such a way as to prevent ligatures. The main TeX text will
  221. X% normally not be exposed to this definition because normally the leftquote
  222. X% character is not active. The \fwbtx macro temporarily makes the left quote
  223. X% character active thus activating the deactivation of left quote ligatures.
  224. X% See The TeXbook p.381.
  225. X{\catcode`\`=\active \gdef`{\relax\lq}}
  226. X
  227. X% TeX is fairly carefree about spaces and so we have to make it more serious.
  228. X% To do so we pull the same trick as above, setting up a definition for active
  229. X% space, but only making space active during the span of the verbatim text.
  230. X% In Plain TeX the active space is defined to be simply a space, but here we
  231. X% define it to be a control space. This ensures that the space cannot
  232. X% be gobbled up by one of TeX's mysterious mechanisms when activated.
  233. X% See The TeXbook, p.381 and p.352.
  234. X{\obeyspaces\global\let =\ }
  235. X
  236. X% Here is the main \fwbtx verbatim text macro.
  237. X% Note: The order in which all these pieces of business have to be done is
  238. X% still a partial mystery to me. Don't fiddle with this stuff unless you
  239. X% think you know what you are doing.
  240. X\def\fwbtx[{%
  241. X%
  242. X% The funnies involved in getting verbatim output are safely housed inside
  243. X% this \begingroup, and the \endgroup in \fwverbatimgobble. Groups are used
  244. X% instead of curly braces because we have to be able to signal the end of
  245. X% this macro with a curly brace.
  246. X\begingroup%
  247. X%
  248. X% \pars at the end of empty lines in the verbatim text won't come out normally
  249. X% because TeX is in vertical mode and they get gobbled up. To prevent this,
  250. X% we force \par to exit vertical mode first. See The TeXbook p.381.
  251. X\def\par{\leavevmode\endgraf}%
  252. X%
  253. X% Activate the leftquote character so as to avoid ligatures (see above).
  254. X\catcode`\`=\active%
  255. X%
  256. X% The \obeylines macro simply defines end of line (^M) to be \par. This ensures
  257. X% that TeX will treat each verbatim line as a new paragraph.
  258. X\obeylines%
  259. X%
  260. X% To get verbatim output, we have to desex all the special characters. This
  261. X% is explained in detail in The TeXbook p.380.
  262. X\def\do##1{\catcode`##1=12 }\dospecials%
  263. X%
  264. X% Activate the space character so as to make TeX treat blanks seriously.
  265. X% This activation invokes an eralier definition (see above).
  266. X\obeyspaces
  267. X%
  268. X% Interparagraph skips do not help the cause.
  269. X% Note: We have to preserve the indentation though, as the code is actually
  270. X% indented in the final output. See \fwodef in an earlier section.
  271. X\parskip=0pt%
  272. X%
  273. X% We typeset the verbatim text in tt font (courier on the Macintosh) for a
  274. X% number of reasons:
  275. X%    - tt font has the same horizontal spacing for each character.
  276. X%    - tt font covers the ASCII character set.
  277. X%    - tt font doesn't have many surprises (e.g. ligatures).
  278. X%    - tt font looks much what you might see on a computer terminal screen.
  279. X\tt%
  280. X%
  281. X% Having set up an environment for verbatim, we are ready to use it.
  282. X% By invoking \fwverbatimgobble, this \fwbtx macro gobbles up text verbatim (as
  283. X% part of the parameter of \fwverbatimgobble) until it sees the termination
  284. X% string "]fwetx=" (the "=" was thrown in to add obscurity as this sequence
  285. X% must never occur in the verbatim text).
  286. X\fwverbatimgobble}
  287. X
  288. X% The \fwverbatimgobble macro exists to allow \fwbtx to bracket verbatim text.
  289. X\def\fwverbatimgobble#1]fwetx={#1\endgroup}
  290. X
  291. X
  292. X% Table of Contents
  293. X% -----------------
  294. X% The five levels of table of contents that FunnelWeb supports are identified
  295. X% by the five letters [A..E]. These are used throughout the following macros.
  296. X
  297. X% The following macros are utilities to the TOC macros to follow.
  298. X\def\fwrule{\medskip\hrule\medskip}
  299. X\def\fwqh{\hskip1.5em\relax}
  300. X\def\fwbeforesec{\penalty-200\bigskip\medskip\par}
  301. X
  302. X% The following macros are used to typeset the table of contents.
  303. X\def\fwtocstart#1{\fwrule\leftline{\fwfontbolda Table of Contents}\fwrule}
  304. X\def\fwtoca#1#2{\leftline{{\bf #1 #2}}}
  305. X\def\fwtocb#1#2{\leftline{\fwqh #1 #2}}
  306. X\def\fwtocc#1#2{\leftline{\fwqh\fwqh #1 #2}}
  307. X\def\fwtocd#1#2{\leftline{\fwqh\fwqh\fwqh #1 #2}}
  308. X\def\fwtoce#1#2{\leftline{\fwqh\fwqh\fwqh\fwqh #1 #2}}
  309. X\def\fwtocfinish#1{\fwrule}
  310. X
  311. X% The following "library" macros define five different strengths of headings
  312. X% which can be used later in the section macros.
  313. X\def\fwliba#1#2{\vfill\eject{\fwfontboldc #1 #2}\penalty200\smallskip}
  314. X\def\fwlibb#1#2{\fwbeforesec{\fwfontboldb #1 #2}\penalty200\smallskip}
  315. X\def\fwlibc#1#2{\fwbeforesec{\fwfontnormb #1 #2}\penalty200\smallskip}
  316. X\def\fwlibd#1#2{\fwbeforesec{\bf          #1 #2}\penalty200}
  317. X\def\fwlibe#1#2{\fwbeforesec{\bf          #1 #2}}
  318. X
  319. X% Here are the macros that actually typeset the section headings throughout
  320. X% the document. The fwlib system has been employed so as to easily allow the
  321. X% user to redefine the strengths of headings to taste. For example, the
  322. X% user could insert in the input document a similar set of definitions to these
  323. X% but with the b..e headings set to \fwlibc. This would tone down the output.
  324. X\def\fwseca#1#2{\fwliba{#1}{#2}}
  325. X\def\fwsecb#1#2{\fwlibb{#1}{#2}}
  326. X\def\fwsecc#1#2{\fwlibc{#1}{#2}}
  327. X\def\fwsecd#1#2{\fwlibd{#1}{#2}}
  328. X\def\fwsece#1#2{\fwlibe{#1}{#2}}
  329. X
  330. X
  331. X% Support for Explicit Typesetting
  332. X% --------------------------------
  333. X% FunnelWeb supports pragmas and other constructs that allow
  334. X% typesetter-independent typesetting commands to be given. The
  335. X% following macros support these features.
  336. X
  337. X% The in-text literal @{sloth@} and emphasise @[walrus@] features.
  338. X\def\fwlit#1{{\tt #1}}
  339. X\def\fwemp#1{{\it #1}}
  340. X
  341. X% The "@p new_page" pragma.
  342. X\def\fwnewpage{\vfill\eject}
  343. X
  344. X% The "@p vskip Nmm" pragma.
  345. X\def\fwvskip#1{\null\vskip #1mm}
  346. X
  347. X% The "@p title <font> <align> <text>" pragma.
  348. X\def\fwfontnormal#1{{\fwfontnorm {#1}}}
  349. X\def\fwfonttitle#1{{\fwfontboldd {#1}}}
  350. X\def\fwfontsmalltitle#1{{\fwfontboldb {#1}}}
  351. X\def\fwleftline#1{\leftline{#1}}
  352. X\def\fwcenterline#1{\centerline{#1}}
  353. X\def\fwrightline#1{\rightline{#1}}
  354. X
  355. X
  356. X% Support for Old FunnelWeb
  357. X% -------------------------
  358. X% The following macros were used extensively in the first version of
  359. X% FunnelWeb and are retained so that these older input files will still
  360. X% typeset cleanly.
  361. X\def\p#1{{\tt #1}}  % P for Program text.
  362. X\def\flagpage#1#2{
  363. X   \null
  364. X   \vfill
  365. X   \centerline{\fwfontboldd #1}
  366. X   \vskip 1cm
  367. X   \centerline{\fwfontboldd #2}
  368. X   \vfill
  369. X   \null
  370. X   \vfill
  371. X}
  372. X
  373. X%====================== End of FunnelWeb TeX Definitions =======================
  374. XEX13: This example is used to generate typeset documentation which is
  375. X      discussed in the tutorial in the FunnelWeb user's manual.
  376. X
  377. X
  378. X\fwseca{1}{Table of Contents}
  379. X
  380. X
  381. X\fwtocstart{}
  382. X\fwtoca{1}{Table of Contents}
  383. X\fwtoca{2}{Macros for Moral Support}
  384. X\fwtoca{3}{An Extremely Imperative Stack Abstraction}
  385. X\fwtocb{3.1}{Define the Stack}
  386. X\fwtocb{3.2}{Push the Stack}
  387. X\fwtocb{3.3}{Pop the Stack}
  388. X\fwtocb{3.4}{Rough the Stack Up a Bit}
  389. X\fwtocfinish{}
  390. X
  391. X
  392. X\fwseca{2}{Macros for Moral Support}
  393. X
  394. The following macro contain comments that provide moral support in the
  395. output code.
  396. X
  397. X\fwbeginmacro
  398. X\fwmacroname{Programmer's Cheer}{1}\fwmany{}\fwequals \fwodef \fwbtx[
  399. X-- Shift to the left!
  400. X-- Shift to the right!
  401. X-- Pop up, push down!
  402. X-- Byte! Byte! Byte!
  403. X-- (From "The New Hacker's Dictionary").
  404. X]fwetx=%
  405. X\fwcdef 
  406. X\fwbeginmacronotes
  407. X\fwusedin{This macro is invoked in definitions 6 and 8.}
  408. X\fwendmacronotes
  409. X\fwendmacro
  410. X
  411. X
  412. The next macro is similar but is distributed throughout the program.
  413. X\fwbeginmacro
  414. X\fwmacroname{Hacker's Cheer}{2}\fwplusequals \fwodef \fwbtx[
  415. X-- Pointer to the left
  416. X]fwetx=%
  417. X\fwcdef 
  418. X\fwbeginmacronotes
  419. X\fwseealso{This macro is defined in definitions 2, 3, 5, 7, and 9.}
  420. X\fwusedin{This macro is invoked in definition 10.}
  421. X\fwendmacronotes
  422. X\fwendmacro
  423. X
  424. X
  425. X\fwseca{3}{An Extremely Imperative Stack Abstraction}
  426. X
  427. X\fwsecb{3.1}{Define the Stack}
  428. X\fwbeginmacro
  429. X\fwmacroname{Hacker's Cheer}{3}\fwplusequals \fwodef \fwbtx[-- Pointer to the right
  430. X]fwetx=%
  431. X\fwcdef 
  432. X\fwbeginmacronotes
  433. X\fwseealso{This macro is defined in definitions 2, 3, 5, 7, and 9.}
  434. X\fwusedin{This macro is invoked in definition 10.}
  435. X\fwendmacronotes
  436. X\fwendmacro
  437. X
  438. X\fwbeginmacro
  439. X\fwmacroname{Stack Type}{4}\fwzero{}\fwequals \fwodef \fwbtx[type stack = record ... end;]fwetx=%
  440. X\fwcdef 
  441. X\fwbeginmacronotes
  442. X\fwusedin{This macro is NEVER invoked.}
  443. X\fwendmacronotes
  444. X\fwendmacro
  445. X
  446. X
  447. X\fwsecb{3.2}{Push the Stack}
  448. X\fwbeginmacro
  449. X\fwmacroname{Hacker's Cheer}{5}\fwplusequals \fwodef \fwbtx[-- Hack that code
  450. X]fwetx=%
  451. X\fwcdef 
  452. X\fwbeginmacronotes
  453. X\fwseealso{This macro is defined in definitions 2, 3, 5, 7, and 9.}
  454. X\fwusedin{This macro is invoked in definition 10.}
  455. X\fwendmacronotes
  456. X\fwendmacro
  457. X
  458. X\fwbeginmacro
  459. X\fwmacroname{Push Procedure}{6}\fwzero{}\fwequals \fwodef \fwbtx[procedure push(var b:stack; v:value); ]fwetx=%
  460. X\fwmacroname{Programmer's Cheer}{1}\fwbtx[ {...}]fwetx=%
  461. X\fwcdef 
  462. X\fwbeginmacronotes
  463. X\fwusedin{This macro is NEVER invoked.}
  464. X\fwendmacronotes
  465. X\fwendmacro
  466. X
  467. X
  468. X\fwsecb{3.3}{Pop the Stack}
  469. X\fwbeginmacro
  470. X\fwmacroname{Hacker's Cheer}{7}\fwplusequals \fwodef \fwbtx[-- Tight! Tight! Tight!
  471. X]fwetx=%
  472. X\fwcdef 
  473. X\fwbeginmacronotes
  474. X\fwseealso{This macro is defined in definitions 2, 3, 5, 7, and 9.}
  475. X\fwusedin{This macro is invoked in definition 10.}
  476. X\fwendmacronotes
  477. X\fwendmacro
  478. X
  479. X\fwbeginmacro
  480. X\fwmacroname{Pop Procedure}{8}\fwzero{}\fwequals \fwodef \fwbtx[procedure pop(var b:stack); ]fwetx=%
  481. X\fwmacroname{Programmer's Cheer}{1}\fwbtx[ {...}]fwetx=%
  482. X\fwcdef 
  483. X\fwbeginmacronotes
  484. X\fwusedin{This macro is NEVER invoked.}
  485. X\fwendmacronotes
  486. X\fwendmacro
  487. X
  488. X
  489. X\fwsecb{3.4}{Rough the Stack Up a Bit}
  490. X\fwbeginmacro
  491. X\fwmacroname{Hacker's Cheer}{9}\fwplusequals \fwodef \fwbtx[-- (RNW, 04-Jan-1991).
  492. X]fwetx=%
  493. X\fwcdef 
  494. X\fwbeginmacronotes
  495. X\fwseealso{This macro is defined in definitions 2, 3, 5, 7, and 9.}
  496. X\fwusedin{This macro is invoked in definition 10.}
  497. X\fwendmacronotes
  498. X\fwendmacro
  499. X
  500. X\fwbeginmacro
  501. X\fwmacroname{Rough Procedure}{10}\fwzero{}\fwequals \fwodef \fwbtx[procedure rough(var b:stack); ]fwetx=%
  502. X\fwmacroname{Hacker's Cheer}{2}\fwbtx[ {...}]fwetx=%
  503. X\fwcdef 
  504. X\fwbeginmacronotes
  505. X\fwusedin{This macro is NEVER invoked.}
  506. X\fwendmacronotes
  507. X\fwendmacro
  508. X
  509. X
  510. X\fwbeginmacro
  511. X\fwfilename{dummy.txt}{11}\fwequals \fwodef \fwbtx[dummy
  512. X]fwetx=%
  513. X\fwcdef 
  514. X\fwbeginmacronotes
  515. X\fwisafile{This macro is attached to an output file.}
  516. X\fwendmacronotes
  517. X\fwendmacro
  518. X
  519. X\bye
  520. X
  521. X
  522. X%*******************************************************************************
  523. X%*                    END OF AUTOMATICALLY GENERATED TEX FILE                  *
  524. X%*******************************************************************************
  525. X
  526. END_OF_FILE
  527. if test 19047 -ne `wc -c <'answers/ex13.tex'`; then
  528.     echo shar: \"'answers/ex13.tex'\" unpacked with wrong size!
  529. fi
  530. # end of 'answers/ex13.tex'
  531. fi
  532. if test -f 'answers/pr07.lis' -a "${1}" != "-c" ; then 
  533.   echo shar: Will not clobber existing file \"'answers/pr07.lis'\"
  534. else
  535. echo shar: Extracting \"'answers/pr07.lis'\" \(20255 characters\)
  536. sed "s/^X//" >'answers/pr07.lis' <<'END_OF_FILE'
  537. XFUNNELWEB LISTING FILE
  538. X======================
  539. X
  540. Dump of mapped file "<<Suppressed>>".
  541. X
  542. MEMORY DUMP OF MAPPED FILE
  543. X==========================
  544. X
  545. X+-------------------------------------------------+------------------+
  546. X| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
  547. X+-------------------------------------------------+------------------+
  548. X| 50 52 30 37 3A 20 54 65 73 74 20 74 68 65 20 70 | PR07: Test the p |
  549. X| 61 72 73 69 6E 67 20 6F 66 20 3D 3D 20 61 6E 64 | arsing of == and |
  550. X| 20 2B 3D 20 69 6E 20 6D 61 63 72 6F 20 64 65 66 |  += in macro def |
  551. X| 69 6E 69 74 69 6F 6E 73 2E 0A 0A 54 72 69 70 20 | initions...Trip  |
  552. X| 74 68 65 20 70 61 72 73 65 72 20 73 6F 20 77 65 | the parser so we |
  553. X| 20 64 6F 6E 27 74 20 67 65 74 20 61 6E 79 20 66 |  don't get any f |
  554. X| 75 72 74 68 65 72 2E 0A 40 3E 0A 0A 31 2E 20 54 | urther..@>..1. T |
  555. X| 65 73 74 20 77 69 74 68 20 6E 6F 20 65 71 75 61 | est with no equa |
  556. X| 6C 73 2E 0A 40 24 40 3C 53 6C 6F 74 68 40 3E 40 | ls..@$@<Sloth@>@ |
  557. X| 7B 4E 6F 20 65 71 75 61 6C 73 20 69 6E 20 74 68 | {No equals in th |
  558. X| 69 73 20 6D 61 63 72 6F 20 64 65 66 69 6E 69 74 | is macro definit |
  559. X| 69 6F 6E 2E 40 7D 0A 0A 32 2E 20 54 65 73 74 20 | ion.@}..2. Test  |
  560. X| 77 69 74 68 20 3D 3D 2E 0A 40 24 40 3C 53 6C 6F | with ==..@$@<Slo |
  561. X| 74 68 20 77 69 74 68 20 65 71 75 61 6C 73 40 3E | th with equals@> |
  562. X| 3D 3D 40 7B 4E 6F 20 65 71 75 61 6C 73 20 69 6E | ==@{No equals in |
  563. X| 20 74 68 69 73 20 6D 61 63 72 6F 20 64 65 66 69 |  this macro defi |
  564. X| 6E 69 74 69 6F 6E 2E 40 7D 0A 0A 33 2E 20 54 65 | nition.@}..3. Te |
  565. X| 73 74 20 77 69 74 68 20 2B 3D 2E 0A 40 24 40 3C | st with +=..@$@< |
  566. X| 53 6C 6F 74 68 20 77 69 74 68 20 70 6C 75 73 40 | Sloth with plus@ |
  567. X| 3E 2B 3D 40 7B 4E 6F 20 65 71 75 61 6C 73 20 69 | >+=@{No equals i |
  568. X| 6E 20 74 68 69 73 20 6D 61 63 72 6F 20 64 65 66 | n this macro def |
  569. X| 69 6E 69 74 69 6F 6E 2E 40 7D 0A 0A 34 2E 20 54 | inition.@}..4. T |
  570. X| 65 73 74 20 77 69 74 68 20 73 79 6E 74 61 78 20 | est with syntax  |
  571. X| 65 72 72 6F 72 73 2E 0A 0A 40 24 40 3C 45 72 72 | errors...@$@<Err |
  572. X| 6F 72 31 40 3E 2B 2B 40 7B 4E 6F 20 65 71 75 61 | or1@>++@{No equa |
  573. X| 6C 73 20 69 6E 20 74 68 69 73 20 6D 61 63 72 6F | ls in this macro |
  574. X| 20 64 65 66 69 6E 69 74 69 6F 6E 2E 40 7D 0A 40 |  definition.@}.@ |
  575. X| 41 40 3C 45 72 72 6F 72 20 72 65 63 6F 76 65 72 | A@<Error recover |
  576. X| 79 20 70 6F 69 6E 74 40 3E 0A 0A 40 24 40 3C 45 | y point@>..@$@<E |
  577. X| 72 72 6F 72 32 40 3E 40 2B 3D 40 7B 4E 6F 20 65 | rror2@>@+=@{No e |
  578. X| 71 75 61 6C 73 20 69 6E 20 74 68 69 73 20 6D 61 | quals in this ma |
  579. X| 63 72 6F 20 64 65 66 69 6E 69 74 69 6F 6E 2E 40 | cro definition.@ |
  580. X| 7D 0A 40 41 40 3C 45 72 72 6F 72 20 72 65 63 6F | }.@A@<Error reco |
  581. X| 76 65 72 79 20 70 6F 69 6E 74 40 3E 0A 0A 40 24 | very point@>..@$ |
  582. X| 40 3C 45 72 72 6F 72 33 40 3E 2B 3D 3D 2B 40 7B | @<Error3@>+==+@{ |
  583. X| 4E 6F 20 65 71 75 61 6C 73 20 69 6E 20 74 68 69 | No equals in thi |
  584. X| 73 20 6D 61 63 72 6F 20 64 65 66 69 6E 69 74 69 | s macro definiti |
  585. X| 6F 6E 2E 40 7D 0A 40 41 40 3C 45 72 72 6F 72 20 | on.@}.@A@<Error  |
  586. X| 72 65 63 6F 76 65 72 79 20 70 6F 69 6E 74 40 3E | recovery point@> |
  587. X| 0A 0A 40 24 40 3C 45 72 72 6F 72 34 40 3E 3D 2B | ..@$@<Error4@>=+ |
  588. X| 40 7B 4E 6F 20 65 71 75 61 6C 73 20 69 6E 20 74 | @{No equals in t |
  589. X| 68 69 73 20 6D 61 63 72 6F 20 64 65 66 69 6E 69 | his macro defini |
  590. X| 74 69 6F 6E 2E 40 7D 0A 40 41 40 3C 45 72 72 6F | tion.@}.@A@<Erro |
  591. X| 72 20 72 65 63 6F 76 65 72 79 20 70 6F 69 6E 74 | r recovery point |
  592. X| 40 3E 0A 0A 40 24 40 3C 45 72 72 6F 72 34 40 3E | @>..@$@<Error4@> |
  593. X| 40 3D 40 3D 40 7B 4E 6F 20 65 71 75 61 6C 73 20 | @=@=@{No equals  |
  594. X| 69 6E 20 74 68 69 73 20 6D 61 63 72 6F 20 64 65 | in this macro de |
  595. X| 66 69 6E 69 74 69 6F 6E 2E 40 7D 0A 40 41 40 3C | finition.@}.@A@< |
  596. X| 45 72 72 6F 72 20 72 65 63 6F 76 65 72 79 20 70 | Error recovery p |
  597. X| 6F 69 6E 74 40 3E 0A 0A 40 24 40 3C 45 72 72 6F | oint@>..@$@<Erro |
  598. X| 72 34 40 3E 40 2B 40 3D 40 7B 4E 6F 20 65 71 75 | r4@>@+@=@{No equ |
  599. X| 61 6C 73 20 69 6E 20 74 68 69 73 20 6D 61 63 72 | als in this macr |
  600. X| 6F 20 64 65 66 69 6E 69 74 69 6F 6E 2E 40 7D 0A | o definition.@}. |
  601. X| 40 41 40 3C 45 72 72 6F 72 20 72 65 63 6F 76 65 | @A@<Error recove |
  602. X| 72 79 20 70 6F 69 6E 74 40 3E 0A 0A 0A 0A       | ry point@>....   |
  603. X+-------------------------------------------------+------------------+
  604. X
  605. X
  606. X=========================== Start of LINE LIST DUMP ============================
  607. X
  608. Globl Local| Text
  609. X-----------+--------------------------------------------------------------------
  610. X00001 00001| PR07: Test the parsing of == and += in macro definitions.<010>
  611. X00002 00002| <010>
  612. X00003 00003| Trip the parser so we don't get any further.<010>
  613. X00004 00004| @><010>
  614. X00005 00005| <010>
  615. X00006 00006| 1. Test with no equals.<010>
  616. X00007 00007| @$@<Sloth@>@{No equals in this macro definition.@}<010>
  617. X00008 00008| <010>
  618. X00009 00009| 2. Test with ==.<010>
  619. X00010 00010| @$@<Sloth with equals@>==@{No equals in this macro definition.@}<010>
  620. X00011 00011| <010>
  621. X00012 00012| 3. Test with +=.<010>
  622. X00013 00013| @$@<Sloth with plus@>+=@{No equals in this macro definition.@}<010>
  623. X00014 00014| <010>
  624. X00015 00015| 4. Test with syntax errors.<010>
  625. X00016 00016| <010>
  626. X00017 00017| @$@<Error1@>++@{No equals in this macro definition.@}<010>
  627. X00018 00018| @A@<Error recovery point@><010>
  628. X00019 00019| <010>
  629. X00020 00020| @$@<Error2@>@+=@{No equals in this macro definition.@}<010>
  630. X00021 00021| @A@<Error recovery point@><010>
  631. X00022 00022| <010>
  632. X00023 00023| @$@<Error3@>+==+@{No equals in this macro definition.@}<010>
  633. X00024 00024| @A@<Error recovery point@><010>
  634. X00025 00025| <010>
  635. X00026 00026| @$@<Error4@>=+@{No equals in this macro definition.@}<010>
  636. X00027 00027| @A@<Error recovery point@><010>
  637. X00028 00028| <010>
  638. X00029 00029| @$@<Error4@>@=@=@{No equals in this macro definition.@}<010>
  639. X00030 00030| @A@<Error recovery point@><010>
  640. X00031 00031| <010>
  641. X00032 00032| @$@<Error4@>@+@=@{No equals in this macro definition.@}<010>
  642. X00033 00033| @A@<Error recovery point@><010>
  643. X00034 00034| <010>
  644. X00035 00035| <010>
  645. X00036 00036| <010>
  646. X00037 00037| <End-Of-File><010>
  647. X-----------+--------------------------------------------------------------------
  648. Globl Local| Text
  649. X
  650. X============================ End of LINE LIST DUMP =============================
  651. X
  652. X
  653. X=========================== Start of TOKEN LIST DUMP ===========================
  654. X
  655. Summary: There are 114 tokens in the token list.
  656. X
  657. Line[Column]: Token Description
  658. X-------------------------------
  659. X
  660. X0001[01]: Text. Text scrap[Grey]="PR07: Test the parsing of == and += in macro definitions.<010>
  661. X<010>
  662. Trip the parser so we don't get any further.<010>
  663. X"
  664. X0004[01]: @> Close name. 
  665. X0004[03]: Text. Text scrap[Grey]="<010>
  666. X<010>
  667. X1. Test with no equals.<010>
  668. X"
  669. X0007[01]: @$ Macro defn. 
  670. X0007[03]: @< Open name. 
  671. X0007[05]: Text. Text scrap[Grey]="Sloth"
  672. X0007[10]: @> Close name. 
  673. X0007[12]: @{ Open defn. 
  674. X0007[14]: Text. Text scrap[Grey]="No equals in this macro definition."
  675. X0007[49]: @} Close defn. 
  676. X0007[51]: Text. Text scrap[Grey]="<010>
  677. X<010>
  678. X2. Test with ==.<010>
  679. X"
  680. X0010[01]: @$ Macro defn. 
  681. X0010[03]: @< Open name. 
  682. X0010[05]: Text. Text scrap[Grey]="Sloth with equals"
  683. X0010[22]: @> Close name. 
  684. X0010[24]: Text. Text scrap[Grey]="=="
  685. X0010[26]: @{ Open defn. 
  686. X0010[28]: Text. Text scrap[Grey]="No equals in this macro definition."
  687. X0010[63]: @} Close defn. 
  688. X0010[65]: Text. Text scrap[Grey]="<010>
  689. X<010>
  690. X3. Test with +=.<010>
  691. X"
  692. X0013[01]: @$ Macro defn. 
  693. X0013[03]: @< Open name. 
  694. X0013[05]: Text. Text scrap[Grey]="Sloth with plus"
  695. X0013[20]: @> Close name. 
  696. X0013[22]: Text. Text scrap[Grey]="+="
  697. X0013[24]: @{ Open defn. 
  698. X0013[26]: Text. Text scrap[Grey]="No equals in this macro definition."
  699. X0013[61]: @} Close defn. 
  700. X0013[63]: Text. Text scrap[Grey]="<010>
  701. X<010>
  702. X4. Test with syntax errors.<010>
  703. X<010>
  704. X"
  705. X0017[01]: @$ Macro defn. 
  706. X0017[03]: @< Open name. 
  707. X0017[05]: Text. Text scrap[Grey]="Error1"
  708. X0017[11]: @> Close name. 
  709. X0017[13]: Text. Text scrap[Grey]="++"
  710. X0017[15]: @{ Open defn. 
  711. X0017[17]: Text. Text scrap[Grey]="No equals in this macro definition."
  712. X0017[52]: @} Close defn. 
  713. X0017[54]: Text. Text scrap[White]="<010>
  714. X"
  715. X0018[01]: @A New section (Level 1). 
  716. X0018[03]: @< Open name. 
  717. X0018[05]: Text. Text scrap[Grey]="Error recovery point"
  718. X0018[25]: @> Close name. 
  719. X0018[27]: Text. Text scrap[White]="<010>
  720. X<010>
  721. X"
  722. X0020[01]: @$ Macro defn. 
  723. X0020[03]: @< Open name. 
  724. X0020[05]: Text. Text scrap[Grey]="Error2"
  725. X0020[11]: @> Close name. 
  726. X0020[13]: Text. Text scrap[White]="<010>
  727. X"
  728. X0020[15]: Text. Text scrap[Grey]="="
  729. X0020[16]: @{ Open defn. 
  730. X0020[18]: Text. Text scrap[Grey]="No equals in this macro definition."
  731. X0020[53]: @} Close defn. 
  732. X0020[55]: Text. Text scrap[White]="<010>
  733. X"
  734. X0021[01]: @A New section (Level 1). 
  735. X0021[03]: @< Open name. 
  736. X0021[05]: Text. Text scrap[Grey]="Error recovery point"
  737. X0021[25]: @> Close name. 
  738. X0021[27]: Text. Text scrap[White]="<010>
  739. X<010>
  740. X"
  741. X0023[01]: @$ Macro defn. 
  742. X0023[03]: @< Open name. 
  743. X0023[05]: Text. Text scrap[Grey]="Error3"
  744. X0023[11]: @> Close name. 
  745. X0023[13]: Text. Text scrap[Grey]="+==+"
  746. X0023[17]: @{ Open defn. 
  747. X0023[19]: Text. Text scrap[Grey]="No equals in this macro definition."
  748. X0023[54]: @} Close defn. 
  749. X0023[56]: Text. Text scrap[White]="<010>
  750. X"
  751. X0024[01]: @A New section (Level 1). 
  752. X0024[03]: @< Open name. 
  753. X0024[05]: Text. Text scrap[Grey]="Error recovery point"
  754. X0024[25]: @> Close name. 
  755. X0024[27]: Text. Text scrap[White]="<010>
  756. X<010>
  757. X"
  758. X0026[01]: @$ Macro defn. 
  759. X0026[03]: @< Open name. 
  760. X0026[05]: Text. Text scrap[Grey]="Error4"
  761. X0026[11]: @> Close name. 
  762. X0026[13]: Text. Text scrap[Grey]="=+"
  763. X0026[15]: @{ Open defn. 
  764. X0026[17]: Text. Text scrap[Grey]="No equals in this macro definition."
  765. X0026[52]: @} Close defn. 
  766. X0026[54]: Text. Text scrap[White]="<010>
  767. X"
  768. X0027[01]: @A New section (Level 1). 
  769. X0027[03]: @< Open name. 
  770. X0027[05]: Text. Text scrap[Grey]="Error recovery point"
  771. X0027[25]: @> Close name. 
  772. X0027[27]: Text. Text scrap[White]="<010>
  773. X<010>
  774. X"
  775. X0029[01]: @$ Macro defn. 
  776. X0029[03]: @< Open name. 
  777. X0029[05]: Text. Text scrap[Grey]="Error4"
  778. X0029[11]: @> Close name. 
  779. X0029[16]: Text. Text scrap[Grey]="="
  780. X0029[17]: @{ Open defn. 
  781. X0029[19]: Text. Text scrap[Grey]="No equals in this macro definition."
  782. X0029[54]: @} Close defn. 
  783. X0029[56]: Text. Text scrap[White]="<010>
  784. X"
  785. X0030[01]: @A New section (Level 1). 
  786. X0030[03]: @< Open name. 
  787. X0030[05]: Text. Text scrap[Grey]="Error recovery point"
  788. X0030[25]: @> Close name. 
  789. X0030[27]: Text. Text scrap[White]="<010>
  790. X<010>
  791. X"
  792. X0032[01]: @$ Macro defn. 
  793. X0032[03]: @< Open name. 
  794. X0032[05]: Text. Text scrap[Grey]="Error4"
  795. X0032[11]: @> Close name. 
  796. X0032[13]: Text. Text scrap[White]="<010>
  797. X"
  798. X0032[18]: Text. Text scrap[Grey]="{No equals in this macro definition."
  799. X0032[54]: @} Close defn. 
  800. X0032[56]: Text. Text scrap[White]="<010>
  801. X"
  802. X0033[01]: @A New section (Level 1). 
  803. X0033[03]: @< Open name. 
  804. X0033[05]: Text. Text scrap[Grey]="Error recovery point"
  805. X0033[25]: @> Close name. 
  806. X0033[27]: Text. Text scrap[White]="<010>
  807. X<010>
  808. X<010>
  809. X<010>
  810. X"
  811. X0037[01]: End Of File. 
  812. X============================ End of TOKEN LIST DUMP ============================
  813. X
  814. X
  815. X========================== Start of MACRO TABLE DUMP ===========================
  816. X
  817. X
  818. X------------------- Start of Macro Dump --------------------
  819. Macro Name  : "Error1"
  820. Defined?    : No.
  821. X-------------------- End of Macro Dump ---------------------
  822. X
  823. X
  824. X
  825. X------------------- Start of Macro Dump --------------------
  826. Macro Name  : "Error2"
  827. Defined?    : No.
  828. X-------------------- End of Macro Dump ---------------------
  829. X
  830. X
  831. X
  832. X------------------- Start of Macro Dump --------------------
  833. Macro Name  : "Error3"
  834. Defined?    : No.
  835. X-------------------- End of Macro Dump ---------------------
  836. X
  837. X
  838. X
  839. X------------------- Start of Macro Dump --------------------
  840. Macro Name  : "Error4"
  841. Defined?    : No.
  842. X-------------------- End of Macro Dump ---------------------
  843. X
  844. X
  845. X
  846. X------------------- Start of Macro Dump --------------------
  847. Macro Name  : "Sloth"
  848. Defined?    : Yes.
  849. Parameters  : 0
  850. Additive?   : No.
  851. Zero Calls? : No.
  852. Many Calls? : No.
  853. Output File?: No.
  854. Call list   :
  855. Macro body  :
  856. X
  857. X--Start of List of Body Parts--
  858. This macro has 1 body part.
  859. Body part 1: Seqnum=1, Pos(L,C)=(7,3), Expression follows:
  860. X
  861. X---- Start of Expression ----
  862. X
  863. X----- Start Text Element -----
  864. Text scrap[Grey]="No equals in this macro definition."
  865. X------ End Text Element ------
  866. X
  867. X----- End of Expression -----
  868. X
  869. X---End of List of Body Parts---
  870. X
  871. X-------------------- End of Macro Dump ---------------------
  872. X
  873. X
  874. X
  875. X------------------- Start of Macro Dump --------------------
  876. Macro Name  : "Sloth with equals"
  877. Defined?    : Yes.
  878. Parameters  : 0
  879. Additive?   : No.
  880. Zero Calls? : No.
  881. Many Calls? : No.
  882. Output File?: No.
  883. Call list   :
  884. Macro body  :
  885. X
  886. X--Start of List of Body Parts--
  887. This macro has 1 body part.
  888. Body part 1: Seqnum=2, Pos(L,C)=(10,3), Expression follows:
  889. X
  890. X---- Start of Expression ----
  891. X
  892. X----- Start Text Element -----
  893. Text scrap[Grey]="No equals in this macro definition."
  894. X------ End Text Element ------
  895. X
  896. X----- End of Expression -----
  897. X
  898. X---End of List of Body Parts---
  899. X
  900. X-------------------- End of Macro Dump ---------------------
  901. X
  902. X
  903. X
  904. X------------------- Start of Macro Dump --------------------
  905. Macro Name  : "Sloth with plus"
  906. Defined?    : Yes.
  907. Parameters  : 0
  908. Additive?   : Yes.
  909. Zero Calls? : No.
  910. Many Calls? : No.
  911. Output File?: No.
  912. Call list   :
  913. Macro body  :
  914. X
  915. X--Start of List of Body Parts--
  916. This macro has 1 body part.
  917. Body part 1: Seqnum=3, Pos(L,C)=(13,3), Expression follows:
  918. X
  919. X---- Start of Expression ----
  920. X
  921. X----- Start Text Element -----
  922. Text scrap[Grey]="No equals in this macro definition."
  923. X------ End Text Element ------
  924. X
  925. X----- End of Expression -----
  926. X
  927. X---End of List of Body Parts---
  928. X
  929. X-------------------- End of Macro Dump ---------------------
  930. X
  931. X
  932. X
  933. X=========================== End of MACRO TABLE DUMP ============================
  934. X
  935. X
  936. X========================= Start of DOCUMENT LIST DUMP ==========================
  937. X
  938. X
  939. TEXT COMPONENT: Pos(L,C)=(1,1). 
  940. X
  941. X-- Start of Text Scrap List --
  942. Text scrap[Grey]="PR07: Test the parsing of == and += in macro definitions.<010>
  943. X<010>
  944. Trip the parser so we don't get any further.<010>
  945. X"
  946. X--- End of Text Scrap List ---
  947. X
  948. X
  949. TEXT COMPONENT: Pos(L,C)=(4,3). 
  950. X
  951. X-- Start of Text Scrap List --
  952. Text scrap[Grey]="<010>
  953. X<010>
  954. X1. Test with no equals.<010>
  955. X"
  956. X--- End of Text Scrap List ---
  957. X
  958. X
  959. MACRO DEFINITION COMPONENT: Pos(L,C)=(7,1). 
  960. Part 1 of macro @<Sloth@>.
  961. X
  962. TEXT COMPONENT: Pos(L,C)=(7,51). 
  963. X
  964. X-- Start of Text Scrap List --
  965. Text scrap[Grey]="<010>
  966. X<010>
  967. X2. Test with ==.<010>
  968. X"
  969. X--- End of Text Scrap List ---
  970. X
  971. X
  972. MACRO DEFINITION COMPONENT: Pos(L,C)=(10,1). 
  973. Part 1 of macro @<Sloth with equals@>.
  974. X
  975. TEXT COMPONENT: Pos(L,C)=(10,65). 
  976. X
  977. X-- Start of Text Scrap List --
  978. Text scrap[Grey]="<010>
  979. X<010>
  980. X3. Test with +=.<010>
  981. X"
  982. X--- End of Text Scrap List ---
  983. X
  984. X
  985. MACRO DEFINITION COMPONENT: Pos(L,C)=(13,1). 
  986. Part 1 of macro @<Sloth with plus@>.
  987. X
  988. TEXT COMPONENT: Pos(L,C)=(13,63). 
  989. X
  990. X-- Start of Text Scrap List --
  991. Text scrap[Grey]="<010>
  992. X<010>
  993. X4. Test with syntax errors.<010>
  994. X<010>
  995. X"
  996. X--- End of Text Scrap List ---
  997. X
  998. X
  999. TYPESETTER DIRECTIVE COMPONENT: 
  1000. X   Section "1", Section name="Error recovery point".
  1001. X
  1002. TEXT COMPONENT: Pos(L,C)=(18,27). 
  1003. X
  1004. X-- Start of Text Scrap List --
  1005. Text scrap[White]="<010>
  1006. X<010>
  1007. X"
  1008. X--- End of Text Scrap List ---
  1009. X
  1010. X
  1011. TYPESETTER DIRECTIVE COMPONENT: 
  1012. X   Section "2", Section name="Error recovery point".
  1013. X
  1014. TEXT COMPONENT: Pos(L,C)=(21,27). 
  1015. X
  1016. X-- Start of Text Scrap List --
  1017. Text scrap[White]="<010>
  1018. X<010>
  1019. X"
  1020. X--- End of Text Scrap List ---
  1021. X
  1022. X
  1023. TYPESETTER DIRECTIVE COMPONENT: 
  1024. X   Section "3", Section name="Error recovery point".
  1025. X
  1026. TEXT COMPONENT: Pos(L,C)=(24,27). 
  1027. X
  1028. X-- Start of Text Scrap List --
  1029. Text scrap[White]="<010>
  1030. X<010>
  1031. X"
  1032. X--- End of Text Scrap List ---
  1033. X
  1034. X
  1035. TYPESETTER DIRECTIVE COMPONENT: 
  1036. X   Section "4", Section name="Error recovery point".
  1037. X
  1038. TEXT COMPONENT: Pos(L,C)=(27,27). 
  1039. X
  1040. X-- Start of Text Scrap List --
  1041. Text scrap[White]="<010>
  1042. X<010>
  1043. X"
  1044. X--- End of Text Scrap List ---
  1045. X
  1046. X
  1047. TYPESETTER DIRECTIVE COMPONENT: 
  1048. X   Section "5", Section name="Error recovery point".
  1049. X
  1050. TEXT COMPONENT: Pos(L,C)=(30,27). 
  1051. X
  1052. X-- Start of Text Scrap List --
  1053. Text scrap[White]="<010>
  1054. X<010>
  1055. X"
  1056. X--- End of Text Scrap List ---
  1057. X
  1058. X
  1059. TYPESETTER DIRECTIVE COMPONENT: 
  1060. X   Section "6", Section name="Error recovery point".
  1061. X
  1062. TEXT COMPONENT: Pos(L,C)=(33,27). 
  1063. X
  1064. X-- Start of Text Scrap List --
  1065. Text scrap[White]="<010>
  1066. X<010>
  1067. X<010>
  1068. X<010>
  1069. X"
  1070. X--- End of Text Scrap List ---
  1071. X
  1072. X
  1073. X========================== End of DOCUMENT LIST DUMP ===========================
  1074. X
  1075. X
  1076. Global Local| Input File
  1077. X------------+-------------------------------------------------------------------
  1078. X     1     1| PR07: Test the parsing of == and += in macro definitions.
  1079. X     2     2| 
  1080. X     3     3| Trip the parser so we don't get any further.
  1081. X     4     4| @>
  1082. X       Error|.^The parser was at the top level and was expecting
  1083. X            |.^one of: {Directive, Text, Macro definition, EOF}.
  1084. X     5     5| 
  1085. X     6     6| 1. Test with no equals.
  1086. X     7     7| @$@<Sloth@>@{No equals in this macro definition.@}
  1087. X     8     8| 
  1088. X     9     9| 2. Test with ==.
  1089. X    10    10| @$@<Sloth with equals@>==@{No equals in this macro definition.@}
  1090. X    11    11| 
  1091. X    12    12| 3. Test with +=.
  1092. X    13    13| @$@<Sloth with plus@>+=@{No equals in this macro definition.@}
  1093. X    14    14| 
  1094. X    15    15| 4. Test with syntax errors.
  1095. X    16    16| 
  1096. X    17    17| @$@<Error1@>++@{No equals in this macro definition.@}
  1097. X       Error|.............^Expecting "==@{" or "+=@{" or just "@{".
  1098. X            |.............^(or @Z or @M if they have not already appeared).
  1099. X            |.............^Note: FunnelWeb is intolerant of spaces at this point.
  1100. X            |...............^Skipping after error to the next major construct...
  1101. X    18    18| @A@<Error recovery point@>
  1102. X            |.^...skipped to here after the error.
  1103. X    19    19| 
  1104. X    20    20| @$@<Error2@>@+=@{No equals in this macro definition.@}
  1105. X       Error|.............^Expecting "==@{" or "+=@{" or just "@{".
  1106. X            |.............^(or @Z or @M if they have not already appeared).
  1107. X            |.............^Note: FunnelWeb is intolerant of spaces at this point.
  1108. X            |................^Skipping after error to the next major construct...
  1109. X    21    21| @A@<Error recovery point@>
  1110. X            |.^...skipped to here after the error.
  1111. X    22    22| 
  1112. X    23    23| @$@<Error3@>+==+@{No equals in this macro definition.@}
  1113. X       Error|.............^Expecting "==@{" or "+=@{" or just "@{".
  1114. X            |.............^(or @Z or @M if they have not already appeared).
  1115. X            |.............^Note: FunnelWeb is intolerant of spaces at this point.
  1116. X            |.................^Skipping after error to the next major construct...
  1117. X    24    24| @A@<Error recovery point@>
  1118. X            |.^...skipped to here after the error.
  1119. X    25    25| 
  1120. X    26    26| @$@<Error4@>=+@{No equals in this macro definition.@}
  1121. X       Error|.............^Expecting "==@{" or "+=@{" or just "@{".
  1122. X            |.............^(or @Z or @M if they have not already appeared).
  1123. X            |.............^Note: FunnelWeb is intolerant of spaces at this point.
  1124. X            |...............^Skipping after error to the next major construct...
  1125. X    27    27| @A@<Error recovery point@>
  1126. X            |.^...skipped to here after the error.
  1127. X    28    28| 
  1128. X    29    29| @$@<Error4@>@=@=@{No equals in this macro definition.@}
  1129. X       Error|................^Expecting "==@{" or "+=@{" or just "@{".
  1130. X            |................^(or @Z or @M if they have not already appeared).
  1131. X            |................^Note: FunnelWeb is intolerant of spaces at this point.
  1132. X            |.................^Skipping after error to the next major construct...
  1133. X    30    30| @A@<Error recovery point@>
  1134. X            |.^...skipped to here after the error.
  1135. X    31    31| 
  1136. X    32    32| @$@<Error4@>@+@=@{No equals in this macro definition.@}
  1137. X       Error|.............^Expecting "==@{" or "+=@{" or just "@{".
  1138. X            |.............^(or @Z or @M if they have not already appeared).
  1139. X            |.............^Note: FunnelWeb is intolerant of spaces at this point.
  1140. X            |......................................................^Skipping after error to the next major construct...
  1141. X    33    33| @A@<Error recovery point@>
  1142. X            |.^...skipped to here after the error.
  1143. X    34    34| 
  1144. X    35    35| 
  1145. X    36    36| 
  1146. X            | <End-Of-File>
  1147. X------------+-------------------------------------------------------------------
  1148. X
  1149. There were 7 Errors.
  1150. END_OF_FILE
  1151. if test 20255 -ne `wc -c <'answers/pr07.lis'`; then
  1152.     echo shar: \"'answers/pr07.lis'\" unpacked with wrong size!
  1153. fi
  1154. # end of 'answers/pr07.lis'
  1155. fi
  1156. if test -f 'answers/sc15.lis' -a "${1}" != "-c" ; then 
  1157.   echo shar: Will not clobber existing file \"'answers/sc15.lis'\"
  1158. else
  1159. echo shar: Extracting \"'answers/sc15.lis'\" \(19803 characters\)
  1160. sed "s/^X//" >'answers/sc15.lis' <<'END_OF_FILE'
  1161. XFUNNELWEB LISTING FILE
  1162. X======================
  1163. X
  1164. Dump of mapped file "<<Suppressed>>".
  1165. X
  1166. MEMORY DUMP OF MAPPED FILE
  1167. X==========================
  1168. X
  1169. X+-------------------------------------------------+------------------+
  1170. X| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
  1171. X+-------------------------------------------------+------------------+
  1172. X| 53 43 31 35 3A 20 54 65 73 74 20 74 68 61 74 20 | SC15: Test that  |
  1173. X| 63 65 72 74 61 69 6E 20 61 74 74 72 69 62 75 74 | certain attribut |
  1174. X| 65 73 20 61 72 65 20 73 61 76 65 64 20 61 63 72 | es are saved acr |
  1175. X| 6F 73 73 20 69 6E 63 6C 75 73 69 6F 6E 73 2E 0A | oss inclusions.. |
  1176. X| 0A 31 2E 20 4D 61 78 69 6D 75 6D 20 69 6E 70 75 | .1. Maximum inpu |
  1177. X| 74 20 6C 69 6E 65 20 6C 65 6E 67 74 68 2E 0A 32 | t line length..2 |
  1178. X| 2E 20 53 70 65 63 69 61 6C 20 63 68 61 72 61 63 | . Special charac |
  1179. X| 74 65 72 2E 0A 33 2E 20 4C 6F 63 61 6C 20 6C 69 | ter..3. Local li |
  1180. X| 6E 65 20 6E 75 6D 62 65 72 2E 0A 0A 54 6F 20 74 | ne number...To t |
  1181. X| 65 73 74 20 74 68 69 73 2C 20 77 65 20 66 69 72 | est this, we fir |
  1182. X| 73 74 20 73 65 74 20 74 68 65 20 66 69 72 73 74 | st set the first |
  1183. X| 20 74 77 6F 20 61 74 74 72 69 62 75 74 65 73 20 |  two attributes  |
  1184. X| 61 77 61 79 20 66 72 6F 6D 20 74 68 65 0A 64 65 | away from the.de |
  1185. X| 66 61 75 6C 74 2E 20 54 68 69 73 20 77 69 6C 6C | fault. This will |
  1186. X| 20 65 6E 61 62 6C 65 20 75 73 20 74 6F 20 62 65 |  enable us to be |
  1187. X| 20 73 75 72 65 20 74 68 61 74 20 77 68 65 6E 20 |  sure that when  |
  1188. X| 74 68 65 79 20 61 72 65 20 72 65 73 74 6F 72 65 | they are restore |
  1189. X| 64 20 74 68 61 74 0A 74 68 65 79 20 61 72 65 20 | d that.they are  |
  1190. X| 62 65 69 6E 67 20 72 65 73 74 6F 72 65 64 20 74 | being restored t |
  1191. X| 6F 20 74 68 65 69 72 20 66 6F 72 6D 65 72 20 76 | o their former v |
  1192. X| 61 6C 75 65 73 20 61 6E 64 20 6E 6F 74 20 6A 75 | alues and not ju |
  1193. X| 73 74 20 73 65 74 20 74 6F 20 74 68 65 0A 64 65 | st set to the.de |
  1194. X| 66 61 75 6C 74 2E 0A 0A 40 3D 2A 20 20 20 2A 21 | fault...@=*   *! |
  1195. X| 20 43 68 61 6E 67 65 20 74 68 65 20 73 70 65 63 |  Change the spec |
  1196. X| 69 61 6C 20 63 68 61 72 61 63 74 65 72 2E 0A 2A | ial character..* |
  1197. X| 70 20 6D 61 78 69 6D 75 6D 5F 69 6E 70 75 74 5F | p maximum_input_ |
  1198. X| 6C 69 6E 65 5F 6C 65 6E 67 74 68 20 3D 20 37 35 | line_length = 75 |
  1199. X| 0A 0A 42 65 66 6F 72 65 20 69 6E 63 6C 75 64 65 | ..Before include |
  1200. X| 2E 0A 2A 69 20 73 63 31 35 61 0A 41 66 74 65 72 | ..*i sc15a.After |
  1201. X| 20 69 6E 63 6C 75 64 65 2E 0A 0A 49 66 20 74 68 |  include...If th |
  1202. X| 65 20 6D 61 78 69 6D 75 6D 20 69 6E 70 75 74 20 | e maximum input  |
  1203. X| 6C 69 6E 65 20 6C 65 6E 67 74 68 20 68 61 73 20 | line length has  |
  1204. X| 62 65 65 6E 20 63 6F 72 72 65 63 74 6C 79 20 72 | been correctly r |
  1205. X| 65 73 74 6F 72 65 64 20 74 68 65 6E 20 74 68 65 | estored then the |
  1206. X| 0A 73 65 63 6F 6E 64 20 6F 66 20 74 68 65 20 66 | .second of the f |
  1207. X| 6F 6C 6C 6F 77 69 6E 67 20 74 77 6F 20 6C 69 6E | ollowing two lin |
  1208. X| 65 73 20 73 68 6F 75 6C 64 20 67 69 76 65 20 61 | es should give a |
  1209. X| 6E 20 65 72 72 6F 72 2C 20 62 75 74 20 6E 6F 74 | n error, but not |
  1210. X| 20 74 68 65 20 66 69 72 73 74 2E 0A 31 32 33 34 |  the first..1234 |
  1211. X| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
  1212. X| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
  1213. X| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
  1214. X| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
  1215. X| 39 30 31 32 33 34 35 0A 31 32 33 34 35 36 37 38 | 9012345.12345678 |
  1216. X| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
  1217. X| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
  1218. X| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
  1219. X| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
  1220. X| 33 34 35 36 0A 0A 49 66 20 74 68 65 20 73 70 65 | 3456..If the spe |
  1221. X| 63 69 61 6C 20 63 68 61 72 61 63 74 65 72 20 68 | cial character h |
  1222. X| 61 73 20 62 65 65 6E 20 70 72 65 73 65 72 76 65 | as been preserve |
  1223. X| 64 2C 20 74 68 65 6E 20 74 68 65 20 66 6F 6C 6C | d, then the foll |
  1224. X| 6F 77 69 6E 67 20 73 68 6F 75 6C 64 0A 67 65 6E | owing should.gen |
  1225. X| 65 72 61 74 65 20 61 6E 20 65 72 72 6F 72 2E 0A | erate an error.. |
  1226. X| 0A 2A 20 20 20 2D 20 54 68 69 73 20 73 68 6F 75 | .*   - This shou |
  1227. X| 6C 64 20 67 65 6E 65 72 61 74 65 20 61 6E 20 65 | ld generate an e |
  1228. X| 72 72 6F 72 20 69 66 20 61 6C 6C 20 69 73 20 77 | rror if all is w |
  1229. X| 65 6C 6C 2E 0A 0A 50 72 65 73 65 72 76 61 74 69 | ell...Preservati |
  1230. X| 6F 6E 20 6F 66 20 74 68 65 20 6C 6F 63 61 6C 20 | on of the local  |
  1231. X| 6C 69 6E 65 20 6E 75 6D 62 65 72 20 63 61 6E 20 | line number can  |
  1232. X| 62 65 20 63 68 65 63 6B 65 64 20 62 79 20 6C 6F | be checked by lo |
  1233. X| 6F 6B 69 6E 67 20 61 74 20 74 68 65 0A 6C 69 73 | oking at the.lis |
  1234. X| 74 69 6E 67 20 66 69 6C 65 2E 0A                | ting file..      |
  1235. X+-------------------------------------------------+------------------+
  1236. X
  1237. Dump of mapped file "<<Suppressed>>".
  1238. X
  1239. MEMORY DUMP OF MAPPED FILE
  1240. X==========================
  1241. X
  1242. X+-------------------------------------------------+------------------+
  1243. X| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
  1244. X+-------------------------------------------------+------------------+
  1245. X| 54 68 69 73 20 69 73 20 74 68 65 20 69 6E 63 6C | This is the incl |
  1246. X| 75 64 65 20 66 69 6C 65 20 66 6F 72 20 74 65 73 | ude file for tes |
  1247. X| 74 20 53 43 31 35 2E 20 54 68 65 20 53 43 31 35 | t SC15. The SC15 |
  1248. X| 20 74 65 73 74 20 63 68 65 63 6B 73 20 74 6F 20 |  test checks to  |
  1249. X| 6D 61 6B 65 0A 73 75 72 65 20 74 68 61 74 20 46 | make.sure that F |
  1250. X| 75 6E 6E 65 6C 57 65 62 20 69 73 20 73 61 76 69 | unnelWeb is savi |
  1251. X| 6E 67 20 61 6E 64 20 72 65 73 74 6F 72 69 6E 67 | ng and restoring |
  1252. X| 20 74 68 72 65 65 20 73 63 61 6E 6E 69 6E 67 0A |  three scanning. |
  1253. X| 61 74 74 72 69 62 75 74 65 73 20 61 63 72 6F 73 | attributes acros |
  1254. X| 73 20 69 6E 63 6C 75 64 65 20 66 69 6C 65 73 2E | s include files. |
  1255. X| 20 57 65 20 61 6C 73 6F 20 77 61 6E 74 20 74 6F |  We also want to |
  1256. X| 20 6D 61 6B 65 20 73 75 72 65 0A 74 68 61 74 20 |  make sure.that  |
  1257. X| 74 68 65 20 73 63 61 6E 6E 65 72 20 69 73 20 69 | the scanner is i |
  1258. X| 6E 69 74 69 61 6C 69 7A 69 6E 67 20 74 68 65 73 | nitializing thes |
  1259. X| 65 20 61 74 74 72 69 62 75 74 65 73 20 63 6F 72 | e attributes cor |
  1260. X| 72 65 63 74 6C 79 20 77 69 74 68 69 6E 0A 74 68 | rectly within.th |
  1261. X| 65 20 69 6E 63 6C 75 64 65 20 66 69 6C 65 2E 0A | e include file.. |
  1262. X| 0A 53 43 31 35 2E 34 3A 20 4D 61 6B 65 20 73 75 | .SC15.4: Make su |
  1263. X| 72 65 20 74 68 61 74 20 74 68 65 20 73 70 65 63 | re that the spec |
  1264. X| 69 61 6C 20 63 68 61 72 61 63 74 65 72 20 69 73 | ial character is |
  1265. X| 20 41 54 20 61 74 20 74 68 65 20 73 74 61 72 74 |  AT at the start |
  1266. X| 20 6F 66 0A 69 6E 63 6C 75 64 65 20 66 69 6C 65 |  of.include file |
  1267. X| 73 2E 0A 0A 40 20 20 20 20 2D 20 54 68 69 73 20 | s...@    - This  |
  1268. X| 73 68 6F 75 6C 64 20 79 69 65 6C 64 20 61 6E 20 | should yield an  |
  1269. X| 65 72 72 6F 72 2E 0A 0A 53 43 31 35 2E 35 20 45 | error...SC15.5 E |
  1270. X| 6E 73 75 72 65 20 74 68 61 74 20 74 68 65 20 6D | nsure that the m |
  1271. X| 61 78 69 6D 75 6D 20 69 6E 70 75 74 20 6C 69 6E | aximum input lin |
  1272. X| 65 20 6C 65 6E 67 74 68 20 69 73 20 38 30 20 61 | e length is 80 a |
  1273. X| 74 20 74 68 65 20 73 74 61 72 74 0A 6F 66 20 61 | t the start.of a |
  1274. X| 6E 20 69 6E 63 6C 75 64 65 20 66 69 6C 65 2E 20 | n include file.  |
  1275. X| 49 66 20 61 6C 6C 20 69 73 20 77 65 6C 6C 2C 20 | If all is well,  |
  1276. X| 6F 6E 6C 79 20 74 68 65 20 73 65 63 6F 6E 64 20 | only the second  |
  1277. X| 6F 66 20 74 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 | of the following |
  1278. X| 20 74 77 6F 0A 6C 69 6E 65 73 20 77 69 6C 6C 20 |  two.lines will  |
  1279. X| 70 72 6F 76 6F 6B 65 20 61 20 22 6C 69 6E 65 20 | provoke a "line  |
  1280. X| 74 6F 6F 20 6C 6F 6E 67 22 20 65 72 72 6F 72 2E | too long" error. |
  1281. X| 0A 0A 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | ..12345678901234 |
  1282. X| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
  1283. X| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
  1284. X| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
  1285. X| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
  1286. X| 39 30 0A 31 32 33 34 35 36 37 38 39 30 31 32 33 | 90.1234567890123 |
  1287. X| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 |
  1288. X| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 |
  1289. X| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 |
  1290. X| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 |
  1291. X| 38 39 30 31 0A 0A 4E 6F 77 20 74 68 61 74 20 77 | 8901..Now that w |
  1292. X| 65 20 68 61 76 65 20 63 68 65 63 6B 65 64 20 74 | e have checked t |
  1293. X| 68 65 20 64 65 66 61 75 6C 74 20 61 74 74 72 69 | he default attri |
  1294. X| 62 75 74 65 73 20 6F 6E 20 65 6E 74 65 72 69 6E | butes on enterin |
  1295. X| 67 20 61 6E 20 69 6E 63 6C 75 64 65 20 66 69 6C | g an include fil |
  1296. X| 65 2C 0A 77 65 20 77 61 6E 74 20 74 6F 20 73 74 | e,.we want to st |
  1297. X| 75 66 66 20 74 68 65 6D 20 75 70 20 73 6F 20 61 | uff them up so a |
  1298. X| 73 20 74 6F 20 6D 61 6B 65 20 73 75 72 65 20 74 | s to make sure t |
  1299. X| 68 61 74 20 74 68 65 20 61 74 74 72 69 62 75 74 | hat the attribut |
  1300. X| 65 73 0A 70 72 65 76 61 69 6C 69 6E 67 20 77 68 | es.prevailing wh |
  1301. X| 65 6E 20 74 68 65 20 69 6E 63 6C 75 64 65 20 77 | en the include w |
  1302. X| 61 73 20 68 69 74 20 61 72 65 20 72 65 73 74 6F | as hit are resto |
  1303. X| 72 65 64 2E 0A 0A 40 70 20 6D 61 78 69 6D 75 6D | red...@p maximum |
  1304. X| 5F 69 6E 70 75 74 5F 6C 69 6E 65 5F 6C 65 6E 67 | _input_line_leng |
  1305. X| 74 68 20 3D 20 36 35 0A 40 3D 2B 0A 0A          | th = 65.@=+..    |
  1306. X+-------------------------------------------------+------------------+
  1307. X
  1308. X
  1309. X=========================== Start of LINE LIST DUMP ============================
  1310. X
  1311. Globl Local| Text
  1312. X-----------+--------------------------------------------------------------------
  1313. X00001 00001| SC15: Test that certain attributes are saved across inclusions.<010>
  1314. X00002 00002| <010>
  1315. X00003 00003| 1. Maximum input line length.<010>
  1316. X00004 00004| 2. Special character.<010>
  1317. X00005 00005| 3. Local line number.<010>
  1318. X00006 00006| <010>
  1319. X00007 00007| To test this, we first set the first two attributes away from the<010>
  1320. X00008 00008| default. This will enable us to be sure that when they are restored that<010>
  1321. X00009 00009| they are being restored to their former values and not just set to the<010>
  1322. X00010 00010| default.<010>
  1323. X00011 00011| <010>
  1324. X00012 00012| @=*   *! Change the special character.<010>
  1325. X00013 00013| *p maximum_input_line_length = 75<010>
  1326. X00014 00014| <010>
  1327. X00015 00015| Before include.<010>
  1328. X00016 00016| *i sc15a<010>
  1329. X00017 00001| This is the include file for test SC15. The SC15 test checks to make<010>
  1330. X00018 00002| sure that FunnelWeb is saving and restoring three scanning<010>
  1331. X00019 00003| attributes across include files. We also want to make sure<010>
  1332. X00020 00004| that the scanner is initializing these attributes correctly within<010>
  1333. X00021 00005| the include file.<010>
  1334. X00022 00006| <010>
  1335. X00023 00007| SC15.4: Make sure that the special character is AT at the start of<010>
  1336. X00024 00008| include files.<010>
  1337. X00025 00009| <010>
  1338. X00026 00010| @    - This should yield an error.<010>
  1339. X00027 00011| <010>
  1340. X00028 00012| SC15.5 Ensure that the maximum input line length is 80 at the start<010>
  1341. X00029 00013| of an include file. If all is well, only the second of the following two<010>
  1342. X00030 00014| lines will provoke a "line too long" error.<010>
  1343. X00031 00015| <010>
  1344. X00032 00016| 12345678901234567890123456789012345678901234567890123456789012345678901234567890<010>
  1345. X00033 00017| 123456789012345678901234567890123456789012345678901234567890123456789012345678901<010>
  1346. X00034 00018| <010>
  1347. X00035 00019| Now that we have checked the default attributes on entering an include file,<010>
  1348. X00036 00020| we want to stuff them up so as to make sure that the attributes<010>
  1349. X00037 00021| prevailing when the include was hit are restored.<010>
  1350. X00038 00022| <010>
  1351. X00039 00023| @p maximum_input_line_length = 65<010>
  1352. X00040 00024| @=+<010>
  1353. X00041 00025| <010>
  1354. X00042 00017| After include.<010>
  1355. X00043 00018| <010>
  1356. X00044 00019| If the maximum input line length has been correctly restored then the<010>
  1357. X00045 00020| second of the following two lines should give an error, but not the first.<010>
  1358. X00046 00021| 123456789012345678901234567890123456789012345678901234567890123456789012345<010>
  1359. X00047 00022| 1234567890123456789012345678901234567890123456789012345678901234567890123456<010>
  1360. X00048 00023| <010>
  1361. X00049 00024| If the special character has been preserved, then the following should<010>
  1362. X00050 00025| generate an error.<010>
  1363. X00051 00026| <010>
  1364. X00052 00027| *   - This should generate an error if all is well.<010>
  1365. X00053 00028| <010>
  1366. X00054 00029| Preservation of the local line number can be checked by looking at the<010>
  1367. X00055 00030| listing file.<010>
  1368. X00056 00031| <End-Of-File><010>
  1369. X-----------+--------------------------------------------------------------------
  1370. Globl Local| Text
  1371. X
  1372. X============================ End of LINE LIST DUMP =============================
  1373. X
  1374. X
  1375. X=========================== Start of TOKEN LIST DUMP ===========================
  1376. X
  1377. Summary: There are 9 tokens in the token list.
  1378. X
  1379. Line[Column]: Token Description
  1380. X-------------------------------
  1381. X
  1382. X0001[01]: Text. Text scrap[Grey]="SC15: Test that certain attributes are saved across inclusions.<010>
  1383. X<010>
  1384. X1. Maximum input line length.<010>
  1385. X2. Special character.<010>
  1386. X3. Local line number.<010>
  1387. X<010>
  1388. To test this, we first set the first two attributes away from the<010>
  1389. default. This will enable us to be sure that when they are restored that<010>
  1390. they are being restored to their former values and not just set to the<010>
  1391. default.<010>
  1392. X<010>
  1393. X"
  1394. X0012[04]: Text. Text scrap[White]="   "
  1395. X0014[01]: Text. Text scrap[Grey]="<010>
  1396. Before include.<010>
  1397. X"
  1398. X0017[01]: Text. Text scrap[Grey]="This is the include file for test SC15. The SC15 test checks to make<010>
  1399. sure that FunnelWeb is saving and restoring three scanning<010>
  1400. attributes across include files. We also want to make sure<010>
  1401. that the scanner is initializing these attributes correctly within<010>
  1402. the include file.<010>
  1403. X<010>
  1404. SC15.4: Make sure that the special character is AT at the start of<010>
  1405. include files.<010>
  1406. X<010>
  1407. X"
  1408. X0026[03]: Text. Text scrap[Grey]="   - This should yield an error.<010>
  1409. X<010>
  1410. SC15.5 Ensure that the maximum input line length is 80 at the start<010>
  1411. of an include file. If all is well, only the second of the following two<010>
  1412. lines will provoke a "line too long" error.<010>
  1413. X<010>
  1414. X12345678901234567890123456789012345678901234567890123456789012345678901234567890<010>
  1415. X123456789012345678901234567890123456789012345678901234567890123456789012345678901<010>
  1416. X<010>
  1417. Now that we have checked the default attributes on entering an include file,<010>
  1418. we want to stuff them up so as to make sure that the attributes<010>
  1419. prevailing when the include was hit are restored.<010>
  1420. X<010>
  1421. X"
  1422. X0040[04]: Text. Text scrap[White]="<010>
  1423. X<010>
  1424. X"
  1425. X0042[01]: Text. Text scrap[Grey]="After include.<010>
  1426. X<010>
  1427. If the maximum input line length has been correctly restored then the<010>
  1428. second of the following two lines should give an error, but not the first.<010>
  1429. X123456789012345678901234567890123456789012345678901234567890123456789012345<010>
  1430. X1234567890123456789012345678901234567890123456789012345678901234567890123456<010>
  1431. X<010>
  1432. If the special character has been preserved, then the following should<010>
  1433. generate an error.<010>
  1434. X<010>
  1435. X"
  1436. X0052[03]: Text. Text scrap[Grey]="  - This should generate an error if all is well.<010>
  1437. X<010>
  1438. Preservation of the local line number can be checked by looking at the<010>
  1439. listing file.<010>
  1440. X"
  1441. X0056[01]: End Of File. 
  1442. X============================ End of TOKEN LIST DUMP ============================
  1443. X
  1444. Macro table dump skipped (Parser was not invoked).
  1445. Document list dump skipped (Parser was not invoked).
  1446. X
  1447. Global Local| Input File
  1448. X------------+-------------------------------------------------------------------
  1449. X     1     1| SC15: Test that certain attributes are saved across inclusions.
  1450. X     2     2| 
  1451. X     3     3| 1. Maximum input line length.
  1452. X     4     4| 2. Special character.
  1453. X     5     5| 3. Local line number.
  1454. X     6     6| 
  1455. X     7     7| To test this, we first set the first two attributes away from the
  1456. X     8     8| default. This will enable us to be sure that when they are restored that
  1457. X     9     9| they are being restored to their former values and not just set to the
  1458. X    10    10| default.
  1459. X    11    11| 
  1460. X    12    12| @=*   *! Change the special character.
  1461. X    13    13| *p maximum_input_line_length = 75
  1462. X    14    14| 
  1463. X    15    15| Before include.
  1464. X    16    16| *i sc15a
  1465. X    17     1| This is the include file for test SC15. The SC15 test checks to make
  1466. X    18     2| sure that FunnelWeb is saving and restoring three scanning
  1467. X    19     3| attributes across include files. We also want to make sure
  1468. X    20     4| that the scanner is initializing these attributes correctly within
  1469. X    21     5| the include file.
  1470. X    22     6| 
  1471. X    23     7| SC15.4: Make sure that the special character is AT at the start of
  1472. X    24     8| include files.
  1473. X    25     9| 
  1474. X    26    10| @    - This should yield an error.
  1475. X       Error|.^<special><space> is not a legal special sequence.
  1476. X    27    11| 
  1477. X    28    12| SC15.5 Ensure that the maximum input line length is 80 at the start
  1478. X    29    13| of an include file. If all is well, only the second of the following two
  1479. X    30    14| lines will provoke a "line too long" error.
  1480. X    31    15| 
  1481. X    32    16| 12345678901234567890123456789012345678901234567890123456789012345678901234567890
  1482. X    33    17| 123456789012345678901234567890123456789012345678901234567890123456789012345678901
  1483. X       Error|.................................................................................^Input line is too long (this character is the first offender).
  1484. X            |.................................................................................^Currently, the maximum allowable input line length is 80.
  1485. X            |.................................................................................^Note: You can change this using a pragma directive (@p).
  1486. X    34    18| 
  1487. X    35    19| Now that we have checked the default attributes on entering an include file,
  1488. X    36    20| we want to stuff them up so as to make sure that the attributes
  1489. X    37    21| prevailing when the include was hit are restored.
  1490. X    38    22| 
  1491. X    39    23| @p maximum_input_line_length = 65
  1492. X    40    24| @=+
  1493. X    41    25| 
  1494. X    42    17| After include.
  1495. X    43    18| 
  1496. X    44    19| If the maximum input line length has been correctly restored then the
  1497. X    45    20| second of the following two lines should give an error, but not the first.
  1498. X    46    21| 123456789012345678901234567890123456789012345678901234567890123456789012345
  1499. X    47    22| 1234567890123456789012345678901234567890123456789012345678901234567890123456
  1500. X       Error|............................................................................^Input line is too long (this character is the first offender).
  1501. X            |............................................................................^Currently, the maximum allowable input line length is 75.
  1502. X            |............................................................................^Note: You can change this using a pragma directive (@p).
  1503. X    48    23| 
  1504. X    49    24| If the special character has been preserved, then the following should
  1505. X    50    25| generate an error.
  1506. X    51    26| 
  1507. X    52    27| *   - This should generate an error if all is well.
  1508. X       Error|.^<special><space> is not a legal special sequence.
  1509. X    53    28| 
  1510. X    54    29| Preservation of the local line number can be checked by looking at the
  1511. X    55    30| listing file.
  1512. X            | <End-Of-File>
  1513. X------------+-------------------------------------------------------------------
  1514. X
  1515. There were 4 Errors.
  1516. END_OF_FILE
  1517. if test 19803 -ne `wc -c <'answers/sc15.lis'`; then
  1518.     echo shar: \"'answers/sc15.lis'\" unpacked with wrong size!
  1519. fi
  1520. # end of 'answers/sc15.lis'
  1521. fi
  1522. if test -f 'answers/sc16.lis' -a "${1}" != "-c" ; then 
  1523.   echo shar: Will not clobber existing file \"'answers/sc16.lis'\"
  1524. else
  1525. echo shar: Extracting \"'answers/sc16.lis'\" \(20071 characters\)
  1526. sed "s/^X//" >'answers/sc16.lis' <<'END_OF_FILE'
  1527. XFUNNELWEB LISTING FILE
  1528. X======================
  1529. X
  1530. Dump of mapped file "<<Suppressed>>".
  1531. X
  1532. MEMORY DUMP OF MAPPED FILE
  1533. X==========================
  1534. X
  1535. X+-------------------------------------------------+------------------+
  1536. X| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
  1537. X+-------------------------------------------------+------------------+
  1538. X| 53 43 31 36 3A 20 54 65 73 74 20 3C 73 70 65 63 | SC16: Test <spec |
  1539. X| 69 61 6C 3E 5E 20 73 65 71 75 65 6E 63 65 2E 0A | ial>^ sequence.. |
  1540. X| 0A 31 2E 20 54 65 73 74 20 74 68 61 74 20 61 6C | .1. Test that al |
  1541. X| 6C 20 62 61 73 65 20 63 68 61 72 61 63 74 65 72 | l base character |
  1542. X| 73 20 77 6F 72 6B 20 28 69 6E 20 62 6F 74 68 20 | s work (in both  |
  1543. X| 63 61 73 65 73 29 2E 0A 20 20 20 54 68 65 73 65 | cases)..   These |
  1544. X| 20 73 68 6F 75 6C 64 20 70 72 6F 76 6F 6B 65 20 |  should provoke  |
  1545. X| 6E 6F 20 65 72 72 6F 72 73 2E 0A 0A 20 20 20 40 | no errors...   @ |
  1546. X| 5E 42 28 30 30 30 30 30 30 30 30 29 20 20 20 40 | ^B(00000000)   @ |
  1547. X| 5E 62 28 30 30 30 30 30 30 30 30 29 0A 20 20 20 | ^b(00000000).    |
  1548. X| 40 5E 4F 28 30 30 30 29 20 20 20 40 5E 6F 28 30 | @^O(000)   @^o(0 |
  1549. X| 30 30 29 0A 20 20 20 40 5E 51 28 30 30 30 29 20 | 00).   @^Q(000)  |
  1550. X| 20 20 40 5E 71 28 30 30 30 29 0A 20 20 20 40 5E |   @^q(000).   @^ |
  1551. X| 44 28 30 30 30 29 20 20 20 40 5E 64 28 30 30 30 | D(000)   @^d(000 |
  1552. X| 29 0A 20 20 20 40 5E 48 28 30 30 29 20 20 20 20 | ).   @^H(00)     |
  1553. X| 40 5E 68 28 30 30 29 0A 20 20 20 40 5E 58 28 30 | @^h(00).   @^X(0 |
  1554. X| 30 29 20 20 20 20 40 5E 78 28 30 30 29 0A 0A 32 | 0)    @^x(00)..2 |
  1555. X| 2E 20 54 65 73 74 20 74 68 61 74 20 73 6F 6D 65 | . Test that some |
  1556. X| 20 6F 74 68 65 72 20 62 61 73 65 20 63 68 61 72 |  other base char |
  1557. X| 61 63 74 65 72 73 20 67 65 6E 65 72 61 74 65 20 | acters generate  |
  1558. X| 61 6E 20 65 72 72 6F 72 2E 0A 0A 20 20 20 40 5E | an error...   @^ |
  1559. X| 75 28 30 29 0A 20 20 20 40 5E 79 0A 20 20 20 40 | u(0).   @^y.   @ |
  1560. X| 5E 23 0A 20 20 20 40 5E 28 0A 0A 33 2E 20 54 65 | ^#.   @^(..3. Te |
  1561. X| 73 74 20 74 68 61 74 20 61 6E 20 65 72 72 6F 72 | st that an error |
  1562. X| 20 69 73 20 67 65 6E 65 72 61 74 65 64 20 69 66 |  is generated if |
  1563. X| 20 70 61 72 65 6E 74 68 65 73 69 73 20 69 73 20 |  parenthesis is  |
  1564. X| 6D 69 73 73 69 6E 67 2E 0A 0A 20 20 20 40 5E 44 | missing...   @^D |
  1565. X| 33 34 29 0A 0A 34 2E 20 54 65 73 74 20 6C 65 67 | 34)..4. Test leg |
  1566. X| 61 6C 20 64 69 67 69 74 73 20 69 6E 20 65 61 63 | al digits in eac |
  1567. X| 68 20 62 61 73 65 2E 0A 0A 20 20 20 40 5E 42 28 | h base...   @^B( |
  1568. X| 30 30 30 30 31 31 31 31 29 0A 20 20 20 40 5E 4F | 00001111).   @^O |
  1569. X| 28 30 31 32 29 20 20 40 5E 4F 28 30 33 34 29 20 | (012)  @^O(034)  |
  1570. X| 40 5E 4F 28 30 35 36 29 20 40 5E 4F 28 30 37 37 | @^O(056) @^O(077 |
  1571. X| 29 0A 20 20 20 40 5E 44 28 30 31 32 29 20 20 40 | ).   @^D(012)  @ |
  1572. X| 5E 44 28 30 33 34 29 20 40 5E 44 28 30 35 36 29 | ^D(034) @^D(056) |
  1573. X| 20 40 5E 44 28 30 37 38 29 20 40 5E 44 28 30 39 |  @^D(078) @^D(09 |
  1574. X| 39 29 0A 20 20 20 40 5E 48 28 30 31 29 20 40 5E | 9).   @^H(01) @^ |
  1575. X| 48 28 32 33 29 20 40 5E 48 28 34 35 29 20 40 5E | H(23) @^H(45) @^ |
  1576. X| 48 28 36 37 29 0A 20 20 20 40 5E 48 28 38 39 29 | H(67).   @^H(89) |
  1577. X| 20 40 5E 48 28 41 42 29 20 40 5E 58 28 43 44 29 |  @^H(AB) @^X(CD) |
  1578. X| 20 40 5E 58 28 45 46 29 20 20 40 5E 78 28 61 66 |  @^X(EF)  @^x(af |
  1579. X| 29 0A 0A 35 2E 20 54 65 73 74 20 69 6C 6C 65 67 | )..5. Test illeg |
  1580. X| 61 6C 20 64 69 67 69 74 73 20 69 6E 20 65 61 63 | al digits in eac |
  1581. X| 68 20 62 61 73 65 2E 0A 0A 20 20 20 40 5E 42 28 | h base...   @^B( |
  1582. X| 30 30 30 30 30 30 30 32 29 0A 20 20 20 40 5E 4F | 00000002).   @^O |
  1583. X| 28 30 30 38 29 0A 20 20 20 40 5E 44 28 30 30 41 | (008).   @^D(00A |
  1584. X| 29 0A 20 20 20 40 5E 48 28 30 47 29 0A 0A 36 2E | ).   @^H(0G)..6. |
  1585. X| 20 54 65 73 74 20 77 68 61 74 20 68 61 70 70 65 |  Test what happe |
  1586. X| 6E 73 20 69 66 20 74 68 65 72 65 20 61 72 65 20 | ns if there are  |
  1587. X| 74 68 65 20 77 72 6F 6E 67 20 6E 75 6D 62 65 72 | the wrong number |
  1588. X| 20 6F 66 20 64 69 67 69 74 73 0A 20 20 20 28 74 |  of digits.   (t |
  1589. X| 6F 6F 20 66 65 77 2C 20 74 6F 6F 20 6D 61 6E 79 | oo few, too many |
  1590. X| 29 2E 0A 0A 20 20 20 40 5E 42 28 31 29 0A 20 20 | )...   @^B(1).   |
  1591. X| 20 40 5E 4F 28 31 29 0A 20 20 20 40 5E 44 28 31 |  @^O(1).   @^D(1 |
  1592. X| 29 0A 20 20 20 40 5E 48 28 31 29 0A 0A 20 20 20 | ).   @^H(1)..    |
  1593. X| 40 5E 42 28 30 30 30 30 30 30 30 30 31 29 0A 20 | @^B(000000001).  |
  1594. X| 20 20 40 5E 4F 28 30 30 30 34 29 0A 20 20 20 40 |   @^O(0004).   @ |
  1595. X| 5E 44 28 30 30 30 31 29 0A 20 20 20 40 5E 48 28 | ^D(0001).   @^H( |
  1596. X| 30 30 35 29 0A 0A 37 2E 20 54 65 73 74 20 74 68 | 005)..7. Test th |
  1597. X| 61 74 20 61 6E 20 65 72 72 6F 72 20 69 73 20 67 | at an error is g |
  1598. X| 65 6E 65 72 61 74 65 64 20 66 6F 72 20 61 20 6D | enerated for a m |
  1599. X| 69 73 73 69 6E 67 20 63 6C 6F 73 69 6E 67 20 70 | issing closing p |
  1600. X| 61 72 65 6E 74 68 65 73 69 73 2E 0A 0A 20 20 40 | arenthesis...  @ |
  1601. X| 5E 42 28 30 30 30 30 30 30 30 30 0A 20 20 40 5E | ^B(00000000.  @^ |
  1602. X| 44 28 30 34 35 28 0A 0A 38 2E 20 54 65 73 74 20 | D(045(..8. Test  |
  1603. X| 77 68 61 74 20 68 61 70 70 65 6E 73 20 69 6E 20 | what happens in  |
  1604. X| 6E 75 6D 62 65 72 20 69 73 20 6F 75 74 20 6F 66 | number is out of |
  1605. X| 20 74 68 65 20 72 61 6E 67 65 20 5B 30 2C 32 35 |  the range [0,25 |
  1606. X| 35 5D 2E 0A 0A 20 20 40 5E 44 28 32 35 35 29 0A | 5]...  @^D(255). |
  1607. X| 20 20 40 5E 44 28 32 35 36 29 0A 20 20 40 5E 44 |   @^D(256).  @^D |
  1608. X| 28 39 39 39 29 0A 0A                            | (999)..          |
  1609. X+-------------------------------------------------+------------------+
  1610. X
  1611. X
  1612. X=========================== Start of LINE LIST DUMP ============================
  1613. X
  1614. Globl Local| Text
  1615. X-----------+--------------------------------------------------------------------
  1616. X00001 00001| SC16: Test <special>^ sequence.<010>
  1617. X00002 00002| <010>
  1618. X00003 00003| 1. Test that all base characters work (in both cases).<010>
  1619. X00004 00004|    These should provoke no errors.<010>
  1620. X00005 00005| <010>
  1621. X00006 00006|    @^B(00000000)   @^b(00000000)<010>
  1622. X00007 00007|    @^O(000)   @^o(000)<010>
  1623. X00008 00008|    @^Q(000)   @^q(000)<010>
  1624. X00009 00009|    @^D(000)   @^d(000)<010>
  1625. X00010 00010|    @^H(00)    @^h(00)<010>
  1626. X00011 00011|    @^X(00)    @^x(00)<010>
  1627. X00012 00012| <010>
  1628. X00013 00013| 2. Test that some other base characters generate an error.<010>
  1629. X00014 00014| <010>
  1630. X00015 00015|    @^u(0)<010>
  1631. X00016 00016|    @^y<010>
  1632. X00017 00017|    @^#<010>
  1633. X00018 00018|    @^(<010>
  1634. X00019 00019| <010>
  1635. X00020 00020| 3. Test that an error is generated if parenthesis is missing.<010>
  1636. X00021 00021| <010>
  1637. X00022 00022|    @^D34)<010>
  1638. X00023 00023| <010>
  1639. X00024 00024| 4. Test legal digits in each base.<010>
  1640. X00025 00025| <010>
  1641. X00026 00026|    @^B(00001111)<010>
  1642. X00027 00027|    @^O(012)  @^O(034) @^O(056) @^O(077)<010>
  1643. X00028 00028|    @^D(012)  @^D(034) @^D(056) @^D(078) @^D(099)<010>
  1644. X00029 00029|    @^H(01) @^H(23) @^H(45) @^H(67)<010>
  1645. X00030 00030|    @^H(89) @^H(AB) @^X(CD) @^X(EF)  @^x(af)<010>
  1646. X00031 00031| <010>
  1647. X00032 00032| 5. Test illegal digits in each base.<010>
  1648. X00033 00033| <010>
  1649. X00034 00034|    @^B(00000002)<010>
  1650. X00035 00035|    @^O(008)<010>
  1651. X00036 00036|    @^D(00A)<010>
  1652. X00037 00037|    @^H(0G)<010>
  1653. X00038 00038| <010>
  1654. X00039 00039| 6. Test what happens if there are the wrong number of digits<010>
  1655. X00040 00040|    (too few, too many).<010>
  1656. X00041 00041| <010>
  1657. X00042 00042|    @^B(1)<010>
  1658. X00043 00043|    @^O(1)<010>
  1659. X00044 00044|    @^D(1)<010>
  1660. X00045 00045|    @^H(1)<010>
  1661. X00046 00046| <010>
  1662. X00047 00047|    @^B(000000001)<010>
  1663. X00048 00048|    @^O(0004)<010>
  1664. X00049 00049|    @^D(0001)<010>
  1665. X00050 00050|    @^H(005)<010>
  1666. X00051 00051| <010>
  1667. X00052 00052| 7. Test that an error is generated for a missing closing parenthesis.<010>
  1668. X00053 00053| <010>
  1669. X00054 00054|   @^B(00000000<010>
  1670. X00055 00055|   @^D(045(<010>
  1671. X00056 00056| <010>
  1672. X00057 00057| 8. Test what happens in number is out of the range [0,255].<010>
  1673. X00058 00058| <010>
  1674. X00059 00059|   @^D(255)<010>
  1675. X00060 00060|   @^D(256)<010>
  1676. X00061 00061|   @^D(999)<010>
  1677. X00062 00062| <010>
  1678. X00063 00063| <End-Of-File><010>
  1679. X-----------+--------------------------------------------------------------------
  1680. Globl Local| Text
  1681. X
  1682. X============================ End of LINE LIST DUMP =============================
  1683. X
  1684. X
  1685. X=========================== Start of TOKEN LIST DUMP ===========================
  1686. X
  1687. Summary: There are 87 tokens in the token list.
  1688. X
  1689. Line[Column]: Token Description
  1690. X-------------------------------
  1691. X
  1692. X0001[01]: Text. Text scrap[Grey]="SC16: Test <special>^ sequence.<010>
  1693. X<010>
  1694. X1. Test that all base characters work (in both cases).<010>
  1695. X   These should provoke no errors.<010>
  1696. X<010>
  1697. X   "
  1698. X0006[04]: Text. Text scrap[Grey]="<000>"
  1699. X0006[17]: Text. Text scrap[White]="   "
  1700. X0006[20]: Text. Text scrap[Grey]="<000>"
  1701. X0006[33]: Text. Text scrap[White]="<010>
  1702. X   "
  1703. X0007[04]: Text. Text scrap[Grey]="<000>"
  1704. X0007[12]: Text. Text scrap[White]="   "
  1705. X0007[15]: Text. Text scrap[Grey]="<000>"
  1706. X0007[23]: Text. Text scrap[White]="<010>
  1707. X   "
  1708. X0008[04]: Text. Text scrap[Grey]="<000>"
  1709. X0008[12]: Text. Text scrap[White]="   "
  1710. X0008[15]: Text. Text scrap[Grey]="<000>"
  1711. X0008[23]: Text. Text scrap[White]="<010>
  1712. X   "
  1713. X0009[04]: Text. Text scrap[Grey]="<000>"
  1714. X0009[12]: Text. Text scrap[White]="   "
  1715. X0009[15]: Text. Text scrap[Grey]="<000>"
  1716. X0009[23]: Text. Text scrap[White]="<010>
  1717. X   "
  1718. X0010[04]: Text. Text scrap[Grey]="<000>"
  1719. X0010[11]: Text. Text scrap[White]="    "
  1720. X0010[15]: Text. Text scrap[Grey]="<000>"
  1721. X0010[22]: Text. Text scrap[White]="<010>
  1722. X   "
  1723. X0011[04]: Text. Text scrap[Grey]="<000>"
  1724. X0011[11]: Text. Text scrap[White]="    "
  1725. X0011[15]: Text. Text scrap[Grey]="<000>"
  1726. X0011[22]: Text. Text scrap[Grey]="<010>
  1727. X<010>
  1728. X2. Test that some other base characters generate an error.<010>
  1729. X<010>
  1730. X   "
  1731. X0015[07]: Text. Text scrap[Grey]="(0)<010>
  1732. X   "
  1733. X0016[07]: Text. Text scrap[White]="<010>
  1734. X   "
  1735. X0017[07]: Text. Text scrap[White]="<010>
  1736. X   "
  1737. X0018[07]: Text. Text scrap[Grey]="<010>
  1738. X<010>
  1739. X3. Test that an error is generated if parenthesis is missing.<010>
  1740. X<010>
  1741. X   "
  1742. X0022[08]: Text. Text scrap[Grey]="4)<010>
  1743. X<010>
  1744. X4. Test legal digits in each base.<010>
  1745. X<010>
  1746. X   "
  1747. X0026[04]: Text. Text scrap[Grey]="<015>"
  1748. X0026[17]: Text. Text scrap[White]="<010>
  1749. X   "
  1750. X0027[04]: Text. Text scrap[Grey]="<010>
  1751. X"
  1752. X0027[12]: Text. Text scrap[White]="  "
  1753. X0027[14]: Text. Text scrap[Grey]="<028>"
  1754. X0027[22]: Text. Text scrap[White]=" "
  1755. X0027[23]: Text. Text scrap[Grey]="."
  1756. X0027[31]: Text. Text scrap[White]=" "
  1757. X0027[32]: Text. Text scrap[Grey]="?"
  1758. X0027[40]: Text. Text scrap[White]="<010>
  1759. X   "
  1760. X0028[04]: Text. Text scrap[Grey]="<012>"
  1761. X0028[12]: Text. Text scrap[White]="  "
  1762. X0028[14]: Text. Text scrap[Grey]="""
  1763. X0028[22]: Text. Text scrap[White]=" "
  1764. X0028[23]: Text. Text scrap[Grey]="8"
  1765. X0028[31]: Text. Text scrap[White]=" "
  1766. X0028[32]: Text. Text scrap[Grey]="N"
  1767. X0028[40]: Text. Text scrap[White]=" "
  1768. X0028[41]: Text. Text scrap[Grey]="c"
  1769. X0028[49]: Text. Text scrap[White]="<010>
  1770. X   "
  1771. X0029[04]: Text. Text scrap[Grey]="<001>"
  1772. X0029[11]: Text. Text scrap[White]=" "
  1773. X0029[12]: Text. Text scrap[Grey]="#"
  1774. X0029[19]: Text. Text scrap[White]=" "
  1775. X0029[20]: Text. Text scrap[Grey]="E"
  1776. X0029[27]: Text. Text scrap[White]=" "
  1777. X0029[28]: Text. Text scrap[Grey]="g"
  1778. X0029[35]: Text. Text scrap[White]="<010>
  1779. X   "
  1780. X0030[04]: Text. Text scrap[Grey]="<137>"
  1781. X0030[11]: Text. Text scrap[White]=" "
  1782. X0030[12]: Text. Text scrap[Grey]="<171>"
  1783. X0030[19]: Text. Text scrap[White]=" "
  1784. X0030[20]: Text. Text scrap[Grey]="<205>"
  1785. X0030[27]: Text. Text scrap[White]=" "
  1786. X0030[28]: Text. Text scrap[Grey]="<239>"
  1787. X0030[35]: Text. Text scrap[White]="  "
  1788. X0030[37]: Text. Text scrap[Grey]="<175>"
  1789. X0030[44]: Text. Text scrap[Grey]="<010>
  1790. X<010>
  1791. X5. Test illegal digits in each base.<010>
  1792. X<010>
  1793. X   "
  1794. X0034[16]: Text. Text scrap[Grey]=")<010>
  1795. X   "
  1796. X0035[11]: Text. Text scrap[Grey]=")<010>
  1797. X   "
  1798. X0036[11]: Text. Text scrap[Grey]=")<010>
  1799. X   "
  1800. X0037[10]: Text. Text scrap[Grey]=")<010>
  1801. X<010>
  1802. X6. Test what happens if there are the wrong number of digits<010>
  1803. X   (too few, too many).<010>
  1804. X<010>
  1805. X   "
  1806. X0042[10]: Text. Text scrap[White]="<010>
  1807. X   "
  1808. X0043[10]: Text. Text scrap[White]="<010>
  1809. X   "
  1810. X0044[10]: Text. Text scrap[White]="<010>
  1811. X   "
  1812. X0045[10]: Text. Text scrap[White]="<010>
  1813. X<010>
  1814. X   "
  1815. X0047[17]: Text. Text scrap[Grey]=")<010>
  1816. X   "
  1817. X0048[12]: Text. Text scrap[Grey]=")<010>
  1818. X   "
  1819. X0049[12]: Text. Text scrap[Grey]=")<010>
  1820. X   "
  1821. X0050[11]: Text. Text scrap[Grey]=")<010>
  1822. X<010>
  1823. X7. Test that an error is generated for a missing closing parenthesis.<010>
  1824. X<010>
  1825. X  "
  1826. X0055[01]: Text. Text scrap[White]="  "
  1827. X0055[11]: Text. Text scrap[Grey]="<010>
  1828. X<010>
  1829. X8. Test what happens in number is out of the range [0,255].<010>
  1830. X<010>
  1831. X  "
  1832. X0059[03]: Text. Text scrap[Grey]="<255>"
  1833. X0059[11]: Text. Text scrap[White]="<010>
  1834. X  "
  1835. X0060[11]: Text. Text scrap[White]="<010>
  1836. X  "
  1837. X0061[11]: Text. Text scrap[White]="<010>
  1838. X<010>
  1839. X"
  1840. X0063[01]: End Of File. 
  1841. X============================ End of TOKEN LIST DUMP ============================
  1842. X
  1843. Macro table dump skipped (Parser was not invoked).
  1844. Document list dump skipped (Parser was not invoked).
  1845. X
  1846. Global Local| Input File
  1847. X------------+-------------------------------------------------------------------
  1848. X     1     1| SC16: Test <special>^ sequence.
  1849. X     2     2| 
  1850. X     3     3| 1. Test that all base characters work (in both cases).
  1851. X     4     4|    These should provoke no errors.
  1852. X     5     5| 
  1853. X     6     6|    @^B(00000000)   @^b(00000000)
  1854. X     7     7|    @^O(000)   @^o(000)
  1855. X     8     8|    @^Q(000)   @^q(000)
  1856. X     9     9|    @^D(000)   @^d(000)
  1857. X    10    10|    @^H(00)    @^h(00)
  1858. X    11    11|    @^X(00)    @^x(00)
  1859. X    12    12| 
  1860. X    13    13| 2. Test that some other base characters generate an error.
  1861. X    14    14| 
  1862. X    15    15|    @^u(0)
  1863. X       Error|......^Expecting one of 'B', 'Q', 'D', 'H'.
  1864. X            |......^(For Binary, Octal, Decimal, and Hexadecimal).
  1865. X            |......^A decimal character representation takes the form "@^D(ddd)".
  1866. X            |......^(exactly 3 digits) where each digit d is in the range 0..9.
  1867. X    16    16|    @^y
  1868. X       Error|......^Expecting one of 'B', 'Q', 'D', 'H'.
  1869. X            |......^(For Binary, Octal, Decimal, and Hexadecimal).
  1870. X            |......^A decimal character representation takes the form "@^D(ddd)".
  1871. X            |......^(exactly 3 digits) where each digit d is in the range 0..9.
  1872. X    17    17|    @^#
  1873. X       Error|......^Expecting one of 'B', 'Q', 'D', 'H'.
  1874. X            |......^(For Binary, Octal, Decimal, and Hexadecimal).
  1875. X            |......^A decimal character representation takes the form "@^D(ddd)".
  1876. X            |......^(exactly 3 digits) where each digit d is in the range 0..9.
  1877. X    18    18|    @^(
  1878. X       Error|......^Expecting one of 'B', 'Q', 'D', 'H'.
  1879. X            |......^(For Binary, Octal, Decimal, and Hexadecimal).
  1880. X            |......^A decimal character representation takes the form "@^D(ddd)".
  1881. X            |......^(exactly 3 digits) where each digit d is in the range 0..9.
  1882. X    19    19| 
  1883. X    20    20| 3. Test that an error is generated if parenthesis is missing.
  1884. X    21    21| 
  1885. X    22    22|    @^D34)
  1886. X       Error|.......^Expecting '('.
  1887. X            |.......^A decimal character representation takes the form "@^D(ddd)".
  1888. X            |.......^(exactly 3 digits) where each digit d is in the range 0..9.
  1889. X    23    23| 
  1890. X    24    24| 4. Test legal digits in each base.
  1891. X    25    25| 
  1892. X    26    26|    @^B(00001111)
  1893. X    27    27|    @^O(012)  @^O(034) @^O(056) @^O(077)
  1894. X    28    28|    @^D(012)  @^D(034) @^D(056) @^D(078) @^D(099)
  1895. X    29    29|    @^H(01) @^H(23) @^H(45) @^H(67)
  1896. X    30    30|    @^H(89) @^H(AB) @^X(CD) @^X(EF)  @^x(af)
  1897. X    31    31| 
  1898. X    32    32| 5. Test illegal digits in each base.
  1899. X    33    33| 
  1900. X    34    34|    @^B(00000002)
  1901. X       Error|...............^Illegal digit.
  1902. X            |...............^A binary character representation takes the form "@^B(dddddddd)".
  1903. X            |...............^(exactly 8 digits) where each digit d is either 0 or 1.
  1904. X    35    35|    @^O(008)
  1905. X       Error|..........^Illegal digit.
  1906. X            |..........^An octal character representation takes the form "@^Q(ddd)" (or "@^O(ddd)").
  1907. X            |..........^(exactly 3 digits) where each digit d is in the range 0..7.
  1908. X    36    36|    @^D(00A)
  1909. X       Error|..........^Illegal digit.
  1910. X            |..........^A decimal character representation takes the form "@^D(ddd)".
  1911. X            |..........^(exactly 3 digits) where each digit d is in the range 0..9.
  1912. X    37    37|    @^H(0G)
  1913. X       Error|.........^Illegal digit.
  1914. X            |.........^A hexadecimal character representation takes the form "@^X(dd)" (or "@^H(dd)").
  1915. X            |.........^(exactly 2 digits) where each digit d is in the range 0..9,A..F.
  1916. X    38    38| 
  1917. X    39    39| 6. Test what happens if there are the wrong number of digits
  1918. X    40    40|    (too few, too many).
  1919. X    41    41| 
  1920. X    42    42|    @^B(1)
  1921. X       Error|.........^Illegal digit.
  1922. X            |.........^A binary character representation takes the form "@^B(dddddddd)".
  1923. X            |.........^(exactly 8 digits) where each digit d is either 0 or 1.
  1924. X    43    43|    @^O(1)
  1925. X       Error|.........^Illegal digit.
  1926. X            |.........^An octal character representation takes the form "@^Q(ddd)" (or "@^O(ddd)").
  1927. X            |.........^(exactly 3 digits) where each digit d is in the range 0..7.
  1928. X    44    44|    @^D(1)
  1929. X       Error|.........^Illegal digit.
  1930. X            |.........^A decimal character representation takes the form "@^D(ddd)".
  1931. X            |.........^(exactly 3 digits) where each digit d is in the range 0..9.
  1932. X    45    45|    @^H(1)
  1933. X       Error|.........^Illegal digit.
  1934. X            |.........^A hexadecimal character representation takes the form "@^X(dd)" (or "@^H(dd)").
  1935. X            |.........^(exactly 2 digits) where each digit d is in the range 0..9,A..F.
  1936. X    46    46| 
  1937. X    47    47|    @^B(000000001)
  1938. X       Error|................^Expecting ')'.
  1939. X            |................^A binary character representation takes the form "@^B(dddddddd)".
  1940. X            |................^(exactly 8 digits) where each digit d is either 0 or 1.
  1941. X    48    48|    @^O(0004)
  1942. X       Error|...........^Expecting ')'.
  1943. X            |...........^An octal character representation takes the form "@^Q(ddd)" (or "@^O(ddd)").
  1944. X            |...........^(exactly 3 digits) where each digit d is in the range 0..7.
  1945. X    49    49|    @^D(0001)
  1946. X       Error|...........^Expecting ')'.
  1947. X            |...........^A decimal character representation takes the form "@^D(ddd)".
  1948. X            |...........^(exactly 3 digits) where each digit d is in the range 0..9.
  1949. X    50    50|    @^H(005)
  1950. X       Error|..........^Expecting ')'.
  1951. X            |..........^A hexadecimal character representation takes the form "@^X(dd)" (or "@^H(dd)").
  1952. X            |..........^(exactly 2 digits) where each digit d is in the range 0..9,A..F.
  1953. X    51    51| 
  1954. X    52    52| 7. Test that an error is generated for a missing closing parenthesis.
  1955. X    53    53| 
  1956. X    54    54|   @^B(00000000
  1957. X       Error|...............^Expecting ')'.
  1958. X            |...............^A binary character representation takes the form "@^B(dddddddd)".
  1959. X            |...............^(exactly 8 digits) where each digit d is either 0 or 1.
  1960. X    55    55|   @^D(045(
  1961. X       Error|..........^Expecting ')'.
  1962. X            |..........^A decimal character representation takes the form "@^D(ddd)".
  1963. X            |..........^(exactly 3 digits) where each digit d is in the range 0..9.
  1964. X    56    56| 
  1965. X    57    57| 8. Test what happens in number is out of the range [0,255].
  1966. X    58    58| 
  1967. X    59    59|   @^D(255)
  1968. X    60    60|   @^D(256)
  1969. X       Error|..........^Character number is too large.
  1970. X            |..........^Character number must be in the range [0,255] (decimal).
  1971. X            |..........^A decimal character representation takes the form "@^D(ddd)".
  1972. X            |..........^(exactly 3 digits) where each digit d is in the range 0..9.
  1973. X    61    61|   @^D(999)
  1974. X       Error|..........^Character number is too large.
  1975. X            |..........^Character number must be in the range [0,255] (decimal).
  1976. X            |..........^A decimal character representation takes the form "@^D(ddd)".
  1977. X            |..........^(exactly 3 digits) where each digit d is in the range 0..9.
  1978. X    62    62| 
  1979. X            | <End-Of-File>
  1980. X------------+-------------------------------------------------------------------
  1981. X
  1982. There were 21 Errors.
  1983. END_OF_FILE
  1984. if test 20071 -ne `wc -c <'answers/sc16.lis'`; then
  1985.     echo shar: \"'answers/sc16.lis'\" unpacked with wrong size!
  1986. fi
  1987. # end of 'answers/sc16.lis'
  1988. fi
  1989. if test -f 'answers/sc21.lis' -a "${1}" != "-c" ; then 
  1990.   echo shar: Will not clobber existing file \"'answers/sc21.lis'\"
  1991. else
  1992. echo shar: Extracting \"'answers/sc21.lis'\" \(19255 characters\)
  1993. sed "s/^X//" >'answers/sc21.lis' <<'END_OF_FILE'
  1994. XFUNNELWEB LISTING FILE
  1995. X======================
  1996. X
  1997. Dump of mapped file "<<Suppressed>>".
  1998. X
  1999. MEMORY DUMP OF MAPPED FILE
  2000. X==========================
  2001. X
  2002. X+-------------------------------------------------+------------------+
  2003. X| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0123456789ABCDEF |
  2004. X+-------------------------------------------------+------------------+
  2005. X| 53 43 32 31 3A 20 54 65 73 74 20 67 65 6E 65 72 | SC21: Test gener |
  2006. X| 69 63 20 73 79 6E 74 61 78 20 63 68 65 63 6B 69 | ic syntax checki |
  2007. X| 6E 67 20 6F 66 20 70 72 61 67 6D 61 73 20 61 6E | ng of pragmas an |
  2008. X| 64 20 74 79 70 65 73 65 74 74 65 72 20 64 69 72 | d typesetter dir |
  2009. X| 65 63 74 69 76 65 73 2E 0A 0A 31 2E 20 54 65 73 | ectives...1. Tes |
  2010. X| 74 20 70 72 61 67 6D 61 20 6E 6F 74 20 61 74 20 | t pragma not at  |
  2011. X| 74 68 65 20 73 74 61 72 74 20 6F 66 20 6C 69 6E | the start of lin |
  2012. X| 65 2E 0A 20 20 20 40 70 0A 20 20 20 40 74 0A 0A | e..   @p.   @t.. |
  2013. X| 32 2E 20 54 65 73 74 20 63 68 61 72 61 63 74 65 | 2. Test characte |
  2014. X| 72 20 66 6F 6C 6C 6F 77 69 6E 67 20 3C 73 70 65 | r following <spe |
  2015. X| 63 69 61 6C 3E 70 20 69 73 20 6E 6F 74 20 61 20 | cial>p is not a  |
  2016. X| 62 6C 61 6E 6B 2E 0A 40 70 78 0A 40 74 78 0A 40 | blank..@px.@tx.@ |
  2017. X| 70 0A 40 74 0A 0A 33 2E 20 54 65 73 74 20 70 72 | p.@t..3. Test pr |
  2018. X| 61 67 6D 61 20 6C 69 6E 65 20 69 73 20 74 6F 6F | agma line is too |
  2019. X| 20 6C 6F 6E 67 20 28 6C 69 6D 69 74 20 69 73 20 |  long (limit is  |
  2020. X| 31 30 30 29 0A 20 20 20 20 20 20 20 20 20 31 20 | 100).         1  |
  2021. X| 20 20 20 20 20 20 20 20 32 20 20 20 20 20 20 20 |         2        |
  2022. X| 20 20 33 20 20 20 20 20 20 20 20 20 34 20 20 20 |   3         4    |
  2023. X| 20 20 20 20 20 20 35 20 20 20 20 20 20 20 20 20 |       5          |
  2024. X| 36 20 20 20 20 20 20 20 20 20 37 20 20 20 20 20 | 6         7      |
  2025. X| 20 20 20 20 38 20 20 20 20 20 20 20 20 20 39 20 |     8         9  |
  2026. X| 20 20 20 20 20 20 20 20 31 0A 40 70 20 34 35 36 |         1.@p 456 |
  2027. X| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
  2028. X| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
  2029. X| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
  2030. X| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
  2031. X| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
  2032. X| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 0A 40 | 78901234567890.@ |
  2033. X| 70 20 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | p 45678901234567 |
  2034. X| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 |
  2035. X| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 |
  2036. X| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 |
  2037. X| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 |
  2038. X| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 |
  2039. X| 38 39 30 31 0A 40 74 20 34 35 36 37 38 39 30 31 | 8901.@t 45678901 |
  2040. X| 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 | 2345678901234567 |
  2041. X| 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 | 8901234567890123 |
  2042. X| 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 | 4567890123456789 |
  2043. X| 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 | 0123456789012345 |
  2044. X| 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 | 6789012345678901 |
  2045. X| 32 33 34 35 36 37 38 39 30 0A 40 74 20 34 35 36 | 234567890.@t 456 |
  2046. X| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 | 7890123456789012 |
  2047. X| 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 | 3456789012345678 |
  2048. X| 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 | 9012345678901234 |
  2049. X| 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 | 5678901234567890 |
  2050. X| 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 | 1234567890123456 |
  2051. X| 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 0A | 789012345678901. |
  2052. X| 0A 34 2E 20 54 65 73 74 20 76 61 72 69 6F 75 73 | .4. Test various |
  2053. X| 20 64 69 66 66 65 72 65 6E 74 20 70 72 61 67 6D |  different pragm |
  2054. X| 61 20 6C 69 6E 65 73 2E 0A 40 70 20 24 23 25 40 | a lines..@p $#%@ |
  2055. X| 20 32 35 32 35 20 20 73 6C 6F 74 68 0A 40 74 20 |  2525  sloth.@t  |
  2056. X| 24 23 25 40 20 32 35 32 35 20 20 73 6C 6F 74 68 | $#%@ 2525  sloth |
  2057. X| 0A 0A 35 2E 20 54 65 73 74 20 70 72 61 67 6D 61 | ..5. Test pragma |
  2058. X| 20 77 69 74 68 20 6E 6F 20 61 72 67 75 6D 65 6E |  with no argumen |
  2059. X| 74 73 2E 20 28 57 69 6C 6C 20 67 65 74 20 61 20 | ts. (Will get a  |
  2060. X| 74 72 61 69 6C 69 6E 67 20 62 6C 61 6E 6B 73 20 | trailing blanks  |
  2061. X| 65 72 72 6F 72 2E 29 2E 0A 40 70 20 20 20 20 0A | error.)..@p    . |
  2062. X| 40 74 20 20 20 20 0A 0A 36 2E 20 54 65 73 74 20 | @t    ..6. Test  |
  2063. X| 70 72 61 67 6D 61 20 77 69 74 68 20 74 6F 6F 20 | pragma with too  |
  2064. X| 6D 61 6E 79 20 61 72 67 75 6D 65 6E 74 73 2E 0A | many arguments.. |
  2065. 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 |
  2066. 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 |
  2067. 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 |
  2068. X| 20 78 20 79 20 7A 0A 40 74 20 61 20 62 20 63 20 |  x y z.@t a b c  |
  2069. 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  |
  2070. 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  |
  2071. X| 74 20 75 20 76 20 77 20 78 20 79 20 7A 0A 0A    | t u v w x y z..  |
  2072. X+-------------------------------------------------+------------------+
  2073. X
  2074. X
  2075. X=========================== Start of LINE LIST DUMP ============================
  2076. X
  2077. Globl Local| Text
  2078. X-----------+--------------------------------------------------------------------
  2079. X00001 00001| SC21: Test generic syntax checking of pragmas and typesetter directives.<010>
  2080. X00002 00002| <010>
  2081. X00003 00003| 1. Test pragma not at the start of line.<010>
  2082. X00004 00004|    @p<010>
  2083. X00005 00005|    @t<010>
  2084. X00006 00006| <010>
  2085. X00007 00007| 2. Test character following <special>p is not a blank.<010>
  2086. X00008 00008| @px<010>
  2087. X00009 00009| @tx<010>
  2088. X00010 00010| @p<010>
  2089. X00011 00011| @t<010>
  2090. X00012 00012| <010>
  2091. X00013 00013| 3. Test pragma line is too long (limit is 100)<010>
  2092. X00014 00014|          1         2         3         4         5         6         7         8         9         1<010>
  2093. X00015 00015| @p 4567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890<010>
  2094. X00016 00016| @p 45678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901<010>
  2095. X00017 00017| @t 4567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890<010>
  2096. X00018 00018| @t 45678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901<010>
  2097. X00019 00019| <010>
  2098. X00020 00020| 4. Test various different pragma lines.<010>
  2099. X00021 00021| @p $#%@ 2525  sloth<010>
  2100. X00022 00022| @t $#%@ 2525  sloth<010>
  2101. X00023 00023| <010>
  2102. X00024 00024| 5. Test pragma with no arguments. (Will get a trailing blanks error.).<010>
  2103. X00025 00025| @p    <010>
  2104. X00026 00026| @t    <010>
  2105. X00027 00027| <010>
  2106. X00028 00028| 6. Test pragma with too many arguments.<010>
  2107. 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>
  2108. 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>
  2109. X00031 00031| <010>
  2110. X00032 00032| <End-Of-File><010>
  2111. X-----------+--------------------------------------------------------------------
  2112. Globl Local| Text
  2113. X
  2114. X============================ End of LINE LIST DUMP =============================
  2115. X
  2116. X
  2117. X=========================== Start of TOKEN LIST DUMP ===========================
  2118. X
  2119. Summary: There are 9 tokens in the token list.
  2120. X
  2121. Line[Column]: Token Description
  2122. X-------------------------------
  2123. X
  2124. X0001[01]: Text. Text scrap[Grey]="SC21: Test generic syntax checking of pragmas and typesetter directives.<010>
  2125. X<010>
  2126. X1. Test pragma not at the start of line.<010>
  2127. X   "
  2128. X0005[01]: Text. Text scrap[White]="   "
  2129. X0006[01]: Text. Text scrap[Grey]="<010>
  2130. X2. Test character following <special>p is not a blank.<010>
  2131. X"
  2132. X0012[01]: Text. Text scrap[Grey]="<010>
  2133. X3. Test pragma line is too long (limit is 100)<010>
  2134. X         1         2         3         4         5         6         7         8         9         1<010>
  2135. X"
  2136. X0019[01]: Text. Text scrap[Grey]="<010>
  2137. X4. Test various different pragma lines.<010>
  2138. X"
  2139. X0023[01]: Text. Text scrap[Grey]="<010>
  2140. X5. Test pragma with no arguments. (Will get a trailing blanks error.).<010>
  2141. X"
  2142. X0027[01]: Text. Text scrap[Grey]="<010>
  2143. X6. Test pragma with too many arguments.<010>
  2144. X"
  2145. X0031[01]: Text. Text scrap[White]="<010>
  2146. X"
  2147. X0032[01]: End Of File. 
  2148. X============================ End of TOKEN LIST DUMP ============================
  2149. X
  2150. Macro table dump skipped (Parser was not invoked).
  2151. Document list dump skipped (Parser was not invoked).
  2152. X
  2153. Global Local| Input File
  2154. X------------+-------------------------------------------------------------------
  2155. X     1     1| SC21: Test generic syntax checking of pragmas and typesetter directives.
  2156. X     2     2| 
  2157. X     3     3| 1. Test pragma not at the start of line.
  2158. X     4     4|    @p
  2159. X       Error|....^Pragma sequence @p must be at the start of a line.
  2160. X            |....^The rest of this line will be ignored.
  2161. X       Error|....^Unrecognised pragma. Possible legal pragmas are:
  2162. X            |....^   @p indentation = none | blank
  2163. X            |....^   @p maximum_input_line_length  = <num>|infinity
  2164. X            |....^   @p maximum_output_line_length = <num>|infinity
  2165. X            |....^   @p typesetter = none | tex
  2166. X            |....^The blanks between arguments are important.
  2167. X            |....^Pragma ignored.
  2168. X     5     5|    @t
  2169. X       Error|....^Typesetter directive @t must be at the start of a line.
  2170. X            |....^The rest of this line will be ignored.
  2171. X       Error|....^Unrecognised typesetter directive. Legal ones are:
  2172. X            |....^   @t new_page
  2173. X            |....^   @t table_of_contents
  2174. X            |....^   @t title <font> <align> <string>
  2175. X            |....^   @t vskip <num> mm
  2176. X            |....^The blanks between arguments are important.
  2177. X            |....^Typesetter directive ignored.
  2178. X     6     6| 
  2179. X     7     7| 2. Test character following <special>p is not a blank.
  2180. X     8     8| @px
  2181. X       Error|.^Pragma sequence @p must be followed by a blank.
  2182. X       Error|.^Unrecognised pragma. Possible legal pragmas are:
  2183. X            |.^   @p indentation = none | blank
  2184. X            |.^   @p maximum_input_line_length  = <num>|infinity
  2185. X            |.^   @p maximum_output_line_length = <num>|infinity
  2186. X            |.^   @p typesetter = none | tex
  2187. X            |.^The blanks between arguments are important.
  2188. X            |.^Pragma ignored.
  2189. X     9     9| @tx
  2190. X       Error|.^Typesetter directive @t must be followed by a blank.
  2191. X       Error|.^Unrecognised typesetter directive. Legal ones are:
  2192. X            |.^   @t new_page
  2193. X            |.^   @t table_of_contents
  2194. X            |.^   @t title <font> <align> <string>
  2195. X            |.^   @t vskip <num> mm
  2196. X            |.^The blanks between arguments are important.
  2197. X            |.^Typesetter directive ignored.
  2198. X    10    10| @p
  2199. X       Error|.^Pragma sequence @p must be followed by a blank.
  2200. X       Error|.^Unrecognised pragma. Possible legal pragmas are:
  2201. X            |.^   @p indentation = none | blank
  2202. X            |.^   @p maximum_input_line_length  = <num>|infinity
  2203. X            |.^   @p maximum_output_line_length = <num>|infinity
  2204. X            |.^   @p typesetter = none | tex
  2205. X            |.^The blanks between arguments are important.
  2206. X            |.^Pragma ignored.
  2207. X    11    11| @t
  2208. X       Error|.^Typesetter directive @t must be followed by a blank.
  2209. X       Error|.^Unrecognised typesetter directive. Legal ones are:
  2210. X            |.^   @t new_page
  2211. X            |.^   @t table_of_contents
  2212. X            |.^   @t title <font> <align> <string>
  2213. X            |.^   @t vskip <num> mm
  2214. X            |.^The blanks between arguments are important.
  2215. X            |.^Typesetter directive ignored.
  2216. X    12    12| 
  2217. X    13    13| 3. Test pragma line is too long (limit is 100)
  2218. X    14    14|          1         2         3         4         5         6         7         8         9         1
  2219. X       Error|.................................................................................^Input line is too long (this character is the first offender).
  2220. X            |.................................................................................^Currently, the maximum allowable input line length is 80.
  2221. X            |.................................................................................^Note: You can change this using a pragma directive (@p).
  2222. X    15    15| @p 4567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
  2223. X       Error|.^Unrecognised pragma. Possible legal pragmas are:
  2224. X            |.^   @p indentation = none | blank
  2225. X            |.^   @p maximum_input_line_length  = <num>|infinity
  2226. X            |.^   @p maximum_output_line_length = <num>|infinity
  2227. X            |.^   @p typesetter = none | tex
  2228. X            |.^The blanks between arguments are important.
  2229. X            |.^Pragma ignored.
  2230. X       Error|.................................................................................^Input line is too long (this character is the first offender).
  2231. X            |.................................................................................^Currently, the maximum allowable input line length is 80.
  2232. X            |.................................................................................^Note: You can change this using a pragma directive (@p).
  2233. X    16    16| @p 45678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901
  2234. X       Error|.^This pragma line is too long.
  2235. X            |.^The maximum pragma line length is 100 characters.
  2236. X       Error|.^Unrecognised pragma. Possible legal pragmas are:
  2237. X            |.^   @p indentation = none | blank
  2238. X            |.^   @p maximum_input_line_length  = <num>|infinity
  2239. X            |.^   @p maximum_output_line_length = <num>|infinity
  2240. X            |.^   @p typesetter = none | tex
  2241. X            |.^The blanks between arguments are important.
  2242. X            |.^Pragma ignored.
  2243. X       Error|.................................................................................^Input line is too long (this character is the first offender).
  2244. X            |.................................................................................^Currently, the maximum allowable input line length is 80.
  2245. X            |.................................................................................^Note: You can change this using a pragma directive (@p).
  2246. X    17    17| @t 4567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
  2247. X       Error|.^Unrecognised typesetter directive. Legal ones are:
  2248. X            |.^   @t new_page
  2249. X            |.^   @t table_of_contents
  2250. X            |.^   @t title <font> <align> <string>
  2251. X            |.^   @t vskip <num> mm
  2252. X            |.^The blanks between arguments are important.
  2253. X            |.^Typesetter directive ignored.
  2254. X       Error|.................................................................................^Input line is too long (this character is the first offender).
  2255. X            |.................................................................................^Currently, the maximum allowable input line length is 80.
  2256. X            |.................................................................................^Note: You can change this using a pragma directive (@p).
  2257. X    18    18| @t 45678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901
  2258. X       Error|.^This typestter directive line is too long.
  2259. X            |.^The maximum typesetter directive line length is 100 characters.
  2260. X       Error|.^Unrecognised typesetter directive. Legal ones are:
  2261. X            |.^   @t new_page
  2262. X            |.^   @t table_of_contents
  2263. X            |.^   @t title <font> <align> <string>
  2264. X            |.^   @t vskip <num> mm
  2265. X            |.^The blanks between arguments are important.
  2266. X            |.^Typesetter directive ignored.
  2267. X       Error|.................................................................................^Input line is too long (this character is the first offender).
  2268. X            |.................................................................................^Currently, the maximum allowable input line length is 80.
  2269. X            |.................................................................................^Note: You can change this using a pragma directive (@p).
  2270. X    19    19| 
  2271. X    20    20| 4. Test various different pragma lines.
  2272. X    21    21| @p $#%@ 2525  sloth
  2273. X       Error|.^Unrecognised pragma. Possible legal pragmas are:
  2274. X            |.^   @p indentation = none | blank
  2275. X            |.^   @p maximum_input_line_length  = <num>|infinity
  2276. X            |.^   @p maximum_output_line_length = <num>|infinity
  2277. X            |.^   @p typesetter = none | tex
  2278. X            |.^The blanks between arguments are important.
  2279. X            |.^Pragma ignored.
  2280. X    22    22| @t $#%@ 2525  sloth
  2281. X       Error|.^Unrecognised typesetter directive. Legal ones are:
  2282. X            |.^   @t new_page
  2283. X            |.^   @t table_of_contents
  2284. X            |.^   @t title <font> <align> <string>
  2285. X            |.^   @t vskip <num> mm
  2286. X            |.^The blanks between arguments are important.
  2287. X            |.^Typesetter directive ignored.
  2288. X    23    23| 
  2289. X    24    24| 5. Test pragma with no arguments. (Will get a trailing blanks error.).
  2290. X    25    25| @p    
  2291. X       Error|.^Pragma sequence @p must be followed by a keyword.
  2292. X       Error|.^Unrecognised pragma. Possible legal pragmas are:
  2293. X            |.^   @p indentation = none | blank
  2294. X            |.^   @p maximum_input_line_length  = <num>|infinity
  2295. X            |.^   @p maximum_output_line_length = <num>|infinity
  2296. X            |.^   @p typesetter = none | tex
  2297. X            |.^The blanks between arguments are important.
  2298. X            |.^Pragma ignored.
  2299. X     Warning|......^Line has trailing spaces up to and including this space.
  2300. X    26    26| @t    
  2301. X       Error|.^Typesetter directive @t must be followed by a keyword.
  2302. X       Error|.^Unrecognised typesetter directive. Legal ones are:
  2303. X            |.^   @t new_page
  2304. X            |.^   @t table_of_contents
  2305. X            |.^   @t title <font> <align> <string>
  2306. X            |.^   @t vskip <num> mm
  2307. X            |.^The blanks between arguments are important.
  2308. X            |.^Typesetter directive ignored.
  2309. X     Warning|......^Line has trailing spaces up to and including this space.
  2310. X    27    27| 
  2311. X    28    28| 6. Test pragma with too many arguments.
  2312. 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
  2313. X       Error|.^Unrecognised pragma. Possible legal pragmas are:
  2314. X            |.^   @p indentation = none | blank
  2315. X            |.^   @p maximum_input_line_length  = <num>|infinity
  2316. X            |.^   @p maximum_output_line_length = <num>|infinity
  2317. X            |.^   @p typesetter = none | tex
  2318. X            |.^The blanks between arguments are important.
  2319. X            |.^Pragma ignored.
  2320. 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
  2321. X       Error|.^Unrecognised typesetter directive. Legal ones are:
  2322. X            |.^   @t new_page
  2323. X            |.^   @t table_of_contents
  2324. X            |.^   @t title <font> <align> <string>
  2325. X            |.^   @t vskip <num> mm
  2326. X            |.^The blanks between arguments are important.
  2327. X            |.^Typesetter directive ignored.
  2328. X    31    31| 
  2329. X            | <End-Of-File>
  2330. X------------+-------------------------------------------------------------------
  2331. X
  2332. There were 31 Errors and 2 Warnings.
  2333. END_OF_FILE
  2334. if test 19255 -ne `wc -c <'answers/sc21.lis'`; then
  2335.     echo shar: \"'answers/sc21.lis'\" unpacked with wrong size!
  2336. fi
  2337. # end of 'answers/sc21.lis'
  2338. fi
  2339. if test -f 'userman/u_manual.aux' -a "${1}" != "-c" ; then 
  2340.   echo shar: Will not clobber existing file \"'userman/u_manual.aux'\"
  2341. else
  2342. echo shar: Extracting \"'userman/u_manual.aux'\" \(19933 characters\)
  2343. sed "s/^X//" >'userman/u_manual.aux' <<'END_OF_FILE'
  2344. X\relax 
  2345. X\@writefile{toc}{\string\contentsline\space {chapter}{Preface}{9}}
  2346. X\@writefile{toc}{\string\contentsline\space {chapter}{Acknowledgements}{11}}
  2347. X\@writefile{toc}{\string\contentsline\space {chapter}{Presentation Notes}{13}}
  2348. X\@writefile{toc}{\string\contentsline\space {chapter}{\string\numberline\space {1}A Tutorial Introduction}{15}}
  2349. X\@writefile{lof}{\string\addvspace\space {10pt}}
  2350. X\@writefile{lot}{\string\addvspace\space {10pt}}
  2351. X\newlabel{chapintroduction}{{1}{15}}
  2352. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {1.1}What is Literate Programming?}{15}}
  2353. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {1.2}What is FunnelWeb?}{18}}
  2354. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {1.3}The Name FunnelWeb}{19}}
  2355. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {1.4}A FunnelWeb Tutorial}{19}}
  2356. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {1.5}A Hello World Document}{20}}
  2357. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {1.6}Macro Facilities}{22}}
  2358. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.6.1}Simple Macros}{22}}
  2359. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.6.2}Number of Times Called}{23}}
  2360. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.6.3}Indentation}{25}}
  2361. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.6.4}Additive Macros}{26}}
  2362. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.6.5}Parameterized Macros}{28}}
  2363. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.6.6}Macro Expansion}{30}}
  2364. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.6.7}Include Files}{30}}
  2365. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {1.7}Typesetting Facilities}{32}}
  2366. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.7.1}Overview}{32}}
  2367. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.7.2}Typesetter Independence}{34}}
  2368. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.7.3}Hierarchical Structure}{34}}
  2369. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.7.4}Understanding the Printed Documentation}{35}}
  2370. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.7.5}Literals and Emphasis}{37}}
  2371. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.7.6}Adding a Header Page}{37}}
  2372. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.7.7}Comments}{37}}
  2373. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {1.8}A Complete Example}{38}}
  2374. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {1.9}Summary}{39}}
  2375. X\@writefile{toc}{\string\contentsline\space {chapter}{\string\numberline\space {2}FunnelWeb Hints}{41}}
  2376. X\@writefile{lof}{\string\addvspace\space {10pt}}
  2377. X\@writefile{lot}{\string\addvspace\space {10pt}}
  2378. X\newlabel{chapadvanced}{{2}{41}}
  2379. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {2.1}Macro Names}{41}}
  2380. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {2.2}Quick Names}{42}}
  2381. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {2.3}FunnelWeb the Martinet}{42}}
  2382. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {2.4}Fiddling With End of Lines}{43}}
  2383. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {2.5}Fudging Conditionals}{44}}
  2384. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {2.6}Changing the Strength of Headings}{46}}
  2385. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {2.7}Efficiency Notes}{47}}
  2386. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {2.8}Interactive Mode}{47}}
  2387. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {2.9}Setting Up Default Options}{49}}
  2388. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {2.10}FunnelWeb and Make}{49}}
  2389. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {2.11}The Dangers of FunnelWeb}{50}}
  2390. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {2.12}Wholistic Debugging}{53}}
  2391. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {2.13}Examples of FunnelWeb Applications}{53}}
  2392. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {2.13.1}Analyzing the Monster Postscript Header File}{54}}
  2393. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {2.13.2}Making Ada ADTs more A}{55}}
  2394. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {2.13.3}Multiple Language Systems}{55}}
  2395. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {2.13.4}The Case of the Small Function}{56}}
  2396. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {2.13.5}When Comments are Bad}{57}}
  2397. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {2.13.6}Documents That Share Text}{58}}
  2398. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {2.13.7}Generics}{59}}
  2399. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {2.14}Summary}{62}}
  2400. X\@writefile{toc}{\string\contentsline\space {chapter}{\string\numberline\space {3}FunnelWeb Definition}{63}}
  2401. X\@writefile{lof}{\string\addvspace\space {10pt}}
  2402. X\@writefile{lot}{\string\addvspace\space {10pt}}
  2403. X\newlabel{chapdefinition}{{3}{63}}
  2404. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3.1}Introduction}{63}}
  2405. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3.2}Notation}{63}}
  2406. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3.3}Terminology}{63}}
  2407. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3.4}An Architectural Overview}{64}}
  2408. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3.5}Diagnostics}{65}}
  2409. X\newlabel{diagnostics}{{3.5}{65}}
  2410. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3.6}Typesetter Independence}{65}}
  2411. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3.7}Command Line Interface}{66}}
  2412. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.7.1}Invoking FunnelWeb}{66}}
  2413. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.7.2}Command Line Arguments}{67}}
  2414. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.7.3}Options}{68}}
  2415. X\newlabel{commandlineoptions}{{3.7.3}{68}}
  2416. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3.8}File Name Inheritance}{70}}
  2417. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3.9}FunnelWeb Startup}{70}}
  2418. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3.10}Scanner}{71}}
  2419. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.10.1}Basic Input File Processing}{71}}
  2420. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.10.2}Special Sequences}{72}}
  2421. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.10.3}Setting the Special Character}{74}}
  2422. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.10.4}Inserting the Special Character into the Text}{74}}
  2423. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.10.5}Inserting Arbitrary Characters into the Text}{74}}
  2424. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.10.6}Comments}{75}}
  2425. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.10.7}Quick Names}{76}}
  2426. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.10.8}Inserting End of Line Markers}{76}}
  2427. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.10.9}Suppressing End of Line Markers}{77}}
  2428. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.10.10}Include Files}{77}}
  2429. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.10.11}Pragmas}{78}}
  2430. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.10.11.1}Indentation}{78}}
  2431. X\newlabel{indentationpragma}{{3.10.11.1}{78}}
  2432. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.10.11.2}Maximum Input Line Length}{79}}
  2433. X\newlabel{millpragma}{{3.10.11.2}{79}}
  2434. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.10.11.3}Maximum Output File Line Length}{79}}
  2435. X\newlabel{mollpragma}{{3.10.11.3}{79}}
  2436. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.10.11.4}Typesetter}{80}}
  2437. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.10.12}Freestanding Typesetter Directives}{81}}
  2438. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.10.12.1}New Page}{81}}
  2439. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.10.12.2}Table of Contents}{81}}
  2440. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.10.12.3}Vertical Skip}{81}}
  2441. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.10.12.4}Title}{82}}
  2442. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.10.13}Scanner/Parser Interface}{82}}
  2443. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3.11}Parser}{82}}
  2444. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.11.1}High Level Structure}{82}}
  2445. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.11.2}Free Text}{83}}
  2446. X\newlabel{typesetterpragma}{{3.11.2}{83}}
  2447. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.11.3}Typesetter Directives}{83}}
  2448. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.11.3.1}Section}{83}}
  2449. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.11.3.2}Literal Directive}{84}}
  2450. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.11.3.3}Emphasis Directive}{85}}
  2451. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.11.4}Macros}{85}}
  2452. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.11.4.1}Names}{86}}
  2453. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.11.4.2}Formal Parameter Lists}{86}}
  2454. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.11.5}Expressions}{86}}
  2455. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.11.6}Macro Calls}{86}}
  2456. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.11.7}Formal Parameters}{87}}
  2457. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.11.8}Macros are Static}{87}}
  2458. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3.12}Analyser}{88}}
  2459. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3.13}Tangle}{88}}
  2460. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3.14}Weave}{89}}
  2461. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.14.1}Target Typesetter}{89}}
  2462. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.14.2}Cross Reference Numbering}{89}}
  2463. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3.15}FunnelWeb Shell}{90}}
  2464. X\newlabel{commandshell}{{3.15}{90}}
  2465. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.15.1}Introduction}{90}}
  2466. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.15.2}Return Statuses}{90}}
  2467. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.15.3}Command Line Length}{91}}
  2468. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.15.4}String Substitution}{91}}
  2469. X\newlabel{stringsubstitution}{{3.15.4}{91}}
  2470. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.15.5}How a Command Line is Processed}{92}}
  2471. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.15.6}Options}{92}}
  2472. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {3.15.7}Shell Commands}{93}}
  2473. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.1}Absent}{93}}
  2474. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.2}Codify}{93}}
  2475. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.3}Compare}{93}}
  2476. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.4}Define}{94}}
  2477. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.5}Diff}{94}}
  2478. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.6}Diffsummary}{95}}
  2479. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.7}Diffzero}{95}}
  2480. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.8}Eneo}{95}}
  2481. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.9}Execute}{96}}
  2482. X\newlabel{executecommand}{{3.15.7.9}{96}}
  2483. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.10}Exists}{96}}
  2484. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.11}Fixeols}{96}}
  2485. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.12}Fw}{97}}
  2486. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.13}Help}{97}}
  2487. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.14}Here}{98}}
  2488. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.15}Quit}{98}}
  2489. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.16}Set}{98}}
  2490. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.17}Show}{98}}
  2491. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.18}Skipto}{98}}
  2492. X\newlabel{skiptocommand}{{3.15.7.18}{98}}
  2493. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.19}Status}{99}}
  2494. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.20}Tolerate}{100}}
  2495. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.21}Trace}{100}}
  2496. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.22}Write}{100}}
  2497. X\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {3.15.7.23}Writeu}{100}}
  2498. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3.16}Concluding Remarks}{100}}
  2499. X\@writefile{toc}{\string\contentsline\space {chapter}{\string\numberline\space {4}FunnelWeb Installation}{101}}
  2500. X\@writefile{lof}{\string\addvspace\space {10pt}}
  2501. X\@writefile{lot}{\string\addvspace\space {10pt}}
  2502. X\newlabel{chapinstall}{{4}{101}}
  2503. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {4.1}Obtaining a Copy of FunnelWeb}{101}}
  2504. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {4.2}Establishing The Directory Tree}{102}}
  2505. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {4.2.1}Admin Directory}{102}}
  2506. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {4.2.2}Answers Directory}{102}}
  2507. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {4.2.3}Hackman Directory}{103}}
  2508. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {4.2.4}Results Directory}{103}}
  2509. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {4.2.5}Scripts Directory}{103}}
  2510. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {4.2.6}Sources Directory}{103}}
  2511. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {4.2.7}Tests Directory}{104}}
  2512. X\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {4.2.8}Userman Directory}{105}}
  2513. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {4.3}Compiling FunnelWeb}{105}}
  2514. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {4.4}Testing FunnelWeb}{105}}
  2515. X\newlabel{testingfunnelweb}{{4.4}{105}}
  2516. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {4.5}Installing FunnelWeb}{106}}
  2517. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {4.6}Printing Manuals}{107}}
  2518. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {4.7}Installation Problems?}{107}}
  2519. X\@writefile{toc}{\string\contentsline\space {chapter}{\string\numberline\space {5}FunnelWeb Administration}{109}}
  2520. X\@writefile{lof}{\string\addvspace\space {10pt}}
  2521. X\@writefile{lot}{\string\addvspace\space {10pt}}
  2522. X\newlabel{chapadministration}{{5}{109}}
  2523. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {5.1}Introduction}{109}}
  2524. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {5.2}The User's Commitment To FunnelWeb}{109}}
  2525. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {5.3}Documentation}{110}}
  2526. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {5.4}Registration}{110}}
  2527. X\newlabel{registration}{{5.4}{110}}
  2528. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {5.5}Support}{110}}
  2529. X\newlabel{support}{{5.5}{110}}
  2530. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {5.6}Copyright}{112}}
  2531. X\newlabel{copyright}{{5.6}{112}}
  2532. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {5.7}Nowarranty}{112}}
  2533. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {5.8}Distribution}{113}}
  2534. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {5.9}Modification}{113}}
  2535. X\newlabel{modification}{{5.9}{113}}
  2536. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {5.10}Versions}{114}}
  2537. X\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {5.11}FTP Archive and Author}{114}}
  2538. X\newlabel{ftparchive}{{5.11}{114}}
  2539. X\@writefile{toc}{\string\contentsline\space {chapter}{\string\numberline\space {A}Glossary}{115}}
  2540. X\@writefile{lof}{\string\addvspace\space {10pt}}
  2541. X\@writefile{lot}{\string\addvspace\space {10pt}}
  2542. X\@writefile{toc}{\string\contentsline\space {chapter}{\string\numberline\space {B}References}{117}}
  2543. X\@writefile{lof}{\string\addvspace\space {10pt}}
  2544. X\@writefile{lot}{\string\addvspace\space {10pt}}
  2545. X\@writefile{toc}{\string\contentsline\space {chapter}{Index}{117}}
  2546. END_OF_FILE
  2547. if test 19933 -ne `wc -c <'userman/u_manual.aux'`; then
  2548.     echo shar: \"'userman/u_manual.aux'\" unpacked with wrong size!
  2549. fi
  2550. # end of 'userman/u_manual.aux'
  2551. fi
  2552. echo shar: End of archive 10 \(of 20\).
  2553. cp /dev/null ark10isdone
  2554. MISSING=""
  2555. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ; do
  2556.     if test ! -f ark${I}isdone ; then
  2557.     MISSING="${MISSING} ${I}"
  2558.     fi
  2559. done
  2560. if test "${MISSING}" = "" ; then
  2561.     echo You have unpacked all 20 archives.
  2562.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  2563. else
  2564.     echo You still need to unpack the following archives:
  2565.     echo "        " ${MISSING}
  2566. fi
  2567. ##  End of shell archive.
  2568. exit 0
  2569.