Archive-Date: Thu, 18 Nov 1993 01:03:01 CST Sender: LP-Mgr@SHSU.edu From: preston@dawn.cs.rice.edu (Preston Briggs) Reply-To: LitProg@SHSU.edu, preston@DAWN.CS.RICE.EDU Subject: Re: installing nuweb on a pc Message-ID: Date: Thu, 18 Nov 1993 00:10:51 GMT To: LitProg@SHSU.EDU >On Tue, 16 Nov 1993, Dave Thompson wrote: >I want to program on my pc. >Nuweb on my pc requires go32.exe, which won't run under winders. I >know I can close winders, but shouldn't be required to dump my >principal operating evnironment I agree that you ought not have to dump Windows or your PC to enjoy literate programming. I disagree that nuweb requires go32.exe (whatever that is) to run on a PC. The whole question comes up, I believe, because an early version was compiled for the PC using gcc (which somehow made code relying on go32.exe to work). This version was put out somewhere for ftp and a lot of people grabbed it and have been hacking happily away. As an alternative, I recommend that new users (and old ones, too) get the latest version and start fresh with your favorite C compiler. The latest version, along with several large examples, are always available for anonymous ftp from cs.rice.edu, in the directory public/preston. Alternatively, you can send me a note and I'll e-mail the latest version to you. The lastest version is 0.87 I can't promise everyone it'll compile with their compiler since there are so many compilers out there (especially on PCs). However, it's getting closer all the time, primarily due to the efforts of all the users who beat on it 'til it works and then tell me what they did. In the meantime, I'm working on a new version which will correct all the known portability problems, along with a few other complaints at the same time. Known portability problems are: thinks / is used to separate directory names inside a path name Should make it an easily customized definition. thinks a tab should be 8 spaces A toughie, but I can expose it for easy customization. Fortunately, it's also relatively unimportant. uses long names that aren't unique in the first 6 characters Some linkers still rely on this. uses tempnam() The ANSI alternatives don't work so well on my systems (though they seem to on PCs). I need to write my own that'll work anywhere. assumes alignment to 8 bytes will be adequate when allocating memory Probably will be for years, but 4 was fine for years too! Need to throw out the special memory allocator. the conventions for command-line arguments and error reporting differ widely on different operating systems. No clue what to do about this. Probably ignore. If you've got more (that haven't already been fixed in 0.87), let me know soon. Preston Briggs ================================================================================ Archive-Date: Thu, 18 Nov 1993 03:38:47 CST Sender: LP-Mgr@SHSU.edu Date: Thu, 18 Nov 93 10:03:44 MET From: Zdenek Wagner Reply-To: LitProg@SHSU.edu, WAGNER%CSEARN.BITNET@SHSU.EDU Subject: Re: WEB-Wars (Was: Which one [F|C|NO|NU|Funnel|Scheme]WEB? Flame war) To: Literate Progaramming list , R.Kooijman@ET.TUDELFT.NL On Tue, 16 Nov 1993 23:32:56 +0100 (MET) Richard Kooijman said: >On Tue, 16 Nov 1993, Dave Thompson wrote: > >> I want to program on my pc. [No guffaws out there!] Therefore, the >> tool of choice must run on my hardware platform. If you tool writers >> out there want me to program literately, then provide me with the tools. > >I didn't see offers in hard cash here. > >> Furthermore, it its too difficult to install, I won't do it. I don't >> have the time. > I work only on a PC. I took CWEB ported to MS-DOS by Hans Hermann Bode. I just unzipped it, placed to directory which is scanned automatically and everything worked. I downloaded the LaTeX support made by Joachim Schrod, put the cweb.sty file into the directory where TeX wants the style files and everything worked. I use TeX and LaTeX which I received from the Czechoslovak TeX Users Group (it is good to ask your nearest TeX Users Group fro help). I suppose that you managed to install e.g. Windows and some compilers but according to my own experience installing MS Windows is much more difficult than installing CWEB. ,~~~/ /` / /| /~~~ / / |_/ /__/ ' | / / /~~/ /~~/ /~~/ /~~/ /\ | /| / /~~/ /~~/ /~~/ /~~/ /~~~ / , / / /~~~ / / /~~~ / \ |/ |/ / /_/ / / / /~~~ / ~~~~ ~~~ ~~~ ' ' ~~~ ' ` ' ' ~~~ ~~/ ' ' ~~~ ' Zdenek Wagner______/ Some gateway between me and you may garble backslash. It will appear on your screen as ã due to problems with EBCDIC <--> ASCII conversion. It has already been corrected on SOME gateways. The address is obsolete. Valid addresses are: ^^ ================================================================================ Archive-Date: Thu, 18 Nov 1993 03:38:55 CST Sender: LP-Mgr@SHSU.edu Date: Thu, 18 Nov 93 10:25:27 MET From: Zdenek Wagner Reply-To: LitProg@SHSU.edu, WAGNER%CSEARN.BITNET@SHSU.EDU Subject: Re: LP Failure Story (Scoping) To: Literate Progaramming list , chris@KD3BJ.UUCP On 17 Nov 93 02:57:42 GMT said: > >Thank you, everyone that pointed out that there were now SuperDuper >versions of WEB that answered most of my criticisims. I am now attempting >to collect and evaluate some of these. With luck I'll find ONE version >that has most of my wish-list entries in the 3-4 hrs per month I have >free to experiment with new tools---we don't get much play time >where I work. > >The only unanswered criticism was the issue of scoping. Steve Avery >made an attempt to answer it, which I find inadequate. > >stevea@vast.unsw.edu.au (Steve Avery) writes: > >> I don't go along with your notion of having locality of >>reference in a WEB. The sort of code you are proposing is working >>against the grain of what literate programming is about - ie. lots of >>words not few words :-). If you must have several "Initialize" >>statements, then they should have different names. This then allows you >>to easily distinguish between different sections in both the index, list >>of sections, and code itself. > >Clearly Steve understands my complaint about the lack of scoping in >web. I know this, because he tells me what I do now. Every time I try >to merge a perfectly good piece of code with another---even if they >are targeted for separate files---I have to worry about name collisions. >The ability to abbreviate scrap names makes this worse. > >I like all my C files to have the same basic format. Why do I have >to rename all the sections in the top-level template when I apply it to >a new module. This is unneeded work and it's error prone. > >Although I'd like a flexible scoping system, basic file target scoping >would help me a lot. Here's one way to do it: > >Make @i attach an invisible source filename code on the begining of every >scrap name in the file that is included. The bulk of tangle and weave >processing would treat these names as unique, but they'd look the same >after they are TeX'ed. Next, rewrite the index generation stuff in weave >to make this source filename visible again. Lastly, provide an override >mechanism on the @i and the @< to force global scoping, deleting the >invisible filename reference. > >I think that should do the trick. > >-- >73 de KD3BJ (Chris Nadovich, chris@kd3bj.ampr.org) I am afraid that generally files input @i are not easily includable into any web. However, if they contain only functions and/or class implementations, I fell better to build a private library. I do it with my functions and classes and I am rewriting the old libraries into CWEB. Thus my programs are smaller and compile faster. Just as you put #include I use #include or something similar. Then I specify the library in the project so that the linker can find it. If I don't remember something, I know there is another volume of a woven file and I have to look there for explanation. Regards ,~~~/ /` / /| /~~~ / / |_/ /__/ ' | / / /~~/ /~~/ /~~/ /~~/ /\ | /| / /~~/ /~~/ /~~/ /~~/ /~~~ / , / / /~~~ / / /~~~ / \ |/ |/ / /_/ / / / /~~~ / ~~~~ ~~~ ~~~ ' ' ~~~ ' ` ' ' ~~~ ~~/ ' ' ~~~ ' Zdenek Wagner______/ Some gateway between me and you may garble backslash. It will appear on your screen as ã due to problems with EBCDIC <--> ASCII conversion. It has already been corrected on SOME gateways. The address is obsolete. Valid addresses are: ^^ ================================================================================ Archive-Date: Thu, 18 Nov 1993 03:44:23 CST Sender: LP-Mgr@SHSU.edu Date: Thu, 18 Nov 93 10:35:34 MET From: Zdenek Wagner Reply-To: LitProg@SHSU.edu, WAGNER%CSEARN.BITNET@SHSU.EDU Subject: Re: Reuse of LP code To: Literate Progaramming list , Mark.Probert@NMS.OTC.COM.AU On Thu, 18 Nov 93 9:13:57 GMT said: >I got to thinking about using LP tools with the more modern >languages, such as C++ and Modula-2, and wondered, "Does anyone >have any experience with reuse of LP code?" > >-- >mark. (probertm@nms.otc.com.au) ph: (02) 339 3953 fax: (02) 339 3688 As I wrote as a response to another's posting, if I want to have some code reusable, I design my private library (functions, class implementation). Then I need the .h files and .lib file. Somewhere I have the printed vowen file so that I can refer to it. Regards ,~~~/ /` / /| /~~~ / / |_/ /__/ ' | / / /~~/ /~~/ /~~/ /~~/ /\ | /| / /~~/ /~~/ /~~/ /~~/ /~~~ / , / / /~~~ / / /~~~ / \ |/ |/ / /_/ / / / /~~~ / ~~~~ ~~~ ~~~ ' ' ~~~ ' ` ' ' ~~~ ~~/ ' ' ~~~ ' Zdenek Wagner______/ Some gateway between me and you may garble backslash. It will appear on your screen as ã due to problems with EBCDIC <--> ASCII conversion. It has already been corrected on SOME gateways. The address is obsolete. Valid addresses are: ^^ ,~~~/ /` / /| /~~~ / / |_/ /__/ ' | / / /~~/ /~~/ /~~/ /~~/ /\ | /| / /~~/ /~~/ /~~/ /~~/ /~~~ / , / / /~~~ / / /~~~ / \ |/ |/ / /_/ / / / /~~~ / ~~~~ ~~~ ~~~ ' ' ~~~ ' ` ' ' ~~~ ~~/ ' ' ~~~ ' Zdenek Wagner______/ Some gateway between me and you may garble backslash. It will appear on your screen as ã due to problems with EBCDIC <--> ASCII conversion. It has already been corrected on SOME gateways. The address is obsolete. Valid addresses are: ^^ ================================================================================ Archive-Date: Thu, 18 Nov 1993 06:05:26 CST Sender: LP-Mgr@SHSU.edu From: marcus@x4u2.desy.de (Marcus Speh) Reply-To: LitProg@SHSU.edu, marcus@X4U2.DESY.DE Subject: Re: WEB-Wars (Was: Which one [F|C|NO|NU|Funnel|Scheme]WEB? Flame war) Message-ID: Date: Thu, 18 Nov 1993 11:27:35 GMT To: LitProg@SHSU.EDU >>>>> "Richard" == Richard Kooijman writes: >> That's enough of this tirade. I'll conclude with an apology in >> advance and a wish that readers of this post will ignore the >> emotionalism/passion of my statements and consider what little >> logic appears herein. I've got to go teach class -- pity my >> students. Richard> First tirading and then apologizing? Why didn't you think Richard> before that and use the delete-line feature of your editor? Richard> If you did have so many problems compiling nuweb and noweb, Richard> why didn't you simply ask someone to help you instead of Richard> demanding and tirading afterwards? I value Thompson's posting and the questions contained in it as valuable contribution to the problems more than 1/2 of the readers of this list have -- installation (to mention only one of the points Dave Thompson touched upon) can pose a serious problem - I am doing all the installations for the fweb, cweb, nuweb and noweb tools on 3 clusters of our lab and I often felt that if I would be leaving most probably 'mere users' of LitProg tools may not want to carry on with that (it takes too much of my time anyway). Moreover, I don't like the style of Kooijman's answer - it lacks the humbleness which I appreciate from many knowledgeable people on c.p.l. The posting by Eitan Gurari on 'minimal configurations' to get started with literate programming is one of the best I have seen. It hadnt been posted I assume hadnt Dave formulated his problems. I think we need more of this approach if we want LitProg to become a widely used paradigm and not just an academic exercise. Respectfully, Marcus Speh -- ----------------------------------------------------------------------------- Marcus Speh, II.Inst.Theor.Physik,Luruper Chaussee 149, 22761 Hamburg,Germany Phone: +49-40 8998 2178, Fax: +49-40 8998 2267, Private: +49-40 801392 Internet: , ================================================================================ Archive-Date: Thu, 18 Nov 1993 08:33:30 CST Sender: LP-Mgr@SHSU.edu From: marcus@x4u2.desy.de (Marcus Speh) Reply-To: LitProg@SHSU.edu, marcus@X4U2.DESY.DE Subject: Re: CLiP for Unix available Message-ID: Date: Thu, 18 Nov 1993 13:15:19 GMT To: LitProg@SHSU.EDU I have updated all the links to the CLiP ftp directory on the World Wide Web pages on Literate Programming. Please report difficulties if there are any. -- ----------------------------------------------------------------------------- Marcus Speh, II.Inst.Theor.Physik,Luruper Chaussee 149, 22761 Hamburg,Germany Phone: +49-40 8998 2178, Fax: +49-40 8998 2267, Private: +49-40 801392 Internet: , ================================================================================ Archive-Date: Thu, 18 Nov 1993 08:53:54 CST Sender: LP-Mgr@SHSU.edu Message-ID: <199311181452.AA01511@pearl.vast.unsw.edu.au> To: LitProg@SHSU.edu CC: stevea@vast.unsw.edu.au Subject: Re: LP Failure Story (Scoping) Date: Fri, 19 Nov 1993 01:52:41 +1100 From: Steve Avery Reply-To: LitProg@SHSU.edu, stevea@VAST.UNSW.EDU.AU Chris talks about scoping and include files. To be quite honest, my original idea with the arbitrarily deep sectioning was to have included files be included at the current level or next level down (never did work out which was better) in the hierarchy. In this way, the top level of the hierarchy could simply be a place where the files were explained and included - supposedly making it possible to have a whole suite of files easily made into one document. (It would be possible to denote where a section is from by having the filename in the margin for each section, and possibly in the list of sections as well.) I talked (or rather emailed back and forward) with Lee Wittenberg about this, and he pointed out a few flaws, the least of which was the hassle with what to do with the TeX waffle (sorry, forgot the terminology) at the front of each web file. There are other hassles too, but I'm sure there is a way around them given enough thought and coding (it might mean that some new requirements, like the waffle go in a separate file, need be imposed on webs). Anyways, if this idea were to be implemented, it might make scoping easier (okay, it probably would). I still don't like the idea, but that doesn't mean it shouldn't be implemented for those that do. Oh, for those that haven't guessed, the web I'm talking about is CWEB. cheers -steve p.s. Chris - if you want it so bad, consider putting it in yourself, and then giving Silvio a copy for a look-see. It may well get into the next release. p.p.s. I'd be interested in knowing what people think about the idea of including files at a certain level in the hierarchy. It may also be able to be over-ridden with a switch on @i (like @i0). ================================================================================ Archive-Date: Thu, 18 Nov 1993 09:15:36 CST Sender: LP-Mgr@SHSU.edu Date: Thu, 18 Nov 93 10:14:15 EST From: Lee Wittenberg Reply-To: LitProg@SHSU.edu, leew@PILOT.NJIN.NET To: LitProg@shsu.edu, Mark.Probert@nms.otc.com.au Subject: Re: Reuse of LP code Message-ID: Mark Probert writes: > I got to thinking about using LP tools with the more modern > languages, such as C++ and Modula-2, and wondered, "Does anyone > have any experience with reuse of LP code?" > > When I code in "straight" C++, for instance, the class definition > is in the header and the implementation is in .cc file. But when I > use an LP tool, both of these are in the same file, as I believe it > should be. Now, at reuse time, I have either to use the generated > header, which may be "unreadable" (CWEB), or look at the web, which > has implementation details that I shouldn't see. > > The problem appears to be a contradiction between information hiding > and correctly documenting code. > > Can anyone shed any light, or have any opinions :-), on this issue? What I do (when I'm diligent) is to generate manual pages for the class within the web (usually in ``limbo,'' before the first section). That way I can maintain the manpages along with the code, but still xerox them separately for users. In noweb, I usually have a \part{Interface}, which contains the manual pages, followed by a \part{Implementation}, which contains the web proper. I haven't yet done any C++ programming in noweb, so I'm not sure where I would put the class declaration, but I suspect I would keep it in the Implementation part, saving Interface for purely human issues. Yet another technique stolen from Steve Avery. -- Lee leew@pilot.njin.net ================================================================================ Archive-Date: Thu, 18 Nov 1993 09:17:14 CST Sender: LP-Mgr@SHSU.edu Date: Thu, 18 Nov 1993 15:47:27 +0100 (MET) From: Richard Kooijman Reply-To: LitProg@SHSU.edu, R.Kooijman@ET.TUDELFT.NL Subject: Re: WEB-Wars (Was: Which one [F|C|NO|NU|Funnel|Scheme]WEB? Flame war) To: LitProg@SHSU.edu, marcus@X4U2.DESY.DE Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Thu, 18 Nov 1993, Marcus Speh wrote: > I value Thompson's posting and the questions contained in it as > valuable contribution to the problems more than 1/2 of the readers of > this list have -- > installation (to mention only one of the points Dave Thompson touched upon) > can pose a serious problem - I am doing all the installations for > the fweb, cweb, nuweb and noweb tools on 3 clusters of our lab and I > often felt that if I would be leaving most probably 'mere users' of > LitProg tools may not want to carry on with that (it takes too much of > my time anyway). What a lot of people forget is that the tools you can get here are to be installed by configuring, compiling and copying to binary directories. If you buy a commercial product, you buy binaries. Binaries for a certain architecture run out of the box most of the time. Sources need to be compiled first and this adds up to the complexity/difficulties during installation. Not only your run-time environment becomes important, but also your compile-time environment. If you buy a product you may expect support. If your run-time environment isn't configured right you can ask them for help. Binaries make you configure your run-time environment, sources lets you configure the tools themselves. Thompson had problems installing both sources and binaries of LP tools. In the instances he metioned, there were clear prerequisites or solutions in the accompanying docs. Not very uncommon. There are PD tools who have a sort of auto-configure which determines your compile time environment. Very nice, but also a lot of work to make your sources suitable for this. Products are for free here, please remember that. The designers are solving problems for others voluntary and in their own time. No need to tirade, simply ask, they might help and they might not, but don't start demanding things, now that's lacking humbleness. > Moreover, I don't like the style of Kooijman's answer - it lacks the > humbleness which I appreciate from many knowledgeable people on c.p.l. Thompson himself said he was tirading. I have never seen questions here from him asking for some installation help. Seeing the other responses, a lot of people have installed several products without trouble. Maybe Thompson isn't experienced enough. Should he be? It can come in handy, compiling and installing software might require some work sometimes. You simply can't expect everything to be free. IMHO Thompson was to quick with his tirade and could have asked questions first. There seem to be a lot of people who succeeded where he failed and they were not all Gods. A lot of products both PD (copylefted etc.) and commercial will install without problems on standard computer machines. If you have an extraordinary machine, or compiler in case of sources, you may be out of luck and you'll have to work to get it right. For example, Thompson had difficulties with nuweb. This tool compiles and runs on a lot of UNIX machines/types without hassles. Thompson has a PC and had a problem with a binary version of nuweb. Apparently that version needed the go32 DOS extender. He could have downloaded the sources which would have compiled fresh without problems if he had taken a at the README where the solution was. Richard. ================================================================================ Archive-Date: Thu, 18 Nov 1993 11:28:54 CST Sender: LP-Mgr@SHSU.edu Date: Thu, 18 Nov 93 11:29:46 CST From: thompson@sun1.coe.ttu.edu (Dave Thompson (3/1/93)) Reply-To: LitProg@SHSU.edu, thompson@SUN1.COE.TTU.EDU Message-ID: <9311181729.AA28592@sun1.coe.ttu.edu> To: LitProg@SHSU.edu, preston@DAWN.CS.RICE.EDU Subject: Re: installing nuweb on a pc CC: dthompson@coe2.coe.ttu.edu > >Nuweb on my pc requires go32.exe, which won't run under winders. I > >know I can close winders, but shouldn't be required to dump my > >principal operating evnironment > I agree that you ought not have to dump Windows or your PC to enjoy > literate programming. I disagree that nuweb requires go32.exe > (whatever that is) to run on a PC. You're right and again I say mea culpa. (I've got a pig-latin hangup these days ;-) The version I picked up at CTAN was 0.6pc and requires use of the go32.exe. That was the first problem. A more recent version will probably clean up the host of problems I encountered when trying to compile nuweb with msc. You've had a rundown on the other difficulties I encountered while trying to port that version to msc, so I won't repeat them here. I certainly appreciate your willingness to help, as well as your willingness to spend time (a valuable commodity) on a freely available program. > The lastest version is 0.87 Can we ensure that the current version is on CTAN? The msdos version on ftp.shsu.edu seems to be version 0.6pc, which is the one I picked up. How about we trash that one and put the current version up for ftp? Thanks and I'll be in touch. -=d ======================================================================= David B. Thompson internet: thompson@sun1.coe.ttu.edu Civil Engineering Dept. internet: dthompson@coe2.coe.ttu.edu Texas Tech University internet: wqdbt@ttacs1.ttu.edu P.O. Box 41023 Lubbock, Texas 79409-1023 "Get a haircut and get a *real* job." ======================================================================= ================================================================================ Archive-Date: Thu, 18 Nov 1993 11:51:49 CST Sender: LP-Mgr@SHSU.edu From: dmason@uwaterloo.ca (Dave Mason) Subject: Re: Literate ML Code Message-ID: Reply-To: LitProg@SHSU.edu, dmason@uwaterloo.ca (Dave Mason) Date: Thu, 18 Nov 1993 16:12:39 GMT To: LitProg@SHSU.EDU Hi Chet, I have a Spiderweb for SML that I think exploits ML's differences well. I also have a literate program that I wrote, although it doesn't have a lot of (enough) prose. I'm going to clean it up and send it off to SIGPLAN Notices, but in the meantime I have put the .dvi file in an anonymous ftp place, where you could pick it up. ftp to plg.uwaterloo.ca in pub/smlweb. I put the .web file and the .sml files there too so you can see what they look like. ../Dave ================================================================================ Archive-Date: Thu, 18 Nov 1993 13:04:56 CST Sender: LP-Mgr@SHSU.edu Date: Thu, 18 Nov 93 14:03:39 EST From: Lee Wittenberg Reply-To: LitProg@SHSU.edu, leew@PILOT.NJIN.NET To: LitProg@shsu.edu, dmason@uwaterloo.ca (Dave Mason) Subject: Re: Literate ML Code Message-ID: > Hi Chet, > > I have a Spiderweb for SML that I think exploits ML's differences > well. I also have a literate program that I wrote, although it > doesn't have a lot of (enough) prose. I'm going to clean it up and > send it off to SIGPLAN Notices, but in the meantime I have put the .dvi > file in an anonymous ftp place, where you could pick it up. ftp to > plg.uwaterloo.ca in pub/smlweb. I put the .web file and the .sml > files there too so you can see what they look like. > > ../Dave > > I'm not sure you meant to post this to the net in general, but I, for one, am interested (I've already downloaded the .dvi file). You might also want to post the .spider file, as the .web is kind of useless without it. There are also some of us (like me) who are really interested in the various Spidery grammars. -- Lee ================================================================================ Archive-Date: Thu, 18 Nov 1993 14:15:34 CST Sender: LP-Mgr@SHSU.edu Date: Thu, 18 Nov 93 19:17:24 GMT Message-ID: <9311181917.AA26683@dcs.shef.ac.uk> To: LitProg@SHSU.edu, preston@DAWN.CS.RICE.EDU, thompson@SUN1.COE.TTU.EDU Subject: Re: installing nuweb on a pc CC: dthompson@coe2.coe.ttu.edu From: Manuel Carriba Reply-To: LitProg@SHSU.edu, M.Carriba@dcs.sheffield.ac.uk > > The lastest version is 0.87 > > Can we ensure that the current version is on CTAN? The msdos version on > ftp.shsu.edu seems to be version 0.6pc, which is the one I picked up. How > about we trash that one and put the current version up for ftp? > Maybe Preston's nuweb should output a small message like 'This is nuweb, version 0.85' whenever you run the program ;-) Manuel. ================================================================================ Archive-Date: Thu, 18 Nov 1993 16:23:18 CST Sender: LP-Mgr@SHSU.edu From: mcguire@cs.utexas.edu (Tommy Marcus McGuire) Reply-To: LitProg@SHSU.edu, mcguire@CS.UTEXAS.EDU Subject: Re: featurism, complexity, portability, and extensibility (Was: Which Date: 18 Nov 1993 14:25:26 -0600 Message-ID: <2cglnm$i16@needmore.cs.utexas.edu> To: LitProg@SHSU.EDU In article , Stuart Ferguson wrote: >+-- norman@bellcore.com writes: >| I happen to disagree with Stuart here, but this is a perfect example >| of how to take advantage of an extensible tool. noweb's default >| behavior is to make whitespace significant, but that behavior can be >| changed by a one-line noweb filter: >| sed -e '/^@use /s/[ \t][ \t]*/ /g' -e '/^@defn /s/[ \t][ \t]*/ /g' I actually understood this, and I have not done more than glance at noweb. Does this make me a bad person? > >This isn't quite what I was talking about. For example, I also >mentioned wanting case insensitivity, but using the appropriate line >of sed gibberish to perform case folding on identifiers will not do >the right thing. The formatted document should respect the case and >spacing I specified, but identifiers should be matched independent >of case and spacing. >-- > Stuart Ferguson (shf@netcom.com) > "Just Once or Twice .. is Good for your Soul" > Ten weeks to Midnight. Are you sure you really want case insensitivity? I know I'd wind up with , , , etc., running all through the program. That would tend to make regular expression searches while editing the thing useless, not to mention confusing the heck out of anyone reading the final document and wondering why these case distinctions keep showing up. Personally, I am pretty ambivalent about using the ``...'' completion for [chunk|fragment|scrap] names. I can see where someone else might like it, but I don't use it. ----- Tommy McGuire mcguire@cs.utexas.edu mcguire@austin.ibm.com "...I will append an appropriate disclaimer to outgoing public information, identifying it as personal and as independent of IBM...." ================================================================================ Archive-Date: Thu, 18 Nov 1993 16:26:24 CST Sender: LP-Mgr@SHSU.edu From: mcguire@cs.utexas.edu (Tommy Marcus McGuire) Reply-To: LitProg@SHSU.edu, mcguire@CS.UTEXAS.EDU Subject: Re: Ordering Dependencies and Scoping Date: 18 Nov 1993 14:58:02 -0600 Message-ID: <2cgnkq$ich@needmore.cs.utexas.edu> To: LitProg@SHSU.EDU In article <17628520@mvb.saic.com>, Michael G. Koopman wrote: > >Two recent posts related to name spaces, one on scope and one on >dependencies, reek of creeping featurism which I desire as a creepy >feature user. Norman Ramsey boasts of file scoping capability in >noweb (which can be managed with make utilities?). Stuart Ferguson >has trouble collecting up C typedefs from "top-down" chunks. > [...] > >Stuart Ferguson wrote [Ordering Dependencies]: > >>One problem that I am noticing is that of final ordering of elements >>in the output program text. Like most one pass compilers, C requires >>that objects be declared before they are used. This lends a decidedly >>"bottom-up" quality to raw C code. I am finding that my literate >>programs tend to be more "top-down," with declarations of higher level >>objects before the lower level components which they require. The >>problem is that if I use some generic refinement like << Public Data >>Types >> to collect up my typedef's, for example, then the objects >>are declared in the wrong order for the compiler. >... >> >>As usual, I have a suggestion about how to do this. Normally a single [...] > >The concepts described are not exactly clear to me. I would not want >chunks to "float" about anywhere. Rather than levitating chunks I >would like to chain them down. I believe the ancillary information >should be dependency information. An index tag could allow dependency [...] >Michael Koopman (mike) e-mail: koopman@ctc.com [...] Pardon me for being terribly dense today, but is this a non-problem? If type Foo depends on the definition of type Bar, shouldn't there be a scrap <>= just to make the dependency explicit? Far be it from me to resist the addition of features of extreme complexity and beauty, of course. ----- Tommy McGuire mcguire@cs.utexas.edu mcguire@austin.ibm.com "...I will append an appropriate disclaimer to outgoing public information, identifying it as personal and as independent of IBM...." ================================================================================ Archive-Date: Thu, 18 Nov 1993 17:39:52 CST Sender: LP-Mgr@SHSU.edu From: gurari@cis.ohio-state.edu (Eitan Gurari) Reply-To: LitProg@SHSU.edu, gurari@CIS.OHIO-STATE.EDU Subject: Re: LP Failure Story (Scoping) Date: 18 Nov 1993 17:23:58 -0500 Message-ID: <2cgsluINNicp@rhinoceros.cis.ohio-state.edu> To: LitProg@SHSU.EDU <> From: Steve Avery <> Chris talks about scoping and include files. To be <> quite honest, my original idea with the arbitrarily deep sectioning was <> to have included files be included at the current level or next level <> down (never did work out which was better) in the hierarchy. In this <> way, the top level of the hierarchy could simply be a place where the <> files were explained and included - supposedly making it possible to <> have a whole suite of files easily made into one document... Hierarchical scoping of code fragments seems to me to be the way to follow in two-dimensional (e.g., hypertext-oriented) environments that exhibit these relationships in a natural manner. In linear environments, hierarchical scoping might require extra discipline from users (like me) that appreciate the cut-and-paste mode of operation. Personally I like the idea of linear scoping for code files. In (Al)ProTex I addressed this concept with two features: a feature to clear all the existing definitions of code (option `ClearCode'), and a feature for decomposing indexes. Normally I tie the above features with top-level sectioning commands, like \Part or \Chapter, of prose. (Note: indexes that are produced within ProTeX have poor outcome and are big time consumers.) -eitan ================================================================================ Archive-Date: Thu, 18 Nov 1993 18:06:53 CST Sender: LP-Mgr@SHSU.edu Message-ID: <9311190005.AA20456@netmail.microsoft.com> From: Eric Landes Reply-To: LitProg@SHSU.edu, ericla@MICROSOFT.COM To: litprog@shsu.edu Date: Thu, 18 Nov 93 12:29:27 PST Subject: Microsoft Windows version of FWEB 1.30a. This has now been made available for anonymous FTP at the following site: ftp.shsu.edu:/tex-archive/web/fweb/v1_30/mswin/fweb130w.zip This is exactly like the command line version, it's just a Windows app now. Handy for avoiding DOS memory crunch, or for tangling and weaving from the Visual C++ Tools menu. If you have problems with this port, please don't hesitate to ask. Thanks! Eric Landes ericla@microsoft.com ================================================================================ Archive-Date: Thu, 18 Nov 1993 18:33:37 CST Sender: LP-Mgr@SHSU.edu From: plessel@oz.rtpnc.epa.gov (Todd Plessel) Reply-To: LitProg@SHSU.edu, plessel@OZ.RTPNC.EPA.GOV Subject: A naive question: Is LP interactive and WYSIWYG? Message-ID: <1993Nov18.230218.6662@trixie.rtpnc.epa.gov> Keywords: interactive, literate, programming, wysiwyg Date: Thu, 18 Nov 1993 23:02:18 GMT To: LitProg@SHSU.EDU I'm new to this newsgroup and not really familiar with literate programming. But if the idea is to support writing software that maximizes understandability, then I'd certainly like to learn more. Following the book paradigm (that's the basic idea, right?), it seems to me that one would certainly want automatic support for such things as code formatting with, for example, reserved words in boldface and comments and free-text in itallics, a table of contents, a bibliography, an index, embeded graphics (a picture is worth ...) and so forth. However, extending the book paradigm, I'd like the ability to navigate by zoomming in and out to reveal different views of a software system. For example, support for displaying design structures such as block diagrams, class clusters (if OO) and other high-level system architechture components. And zooming in to reveal the low-level code within a routine and zooming to various levels in between such as class interfaces, cluster interfaces, subsystem interfaces and other imaginable constructs. (Granted this implies, in some manner, paradigm and language sensitive support.) The point is, these features call for an interactive, WYSIWYG capability rather than a programmed (batch-mode) model. By interactive, I'm referring to a WIMP operational model as opposed to a batch-mode embedded-command (e.g., TeX) model (which is the impression I'm getting about LP). (Kind of like the difference in operational style between, say, WordPerfect on an IBM PC vs Microsoft Word on a Macintosh - am I right about this or have I completely (hopefully) misunderstood this crucial aspect (the operational model) of LP?) My question is this: Are there literate programming environments that support such interactive WYSIWYG features as described or are they all geared at producing a paper document? If there are, I'd _really_ like to get my hands on one! If the answer is no then it seems to me that the value of LP is significantly diminished. After all, today's high-resolution monitors can display text and graphics as well as the laser printers (or at least well enough). I haven't printed code on paper in many years despite the presence of (crude, but helpful) pretty-printers. The printed copy is usually outdated very quickly. (And forget about recycling the paper - save trees by not printing in the first place.) But my real point is this: all of the benifits of LP (and I'm convinced of its basic premise) should be obtainable interactively and in a WYSIWYG mode. If this is not the case and LP simply requires me to do even _more programming_ (e.g., in a TeX-like language) to yield a very nicely formatted paper document, then I'd deem the benefits (increased understandability) as not worth the cost (substantial additional programming effort). Someone please tell me if I've misunderstood LP. (Or have LPers simply reached a different conclusion: that it is worth the extra effort and that interactive WYSIWYG is not really as important as I've claimed?) Todd plessel@vislab.rtpnc.epa.gov ================================================================================ Archive-Date: Thu, 18 Nov 1993 18:39:46 CST Sender: LP-Mgr@SHSU.edu Date: Thu, 18 Nov 93 19:38:38 -0500 From: koopman@sgi84.ctc.com (Michael G. Koopman) Message-ID: <9311190038.AA17223@sgi84.ctc.com> To: LitProg@SHSU.edu, gurari@CIS.OHIO-STATE.EDU CC: LitProg@SHSU.EDU Subject: LP Failure Story (Scoping) Reply-To: LitProg@SHSU.edu, koopman@ctc.com Eitan Gurari wrote: >Hierarchical scoping of code fragments seems to me to be the way to >follow in two-dimensional (e.g., hypertext-oriented) environments that >exhibit these relationships in a natural manner. In linear environments, >hierarchical scoping might require extra discipline from users (like >me) that appreciate the cut-and-paste mode of operation. Is the underlying issue reuse of literate code (here, within the same web)? Does it seem likely that collections of chunks of a web that describe and implement a reuse object could be written such that the natural language descriptions, method names, attributes, etc., could be defined to allow reuse/renaming? That is, does it seem reasonable to pursue reuse of literate code above the source code cut and paste level; i.e., classes of fully literate code? How close can ADA be considered to approach such capacity without literate support tool? Has anyone written a literate code segment such that the description and code fragments incorporate named macros that can be renamed to implement an equivalent class in a different domain without needing to overhaul the code or descriptive text? Seems like a library of these things could be powerful medicine. A web tool that supports ``common'' weave structures could be used to place the various chunks into the desired locations in the web for which they have been decomposed. Has anyone achieved enough familiarity and experience with literate techniques to support or deny the potential for such speculative methods? At a more practical level, inclusion of macro text in the chunk name may avoid some name collisions. Michael Koopman (mike) Associate Computer Systems Specialist Concurrent Technologies Corporation e-mail: koopman@ctc.com 1450 Scalp Avenue phone: +1-814-269-2637 Johnstown, PA 15904-3321 USA telefax: +1-814-269-2666 ================================================================================ Archive-Date: Thu, 18 Nov 1993 18:52:41 CST Sender: LP-Mgr@SHSU.edu From: shf@netcom.com (Stuart Ferguson) Reply-To: LitProg@SHSU.edu, shf@NETCOM.COM Subject: Re: LP Failure Story (Scoping) Message-ID: Date: Thu, 18 Nov 1993 21:48:17 GMT To: LitProg@SHSU.EDU +-- chris@kd3bj.uucp (C. T. Nadovich) writes: | The only unanswered criticism was the issue of scoping. [...] | Every time I try | to merge a perfectly good piece of code with another---even if they | are targeted for separate files---I have to worry about name collisions. | The ability to abbreviate scrap names makes this worse. I tend to agree. One of my first thoughts when finally understanding the design of WEB was, "My God, everything's globally scoped!" How 1970's-ish. That said, and my language design bias out in the open, the real issue for literate programming is making the scoping decisions understandable to the reader. Where the programmer is comfortable with micro scoping, I think any normal reader will be find a more large scale scoping easier to cope with. I would suggest scoping by section or chapter only, for example, and not in smaller units. I might also insist that the introduction to any scoped section list the public tags and certainly highlight them in a more bold font in the text. Limiting scoping blocks to sections seems like a reasonable compromise between providing the programmer with a powerful tool and keeping the document readable. There are plenty of ways to lay out the index and cross reference to make clear the locality of reference. | I like all my C files to have the same basic format. Why do I have | to rename all the sections in the top-level template when I apply it to | a new module. This is unneeded work and it's error prone. This ties into one of the ideas I've had which I posted here recently, about boilerplate and literate macros. If your web tool had text substitution macros which could be instantiated forward and backwards, you would only need to define your template once and could envoke it with a different module name for each instance. This would obviate the need for scoping in this case. -- Stuart Ferguson (shf@netcom.com) "Just Once or Twice .. is Good for your Soul" Ten weeks to Midnight. ================================================================================ Archive-Date: Thu, 18 Nov 1993 19:11:17 CST Sender: LP-Mgr@SHSU.edu Date: Thu, 18 Nov 93 20:09:47 -0500 From: koopman@sgi84.ctc.com (Michael G. Koopman) Message-ID: <9311190109.AA17278@sgi84.ctc.com> To: LitProg@SHSU.edu, plessel@OZ.RTPNC.EPA.GOV CC: LitProg@SHSU.EDU Subject: A naive question: Is LP interactive and WYSIWYG? Reply-To: LitProg@SHSU.edu, koopman@ctc.com Todd Plessel wrote: >I'm new to this newsgroup and not really familiar with literate >programming. But if the idea is to support writing software that >maximizes understandability, then I'd certainly like to learn more. > >Following the book paradigm (that's the basic idea, right?), I think he is playing coy with the newsgroup. This sounds an awful lot like ``hitting the nail on the head'' to me. Beginner's Luck? > it seems >to me that one would certainly want automatic support for such things >as code formatting with, for example, reserved words in boldface and >comments and free-text in itallics, a table of contents, a bibliography, >an index, embeded graphics (a picture is worth ...) and so forth. However, >extending the book paradigm, I'd like the ability to navigate by zoomming >in and out to reveal different views of a software system. For example, >support for displaying design structures such as block diagrams, class >clusters (if OO) and other high-level system architechture components. >And zooming in to reveal the low-level code within a routine and zooming >to various levels in between such as class interfaces, cluster interfaces, >subsystem interfaces and other imaginable constructs. (Granted this implies, >in some manner, paradigm and language sensitive support.) Fanning the language sensitive flame wars - and introducing paradigm and paradigm presentation method wars! E-R-D, SA, Rumbaugh, Coad and Yourdon, ADM4 ....? Which is the true faith? >The point is, these features call for an interactive, WYSIWYG capability >rather than a programmed (batch-mode) model. By interactive, I'm referring >to a WIMP operational model as opposed to a batch-mode embedded-command >(e.g., TeX) model (which is the impression I'm getting about LP). >(Kind of like the difference in operational style between, say, WordPerfect >on an IBM PC vs Microsoft Word on a Macintosh - am I right about this or >have I completely (hopefully) misunderstood this crucial aspect (the >operational model) of LP?) Reflaming the WYSIWYG wars; and ``interactive'' implying multiple and/or dynamic expositions. Anyone have dynamic exposition support? That is, do any of the HTML tools allow presentation creation, interactively? >My question is this: Are there literate programming environments that >support such interactive WYSIWYG features as described or are they all >geared at producing a paper document? If there are, I'd _really_ like >to get my hands on one! If the answer is no then it seems to me that the >value of LP is significantly diminished. ... >Someone please tell me if I've misunderstood LP. (Or have LPers simply reached >a different conclusion: that it is worth the extra effort and that interactive >WYSIWYG is not really as important as I've claimed?) Sounds like you just cut out a nice big chunk of work that perhaps you might like to implement. I volunteer as a ``Beta'' version user. ;-) Michael Koopman (mike) e-mail: koopman@ctc.com Concurrent Technologies Corporation phone: +1-814-269-2637 1450 Scalp Avenue telefax: +1-814-269-2666 Johnstown, PA 15904-3321 USA ICBM: 40-15'N-78-50'W ------------------------------------------------------------- Geo. Carlin - "We're gonna learn ya', we're gonna learn ya' good" ================================================================================ Archive-Date: Thu, 18 Nov 1993 19:34:56 CST Sender: LP-Mgr@SHSU.edu Date: Thu, 18 Nov 93 20:32:46 -0500 From: koopman@sgi84.ctc.com (Michael G. Koopman) Message-ID: <9311190132.AA17328@sgi84.ctc.com> To: LitProg@SHSU.edu, shf@NETCOM.COM CC: LitProg@SHSU.EDU Subject: LP Failure Story (Scoping) Reply-To: LitProg@SHSU.edu, koopman@ctc.com Stuart Ferguson wrote: >Limiting scoping blocks to sections seems like a reasonable compromise >between providing the programmer with a powerful tool and keeping the >document readable. This gets my vote, although, especially when maintaining older (``golden'') code - global scoping might be helpful? >There are plenty of ways to lay out the index and cross reference to >make clear the locality of reference. Adding a chapter mark and id seems a straightforward approach. >| I like all my C files to have the same basic format. Why do I have >| to rename all the sections in the top-level template when I apply it to >| a new module. This is unneeded work and it's error prone. > >This ties into one of the ideas I've had which I posted here recently, >about boilerplate and literate macros. If your web tool had text >substitution macros which could be instantiated forward and backwards, >you would only need to define your template once and could envoke it >with a different module name for each instance. This would obviate >the need for scoping in this case. I would add support for module name tagging of macros and other web variable entries to (fully?) obviate scoping. Michael Koopman (mike) Associate Computer Systems Specialist Concurrent Technologies Corporation e-mail: koopman@ctc.com 1450 Scalp Avenue phone: +1-814-269-2637 Johnstown, PA 15904-3321 USA telefax: +1-814-269-2666 ================================================================================ Archive-Date: Thu, 18 Nov 1993 19:52:52 CST Sender: LP-Mgr@SHSU.edu Date: Thu, 18 Nov 93 20:42:52 -0500 From: koopman@sgi84.ctc.com (Michael G. Koopman) Message-ID: <9311190142.AA17337@sgi84.ctc.com> To: LitProg@SHSU.edu, mcguire@CS.UTEXAS.EDU CC: LitProg@SHSU.EDU Subject: Ordering Dependencies and Scoping Reply-To: LitProg@SHSU.edu, koopman@ctc.com Yes, it is a non-problem. ================================================================================ Archive-Date: Fri, 19 Nov 1993 04:23:06 CST Sender: LP-Mgr@SHSU.edu From: lynbech@daimi.aau.dk (Christian Lynbech) Reply-To: LitProg@SHSU.edu, lynbech@DAIMI.AAU.DK Subject: Re: Ordering Dependencies and Scoping Date: 19 Nov 1993 09:29:16 GMT Message-ID: <2ci3lc$t31@belfort.daimi.aau.dk> To: LitProg@SHSU.EDU On the issue on mixed file/global scoping. I believe that noweb does a good enough job here. As I see it, you cannot mix the two types of scope, without having some (textual) way to mark something as local and something as global. And having to do this anyway, why not either prefix all local scrap names with the file name, thus making them unique to that file, or if that is too much typing (for instance you need to decide on the file name, rather than having a fixed and short marker), pipe it through a small sed/perl/awk script that takes all this-is-a-local-scrap-marker and substitute the file name. The above scheme can be varied endlessly, but it could be easily implemented in a makefile. ------------------------------------------------------------------------------ Christian Lynbech | Hit the philistines three times over the | head with the Elisp reference manual. email: lynbech@daimi.aau.dk | - petonic@hal.com (Michael A. Petonic) ------------------------------------------------------------------------------ ================================================================================ Archive-Date: Fri, 19 Nov 1993 09:20:35 CST Sender: LP-Mgr@SHSU.edu Subject: Anybody using PowerBuilder from PowerSoft? Yes? Questions... Message-ID: From: smclewin@ultrix.ramapo.edu (Scott M McLewin) Reply-To: LitProg@SHSU.edu, smclewin@ULTRIX.RAMAPO.EDU Date: 19 Nov 93 14:05:20 GMT Keywords: PowerBuilder PowerSoft Database To: LitProg@SHSU.EDU My company is looking to re-write a vertical market application using PowerBuilder. We presently use C and the Raima Data Manager (RDM) from Raima Corp for the product. I know PowerBuilder can sit on the RDM engine through ODBC, but would like to know what database you would reccomend to attach to PowerBuilder via ODBC. Our constraints are as follows: * We need our application to work both on single user systems and networks. * We would preferr a database engine with royalty free distribution Some other questions I would love to have answered: * Is PowerBuilder a good development tool? - what are its strengths? - what are its weaknesses? * How is the PowerBuilder documentation? Have you had questions you simply could not answer via the manuals? * Is PowerSoft a "good" company? (I know, a rather vague question...) - How is their technical support? + responsive/"we'll call you back next month"? + well informed? - How frequently, if ever, do they make software patchs available? - Are they willing to share their known bugs with developers so we can avoid getting snagged by them? * Would you consider the SQL/database query tool included in the database you use to be good? For exaple, any Raima user who has attempted to use db_Query knows it is full of "features" its creators never intended. I am truly sorry if this message does not belong in this group. I was unable to find a group dedicated to PowerSoft products, so I tried to place this message in a wide variety of programming groups. Please don't waste further bandwidth by flaming me or those silly folks who may have already flamed me. Thanks. In addition to posting your reply, please email me a carbon copy as I may not have a chance to catch all replies in all groups. Thanks, Scott M McLewin smclewin@ultrix.ramapo.edu -- Scott M McLewin smclewin@ultrix.ramapo.edu ================================================================================ Archive-Date: Fri, 19 Nov 1993 09:20:42 CST Sender: LP-Mgr@SHSU.edu Subject: Anybody using PowerBuilder from PowerSoft? Yes? Questions... Message-ID: From: smclewin@ultrix.ramapo.edu (Scott M McLewin) Reply-To: LitProg@SHSU.edu, smclewin@ULTRIX.RAMAPO.EDU Date: 19 Nov 93 14:08:33 GMT Keywords: PowerBuilder PowerSoft Database To: LitProg@SHSU.EDU My company is looking to re-write a vertical market application using PowerBuilder. We presently use C and the Raima Data Manager (RDM) from Raima Corp for the product. I know PowerBuilder can sit on the RDM engine through ODBC, but would like to know what database you would reccomend to attach to PowerBuilder via ODBC. Our constraints are as follows: * We need our application to work both on single user systems and networks. * We would preferr a database engine with royalty free distribution Some other questions I would love to have answered: * Is PowerBuilder a good development tool? - what are its strengths? - what are its weaknesses? * How is the PowerBuilder documentation? Have you had questions you simply could not answer via the manuals? * Is PowerSoft a "good" company? (I know, a rather vague question...) - How is their technical support? + responsive/"we'll call you back next month"? + well informed? - How frequently, if ever, do they make software patchs available? - Are they willing to share their known bugs with developers so we can avoid getting snagged by them? * Would you consider the SQL/database query tool included in the database you use to be good? For exaple, any Raima user who has attempted to use db_Query knows it is full of "features" its creators never intended. I am truly sorry if this message does not belong in this group. I was unable to find a group dedicated to PowerSoft products, so I tried to place this message in a wide variety of programming groups. Please don't waste further bandwidth by flaming me or those silly folks who may have already flamed me. Thanks. In addition to posting your reply, please email me a carbon copy as I may not have a chance to catch all replies in all groups. Thanks, Scott M McLewin smclewin@ultrix.ramapo.edu -- Scott M McLewin smclewin@ultrix.ramapo.edu ================================================================================ Archive-Date: Fri, 19 Nov 1993 10:18:39 CST Sender: LP-Mgr@SHSU.edu From: huff@schenectady.ecn.purdue.edu (John E Huff) Reply-To: LitProg@SHSU.edu, huff@SCHENECTADY.ECN.PURDUE.EDU Subject: nuweb for macintosh Message-ID: Date: Fri, 19 Nov 1993 15:12:55 GMT To: LitProg@SHSU.EDU I have tried to compile nuweb with Think C 5.0 on the macintosh and have not been able to get it to run. The program compiles completely but crashes when it runs. I would appreciate any help or versions ready to go. One caveat, I am just learning to program in C. Thanks, John Huff huff@ecn.purdue.edu ================================================================================ Archive-Date: Fri, 19 Nov 1993 10:20:50 CST Sender: LP-Mgr@SHSU.edu Date: 19 Nov 93 11:16:11 EST From: Reply-To: LitProg@SHSU.edu, PJENSEN@CSI.COMPUSERVE.COM To: Subject: Re: A naive question: Is LP interactive and WYSIWIG? Message-ID: Todd Plessel (plessel@vislab.rtpnc.epa.gov) writes: > ... all of the benefits of LP (and I'm convinced of its basic premise) > should be obtainable interactively and in a WYSIWIG mode. If this is not > the case and LP simply requires me to do even _more programming_ (e.g., > in a TeX-like language) to yield a very nicely formatted paper document, > then I'd deem the benefits (increased understandability) as not worth the > cost (substantial additional programming effort). First, I will admit that I'm a rabid hater of graphic interfaces. My blood pressure rises when I'm forced to move five of my ten fingers over to a mouse to do something that should be one keystroke (like PageUp/PageDown). Also, as a typographic purist, I admire TeX for enabling high quality work under precisely-defined rules. What you see is all you got. But leaving this aside, many of us are used to developing programs in character-cell mode, with emacs or whatever. We know what to type to get the keywords and special symbols of whatever language it is (and with smart editors, we have the option of binding single keys to set up control structure templates and so forth). The fact that with (prettyprinting flavors of) LP tools we can get listings with boldface, arrows, inequality symbols, angle brackets, and so on is "gravy". Also, very many of us find great benefit in the chunking of LP, quite apart from how many times we actually weave and TeX it; some posters have stated that they almost never make listings. One sees from recent postings that we don't agree entirely on what LP tools should do; but in batch mode the effort to develop a new tool or modify an existing one is "finite": a WYSIWIG tool would be an order of magnitude more complicated. A nice bonus is that the tools we use are free, and portable (and fast). - Phil pjensen@csi.compuserve.com ================================================================================ Archive-Date: Fri, 19 Nov 1993 11:45:19 CST Sender: LP-Mgr@SHSU.edu Date: Fri, 19 Nov 93 11:47:08 CST From: fulling@sarastro.math.tamu.edu (Stephen A. Fulling) Reply-To: LitProg@SHSU.edu, fulling@SARASTRO.MATH.TAMU.EDU Message-ID: <9311191747.AA00962@sarastro.math.tamu.edu> To: LitProg@shsu.edu Subject: Re: A naive question: Is LP interactive and WYSIWIG? CC: fulling@sarastro.math.tamu.edu Phil (pjensen@csi.compuserve.com) writes: >First, I will admit that I'm a rabid hater of graphic interfaces. >My blood pressure rises when I'm forced to move five of my ten >fingers over to a mouse to do something that should be one >keystroke (like PageUp/PageDown). HEAR! HEAR! >Also, as a typographic purist, I admire TeX for enabling high >quality work under precisely-defined rules. What you see is all >you got. [...] A nice bonus is that the tools we use are free, >and portable (and fast). Again hear! I cringe whenever a term like "hypertext" comes up that threatens to cut back the number of systems on which a tool could operate. TeX and *WEB are valuable largely because of their universality and low cost. It would be nice to have a more-nearly- WYSIWYG TeX (and LP) system that maintained source-code compatibility with more primitive systems; but I think this requires a new generation of higher-resolution monitors, so that the source and the TeX output can be displayed side-by-side without loss of legibility of the latter. Steve Fulling ================================================================================ Archive-Date: Fri, 19 Nov 1993 12:47:08 CST Sender: LP-Mgr@SHSU.edu From: dak@messua.informatik.rwth-aachen.de (David Kastrup) Reply-To: LitProg@SHSU.edu, dak@MESSUA.INFORMATIK.RWTH-AACHEN.DE Subject: A task nobody thought of, but all will embrace if done... Date: 19 Nov 1993 17:52:12 GMT Message-ID: <2cj14c$fr9@urmel.informatik.rwth-aachen.de> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit To: LitProg@SHSU.EDU Here comes what we all want: All Weave writers using TeX, allow an option to generate \special{weblines: file.web 1512} Into the weave output. For every line. Xdvi patchers, allow xdvi, when encountering such a line, to listen to a tcp Port (this may be difficult...), and mapping requests for files and lines by finding and displaying the appropriate special location. Finally, gdb fans, make it possible to open such a TCP Port (if present) and send those commands through. It might even be an idea from xdvi to manage several dvi files at once, but I do not think I insist... What do we get? A debugger stepping through the *document* in the previewer, not through the ugly WEB source. -- David Kastrup dak@pool.informatik.rwth-aachen.de Tel: +49-241-72419 Fax: +49-241-79502 Goethestr. 20, D-52064 Aachen ================================================================================ Archive-Date: Fri, 19 Nov 1993 14:10:57 CST Sender: LP-Mgr@SHSU.edu Date: Fri, 19 Nov 93 15:03:32 EST From: Lee Wittenberg Reply-To: LitProg@SHSU.edu, leew@PILOT.NJIN.NET To: LitProg@shsu.edu, plessel@oz.rtpnc.epa.gov Subject: Re: A naive question: Is LP interactive and WYSIWYG? Message-ID: Todd Plessel writes: > I'm new to this newsgroup and not really familiar with literate > programming. But if the idea is to support writing software that > maximizes understandability, then I'd certainly like to learn more. > [text omitted] > > The point is, these features call for an interactive, WYSIWYG capability > rather than a programmed (batch-mode) model. By interactive, I'm referring > to a WIMP operational model as opposed to a batch-mode embedded-command > (e.g., TeX) model (which is the impression I'm getting about LP). > (Kind of like the difference in operational style between, say, WordPerfect > on an IBM PC vs Microsoft Word on a Macintosh - am I right about this or > have I completely (hopefully) misunderstood this crucial aspect (the > operational model) of LP?) Whether LP features ``call for an interactive, WYSIWYG capability'' or not seems to be a major religous issue around here. To avoid avoidable friction, I will refrain from commenting on the issue of whether WYSIWYG is best or not. It's best to leave it as ``Different strokes for different folks.'' > My question is this: Are there literate programming environments that > support such interactive WYSIWYG features as described or are they all > geared at producing a paper document? If there are, I'd _really_ like > to get my hands on one! If the answer is no then it seems to me that the > value of LP is significantly diminished. There are 2 WYSIWYG LP environments that I know of. WinWordWEB is a collection of Word for Windows macros that support literate programming in that <> word processor. A a FrameMaker-based system was recently announced as well. Happy hunting. -- Lee leew@pilot.njin.net ================================================================================ Archive-Date: Fri, 19 Nov 1993 15:32:09 CST Sender: LP-Mgr@SHSU.edu From: shf@netcom.com (Stuart Ferguson) Reply-To: LitProg@SHSU.edu, shf@NETCOM.COM Subject: Re: Reuse of LP code Message-ID: Date: Fri, 19 Nov 1993 17:33:28 GMT To: LitProg@SHSU.EDU +-- Mark.Probert@nms.otc.com.au (Mark Probert) writes: | When I code in "straight" C++, for instance, the class definition | is in the header and the implementation is in .cc file. But when I | use an LP tool, both of these are in the same file, as I believe it | should be. Now, at reuse time, I have either to use the generated | header, which may be "unreadable" (CWEB), or look at the web, which | has implementation details that I shouldn't see. I've been dealing with this two different ways. The simplest is just to organize the document for reuse with a chapter on the public interfaces and how to use them and other chapters on the implementation. The idea is to make the document readable by a client of the package without letting the details get in the way. In many OO systems it is considered normal for clients to look at the implementation too, so having it there may be good. Another approach would be to generate two different forms of your web -- one for the client and one for the maintainer. You might use "\if" or some other mechanism to generate a version of the document with only the public interfaces and no implementation. This is like the Eiffel short form, and has the advantage that the long form may contain public interfaces anywhere in the document which will be collected together for the client to see. -- Stuart Ferguson (shf@netcom.com) "Just Once or Twice .. is Good for your Soul" Ten weeks to Midnight. ================================================================================ Archive-Date: Fri, 19 Nov 1993 16:01:57 CST Sender: LP-Mgr@SHSU.edu From: preston@dawn.cs.rice.edu (Preston Briggs) Reply-To: LitProg@SHSU.edu, preston@DAWN.CS.RICE.EDU Subject: Re: A naive question: Is LP interactive and WYSIWYG? Message-ID: Keywords: interactive, literate, programming, wysiwyg Date: Fri, 19 Nov 1993 16:39:47 GMT To: LitProg@SHSU.EDU plessel@oz.rtpnc.epa.gov (Todd Plessel) writes: >Someone please tell me if I've misunderstood LP. (Or have LPers simply reached >a different conclusion: that it is worth the extra effort and that interactive >WYSIWYG is not really as important as I've claimed?) I need to tone down some of the bitterness that some might have leaked into my previous post. I don't think you've misunderstood LP; however, I don't think anyone's reached a conclusion either. Hmmm... I take it back, many of us have concluded many things, but we haven't reached a consensus as to exactly what's important, trivial, nice to have, too expensive, etc. Mostly, we're all still exploring the possibilities. Simpler systems are currently fairly popular because we can build them. Preston Briggs ================================================================================ Archive-Date: Fri, 19 Nov 1993 16:33:00 CST Sender: LP-Mgr@SHSU.edu From: norman@bellcore.com Reply-To: LitProg@SHSU.edu, norman@BELLCORE.COM Message-ID: <199311192228.RAA10957@mailee.bellcore.com> To: LitProg@SHSU.edu, preston@dawn.cs.rice.edu Subject: simple systems are popular because... Date: Fri, 19 Nov 93 17:28:51 -0500 > Simpler systems are currently fairly popular because we can build them. Not, I submit, because we can build them, but because we can understand them. Lots of people build complex tools before we got some of the simpler ones we have now. Norman Ramsey ================================================================================ Archive-Date: Fri, 19 Nov 1993 16:45:14 CST Sender: LP-Mgr@SHSU.edu From: norman@bellcore.com Reply-To: LitProg@SHSU.edu, norman@BELLCORE.COM Message-ID: <199311192240.RAA11080@mailee.bellcore.com> To: LitProg@SHSU.edu, dak@messua.informatik.rwth-aachen.de Subject: Re: A task nobody thought of, but all will embrace if done... Date: Fri, 19 Nov 93 17:40:08 -0500 > A debugger stepping through the *document* in the previewer, not through > the ugly WEB source. Actually this has been thought of a number of times. I'd consider a slightly different structure, though.: > \special{weblines: file.web 1512} Remember that source locations aren't just line numbers; they are line and column, so it might simply be better to have the \special mark a particular point of known interest (e.g. lcc `defpoints'), give xdvi the ability to highlight a point, then have something else do the mapping from source location (or object location) to defpoint. > Xdvi patchers, allow xdvi, when encountering such a line, to listen > to a tcp Port (this may be difficult...), and mapping requests > for files and lines by finding and displaying the appropriate > special location. I'd suggest rather than a tcp port you use the `send' facility of ousterhout's tk toolkit. tcl/tk was designed precisely with this sort of application in mind, and it should be fairly easy to include into gdb. adding it to xdvi might be more problematic, but tcl/tk dvi previewer would be a fine thing. You also might consider separating mappings object location -> defpoint -> display location having gdb perform the first mapping, some other tool (perhaps some simple tcl code) perform the 2nd mapping, and just send the display location to xdvi (e.g. in terms of dvi file, page, and xy coordinate). (N.B. source locations are essentially uninteresting until you want to edit, but there is also a defpoint -> source location mapping). Norman ================================================================================ Archive-Date: Fri, 19 Nov 1993 18:26:39 CST Sender: LP-Mgr@SHSU.edu From: norman@bellcore.com Reply-To: LitProg@SHSU.edu, norman@BELLCORE.COM Message-ID: <199311200019.TAA11782@mailee.bellcore.com> To: LitProg@SHSU.edu, kwerling@ISOIT034.BBN.HP.COM Subject: Re: NOWEB to nroff Date: Fri, 19 Nov 93 19:19:52 -0500 > I wonder if somebody of you tried to convert the output of the > markup program, coming with the noweb package, to nroff. I'm not a troff user, but if you send me a sample file giving me some idea what the troff ought to look like, I'll try. Norman ================================================================================ Archive-Date: Fri, 19 Nov 1993 19:49:38 CST Sender: LP-Mgr@SHSU.edu From: mcguire@cs.utexas.edu (Tommy Marcus McGuire) Reply-To: LitProg@SHSU.edu, mcguire@CS.UTEXAS.EDU Subject: Re: Reuse of LP code Date: 19 Nov 1993 19:02:40 -0600 Message-ID: <2cjqbh$48e@needmore.cs.utexas.edu> To: LitProg@SHSU.EDU In article <17625278@mvb.saic.com>, Mark Probert wrote: [...] >Now, at reuse time, I have either to use the generated >header, which may be "unreadable" (CWEB), or look at the web, which >has implementation details that I shouldn't see. [...] >mark. (probertm@nms.otc.com.au) ph: (02) 339 3953 fax: (02) 339 3688 Do you by any chance read the last page of a mystery novel first? :-) ----- Tommy McGuire mcguire@cs.utexas.edu mcguire@austin.ibm.com "...I will append an appropriate disclaimer to outgoing public information, identifying it as personal and as independent of IBM...." ================================================================================ Archive-Date: Sat, 20 Nov 1993 03:28:52 CST Sender: LP-Mgr@SHSU.edu Date: Sat, 20 Nov 93 10:17:39 +0100 From: dak@POOL.Informatik.RWTH-Aachen.DE Reply-To: LitProg@SHSU.edu, dak@POOL.INFORMATIK.RWTH-AACHEN.DE Message-ID: <9311200917.AA05677@messua> To: norman@bellcore.com CC: LitProg@SHSU.edu Subject: Re: A task nobody thought of, but all will embrace if done... The Tcl/Tk interface sounds like a reasonable idea for passing line numbers from a debugger to some other program, but is it not very X-specific? I mean, fine for xdvi, but probably for other potential application a more generally usable source location indicating interface might be desirable, and the more an extension might be of use, probably the more it will get used. Another possibility is filtering gdb's output for line number information. I believe this is the way gdb under emacs works, and is of course a pretty easy way. All the best, David Kastrup dak@pool.informatik.rwth-aachen.de Tel: +49-241-72419 Fax: +49-241-79502 Goethestr. 20, D-52064 Aachen David Kastrup dak@pool.informatik.rwth-aachen.de Tel: +49-241-72419 Fax: +49-241-79502 Goethestr. 20, D-52064 Aachen ================================================================================ Archive-Date: Sat, 20 Nov 1993 16:42:09 CST Sender: LP-Mgr@SHSU.edu From: shf@netcom.com (Stuart Ferguson) Reply-To: LitProg@SHSU.edu, shf@NETCOM.COM Subject: Re: featurism, complexity, portability, and extensibility (Was: Which Message-ID: Date: Sat, 20 Nov 1993 21:46:57 GMT To: LitProg@SHSU.EDU mcguire@cs.utexas.edu (Tommy Marcus McGuire) writes: | Are you sure you really want case insensitivity? I know I'd wind up with | , , , etc., running all through | the program. I guess I wasn't clear. The weaver would pick a single string to represent the code tag and use that consistently throughout the final document. It could pick the first complete reference to a tag as the canonical form, or the one with the most uppercase characters, or whatever. The tangler would treat all the above identifiers as the same and generate code (or errors) appropriately. | That would tend to make regular expression searches while | editing the thing useless, not to mention confusing the heck out of | anyone reading the final document and wondering why these case distinctions | keep showing up. The readable document would only contain one form for any identifier. I don't know about all editors, but emacs certainly has a switch for case- folding while searching. My desire to ignore case comes from reading too much of other peoples code with different variables all in the same routine called `doall,' `doAll,' `doALL,' etc. (I'm not making this up.) If case is significant, some literate but noncreative programmer will use it. | Personally, I am pretty ambivalent about using the ``...'' completion for | [chunk|fragment|scrap] names. I can see where someone else might like | it, but I don't use it. These seemed like a can of worms when I first saw them too, but with sufficiently good error messages I have never found them to be a problem. Completion may even be a good thing since it encourages long refinement names, and it also encourages puting the most salient info toward the front of the name. -- Stuart Ferguson (shf@netcom.com) "Just Once or Twice .. is Good for your Soul" Ten weeks to Midnight. ================================================================================ Archive-Date: Sat, 20 Nov 1993 17:25:09 CST Sender: LP-Mgr@SHSU.edu From: shf@netcom.com (Stuart Ferguson) Reply-To: LitProg@SHSU.edu, shf@NETCOM.COM Subject: Re: Ordering Dependencies and Scoping Message-ID: Date: Sat, 20 Nov 1993 22:46:55 GMT To: LitProg@SHSU.EDU mcguire@cs.utexas.edu (Tommy Marcus McGuire) writes: | >Stuart Ferguson wrote [Ordering Dependencies]: | >>One problem that I am noticing is that of final ordering of elements | >>in the output program text. Like most one pass compilers, C requires | >>that objects be declared before they are used. This lends a decidedly | >>"bottom-up" quality to raw C code. I am finding that my literate | >>programs tend to be more "top-down," with declarations of higher level | >>objects before the lower level components which they require. The | >>problem is that if I use some generic refinement like << Public Data | >>Types >> to collect up my typedef's, for example, then the objects | >>are declared in the wrong order for the compiler. | Pardon me for being terribly dense today, but is this a non-problem? | If type Foo depends on the definition of type Bar, shouldn't there | be a scrap | | <>= | | There seems to be a lot of confusion about what I was trying to say, so I suppose I should clarify. Yes, of course you can explicitly put the declarations in the right order and it will work. So there is no "problem" in the sense that work has stopped because something is not possible. However, when I do this I get a twinge from my finely tuned sense of "rightness." It seems wrong that I have to encode the dependency order in this way. Of course, I get this same feeling every time I program in C. Any good language would allow use before definition, but since C does not, I always have to jump through hoops getting valid concepts to run through the compiler. I've long since learned to ignore the mental warnings I get when programming in C, and it may be that I'm just seeing them anew when attempting literate C programming. But I think I can make a case for the problem being in the literate programming domain and not just the target language. Most webs allow code chunks with the same identifier, and the code from all the chunks is collected together to form a single refinement of the same name. The code is ordered in the refinement in the same order that it occurs in the document. It seems to me that sometimes the order is conceptually important and sometimes it is not. If the refinement represents some linear process, like a series of steps, then the order is important. In this case I would argue that the chunks with the same name will for very natural reasons be together in the prose and will be in the right order. "First we do step 1." <>= Step #1 "Now we do the next step, which is 2." <>= Step #2 "Finally we do the third step." <>= Step #3 It would never make sense to cut out step two and paste it into another section since that would take it out of context. So we don't generally have to worry about the steps getting out of order as result of editing the prose. On the other hand, some refinements which have the same name are just used to collect things of similar type and are conceptually order independent. Code chunks for <>, <> and <> will be strewn throughout the web source willy nilly, used whenever a new thing of that type is to be inserted into the output code. When the reader encounters a chunk like <>= #include he is not concerned with what comes before or after this chunk in the refinement. The chunk is stand-alone in that it declares only what type of code the chunk represents, not its order in any sequence. If the web is complex, there may be many sections each with many such chunks, and each section is semi-independent in that it could very easily be moved to make the prose read better. The problem is that even though this type of chunk is conceptually order independent, it is actually order dependent, since the code will be generated in the order it's found in the web. So, if A depends on B, and B comes first in the document, the generated code will compile. If, due to a conceptual restructuring of the web, A is moved to before B, then the generated code will not compile. Now the person who was just making the web read better has to write "glue" code to skick B back in front of A in the code sequence. And where does this tacky glue stuff go anyway? Is it part of the section on A, or the section on B? What if a third thing depends on A or B -- now where does the glue belong? I would find it conceptually cleaner to allow code chunks to declare their dependencies and be truely independent of the order they occur in the web. We could have: <>= typedef {... B C } A; <: defines A and depends on B and C :> <>= typedef {... C } B; <: defines B and depends on C :> <>= typedef {...} C; <: defines C :> These three chunks could be anywhere in the document in any order and if the <> refinement had the right behavior associated with it, then the chunks which define it would be shuffled into C B A order, which will compile. Even better, if a new type was added it would be shuffled into the sequence correctly and none of the other parts of the web would be affected. I hope this is more clear now. I think this is really a literate programming problem since it is about making the description of the code clear and elegant and not just about hacking something together that works. -- Stuart Ferguson (shf@netcom.com) "Just Once or Twice .. is Good for your Soul" Ten weeks to Midnight. ================================================================================ Archive-Date: Sun, 21 Nov 1993 03:34:58 CST Sender: LP-Mgr@SHSU.edu Date: Sun, 21 Nov 1993 02:25:13 -0500 (EST) From: j_mcarthur@BIX.com Reply-To: LitProg@SHSU.edu, j_mcarthur@BIX.COM Subject: Ordering Dependencies and Scoping To: litprog@shsu.edu Message-ID: <9311210225.memo.46670@BIX.com> Content-Transfer-Encoding: 7BIT Stuart Ferguson writes: >I would find it conceptually cleaner to allow code chunks to declare >their dependencies and be truely independent of the order they occur >in the web. We could have: > > <>= > typedef {... B C } A; > <: defines A and depends on B and C :> The original Pascal WEB has this feature. It understands Pascal and orders the declarations in such a way that simple dependancies are resolved by tangle. If the dependancy is circular, it needs help. All in all, the original Pascal WEB is not that bad of a language to use. Far from perfect. Many of its flaws are do to the nature of Pascal. ---- Jeffrey M\kern-.05em\raise.5ex\hbox{\b c}\kern-.05emArthur a.k.a. Jeffrey McArthur ATLIS Publishing phone: (301) 210-6655 12001 Indian Creek Court fax: (301) 210-4999 Beltsville, MD 20705 email: j_mcarthur@bix.com ================================================================================ Archive-Date: Sun, 21 Nov 1993 15:41:52 CST Sender: LP-Mgr@SHSU.edu From: Mark.Probert@nms.otc.com.au (Mark Probert) Reply-To: LitProg@SHSU.edu, Mark.Probert@NMS.OTC.COM.AU Message-ID: <9311212142.AA17033@ra.pad.otc.com.au> Subject: Re: Reuse of LP code To: LitProg@SHSU.edu, mcguire@cs.utexas.edu Date: Mon, 22 Nov 93 8:42:29 GMT Tommy Marcus McGuire... > > Do you by any chance read the last page of a mystery novel first? :-) > I'm one of those sick individuals that reads from front to back, with no peeking. Sad, isn't it? :-) -- mark. (probertm@nms.otc.com.au) ph: (02) 339 3953 fax: (02) 339 3688 ================================================================================ Archive-Date: Sun, 21 Nov 1993 16:04:03 CST Sender: LP-Mgr@SHSU.edu Date: Sun, 21 Nov 1993 23:02 +0000 (GMT) From: "Eric W. van Ammers, LUW, tel: (+31)8370-83356" Reply-To: LitProg@SHSU.edu, AMMERS@RCL.WAU.NL Subject: Re: A naive question: Is LP interactive and WYSIWYG? To: LitProg@SHSU.edu Message-ID: <01H5LEQ7S5U8AEL5U0@RCL.WAU.NL> Content-Transfer-Encoding: 7BIT Lee Wittenberg writes in reply to "plessel@oz.rtpnc.epa.gov" [text omitted] =There are 2 WYSIWYG LP environments that I know of. WinWordWEB is a =collection of Word for Windows macros that support literate =programming in that <> word processor. A =a FrameMaker-based system was recently announced as well. I would like to add CLiP to this list. It works with any word-processor (WYSIWYG of conventional). It is designed to work in a hypertext environment also (but we have no experience here yet). Eric ============================================================================ Eric W. van Ammers Department of Computer Science Wageningen Agricultural University Dreijenplein 2 E-mail: ammers@rcl.wau.nl 6703 HB Wageningen voice: +31 (0)8370 83356/84154 The Netherlands fax: +31 (0)8370 84731 ============================================================================ ================================================================================ Archive-Date: Sun, 21 Nov 1993 22:17:12 CST Sender: LP-Mgr@SHSU.edu Date: Sun, 21 Nov 93 23:15:53 EST From: Lee Wittenberg Reply-To: LitProg@SHSU.edu, leew@PILOT.NJIN.NET To: LitProg@shsu.edu, AMMERS@rcl.wau.nl Subject: Re: A naive question: Is LP interactive and WYSIWYG? Message-ID: Eric W. van Ammers writes: > Lee Wittenberg writes in reply to "plessel@oz.rtpnc.epa.gov" > > [text omitted] > > =There are 2 WYSIWYG LP environments that I know of. WinWordWEB is a > =collection of Word for Windows macros that support literate > =programming in that <> word processor. A > =a FrameMaker-based system was recently announced as well. > > I would like to add CLiP to this list. It works with any word-processor > (WYSIWYG of conventional). It is designed to work in a hypertext environment > also (but we have no experience here yet). Mea culpa. I apologize to Eric. I do know about CLiP, and while I don't use it myself, I did know that it is word-processor independent and should, therefore, belong in the WYSIWYG list. I just forgot. I guess my only excuse is that I don't tend to think highly of WYSIWYG web systems (no flames, please: as the author of WinWordWEB, I'm allowed to disparage my own product), but I do think rather highly of CLiP :-). -- Lee leew@pilot.njin.net ================================================================================ Archive-Date: Mon, 22 Nov 1993 00:40:54 CST Sender: LP-Mgr@SHSU.edu From: system@galcon.ersys.edmonton.ab.ca (The Doctor) Reply-To: LitProg@SHSU.edu, system@GALCON.ERSYS.EDMONTON.AB.CA Subject: Re: Anybody using PowerBuilder from PowerSoft? Yes? Questions... Message-ID: <931120.090645.1K3.rusnews.w165w@galcon.ersys.edmonton.ab.ca> Date: Sat, 20 Nov 1993 09:06:45 MST To: LitProg@SHSU.EDU smclewin@ultrix.ramapo.edu (Scott M McLewin) writes: > My company is looking to re-write a vertical market application using > PowerBuilder. We presently use C and the Raima Data Manager (RDM) from > Raima Corp for the product. I know PowerBuilder can sit on the > RDM engine through ODBC, but would like to know what database you would > reccomend to attach to PowerBuilder via ODBC. > > Our constraints are as follows: > * We need our application to work both on single user systems and networks. > * We would preferr a database engine with royalty free distribution > > Some other questions I would love to have answered: > * Is PowerBuilder a good development tool? > - what are its strengths? > - what are its weaknesses? > * How is the PowerBuilder documentation? Have you had questions you > simply could not answer via the manuals? > * Is PowerSoft a "good" company? (I know, a rather vague question...) > - How is their technical support? > + responsive/"we'll call you back next month"? > + well informed? > - How frequently, if ever, do they make software patchs available? > - Are they willing to share their known bugs with developers so we > can avoid getting snagged by them? > * Would you consider the SQL/database query tool included in the > database you use to be good? For exaple, any Raima user who has > attempted to use db_Query knows it is full of "features" its > creators never intended. Powerbuilder needs an SQL Server to work with, Gupta SQLBase, Oracle, XDB, Sybase, HP, otherwise you are OOL. > > > I am truly sorry if this message does not belong in this group. I > was unable to find a group dedicated to PowerSoft products, so I tried > to place this message in a wide variety of programming groups. Please > don't waste further bandwidth by flaming me or those silly folks who may > have already flamed me. Thanks. > > In addition to posting your reply, please email me a carbon > copy as I may not have a chance to catch all replies in all groups. > > Thanks, > > Scott M McLewin > smclewin@ultrix.ramapo.edu > > > -- > > > Scott M McLewin smclewin@ultrix.ramapo.edu > -- God save the Queen! God bless and save us all!! Remeber, Jesus saves all souls from eternal damnation! Save the world! Purge Republicanism and Dictatorship! A British citizen I was born, A British citizen I will most honourably die! ================================================================================ Archive-Date: Mon, 22 Nov 1993 04:11:00 CST Sender: LP-Mgr@SHSU.edu From: rryan@panix.com (Rob Ryan) Reply-To: LitProg@SHSU.edu, rryan@PANIX.COM Subject: Re: Anybody using PowerBuilder from PowerSoft? Yes? Questions... Date: 22 Nov 1993 04:39:31 -0500 Message-ID: <2cq1cj$cjn@panix.com> To: LitProg@SHSU.EDU In <931120.090645.1K3.rusnews.w165w@galcon.ersys.edmonton.ab.ca> system@galcon.ersys.edmonton.ab.ca (The Doctor) writes: >Powerbuilder needs an SQL Server to work with, Gupta SQLBase, Oracle, >XDB, Sybase, HP, otherwise you are OOL. PowerBuilder v3.0 comes with its own DBMS, Watcom SQL, doesn't it? Incidentally, "SQL Server" is a particular DBMS from Microsoft (I believe that it runs under OS/2 and, more recently, NT), not necessarily a generic term. ================================================================================ Archive-Date: Mon, 22 Nov 1993 10:25:25 CST Sender: LP-Mgr@SHSU.edu Date: 22 Nov 93 11:21:05 EST From: Reply-To: LitProg@SHSU.edu, PJENSEN@CSI.COMPUSERVE.COM To: Subject: Re: Ordering Dependencies and Scoping Message-ID: Stuart Ferguson (shf@netcom.com) writes: > Any good language would allow use before definition, but since C does not, > I always have to jump through hoops getting valid concepts to run through > the compiler. Hear, hear! This comment was apropos of the need to order type definitions properly, but another instance is that of prototypes. I am currently using CWEB, and am sorely tempted to hack on it so that ctangle notices function definitions and constructs matching prototypes, which would then get emitted at a designated point in the output. I see this enhancement as analogous to the ways in which Knuth's original made up for certain deficiencies of standard Pascal. ================================================================================ Archive-Date: Mon, 22 Nov 1993 10:26:54 CST Sender: LP-Mgr@SHSU.edu From: jacojn@inet.uni-c.dk (Jacob Nielsen) Reply-To: LitProg@SHSU.edu, jacojn@INET.UNI-C.DK Subject: Literate programming on WWW, where ? Date: Mon, 22 Nov 1993 17:48:40 GMT Message-ID: To: LitProg@SHSU.EDU Hi, does anyone have the 'URL' of the literate programming page at CERN (info.cern.ch). It's not that easy to find :-( Thanx, Jacob -- Jacob Nielsen Email: jacojn@inet.uni-c.dk (my private account) or bc898574@bbar.dth.dk (my account at the university) ================================================================================ Archive-Date: Mon, 22 Nov 1993 11:01:01 CST Sender: LP-Mgr@SHSU.edu From: rkeel@fnugget.intel.com (William R Keel) Reply-To: LitProg@SHSU.edu, rkeel@FNUGGET.INTEL.COM Subject: Re: Anybody using PowerBuilder from PowerSoft? Yes? Questions... Date: 22 Nov 93 16:13:05 GMT Message-ID: To: LitProg@SHSU.EDU rryan@panix.com (Rob Ryan) writes: >In <931120.090645.1K3.rusnews.w165w@galcon.ersys.edmonton.ab.ca> system@galcon.ersys.edmonton.ab.ca (The Doctor) writes: >>Powerbuilder needs an SQL Server to work with, Gupta SQLBase, Oracle, >>XDB, Sybase, HP, otherwise you are OOL. >PowerBuilder v3.0 comes with its own DBMS, Watcom SQL, doesn't it? yes. It's a SQL type DBMS that runs locally on your machine (is it only in Windows?) >Incidentally, "SQL Server" is a particular DBMS from Microsoft (I >believe that it runs under OS/2 and, more recently, NT), not >necessarily a generic term. SQL Server is one of those combination efforts. Both Sybase and Microsoft have put their name to basically the same product. I don't know if MS did any work on it or if they just licensed the product from Sybase. But true...it's not a generic term (like Kleenex). Reed +----------------------------+-[mail]-------------------------------------+ | "I didn't do it...nobody | unix: rkeel@fnugget.intel.com | | saw me do it...you can't | pc: william_r_keel@ccm.hf.intel.com | | prove anything!" - Bart | Intel Corp. Memory Components - Folsom, CA | +-[disclaimer]---------------+--------------------------------------------+ | Intel had absolutely nothing to do with the content of this message. | +-------------------------------------------------------------------------+ ================================================================================ Archive-Date: Mon, 22 Nov 1993 12:16:10 CST Sender: LP-Mgr@SHSU.edu From: mauer@mcs.anl.gov (Andrew Mauer) Reply-To: LitProg@SHSU.edu, mauer@MCS.ANL.GOV Subject: Literate Scoping of Scrap Names Message-ID: Date: Mon, 22 Nov 1993 16:42:20 GMT To: LitProg@SHSU.EDU >>>>> On Thu, 18 Nov 93 20:32:46 -0500, koopman@sgi84.ctc.com (Michael G. Koopman) said: >| I like all my C files to have the same basic format. Why do I have >| to rename all the sections in the top-level template when I apply it to >| a new module. This is unneeded work and it's error prone. > >This ties into one of the ideas I've had which I posted here recently, >about boilerplate and literate macros. If your web tool had text >substitution macros which could be instantiated forward and backwards, >you would only need to define your template once and could envoke it >with a different module name for each instance. This would obviate >the need for scoping in this case. Michael> I would add support for module name tagging of macros and other web Michael> variable entries to (fully?) obviate scoping. IMHO, this is an excellent idea. I'm interested in hearing the advantages/disadvantages of allowing a user to specify a the module by doing: @module << C++Class >> or maybe @scope << C++Class >> It seems to me that in the spirit of WEB delimiting of text and program scraps, one would not need to support more than one level of scoping, and a scope should just go on until the next scope is encountered. What is the real-life situation here? Does anybody have a code that they think needs nested scoping? I agree that it would be more elegant, but for c/c++ (my area), the program structure does not nest enough for that to be likely. I gather that in scheme or other languages which support prodecures-within-procedures this could be important, but is that good style?!? /Andrew/ -- /Andrew Mauer/ mauer@mcs.anl.gov ================================================================================ Archive-Date: Mon, 22 Nov 1993 14:21:34 CST Sender: LP-Mgr@SHSU.edu Date: Mon, 22 Nov 1993 14:18:45 CST From: "George D. Greenwade" Reply-To: LitProg@SHSU.edu, bed_gdg@SHSU.EDU To: tomas@cae.wisc.edu CC: ctan@SHSU.edu, litprog@SHSU.edu Message-ID: <00975ECA.F42CF1E0.15852@SHSU.edu> Subject: CWEB (3.1) for Amiga on the CTAN On Sun, 21 Nov 93 17:55:14 CST, Tomas Willis posted: > I have uploaded CWEB 3.1 for Amiga to the incoming area > in a subdir named AmigaCWEB. > The files are AmigaCWEB_31.readme, an explanatory text file in Aminet format > and AmigaCWEB_31.lha, a LHA-compressed archive file, the standard Amiga > archiver. Thank you for the submission. I have moved the files into the directory /tex-archive/web/c_cpp/AmigaCWEB_31/ on the CTAN hosts at ftp.SHSU.edu and ftp.Uni-Stuttgart.de (I was unable to get connections to deposit it at ftp.TeX.ac.uk, but feel sure it will be mirrored there sometime soon). Three comments on this (and, please, if you're going to flame on any of this, please do so directly to me and not the list/newsgroup). First, the web/c_cpp directory is where the C and C++ web-type files are placed; since "+" can be a tricky file/directory name on more than a few platforms, the CTAN uses this convention for portability reasons. Second, I placed this file outside of web/c_cpp/cweb intentionally as that hierarchy is a mirror of the authoritative CWEB files at labrea. Third, and finally (and no flame at Tomas nor anyone else -- I've yet to mention this publicly), please consider using lowercase alphanumeric names for files and (especially!) directories whenever possible (a tertiary-level reason why this isn't directly in the web/c_cpp/cweb/ directory). Lowercase alphanumerics (plus "_" and "-" which seem to be acceptable on every OS for filename purposes -- at least no one's told me differently so far) are an awful lot more portable in design (ideally 8+3 filenames, but I won't get into that as it's secondary or lower in importance to character selection). Regards to all and again my thanks to Tomas, George %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% George D. Greenwade, Ph.D. Bitnet: BED_GDG@SHSU Department of Economics and Business Analysis THEnet: SHSU::BED_GDG College of Business Administration Voice: (409) 294-1266 P. O. Box 2118 FAX: (409) 294-3612 Sam Houston State University Internet: bed_gdg@SHSU.edu Huntsville, TX 77341 bed_gdg%SHSU.decnet@relay.the.net %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ================================================================================ Archive-Date: Mon, 22 Nov 1993 16:23:17 CST Sender: LP-Mgr@SHSU.edu From: marcus@x4u2.desy.de (Marcus Speh) Reply-To: LitProg@SHSU.edu, marcus@X4U2.DESY.DE Subject: Re: Literate programming on WWW, where ? Message-ID: Date: Mon, 22 Nov 1993 20:59:15 GMT To: LitProg@SHSU.EDU >>>>> "Jacob" == Jacob Nielsen writes: Jacob> Hi, does anyone have the 'URL' of the literate programming page Jacob> at CERN (info.cern.ch). It's not that easy to find :-( "The literate programming page at CERN" is in fact from DESY :-) URL is http://info.desy.de/user/projects/LitProg.html Due to a server change at DESY, the link from CERN is disabled until CERN fixes the URL. It is hidden in "Subjects"->"Computing"->"Languages". -- ----------------------------------------------------------------------------- Marcus Speh, II.Inst.Theor.Physik,Luruper Chaussee 149, 22761 Hamburg,Germany Phone: +49-40 8998 2178, Fax: +49-40 8998 2267, Private: +49-40 801392 Email: ================================================================================ Archive-Date: Mon, 22 Nov 1993 16:52:48 CST Sender: LP-Mgr@SHSU.edu From: erawlins@sybase.com (Eric Rawlins) Reply-To: LitProg@SHSU.edu, erawlins@SYBASE.COM Subject: Re: Anybody using PowerBuilder from PowerSoft? Yes? Questions... Message-ID: Date: Mon, 22 Nov 1993 15:42:38 GMT To: LitProg@SHSU.EDU In article <2cq1cj$cjn@panix.com> rryan@panix.com (Rob Ryan) writes: >In <931120.090645.1K3.rusnews.w165w@galcon.ersys.edmonton.ab.ca> system@galcon.ersys.edmonton.ab.ca (The Doctor) writes: > >>Powerbuilder needs an SQL Server to work with, Gupta SQLBase, Oracle, >>XDB, Sybase, HP, otherwise you are OOL. > >PowerBuilder v3.0 comes with its own DBMS, Watcom SQL, doesn't it? >Incidentally, "SQL Server" is a particular DBMS from Microsoft (I >believe that it runs under OS/2 and, more recently, NT), not >necessarily a generic term. "SQL Server" is the name of Sybase's RDBMS, which is licensed to Microsoft for the OS/2 and Windows environments. -- ------------------------------------------------------------------- Eric Rawlins erawlins@sybase.com Sybase, Inc. 510-596-4657 -------------------------------------------------------------------- ================================================================================ Archive-Date: Tue, 23 Nov 1993 05:43:57 CST Sender: LP-Mgr@SHSU.edu From: c21vc@kocrsv01.delcoelect.com (Venkataraman Chandrasekhar) Reply-To: LitProg@SHSU.edu, c21vc@KOCRSV01.DELCOELECT.COM Subject: WYSIWYG LP environments Message-ID: <1993Nov22.165700.27010@kocrsv01.delcoelect.com> Date: Mon, 22 Nov 1993 16:57:00 GMT To: LitProg@SHSU.EDU At this time we (Ron Peithman and I) here at Delco Electronics have (at least the beginnings) two LP environments, for devloping Perl literate programs: 1. The first uses the '-x' feature of Perl. Very detailed annotations may be provided at the start of each Perl file without marking these as comments (using the '#' character). At run time, the '-x' option performs the simple tangle of processing only the lines following the perl invocation line. Please contact me if you need more details. (Larry Wall the author of Perl pointed this to me.) This alone will go a long way (for us) in writing understandable programs. However, very little 'weave' features will be available. 2. The second uses Interleaf to create Perl source programs. Jonathan Starr who performs independent consulting in Interleaf provided some code which makes tangle possible. There may be other less elegant ways too. Weave is done using the effectivity option or the select and copy features. Of the two, clearly the Interleaf method is superior since good formatting of text can be achieved; table of contents, index etc. can be achieved without writing a post processor. What I have heard of Interleaf (regarding ease of learning and ease of use) makes me want to try the Perl way first. It is time to try writing some understandable programs now. This in passing: sometimes people ask those who spend time worrying about the 'great unwashed', 'what have the great unwashed done for you lately ?' I cannot help thinking of this. Recently, I was talking to one of my users (who might be modifying some of my programs) and saying that the programs he will be getting will be more understandable. Not really being used to this luxury, he didn't seem to be expecting much. Also, it is possible that he would almost be disappointed if his work was made very easy. (I remember reading that some food product did not sell well because it was ready to eat; there was no place for the housewife to perform say 5% of the work and claim credit for the whole thing; they had to make it only 95% readymade). As Cox points out in his book Object Oriented Programming, unless the extra work done in software towards whatever purposes (make it more maintainable, etc.) is appreciated, there is little incentive to do these. None of these take away from my interest and determination to write understandabel programs employing the book paradigm; but it will be nice to be appreciated. You may run into the great unwashed taking your work for garnted. Shaker ================================================================================ Archive-Date: Wed, 24 Nov 1993 03:36:18 CST Sender: LP-Mgr@SHSU.edu From: epasos@sfsuvax1.sfsu.edu (Enrique Pasos) Reply-To: LitProg@SHSU.edu, epasos@SFSUVAX1.SFSU.EDU Subject: Enfin.. Message-ID: <1993Nov24.083902.1182@csus.edu> Date: Wed, 24 Nov 1993 08:39:02 GMT To: LitProg@SHSU.EDU I am curious if anyone is using Easel's Enfin product. I use it at work but haven't run into anyone else who uses it. I'm just curious to know what others are doing with it. --- Henry Pasos (epasos@sfsuvax1.sfsu.edu) ================================================================================ Archive-Date: Wed, 24 Nov 1993 03:58:57 CST Sender: LP-Mgr@SHSU.edu From: Walter Ravenek Reply-To: LitProg@SHSU.edu, ravenek@CHEM.VU.NL Subject: Re: nuweb for macintosh Message-ID: <1993Nov24.091104.26071@cca.vu.nl> Date: Wed, 24 Nov 1993 09:11:04 GMT To: LitProg@SHSU.EDU John, and anyone wanting to install nuweb on the Macintosh. Get the latest version of nuweb, currently 0.87. Then make the following changes: - file main.c - add after line 1: #include - file main.c - replace line 6: int arg = 1; - by int arg; argc = ccommand(&argv); arg = 1; - file output.c - replace lien 10: char *temp_name = tempnam(".", 0); - by char *temp_name = tmpnam(NULL); Hope this helps, ================================================================================ Archive-Date: Wed, 24 Nov 1993 11:36:36 CST Sender: LP-Mgr@SHSU.edu Date: Wed, 24 Nov 93 12:35:40 EST From: Lee Wittenberg Reply-To: LitProg@SHSU.edu, leew@PILOT.NJIN.NET To: LitProg@shsu.edu Subject: [Paul Ceruzzi : Software Archives Report] Message-ID: The following came in on a ``History of Computing'' discussion group that I subscribe to. I think the idea of software archives is particularly interesting w/r/t literate programs, and all you LP'ers out there might be interested. -- Lee leew@pilot.njin.net --------------- Received: from vtbit.cc.vt.edu by pilot.njin.net (5.59/SMI4.0/RU1.5/3.08) id AA04606; Wed, 24 Nov 93 10:44:15 EST Message-Id: <9311241544.AA04606@pilot.njin.net> Received: from UMDD.UMD.EDU by VTBIT.CC.VT.EDU (IBM VM SMTP V2R2) with BSMTP id 8306; Wed, 24 Nov 93 10:39:22 EST Received: from UMDD.UMD.EDU by UMDD.UMD.EDU (Mailer R2.10 ptf000) with BSMTP id 9382; Wed, 24 Nov 93 10:39:21 EST Date: Wed, 24 Nov 1993 09:11:08 -0500 Reply-To: History of Computing Issues Sender: History of Computing Issues From: Paul Ceruzzi Subject: Software Archives Report To: Multiple recipients of list SHOTHC-L This came from David Allison. He welcomes comments privately, or you may post your comments on this list. *** Forwarding note from . --. 11/23/93 18:42 *** Return-Path: <@SIVM.SI.EDU:dkallison@AOL.COM> Received: from SIVM (NJE origin SMTP@SIVM) by SIVM.SI.EDU (LMail V1.1d/1.7f) with BSMTP id 9792; Tue, 23 Nov 1993 18:42:26 -0500 Received: from mailgate.prod.aol.net by SIVM.SI.EDU (IBM VM SMTP V2R2) with TCP; Tue, 23 Nov 93 18:42:25 EST Received: by mailgate.prod.aol.net (1.37.109.4/16.2) id AA18334; Tue, 23 Nov 93 18:23:16 -0500 From: dkallison@aol.com X-Mailer: America Online Mailer Sender: "dkallison" Errors-To: Reply-To: Message-Id: <9311231823.tn238487@aol.com> To: nasem001@sivm.si.edu Date: Tue, 23 Nov 93 18:23:10 EST Subject: Software Archives Report Following is the report for the meeting of the software archives planning group. I'd like to get any comments those of you who participated might have. Paul Ceruzzi: I'd also like to get the comments of the people in your list-serve. I don't know exactly how to get the report on the system, so I'd appreciate it if you would put it out for comment. Thanks for the help. You can reach me at this America on-line address or also at mahcis01@sivm.si.edu _____ National Software Archives: Exploring the Concept Early in 1993, several representatives of major historical and cultural organizations met with American software companies to discuss the need for a "National Software Archives." The discussion began with a simple reflection: Software is unquestionably among the most important contributions of recent generations to the history of mankind. Yet little thought or effort has been devoted to how it should be preserved for both short and long-term purposes. Resolving this issue is important to corporations that create software. America is the premier producer of software for the global market, and these corporations need to know how to fulfill their responsibilities to maintain appropriate records. Before a nation-wide a rchives is established, there are many questions to answer. Among them: - What fraction o f software and supporting records should be saved? - What preservation standards should be adopted? - Should manuals and marketing materials be preserved ? What about videotapes or other media? - Where would the archives reside? - How will the archives be catalogued? - How would the archives be used? On October 15-16, 1993, a second meeting of representatives of major organizations was held in Seattle to discuss the formal establishment of a National Software Archives. Institutions participating included: The Smithsonian Institution, the Library of Congress, The Annals of the History of Computing, Stanford University, Microsoft, Apple Computer, Hewlett Packard, and Word Perfect. Other institutions and corporations had previously expressed strong interest in the project, but were unable to attend this initial meeting. Those attending the meeting agreed on a number of significant points. Th ey are: conclusions. Among them - A "National Software Archives" should be established. - The Archives should not reside in a single institution, but have elements housed in many different organizations, including software producing companies, universities, libraries, cultural organizatio ns, and museums. - A National reviewing body would be formed that included representatives of cultural and historical organizations, universities, industry associations, information technology companies, and appropriate small firms or individuals. This group would establish standards for the collection, review and select potential submissions, and review management of existing items in the collection. The body would meet at least once a year. - One institution should serve as the coordinating institution for the project, and at least one full-time staff person should be hired to work on the project. This person should be involved in both educating participants and potential participants on the project and the procedures and standards necessary for participation. The person should also be in charge of cataloging official entries into the collection. Funding for the position might come from contributio ns of participants in the project or from grant funding. - The first area of focus would b e microcomputer software from US based corporations. - The National Software Collection would include only those software materials deemed to have very long-term or permanent significance to Software companies, the Information Technology Industry, or the History of the United States - An appealing marking system would be developed for identifying items that had been accessioned in the national software archive. This marking, and the associated product names, would be made suitable for display in corporations who participated in the project and whose products had been selected for inclusion in the collection. The marking would also be put on storage boxes or other media holding the materials included in the collection to distinguish the items from general corporate record materials. - The Collection would begin with core software materials, such as source code, compilers, make files, and actual products. However it would also include supporting materials. These include (where possible) hardware on which the software could be run (recognizing that the active life of hardware will probably be much shorter than that of the software); contextual materials, such as rights and contracts, development files and electronic mail documents, management and administrative information, and business plans; and collateral materials, such as manuals, support records, packaging, promotional materials, and oral and vide o histories with principal participants. - Setting standards and procedures for catalogi ng and managing the collection should be a collaborative endeavor. - The collection should be cataloged in an existing national bibliographic database, such as RLIN or OCLC, that is readily accessible to both participants and researchers. Cataloging conventions should follow current professional standards where possible (i.e. MARC standards), and new standards should be developed where required in conjuncti ons with current national efforts. - Cataloging in the collection would be on different levels: collection, sub-collection, and item levels. Most entries would be only bibliographic in nature, but some would include full text of items. Examples are general descriptions of the software or major fe atures, as might appear in press releases or general reports. - Access to some portions of the archives should be restricted for proprietary reasons. Obviously many questions remain to be answered. The group realized that resolving even the major issues will take several years. However all agreed that a start on the project should be made, and development of procedures and standards evolved incrementally. At the conclusion of the Seattle meeting, the participants agreed on a series of subsequent acti ons. They were: - To open the idea of a National Software Archives for discussion over th e Internet - To gather additional comments on the ideas above through circulation of this report to many individuals and soliciting comment - To explore details related to staffing the project a nd cataloging the entries with the appropriate parties - To ask respected experts to begin compilin g lists of potential software materials that should be included in the National Collection - To plan a Spring Meeting at the Smithsonian Institution in Spring 1994 to develop the idea further, and to broaden attendance at this meeting to a larger spectrum of interested parties - To use the Spring meeting and the period following to develop specific plans for funding implementing the National Software Archives, with a planned start-up date of early 1995 ================================================================================ Archive-Date: Wed, 24 Nov 1993 11:39:05 CST Sender: LP-Mgr@SHSU.edu Date: Wed, 24 Nov 93 12:38:12 EST From: Lee Wittenberg Reply-To: LitProg@SHSU.edu, leew@PILOT.NJIN.NET To: LitProg@shsu.edu, epasos@sfsuvax1.sfsu.edu Subject: Re: Enfin.. Message-ID: Henry Pasos writes: > I am curious if anyone is using Easel's Enfin product. I use it at work > but haven't run into anyone else who uses it. > I'm just curious to know what others are doing with it. Forgive my ignorance, but what is ``Easel's Enfin product?'' Was I napping when its description came over the net? -- Lee leew@pilot.njin.net ================================================================================ Archive-Date: Wed, 24 Nov 1993 11:44:23 CST Sender: LP-Mgr@SHSU.edu From: c21vc@kocrsv01.delcoelect.com (Venkataraman Chandrasekhar) Reply-To: LitProg@SHSU.edu, c21vc@KOCRSV01.DELCOELECT.COM Subject: Perl programs - how to put free form annotations at the top Message-ID: <1993Nov23.150822.657@kocrsv01.delcoelect.com> Keywords: perl free from annotations -x option Date: Tue, 23 Nov 1993 15:08:22 GMT To: LitProg@SHSU.EDU > Hello Shaker, > > Are you making your Perl literate programming environment work > available to "the great unwashed" out here? > > Thanks, > > Mike Actually, there is not a lot of 'work' really. However, I will document the procedure right here. As for "the great unwashed out there (in the usenet land)" (I know you are introducing a light touch here; however, I do not want the netters to misunderstand me), I was referring only to maintenance programmers who use literate programs without acknowledging (for political or whatever reasons) that these are better than the average programs they normally get; I was not referring to the people in the newsgroup, who only contribute positively to my motivation (to write understandable programs). Here is a preview of what I plan to do for Perl programs: 1. Normally Perl annotations have to start with a '#' in column 1. It is annoying to have to 'box' comments; usually, the comments (number and quality) are restricted because of this. What I plan to do is have a lot of free form text providing a lot of details; this could be several pages; arranged nicely with sections headings etc. . 2. Follow this with the call to the Perl interpreter. So, the whole thing will look like: Detailed annotations #!/usr/local/bin/perl -P perl code The restriction is that the annotations cannot contain '#!' (perhaps in the whole line or possibly only in column 1). The restriction is probably specified more precisely in the perl book (under the '-x' option). I plan to put only descriptive narrative (book chapter like) in the annotations. Assuming that the above file is called test1, from the command line I type: /usr/local/bin/perl -x test1 The '-x' option causes, Perl to ignore everything above the '#!' line. Larry Wall says that the code ('chunk' ?), can be followed by an end specification enabling one to put another annotation and so on. ''test1' then should weed out the next annotation, etc,; I don't plan to do this (since it will complicate - i.e., make it harder to understand - my application code). In other words, the following is possible, if one is willing to put this kind of tangle_like processing in his application code: Detailed annotations #!/usr/local/bin/perl -P perl code _END_ (or something like this) more annotations more perl code _END_ (or something like this) more annotations more perl code etc. If you have any questions, please feel free to contact me. Thanks for your question. Shaker ================================================================================ Archive-Date: Wed, 24 Nov 1993 12:42:50 CST Sender: LP-Mgr@SHSU.edu Date: Wed, 24 Nov 1993 18:40:06 +0000 From: D.C.Ince@open.ac.uk (Darrel Ince) Reply-To: LitProg@SHSU.edu, D.C.Ince@OPEN.AC.UK To: LitProg@SHSU.edu Subject: Re: Enfin.. I have spent the last six months experimenting with literate programming as a prepreation to writing a book on programming and data types in a literate programming style. Could anyone help me with two questions. First, is there an implementation of web and weave for the Macintosh and where can I find it? Second, does anyone know of any books written or in progress that deal with programming, algorithms and data types that use the literate programming idea? Darrel Ince ================================================================================ Archive-Date: Wed, 24 Nov 1993 12:43:53 CST Sender: LP-Mgr@SHSU.edu From: pgl@imada.ou.dk (Peter Gorm Larsen) Reply-To: LitProg@SHSU.edu, pgl@IMADA.OU.DK Subject: Context sensitive font-lock in emacs ? Message-ID: <1993Nov24.122225.14543@imada.ou.dk> Keywords: leterate specification, font-lock, emacs, context sensitive Date: Wed, 24 Nov 1993 12:22:25 GMT To: LitProg@SHSU.EDU We have produced a tool supporting the specification language called VDM-SL. The tool is called "The IFAD VDM-SL Toolbox" and it has an interface which is built on top of GNU emacs. this tool uses literate programming (or specification in this case) because we are considering VDM-SL specifications as part of LaTeX documents. Thus, we have an environment (\begin{vdm_al} ... \end{vdm_al}) inside which ASCII VDM-SL specifications are written, whereas the rest of the document are purely a LaTeX document. The tools we have produce are then able to perform a number of different kinds of analysis of the VDM specifications (such as type-checking and execution). However, we have looked at the font-lock.el macros for emacs which are used to change fonts for certain reserved words. We would like to be able to use something like this in a context sensitive way (such that it would only change font of keyword if it is inside the VDM environment). A similar kind of desire is connected to spell-checkking of such documents where one would like to be able to simply spell-check the text and not the formulae. I wonder whether anyone else in the literate programming community have solved these context sensitiveity problems already. If so, please let me know about it. Thanks in advance Peter ------------------------------------------------------------- Peter Gorm Larsen The Institute of Applied Computer Science (IFAD) Forskerparken 10, DK-5230 Odense M, Denmark Phone: +45-65932300, Fax: +45-65-932999, Email: peter@ifad.dk ------------------------------------------------------------- ================================================================================ Archive-Date: Wed, 24 Nov 1993 12:55:57 CST Sender: LP-Mgr@SHSU.edu From: UPP201@ibm.rhrz.uni-bonn.de (Michael Burschik) Reply-To: LitProg@SHSU.edu, UPP201@IBM.RHRZ.UNI-BONN.DE Subject: Re: Embedded documentation Date: Wed, 24 Nov 93 16:29:22 MEZ Message-ID: <16C90E7EAS85.UPP201@ibm.rhrz.uni-bonn.de> To: LitProg@SHSU.EDU In article <17383187@MVB.SAIC.COM> Christian Lynbech writes: >Thanks for the info. > >> The biggest drawback of LaTeXinfo is that you partly need Emacs. The LaTeX >> style is their, so printed output is not a problem but generating an >> info file is: the program was written as an Emacs macro. And no >> way I am going to use that 'editor'. No wars, please, just MHO. > >To me, this is a feature, as you might have guessed from my .sig :-) >I'll choose tools after how well the work with emacs, not the other >way around. No way I'm goeing to use any other editor, but I know that >everybody doesn't subscribe to that view. IMVHO. > > >------------------------------------------------------------------------------ >Christian Lynbech | Hit the philistines three times over the > | head with the Elisp reference manual. >email: lynbech@daimi.aau.dk | - petonic@hal.com (Michael A. Petonic) >------------------------------------------------------------------------------ If this is the same as TeXinfo, then you can use the standalone info browser, which is small and neat and does not require emacs. Cheers, Mike. ================================================================================ Archive-Date: Thu, 25 Nov 1993 08:33:46 CST Sender: LP-Mgr@SHSU.edu From: julian@bjalon.demon.co.uk (julian templeman) Subject: Re: A naive question: Is LP interactive and WYSIWIG? Reply-To: LitProg@SHSU.edu, julian@bjalon.demon.co.uk Date: Tue, 23 Nov 1993 14:21:53 +0000 Message-ID: <754064513snz@bjalon.demon.co.uk> To: LitProg@SHSU.EDU In article <17693446@MVB.SAIC.COM> Phil Jensen writes: > First, I will admit that I'm a rabid hater of graphic interfaces. My blood > pressure rises when I'm forced to move five of my ten fingers over to a mouse > to do something that should be one keystroke (like PageUp/PageDown). Aha! Invitation to a flame war, it sounds like.... Interestingly, I also find that I'm occasionally prone to fits of high blood- pressure, but for the opposite reason. Misfit though I am, I hate TeX... that great sprawl of programs and data files, taking up megabytes of my precious disk space. All those arcane commands and incomprehensible error messages. Ugh. :-) > Also, as a typographic purist, I admire TeX for enabling high quality work > under precisely-defined rules. What you see is all you got. Not too sure what you mean by the last sentence, but... I also admire TeX for its typographical ability, but I can't say that I *like* its output very much. Although I'm an 'informed layman' when it comes to typography, I do know that one aspect of good typography is suiting the layout and appearance of the text to the material, so that the interest of the reader is maintained, and their 'navigation' of the document is facilitated. Most of the examples of LP produced by TeX-based systems I find about as easy to digest as the phone book. Well, that's responded to the provocation, now for a couple of thoughts :-) As I see it, what you (or I, for that matter) like or dislike doesn't matter very much. I happen to dislike TeX, but I have to admit that a lot of LP tools use it, and a lot of people hereabouts like it. I happen to like GUIs, and programming the things pays my wages, so what I want are tools to enable me to program that are integrated with the environment in which I usually work - programming IDEs, WYSIWYG word processors and other visual tools. TeX, for all its strengths, is alien to my environment. I'm happy to accept the less-than-perfect typography that comes from using Word for Windows or whatever - heck, what I'm actually doing is finding a better way of editing my code, not producing something I can frame and hang on the wall. (But others' mileage may vary on that point). Using WfW with WordWeb, incomplete though it is, neatly starts to integrate LP into my company's environment. > One sees from recent postings that we don't agree entirely on what LP tools > should do; but in batch mode the effort to develop a new tool or modify an > existing one is "finite": a WYSIWIG tool would be an order of magnitude more > complicated. Well, I'll find out when I'm finished.... -- Julian Templeman Baker Jardine & Associates, julian@bjalon.demon.co.uk London, England bja@compulink.co.uk "Some people don't see the advantages of combining Microsoft applications. But then some people didn't see what would come of mixing nitro and glycerin" --- Microsoft ad ================================================================================ Archive-Date: Fri, 26 Nov 1993 00:23:18 CST Sender: LP-Mgr@SHSU.edu From: thompson@sun1.coe.ttu.edu Subject: comp.programming.literate FAQ Date: 26 Nov 1993 00:00:32 -0500 Message-ID: Reply-To: LitProg@SHSU.edu, thompson@sun1.coe.ttu.edu To: LitProg@SHSU.EDU Archive-name: literate-programming-faq Last-modified: 1993/11/11 Version: 1.0.4 Welcome to the Literate Programming Frequently Asked Questions List ------------------------------------------------------------------- This version was created Thursday - November 11, 1993 and should considered stale after 90 days. Information contained in this document is the best available at preparation. Disclaimer: "This FAQ is presented with no warranties or guarantees of ANY KIND including correctness or fitness for any particular purpose. The author of this document has attempted to verify correctness of the data contained herein; however, slip-ups can and do happen. If you use this data, you do so at your own risk." Copyright 1993 David B. Thompson. All rights reserved worldwide. Permission is granted to copy this document for free distribution so long as it remains intact and unmodified. = ====================================================================== * Introduction: --------------- This document is for new and experienced users of literate programming tools. The purpose is to explain the concept of literate programming and to provide a resource for locating files of interest to literate programmers and those interested in literate programming. The Literate Programming (LitProg) Frequently Asked Questions (FAQ) list is maintained by Dave Thompson, who can be reached at: thompson@sun1.coe.ttu.edu * Preferred mailing address for FAQ related comments/questions. wqdbt@ttacs1.ttu.edu * Forwarded to my pc. Comment and constructive criticism is welcome. Direct flames to /dev/null (or > nul if you're a msdos user! ;-) If you find an error, please report it. I'm particularly interested in establishing the locations of generally available literate programming tools. If you are the author of such a tool and wish to have it included in this list, please send email. Please note this is a work-in-progress. It is *not* complete, and probably will not be complete for some months. Nevertheless, the information contained herein may be useful to some. Use it as it is intended. - ---------------------------------------------------------------------- - Typography: ------------- Major sections of the FAQ are divided by double lines (====). Minor sections and other divisions are separated by single lines (----). Major topics use a "* " as a leader. Minor topics use a "- " as a leader. This should simplify searching for topics. = ====================================================================== Table of Contents: ------------------ * Introduction - Typography. * How to get the FAQ. - Literate Programming FAQ. - FWEB FAQ. * The LitProg newsgroup. * Internet nodes of interest to literate programmers. * What is literate programming? * How do I begin literate programming? * What tools are available and where are they? - c2latex - CLip - CWEB - FunnelWeb - FWEB - noweb - NUWEB - SchemeWEB - Spidery WEB - WinWordWEB * What other resources are available? - Virtual Coursework * Code examples. - Examples included with developer's tools - Cameron Smith's KR-CWEB - Bart Child's examples for FWEB * Bibliographies. * How to anonymously ftp. * Acknowledgements. * End notes. = ====================================================================== * How to get the FAQ: --------------------- - Literate Programming FAQ. --------------------------- You have many ways to get a current copy of this FAQ. One is to use anonymous ftp (if you don't know how, see a later section in this FAQ) to connect to one of the Comprehensive TeX Arvchive Network (CTAN) sites or the Literate Programming Archive and retrieve a copy of the file. (For more information on CTAN and the literate programming archive, see the section below entitled "Internet Nodes of Interest to Literate Programmers.") An alternative is to use the fileserver at SHSU. Send a message to FILESERV@SHSU.EDU (FILESERV@SHSU.BITNET) and include in your message SENDME FAQ.LITPROG The file server will forward a copy of the file to you via email. - ---------------------------------------------------------------------- - FWEB FAQ: ----------- Marcus Speh maintains the FWEB FAQ. The current version number is 1.29. It can be retrieved in the same way as this FAQ; either by anonymous ftp or through the SHSU file server. On the SHSU server, the file name is FAQ.FWEB. Invoke your ftp software, open a connection to NIORD.SHSU.EDU [192.92.115.8], attach to the directory FAQ, and transfer the file FAQ.FWEB. Alternatively, send a message to the file server, FILESERV@SHSU.EDU (FILESERV@SHSU.BITNET), and include the following text in a one line message: SENDME FAQ.FWEB The file server will send the current version of the file via email. The FWEB FAQ exists in various formats, including HyperText (see other resources below). In Europe, the complete distribution can also be obtained from ftp.desy.de [131.169.10.115] in directory /pub/faq/web/fweb/. It is also available from the literate programming archive (LPA) in the directory LPA/documentation/faq/fweb (see the references to LPA below for more information). = ====================================================================== * The LitProg Newsgroup: ------------------------ One of the most important resources is the literate programming newsgroup, comp.programming.literate. You can read this newsgroup using your standard reader. Altenatively, the newsgroup is gated to a mailing list hosted by George Greenwade and Sam Houston State University. You can subscribe by sending mail to the list-server, LISTSERV@SHSU.EDU (or LISTSERV@SHSU.BITNET), and include in the message one line of text: SUBSCRIBE LITPROG "your name in quotes" The list is unmoderated; messages sent to litprog@shsu.edu are automatically distributed to all subscribers and cross-posted to comp.programming.literate. Archives of the mailing list and newsgroup are maintained on niord.shsu.edu [192.92.115.8] in the directory litprog. = ====================================================================== * Internet Nodes of Interest to Literate Programmers: ----------------------------------------------------- The principal nodes of interest to literate programmers are the Literate Programming Archive (LPA hereafter) and the CTAN (Comprehensive TeX Archive Network). The Literate Programming Archive (LPA) is: Node: ftp.th-darmstadt.de [130.83.55.75] Directory: pub/programming/literate-programming Notes: Fastest response during off-U.S. [yep] business hours. The CTAN sites are: ftp host IP CTAN root Institution and Sponsor ------------------------------------------------------------------------- ftp.TeX.ac.UK 134.151.79.32 pub/archive Aston Univ./UK TeX U.G. ftp.Uni-Stuttgart.DE 129.69.8.13 soft/tex Univ. Stuttgart/DANTE e.V ftp.SHSU.edu 192.92.115.10 tex-archive Sam Houston State Univ. Other nodes and directories of interest include: Node: niord.shsu.edu [192.92.115.8] Directory: various (do some snooping!) Notes: Has a gopher server. Node: ftp.desy.de [131.169.10.115] Directory: pub/web. Various documents, samples, and the FWEB FAQ. Notes: Has a www server, http://info.desy.de:80/ = ====================================================================== * What is Literate Programming? ------------------------------- Literate programming is the combination of documentation and source together in a fashion suited for reading by human beings. In fact, literate programs should be enjoyable reading, even inviting! (Sorry Bob, I couldn't resist!) In general, literate programs combine source and documentation in a single file. Literate programming tools then parse the file to produce either readable documentation or compilable source. The WEB style of literate programming was created by D.E. Knuth during the development of his TeX typsetting software. All the original work revolves around a particular literate programming tool called WEB. Knuth says: The philosophy behind WEB is that an experienced system programmer, who wants to provide the best possible documentation of his or her software products, needs two things simultaneously: a language like TeX for formatting, and a language like C for programming. Neither type of language can provide the best documentation by itself; but when both are appropriately combined, we obtain a system that is much more useful than either language separately. The structure of a software program may be thought of as a web that is made up of many interconnected pieces. To document such a program we want to explain each individual part of the web and how it relates to its neighbours. The typographic tools provided by TeX give us an opportunity to explain the local structure of each part by making that structure visible, and the programming tools provided by languages such as C or Fortran make it possible for us to specify the algorithms formally and unambigously. By combining the two, we can develop a style of programming that maximizes our ability to perceive the structure of a complex piece of software, and at the same time the documented programs can be mechanically translated into a working software system that matches the documentation. = ====================================================================== * How to begin literate programming: ------------------------------------ A recommended book is D.E. Knuth's collection of articles (1992) "Literate Programming," Center for the Study of Language and Information, Stanford University, ISBN 0-937073-80-6 (pbk). This book gives insight into Knuth's thoughts as he developed the web system of literate programming (and TeX for typesetting). It does not document methods for literate programming. A recommended book is Wayne Sewell's (1989) "Weaving a Program: Literate Programming in WEB," Van Nostrand Reinhold, ISBN 0-442-31946-0 (pbk). This book focuses on using Knuth's web system. Some talk exists in the newsgroup/mailing list for a Usenet University course in literate programming. I'm sure discussion of this topic will be welcomed. If you are interested, please participate. = ====================================================================== * What Tools are Available: --------------------------- A significant number of tools for literate programming are available. Most have been ported from their original systems, so support multiple computer platforms. If you are the developer of such a tool, and would like to make the software freely available, please send me email and I'll reply with a form (like those below) for you to fill in. (Or short-circuit the process and kludge a form from below. :-) - C2LaTeX: ---------- Developer: John D. Ramsdell System(s) supported: Unix Software supported: Programming language: C. Text formatter: LaTeX but it's easy to change the formatter. Availability: Anonymous ftp from omnigate.clarkson.edu:/pub/tex/tex-programs/c2latex. Readme: Absent. Documentation is in the C source for c2latex. Brief description: C2latex provides simple support for literate programming in C. Given a C source file in which the comments have been written in LaTeX, c2latex converts the C source file into a LaTeX source file. It can be used to produce typeset listings of C programs and/or documentation associated with the program. C2latex produces LaTeX source by implementing a small number of rules. A C comment that starts at the beginning of a line is copied unmodified into the LaTeX source file. Otherwise, non-blank lines are surrounded by a pair of formatting commands (\begin{flushleft} and \end{flushleft}), and the lines are separated by \\*. Each non-blank line is formatted using LaTeX's \verb command, except comments within the line are formatted in an \mbox. Support: Send bug reports to ramsdell@mitre.org. - ---------------------------------------------------------------------- - CLip: ------- Developer: E.W. van Ammers and M.R. Kramer Systems supported: Vax/VMS and MS-DOS. Software supported: An programming language. Plain TeX and LaTeX text formatters. Availability: Anonymous ftp from: CTAN/web/clip LPA/machines/ms-dos LPA/machines/vax sun01.info.wau.nl/CLIP Readme: In distribution. Brief description: Support: Unknown. - ---------------------------------------------------------------------- - CWEB: ------- Developer: Silvio Levy and D.E. Knuth System(s) supported: Unix systems (dos and amiga ports available) Software supported: Languages supported are C and C++. Text formatters are plain TeX and LaTeX. Availability: anonymous ftp from: labrea.stanford.edu/pub/cweb LPA/c.c++ CTAN/web/c_cpp/cweb DOS version in CTAN/web/c_cpp/cwb30p8c DOS version in LPA/machines/ms-dos Amiga version to be posted soon (look at CTAN). Mac port of CTANGLE in LPA/machines/mac LaTeX support in LPA/c.c++ Readme: bundled with above Brief description: Support: bugs to levy@math.berkeley.edu - ---------------------------------------------------------------------- - FunnelWeb: ------------ Developer: Ross N. Williams: ross@guest.adelaide.edu.au Systems supported: MSDOS, Mac, VMS, Sun. Other ports reported. Software supported: For printing, TeX. Otherwise no restrictions. Availability: anonymous ftp from: CTAN/web/funnelweb LPA/independent ftp.adelaide.edu.au/pub/funnelweb Readme: With bundle above. Brief description: FunnelWeb is a production-quality literate-programming tool that emphasises simplicity and reliability. Everything about FunnelWeb, from the simplicity of its language to the comprehensive tutorial in the user's manual, has been designed to make this as simple, as practical, and as usable a tool as possible. Features: + Provides a simple macro preprocessor facility. + Can produce typeset documentation. + Runs on Sun, VMS VAX, Macintosh, PC, and others. + Portable C source code distributed under GNU licence. + Comprehensive user's manual including tutorial. + Programming-language independent. + Can generate multiple output files. + Allows complete control over the output text. + Regression test suite with over 200 tests. + Fully worked example (in /pub/funnelweb/examples). - Requires TeX to produce typeset documentation. - Typesets program code using TT font only. Support: No formal support available. Mailing list maintained with about 50 subscribers. Informal assistance available from mailing list. - ---------------------------------------------------------------------- - FWEB: ------- Developer: John A. Krommes System(s) supported: Unix and DOS platforms Software supported: C, C++, Fortran-77, Fortran-90, Ratfor, TeX, and LaTeX. Text formatters are plain TeX and LaTeX. Availability: anonymous ftp from: lyman.pppl.gov/pub/fweb CTAN/web/fweb LPA/fweb DOS version in LPA/machines/ms-dos Readme: In bundle with above. Brief description: It also has a well-developed user's manual and its own FAQ (see above). It runs on most platforms: VMS, PC, UNIX, and pretty much anything that the GNU C compiler (GCC) is supported for. Support: bug reports to krommes@princeton.edu - ---------------------------------------------------------------------- - noweb: -------- Developer: Norman Ramsey System(s) supported: Unix and DOS platforms Software supported: All programming languages, plain TeX and LaTeX formatters. Availability: anonymous ftp from: csservices.princeton.edu/pub/noweb.shar.Z bellcore.com/pub/norman/noweb.shar.Z CTAN/web/independent/noweb LPA/independent Readme: with bundle above Brief description: noweb is designed to meet the needs of literate programmers while remaining as simple as possible. Its primary advantages are simplicity, extensibility, and language-independence. noweb uses 5 control sequences to WEB's 27. noweb now supports indexing and identifier cross-reference. The simple noweb manual is only 2 pages; documenting the full power of noweave and notangle requires another 3 pages. noweb works ``out of the box'' with any programming language, and its formatter-dependent part is a 60-line nawk program. The primary sacrifice relative to WEB is the loss of prettyprinting. Support: by email to the author - ---------------------------------------------------------------------- - NUWEB: -------- Developer: Preston Briggs: preston@cs.rice.edu Systems supported: Unix systems; Sparcs, RS/6000s, HPs, and (!) MSDOS. Software supported: It's written in C. It works with any programming language (or combination of programming languages) and uses Latex as its text formatter. Availability: anonymous ftp from: Unix: CTAN/web/nuweb DOS: CTAN/web/nuweb-pc LPA/independent Readme: Send mail to preston@cs.rice.edu Brief description: A single program that takes a web file written in a combination of latex and any programming language(s) and produces a latex file that can be pretty printed and a set of files containing code for compilation/interpretation by the appropriate language processors. Strengths include speed, simplicity, multiple languages, nice indices and cross-references, latex. Doesn't require any special macros or macro files. Drawbacks: latex-dependent, no code pretty printing, harder to make indices than cweb. More good stuff: nice support for make, doesn't reformat source files, so they're easy to debug. Lots of control without too much effort. That is, it doesn't do too much! Future directions... Very little change planned, except perhaps refinements in the indexing software. Support: Hack it yourself or send e-mail to preston@cs.rice.edu - ---------------------------------------------------------------------- - SchemeWEB: ------------ Developer: John D. Ramsdell System(s) supported: Unix and DOS platforms Software supported: Programming language: Any dialect of Lisp. Text formatter: LaTeX. Availability: The Unix version is in the Scheme Repository and it is available via anonymous ftp from: nexus.yorku.ca/pub/scheme/utl LPA/lisp The DOS version is part of the PCS/Geneva Scheme system which is available via anonymous ftp from: cui.unige.ch/pub/pcs. LPA/machines/ms-dos Readme: In bundle with above. Brief description: SchemeWEB is a Unix or DOS filter that translates SchemeWEB source into LaTeX source or Lisp source. Lisp code is formatted in typewriter type font and the comments are passed to LaTeX unchanged. Support: Send bug reports to ramsdell@mitre.org. - ---------------------------------------------------------------------- - Spidery WEB: ------------- Developer: Norman Ramsey System(s) supported: Unix and DOS platforms Software supported: Most Algol-like languages, including C, Ada, Pascal, Awk, and many others. Plain TeX and latex for text formatters. Availability: Anonymous ftp from: CTAN Readme: In distribution. Brief description: A system for building language-dependent WEBs. Spider is frozen; no further development is planned. Support: Bug reports to author. - ---------------------------------------------------------------------- - WinWordWEB: ------------- Developer: Lee Wittenberg Systems supported: Needs Microsoft Word for Windows, v.2.x, and, of course, MS-Windows 3.x. Software supported: Any programming language. Word for Windows 2.x for text formatting and file maintenance. Availability: anonymous ftp from: bart.kean.edu:pub/leew World-Wide Web (WWW) Readme: WORDWEB.DOC in the downloadable package describes the system. Brief description: WinWordWEB is a set of a Word for Windows macros (plus a paragraph style) that provide a crude literate programming environment. The ``look and feel'' of the system is based on Norman Ramsey's noweb, but can easily be modified to suit individual tastes. Support: None. WinWordWEB was written as a prototype to see if a WYSIWYG literate programming system was possible. It is intended as a jumping off point for future work by others. However, the system is surprisingly usable as it stands, and the author is interested in hearing from users (satisfied and unsatisfied). Anyone interested in actively supporting (and improving) the product should contact the author via email. = ====================================================================== * Other resources: ------------------ An untapped resource (by me anyway ;-) is the World Wide Web. Marcus Speh has expended considerable effort in this regard. If you're connected to WWW, then access: http://info.desy.de/user/projects/LitProg.html If you aren't connected to WWW, telnet to info.cern.ch and explore. You can reach Marcus' literate programming pages by typing: go http://info.desy.de/user/projects/LitProg.html Help for people who have only Email and neither WWW nor telnet, can be obtained by Email from LISTSERV@INFO.CERN.CH by sending a message containing the command HELP. Instructions will be returned by email. For literate programming documents, you can try anonymous ftp to ftp.desy.de [131.169.10.115] and attach to directory: /pub/userWWW/projects/Announce Another resource of interest to literate programmers is the info-tex mailing list. If you're using (La)TeX as your typsetting system and have access to internet, then you should investigate this mailing list. Mail list service is available through the SHSU list-server. To subscribe, send a message to LISTSERV@SHSU.EDU (LISTSERV@SHSU.BITNET), and include in the message one line of text: SUBSCRIBE INFO-TEX "your name in quotes" The list is unmoderated; messages sent to info-tex@shsu.edu are automatically distributed to all subscribers and cross-posted to comp.text.tex. Archives of the mailing list and newsgroup are maintained on niord.shsu.edu [192.92.115.8] in the directory info-tex. - ---------------------------------------------------------------------- - Virtual Coursework: --------------------- Marcus Speh plans an introductory course on Literate Programming on the Internet, part of the first semester of "Global Network Academy" [GNA], a non-profit corporation incorporated in the state of Texas, affilated with the Usenet University project. The texts/sample programs for this class will be made available via anonymous FTP. A special room on GNA Virtual Campus will be staffed by a consultant in one to two hour shifts. Students with questions can telnet to the virtual campus and ask questions of the staff there. Tuition: Students should agree to work for Global Network Academy in some capacity. This may include agreeing to serve as a consultant next term, donating computing resources which belong to them, helping with programming, etc. If you are interested in registering for the course either as a student or as a consultant, please contact marcus@x4u.desy.de. You will receive a standard reply message; no further action will be taken until January 94. [Editor's note: Because of workload, Marcus requests that email inquiries be limited to a statement of interest for either a student or consultant position until January 1994.] = ====================================================================== * Code Examples: ---------------- Examples of web programs are included with the FWEB, CWEB, and noweb distributions. Cameron Smith converted the K&R calculator program into a literate program. It can be retrieved by anonymous ftp from: niord.shsu.edu [192.92.115.8] directory kr-cweb-sample as krcwsamp.zip or from LPA/Documentation Ross Williams has released a funnelweb example. You can retrieve this file from node ftp.adelaide.edu.au [129.127.40.3] as /pub/funnelweb/examples/except.* This file should be on CTAN as well. = ====================================================================== * Bibliographies: ----------------- Nelson Beebe has collected an extensive bibliography treating literate programming. His work is available for anonymous ftp from ftp.math.utah.edu [128.110.198.2] in directory /pub/tex/bib as files: litprog.bib litprog.ltx. Although I have not verified this, LPA is an alternate source for these files. Note that they are updated frequently (Nelson says several times each week), so be sure to get a fresh copy before extensive use. Joachim Schrod indicates that these files may be updated daily and can be retrieved via anonymous ftp at LPA/documentation. = ====================================================================== * How to anonymously ftp: ------------------------- Pretty much everything mentioned here is available by anonymous FTP. FAQ lists cross-posted to news.answers and rec.answers can be gotten from rtfm.mit.edu [18.70.0.209], under /pub/usenet/news.answers or under /pub/usenet/more.specific.group.name "anonymous FTP" is just a way for files to be stored where anyone can retrieve them over the Net. For example, to retrieve the latest version of the literate programming FAQ, do the following: > ftp rtfm.mit.edu /* connect to the site; message follows */ > anonymous /* type this when it asks for your name */ > /* type your address as the password */ > cd /pub/usenet /* go to the directory you want to be */ > cd comp.programming.literate /* one level down (no slash). */ > dir /* look at what's there */ > get literate-progamming-faq /* get the file; case-sensitive */ > quit /* stop this mysterious thing */ If your FTP program complains that it doesn't know where the site you want to use is, type the numerical address instead of the sitename: > ftp 18.70.0.209 /* connect with numerical address */ If you don't have ftp access, send e-mail to mail-server@rtfm.mit.edu with the single word "help" in the body of the message. Getting binary files (executables, or any compressed files) is only slightly more difficult. You need to set binary mode inside FTP before you transfer the file. > binary /* set binary transfer mode */ > ascii /* set back to text transfer mode */ FAQs and spoiler lists are generally ascii files; everything else is generally binary files. Some common extensions on binary files in archive sites are: .Z Compressed; extract with uncompress .tar.Z Compressed 'tape archive'; uncompress then untar or tar -xvf .gz or .z Gnu gzip; use gunzip (available from prep.gnu.ai.mit.edu) .sit (Mac) StufIt archive .zip Extract with Zip or Unzip .zoo Yet another archive/compress program .lhe (Amiga) ? .lzh Lha archive program. .arj (PC) Arj archive program. .exe (PC) Sometimes self-extracting archives-just execute them. .uue or .UUE Transfer as text file; use uudecode to convert to binary .hqx (Mac) BinHex format; transfer in text mode Generic help can be found in the FAQs of comp.binaries. for how to transfer, extract, and virus-check binary files. (At rtfm.mit.edu) If you can't FTP from your site, use one of the following ftp-by-mail servers: ftpmail@decwrl.dec.com ftpmail@src.doc.ic.ac.uk ftpmail@cs.uow.edu.au ftpmail@grasp.insa-lyon.fr For complete instructions, send a message reading "help" to the server. If you don't know exactly what you're looking for, or exactly where it is, there are programs and servers that can help you. For more info, send e-mail to mail-server@rtfm.mit.with with the body of the message reading send usenet/news.answers/finding-sources Thanks to Aliza R. Panitz (the "buglady") for this text. I copied it verbatim from her post on faq-maintainers with only minor modifications. = ====================================================================== * Acknowledgements: ------------------- This document would not have happened without the help of many people. Among them are Marcus Speh, George Greenwade, Rob Beezer, Joachim Schrod, Piet van Oostrum, and Ross N. Williams. A special thanks to Aliza R. Panitz for the text describing how to execute an anonymous ftp for files of interest. Any omissions from these acknowledgements should be considered an act of stupidity on my part. Of course, the authors of literate programming tools mentioned above all play a vital role in the vitality of literate programming. Furthermore, participants in the comp.programming.literate newsgroup (and associated mailing list) all contributed in various fashions. Thank all of you. = ====================================================================== * End notes: ------------ This document will be evolving over the next few months. I'm planning on adding entries for additional literate programming tools and will expand the sections on examples as more examples become available. Tools I will include are web (the original pascal version), funnelweb, spiderweb, and cnoweb for starters. Others will be added as I find and document them. Omission of a particular tool should not be considered a snub in any sense--simply an error or oversight on my part. History: First release: Fri 10/15/1993 -- Yep, I finally did it! Thu 10/21/93 -- Minor change to ftp instructions. Fri 10/22/93 -- Minor change to stuttgart ip and fweb.faq version. Made reader-recommended changes, lots of re- organization, and added a few tools. Mon 11/01/93 -- Corrected typo in address. Thu 11/11/93 -- Minor change to www. = End of File ========================================================== ================================================================================ Archive-Date: Mon, 29 Nov 1993 03:45:13 CST Sender: LP-Mgr@SHSU.edu Date: Mon, 29 Nov 1993 00:57:32 -0500 (EST) From: j_mcarthur@BIX.com Reply-To: LitProg@SHSU.edu, j_mcarthur@BIX.COM Subject: Simple Lex Literate ProgramKKK To: LitProg@SHSU.edu Message-ID: <9311290057.memo.62107@BIX.com> Content-Transfer-Encoding: 7BIT I have just completed a simple little literate program. The program takes an quote delimited file, like one exported from dBase or Paradox, and replaces the quotes with tags so that it can be processed via TeX. This program is written in the original Pascal Web. The output of Tangle is then processed by Albert Graef's TP Lex program to create a pascal program. Weave generates a reasonable output file. Since this is a fairly small program, I am including it in the message. First the WEB file. -------------------------------- cut here -------------------------------- \let\]=\empty \def\BS{{\tt\char"5C}} \def\Lex{{\bf Lex}} \def\Yacc{{\bf Yacc}} \def\verb{\futurelet\next\TestVerb} \chardef\other = 12 \def\uncatcodespecials{% \def\do##1{\catcode`##1 = \other}% \dospecials }% \def\TestVerb{% \ifx\next"\let\next=\DoubleQuoteVerb\else% \let\next=\SingleQuoteVerb\fi% \begingroup\uncatcodespecials\next} \def\DoubleQuoteVerb"#1"{{\tt#1}\endgroup} \def\SingleQuoteVerb'#1'{{\tt#1}\endgroup} \font\sc=cmcsc10 @* Introduction. This program converts a quote delimited file into a \TeX\ tag delimited file. This is done using TP \Lex\ written by Albert Graef. @ The first thing that needs to be defined are the different parts of a \Lex\ program. A \Lex\ program has three main parts: definition, rules, and supplemental routines. Each section of a \Lex\ is identified by a sequence of characters at the start of a line. The character sequences are defined as macros to make them easier to see and to understand. @d START_DEFINITION==@=%{@>@\ @d END_DEFINITION==@=%}@>@\ @# @d START_RULES==@=%%@>@\ @d END_RULES==@=%%@>@\ @ In addition to defining the macros we need to specify how to format them. They are formatted the same as the program statement. @f START_DEFINITION==program @f END_DEFINITION==program @# @f START_RULES==program @f END_RULES==program @ The definition section of a \Lex\ program contains the program header and such. Actually since it contains Pascal code we can code it up easily. @ Since this is compiled using Borland Pascal one final formatting command needs to be added. @f uses==const @ A \Lex\ program is not that complex. It is actually very similar to a conventional Pascal program. Here is the layout of our \Lex\ program: @p START_DEFINITION@t\2@> program TagMl; uses @@/ const @@/ type @@/ const @@/ var @@t\2@>@\@/ END_DEFINITION@t\2@>@/ START_RULES@t\2@>@/ @@\@/ END_RULES@t\2@>@/ @
@/ @ The program uses the LexLib unit. This provides the utility functions need by a \Lex\ program. If any other units were needed they could be included here. @= LexLib; @ There are eleven fields in the database. This number is important. Each fields is processed in turn. A constant is needed so a type can be created to store the strings. @= NumberOfFields = 11; @ TagStrArray is the name of the type created to store the strings used in tagging the data. @= TagStrArray = array [1..NumberOfFields] of string; @ Borland Pascal provides the feature of structured constants. We take advantage of this feature and define the string arrays. @= TagStr: TagStrArray = ( 'Salutation',@/ 'FirstName',@/ 'MiddleName',@/ 'LastName',@/ 'Honorific',@/ 'AddressA',@/ 'AddressB',@/ 'AddressC',@/ 'City',@/ 'State',@/ 'Zip');@/ @ As the data is processed, each field must be accessed in turn. To keep track of the field we need a simple variable. Here is the declaration of the field tracking variable. @= field: integer; @ There are six parts to line from a quote delimited file: starting quote, quote-comma-quote, ending quote, the data, and the end of line. Each section needs to be processed separately. Each section will have its own \Lex\ rule. @= @@/ @@/ @@/ @@/ @ @ \Lex\ uses regular expressions to specify the patterns to match. Below is a table showing all the possible expressions. Tagging an quote delimited file will only use a few of these. $$\vbox{\offinterlineskip% \halign{% \quad\hfil#\hfil\quad\vrule& \quad\hfil#\hfil\quad\vrule& \quad\hfil#\hfil\quad\strut\cr %\begin{table*}\centering % \begin{tabular}{c|c|c} \noalign{\hrule} \noalign{\vskip2pt} \noalign{\hrule} {\sc Expression}& {\sc Matches}& {\sc Example}\cr \noalign{\hrule} $c$& any non-operator character $c$& \verb"a"\cr \verb"\"$c$& character $c$ literally& \verb"\*"\cr \verb'"'$s$\verb'"'& string $s$ literally& \verb'"**"'\cr \verb"."& any character but newline& \verb"a.*b"\cr \verb"^"& beginning of line& \verb"^abc"\cr \verb"$"& end of line& \verb"abc$"\cr \verb"["$s$\verb"]"& any character in $s$& \verb"[abc]"\cr \verb"[^"$s$\verb"]"& any character not in $s$& \verb"[^abc]"\cr $r$\verb"*"& zero or more $r$'s& \verb"a*"\cr $r$\verb"+"& one or more $r$'s& \verb"a+"\cr $r$\verb"?"& zero or one $r$& \verb"a?"\cr $r$\verb"{"$m$\verb","$n$\verb"}"& $m$ to $n$ occurrences of $r$ & \verb"a{1,5}"\cr $r$\verb"{"$m$\verb"}"& $m$ occurrences of $r$& \verb"a{5}"\cr $r_1r_2$& $r_1$ then $r_2$& \verb"ab"\cr $r_1$\verb"\char"7C"$r_2$& $r_1$ or $r_2$& \verb"a\char"7Cb"\cr \verb"("$r$\verb")"& $r$& \verb"(a\char"7Cb)"\cr $r_1$\verb"/"$r_2$& $r_1$ when followed by $r_2$& \verb"a/b"\cr \verb"<"$x$\verb">"$r$& $r$ when in start condition $x$& \verb"abc"\cr \noalign{\hrule} }}$$ @ First we want to process the quote at the start of the line. The up arrow specifies the start of line. Quotes are used to delimit special characters, so a backslash is used to delimit the quote. Finally a space or tab follows the regular expression. This is required for \Lex\ to determine the end of the regular expression and the start of the Pascal code. The Pascal code does two things. It resets |field| to one, and outputs the \BS StartRec tag. One comment about |yyoutput|. The unit |LexLib| opens two files: |yyinput| for input and |yyoutput| for output. By default both of these files are the same as |input| and |output|. \Lex\ programs are set up to run as filters. They take the input one line at a time from the standard input, process it, and write the output to the standard output. @= @=^\" @>@t\quad@>begin field := 1; writeln(yyoutput, '\StartRec'); end;@/@\ @ Between each field is a quote-comma-quote. This pattern is used to increments |field.| The pattern is quote-comma-quote. However quotes need to be preceded by a backslash and the pattern must be followed by a tab or space. @= @=\",\" @>@t\quad@> inc(field);@/@\ @ The dollar sign, \$, is used to specify the end of line in a regular expression. The Pascal code outputs the \BS EndRec tag. @= @=\"$ @>@t\quad@> write(yyoutput, '\EndRec');@/@\ @ Finding the data string is quite easy. Anything that is not a quote or an end of line will match. The Pascal code looks up the tag and delimites the data. This does not properly handle embedded quotes {\tt "} or embedded curly braces {\tt\char"7B} and {\tt\char"7D}. This could be done by using a start state. But for most data this is process should work. @= @=[^\"\n]* @>@t\quad@> writeln(yyoutput, '\', TagStr[field], '{', yytext, '}');@/@\ @ The end of line is just echoed. No special processing is required. This section could be omitted since the default action of a \Lex\ program is to echo the output. |echo| is a procedure defined in |LexLib|. It writes the input string to |yyoutput|. @= @=\n @>@t\quad@> echo; @ Now for the end of the \Lex\ program. \Lex\ creates a function |yylex|. This function can return a wide variety of values. The return value of |yylex| is used by \Yacc. This program does not require \Yacc\ and so |yylex| only returns at the end of the file. One difference between the Pascal and C version of Lex is the need for the main body of the program. In C |LexLib| would include a function |main| that would call |yylex|. @
= begin if yylex = 0 then ; end. @* Index. Here is the index of the program. -------------------------------- cut here -------------------------------- Now for the TeX file generate by WEAVE (for those who don't have WEAVE). -------------------------------- cut here -------------------------------- \input webmac \let\]=\empty \def\BS{{\tt\char"5C}} \def\Lex{{\bf Lex}} \def\Yacc{{\bf Yacc}} \def\verb{\futurelet\next\TestVerb} \chardef\other = 12 \def\uncatcodespecials{% \def\do##1{\catcode`##1 = \other}% \dospecials }% \def\TestVerb{\ifx\next"\let\next=\DoubleQuoteVerb\else\let\next=% \SingleQuoteVerb\fi% \begingroup\uncatcodespecials\next} \def\DoubleQuoteVerb"#1"{{\tt#1}\endgroup} \def\SingleQuoteVerb'#1'{{\tt#1}\endgroup} \font\sc=cmcsc10 \N1. Introduction. This program converts a quote delimited file into a \TeX\ tag delimited file. This is done using TP \Lex\ written by Albert Graef. \fi \M2. The first thing that needs to be defined are the different parts of a \Lex\ program. A \Lex\ program has three main parts: definition, rules, and supplemental routines. Each section of a \Lex\ is identified by a sequence of characters at the start of a line. The character sequences are defined as macros to make them easier to see and to understand. \Y\P\D \37$\\{START\_DEFINITION}\S\={\%\{}\]$\par \P\D \37$\\{END\_DEFINITION}\S\={\%\}}\]$\Y\par \P\D \37$\\{START\_RULES}\S\={\%\%}\]$\par \P\D \37$\\{END\_RULES}\S\={\%\%}\]$\par \fi \M3. In addition to defining the macros we need to specify how to format them. They are formatted the same as the program statement. \Y\P\F \37$\\{START\_DEFINITION}\S\\{program}$\par \P\F \37$\\{END\_DEFINITION}\S\\{program}$\Y\par \P\F \37$\\{START\_RULES}\S\\{program}$\par \P\F \37$\\{END\_RULES}\S\\{program}$\par \fi \M4. The definition section of a \Lex\ program contains the program header and such. Actually since it contains Pascal code we can code it up easily. \fi \M5. Since this is compiled using Borland Pascal one final formatting command needs to be added. \Y\P\F \37$\\{uses}\S\\{const}$\par \fi \M6. A \Lex\ program is not that complex. It is actually very similar to a conventional Pascal program. Here is the layout of our \Lex\ program: \Y\P\4\&{START\_DEFINITION} \1\ \hbox{\2} \6 \4\&{program}\1\ \37\\{TagMl};\6 \4\&{uses} \37\X7:Units that are used by the program\X\6 \4\&{const} \37\X8:Constants in the outer block\X\6 \4\&{type} \37\X9:Types in the outer block\X\6 \4\&{const} \37\X10:Typed Constants in the outer block\X\6 \4\&{var} \37\X11:Globals in the outer block\X\hbox{\2}\]\6 \4\&{END\_DEFINITION}\1\ \37\hbox{\2}\6 \4\&{START\_RULES}\1\ \37\hbox{\2}\6 \X12:Lex production rules go here\X\]\6 \4\&{END\_RULES}\1\ \37\hbox{\2}\6 \X19:Main body of the program\X\par \fi \M7. The program uses the LexLib unit. This provides the utility functions need by a \Lex\ program. If any other units were needed they could be included here. \Y\P$\4\X7:Units that are used by the program\X\S$\6 \\{LexLib};\par \U6.\fi \M8. There are eleven fields in the database. This number is important. Each fields is processed in turn. A constant is needed so a type can be created to store the strings. \Y\P$\4\X8:Constants in the outer block\X\S$\6 $\\{NumberOfFields}=11$;\par \U6.\fi \M9. TagStrArray is the name of the type created to store the strings used in tagging the data. \Y\P$\4\X9:Types in the outer block\X\S$\6 $\\{TagStrArray}=$\1\5 \&{array} $[1\to\\{NumberOfFields}]$ \1\&{of}\5 \\{string};\2\2\par \U6.\fi \M10. Borland Pascal provides the feature of structured constants. We take advantage of this feature and define the string arrays. \Y\P$\4\X10:Typed Constants in the outer block\X\S$\6 \4\\{TagStr}: \37$\\{TagStrArray}=($$\.{\'Salutation\'},\39$\6 $\.{\'FirstName\'},\39$\6 $\.{\'MiddleName\'},\39$\6 $\.{\'LastName\'},\39$\6 $\.{\'Honorific\'},\39$\6 $\.{\'AddressA\'},\39$\6 $\.{\'AddressB\'},\39$\6 $\.{\'AddressC\'},\39$\6 $\.{\'City\'},\39$\6 $\.{\'State\'},\39$\6 \.{\'Zip\'}$)$;\par \U6.\fi \M11. As the data is processed, each field must be accessed in turn. To keep track of the field we need a simple variable. Here is the declaration of the field tracking variable. \Y\P$\4\X11:Globals in the outer block\X\S$\6 \4\\{field}: \37\\{integer};\par \U6.\fi \M12. There are six parts to line from a quote delimited file: starting quote, quote-comma-quote, ending quote, the data, and the end of line. Each section needs to be processed separately. Each section will have its own \Lex\ rule. \Y\P$\4\X12:Lex production rules go here\X\S$\6 \X14:Match Starting Quote\X\6 \X15:Match Quote-Comma-Quote\X\6 \X16:Match Ending Quote\X\6 \X17:Match Strings\X\6 \X18:Match End-Of-Line\X\par \U6.\fi \M13. \Lex\ uses regular expressions to specify the patterns to match. Below is a table showing all the possible expressions. Tagging an quote delimited file will only use a few of these. $$\vbox{\offinterlineskip% \halign{\quad\hfil#\hfil\quad\vrule&\quad\hfil#\hfil\quad\vrule&\quad\hfil#% \hfil\quad\strut\cr %\begin{table*}\centering % \begin{tabular}{c\|cc} \noalign{\hrule} \noalign{\vskip2pt} \noalign{\hrule} {\sc Expression}& {\sc Matches}& {\sc Example}\cr \noalign{\hrule} $c$& any non-operator character $c$& \verb"a"\cr \verb"\"$c$& character $c$ literally& \verb"\*"\cr \verb'"'$s$\verb'"'& string $s$ literally& \verb'"**"'\cr \verb"."& any character but newline& \verb"a.*b"\cr \verb"^"& beginning of line& \verb"^abc"\cr \verb"$"& end of line& \verb"abc$"\cr \verb"["$s$\verb"]"& any character in $s$& \verb"[abc]"\cr \verb"[^"$s$\verb"]"& any character not in $s$& \verb"[^abc]"\cr $r$\verb"*"& zero or more $r$'s& \verb"a*"\cr $r$\verb"+"& one or more $r$'s& \verb"a+"\cr $r$\verb"?"& zero or one $r$& \verb"a?"\cr $r$\verb"{"$m$\verb","$n$\verb"}"& $m$ to $n$ occurrences of $r$& \verb"a{1,5}"% \cr $r$\verb"{"$m$\verb"}"& $m$ occurrences of $r$& \verb"a{5}"\cr $r_1r_2$& $r_1$ then $r_2$& \verb"ab"\cr $r_1$\verb"\char"7C"$r_2$& $r_1$ or $r_2$& \verb"a\char"7Cb"\cr \verb"("$r$\verb")"& $r$& \verb"(a\char"7Cb)"\cr $r_1$\verb"/"$r_2$& $r_1$ when followed by $r_2$& \verb"a/b"\cr \verb"<"$x$\verb">"$r$& $r$ when in start condition $x$& \verb"abc"\cr \noalign{\hrule} }}$$ \fi \M14. First we want to process the quote at the start of the line. The up arrow specifies the start of line. Quotes are used to delimit special characters, so a backslash is used to delimit the quote. Finally a space or tab follows the regular expression. This is required for \Lex\ to determine the end of the regular expression and the start of the Pascal code. The Pascal code does two things. It resets \\{field} to one, and outputs the \BS StartRec tag. One comment about \\{yyoutput}. The unit \\{LexLib} opens two files: \\{yyinput} for input and \\{yyoutput} for output. By default both of these files are the same as \\{input} and \\{output}. \Lex\ programs are set up to run as filters. They take the input one line at a time from the standard input, process it, and write the output to the standard output. \Y\P$\4\X14:Match Starting Quote\X\S$\6 \={\^\\"\ }\hbox{\quad} \6 \&{begin} \37$\\{field}\K1$;\5 $\\{writeln}(\\{yyoutput},\39\.{\'\\StartRec\'})$;\6 \&{end};\6 \]\par \U12.\fi \M15. Between each field is a quote-comma-quote. This pattern is used to increments \\{field}. The pattern is quote-comma-quote. However quotes need to be preceded by a backslash and the pattern must be followed by a tab or space. \Y\P$\4\X15:Match Quote-Comma-Quote\X\S$\6 $\={\\",\\"\ }\hbox{\quad}\\{inc}(\\{field})$;\6 \]\par \U12.\fi \M16. The dollar sign, \$, is used to specify the end of line in a regular expression. The Pascal code outputs the \BS EndRec tag. \Y\P$\4\X16:Match Ending Quote\X\S$\6 $\={\\"\$\ }\hbox{\quad}\\{write}(\\{yyoutput},\39\.{\'\\EndRec\'})$;\6 \]\par \U12.\fi \M17. Finding the data string is quite easy. Anything that is not a quote or an end of line will match. The Pascal code looks up the tag and delimites the data. This does not properly handle embedded quotes {\tt "} or embedded curly braces {\tt\char"7B} and {\tt\char"7D}. This could be done by using a start state. But for most data this is process should work. \Y\P$\4\X17:Match Strings\X\S$\6 $\={[\^\\"\\n]*\ }\hbox{\quad}\\{writeln}(\\{yyoutput},\39\.{\'\\\'},\39% \\{TagStr}[\\{field}],\39\.{\'\{\'},\39\\{yytext},\39\.{\'\}\'})$;\6 \]\par \U12.\fi \M18. The end of line is just echoed. No special processing is required. This section could be omitted since the default action of a \Lex\ program is to echo the output. \\{echo} is a procedure defined in \\{LexLib}. It writes the input string to \\{yyoutput}. \Y\P$\4\X18:Match End-Of-Line\X\S$\6 \={\\n\ }\hbox{\quad}\\{echo};\par \U12.\fi \M19. Now for the end of the \Lex\ program. \Lex\ creates a function \\{yylex}. This function can return a wide variety of values. The return value of \\{yylex} is used by \Yacc. This program does not require \Yacc\ and so \\{yylex} only returns at the end of the file. One difference between the Pascal and C version of Lex is the need for the main body of the program. In C \\{LexLib} would include a function \\{main} that would call \\{yylex}. \Y\P$\4\X19:Main body of the program\X\S$\6 \&{begin} \37\&{if} $\\{yylex}=0$ \1\&{then}\5 ;\2\6 \&{end}.\par \U6.\fi \N20. Index. Here is the index of the program. \fi \inx \:\&{const}, 5. \:\\{echo}, 18. \:\&{END\_DEFINITION}, \[2], \[3]. \:\&{END\_RULES}, \[2], \[3]. \:\\{field}, 11, 14, 15, 17. \:\\{inc}, 15. \:\\{input}, 14. \:\\{integer}, 11. \:\\{LexLib}, 7, 14, 18, 19. \:\\{main}, 19. \:\\{NumberOfFields}, 8, 9. \:\\{output}, 14. \:\&{program}, 3, \[6]. \:\&{START\_DEFINITION}, \[2], \[3]. \:\&{START\_RULES}, \[2], \[3], \[6]. \:\\{string}, 9. \:\\{TagMl}, \[6]. \:\\{TagStr}, 10, 17. \:\\{TagStrArray}, 9, 10. \:\&{uses}, \[5]. \:\\{write}, 16. \:\\{writeln}, 14, 17. \:\\{yyinput}, 14. \:\\{yylex}, 19. \:\\{yyoutput}, 14, 16, 17, 18. \:\\{yytext}, 17. \fin \:\X8:Constants in the outer block\X \U6. \:\X11:Globals in the outer block\X \U6. \:\X12:Lex production rules go here\X \U6. \:\X19:Main body of the program\X \U6. \:\X18:Match End-Of-Line\X \U12. \:\X16:Match Ending Quote\X \U12. \:\X15:Match Quote-Comma-Quote\X \U12. \:\X14:Match Starting Quote\X \U12. \:\X17:Match Strings\X \U12. \:\X10:Typed Constants in the outer block\X \U6. \:\X9:Types in the outer block\X \U6. \:\X7:Units that are used by the program\X \U6. \con -------------------------------- cut here -------------------------------- It would be interresting to see what a convensional Lex program looked like if it where processed via CWeb, FWeb, etc. ---- Jeffrey M\kern-.05em\raise.5ex\hbox{\b c}\kern-.05emArthur a.k.a. Jeffrey McArthur ATLIS Publishing phone: (301) 210-6655 12001 Indian Creek Court fax: (301) 210-4999 Beltsville, MD 20705 email: j_mcarthur@bix.com ================================================================================ Archive-Date: Mon, 29 Nov 1993 08:25:46 CST Sender: LP-Mgr@SHSU.edu From: Nico MACK Reply-To: LitProg@SHSU.edu, nico.mack@CRPHT.LU Subject: 6303 Cross Assembler for MPW Date: 29 Nov 1993 13:48:25 GMT Message-ID: <2dcuj9$bsb@caladan.restena.lu> To: LitProg@SHSU.EDU Hello world... I'm looking for a cross-assembler running under MPW for the 6303, respectively the 6801 micro-controller. Who knows where I may find this tool ? Many thanks Nico ================================================================================ Archive-Date: Mon, 29 Nov 1993 09:17:01 CST Sender: LP-Mgr@SHSU.edu From: lynbech@daimi.aau.dk (Christian Lynbech) Reply-To: LitProg@SHSU.edu, lynbech@DAIMI.AAU.DK Subject: Re: Embedded documentation Date: 29 Nov 1993 14:40:15 GMT Message-ID: <2dd1kf$21g@belfort.daimi.aau.dk> To: LitProg@SHSU.EDU Thus spake UPP201@ibm.rhrz.uni-bonn.de (Michael Burschik): >If this is the same as TeXinfo, then you can use the standalone info >browser, which is small and neat and does not require emacs. > The LaTeXinfo package generates ordinary info files. The info format is an ascii format that can be browsed by a number of tools, including emacs and the above mentioned standalone reader (part of the GNU TeXinfo distribution). In fact (La)TeXinfo is not necessary as source. Any program could generate information in the info format and have the tools work on it. But one would of course loose the hardcopy option. ------------------------------------------------------------------------------ Christian Lynbech | Hit the philistines three times over the | head with the Elisp reference manual. email: lynbech@daimi.aau.dk | - petonic@hal.com (Michael A. Petonic) ------------------------------------------------------------------------------ ================================================================================ Archive-Date: Mon, 29 Nov 1993 18:43:07 CST Sender: LP-Mgr@SHSU.edu From: crabb@tucson.Princeton.EDU (David W Crabb) Reply-To: LitProg@SHSU.edu, crabb@TUCSON.PRINCETON.EDU Subject: Re: Perl programs - CORRECTION Message-ID: <1993Nov29.155731.1800@Princeton.EDU> Keywords: perl Date: Mon, 29 Nov 1993 15:57:31 GMT To: LitProg@SHSU.EDU In the message I just posted, the syntax for the "here document" should be << . #!perl < Keywords: perl Date: Mon, 29 Nov 1993 15:57:24 GMT To: LitProg@SHSU.EDU #!perl >>PROLOGUE; Free-form discussion comes here. ... PROLOGUE # Code follows: __END__ Regards, David -- David Crabb crabb@phoenix.princeton.edu