From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.5-pre1 (2020-06-20) on ip-172-31-74-118.ec2.internal X-Spam-Level: X-Spam-Status: No, score=-1.9 required=3.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.5-pre1 Date: 15 Jan 93 16:59:44 GMT From: agate!usenet.ins.cwru.edu!magnus.acs.ohio-state.edu!zaphod.mps.ohio-state .edu!usc!cs.utexas.edu!qt.cs.utexas.edu!yale.edu!think.com!spdcc!iecc!compilers -sender@ucbvax.Berkeley.EDU (John Hagerman) Subject: Re: Compiler Construction in Ada Message-ID: <93-01-108@comp.compilers> List-Id: dtl8v@holmes.acc.Virginia.EDU (Heracleitus) writes: >... The shift-reduce parser was >difficult but not impossible, but coding it contributed little to the >fundamental understanding, and table-based interpretations that led to the >introduction of yacc helped the students to grasp the concept much better >than coding did. The semantic analyzer was by far the hardest part of the >project, and unfortunately, after coding the parser and syntactic analyzer >etc., there was little enthusiasm left for it. I had a class experience which gave me a different perspective. In this class (at UMass, but not taught by Eliot :-), we implemented a subset of ADA using Pascal; the underlying machine was a simulator that executed the tuple form, so we could learn about machine- independent optimizations. We wrote our own lexical analyzers, and a parser generator tool was available, but I wrote my own instead. I followed Chapter 6 of the (first) Dragon Book, going from an LR(0) to an LALR(1) generator. This gave me a thorough understanding of LR parsing. Since then, I have noticed that people who use LEX and YACC and have *not* been exposed to the gory theory tend to write bad grammars (e.g., so ambiguous that they are hard to modify). I have forgotten many of the details of LR parsing, but my exposure gave me intuition about what makes a grammar good; I'm very glad of it, since my current work is compiler-related. Now, I still agree with Eliot and Doug. The point of a first compiler course is to expose CS majors to that aspect of computing, and types and so on are very important. But I think that anyone who wants to do real compiler work would benefit from the experience of digging into parsers and parser generation. - John -- hagerman@ece.cmu.edu -- Send compilers articles to compilers@iecc.cambridge.ma.us or {ima | spdcc | world}!iecc!compilers. Meta-mail to compilers-request.