home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1996 December / PCO1296.ISO / filesbbs / content / comp-faq.txt < prev    next >
Encoding:
Text File  |  1996-10-16  |  29.5 KB  |  624 lines

  1. Article: 79858 in news.answers
  2. Path: Dortmund.Germany.EU.net!main.Germany.EU.net!Frankfurt.Germany.EU.net!howland.erols.net!newsfeed.internetmci.com!in2.uu.net!ivan.iecc.com!ivan.iecc.com!not-for-mail
  3. From: compilers-request@iecc.com (John R. Levine)
  4. Newsgroups: comp.compilers,news.answers,comp.answers
  5. Subject: comp.compilers monthly message and Frequently Asked Questions
  6. Supersedes: <monthly-Aug-96@comp.compilers>
  7. Followup-To: poster
  8. Date: 1 Sep 1996 07:00:01 -0400
  9. Organization: Compilers Central
  10. Lines: 604
  11. Sender: johnl@iecc.com
  12. Approved: compilers@iecc.com
  13. Expires: 1 Oct 96 23:59:00 GMT
  14. Message-ID: <monthly-Sep-96@comp.compilers>
  15. NNTP-Posting-Host: ivan.iecc.com
  16. Keywords: administrivia
  17. Xref: Dortmund.Germany.EU.net comp.compilers:8593 news.answers:79858 comp.answers:20795
  18.  
  19. Archive-name: compilers/faq
  20. Last-modified: 8 Jun 96
  21.  
  22. This is the comp.compilers monthly message.
  23.  
  24. Contents:
  25.  
  26. -- What is comp.compilers?
  27. -- How do I receive it?
  28. -- How do I submit a message?
  29. -- What happens to submitted messages?
  30. -- What topics are and aren't appropriate?
  31. -- How do I respond to the author of a message?
  32. -- How do I contact the moderator?
  33. -- Are back issues available?
  34.  
  35. -- Some Frequently Asked Questions:
  36.  
  37. * Where can I get a C or C++ grammar in yacc?
  38. * Where can I get the Gnu C compiler?
  39. * Are there other free C compilers?
  40. * Where can I get a Fortran grammar in yacc or a Fortran compiler?
  41. * Where can I get Modula-2, Pascal, Ada, or SQL grammars in yacc?
  42. * Where can I get a Cobol grammar in yacc?
  43. * Where can I get a Basic grammar in yacc?
  44. * Where can I get a QBasic compiler?
  45. * Where can I get a PL/M grammar?
  46. * Are there free versions of yacc and lex ?
  47. * Are there versions of yacc and lex for MS-DOS?
  48. * Are there C++ versions of yacc and lex?
  49. * What other compilers and tools are freely available?
  50. * How can I get started with yacc and lex and compiler writing in general?
  51. * Where can I FTP the sources to the programs in Holub's "Compiler
  52.   Design in C" or Mak's "Writing Compilers and Interpreters" ?
  53. * Where can I learn about garbage collection ?
  54.  
  55. -- What is comp.compilers?
  56.  
  57. It is a moderated usenet news group addressing the topics of compilers in
  58. particular and programming language design and implementation in general.
  59. It started in 1986 as a moderated mailing list, but interest quickly grew to
  60. the point where it was promoted to a news group.  Recent topics have
  61. included optimization techniques, language design issues, announcements of
  62. new compiler tools, and book reviews.
  63.  
  64. Messages come from a wide variety of people ranging from undergraduate
  65. students to well-known experts in industry and academia.  Authors live all
  66. over the world -- there are regular messages from the U.S, Canada, Europe,
  67. Australia, and Japan, with occasional ones from as far away as Malaysia.
  68. I cannot tell how large the readership is, since the anarchic nature of
  69. usenet makes it impossible to tell who reads it, but a reasonable guess is
  70. that the total is over 100,000, which would make it by far the most widely
  71. read medium on the topic in the world.
  72.  
  73. Unless there is specific language to the contrary, each message represents
  74. only the personal opinion of its author.  I claim no compilation copyright on
  75. comp.compilers.  As far as I am concerned, anyone can reproduce any message
  76. for any purpose.  Individual authors may retain rights to their messages,
  77. although I will not knowingly post anything that does not permit unlimited
  78. distribution in any form.  If you find comp.compilers useful in writing a
  79. book, producing a product, etc., I would appreciate an acknowledgement of
  80. usenet and comp.compilers.
  81.  
  82. -- How do I receive it?
  83.  
  84. The easiest way is to read comp.compilers on a system that gets usenet news.
  85.  
  86. If you don't have access to usenet news, it's also available via E-mail via
  87. a LISTSERV forwarder at the American University.  To subscribe a person
  88. should send e-mail to listserv@american.edu with one line in the mail
  89. message (not in the subject!)  That line should read:
  90.  
  91.                         SUBSCRIBE COMPIL-L full_name
  92. for example:
  93.                         SUBSCRIBE COMPIL-L Ima Hacker
  94.  
  95. To get off the list the subscriber should send e-mail to the same address
  96. with the message:       SIGNOFF COMPIL-L
  97.  
  98. If you have problems getting on or off the list, please contact me.  In
  99. particular, if you want to use an address other than your own personal mail
  100. address, you have to ask me to set it up.  If I receive bounce messages for
  101. an address on the mailing list for two days in a row, I delete it.  If this
  102. happens to you and your address subsequently becomes reachable again, you
  103. can resubscribe.
  104.  
  105. -- How do I submit a message?
  106.  
  107. Mail it to compilers@iecc.com.  I review messages nearly every day,
  108. usually including weekends, and most messages are posted to the net within
  109. a day after I receive them.  Occasionally when I go on vacation there may
  110. be up to a week's delay, though I try to send out a message when that will
  111. happen.
  112.  
  113. Most net news systems will automatically turn posted messages into mail to
  114. compilers, but some, particularly systems running notes, don't do that
  115. correctly.  As a result, I sometimes receive hundreds of copies of a
  116. message, all mangled slightly differently.  Please mail your contributions
  117. unless you're sure your posting software works correctly.
  118.  
  119. When you send a message to compilers, I understand that to mean that you
  120. want me to post it to usenet, which means it will be sent to tens of
  121. thousands of potential readers at thousands of computers all around the
  122. world.  It may also appear in a printed comp.compilers annual and other
  123. books, in printed journals, in on-line and off-line archives, CD-ROMs, and
  124. anywhere else that some reader decides to use it.
  125.  
  126. If you don't want me to post something, send it instead to
  127. compilers-request.  (See below.)
  128.  
  129. PLEASE: Format messages with lines of less than 70 characters, since many
  130. news readers (including mine) don't auto-wrap very well.  Also remove quoted
  131. material not immediately germane to your response.  Messages must be in plain
  132. ASCII, not TeX input, troff, SGML, RTF or any other markup language.
  133.  
  134. -- What happens to submitted messages?
  135.  
  136. Barring mail problems, they arrive in a special mailbox here at iecc.  I then
  137. edit the headers, trim down quoted text, fix typos and grammatical errors,
  138. remove cute signatures, and then post them to usenet.  If I think a message
  139. needs more editing than that, I return it to the author for rewriting.  The
  140. main reasons I return a message are that it appears more appropriate for
  141. another group, the message is too garbled to fix, it contains too much quoted
  142. material relative to the amount of new material, or I don't understand it.
  143. Another possibility is that a message doesn't have a valid return e-mail
  144. address.  See the next question for more about what's on and off topic.
  145.  
  146. I discard messages that say "reply to me because I don't read this group",
  147. and forward spams back to the appropriate postmaster.  Messages from
  148. anonymous or anonymized addresses are not acceptable, although I suppose I
  149. could be persuaded to post a message with the sender's identity removed
  150. given a persuasive enough reason.
  151.  
  152. If a message asks a simple question I sometimes answer it myself rather than
  153. posting it.  When two or three messages arrive with the same answer to a
  154. question, I usually post only one of them, with a comment crediting the
  155. others.
  156.  
  157. If you send in a message and don't either see it posted or receive
  158. something back in a few days, it probably got lost in the mail and you
  159. should contact me, preferably via a different mail route.  I post or
  160. respond to all messages except for ones that appear to have been sent by
  161. mistake, e.g. no contents, contents consisting only of another quoted
  162. message, or a personal message for the author of a previous message.
  163. Sometimes when I'm feeling exasperated I disregard messages that re-ask
  164. one of the frequently asked questions that are answered below.
  165.  
  166. One of the most time-consuming jobs in moderating the group is trimming down
  167. the quotes in followup articles.  In most cases, you can expect readers to
  168. have seen the previous article, so only a few lines of quoted text should be
  169. needed to remind the reader of the context.
  170.  
  171. I have installed a simple-minded quote filter that mechanically returns to
  172. the sender any message that contains more quoted than unquoted lines.  Please
  173. edit your quotes before you send in a response, to avoid having the filter
  174. bounce your message.  Since the quote filter is pretty dumb, I do look at
  175. bounced messages myself.  If the filter bounces a message of yours by mistake,
  176. don't panic -- it'll get posted anyway.  If you write to me and complain
  177. about the quote filter, I'll discard both your complaint and your original
  178. message.
  179.  
  180. -- What topics are and aren't appropriate?
  181.  
  182. Any message discussing aspects of compiler design and implementation is
  183. appropriate.  Language design is usually OK as well insofar as it affects
  184. compiler design, until it drifts off into theological issues like where the
  185. semicolon goes.
  186.  
  187. Questions about particular compilers, programming languages, and systems
  188. should go to newsgroups about the language or system.
  189.  
  190. "For sale" messages should go to one of the misc.forsale or regional
  191. forsale groups.
  192.  
  193. I post one announcement per conference, for any conference with a topic
  194. relevant to compilers.  I usually post student offers to share a room at a
  195. conference, should probably digest them as well.
  196.  
  197. Postings announcing commercial products are welcome so long as there
  198. is substantially more technical content than hype.
  199.  
  200. ``Help wanted'' and ``Position Available'' messages are collected each week
  201. and posted in a digest every Sunday.  Resumes are discarded, since most of
  202. them come from robots mechanically sending them out in response to every
  203. message in misc.jobs.offered.
  204.  
  205. For technical reasons, I can't cross-post messages to other moderated groups,
  206. except one or two like comp.parallel with whom I have an informal agreement
  207. to allow cross-posts.
  208.  
  209. I usually return messages that directly attack individuals, since the net has
  210. plenty of other places for ad-hominem battles.
  211.  
  212. -- How do I respond to the author of a message?
  213.  
  214. I try to be sure that every message contains valid From: and Reply-To:
  215. headers.  The automatic "reply" commands in most news readers let you send
  216. mail to the author.  If you're replying to a message in a digest, be sure
  217. to respond to the author of the particular message, not to the pseudo-author
  218. of the digest.
  219.  
  220. Some obsolete news readers attempt to reply using the Path: header, but for
  221. technical reasons the Path: header in a moderated message cannot point to the
  222. actual author.  In fact, the Path: header in a compilers message is
  223. deliberately a bad mail address, so if you have such a news reader you'll
  224. have to edit the addresses in responses yourself and, I hope, encourage your
  225. system manager to update your news and mail software.
  226.  
  227. Sometimes mail to an author bounces, either because a gateway isn't working
  228. or because the return address is unregistered or otherwise bad.  Please don't
  229. ask me to forward it, since my machine is no better connected than anyone
  230. else's.  (It's just another node on the Internet.)  If you send me a message
  231. obviously intended for the author of an item, I will discard it on the theory
  232. that if it wasn't important enough for you to send it to the right place, it
  233. isn't important enough for me, either.
  234.  
  235. -- How do I contact the moderator?
  236.  
  237. Send me mail at compilers-request@iecc.com.  I treat messages to
  238. compilers-request as private messages to me unless they state that they are
  239. for publication.
  240.  
  241. -- Are back issues available?
  242.  
  243. I have complete archives going back to the original mailing list in 1986.
  244. The archives now fill over 36 megabytes, and are growing at over 700K per
  245. month.  People with ftp access can get them from iecc.com in directory
  246. pub/articles.  The archives contain a gzipped Unix mailbox format file for
  247. each month, with names like 91-08.gz.  Directory pub/index contains index
  248. files, one for each year.  You can retrieve messages by full text search or
  249. by message number at the compilers web site at
  250. http://www.iecc.com/compilers/.
  251.  
  252. There is now a mail server at compilers-server@iecc.com that can mail you
  253. indexes, messages, and the files mentioned below.  Send it a message
  254. containing "help" to get started.
  255.  
  256. I have also published a printed edition of the 1990 messages grouped by
  257. thread and topic, and with some indexes, and may publish subsequent
  258. editions.  (If you'd be intereted in editing books for later years, let me
  259. know.)  See the message which should immediately follow this one for
  260. further details on the 1990 book. 
  261.  
  262. -- Some Frequently Asked Questions:
  263.  
  264. NOTE: Many issues are discussed occasionally on comp.compilers, but not
  265. frequently enought to make the FAQ sheet.  If you have a question but the
  266. answer isn't in the FAQ, you may well be able to get good background by
  267. reading the appropriate articles in the archive.  If you can FTP, please
  268. at least get the index and look through it.
  269.  
  270. The various files that I mention below that I have are in the compilers
  271. FTP archive at iecc.com, and are also available from the mail server mentioned
  272. above.  If you can FTP them, please do so rather than using the mail
  273. server, since the mail bandwith is quite small.
  274.  
  275. * Where can I get a C or C++ grammar in yacc?
  276.  
  277. Jim Roskind's well-known C and C++ grammars are in the FTP archive, as is
  278. a C grammar written by Jeff Lee.  Dave Jones posted a parser as message
  279. 91-09-030.  Another C grammar was posted to comp.sources.misc in June
  280. 1990, v13 i52, archive name ansi-c_su.  GCC and G++ are based on yacc
  281. grammars, see below.
  282.  
  283. Also see ctree, which parses C code into parse trees and makes symbol
  284. tables, available from ftp.cs.wisc.edu:/coral/tmp/spf/ctree.0.0.tar.gz.
  285. It's described in message 95-07-114.
  286.  
  287. * Where can I get the Gnu C compiler?
  288.  
  289. GCC is a high-quality free C and C++ compiler.  (Free is not the same as
  290. public domain, see the GCC distribution for details.)  It is available in
  291. source from prep.ai.mit.edu.  You need an existing C compiler and
  292. libraries to bootstrap it.
  293.  
  294. A development system called "djgpp" by DJ Delorie <dj@ctron.com> is based
  295. on gcc and other GNU programs, and runs on 386 or higher PCs running
  296. MS-DOS.  This is available by FTP from the SimTel archives (primary mirror
  297. is oak.oakland.edu) in the directory pub/vendors/djgpp.  Another DOS version
  298. of GCC called EMX is at ftp.informatik.tu-muenchen.de [131.159.0.198] in
  299. /pub/comp/os/os2/devtools/emx+gcc.
  300.  
  301. * Are there other free C compilers?
  302.  
  303. lcc is the retargetable compiler for ANSI C described in `A Retargetable C
  304. Compiler: Design and Implementation' (Benjamin/Cummings, 1995, ISBN
  305. 0-8053-1670-1), which will be available in December 1994. lcc is in
  306. production use at Princeton University and AT&T Bell Laboratories.  The
  307. current version of lcc generates code for the SPARC, MIPS R3000 and 386
  308. under DOS (no libraries for DOS are available yet).  The code generator
  309. generator is available too as a icon program, a C version has been
  310. promised.  There are mailing lists lcc{,-bugs}@cs.princeton.edu, managed
  311. by majordomo@cs.princeton.edu.  The object code is not great, but the
  312. compiler is ANSI compatible and is small and fast.  You need a
  313. preprocessor such as the one in gcc to get lcc to run.  Lcc uses a
  314. hard-coded C parser because it's faster than yacc.
  315.  
  316. Thanks to Horst von Brand <vonbrand@inf.utfsm.cl> for this info.
  317.  
  318. * Where can I get a Fortran grammar in yacc or a Fortran compiler?
  319.  
  320. I have a small subset parser in the archive at iecc.com.  The F2C
  321. Fortran to C translator is a respectable Fortran system (so long as
  322. you have a C compiler to compile its output and its libraries) and
  323. contains a full F77 parser and is available in source form via FTP
  324. from netlib.att.com and by mail from netlib@research.att.com.
  325.  
  326. * Where can I get Modula-2, Pascal, Ada, or SQL grammars in yacc?
  327.  
  328. I have one each of those, too, in the archive at iecc.com, though I
  329. haven't tried to use any of them.
  330.  
  331. An Ada95 grammar for yacc is available at ajpo.sei.cmu.edu in the same
  332. directory as the final draft for the Ada95 reference manual.  
  333.  
  334. * Where can I get a Cobol grammar in yacc?
  335.  
  336. Nowhere for free, as far as I can tell.  This question is asked every few
  337. months and there has never, ever, been any positive response. Perhaps some
  338. of the interested people could get together and write one.  The commercial
  339. PCYACC from Abraxas (see below) comes with a bunch of sample grammars
  340. including one for Cobol-85.
  341.  
  342. Also see the Cobol FAQ posted monthly to comp.lang.misc and comp.lang.cobol.
  343.  
  344. * Where can I get a Basic grammar in yacc?
  345.  
  346. Take a look at ftp.uu.net:usenet/comp.sources.unix/volume2/basic which
  347. contains a Basic interpreter with yacc parser.
  348.  
  349. * Where can I get a QBasic compiler?
  350.  
  351. You buy it from Microsoft.  A shareware compiler ASIC is available
  352. from simtel mirrors in /msdos/basic/asic???.zip, such as ftp.coast.net
  353. in /SimTel/msdos/basic/asic???.zip.  It handles a large subset of Qbasic.
  354.  
  355. * Where can I get a PL/M grammar?
  356.  
  357. There's one in the archives at iecc.com, called plm.shar.  Also see message
  358. 94-03-062 for a report on a PL/M to C translator.
  359.  
  360. * Are there free versions of yacc and lex ?
  361.  
  362. Vern Paxton's flex is a superior reimplementation of lex.  It is available
  363. from the same places as Gnu sources, but is not subject to the Gnu
  364. copyleft.  Berkeley Yacc is a quite compatible PD version of yacc by Bob
  365. Corbett, available on ftp.cs.berkeley.edu, in ~ftp/ucb/4bsd/byacc.tar.Z. Gnu
  366. Bison is derived from an earlier version of Corbett's work and is also
  367. fairly compatible with yacc.  A byacc extension that displays graphically
  368. the progress of a parse can be found in Jim Roskind's C++ grammar in the
  369. FTP compilers archive.  (The files are too big for the mail archive,
  370. sorry.)
  371.  
  372. * Are there versions of yacc and lex for MS-DOS?
  373.  
  374. There are several of them.  Commercial versions are MKS lex&yacc from MKS
  375. in Waterloo Ont., +1 519 884 2251, http://www.mks.com or inquiry@mks.com,
  376. and PCYACC from Abraxas Software in Portland OR, +1 503 244 5253.  Both
  377. include both yacc and lex along with a lot of sample code.
  378.  
  379. The standard flex source compiles under the usual DOS compilers, although
  380. you may want to make some of the buffers smaller.  A DOS version of Bison
  381. is on wuarchive.wustl.edu [128.252.135.4] and other servers under
  382. SimTel/msdos/pgmutil/bison111.zip. See message 92-07-012 for more info.
  383.  
  384. * Are there C++ versions of yacc and lex?
  385.  
  386. flexx++ and bison++ can be found at:
  387.  
  388. ftp://ftp.th-darmstadt.de/pub/programming/languages/C++/tools/flex++bison++/
  389.  
  390. * What other compilers and tools are freely available?
  391.  
  392. There is a five-part FAQ posting in comp.compilers and other groups listing
  393. compiler tools freely available in source form, maintained by Steve
  394. Robenalt <free-compilers@idiom.berkeley.ca.us>.  It is posted monthly,
  395. usually right after this message.  If it's not on your system, you can FTP
  396. it from rtfm.mit.edu in the directory
  397. /pub/usenet/news.answers/free-compilers, or via mail by sending a message
  398. to to mail-server@rtfm.mit.edu with the command "send
  399. usenet/news.answers/free-compilers/*" in the text.
  400.  
  401. Also visit the web page http://www.first.gmd.de/cogent/catalog/ which includes
  402. pointers to a variety of compiler tools and resources.
  403.  
  404. * How can I get started with yacc and lex and compiler writing in general?
  405.  
  406. By reading any of the many books on the topic.  Here are a few of them.
  407. Also see message 93-01-155 which reviews many compiler textbooks.
  408.  
  409. Aho, Sethi, and Ullman, "Compilers: Principles, Techniques, and Tools,"
  410. Addison Wesley, 1986, ISBN 0-201-10088-6, the "dragon book".
  411.  
  412. Describes clearly and completely lexing and parsing techniques including
  413. the ones in yacc and lex.  The authors work or have worked at Bell Labs
  414. with Steve Johnson and Mike Lesk, the authors of Yacc and Lex.
  415.  
  416. Alan Holub, "Compiler Design in C," Prentice-Hall, 1990, ISBN
  417. 0-13-155045-4.
  418.  
  419. A large book containing the complete source code to a reimplementation of
  420. yacc and lex and a C compiler.  Quite well written, too, though it has a
  421. lot of errors.  The fourth printing is supposed to correct most of them.
  422. An errata list is in message 90-06-081.
  423.  
  424. John R. Levine (that's me), Tony Mason, and Doug Brown, ``Lex & Yacc,''
  425. 2nd Edition, O'Reilly and Associates, 1992, ISBN 1-56592-000-7, $29.95.
  426.  
  427. A concise introduction with completely worked out examples and an
  428. extensive reference section.  The new edition is completely revised from
  429. the earlier 1990 edition.  Source code can be FTP'ed from ftp.ora.com.
  430.  
  431. Donnely and Stallman, "The Bison Manual," part of the on-line distrubution
  432. of the FSF's Bison, a reimplementation of yacc.  As with everything else from
  433. the FSF, full source code is included.
  434.  
  435. Axel T. Schreiner and H. George Friedman, Jr., "Introduction to Compiler
  436. Construction with UNIX," Prentice-Hall, 1985.
  437.  
  438. Oriented to tutorial work.  Good for beginners.  Develops a small
  439. subset-of-C compiler through the book.  (Recommended by Eric Hughes
  440. <hughes@ocf.Berkeley.EDU>.)  Richard Hash <rgh@shell.com> comments that
  441. the book has many typographical errors, and readers should be suspicious
  442. of the examples until they actually try them.  Richard Y. Kim
  443. <richard@ear.mit.edu> reports that sources are available for FTP as
  444. a.cs.uiuc.edu:pub/friedman/tar.
  445.  
  446. Bennett, J.P. "Introduction to Compiling Techniques - A First Course Using
  447. Ansi C, Lex and Yacc," McGraw Hill Book Co, 1990, ISBN 0-07-707215-4.
  448.  
  449. It's intended for a first course in modern compiler techniques, is very
  450. clearly written, and has a full chapter on YACC.  I found it to be a good
  451. introductory text before getting into the 'Dragon book'.  (Recommended by
  452. John Merlin <J.H.Merlin@ecs.southampton.ac.uk>.)  Source code is available
  453. at ftp.bath.ac.uk.
  454.  
  455. Charles N. Fischer & Richard J. LeBlanc, "Crafting A Compiler", Benjamin
  456. Cummings Publishing, Menlo Park, CA, 1988, ISBN 0-8053-3201-4.  There's
  457. also a revised version as of 1990 or 1991 titled "Crafting A Compiler in
  458. C", with all examples in C (the original used ADA/CS).  The C tools are at
  459. ftp://ftp.csc.ncsu.edu/pub/compilers/crafting_compiler/tools
  460.  
  461. Erich Nahum <nahum@cs.umass.edu> writes: A key compiler reference.  We
  462. used the original to great effect in Eliot Moss' graduate compiler
  463. construction class here at UMass.  My feeling is that Fischer & LeBlanc is
  464. a good tutorial, and one should use Aho, Sethi, & Ullman as a reference.
  465.  
  466. Des Watson, "High-Level Languages and Their Compilers," International
  467. Computer Science Series, Addison-Wesley Publishing Company, Wokingham
  468. England, 1989.
  469.  
  470. Adrian Howard <adrianh@cogs.sussex.ac.uk> writes: This is the kindest,
  471. most readable introduction to compilers at the graduate level I have ever
  472. read - an excellent example of what textbooks should all be like.
  473.  
  474. W.M. Waite and G. Goos, "Compiler Construction," Springer-Verlag, New
  475. York, 1984.
  476.  
  477. Dick Grune <dick@cs.vu.nl> writes: A theoretical approach to compiler
  478. construction. Refreshing in that it gives a completely new view of many
  479. subjects. Heavy reading, high information density.
  480.  
  481. J.P. Tremblay and P.G. Sorenson, "The Theory and Practice of Compiler
  482. Writing," McGraw-Hill, 1985.
  483.  
  484. Dick Grune <dick@cs.vu.nl> writes: Extensive and detailed. Heavy reading.
  485. To be consulted when other sources fail.
  486.  
  487. James E. Hendrix, "The Small-C Compiler", 2nd ed., M&T Books, ISBN
  488. 0-934375-88-7 <Book Alone>, 1-55851-007-9 <MS-DOS Disk>, 0-934375-97-6
  489. <Book and Disk>.
  490.  
  491. William Jhun <ec_ind03@oswego.edu> writes: It explaines the C-language is
  492. thorough....and explains every single aspect of the compiler. The book
  493. compares source code to p-code to assembly. It goes over a nice set of
  494. optimization routines, explains the parser, the back end, and even
  495. includes source code, which the compiler on the disk can actually compile
  496. itself. It's an extremely interesting book, check it out. (Out of print.)
  497.  
  498. Ronald Mak, "Writing Compilers and Interpreters: An Applied Approach",
  499. 1991, John Wiley and Sons, Inc. ISBN 0-471-50968-X.
  500.  
  501. Andrew Tucker <a_tucker@paul.spu.edu> writes: This 512-page book presents
  502. a strictly hands on approach, developing a Pascal interpreter and
  503. interactive debugger, then completing with a compiler which emits 8086
  504. assembly.  All source code is provided in print and on disk.  This book is
  505. very low to non-existent in theoretical content, but is very practical and
  506. readable for an introduction.  Taylor Hutt <thutt@access.digex.net>
  507. comments that the book is a piece of junk.  The code that is contained in
  508. the book is full of bugs, and the code that it generates will not work.
  509.  
  510. "The Art of Compiler Design", Thomas Pittman & James Peters, Prentice-Hall
  511. International, 1992, Englewood Cliffs, NJ 07632, 0-13-046160-1
  512.  
  513. Franklin L. Vermeulen <vfrank@vnet3.vub.ac.be> writes: This is a very
  514. nicely written and straightforward text on compiler construction.  There
  515. is a certain (unavoidable?) amount of overlap with a course on automata
  516. (as in Aho, Sethi and Ullman).  It is based on Modula-2 and on an
  517. experimental tool, the TAG compiler-compiler (Transformational Attribute
  518. Grammar) which seems to be a C-independent superset of lex/yacc, because
  519. its syntax allows you to specify all semantic actions without a single
  520. line of C-code (or any other implementation language, for that matter).
  521.  
  522. A. Pyster, "Compiler Design and Constuction (Tools and Techniques)",
  523. Second Ed., Van Nostrand Reinhold, ISBN: 0-442-27536-6.
  524.  
  525. Gabriela O. de Vivo <gdevivo@dino.conicit.ve> writes: The book covers the
  526. general principles of compiler design and presents a good number of
  527. examples focusing on the building of pieceparts of compilers for C and
  528. Pascal.  The implementation (construction) language is C.  Note that this
  529. edition (in contrast with the previous one) is very related to the Unix
  530. world, including the use of tools like Lex, Yacc, and standard utilities.
  531. (Out of print.)
  532.  
  533. Thomas W. Parsons, "Introduction to compiler construction",
  534. Computer Science Press, c1992, ISBN: 0-716782618.
  535.  
  536. Quinn Tyler Jackson <qjackson@direct.ca> writes: Provides a broad overview
  537. of the topics of finite state automaton theory (deterministic and
  538. non-deterministic), lexical analysis, parsing models, and target generation
  539. and optimization strategies.  Includes appendices on lex and yacc.  Most
  540. examples in Pascal.  (Recommended reading for the faint at heart.)
  541.  
  542. "Programming a Personal Computer" by Per Brinch Hansen
  543. Prentice-Hall 1982 ISBN 0-13-730283-5
  544.  
  545. Joe Snyder <joe@semaphorecorp.com> writes:  This unfortunately-titled book
  546. explains the design and creation of a single-user programming environment
  547. for micros, using a Pascal-like language called Edison.  The author presents
  548. all source code and explanations for the step-by-step implementation of an
  549. Edison compiler and simple supporting operating system, all written in
  550. Edison itself (except for a small supporting kernel written in a symbolic
  551. assembler for PDP 11/23; the complete source can also be ordered for the IBM
  552. PC).
  553.  
  554. The most interesting things about this book are:  1) its ability to
  555. demonstrate how to create a complete, self-contained, self-maintaining,
  556. useful compiler and operating system, and 2) the interesting discussion of
  557. language design and specification problems and trade-offs in Chapter 2.
  558.  
  559.  
  560. "Brinch Hansen on Pascal Compilers" by Per Brinch Hansen
  561. Prentice-Hall 1985 ISBN 0-13-083098-4
  562.  
  563. Joe Snyder <joe@semaphorecorp.com> writes:  Another light-on-theory
  564. heavy-on-pragmatics here's-how-to-code-it book.  The author presents the
  565. design, implementation, and complete source code for a compiler and p-code
  566. interpreter for Pascal- (Pascal "minus"), a Pascal subset with boolean and
  567. integer types (but no characters, reals, subranged or enumerated types),
  568. constant and variable definitions and array and record types (but no packed,
  569. variant, set, pointer, nameless, renamed, or file types), expressions,
  570. assignment statements, nested procedure definitions with value and variable
  571. parameters, if statements, while statements, and begin-end blocks (but no
  572. function definitions, procedural parameters, goto statements and labels,
  573. case statements, repeat statements, for statements, and with statements).
  574.  
  575. The compiler and interpreter are written in Pascal* (Pascal "star"), a
  576. Pascal subset extended with some Edison-style features for creating
  577. software development systems.  A Pascal* compiler for the IBM PC is sold by
  578. the author, but it's easy to port the book's Pascal- compiler to any
  579. convenient Pascal platform.
  580.  
  581. This book makes the design and implementation of a compiler look easy.  I
  582. particularly like the way the author is concerned with quality,
  583. reliability, and testing.  The compiler and interpreter can easily be used
  584. as the basis for a more involved language or compiler project, especially
  585. if you're pressed to quickly get something up and running.
  586.  
  587.  
  588. "A Model Implementation of Standard Pascal" by Jim Welsh & Atholl Hay
  589. Prentice-Hall 1986 ISBN 0-13-586454-2
  590.  
  591. Joe Snyder <joe@semaphorecorp.com> writes:  This book is only really useful
  592. if you need to implement a COMPLETE version of a platform-independent
  593. Pascal, but I find it interesting because the 483 pages consist entirely of
  594. the source code listing for the compiler and p-code interpreter, including
  595. copious {comments} to explain the code.  The code eagerly delves into the
  596. horrible minutiae necessary when implementing a complete language, and proves
  597. that no language designer should be allowed to present his design until
  598. AFTER being forced to write a complete compiler for the language.
  599.  
  600. If anyone sends in others, I'll be happy to add them to the list.
  601.  
  602. * Where can I FTP the sources to the programs in Holub's "Compiler
  603. Design in C" or Mak's "Writing Compilers and Interpreters" ?
  604.  
  605. You can't.  In Mak's book there's ordering information for diskettes with
  606. the code.  Holub sells disks direct, finger holub@violet.berkeley.edu for
  607. contact info.
  608.  
  609. * Where can I learn about garbage collection ?
  610.  
  611. Garbage collection (more properly, automatic storage management) has its own
  612. mailing list and FAQ.  The FAQ is:
  613.  
  614. http://www.centerline.com/people/chase/GC/GC-faq.html
  615.  
  616. To join the list, send "subscribe gclist" to majordomo@iecc.com.
  617.  
  618. Regards,
  619. John Levine, comp.compilers moderator
  620. --
  621. Send compilers articles to compilers@iecc.com,
  622. meta-mail to compilers-request@iecc.com.
  623.  
  624.