home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / misc / volume38 / lout / part05 < prev    next >
Encoding:
Text File  |  1993-08-11  |  74.8 KB  |  2,696 lines

  1. Newsgroups: comp.sources.misc
  2. From: jeff@joyce.cs.su.oz.au (Jeff Kingston)
  3. Subject: v38i073:  lout - Lout document formatting system, v2.05, Part05/35
  4. Message-ID: <1993Aug8.180644.11335@sparky.sterling.com>
  5. X-Md4-Signature: 63ef2d6b909b44e01c450463f10b9122
  6. Sender: kent@sparky.sterling.com (Kent Landfield)
  7. Organization: Sterling Software
  8. Date: Sun, 8 Aug 1993 18:06:44 GMT
  9. Approved: kent@sparky.sterling.com
  10.  
  11. Submitted-by: jeff@joyce.cs.su.oz.au (Jeff Kingston)
  12. Posting-number: Volume 38, Issue 73
  13. Archive-name: lout/part05
  14. Environment: UNIX
  15. Supersedes: lout: Volume 37, Issue 99-128
  16.  
  17. #! /bin/sh
  18. # This is a shell archive.  Remove anything before this line, then feed it
  19. # into a shell via "sh file" or similar.  To overwrite existing files,
  20. # type "sh file -c".
  21. # Contents:  doc/tr.eq/outfile.ps.B doc/tr.impl/oldrefs.li z29.c
  22. # Wrapped by kent@sparky on Sun Aug  8 12:29:22 1993
  23. PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:/usr/lbin ; export PATH
  24. echo If this archive is complete, you will see the following message:
  25. echo '          "shar: End of archive 5 (of 35)."'
  26. if test -f 'doc/tr.eq/outfile.ps.B' -a "${1}" != "-c" ; then 
  27.   echo shar: Will not clobber existing file \"'doc/tr.eq/outfile.ps.B'\"
  28. else
  29.   echo shar: Extracting \"'doc/tr.eq/outfile.ps.B'\" \(45806 characters\)
  30.   sed "s/^X//" >'doc/tr.eq/outfile.ps.B' <<'END_OF_FILE'
  31. X1417 11118 moveto(As)s 1749 x(this)s 2160 x(last)s 2557 x(example)s 3433 x(shows,)s
  32. X4158 x(it)s 4356 x(is)s 
  33. X220 fnt13
  34. X4581 11114 moveto(nextcol)s 
  35. X240 fnt34
  36. X5342 11118 moveto(and)s 5754 x(the)s
  37. X6112 x(various)s 
  38. X220 fnt13
  39. X6882 11114 moveto(above)s 
  40. X240 fnt34
  41. X7546 11118 moveto(symbols)s 8410 x(that)s 8834 x(lay)s
  42. X9192 x(out)s 9564 x(the)s 9922 x(array;)s 
  43. X220 fnt13
  44. X1417 10826 moveto(matrix)s 
  45. X240 fnt34
  46. X2096 10830 moveto(attaches)s
  47. X2947 x(the)s 
  48. X220 fnt13
  49. X3321 10826 moveto(atleft)s 
  50. X240 fnt34
  51. X3878 10830 moveto(and)s 
  52. X220 fnt13
  53. X4306 10826 moveto(atright)s 
  54. X240 fnt34
  55. X4997 10830 moveto(options)s
  56. X5784 x(and)s 6212 x(makes)s 6905 x(sure)s 7385 x(the)s 7759 x(result)s
  57. X8371 x(appears)s 9183 x(in)s 9451 x(the)s 9825 x(correct)s 1417 10542 moveto(vertical)s
  58. X2185 x(position)s 3009 x(relative)s 3777 x(to)s 4016 x(the)s 4361 x(rest)s
  59. X4758 x(of)s 5010 x(the)s 5355 x(equation.)s 6352 x(So)s 6658 x(the)s
  60. X7003 x(right)s 7507 x(parameter)s 8514 x(of)s 
  61. X220 fnt13
  62. X8766 10538 moveto(matrix)s 
  63. X240 fnt34
  64. X9416 10542 moveto(may)s
  65. X9881 x(be)s 10160 x(any)s 1417 10254 moveto(object.)s 1897 9880 moveto(Each)s 2452 x(of)s
  66. X2728 x(the)s 3097 x(Eq)s 3440 x(symbols)s 4315 x(that)s 4750 x(takes)s
  67. X5318 x(parameters)s 6442 x(also)s 6904 x(has)s 7300 x(a)s 
  68. X220 fnt13
  69. X7483 9876 moveto(gap)s
  70. X
  71. X240 fnt34
  72. X7926 9880 moveto(option,)s 8675 x(which)s 9337 x(controls)s 10184 x(the)s 1417 9592 moveto(amount)s
  73. X2195 x(of)s 2454 x(space)s 3045 x(inserted)s 3861 x(by)s 4161 x(the)s
  74. X4513 x(symbol:)s 
  75. X220 fnt13
  76. X1897 9039 moveto(x over y)s 
  77. X240 fnt35
  78. X5866 9146 moveto(x)s gsave
  79. X5866 9096 translate
  80. X106 0 0 0 240 288 0 LoutGraphic
  81. Xgsave
  82. X0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke
  83. Xgrestore
  84. X
  85. Xgrestore
  86. X
  87. X240 fnt35
  88. X5866 8942 moveto(y)s 
  89. X220 fnt13
  90. X1897 8379 moveto(x over gap { 3p } y)s
  91. X
  92. X240 fnt35
  93. X5866 8498 moveto(x)s gsave
  94. X5866 8436 translate
  95. X106 0 0 0 240 288 0 LoutGraphic
  96. Xgsave
  97. X0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke
  98. Xgrestore
  99. X
  100. Xgrestore
  101. X
  102. X240 fnt35
  103. X5866 8270 moveto(y)s 
  104. X240 fnt34
  105. X1417 7770 moveto(Eq)s 1743 x(usually)s 2494 x(gets)s
  106. X2939 x(the)s 3291 x(spacing)s 4082 x(right)s 4593 x(without)s 5384 x(help.)s
  107. X
  108. X240 fnt36
  109. X1417 6977 moveto(3.)s 1717 x(Spacing)s 
  110. X240 fnt34
  111. X1897 6500 moveto(There)s 2514 x(is)s 2733 x(a)s
  112. X2899 x(basic)s 3450 x(rule)s 3881 x(governing)s 4912 x(the)s 5264 x(use)s
  113. X5643 x(of)s 5902 x(white)s 6493 x(space)s 7084 x(characters)s 8111 x(\(space,)s
  114. X8841 x(tab,)s 9253 x(and)s 9659 x(newline\))s 1417 6212 moveto(in)s 1663 x(the)s
  115. X2015 x(input)s 2567 x(to)s 2813 x(Lout:)s 3451 x(white)s 4042 x(space)s
  116. X4633 x(between)s 5490 x(two)s 5909 x(objects)s 6646 x(affects)s 7341 x(the)s
  117. X7693 x(result;)s 8349 x(white)s 8940 x(space)s 9531 x(between)s 10388 x(a)s
  118. X1417 5924 moveto(symbol)s 2182 x(and)s 2588 x(its)s 2873 x(parameter)s 3887 x(does)s
  119. X4386 x(not.)s 1897 5550 moveto(Although)s 2862 x(this)s 3267 x(rule)s 3698 x(is)s
  120. X3917 x(just)s 4322 x(right)s 4833 x(most)s 5358 x(of)s 5617 x(the)s
  121. X5969 x(time,)s 6513 x(it)s 6705 x(is)s 6924 x(not)s 7290 x(adequate)s
  122. X8200 x(for)s 8538 x(equation)s 9422 x(formatting.)s 1417 5262 moveto(Getting)s 2239 x(the)s
  123. X2636 x(horizontal)s 3710 x(spacing)s 4546 x(right)s 5102 x(in)s 5393 x(equations)s
  124. X6415 x(is)s 6679 x(a)s 6890 x(very)s 7420 x(\207ddly)s 8084 x(business,)s
  125. X9060 x(involving)s 10083 x(four)s 1417 4974 moveto(different)s 2310 x(sizes)s 2846 x(of)s
  126. X3117 x(space)s 3720 x(\(zero,)s 4342 x(thin,)s 4846 x(medium,)s 5762 x(and)s
  127. X6180 x(thick\),)s 6869 x(and)s 7287 x(different)s 8180 x(rules)s 8716 x(for)s
  128. X9066 x(spacing)s 9869 x(within)s 1417 4686 moveto(superscripts)s 2626 x(and)s 3040 x(subscripts)s
  129. X4064 x(to)s 4318 x(those)s 4891 x(applying)s 5797 x(outside,)s 6616 x(according)s
  130. X7627 x(to)s 7881 x(a)s 8055 x(leading)s 8827 x(authority)s 9758 x([)s
  131. X9837 x(6)s 9957 x(].)s 10224 x(Eq)s 1417 4398 moveto(therefore)s 2344 x(takes)s
  132. X2901 x(the)s 3259 x(spacing)s 4056 x(decisions)s 5012 x(upon)s 5558 x(itself,)s
  133. X6160 x(and)s 6572 x(con)s 6918 x(sequently)s 7901 x(chooses)s 8725 x(to)s
  134. X8977 x(ignore)s 9654 x(all)s 9958 x(white)s 1417 4110 moveto(space)s 2008 x(in)s
  135. X2254 x(its)s 2539 x(input,)s 3151 x(even)s 3663 x(between)s 4520 x(two)s
  136. X4939 x(objects.)s 
  137. X153 fnt34
  138. X5676 4215 moveto(1)s 
  139. X240 fnt34
  140. X1897 3736 moveto(Every)s 2516 x(symbol)s 3269 x(provided)s
  141. X4168 x(by)s 4456 x(Eq)s 4770 x(has)s 5137 x(a)s 
  142. X240 fnt35
  143. X5291 x(full)s
  144. X5657 x(name)s 
  145. X240 fnt34
  146. X6176 x(,)s 6284 x(which)s 6917 x(denotes)s 7696 x(the)s
  147. X8036 x(symbol)s 8789 x(without)s 9568 x(any)s 9962 x(space)s 1417 3448 moveto(attached.)s
  148. X2389 x(Many)s 3004 x(symbols)s 3858 x(also)s 4299 x(have)s 4807 x(a)s
  149. X
  150. X240 fnt35
  151. X4969 x(short)s 5517 x(name)s 
  152. X240 fnt34
  153. X6036 x(,)s 6152 x(which)s 6793 x(denotes)s
  154. X7580 x(the)s 7928 x(same)s 8475 x(symbol)s 9236 x(with)s 9717 x(what)s
  155. X10238 x(Eq)s 1417 3160 moveto(considers)s 2388 x(to)s 2642 x(be)s 2936 x(an)s
  156. X3230 x(appropriate)s 4386 x(amount)s 5172 x(of)s 5439 x(space)s 6038 x(for)s
  157. X6384 x(that)s 6810 x(symbol)s 7583 x(attached)s 8447 x(to)s 8701 x(it.)s
  158. X9021 x(For)s 9421 x(example,)s 
  159. X240 fnt33
  160. X10359 3153 moveto(\243)s gsave
  161. X1417 2442 translate
  162. X680 0 0 0 240 288 60 LoutGraphic
  163. Xgsave
  164. X0 0 moveto xsize 0 lineto stroke
  165. Xgrestore
  166. X
  167. Xgrestore
  168. X
  169. X153 fnt34
  170. X1417 2226 moveto(1)s 
  171. X192 fnt34
  172. X1493 2148 moveto(This)s
  173. X1876 x(effect)s 2353 x(is)s 2523 x(produced)s 3279 x(by)s 3514 x(enclosing)s
  174. X4291 x(the)s 4568 x(entire)s 5046 x(equation)s 5749 x(in)s 
  175. X172 fnt13
  176. X5941 2146 moveto(0c @Space)s
  177. X
  178. X192 fnt34
  179. X6828 2148 moveto(.)s 6967 x(The)s 7308 x(simplest)s 7988 x(way)s 8350 x(to)s
  180. X8542 x(restore)s 9104 x(the)s 9381 x(effect)s 1417 1918 moveto(of)s 1628 x(white)s
  181. X2105 x(space)s 2582 x(to)s 2783 x(part)s 3132 x(of)s 3343 x(an)s
  182. X3576 x(equation)s 4288 x(is)s 4467 x(to)s 4668 x(enclose)s 5294 x(that)s
  183. X5633 x(part)s 5982 x(in)s 6183 x(a)s 
  184. X172 fnt13
  185. X6320 1916 moveto(@Font)s 
  186. X192 fnt34
  187. X6888 1918 moveto(symbol.)s
  188. X7600 x(Eq)s 7865 x(also)s 8225 x(changes)s 8894 x(the)s 9180 x(value)s
  189. X9647 x(of)s 1417 1688 moveto(the)s 
  190. X172 fnt13
  191. X1706 1686 moveto(v)s 
  192. X192 fnt34
  193. X1847 1688 moveto(unit,)s 2248 x(so)s
  194. X2473 x(if)s 2644 x(a)s 2784 x(paragraph)s 3604 x(of)s 3818 x(\207lled)s
  195. X4266 x(text)s 4608 x(is)s 4790 x(desired)s 5397 x(within)s 5941 x(an)s
  196. X6177 x(equation,)s 6940 x(it)s 7101 x(may)s 7486 x(be)s 7722 x(necessary)s
  197. X8520 x(to)s 8724 x(enclose)s 9353 x(it)s 9514 x(in)s 9718 x(a)s
  198. X
  199. X172 fnt13
  200. X1417 1456 moveto(@Break)s 
  201. X192 fnt34
  202. X2086 1458 moveto(symbol.)s 
  203. Xpgsave restore
  204. Xshowpage
  205. X
  206. X%%Page: ? 6
  207. X%%BeginPageSetup
  208. X/pgsave save def
  209. X0.0500 dup scale 10 setlinewidth
  210. X%%EndPageSetup
  211. X
  212. X240 fnt34
  213. X5754 15258 moveto(-)s 5893 x(5)s 6073 x(-)s 1417 14667 moveto(has)s 1796 x(full)s
  214. X2187 x(name)s 
  215. X220 fnt13
  216. X2765 14663 moveto(lessequal)s 
  217. X240 fnt34
  218. X3751 14667 moveto(and)s 4157 x(short)s 4695 x(name)s
  219. X
  220. X220 fnt13
  221. X5273 14663 moveto(<=)s 
  222. X240 fnt34
  223. X5529 14667 moveto(:)s 
  224. X220 fnt13
  225. X1897 14160 moveto(a lessequal b)s 
  226. X240 fnt35
  227. X5866 14164 moveto(a)s 
  228. X240 fnt33
  229. X5986 14157 moveto(\243)s
  230. X
  231. X240 fnt35
  232. X6117 14164 moveto(b)s 
  233. X220 fnt13
  234. X1897 13657 moveto(a <= b)s 
  235. X240 fnt35
  236. X5866 13661 moveto(a)s 
  237. X240 fnt33
  238. X6058 13654 moveto(\243)s 
  239. X240 fnt35
  240. X6261 13661 moveto(b)s
  241. X
  242. X240 fnt34
  243. X1417 13202 moveto(Eq)s 1745 x(puts)s 2206 x(a)s 2374 x(thick)s 2914 x(space)s
  244. X3507 x(around)s 4234 x(relation)s 5025 x(symbols)s 5885 x(like)s 
  245. X220 fnt13
  246. X6305 13198 moveto(<=)s
  247. X
  248. X240 fnt34
  249. X6561 13202 moveto(,)s 6683 x(a)s 6851 x(medium)s 7697 x(space)s 8290 x(around)s
  250. X9017 x(binary)s 9690 x(operator)s 1417 12914 moveto(symbols)s 2272 x(like)s 
  251. X220 fnt13
  252. X2687 12910 moveto(+)s
  253. X
  254. X240 fnt34
  255. X2815 12914 moveto(,)s 2932 x(and)s 3335 x(a)s 3498 x(thin)s 3927 x(space)s
  256. X4515 x(after)s 5008 x(punctuation)s 6195 x(symbols)s 7050 x(\()s 
  257. X220 fnt13
  258. X7129 12910 moveto(;)s
  259. X
  260. X240 fnt34
  261. X7247 12914 moveto(and)s 
  262. X220 fnt13
  263. X7650 12910 moveto(,)s 
  264. X240 fnt34
  265. X7711 12914 moveto(\);)s 7913 x(except)s 8594 x(that)s
  266. X9009 x(in)s 9252 x(places)s 9906 x(where)s 1417 12626 moveto(the)s 1786 x(symbols)s
  267. X2661 x(appear)s 3375 x(in)s 3638 x(a)s 3821 x(smaller)s 4600 x(size)s
  268. X5048 x(\(superscripts,)s 6405 x(subscripts,)s 7498 x(etc.\),)s 8052 x(these)s 8620 x(spaces)s
  269. X9321 x(are)s 9689 x(omitted.)s 1417 12338 moveto(No)s 1770 x(other)s 2321 x(horizontal)s
  270. X3350 x(space)s 3941 x(is)s 4160 x(ever)s 4631 x(inserted.)s 1897 11964 moveto(The)s
  271. X2325 x(short)s 2859 x(names)s 3526 x(have)s 4034 x(been)s 4542 x(carefully)s
  272. X5446 x(designed)s 6353 x(to)s 6595 x(produce)s 7422 x(good-looking)s 8769 x(mathematics)s
  273. X10032 x(most)s 1417 11676 moveto(of)s 1689 x(the)s 2054 x(time.)s 2671 x(It)s
  274. X2889 x(is)s 3121 x(best)s 3579 x(to)s 3838 x(rely)s 4282 x(on)s
  275. X4595 x(them)s 5146 x(in)s 5405 x(the)s 5770 x(\207rst)s 6214 x(instance)s
  276. X7070 x(and)s 7489 x(only)s 7988 x(think)s 8553 x(about)s 9158 x(spacing)s
  277. X9962 x(when)s 1417 11388 moveto(the)s 1769 x(result)s 2359 x(is)s 2578 x(not)s
  278. X2944 x(pleasing.)s 3921 x(In)s 4180 x(that)s 4598 x(case,)s 5129 x(Eq's)s
  279. X5627 x(space)s 6218 x(can)s 6610 x(be)s 6896 x(removed)s 7793 x(by)s
  280. X8093 x(using)s 8672 x(the)s 9024 x(full)s 9415 x(names,)s 10146 x(and)s
  281. X1417 11100 moveto(thin,)s 1909 x(medium)s 2753 x(and)s 3159 x(thick)s 3697 x(space)s
  282. X4288 x(can)s 4680 x(be)s 4966 x(added)s 5598 x(using)s 6177 x(the)s
  283. X6529 x(following)s 7519 x(symbols:)s 
  284. X220 fnt13
  285. X1897 10559 moveto(`)s 2381 x(0.18f)s 
  286. X240 fnt34
  287. X2989 10563 moveto(\()s
  288. X
  289. X220 fnt13
  290. X3068 10559 moveto(0.018f)s 
  291. X240 fnt34
  292. X3738 10563 moveto(in)s 3984 x(subscripts,)s 5060 x(etc.\))s 
  293. X220 fnt13
  294. X1897 10271 moveto(``)s
  295. X2381 x(0.24f)s 
  296. X240 fnt34
  297. X2989 10275 moveto(\()s 
  298. X220 fnt13
  299. X3068 10271 moveto(0.024f)s 
  300. X240 fnt34
  301. X3738 10275 moveto(in)s 3984 x(subscripts,)s
  302. X5060 x(etc.\))s 
  303. X220 fnt13
  304. X1897 9983 moveto(```)s 2381 x(0.30f)s 
  305. X240 fnt34
  306. X2989 9987 moveto(\()s 
  307. X220 fnt13
  308. X3068 9983 moveto(0.030f)s
  309. X
  310. X240 fnt34
  311. X3738 9987 moveto(in)s 3984 x(subscripts,)s 5060 x(etc.\))s 1417 9446 moveto(where)s 
  312. X220 fnt13
  313. X2083 9442 moveto(1f)s
  314. X
  315. X240 fnt34
  316. X2348 9446 moveto(is)s 2589 x(the)s 2963 x(current)s 3721 x(font)s 4188 x(size.)s
  317. X4761 x(These)s 5414 x(symbols)s 6294 x(have)s 6828 x(low)s 7269 x(precedence.)s
  318. X8546 x(The)s 
  319. X220 fnt13
  320. X9000 9442 moveto(&)s 
  321. X240 fnt34
  322. X9228 9446 moveto(symbol)s 10015 x(from)s 1417 9158 moveto(standard)s
  323. X2280 x(Lout)s 2785 x(is)s 2997 x(also)s 3435 x(available;)s 4416 x(the)s
  324. X
  325. X220 fnt13
  326. X4761 9154 moveto(s)s 
  327. X240 fnt34
  328. X4924 9158 moveto(unit)s 5349 x(has)s 5721 x(value)s 6292 x(0)s
  329. X6465 x(and)s 6864 x(so)s 7130 x(is)s 7342 x(not)s 7701 x(very)s
  330. X8179 x(useful,)s 8876 x(but)s 9235 x(one)s 9634 x(can)s 10019 x(write)s
  331. X
  332. X220 fnt13
  333. X1417 8866 moveto(&2m)s 
  334. X240 fnt34
  335. X1928 8870 moveto(for)s 2266 x(example)s 3136 x(for)s 3474 x(a)s
  336. X3640 x(two)s 4059 x(em)s 4411 x(space.)s 5122 x(The)s 5554 x(full)s
  337. X5945 x(names)s 6616 x(are)s 6967 x(tedious)s 7718 x(to)s 7964 x(remember,)s
  338. X9052 x(so)s 9325 x(Eq)s 9651 x(provides)s 1417 8582 moveto(a)s 
  339. X220 fnt13
  340. X1615 8578 moveto(non)s
  341. X
  342. X240 fnt34
  343. X2073 8582 moveto(symbol)s 2870 x(which)s 3547 x(removes)s 4449 x(spaces)s 5165 x(from)s
  344. X5721 x(its)s 6038 x(right)s 6581 x(parameter;)s 7693 x(thus)s 
  345. X220 fnt13
  346. X8184 8578 moveto(non <=)s
  347. X
  348. X240 fnt34
  349. X8959 8582 moveto(is)s 9210 x(equivalent)s 10298 x(to)s 
  350. X220 fnt13
  351. X1417 8290 moveto(lessequal)s 
  352. X240 fnt34
  353. X2343 8294 moveto(.)s
  354. X2512 x(There)s 3118 x(are)s 3458 x(also)s 
  355. X220 fnt13
  356. X3892 8290 moveto(rel)s 
  357. X240 fnt34
  358. X4135 8294 moveto(,)s
  359. X
  360. X220 fnt13
  361. X4244 8290 moveto(bin)s 
  362. X240 fnt34
  363. X4536 8294 moveto(,)s 4645 x(and)s 
  364. X220 fnt13
  365. X5040 8290 moveto(punct)s 
  366. X240 fnt34
  367. X5626 8294 moveto(symbols)s
  368. X6473 x(for)s 6800 x(telling)s 7459 x(Eq)s 7774 x(to)s 8009 x(add)s
  369. X8404 x(space)s 8984 x(to)s 9219 x(the)s 9560 x(following)s 1417 8006 moveto(symbol)s
  370. X2182 x(as)s 2441 x(though)s 3167 x(it)s 3359 x(was)s 3791 x(a)s
  371. X3957 x(relation)s 4746 x(symbol,)s 5571 x(binary)s 6242 x(operator,)s 7158 x(or)s
  372. X7417 x(punctuation)s 8607 x(symbol.)s 
  373. X240 fnt36
  374. X1417 7213 moveto(4.)s 1717 x(Features)s 2666 x(from)s
  375. X3230 x(Standard)s 4247 x(Lout)s 
  376. X240 fnt34
  377. X1897 6782 moveto(In)s 2149 x(this)s 2547 x(section)s
  378. X3277 x(we)s 3609 x(summarize)s 4710 x(those)s 5268 x(features)s 6076 x(of)s
  379. X6328 x(standard)s 7191 x(Lout)s 7696 x(of)s 7948 x(most)s 8466 x(relevance)s
  380. X9434 x(to)s 9673 x(equation)s 1417 6494 moveto(formatting.)s 2627 x(All)s 3014 x(are)s
  381. X3387 x(freely)s 4025 x(available)s 4969 x(within)s 5662 x(equations.)s 6781 x(Full)s
  382. X7248 x(details)s 7953 x(may)s 8447 x(be)s 8755 x(found)s 9396 x(in)s
  383. X9664 x(the)s 10038 x(Lout)s 1417 6206 moveto(reference)s 2364 x(manual)s 3128 x([)s
  384. X3207 x(4)s 3327 x(].)s 1897 5832 moveto(Standard)s 2808 x(Lout)s 3321 x(uses)s
  385. X3794 x(the)s 4147 x(symbols)s 
  386. X220 fnt13
  387. X5006 5828 moveto(#)s 
  388. X240 fnt34
  389. X5128 5832 moveto(,)s 
  390. X220 fnt13
  391. X5249 5828 moveto({)s
  392. X
  393. X240 fnt34
  394. X5322 5832 moveto(,)s 
  395. X220 fnt13
  396. X5443 5828 moveto(})s 
  397. X240 fnt34
  398. X5516 5832 moveto(,)s 
  399. X220 fnt13
  400. X5637 5828 moveto(&)s 
  401. X240 fnt34
  402. X5783 5832 moveto(,)s
  403. X
  404. X220 fnt13
  405. X5904 5828 moveto(|)s 
  406. X240 fnt34
  407. X5961 5832 moveto(,)s 6082 x(and)s 
  408. X220 fnt13
  409. X6489 5828 moveto(/)s 
  410. X240 fnt34
  411. X6611 5832 moveto(for)s
  412. X6950 x(special)s 7674 x(purposes)s 8586 x(\(the)s 9018 x(braces)s 9689 x(are)s
  413. X10041 x(used)s 1417 5544 moveto(for)s 1738 x(grouping,)s 2706 x(for)s 3027 x(example\).)s
  414. X4079 x(To)s 4388 x(get)s 4723 x(these)s 5257 x(characters)s 6267 x(into)s
  415. X6682 x(equations)s 7642 x(without)s 8416 x(using)s 8978 x(their)s 9458 x(full)s
  416. X9832 x(names,)s 1417 5256 moveto(enclose)s 2186 x(them)s 2716 x(in)s 2954 x(double)s
  417. X3658 x(quotes:)s 
  418. X220 fnt13
  419. X4401 5252 moveto("{")s 
  420. X240 fnt34
  421. X4630 5256 moveto(,)s 
  422. X220 fnt13
  423. X4742 5252 moveto("}")s 
  424. X240 fnt34
  425. X4971 5256 moveto(,)s
  426. X5083 x(etc.)s 5533 x(Any)s 5998 x(sequence)s 6927 x(of)s 7178 x(characters)s
  427. X8197 x(including)s 9153 x(spaces)s 9829 x(but)s 10187 x(not)s 1417 4968 moveto(newlines)s
  428. X2327 x(may)s 2799 x(be)s 3085 x(so)s 3358 x(enclosed,)s 4315 x(and)s
  429. X4721 x(the)s 5073 x(effect)s 5675 x(is)s 5894 x(to)s 6140 x(turn)s
  430. X6585 x(off)s 6923 x(any)s 7329 x(special)s 8052 x(meaning)s 8936 x(that)s
  431. X9354 x(the)s 9706 x(symbols)s 1417 4680 moveto(within)s 2088 x(it)s 2280 x(might)s
  432. X2898 x(have.)s 1897 4306 moveto(Eq)s 2250 x(sets)s 2695 x(letters)s 3364 x(in)s
  433. X3637 x(Slope)s 4269 x(\(Lout's)s 5059 x(name)s 5664 x(for)s 6029 x(Italic\),)s
  434. X6744 x(digits)s 7362 x(in)s 7635 x(Base)s 8187 x(\(i.e.)s 8645 x(Roman\),)s
  435. X9563 x(and)s 9996 x(other)s 1417 4018 moveto(symbols)s 2275 x(in)s 2521 x(various)s
  436. X3285 x(fonts,)s 3883 x(mostly)s 4594 x(the)s 4946 x(Symbol)s 5751 x(font.)s
  437. X6316 x(To)s 6642 x(change)s 7380 x(fonts,)s 7978 x(use)s 8357 x(the)s
  438. X
  439. X220 fnt13
  440. X8709 4014 moveto(@Font)s 
  441. X240 fnt34
  442. X9431 4018 moveto(symbol:)s 
  443. X220 fnt13
  444. X1897 3511 moveto(Slope @Font "2")s 
  445. X240 fnt35
  446. X5866 3515 moveto(2)s 
  447. X240 fnt34
  448. X1417 3013 moveto(In)s
  449. X1696 x(Eq)s 2042 x(it)s 2254 x(will)s 2705 x(often)s 3276 x(be)s
  450. X3582 x(necessary)s 4591 x(to)s 4857 x(enclose)s 5654 x(the)s 6026 x(right)s
  451. X6557 x(parameter)s 7591 x(in)s 7857 x(double)s 8589 x(quotes,)s 9354 x(because)s
  452. X10191 x(the)s 1417 2725 moveto(symbol)s 2212 x(2)s 2422 x(includes)s 3309 x(a)s
  453. X3505 x(built-in)s 4298 x(change)s 5066 x(back)s 5608 x(to)s 5884 x(Base)s
  454. X6439 x(font.)s 7034 x(Changing)s 8056 x(fonts)s 8624 x(makes)s 9325 x(white)s
  455. X9946 x(space)s 1417 2437 moveto(between)s 2275 x(objects)s 3013 x(in)s 3260 x(the)s
  456. X3613 x(right)s 4125 x(parameter)s 5140 x(appear)s 5838 x(in)s 6085 x(the)s
  457. X6438 x(result.)s 7149 x(The)s 
  458. X220 fnt13
  459. X7582 2433 moveto(@Font)s 
  460. X240 fnt34
  461. X8305 2437 moveto(operator)s 9162 x(also)s
  462. X9608 x(does)s 10108 x(size)s 1417 2149 moveto(changes:)s 
  463. X220 fnt13
  464. X1897 1632 moveto(sum)s 
  465. X240 fnt33
  466. X5866 1629 moveto(\345)s
  467. X
  468. Xpgsave restore
  469. Xshowpage
  470. X
  471. X%%Page: ? 7
  472. X%%BeginPageSetup
  473. X/pgsave save def
  474. X0.0500 dup scale 10 setlinewidth
  475. X%%EndPageSetup
  476. X
  477. X240 fnt34
  478. X5754 15260 moveto(-)s 5893 x(6)s 6073 x(-)s 
  479. X220 fnt13
  480. X1897 14634 moveto("+2p" @Font sum)s 
  481. X280 fnt33
  482. X5866 14621 moveto(\345)s
  483. X
  484. X220 fnt13
  485. X1897 14001 moveto(2.0f @Font sum)s 
  486. X480 fnt33
  487. X5866 13938 moveto(\345)s 
  488. X240 fnt34
  489. X1417 13437 moveto(Here)s 
  490. X220 fnt13
  491. X1923 13433 moveto("+2p" @Font)s 
  492. X240 fnt34
  493. X3216 13437 moveto(sets)s
  494. X3616 x(its)s 3883 x(right)s 4376 x(parameter)s 5372 x(in)s 5600 x(a)s
  495. X5748 x(font)s 6175 x(two)s 6576 x(points)s 7203 x(larger)s 7801 x(than)s
  496. X8255 x(it)s 8429 x(would)s 9070 x(otherwise)s 10041 x(have)s 1417 13149 moveto(been;)s
  497. X
  498. X220 fnt13
  499. X1998 13145 moveto(2.0f @Font)s 
  500. X240 fnt34
  501. X3150 13149 moveto(sets)s 3571 x(its)s 3859 x(right)s 4373 x(parameter)s
  502. X5390 x(in)s 5639 x(a)s 5808 x(font)s 6256 x(twice)s 6836 x(the)s
  503. X7191 x(original)s 7997 x(size.)s 8551 x(Sizes)s 9118 x(should)s 9820 x(always)s
  504. X1417 12861 moveto(be)s 1713 x(speci\207ed)s 2633 x(relative)s 3418 x(to)s 3674 x(the)s
  505. X4036 x(enclosing)s 5023 x(size)s 5464 x(as)s 5733 x(we)s 6082 x(have)s
  506. X6604 x(done)s 7140 x(here,)s 7681 x(since)s 8242 x(then)s 8724 x(they)s
  507. X9206 x(don't)s 9781 x(need)s 10303 x(to)s 1417 12573 moveto(be)s 1700 x(changed)s
  508. X2555 x(if)s 2757 x(a)s 2920 x(decision)s 3774 x(is)s 3990 x(made)s
  509. X4565 x(to)s 4808 x(set)s 5130 x(the)s 5479 x(entire)s 6079 x(document)s
  510. X7080 x(in)s 7323 x(a)s 7486 x(different)s 8364 x(size.)s 8912 x(It)s
  511. X9114 x(is)s 9330 x(necessary)s 10316 x(to)s 1417 12285 moveto(enclose)s 
  512. X220 fnt13
  513. X2187 12281 moveto(+2p)s
  514. X
  515. X240 fnt34
  516. X2612 12285 moveto(in)s 2851 x(double)s 3556 x(quotes)s 4234 x(within)s 4898 x(Eq,)s
  517. X5277 x(because)s 6087 x(otherwise)s 7069 x(the)s 
  518. X220 fnt13
  519. X7414 12281 moveto(+)s 
  520. X240 fnt34
  521. X7595 12285 moveto(will)s
  522. X8019 x(be)s 8298 x(taken)s 8869 x(as)s 9121 x(the)s 9466 x(Eq)s
  523. X9785 x(symbol)s 1417 11997 moveto(for)s 
  524. X240 fnt33
  525. X1812 11990 moveto(+)s 
  526. X240 fnt34
  527. X2000 11997 moveto(.)s 2180 x(The)s
  528. X2612 x(right)s 3123 x(parameter)s 4137 x(may)s 4609 x(be)s 4895 x(any)s
  529. X5301 x(object.)s 1897 11623 moveto(Whenever)s 2956 x(similar)s 3694 x(equations)s 4687 x(or)s
  530. X4962 x(parts)s 5502 x(of)s 5777 x(equations)s 6770 x(are)s 7137 x(being)s
  531. X7745 x(typed)s 8353 x(repeatedly,)s 
  532. X240 fnt35
  533. X9484 x(de\207nitions)s 
  534. X240 fnt34
  535. X1417 11335 moveto(should)s 2116 x(be)s
  536. X2402 x(used)s 2901 x(to)s 3147 x(save)s 3632 x(time.)s 4236 x(Suppose)s
  537. X5108 x(for)s 5446 x(example)s 6316 x(that)s 
  538. X240 fnt35
  539. X6734 x(p)s 
  540. X167 fnt35
  541. X6854 11249 moveto(i)s
  542. X
  543. X240 fnt34
  544. X6943 11335 moveto(log)s 
  545. X167 fnt33
  546. X7249 11242 moveto(2)s 
  547. X240 fnt35
  548. X7375 11335 moveto(p)s 
  549. X167 fnt35
  550. X7495 11249 moveto(i)s 
  551. X240 fnt34
  552. X7601 11335 moveto(occurs)s
  553. X8285 x(frequently.)s 9447 x(Then)s 
  554. X220 fnt13
  555. X1897 10794 moveto(def epi { p sub i ` log sub 2 ` p sub i })s 
  556. X240 fnt34
  557. X1417 10295 moveto(makes)s 2088 x(the)s
  558. X2440 x(symbol)s 
  559. X220 fnt13
  560. X3205 10291 moveto(epi)s 
  561. X240 fnt34
  562. X3557 10295 moveto(stand)s 4122 x(for)s 4460 x(the)s
  563. X4812 x(object)s 5456 x(between)s 6313 x(the)s 6665 x(braces:)s 
  564. X220 fnt13
  565. X1897 9624 moveto(big sum from i=1 to n ` epi)s
  566. X
  567. X167 fnt35
  568. X5942 9881 moveto(n)s 
  569. X311 fnt33
  570. X5873 9604 moveto(\345)s 
  571. X167 fnt35
  572. X5866 9418 moveto(i)s 
  573. X167 fnt33
  574. X5920 9414 moveto(=)s 6019 x(1)s
  575. X
  576. X240 fnt35
  577. X6145 9628 moveto(p)s 
  578. X167 fnt35
  579. X6265 9542 moveto(i)s 
  580. X240 fnt34
  581. X6354 9628 moveto(log)s 
  582. X167 fnt33
  583. X6660 9535 moveto(2)s 
  584. X240 fnt35
  585. X6786 9628 moveto(p)s
  586. X
  587. X167 fnt35
  588. X6906 9542 moveto(i)s 
  589. X240 fnt34
  590. X1417 8964 moveto(Symbols)s 2315 x(may)s 2787 x(be)s 3073 x(given)s
  591. X3665 x(parameters:)s 
  592. X220 fnt13
  593. X1897 8464 moveto(def ep)s 1897 8176 moveto(   right x)s 1897 7888 moveto({ p sub x ` log sub 2 ` p sub x)s 1897 7600 moveto(})s
  594. X
  595. X240 fnt34
  596. X1417 7103 moveto(The)s 1849 x(parameter)s 
  597. X220 fnt13
  598. X2863 7099 moveto(x)s 
  599. X240 fnt34
  600. X3033 7103 moveto(will)s 3464 x(be)s
  601. X3750 x(replaced)s 4619 x(by)s 4919 x(the)s 5271 x(object)s 5915 x(just)s
  602. X6320 x(to)s 6566 x(the)s 6918 x(right)s 7429 x(of)s 
  603. X220 fnt13
  604. X7688 7099 moveto(ep)s
  605. X
  606. X240 fnt34
  607. X7932 7103 moveto(:)s 
  608. X220 fnt13
  609. X1897 6603 moveto(big sum from j=1 to k ` ep i +)s 1897 6315 moveto(big sum from j=k+1 to n ep j)s 
  610. X167 fnt35
  611. X5947 6649 moveto(k)s 
  612. X311 fnt33
  613. X5873 6371 moveto(\345)s
  614. X
  615. X167 fnt35
  616. X5866 6185 moveto(j)s 
  617. X167 fnt33
  618. X5920 6181 moveto(=)s 6019 x(1)s 
  619. X240 fnt35
  620. X6145 6395 moveto(p)s 
  621. X167 fnt35
  622. X6265 6309 moveto(i)s
  623. X
  624. X240 fnt34
  625. X6354 6395 moveto(log)s 
  626. X167 fnt33
  627. X6660 6302 moveto(2)s 
  628. X240 fnt35
  629. X6786 6395 moveto(p)s 
  630. X167 fnt35
  631. X6906 6309 moveto(i)s 
  632. X240 fnt33
  633. X7009 6388 moveto(+)s
  634. X
  635. X167 fnt35
  636. X7362 6648 moveto(n)s 
  637. X311 fnt33
  638. X7293 6371 moveto(\345)s 
  639. X167 fnt35
  640. X7197 6180 moveto(j)s 
  641. X167 fnt33
  642. X7251 6176 moveto(=)s 
  643. X167 fnt35
  644. X7350 6180 moveto(k)s
  645. X
  646. X167 fnt33
  647. X7430 6176 moveto(+)s 7527 x(1)s 
  648. X240 fnt35
  649. X7610 6395 moveto(p)s 
  650. X167 fnt35
  651. X7730 6309 moveto(j)s 
  652. X240 fnt34
  653. X7819 6395 moveto(log)s
  654. X
  655. X167 fnt33
  656. X8125 6302 moveto(2)s 
  657. X240 fnt35
  658. X8251 6395 moveto(p)s 
  659. X167 fnt35
  660. X8371 6309 moveto(j)s 
  661. X240 fnt34
  662. X1417 5696 moveto(The)s 1849 x(precedence)s
  663. X2984 x(of)s 3243 x(such)s 3742 x(symbols)s 4600 x(will)s 5031 x(be)s
  664. X5317 x(100)s 5737 x(by)s 6037 x(default.)s 1897 5322 moveto(To)s 2237 x(make)s
  665. X2829 x(the)s 3195 x(symbols)s 4067 x(of)s 4340 x(Eq)s 4680 x(available)s
  666. X5616 x(within)s 6301 x(such)s 6814 x(de\207nitions,)s 7958 x(each)s 8470 x(must)s
  667. X9009 x(be)s 9309 x(preceded)s 10246 x(by)s 
  668. X220 fnt13
  669. X1417 5030 moveto(import @Eq)s 
  670. X240 fnt34
  671. X2578 5034 moveto(.)s
  672. X2758 x(The)s 3190 x(best)s 3635 x(place)s 4199 x(to)s 4445 x(keep)s
  673. X4957 x(them)s 5495 x(is)s 5714 x(in)s 5960 x(the)s 6312 x(setup)s
  674. X6877 x(\207le,)s 7302 x(which)s 7947 x(might)s 8565 x(then)s 9037 x(look)s
  675. X9523 x(like)s 9941 x(this:)s 
  676. X220 fnt13
  677. X1897 4532 moveto(@SysInclude { ft  })s 1897 4244 moveto(@SysInclude { dl  })s 1897 3956 moveto(@SysInclude { eq  })s
  678. X1897 3380 moveto(import @Eq)s 1897 3092 moveto(def epi { p sub i ` log sub 2 ` p sub i })s 1897 2516 moveto(import @Eq)s 1897 2228 moveto(def ep right x { p sub x ` log sub 2 ` p sub x })s 1897 1652 moveto(@Use { @DocumentLayout })s
  679. X
  680. Xpgsave restore
  681. Xshowpage
  682. X
  683. X%%Page: ? 8
  684. X%%BeginPageSetup
  685. X/pgsave save def
  686. X0.0500 dup scale 10 setlinewidth
  687. X%%EndPageSetup
  688. X
  689. X240 fnt34
  690. X5754 15264 moveto(-)s 5893 x(7)s 6073 x(-)s 1417 14673 moveto(Use)s 1849 x(of)s
  691. X
  692. X220 fnt13
  693. X2108 14669 moveto(epi)s 
  694. X240 fnt34
  695. X2460 14673 moveto(and)s 
  696. X220 fnt13
  697. X2866 14669 moveto(ep)s 
  698. X240 fnt34
  699. X3170 14673 moveto(outside)s 3921 x(equations)s
  700. X4898 x(will)s 5329 x(cause)s 5920 x(an)s 6206 x(error.)s 1897 14299 moveto(Equations)s
  701. X2921 x(can)s 3320 x(appear)s 4024 x(within)s 4702 x(a)s 4875 x(paragraph)s
  702. X5898 x(of)s 6164 x(text,)s 6649 x(or)s 6915 x(they)s 7394 x(can)s
  703. X7793 x(be)s 8086 x(displayed.)s 9190 x(Eq's)s 9695 x(job)s 10068 x(is)s
  704. X10294 x(to)s 1417 14011 moveto(produce)s 2258 x(a)s 2434 x(Lout)s 2956 x(object)s
  705. X3610 x(containing)s 4690 x(the)s 5052 x(equation;)s 6012 x(it)s 6214 x(neither)s
  706. X6947 x(knows)s 7643 x(nor)s 8032 x(cares)s 8592 x(where)s 9246 x(this)s
  707. X9661 x(equation)s 1417 13723 moveto(goes.)s 2041 x(To)s 2372 x(get)s 2729 x(an)s
  708. X3020 x(equation)s 3909 x(within)s 4585 x(a)s 4756 x(paragraph,)s 5837 x(simply)s
  709. X6553 x(place)s 
  710. X220 fnt13
  711. X7122 13719 moveto(@Eq { ... })s 
  712. X240 fnt34
  713. X8190 13723 moveto(at)s 8427 x(the)s 8784 x(desired)s
  714. X9539 x(point.)s 10216 x(To)s 1417 13435 moveto(prevent)s 2213 x(it)s 2424 x(spreading)s
  715. X3433 x(over)s 3937 x(two)s 4375 x(lines,)s 4965 x(use)s 
  716. X220 fnt13
  717. X5363 13431 moveto(@OneCol @Eq { ... })s
  718. X
  719. X240 fnt34
  720. X7393 13435 moveto(.)s 7592 x(To)s 7937 x(display)s 8707 x(an)s 9012 x(equation,)s
  721. X9975 x(use)s 10373 x(a)s 1417 13147 moveto(display)s 2190 x(symbol)s 2977 x(from)s
  722. X3523 x(some)s 4110 x(other)s 4683 x(Lout)s 5217 x(package.)s 6203 x(For)s
  723. X6617 x(example,)s 7569 x(the)s 7943 x(DocumentLayout)s 9700 x(package)s 1417 12859 moveto([)s
  724. X1496 x(5)s 1616 x(])s 1762 x(has)s 
  725. X220 fnt13
  726. X2148 12855 moveto(@IndentedDisplay)s 
  727. X240 fnt34
  728. X4010 12859 moveto(or)s
  729. X
  730. X220 fnt13
  731. X4276 12855 moveto(@ID)s 
  732. X240 fnt34
  733. X4785 12859 moveto(for)s 5130 x(an)s 5423 x(indented)s 6314 x(display,)s
  734. X7132 x(and)s 
  735. X220 fnt13
  736. X7545 12855 moveto(@CentredDisplay)s 
  737. X240 fnt34
  738. X9333 12859 moveto(or)s 
  739. X220 fnt13
  740. X9599 12855 moveto(@CD)s 
  741. X240 fnt34
  742. X10205 12859 moveto(for)s
  743. X1417 12571 moveto(a)s 1583 x(centred)s 2346 x(display,)s 3157 x(so)s 
  744. X220 fnt13
  745. X1897 12069 moveto(@CD @Eq { int supp pi on 0 sin ` x = 0 })s
  746. X
  747. X240 fnt34
  748. X1417 11571 moveto(produces)s gsave
  749. X5454 11033 translate
  750. X-180.0000 rotate
  751. Xgsave
  752. X0 -159 translate
  753. X180.0000 rotate
  754. X
  755. X311 fnt33
  756. X0 -284 moveto(\362)s 
  757. Xgrestore
  758. X
  759. Xgrestore
  760. X
  761. X311 fnt33
  762. X5454 10908 moveto(\362)s 
  763. X167 fnt33
  764. X5539 11151 moveto(p)s 5539 10833 moveto(0)s
  765. X
  766. X240 fnt34
  767. X5630 10980 moveto(sin)s 
  768. X240 fnt35
  769. X5952 x(x)s 
  770. X240 fnt33
  771. X6130 10973 moveto(=)s 6333 x(0)s 
  772. X240 fnt34
  773. X1417 10380 moveto(DocumentLayout)s
  774. X3197 x(also)s 3687 x(provides)s 4616 x(display)s 5412 x(symbols)s 6315 x(that)s
  775. X6778 x(make)s 7401 x(it)s 7638 x(easy)s 8168 x(to)s 8459 x(produce)s
  776. X9335 x(aligned)s 10144 x(and)s 1417 10092 moveto(numbered)s 2434 x(equations.)s 
  777. X240 fnt36
  778. X1417 9299 moveto(5.)s
  779. X1717 x(Summary)s 
  780. X240 fnt34
  781. X1897 8821 moveto(This)s 2422 x(section)s 3199 x(is)s 3458 x(a)s
  782. X3664 x(complete)s 4640 x(list)s 5031 x(of)s 5330 x(the)s 5722 x(symbols)s
  783. X6620 x(provided)s 7571 x(by)s 7911 x(Eq.)s 8397 x(We)s 8829 x(divide)s
  784. X9527 x(them)s 10105 x(into)s 1417 8533 moveto(auxiliary,)s 2431 x(parameterized,)s 3948 x(short)s
  785. X4531 x(names)s 5247 x(\(further)s 6080 x(divided)s 6903 x(into)s 7380 x(relations,)s
  786. X8367 x(binary)s 9083 x(operators,)s 10137 x(and)s 1417 8245 moveto(punctuation\),)s 2746 x(and)s
  787. X3152 x(full)s 3543 x(names.)s 4334 x(The)s 4766 x(auxiliary)s 5675 x(symbols)s
  788. X6533 x(are:)s 
  789. X220 fnt13
  790. X1897 7704 moveto(`)s 
  791. X240 fnt34
  792. X2945 7708 moveto(Thin)s 3457 x(space)s 
  793. X220 fnt13
  794. X1897 7416 moveto(``)s
  795. X
  796. X240 fnt34
  797. X2945 7420 moveto(Medium)s 3816 x(space)s 
  798. X220 fnt13
  799. X1897 7128 moveto(```)s 
  800. X240 fnt34
  801. X2945 7132 moveto(Thick)s 3563 x(space)s
  802. X
  803. X220 fnt13
  804. X1897 6840 moveto(bin x)s 
  805. X240 fnt34
  806. X2945 6844 moveto(Treat)s 
  807. X220 fnt13
  808. X3508 6840 moveto(x)s 
  809. X240 fnt34
  810. X3678 6844 moveto(as)s 3937 x(a)s
  811. X4103 x(binary)s 4774 x(operator)s 
  812. X220 fnt13
  813. X1897 6552 moveto(rel x)s 
  814. X240 fnt34
  815. X2945 6556 moveto(Treat)s 
  816. X220 fnt13
  817. X3508 6552 moveto(x)s
  818. X
  819. X240 fnt34
  820. X3678 6556 moveto(as)s 3937 x(a)s 4103 x(relation)s 
  821. X220 fnt13
  822. X1897 6264 moveto(punct x)s 
  823. X240 fnt34
  824. X2945 6268 moveto(Treat)s
  825. X
  826. X220 fnt13
  827. X3508 6264 moveto(x)s 
  828. X240 fnt34
  829. X3678 6268 moveto(as)s 3937 x(a)s 4103 x(punctuation)s 5293 x(symbol)s
  830. X
  831. X220 fnt13
  832. X1897 5976 moveto(non x)s 
  833. X240 fnt34
  834. X2945 5980 moveto(Remove)s 3803 x(spaces)s 4487 x(normally)s 5410 x(put)s
  835. X5776 x(into)s 
  836. X220 fnt13
  837. X6208 5976 moveto(x)s 1897 5688 moveto(vctr x)s 
  838. X240 fnt34
  839. X2945 5692 moveto(Centre)s 
  840. X220 fnt13
  841. X3642 5688 moveto(x)s
  842. X
  843. X240 fnt34
  844. X3812 5692 moveto(vertically)s 
  845. X220 fnt13
  846. X1897 5400 moveto(big x)s 
  847. X240 fnt34
  848. X2945 5404 moveto(Make)s 
  849. X220 fnt13
  850. X3550 5400 moveto(x)s 
  851. X240 fnt34
  852. X3720 5404 moveto(larger)s
  853. X1417 4863 moveto(Here)s 1999 x(are)s 2408 x(all)s 2764 x(the)s 3174 x(parameterized)s
  854. X4644 x(symbols,)s 5620 x(shown)s 6364 x(in)s 6668 x(groups)s 7438 x(of)s
  855. X7755 x(equal)s 8391 x(precedence,)s 9644 x(with)s 10187 x(the)s 1417 4575 moveto(precedence)s
  856. X2552 x(itself)s 3088 x(at)s 3320 x(right:)s 
  857. X220 fnt13
  858. X1897 4070 moveto(matrix not)s 
  859. X240 fnt34
  860. X2920 4074 moveto(\(100\))s
  861. X
  862. X220 fnt13
  863. X1897 3782 moveto(dot dotdot hat tilde vec dyad overbar underbar)s 
  864. X240 fnt34
  865. X6445 3786 moveto(\(62\))s 
  866. X220 fnt13
  867. X1897 3494 moveto(sup sub supp)s 
  868. X240 fnt34
  869. X3263 3498 moveto(\(60\))s 3841 x(on)s
  870. X4141 x(\(61\))s 
  871. X220 fnt13
  872. X1897 3206 moveto(from to widefrom wideto)s 
  873. X240 fnt34
  874. X4284 3210 moveto(\(58\))s 
  875. X220 fnt13
  876. X1897 2918 moveto(sqrt root)s 
  877. X240 fnt34
  878. X2762 2922 moveto(\(56\))s
  879. X
  880. X220 fnt13
  881. X1897 2630 moveto(over)s 
  882. X240 fnt34
  883. X2384 2634 moveto(frac)s 2814 x(\(54\))s 
  884. X220 fnt13
  885. X1897 2342 moveto(above labove cabove rabove mabove)s 
  886. X240 fnt34
  887. X5605 2346 moveto(\(52\))s
  888. X
  889. X220 fnt13
  890. X1897 2054 moveto(nextcol)s 
  891. X240 fnt34
  892. X2652 2058 moveto(\(50\))s 1417 1565 moveto(See)s 1822 x(page)s 2334 x(3)s
  893. X2514 x(for)s 2852 x(examples)s 3815 x(of)s 4074 x(matrices.)s 5062 x(Here)s
  894. X5586 x(are)s 5937 x(some)s 6502 x(examples)s 7465 x(of)s 7724 x(the)s
  895. X8076 x(other)s 8627 x(symbols:)s 
  896. Xpgsave restore
  897. Xshowpage
  898. X
  899. X%%Page: ? 9
  900. X%%BeginPageSetup
  901. X/pgsave save def
  902. X0.0500 dup scale 10 setlinewidth
  903. X%%EndPageSetup
  904. X
  905. X240 fnt34
  906. X5754 15261 moveto(-)s 5893 x(8)s 6073 x(-)s 
  907. X220 fnt13
  908. X1897 14641 moveto(x dot)s 
  909. X167 fnt35
  910. X5904 14795 moveto(.)s
  911. X
  912. X240 fnt35
  913. X5866 14645 moveto(x)s 
  914. X220 fnt13
  915. X1897 14157 moveto(x dotdot)s 
  916. X167 fnt35
  917. X5884 14311 moveto(..)s 
  918. X240 fnt35
  919. X5866 14161 moveto(x)s 
  920. X220 fnt13
  921. X1897 13638 moveto(x hat)s
  922. X
  923. X167 fnt34
  924. X5886 13754 moveto(^)s 
  925. X240 fnt35
  926. X5866 13642 moveto(x)s 
  927. X220 fnt13
  928. X1897 13164 moveto(x tilde)s 
  929. X167 fnt34
  930. X5880 13288 moveto(~)s 
  931. X240 fnt35
  932. X5866 13168 moveto(x)s
  933. X
  934. X220 fnt13
  935. X1897 12631 moveto(x vec)s 
  936. X167 fnt33
  937. X5878 12787 moveto(\256)s 
  938. X240 fnt35
  939. X5901 12635 moveto(x)s 
  940. X220 fnt13
  941. X1897 12098 moveto(x dyad)s 
  942. X167 fnt33
  943. X5878 12254 moveto(\253)s
  944. X
  945. X240 fnt35
  946. X5906 12102 moveto(x)s 
  947. X220 fnt13
  948. X1897 11582 moveto(x+y overbar)s gsave
  949. X5866 0 translate
  950. X3.4885 1.0000 scale
  951. X
  952. X240 fnt33
  953. X0 11693 moveto(-)s 
  954. Xgrestore
  955. X
  956. X240 fnt35
  957. X5866 11586 moveto(x)s 
  958. X240 fnt33
  959. X6029 11579 moveto(+)s
  960. X
  961. X240 fnt35
  962. X6217 11586 moveto(y)s 
  963. X220 fnt13
  964. X1897 11087 moveto(x+y underbar)s 
  965. X240 fnt35
  966. X5866 11091 moveto(x)s 
  967. X240 fnt33
  968. X6029 11084 moveto(+)s 
  969. X240 fnt35
  970. X6217 11091 moveto(y)s
  971. Xgsave
  972. X5866 0 translate
  973. X3.4885 1.0000 scale
  974. X
  975. X240 fnt33
  976. X0 10929 moveto(-)s 
  977. Xgrestore
  978. X
  979. X240 fnt34
  980. X1417 10535 moveto(These)s 2053 x(marks)s 2702 x(are)s 3058 x(centred)s
  981. X3826 x(over)s 4316 x(the)s 4673 x(left)s 5055 x(parameter,)s 6134 x(except)s
  982. X6823 x(the)s 7180 x(last)s 7576 x(two)s 8000 x(which)s 8650 x(are)s
  983. X9006 x(extended)s 9935 x(to)s 10186 x(the)s 1417 10247 moveto(width)s 2022 x(of)s
  984. X2281 x(the)s 2633 x(object.)s 
  985. X220 fnt13
  986. X1897 9678 moveto(a sup b)s 
  987. X167 fnt35
  988. X5986 9794 moveto(b)s 
  989. X240 fnt35
  990. X5866 9682 moveto(a)s
  991. X
  992. X220 fnt13
  993. X1897 9183 moveto(a sub b)s 
  994. X240 fnt35
  995. X5866 9187 moveto(a)s 
  996. X167 fnt35
  997. X5986 9107 moveto(b)s 
  998. X220 fnt13
  999. X1897 8588 moveto(a supp b on c)s 
  1000. X240 fnt35
  1001. X5866 8592 moveto(a)s
  1002. X
  1003. X167 fnt35
  1004. X5986 8704 moveto(b)s 5986 8512 moveto(c)s 
  1005. X240 fnt34
  1006. X1417 8060 moveto(Note)s 1942 x(that)s 
  1007. X220 fnt13
  1008. X2360 8056 moveto(supp)s
  1009. X
  1010. X240 fnt34
  1011. X2896 8060 moveto(and)s 
  1012. X220 fnt13
  1013. X3302 8056 moveto(on)s 
  1014. X240 fnt34
  1015. X3606 8060 moveto(must)s 4131 x(be)s 4417 x(used)s
  1016. X4916 x(together)s 5759 x(as)s 6018 x(shown.)s 
  1017. X220 fnt13
  1018. X1897 7507 moveto(big sum from i)s 
  1019. X311 fnt33
  1020. X5866 7487 moveto(\345)s
  1021. X
  1022. X167 fnt35
  1023. X5953 7301 moveto(i)s 
  1024. X220 fnt13
  1025. X1897 6614 moveto(big prod to j)s 
  1026. X167 fnt35
  1027. X5970 6903 moveto(j)s 
  1028. X311 fnt33
  1029. X5866 6594 moveto(\325)s 
  1030. X220 fnt13
  1031. X1897 6114 moveto({a, ... , z} widefrom)s
  1032. X1897 5826 moveto({90d @Rotate blbrace})s 
  1033. X240 fnt35
  1034. X5866 6118 moveto(a)s 
  1035. X240 fnt33
  1036. X5986 6111 moveto(,)s 6089 x(\274)s 6329 x(,)s
  1037. X
  1038. X240 fnt35
  1039. X6432 6118 moveto(z)s gsave
  1040. X6235 0 translate
  1041. X0.9140 1.0000 scale
  1042. Xgsave
  1043. X0 5914 translate
  1044. X90.0000 rotate
  1045. X
  1046. X240 fnt33
  1047. X0 182 moveto(\354)s 0 -60 moveto(\355)s 0 -302 moveto(\356)s 
  1048. Xgrestore
  1049. X
  1050. Xgrestore
  1051. X
  1052. X220 fnt13
  1053. X1897 5325 moveto({a, ... , z} wideto minus)s
  1054. Xgsave
  1055. X5866 0 translate
  1056. X5.0305 1.0000 scale
  1057. X
  1058. X240 fnt33
  1059. X0 5422 moveto(-)s 
  1060. Xgrestore
  1061. X
  1062. X240 fnt35
  1063. X5866 5329 moveto(a)s 
  1064. X240 fnt33
  1065. X5986 5322 moveto(,)s 6089 x(\274)s 6329 x(,)s
  1066. X
  1067. X240 fnt35
  1068. X6432 5329 moveto(z)s 
  1069. X220 fnt13
  1070. X1417 4824 moveto(widefrom)s 
  1071. X240 fnt34
  1072. X2364 4828 moveto(and)s 
  1073. X220 fnt13
  1074. X2768 4824 moveto(wideto)s 
  1075. X240 fnt34
  1076. X3459 4828 moveto(are)s
  1077. X3808 x(like)s 
  1078. X220 fnt13
  1079. X4224 4824 moveto(from)s 
  1080. X240 fnt34
  1081. X4721 4828 moveto(and)s 
  1082. X220 fnt13
  1083. X5125 4824 moveto(to)s 
  1084. X240 fnt34
  1085. X5366 4828 moveto(except)s
  1086. X6048 x(that)s 6464 x(they)s 6934 x(horizontally)s 8147 x(scale)s 8682 x(the)s
  1087. X9032 x(right)s 9541 x(parameter)s 1417 4540 moveto(to)s 1663 x(the)s 2015 x(width)s
  1088. X2620 x(of)s 2879 x(the)s 3231 x(left.)s 
  1089. X220 fnt13
  1090. X1897 3992 moveto(sqrt {x over y})s gsave
  1091. X0 3937 translate
  1092. X1.0000 1.9476 scale
  1093. X
  1094. X240 fnt33
  1095. X5866 -60 moveto(\326)s
  1096. X
  1097. Xgrestore
  1098. Xgsave
  1099. X5997 4248 translate
  1100. X149 0 0 0 240 288 0 LoutGraphic
  1101. Xgsave
  1102. X0 0 moveto xsize 0 lineto 0.03 ft setlinewidth 2 setlinecap stroke
  1103. Xgrestore
  1104. X
  1105. Xgrestore
  1106. X
  1107. X240 fnt35
  1108. X6040 4099 moveto(x)s gsave
  1109. X6040 4049 translate
  1110. X106 0 0 0 240 288 0 LoutGraphic
  1111. Xgsave
  1112. X0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke
  1113. Xgrestore
  1114. X
  1115. Xgrestore
  1116. X
  1117. X240 fnt35
  1118. X6040 3895 moveto(y)s 
  1119. X220 fnt13
  1120. X1897 3258 moveto(3 root {x over y})s 
  1121. X167 fnt33
  1122. X5866 3370 moveto(3)s gsave
  1123. X0 3203 translate
  1124. X1.0000 1.9476 scale
  1125. X
  1126. X240 fnt33
  1127. X5866 -60 moveto(\326)s
  1128. X
  1129. Xgrestore
  1130. Xgsave
  1131. X5997 3514 translate
  1132. X149 0 0 0 240 288 0 LoutGraphic
  1133. Xgsave
  1134. X0 0 moveto xsize 0 lineto 0.03 ft setlinewidth 2 setlinecap stroke
  1135. Xgrestore
  1136. X
  1137. Xgrestore
  1138. X
  1139. X240 fnt35
  1140. X6040 3365 moveto(x)s gsave
  1141. X6040 3315 translate
  1142. X106 0 0 0 240 288 0 LoutGraphic
  1143. Xgsave
  1144. X0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke
  1145. Xgrestore
  1146. X
  1147. Xgrestore
  1148. X
  1149. X240 fnt35
  1150. X6040 3161 moveto(y)s 
  1151. X240 fnt34
  1152. X1417 2618 moveto(The)s 1849 x(left)s 2226 x(parameter)s
  1153. X3240 x(of)s 
  1154. X220 fnt13
  1155. X3499 2614 moveto(root)s 
  1156. X240 fnt34
  1157. X3937 2618 moveto(may)s 4409 x(be)s 4695 x(any)s
  1158. X5101 x(object.)s 
  1159. X220 fnt13
  1160. X1897 2009 moveto(2 over 3)s 
  1161. X240 fnt33
  1162. X5866 2114 moveto(2)s gsave
  1163. X5866 2066 translate
  1164. X120 0 0 0 240 288 0 LoutGraphic
  1165. Xgsave
  1166. X0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke
  1167. Xgrestore
  1168. X
  1169. Xgrestore
  1170. X
  1171. X240 fnt33
  1172. X5866 1854 moveto(3)s 
  1173. Xpgsave restore
  1174. Xshowpage
  1175. X
  1176. X%%Page: ? 10
  1177. X%%BeginPageSetup
  1178. X/pgsave save def
  1179. X0.0500 dup scale 10 setlinewidth
  1180. X%%EndPageSetup
  1181. X
  1182. X240 fnt34
  1183. X5754 15261 moveto(-)s 5893 x(9)s 6073 x(-)s 
  1184. X220 fnt13
  1185. X1897 14630 moveto(2 frac 3)s 
  1186. X167 fnt33
  1187. X5866 14717 moveto(2)s
  1188. X5949 14646 moveto(\244)s 5976 14574 moveto(3)s 
  1189. X240 fnt34
  1190. X1417 14121 moveto(The)s 1849 x(following)s 2839 x(short)s
  1191. X3377 x(names)s 4048 x(de\207ne)s 4693 x(relations)s 5575 x(\(that)s 6072 x(is,)s
  1192. X6351 x(they)s 6823 x(have)s 7335 x(a)s 7501 x(thick)s 8039 x(space)s
  1193. X8630 x(on)s 8930 x(each)s 9428 x(side\):)s 
  1194. X220 fnt13
  1195. X3017 13659 moveto(<)s 
  1196. X240 fnt33
  1197. X3505 13656 moveto(<)s
  1198. X
  1199. X220 fnt13
  1200. X5885 13659 moveto(>)s 
  1201. X240 fnt33
  1202. X6373 13656 moveto(>)s 
  1203. X220 fnt13
  1204. X8753 13659 moveto(=)s 
  1205. X240 fnt33
  1206. X9241 13656 moveto(=)s 
  1207. X220 fnt13
  1208. X2889 13371 moveto(<=)s
  1209. X
  1210. X240 fnt33
  1211. X3505 13368 moveto(\243)s 
  1212. X220 fnt13
  1213. X5586 13371 moveto(prec)s gsave
  1214. X6430 13428 translate
  1215. X-90.0000 rotate
  1216. X
  1217. X107 fnt33
  1218. X-41 -26 moveto(\366)s 0 x(\346)s 
  1219. Xgrestore
  1220. X
  1221. X220 fnt13
  1222. X8210 13371 moveto(preceq)s
  1223. Xgsave
  1224. X9298 13428 translate
  1225. X-90.0000 rotate
  1226. X
  1227. X107 fnt33
  1228. X-41 -26 moveto(\366)s 0 x(\346)s 
  1229. Xgrestore
  1230. X
  1231. X240 fnt33
  1232. X9241 13294 moveto(-)s 
  1233. X220 fnt13
  1234. X2889 13083 moveto(<<)s 
  1235. X240 fnt33
  1236. X3505 13080 moveto(<)s
  1237. X3636 x(<)s 
  1238. X220 fnt13
  1239. X5366 13083 moveto(subset)s 
  1240. X240 fnt33
  1241. X6373 13080 moveto(\314)s 
  1242. X220 fnt13
  1243. X7990 13083 moveto(subseteq)s 
  1244. X240 fnt33
  1245. X9241 13080 moveto(\315)s
  1246. X
  1247. X220 fnt13
  1248. X2022 12795 moveto(sqsubseteq)s gsave
  1249. X3505 12792 translate
  1250. X131 120 0 60 240 288 0 LoutGraphic
  1251. Xgsave
  1252. Xxsize 0 moveto
  1253. X0 0 lineto
  1254. X0 ysize lineto
  1255. Xxsize ysize lineto
  1256. X0.04 ft setlinewidth stroke
  1257. Xgrestore
  1258. X
  1259. Xgrestore
  1260. X
  1261. X240 fnt33
  1262. X3505 12699 moveto(-)s 
  1263. X220 fnt13
  1264. X5843 12795 moveto(in)s 
  1265. X240 fnt33
  1266. X6373 12792 moveto(\316)s 
  1267. X220 fnt13
  1268. X8295 12795 moveto(vdash)s
  1269. Xgsave
  1270. X9301 12852 translate
  1271. X-180.0000 rotate
  1272. Xgsave
  1273. X0 -78 translate
  1274. X180.0000 rotate
  1275. Xgsave
  1276. X0 0 translate
  1277. X-90.0000 rotate
  1278. X
  1279. X240 fnt33
  1280. X0 -60 moveto(^)s 
  1281. Xgrestore
  1282. X
  1283. Xgrestore
  1284. X
  1285. Xgrestore
  1286. Xgsave
  1287. X9301 12931 translate
  1288. X-90.0000 rotate
  1289. X
  1290. X240 fnt33
  1291. X0 -60 moveto(^)s 
  1292. Xgrestore
  1293. X
  1294. X220 fnt13
  1295. X2634 12507 moveto(smile)s gsave
  1296. X3606 12564 translate
  1297. X-180.0000 rotate
  1298. Xgsave
  1299. X0 -39 translate
  1300. X180.0000 rotate
  1301. Xgsave
  1302. X0 -79 translate
  1303. X90.0000 rotate
  1304. X
  1305. X240 fnt33
  1306. X0 -60 moveto(\()s 
  1307. Xgrestore
  1308. X
  1309. Xgrestore
  1310. X
  1311. Xgrestore
  1312. Xgsave
  1313. X3606 12525 translate
  1314. X90.0000 rotate
  1315. X
  1316. X240 fnt33
  1317. X0 -60 moveto(\()s
  1318. X
  1319. Xgrestore
  1320. X
  1321. X220 fnt13
  1322. X5477 12507 moveto(frown)s gsave
  1323. X6474 12564 translate
  1324. X-180.0000 rotate
  1325. Xgsave
  1326. X0 -39 translate
  1327. X180.0000 rotate
  1328. Xgsave
  1329. X0 -79 translate
  1330. X90.0000 rotate
  1331. X
  1332. X240 fnt33
  1333. X0 -60 moveto(\))s 
  1334. Xgrestore
  1335. X
  1336. Xgrestore
  1337. X
  1338. Xgrestore
  1339. Xgsave
  1340. X6474 12525 translate
  1341. X90.0000 rotate
  1342. X
  1343. X240 fnt33
  1344. X0 -60 moveto(\))s 
  1345. Xgrestore
  1346. X
  1347. X220 fnt13
  1348. X8625 12507 moveto(>=)s 
  1349. X240 fnt33
  1350. X9241 12504 moveto(\263)s
  1351. X
  1352. X220 fnt13
  1353. X2693 12219 moveto(succ)s gsave
  1354. X3577 12276 translate
  1355. X90.0000 rotate
  1356. X
  1357. X107 fnt33
  1358. X-41 -26 moveto(\366)s 0 x(\346)s 
  1359. Xgrestore
  1360. X
  1361. X220 fnt13
  1362. X5317 12219 moveto(succeq)s gsave
  1363. X6445 12276 translate
  1364. X90.0000 rotate
  1365. X
  1366. X107 fnt33
  1367. X-41 -26 moveto(\366)s
  1368. X0 x(\346)s 
  1369. Xgrestore
  1370. X
  1371. X240 fnt33
  1372. X6373 12142 moveto(-)s 
  1373. X220 fnt13
  1374. X8625 12219 moveto(>>)s 
  1375. X240 fnt33
  1376. X9241 12216 moveto(>)s 9372 x(>)s
  1377. X
  1378. X220 fnt13
  1379. X2498 11931 moveto(supset)s 
  1380. X240 fnt33
  1381. X3505 11928 moveto(\311)s 
  1382. X220 fnt13
  1383. X5122 11931 moveto(supseteq)s 
  1384. X240 fnt33
  1385. X6373 11928 moveto(\312)s 
  1386. X220 fnt13
  1387. X7758 11931 moveto(sqsupseteq)s
  1388. Xgsave
  1389. X9241 11928 translate
  1390. X131 120 0 60 240 288 0 LoutGraphic
  1391. Xgsave
  1392. X0 0 moveto xsize 0 lineto
  1393. Xxsize ysize lineto
  1394. X0 ysize lineto
  1395. X0.04 ft setlinewidth stroke
  1396. Xgrestore
  1397. X
  1398. Xgrestore
  1399. X
  1400. X240 fnt33
  1401. X9241 11835 moveto(-)s 
  1402. X220 fnt13
  1403. X2975 11643 moveto(ni)s gsave
  1404. X3676 11700 translate
  1405. X180.0000 rotate
  1406. X
  1407. X240 fnt33
  1408. X0 -60 moveto(\316)s 
  1409. Xgrestore
  1410. X
  1411. X220 fnt13
  1412. X5427 11643 moveto(dashv)s gsave
  1413. X6474 11700 translate
  1414. X-180.0000 rotate
  1415. Xgsave
  1416. X0 -78 translate
  1417. X180.0000 rotate
  1418. Xgsave
  1419. X0 -157 translate
  1420. X90.0000 rotate
  1421. X
  1422. X240 fnt33
  1423. X0 -60 moveto(^)s
  1424. X
  1425. Xgrestore
  1426. X
  1427. Xgrestore
  1428. X
  1429. Xgrestore
  1430. Xgsave
  1431. X6474 11622 translate
  1432. X90.0000 rotate
  1433. X
  1434. X240 fnt33
  1435. X0 -60 moveto(^)s 
  1436. Xgrestore
  1437. X
  1438. X220 fnt13
  1439. X8528 11643 moveto(mid)s 
  1440. X240 fnt34
  1441. X9241 11647 moveto(|)s 
  1442. X220 fnt13
  1443. X2440 11355 moveto(parallel)s 
  1444. X240 fnt34
  1445. X3505 11359 moveto(||)s
  1446. X
  1447. X220 fnt13
  1448. X5757 11355 moveto(==)s 
  1449. X240 fnt33
  1450. X6373 11352 moveto(\272)s 
  1451. X220 fnt13
  1452. X8753 11355 moveto(~)s 
  1453. X240 fnt33
  1454. X9241 11352 moveto(~)s 
  1455. X220 fnt13
  1456. X2944 11067 moveto(-~)s
  1457. X
  1458. X240 fnt33
  1459. X3505 11091 moveto(~)s 3505 11039 moveto(-)s 
  1460. X220 fnt13
  1461. X5366 11067 moveto(asymp)s gsave
  1462. X6443 11125 translate
  1463. X90.0000 rotate
  1464. X
  1465. X167 fnt33
  1466. X0 -41 moveto(\()s 
  1467. Xgrestore
  1468. Xgsave
  1469. X6443 11068 translate
  1470. X90.0000 rotate
  1471. X
  1472. X167 fnt33
  1473. X0 -41 moveto(\))s
  1474. X
  1475. Xgrestore
  1476. X
  1477. X220 fnt13
  1478. X8625 11067 moveto(~~)s 
  1479. X240 fnt33
  1480. X9241 11064 moveto(\273)s 
  1481. X220 fnt13
  1482. X2889 10779 moveto(=~)s 
  1483. X240 fnt33
  1484. X3505 10776 moveto(@)s 
  1485. X220 fnt13
  1486. X5380 10779 moveto(bowtie)s
  1487. Xgsave
  1488. X6430 10836 translate
  1489. X-90.0000 rotate
  1490. Xgsave
  1491. X-57 -57 translate
  1492. X114 114 57 57 192 0 48 LoutGraphic
  1493. Xgsave
  1494. X0 0 moveto xsize 0 lineto
  1495. Xxsize 2 div ysize lineto closepath
  1496. X0.04 ft setlinewidth stroke
  1497. Xgrestore
  1498. X
  1499. Xgrestore
  1500. X
  1501. Xgrestore
  1502. Xgsave
  1503. X6544 10836 translate
  1504. X90.0000 rotate
  1505. Xgsave
  1506. X-57 -57 translate
  1507. X114 114 57 57 192 0 48 LoutGraphic
  1508. Xgsave
  1509. X0 0 moveto xsize 0 lineto
  1510. Xxsize 2 div ysize lineto closepath
  1511. X0.04 ft setlinewidth stroke
  1512. Xgrestore
  1513. X
  1514. Xgrestore
  1515. X
  1516. Xgrestore
  1517. X
  1518. X220 fnt13
  1519. X8259 10779 moveto(propto)s 
  1520. X240 fnt33
  1521. X9241 10776 moveto(\265)s 
  1522. X220 fnt13
  1523. X2438 10491 moveto(models)s gsave
  1524. X3505 10548 translate
  1525. X-180.0000 rotate
  1526. Xgsave
  1527. X0 -81 translate
  1528. X180.0000 rotate
  1529. X
  1530. X240 fnt34
  1531. X0 -162 moveto(|)s 
  1532. Xgrestore
  1533. X
  1534. Xgrestore
  1535. X
  1536. X240 fnt34
  1537. X3505 10467 moveto(|)s
  1538. Xgsave
  1539. X3517 10548 translate
  1540. X-180.0000 rotate
  1541. Xgsave
  1542. X0 -29 translate
  1543. X180.0000 rotate
  1544. X
  1545. X240 fnt33
  1546. X0 -93 moveto(=)s 
  1547. Xgrestore
  1548. X
  1549. Xgrestore
  1550. X
  1551. X240 fnt33
  1552. X3517 10485 moveto(=)s 
  1553. X220 fnt13
  1554. X5464 10491 moveto(doteq)s 
  1555. X240 fnt33
  1556. X6408 10566 moveto(\327)s 6373 10488 moveto(=)s
  1557. X
  1558. X220 fnt13
  1559. X8442 10491 moveto(perp)s 
  1560. X240 fnt33
  1561. X9241 10488 moveto(^)s 
  1562. X220 fnt13
  1563. X2486 10203 moveto(notsub)s 
  1564. X240 fnt33
  1565. X3505 10200 moveto(\313)s 
  1566. X220 fnt13
  1567. X5538 10203 moveto(notin)s
  1568. X
  1569. X240 fnt33
  1570. X6373 10200 moveto(\317)s 
  1571. X220 fnt13
  1572. X8692 10203 moveto(!=)s 
  1573. X240 fnt33
  1574. X9241 10200 moveto(\271)s 
  1575. X220 fnt13
  1576. X2816 9915 moveto(<->)s 
  1577. X240 fnt33
  1578. X3505 9912 moveto(\253)s
  1579. X
  1580. X220 fnt13
  1581. X5739 9915 moveto(<--)s 
  1582. X240 fnt33
  1583. X6373 9912 moveto(\254)s 
  1584. X220 fnt13
  1585. X8607 9915 moveto(-->)s 
  1586. X240 fnt33
  1587. X9241 9912 moveto(\256)s 
  1588. X220 fnt13
  1589. X2901 9627 moveto(up)s
  1590. X
  1591. X240 fnt33
  1592. X3505 9624 moveto(\255)s 
  1593. X220 fnt13
  1594. X5489 9627 moveto(down)s 
  1595. X240 fnt33
  1596. X6373 9624 moveto(\257)s 
  1597. X220 fnt13
  1598. X8497 9627 moveto(<=>)s 
  1599. X240 fnt33
  1600. X9241 9624 moveto(\333)s
  1601. X
  1602. X220 fnt13
  1603. X2761 9339 moveto(<==)s 
  1604. X240 fnt33
  1605. X3505 9336 moveto(\334)s 
  1606. X220 fnt13
  1607. X5629 9339 moveto(==>)s 
  1608. X240 fnt33
  1609. X6373 9336 moveto(\336)s 
  1610. X220 fnt13
  1611. X8345 9339 moveto(dblup)s
  1612. X
  1613. X240 fnt33
  1614. X9241 9336 moveto(\335)s 
  1615. X220 fnt13
  1616. X2329 9051 moveto(dbldown)s 
  1617. X240 fnt33
  1618. X3505 9048 moveto(\337)s 
  1619. X220 fnt13
  1620. X5952 9051 moveto(:)s 
  1621. X240 fnt33
  1622. X6373 9048 moveto(:)s
  1623. X
  1624. X220 fnt13
  1625. X8759 9051 moveto(::)s 
  1626. X240 fnt33
  1627. X9241 9048 moveto(:)s 9350 x(:)s 
  1628. X220 fnt13
  1629. X2956 8763 moveto(:=)s 
  1630. X240 fnt33
  1631. X3505 8760 moveto(:)s
  1632. X3571 8748 moveto(=)s 
  1633. X240 fnt34
  1634. X1417 8306 moveto(These)s 2053 x(can)s 2450 x(be)s 2741 x(negated)s
  1635. X3550 x(by)s 3855 x(preceding)s 4863 x(them)s 5406 x(with)s 
  1636. X220 fnt13
  1637. X5896 8302 moveto(not)s
  1638. X
  1639. X240 fnt34
  1640. X6201 8306 moveto(,)s 6326 x(as)s 6590 x(in)s 
  1641. X220 fnt13
  1642. X6841 8302 moveto(not ==)s 
  1643. X240 fnt34
  1644. X7463 8306 moveto(,)s
  1645. X7588 x(for)s 7931 x(example,)s 8866 x(which)s 9516 x(yields)s 
  1646. X240 fnt33
  1647. X10224 8299 moveto(\272)s
  1648. X10256 x(/)s 
  1649. X240 fnt34
  1650. X10427 8306 moveto(.)s 1417 8018 moveto(The)s 1849 x(following)s 2839 x(short)s
  1651. X3377 x(names)s 4048 x(de\207ne)s 4693 x(binary)s 5364 x(operators)s 6313 x(\(medium)s
  1652. X7236 x(space)s 7827 x(on)s 8127 x(each)s 8625 x(side\):)s 
  1653. X220 fnt13
  1654. X3017 7527 moveto(+)s
  1655. X
  1656. X240 fnt33
  1657. X3490 7524 moveto(+)s 
  1658. X220 fnt13
  1659. X5940 7527 moveto(-)s 
  1660. X240 fnt33
  1661. X6358 7524 moveto(-)s 
  1662. X220 fnt13
  1663. X8680 7527 moveto(+-)s 
  1664. X240 fnt33
  1665. X9226 7524 moveto(\261)s
  1666. X
  1667. X220 fnt13
  1668. X2944 7239 moveto(-+)s gsave
  1669. X3621 7296 translate
  1670. X180.0000 rotate
  1671. X
  1672. X240 fnt33
  1673. X0 -60 moveto(\261)s 
  1674. Xgrestore
  1675. X
  1676. X220 fnt13
  1677. X5135 7239 moveto(setminus)s 
  1678. X240 fnt35
  1679. X6358 7243 moveto(\\)s 
  1680. X220 fnt13
  1681. X8466 7239 moveto(cdot)s
  1682. X
  1683. X240 fnt33
  1684. X9226 7236 moveto(\327)s 
  1685. X220 fnt13
  1686. X2621 6951 moveto(times)s 
  1687. X240 fnt33
  1688. X3490 6948 moveto(\264)s 
  1689. X220 fnt13
  1690. X5928 6951 moveto(*)s 
  1691. X240 fnt33
  1692. X6358 6948 moveto(*)s
  1693. X
  1694. X220 fnt13
  1695. X8540 6951 moveto(circ)s gsave
  1696. X9226 6936 translate
  1697. X167 144 0 72 240 288 0 LoutGraphic
  1698. Xgsave
  1699. Xxsize ysize 2 div moveto
  1700. Xxsize 2 div ysize 2 div xsize 2 div 0 360 arc
  1701. X0.04 ft setlinewidth stroke
  1702. Xgrestore
  1703. X
  1704. Xgrestore
  1705. X
  1706. X220 fnt13
  1707. X2865 6663 moveto(div)s 
  1708. X240 fnt33
  1709. X3490 6660 moveto(\270)s 
  1710. X220 fnt13
  1711. X5659 6663 moveto(cap)s 
  1712. X240 fnt33
  1713. X6358 6660 moveto(\307)s
  1714. X
  1715. X220 fnt13
  1716. X8527 6663 moveto(cup)s 
  1717. X240 fnt33
  1718. X9226 6660 moveto(\310)s 
  1719. X220 fnt13
  1720. X2621 6375 moveto(uplus)s 
  1721. X167 fnt33
  1722. X3536 6439 moveto(+)s 
  1723. X240 fnt33
  1724. X3490 6372 moveto(\310)s
  1725. X
  1726. X220 fnt13
  1727. X5427 6375 moveto(sqcap)s gsave
  1728. X6358 6360 translate
  1729. X144 144 72 72 240 288 0 LoutGraphic
  1730. Xgsave
  1731. X0 0 moveto 0 ysize lineto xsize ysize lineto
  1732. Xxsize 0 lineto
  1733. X0.04 ft setlinewidth stroke
  1734. Xgrestore
  1735. X
  1736. Xgrestore
  1737. X
  1738. X220 fnt13
  1739. X8295 6375 moveto(sqcup)s gsave
  1740. X9427 6432 translate
  1741. X180.0000 rotate
  1742. Xgsave
  1743. X57 -72 translate
  1744. X144 144 72 72 240 288 0 LoutGraphic
  1745. Xgsave
  1746. X0 0 moveto 0 ysize lineto xsize ysize lineto
  1747. Xxsize 0 lineto
  1748. X0.04 ft setlinewidth stroke
  1749. Xgrestore
  1750. X
  1751. Xgrestore
  1752. X
  1753. Xgrestore
  1754. X
  1755. X220 fnt13
  1756. X2135 6087 moveto(triangleleft)s gsave
  1757. X3547 6144 translate
  1758. X90.0000 rotate
  1759. Xgsave
  1760. X-57 -57 translate
  1761. X114 114 57 57 192 288 48 LoutGraphic
  1762. Xgsave
  1763. X0 0 moveto xsize 0 lineto
  1764. Xxsize 2 div ysize lineto closepath
  1765. X0.04 ft setlinewidth stroke
  1766. Xgrestore
  1767. X
  1768. Xgrestore
  1769. X
  1770. Xgrestore
  1771. X
  1772. X220 fnt13
  1773. X4869 6087 moveto(triangleright)s gsave
  1774. X6415 6144 translate
  1775. X-90.0000 rotate
  1776. Xgsave
  1777. X-57 -57 translate
  1778. X114 114 57 57 192 288 48 LoutGraphic
  1779. Xgsave
  1780. X0 0 moveto xsize 0 lineto
  1781. Xxsize 2 div ysize lineto closepath
  1782. X0.04 ft setlinewidth stroke
  1783. Xgrestore
  1784. X
  1785. Xgrestore
  1786. X
  1787. Xgrestore
  1788. X
  1789. X220 fnt13
  1790. X8650 6087 moveto(wr)s
  1791. Xgsave
  1792. X9239 6144 translate
  1793. X-180.0000 rotate
  1794. Xgsave
  1795. X0 -65 translate
  1796. X180.0000 rotate
  1797. Xgsave
  1798. X0 -131 translate
  1799. X90.0000 rotate
  1800. X
  1801. X240 fnt33
  1802. X0 -60 moveto(~)s 
  1803. Xgrestore
  1804. X
  1805. Xgrestore
  1806. X
  1807. Xgrestore
  1808. Xgsave
  1809. X9239 6079 translate
  1810. X90.0000 rotate
  1811. X
  1812. X240 fnt33
  1813. X0 -60 moveto(~)s 
  1814. Xgrestore
  1815. X
  1816. X220 fnt13
  1817. X2512 5799 moveto(bigcirc)s gsave
  1818. X3490 5770 translate
  1819. X201 172 0 86 288 288 72 LoutGraphic
  1820. Xgsave
  1821. Xxsize ysize 2 div moveto
  1822. Xxsize 2 div ysize 2 div xsize 2 div 0 360 arc
  1823. X0.04 ft setlinewidth stroke
  1824. Xgrestore
  1825. X
  1826. Xgrestore
  1827. X
  1828. X220 fnt13
  1829. X4759 5799 moveto(bigtriangleup)s gsave
  1830. X6358 5770 translate
  1831. X172 172 86 86 288 288 72 LoutGraphic
  1832. Xgsave
  1833. X0 0 moveto xsize 0 lineto
  1834. Xxsize 2 div ysize lineto closepath
  1835. X0.04 ft setlinewidth stroke
  1836. Xgrestore
  1837. X
  1838. Xgrestore
  1839. X
  1840. X220 fnt13
  1841. X7347 5799 moveto(bigtriangledown)s
  1842. Xgsave
  1843. X9312 5856 translate
  1844. X180.0000 rotate
  1845. Xgsave
  1846. X-86 -86 translate
  1847. X172 172 86 86 288 288 72 LoutGraphic
  1848. Xgsave
  1849. X0 0 moveto xsize 0 lineto
  1850. Xxsize 2 div ysize lineto closepath
  1851. X0.04 ft setlinewidth stroke
  1852. Xgrestore
  1853. X
  1854. Xgrestore
  1855. X
  1856. Xgrestore
  1857. X
  1858. X220 fnt13
  1859. X2791 5511 moveto(vee)s 
  1860. X240 fnt33
  1861. X3490 5508 moveto(\332)s 
  1862. X220 fnt13
  1863. X5367 5511 moveto(wedge)s 
  1864. X240 fnt33
  1865. X6358 5508 moveto(\331)s 
  1866. X220 fnt13
  1867. X8357 5511 moveto(oplus)s
  1868. X
  1869. X240 fnt33
  1870. X9226 5508 moveto(\305)s 
  1871. X220 fnt13
  1872. X2438 5223 moveto(ominus)s gsave
  1873. X3490 5208 translate
  1874. X167 144 0 72 240 288 0 LoutGraphic
  1875. Xgsave
  1876. Xxsize ysize 2 div moveto
  1877. Xxsize 2 div ysize 2 div xsize 2 div 0 360 arc
  1878. X0.04 ft setlinewidth stroke
  1879. Xgrestore
  1880. X
  1881. Xgrestore
  1882. X
  1883. X240 fnt33
  1884. X3508 5220 moveto(-)s 
  1885. X220 fnt13
  1886. X5367 5223 moveto(otimes)s 
  1887. X240 fnt33
  1888. X6358 5220 moveto(\304)s
  1889. X
  1890. X220 fnt13
  1891. X8247 5223 moveto(oslash)s gsave
  1892. X9274 5280 translate
  1893. X-180.0000 rotate
  1894. Xgsave
  1895. X0 -94 translate
  1896. X180.0000 rotate
  1897. Xgsave
  1898. X0 -186 translate
  1899. X60.0000 rotate
  1900. Xgsave
  1901. X0 -72 translate
  1902. X167 144 0 72 240 288 0 LoutGraphic
  1903. Xgsave
  1904. Xxsize ysize 2 div moveto
  1905. Xxsize 2 div ysize 2 div xsize 2 div 0 360 arc
  1906. X0.04 ft setlinewidth stroke
  1907. Xgrestore
  1908. X
  1909. Xgrestore
  1910. X
  1911. X240 fnt33
  1912. X21 -60 moveto(-)s 
  1913. Xgrestore
  1914. X
  1915. Xgrestore
  1916. X
  1917. Xgrestore
  1918. Xgsave
  1919. X9274 5188 translate
  1920. X60.0000 rotate
  1921. Xgsave
  1922. X0 -72 translate
  1923. X167 144 0 72 240 288 0 LoutGraphic
  1924. Xgsave
  1925. Xxsize ysize 2 div moveto
  1926. Xxsize 2 div ysize 2 div xsize 2 div 0 360 arc
  1927. X0.04 ft setlinewidth stroke
  1928. Xgrestore
  1929. X
  1930. Xgrestore
  1931. X
  1932. X240 fnt33
  1933. X21 -60 moveto(-)s 
  1934. Xgrestore
  1935. X
  1936. X220 fnt13
  1937. X2718 4935 moveto(odot)s gsave
  1938. X3490 4920 translate
  1939. X167 144 0 72 240 288 0 LoutGraphic
  1940. Xgsave
  1941. Xxsize ysize 2 div moveto
  1942. Xxsize 2 div ysize 2 div xsize 2 div 0 360 arc
  1943. X0.04 ft setlinewidth stroke
  1944. Xgrestore
  1945. X
  1946. Xgrestore
  1947. X
  1948. X240 fnt33
  1949. X3543 4932 moveto(\327)s
  1950. X
  1951. X220 fnt13
  1952. X5330 4935 moveto(dagger)s 
  1953. X240 fnt34
  1954. X6358 4939 moveto(\214)s 
  1955. X220 fnt13
  1956. X7906 4935 moveto(daggerdbl)s 
  1957. X240 fnt34
  1958. X9226 4939 moveto(\215)s 
  1959. X220 fnt13
  1960. X2548 4647 moveto(amalg)s
  1961. Xgsave
  1962. X3687 4704 translate
  1963. X180.0000 rotate
  1964. Xgsave
  1965. X0 0 translate
  1966. X-180.0000 rotate
  1967. Xgsave
  1968. X0 -102 translate
  1969. X180.0000 rotate
  1970. X
  1971. X240 fnt33
  1972. X0 -180 moveto(\325)s 
  1973. Xgrestore
  1974. X
  1975. Xgrestore
  1976. X
  1977. X240 fnt33
  1978. X0 -78 moveto(\325)s 
  1979. Xgrestore
  1980. X
  1981. X240 fnt34
  1982. X1417 4148 moveto(The)s 1849 x(following)s 2839 x(names)s
  1983. X3510 x(de\207ne)s 4155 x(punctuation)s 5345 x(symbols)s 6203 x(\(thin)s 6714 x(space)s
  1984. X7305 x(on)s 7605 x(the)s 7957 x(right-hand)s 9013 x(side\):)s 
  1985. X220 fnt13
  1986. X3084 3649 moveto(;)s
  1987. X
  1988. X240 fnt33
  1989. X3433 3646 moveto(;)s 
  1990. X220 fnt13
  1991. X5952 3649 moveto(,)s 
  1992. X240 fnt33
  1993. X6301 3646 moveto(,)s 
  1994. X220 fnt13
  1995. X8601 3649 moveto(col)s 
  1996. X240 fnt33
  1997. X9169 3646 moveto(:)s
  1998. X
  1999. X240 fnt34
  2000. X1417 3160 moveto(The)s 1871 x(following)s 2883 x(symbols)s 3763 x(are)s 4136 x(used)s
  2001. X4657 x(in)s 4925 x(ways)s 5499 x(typi\207ed)s 6312 x(by)s 6634 x(the)s
  2002. X7008 x(large)s 7567 x(sum)s 8048 x(and)s 8476 x(product)s 9289 x(symbols.)s
  2003. X10289 x(In)s 1417 2872 moveto(display)s 2168 x(equations)s 3145 x(they)s 3617 x(should)s
  2004. X4316 x(be)s 4602 x(preceded)s 5525 x(by)s 5825 x(the)s 
  2005. X220 fnt13
  2006. X6177 2868 moveto(big)s
  2007. X
  2008. X240 fnt34
  2009. X6529 2872 moveto(symbol:)s 
  2010. X220 fnt13
  2011. X2730 2354 moveto(sum)s 
  2012. X240 fnt33
  2013. X3433 2351 moveto(\345)s 
  2014. X220 fnt13
  2015. X5574 2354 moveto(prod)s 
  2016. X240 fnt33
  2017. X6301 2351 moveto(\325)s
  2018. X
  2019. X220 fnt13
  2020. X8210 2354 moveto(coprod)s gsave
  2021. X9366 2411 translate
  2022. X180.0000 rotate
  2023. Xgsave
  2024. X0 0 translate
  2025. X-180.0000 rotate
  2026. Xgsave
  2027. X0 -102 translate
  2028. X180.0000 rotate
  2029. X
  2030. X240 fnt33
  2031. X0 -180 moveto(\325)s 
  2032. Xgrestore
  2033. END_OF_FILE
  2034.   if test 45806 -ne `wc -c <'doc/tr.eq/outfile.ps.B'`; then
  2035.     echo shar: \"'doc/tr.eq/outfile.ps.B'\" unpacked with wrong size!
  2036.   elif test -f 'doc/tr.eq/outfile.ps.A' && test -f 'doc/tr.eq/outfile.ps.C'; then
  2037.     echo shar: Combining  \"'doc/tr.eq/outfile.ps'\" \(148033 characters\)
  2038.     cat 'doc/tr.eq/outfile.ps.A' 'doc/tr.eq/outfile.ps.B' 'doc/tr.eq/outfile.ps.C' > 'doc/tr.eq/outfile.ps'
  2039.     if test 148033 -ne `wc -c <'doc/tr.eq/outfile.ps'`; then
  2040.       echo shar: \"'doc/tr.eq/outfile.ps'\" combined with wrong size!
  2041.     else
  2042.       rm doc/tr.eq/outfile.ps.A doc/tr.eq/outfile.ps.B doc/tr.eq/outfile.ps.C
  2043.     fi
  2044.   fi
  2045.   # end of 'doc/tr.eq/outfile.ps.B'
  2046. fi
  2047. if test -f 'doc/tr.impl/oldrefs.li' -a "${1}" != "-c" ; then 
  2048.   echo shar: Will not clobber existing file \"'doc/tr.impl/oldrefs.li'\"
  2049. else
  2050.   echo shar: Extracting \"'doc/tr.impl/oldrefs.li'\" \(439 characters\)
  2051.   sed "s/^X//" >'doc/tr.impl/oldrefs.li' <<'END_OF_FILE'
  2052. X#symbol 1 @Reference
  2053. X1&adobe85    0    183    .
  2054. X1&brooks91    0    5021    .
  2055. X1&furuta82    0    5273    .
  2056. X1&kernighan75    0    1178    .
  2057. X1&kernighan82    0    1717    .
  2058. X1&kingston91    0    1997    .
  2059. X1&kingston91basser    0    2291    .
  2060. X1&kingston91begin    0    2789    .
  2061. X1&kingston91design    0    4404    .
  2062. X1&kingston91eq    0    3085    .
  2063. X1&kingston91fig    0    3478    .
  2064. X1&kingston91over    0    3787    .
  2065. X1&kingston91tab    0    4093    .
  2066. X1&knuth84    0    0    .
  2067. X1&lesk76    0    1472    .
  2068. X1&ossanna76    0    930    .
  2069. X1&reid80    0    386    .
  2070. X1&strunk79    0    718    .
  2071. X1&wirth71    0    4781    .
  2072. END_OF_FILE
  2073.   if test 439 -ne `wc -c <'doc/tr.impl/oldrefs.li'`; then
  2074.     echo shar: \"'doc/tr.impl/oldrefs.li'\" unpacked with wrong size!
  2075.   fi
  2076.   # end of 'doc/tr.impl/oldrefs.li'
  2077. fi
  2078. if test -f 'z29.c' -a "${1}" != "-c" ; then 
  2079.   echo shar: Will not clobber existing file \"'z29.c'\"
  2080. else
  2081.   echo shar: Extracting \"'z29.c'\" \(24370 characters\)
  2082.   sed "s/^X//" >'z29.c' <<'END_OF_FILE'
  2083. X/*@z29.c:Symbol Table:Declarations, hash()@***********************************/
  2084. X/*                                                                           */
  2085. X/*  LOUT: A HIGH-LEVEL LANGUAGE FOR DOCUMENT FORMATTING (VERSION 2.05)       */
  2086. X/*  COPYRIGHT (C) 1993 Jeffrey H. Kingston                                   */
  2087. X/*                                                                           */
  2088. X/*  Jeffrey H. Kingston (jeff@cs.su.oz.au)                                   */
  2089. X/*  Basser Department of Computer Science                                    */
  2090. X/*  The University of Sydney 2006                                            */
  2091. X/*  AUSTRALIA                                                                */
  2092. X/*                                                                           */
  2093. X/*  This program is free software; you can redistribute it and/or modify     */
  2094. X/*  it under the terms of the GNU General Public License as published by     */
  2095. X/*  the Free Software Foundation; either version 1, or (at your option)      */
  2096. X/*  any later version.                                                       */
  2097. X/*                                                                           */
  2098. X/*  This program is distributed in the hope that it will be useful,          */
  2099. X/*  but WITHOUT ANY WARRANTY; without even the implied warranty of           */
  2100. X/*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            */
  2101. X/*  GNU General Public License for more details.                             */
  2102. X/*                                                                           */
  2103. X/*  You should have received a copy of the GNU General Public License        */
  2104. X/*  along with this program; if not, write to the Free Software              */
  2105. X/*  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.                */
  2106. X/*                                                                           */
  2107. X/*  FILE:         z29.c                                                      */
  2108. X/*  MODULE:       Symbol Table                                               */
  2109. X/*  EXTERNS:      InitSym(), PushScope(), PopScope(), SuppressVisible(),     */
  2110. X/*                UnSuppressVisible(), SuppressScope(), UnSuppressScope(),   */
  2111. X/*                SwitchScope(), UnSwitchScope(), BodyParAllowed(),          */
  2112. X/*                BodyParNotAllowed(), InsertSym(), SearchSym(),             */
  2113. X/*                SymName(), FullSymName(), ChildSym(), CheckSymSpread(),    */
  2114. X/*                DeleteEverySym()                                           */
  2115. X/*                                                                           */
  2116. X/*****************************************************************************/
  2117. X#include "externs"
  2118. X
  2119. X#define    MAX_STACK     40        /* size of scope stack               */
  2120. X#define    MAX_TAB        1024        /* size of hash table                */
  2121. X#define    TAB_MASK    0x3FF        /* i & TAB_MASK == i % MAX_TAB       */
  2122. X
  2123. X#define    length(x)    word_font(x)
  2124. X
  2125. Xstatic    OBJECT        scope[MAX_STACK];        /* the scope stack   */
  2126. Xstatic    BOOLEAN        npars_only[MAX_STACK];        /* look for NPAR exc */
  2127. Xstatic    BOOLEAN        vis_only[MAX_STACK];        /* look for visibles */
  2128. Xstatic    BOOLEAN        body_ok[MAX_STACK];        /* look for body par */
  2129. Xstatic    BOOLEAN        suppress_scope;            /* suppress scoping  */
  2130. Xstatic    BOOLEAN        suppress_visible;        /* suppress visible  */
  2131. Xstatic    int        scope_top;            /* scope stack top   */
  2132. Xstatic    struct { OBJECT f1, f2; } symtab[MAX_TAB];    /* the hash table    */
  2133. X#if DEBUG_ON
  2134. Xstatic    int        sym_spread[MAX_TAB] = { 0 };    /* hash table spread */
  2135. Xstatic    int        sym_count = 0;            /* symbol count      */
  2136. X#endif
  2137. X
  2138. X
  2139. X/*****************************************************************************/
  2140. X/*                                                                           */
  2141. X/*  #define hash(str, len, val)                                              */
  2142. X/*                                                                           */
  2143. X/*  Set val to the hash value of string str, which has length len.           */
  2144. X/*  The hash function is just the character sum mod MAX_TAB.                 */
  2145. X/*  This definition assumes that working variables rlen and x exist.         */
  2146. X/*                                                                           */
  2147. X/*****************************************************************************/
  2148. X
  2149. X#define hash(str, len, val)                        \
  2150. X{ rlen = len;                                \
  2151. X  x    = str;                                \
  2152. X  val  = *x++;                                \
  2153. X  while( --rlen )  val += *x++;                        \
  2154. X  val  &= TAB_MASK;                            \
  2155. X}
  2156. X
  2157. X
  2158. X/*@::InitSym(), PushScope(), PopScope(), SuppressVisible(), etc.@*************/
  2159. X/*                                                                           */
  2160. X/*  InitSym()                                                                */
  2161. X/*                                                                           */
  2162. X/*  Initialize the symbol table to empty.                                    */
  2163. X/*                                                                           */
  2164. X/*****************************************************************************/
  2165. X
  2166. XInitSym()
  2167. X{ int i;
  2168. X  scope_top = 0;
  2169. X  suppress_scope = FALSE;
  2170. X  suppress_visible = FALSE;
  2171. X  for( i = 0;  i < MAX_TAB;  i++ )
  2172. X    symtab[i].f1 = symtab[i].f2 = (OBJECT) &symtab[i];
  2173. X} /* end InitSym */
  2174. X
  2175. X
  2176. X/*****************************************************************************/
  2177. X/*                                                                           */
  2178. X/*  PushScope(x, npars, vis)                                                 */
  2179. X/*  PopScope()                                                               */
  2180. X/*                                                                           */
  2181. X/*  Add or remove an OBJECT x (which must be in the symbol table) to or from */
  2182. X/*  the scope stack.  If npars is TRUE, only the named parameters of x are   */
  2183. X/*  added to scope.  If vis is TRUE, only visible locals and parameters are  */
  2184. X/*  added.                                                                   */
  2185. X/*                                                                           */
  2186. X/*****************************************************************************/
  2187. X
  2188. XPushScope(x, npars, vis)
  2189. XOBJECT x;  BOOLEAN npars, vis;
  2190. X{ debug2(DST, DD, "[ PushScope( %s, %s )", SymName(x), bool(npars));
  2191. X  assert( suppress_scope == FALSE, "PushScope: suppress_scope!" );
  2192. X  if( scope_top >= MAX_STACK )
  2193. X  { int i;
  2194. X    for( i = 0; i < scope_top; i++ )
  2195. X      debug2(DST, D, "  scope[%2d] = %s", i, SymName(scope[i]));
  2196. X    Error(INTERN, &fpos(x), "scope depth limit exceeded");
  2197. X  }
  2198. X  scope[scope_top]      = x;
  2199. X  npars_only[scope_top] = npars;
  2200. X  vis_only[scope_top]   = vis;
  2201. X  body_ok[scope_top]    = FALSE;
  2202. X  scope_top++;
  2203. X} /* end PushScope */
  2204. X
  2205. XPopScope()
  2206. X{ debug0(DST, DD, "] PopScope()");
  2207. X  assert( scope_top > 0, "tried to pop empty scope stack");
  2208. X  assert( suppress_scope == FALSE, "PopScope: suppress_scope!" );
  2209. X  scope_top--;
  2210. X} /* end PopScope */
  2211. X
  2212. X
  2213. X/*****************************************************************************/
  2214. X/*                                                                           */
  2215. X/*  SuppressVisible()                                                        */
  2216. X/*  UnSuppressVisible()                                                      */
  2217. X/*                                                                           */
  2218. X/*  Suppress all scopes (so that all calls to SearchSym fail); and undo it.  */
  2219. X/*                                                                           */
  2220. X/*****************************************************************************/
  2221. X
  2222. XSuppressVisible()
  2223. X{ debug0(DST, DD, "[ SuppressVisible()");
  2224. X  suppress_visible = TRUE;
  2225. X} /* end SuppressVisible */
  2226. X
  2227. XUnSuppressVisible()
  2228. X{ debug0(DST, DD, "] UnSuppressVisible()");
  2229. X  suppress_visible = FALSE;
  2230. X} /* end UnSuppressVisible */
  2231. X
  2232. X
  2233. X/*@::SuppressScope(), UnSuppressScope(), SwitchScope(), UnswitchScope()@******/
  2234. X/*                                                                           */
  2235. X/*  SuppressScope()                                                          */
  2236. X/*  UnSuppressScope()                                                        */
  2237. X/*                                                                           */
  2238. X/*  Suppress all scopes (so that all calls to SearchSym fail); and undo it.  */
  2239. X/*                                                                           */
  2240. X/*****************************************************************************/
  2241. X
  2242. X
  2243. XSuppressScope()
  2244. X{ debug0(DST, DD, "[ SuppressScope()");
  2245. X  suppress_scope = TRUE;
  2246. X} /* end SuppressScope */
  2247. X
  2248. XUnSuppressScope()
  2249. X{ debug0(DST, DD, "] UnSuppressScope()");
  2250. X  suppress_scope = FALSE;
  2251. X} /* end UnSuppressScope */
  2252. X
  2253. X
  2254. X/*****************************************************************************/
  2255. X/*                                                                           */
  2256. X/*  SwitchScope(sym)                                                         */
  2257. X/*  UnSwitchScope(sym)                                                       */
  2258. X/*                                                                           */
  2259. X/*  Switch to the scope of sym (if nil, StartSym); and switch back again.    */
  2260. X/*                                                                           */
  2261. X/*****************************************************************************/
  2262. X
  2263. XSwitchScope(sym)
  2264. XOBJECT sym;
  2265. X{ int i;
  2266. X  OBJECT new_scopes[MAX_STACK];
  2267. X  if( sym == nil )  PushScope(StartSym, FALSE, FALSE);
  2268. X  else
  2269. X  { i = 0;
  2270. X    while( sym != StartSym )
  2271. X    { new_scopes[i++] = enclosing(sym);
  2272. X      sym = enclosing(sym);
  2273. X    }
  2274. X    while( i > 0 )  PushScope(new_scopes[--i], FALSE, FALSE);
  2275. X  }
  2276. X}
  2277. X
  2278. XUnSwitchScope(sym)
  2279. XOBJECT sym;
  2280. X{ if( sym == nil )  PopScope();
  2281. X  else
  2282. X  { while( sym != StartSym )
  2283. X    { PopScope();
  2284. X      sym = enclosing(sym);
  2285. X    }
  2286. X  }
  2287. X}
  2288. X
  2289. X
  2290. X/*****************************************************************************/
  2291. X/*                                                                           */
  2292. X/*  BodyParAllowed()                                                         */
  2293. X/*  BodyParNotAllowed()                                                      */
  2294. X/*                                                                           */
  2295. X/*  Allow or disallow invokations of the body parameter of the current tos.  */
  2296. X/*                                                                           */
  2297. X/*****************************************************************************/
  2298. X
  2299. XBodyParAllowed()
  2300. X{ debug0(DST, DD, "BodyParAllowed()");
  2301. X  body_ok[scope_top-1] = TRUE;
  2302. X} /* end BodyParAllowed */
  2303. X
  2304. XBodyParNotAllowed()
  2305. X{ debug0(DST, DD, "BodyParNotAllowed()");
  2306. X  body_ok[scope_top-1] = FALSE;
  2307. X} /* end BodyParNotAllowed */
  2308. X
  2309. X
  2310. X/*@::InsertSym()@*************************************************************/
  2311. X/*                                                                           */
  2312. X/*  OBJECT InsertSym(str, xtype, xfpos, xprecedence, indefinite, xrecursive, */
  2313. X/*                                         xpredefined, xenclosing, xbody)   */
  2314. X/*                                                                           */
  2315. X/*  Insert a new symbol into the table.  Its string value is str.            */
  2316. X/*  Initialise the symbol as the parameters indicate.                        */
  2317. X/*  Return a pointer to the new symbol.                                      */
  2318. X/*  If str is not a valid symbol name, InsertSym prints an error             */
  2319. X/*  message and does not insert the symbol.                                  */
  2320. X/*                                                                           */
  2321. X/*****************************************************************************/
  2322. X
  2323. XOBJECT InsertSym(str, xtype, xfpos, xprecedence, xindefinite, xrecursive,
  2324. X                         xpredefined, xenclosing, xbody)
  2325. XFULL_CHAR *str;  unsigned char xtype;
  2326. XFILE_POS *xfpos; unsigned char xprecedence;
  2327. XBOOLEAN xindefinite, xrecursive;  unsigned xpredefined;
  2328. XOBJECT xenclosing, xbody;
  2329. X{ register int sum, rlen;
  2330. X  register unsigned char *x;
  2331. X  OBJECT p, q, s, link, entry, plink;  int len;
  2332. X
  2333. X  debug3(DST, DD, "InsertSym( %s, %s, in %s )",
  2334. X    Image(xtype), str, SymName(xenclosing));
  2335. X  if( !LexLegalName(str) ) Error(WARN, xfpos, "invalid symbol name %s", str);
  2336. X
  2337. X  s = New(xtype);
  2338. X  FposCopy(fpos(s), *xfpos);
  2339. X  has_body(s)    = FALSE;
  2340. X  right_assoc(s) = TRUE;
  2341. X  precedence(s)  = xprecedence;
  2342. X  indefinite(s)  = xindefinite;
  2343. X  recursive(s)   = xrecursive;
  2344. X  predefined(s)  = xpredefined;
  2345. X  enclosing(s)   = xenclosing;
  2346. X  sym_body(s)    = xbody;
  2347. X  base_uses(s)   = nil;
  2348. X  uses(s)        = nil;
  2349. X  marker(s)      = nil;
  2350. X  cross_sym(s)   = nil;
  2351. X  is_extern_target(s) = FALSE;
  2352. X  uses_extern_target(s) = FALSE;
  2353. X  visible(s)     = FALSE;
  2354. X  uses_galley(s) = FALSE;
  2355. X
  2356. X  uses_count(s)  = 0;
  2357. X  dirty(s)       = FALSE;
  2358. X  if( enclosing(s) != nil && type(enclosing(s)) == NPAR )
  2359. X    dirty(enclosing(s)) = TRUE;
  2360. X
  2361. X  has_par(s)     = FALSE;
  2362. X  has_lpar(s)    = FALSE;
  2363. X  has_rpar(s)    = FALSE;
  2364. X  if( is_par(type(s)) )  has_par(enclosing(s))  = TRUE;
  2365. X  if( type(s) == LPAR )  has_lpar(enclosing(s)) = TRUE;
  2366. X  if( type(s) == RPAR )  has_rpar(enclosing(s)) = TRUE;
  2367. X
  2368. X  has_target(s)  = FALSE;
  2369. X  force_target(s) = FALSE;
  2370. X  if( !StringEqual(str, KW_TARGET) ) is_target(s) = FALSE;
  2371. X  else
  2372. X  { is_target(s) = has_target(enclosing(s)) = TRUE;
  2373. X    if( has_key(enclosing(s)) && xbody != nil && type(xbody) == CROSS )
  2374. X    { if( LastDown(xbody) != Down(xbody) )
  2375. X      { OBJECT sym;
  2376. X    Child(sym, Down(xbody));
  2377. X    if( type(sym) == CLOSURE )
  2378. X    { is_extern_target(actual(sym)) = TRUE;
  2379. X      uses_extern_target(actual(sym)) = TRUE;
  2380. X    }
  2381. X      }
  2382. X    }
  2383. X  }
  2384. X
  2385. X  has_tag(s)  = FALSE;
  2386. X  if( !StringEqual(str, KW_TAG) ) is_tag(s) = FALSE;
  2387. X  else is_tag(s) = has_tag(enclosing(s)) = dirty(enclosing(s)) = TRUE;
  2388. X
  2389. X  has_key(s)  = FALSE;
  2390. X  if( !StringEqual(str, KW_KEY) ) is_key(s) = FALSE;
  2391. X  else is_key(s) = has_key(enclosing(s)) = TRUE;
  2392. X
  2393. X  if( type(s) == RPAR && has_body(enclosing(s)) && (is_tag(s) || is_key(s)) )
  2394. X    Error(WARN, &fpos(s), "a body parameter may not be named %s", str);
  2395. X
  2396. X  if( type(s) == RPAR && has_target(enclosing(s)) && (is_tag(s) || is_key(s)) )
  2397. X    Error(WARN,&fpos(s), "the right parameter of a galley may not be %s", str);
  2398. X
  2399. X  len = StringLength(str);
  2400. X  hash(str, len, sum);
  2401. X
  2402. X  ifdebug(DST, D, sym_spread[sum]++;  sym_count++);
  2403. X  entry = (OBJECT) &symtab[sum];
  2404. X  for( plink = Down(entry);  plink != entry;  plink = NextDown(plink) )
  2405. X  { Child(p, plink);
  2406. X    if( length(p) == len && StringEqual(str, string(p)) )
  2407. X    { for( link = Down(p);  link != p;  link = NextDown(link) )
  2408. X      {    Child(q, link);
  2409. X    if( enclosing(s) == enclosing(q) )
  2410. X    { Error(WARN, &fpos(s), "symbol %s previously defined at%s",
  2411. X        str, EchoFilePos(&fpos(q)) );
  2412. X      break;
  2413. X    }
  2414. X      }
  2415. X      goto wrapup;
  2416. X    }
  2417. X  }
  2418. X
  2419. X  /* need a new OBJECT as well as s */
  2420. X  p = NewWord(WORD, len, xfpos);
  2421. X  length(p) = len;
  2422. X  StringCopy(string(p), str);
  2423. X  Link(entry, p);
  2424. X
  2425. X wrapup:
  2426. X  Link(p, s);
  2427. X  if( enclosing(s) != nil ) Link(enclosing(s), s);
  2428. X  debug2(DST, DD, "InsertSym Link(%s, %s) and returning.",
  2429. X        SymName(enclosing(s)), SymName(s));
  2430. X  return s;
  2431. X} /* end InsertSym */
  2432. X
  2433. X
  2434. X/*@::SearchSym(), SymName()@**************************************************/
  2435. X/*                                                                           */
  2436. X/*  OBJECT SearchSym(str, len)                                               */
  2437. X/*                                                                           */
  2438. X/*  Search the symbol table for str, with length len, and return an          */
  2439. X/*  OBJECT referencing the entry if found.  Otherwise return nil.            */
  2440. X/*                                                                           */
  2441. X/*****************************************************************************/
  2442. X
  2443. XOBJECT SearchSym(str, len)
  2444. XFULL_CHAR *str;  int len;
  2445. X{ register int rlen, sum;
  2446. X  register FULL_CHAR *x, *y;
  2447. X  OBJECT p, q, link, plink, entry;
  2448. X  int s;
  2449. X
  2450. X  debug2(DST, DDD, "SearchSym( %c..., %d )", str[0], len);
  2451. X
  2452. X  hash(str, len, sum);
  2453. X  rlen = len;
  2454. X  entry = (OBJECT) &symtab[sum];
  2455. X  for( plink = Down(entry);  plink != entry;  plink = NextDown(plink) )
  2456. X  { Child(p, plink);
  2457. X    if( rlen == length(p) )
  2458. X    { x = str;  y = string(p);
  2459. X      do; while( *x++ == *y++ && --rlen );
  2460. X      if( rlen == 0 )
  2461. X      {    s = scope_top;
  2462. X    do
  2463. X    { s--;
  2464. X      for( link = Down(p);  link != p;  link = NextDown(link) )
  2465. X      { Child(q, link);
  2466. X        if( enclosing(q) == scope[s]
  2467. X          && (!npars_only[s] || type(q) == NPAR)
  2468. X          && (!vis_only[s] || visible(q) || suppress_visible )
  2469. X          && (body_ok[s] || type(q)!=RPAR || !has_body(enclosing(q)) )
  2470. X          && !suppress_scope )
  2471. X        {    debug1(DST, DDD, "SearchSym returning %s", Image(type(q)));
  2472. X        return q;
  2473. X        }
  2474. X      }
  2475. X    } while( scope[s] != StartSym );
  2476. X      }
  2477. X    }
  2478. X    rlen = len;
  2479. X  }
  2480. X  debug0(DST, DDD, "SearchSym returning <nil>");
  2481. X  return nil;
  2482. X} /* end SearchSym */
  2483. X
  2484. X
  2485. X/*****************************************************************************/
  2486. X/*                                                                           */
  2487. X/*  FULL_CHAR *SymName(s)                                                    */
  2488. X/*                                                                           */
  2489. X/*  Return the string value of the name of symbol s.                         */
  2490. X/*                                                                           */
  2491. X/*****************************************************************************/
  2492. X
  2493. XFULL_CHAR *SymName(s)
  2494. XOBJECT s;
  2495. X{ OBJECT p;
  2496. X  if( s == nil )  return AsciiToFull("<nil>");
  2497. X  Parent(p, Up(s));
  2498. X  assert( is_word(type(p)), "SymName: !is_word(type(p))!" );
  2499. X  return string(p);
  2500. X} /* end SymName */
  2501. X    
  2502. X
  2503. X/*@::FullSymName(), ChildSym()@***********************************************/
  2504. X/*                                                                           */
  2505. X/*  FULL_CHAR *FullSymName(x, str)                                           */
  2506. X/*                                                                           */
  2507. X/*  Return the path name of symbol x. with str separating each entry.        */
  2508. X/*                                                                           */
  2509. X/*****************************************************************************/
  2510. X
  2511. XFULL_CHAR *FullSymName(x, str)
  2512. XOBJECT x;  FULL_CHAR *str;
  2513. X{ OBJECT stack[20];  int i;
  2514. X  static FULL_CHAR buff[MAX_LINE], *sname;
  2515. X  if( x == nil )  return AsciiToFull("<nil>");
  2516. X  assert( enclosing(x) != nil, "FullSymName: enclosing(x) == nil!" );
  2517. X  for( i = 0;  enclosing(x) != nil && i < 20;  i++ )
  2518. X  { stack[i] = x;
  2519. X    x = enclosing(x);
  2520. X  }
  2521. X  StringCopy(buff, STR_EMPTY);
  2522. X  for( i--;  i > 0;  i-- )
  2523. X  { sname = SymName(stack[i]);
  2524. X    if( StringLength(sname)+StringLength(str)+StringLength(buff) >= MAX_LINE )
  2525. X      Error(FATAL, &fpos(x), "full name of symbol is too long");
  2526. X    StringCat(buff, sname);
  2527. X    StringCat(buff, str);
  2528. X  }
  2529. X  sname = SymName(stack[0]);
  2530. X  if( StringLength(sname) + StringLength(buff) >= MAX_LINE )
  2531. X    Error(FATAL, &fpos(x), "full name of symbol is too long");
  2532. X  StringCat(buff, sname);
  2533. X  return buff;
  2534. X} /* end FullSymName */
  2535. X
  2536. X
  2537. X/*****************************************************************************/
  2538. X/*                                                                           */
  2539. X/*  OBJECT ChildSym(s, typ)                                                  */
  2540. X/*                                                                           */
  2541. X/*  Find the child of symbol s of type typ, either LPAR or RPAR.             */
  2542. X/*                                                                           */
  2543. X/*****************************************************************************/
  2544. X
  2545. XOBJECT ChildSym(s, typ)
  2546. XOBJECT s;  unsigned typ;
  2547. X{ OBJECT link, y;
  2548. X  for( link = Down(s);  link != s;  link = NextDown(link) )
  2549. X  { Child(y, link);
  2550. X    if( type(y) == typ && enclosing(y) == s )  return y;
  2551. X  }
  2552. X  Error(INTERN, &fpos(s), "Symbol %s has missing %s", SymName(s), Image(typ));
  2553. X  return nil;
  2554. X} /* end ChildSym */
  2555. X
  2556. X
  2557. X/*@::CheckSymSpread(), DeleteSymBody()@***************************************/
  2558. X/*                                                                           */
  2559. X/*  CheckSymSpread()                                                         */
  2560. X/*                                                                           */
  2561. X/*  Check the spread of symbols through the hash table.                      */
  2562. X/*                                                                           */
  2563. X/*****************************************************************************/
  2564. X#if DEBUG_ON
  2565. X
  2566. XCheckSymSpread()
  2567. X{ int i, j, sum, usum;  OBJECT entry, plink;
  2568. X  debug2(DST, D, "Symbol table spread (table size = %d, symbols = %d):",
  2569. X    MAX_TAB, sym_count);
  2570. X  usum = sum = 0;
  2571. X  for( i = 0;  i < MAX_TAB;  i++ )
  2572. X  { fprintf(stderr, "%4d: ", i);
  2573. X    for( j = 1;  j <= sym_spread[i];  j++ )
  2574. X    { fprintf(stderr, ".");
  2575. X      sum += j;
  2576. X    }
  2577. X    entry = (OBJECT) &symtab[i];
  2578. X    for( plink=Down(entry), j=1;  plink != entry;  plink=NextDown(plink), j++ )
  2579. X    { fprintf(stderr, "+");
  2580. X      usum += j;
  2581. X    }
  2582. X    fprintf(stderr, "\n");
  2583. X  }
  2584. X  fprintf(stderr, "average length counting duplicate names = %.1f\n",
  2585. X    (float) sum / sym_count);
  2586. X  fprintf(stderr, "average length not counting duplicate names = %.1f\n",
  2587. X    (float) usum / sym_count);
  2588. X} /* end CheckSymSpread */
  2589. X
  2590. X
  2591. X/*****************************************************************************/
  2592. X/*                                                                           */
  2593. X/*  static DeleteSymBody(s)                                                  */
  2594. X/*                                                                           */
  2595. X/*  Delete the body of symbol s.                                             */
  2596. X/*                                                                           */
  2597. X/*****************************************************************************/
  2598. X
  2599. Xstatic DeleteSymBody(s)
  2600. XOBJECT s;
  2601. X{ debug1(DST, DDD, "DeleteSymBody( %s )", SymName(s));
  2602. X  switch( type(s) )
  2603. X  {
  2604. X    case MACRO:    while( sym_body(s) != nil )
  2605. X          sym_body(s) = DeleteAndDispose(sym_body(s), PARENT);
  2606. X        break;
  2607. X    
  2608. X    case LPAR:
  2609. X    case NPAR:
  2610. X    case RPAR:
  2611. X    case LOCAL:    if( sym_body(s) != nil ) DisposeObject(sym_body(s));
  2612. X        break;
  2613. X
  2614. X    default:    Error(INTERN,no_fpos, "unknown symbol type %s",Image(type(s)));
  2615. X        break;
  2616. X  }
  2617. X  debug0(DST, DDD, "DeleteSymBody returning.");
  2618. X} /* end DeleteSymBody */
  2619. X
  2620. X
  2621. X/*@::DeleteEverySym()@********************************************************/
  2622. X/*                                                                           */
  2623. X/*  DeleteEverySym()                                                         */
  2624. X/*                                                                           */
  2625. X/*  Delete every symbol in the symbol table.                                 */
  2626. X/*  Note that we first delete all bodies, then the symbols themselves.       */
  2627. X/*  This is so that the closures within the bodies have well-defined         */
  2628. X/*  actual() pointers, even while the symbol table is being disposed.        */
  2629. X/*  If this is not done, debug output during the disposal gets confused.     */
  2630. X/*                                                                           */
  2631. X/*****************************************************************************/
  2632. X
  2633. XDeleteEverySym()
  2634. X{ int i, j, load, cost;  OBJECT p, plink, link, x, entry;
  2635. X  debug0(DST, D, "DeleteEverySym()");
  2636. X
  2637. X  /* dispose the bodies of all symbols */
  2638. X  for( i = 0;  i < MAX_TAB;  i++ )
  2639. X  { entry = (OBJECT) &symtab[i];
  2640. X    for( plink = Down(entry);  plink != entry;  plink = NextDown(plink) )
  2641. X    { Child(p, plink);
  2642. X      for( link = Down(p);  link != p;  link = NextDown(link) )
  2643. X      {    Child(x, link);  DeleteSymBody(x);
  2644. X    /* *** will not work now
  2645. X    while( base_uses(x) != nil )
  2646. X    { tmp = base_uses(x);  base_uses(x) = next(tmp);
  2647. X      PutMem(tmp, USES_SIZE);
  2648. X    }
  2649. X    while( uses(x) != nil )
  2650. X    { tmp = uses(x);  uses(x) = next(tmp);
  2651. X      PutMem(tmp, USES_SIZE);
  2652. X    }
  2653. X    *** */
  2654. X      }
  2655. X    }
  2656. X  }
  2657. X
  2658. X  /* dispose the symbol name strings, gather statistics, and print them */
  2659. X  load = cost = 0;
  2660. X  for( i = 0;  i < MAX_TAB;  i++ )
  2661. X  { j = 1; entry = (OBJECT) &symtab[i];
  2662. X    while( Down(entry) != entry )
  2663. X    { load += 1;  cost += j;  j += 1;
  2664. X      DisposeChild(Down(entry));
  2665. X    }
  2666. X  }
  2667. X  if( load > 0 ) debug4(DST, D, "size = %d, items = %d (%d%%), probes = %.1f",
  2668. X    MAX_TAB, load, (100*load)/MAX_TAB, (float) cost/load);
  2669. X  else debug1(DST, D, "table size = %d, no entries in table", MAX_TAB);
  2670. X  debug0(DST, D, "DeleteEverySym returning.");
  2671. X} /* end DeleteEverySym */
  2672. X#endif
  2673. END_OF_FILE
  2674.   if test 24370 -ne `wc -c <'z29.c'`; then
  2675.     echo shar: \"'z29.c'\" unpacked with wrong size!
  2676.   fi
  2677.   # end of 'z29.c'
  2678. fi
  2679. echo shar: End of archive 5 \(of 35\).
  2680. cp /dev/null ark5isdone
  2681. MISSING=""
  2682. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 ; do
  2683.     if test ! -f ark${I}isdone ; then
  2684.     MISSING="${MISSING} ${I}"
  2685.     fi
  2686. done
  2687. if test "${MISSING}" = "" ; then
  2688.     echo You have unpacked all 35 archives.
  2689.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  2690. else
  2691.     echo You still must unpack the following archives:
  2692.     echo "        " ${MISSING}
  2693. fi
  2694. exit 0
  2695. exit 0 # Just in case...
  2696.