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=-0.0 required=3.0 tests=BAYES_20 autolearn=ham autolearn_force=no version=3.4.5-pre1 Date: 15 Jan 93 02:04:51 GMT From: agate!usenet.ins.cwru.edu!magnus.acs.ohio-state.edu!zaphod.mps.ohio-state .edu!usc!sol.ctr.columbia.edu!eff!world!iecc!compilers-sender@ucbvax.Berkeley.E DU (Heracleitus) Subject: Re: Compiler Construction in Ada Message-ID: <93-01-104@comp.compilers> List-Id: moss@cs.cmu.edu (Eliot Moss) writes: >Reacting to previous postings, I don't think deep understanding of the >syntactic aspects is quite the important thing. It is much more important >to gain understanding of type checking, semantic processing in general, >code generation, and the role of optimization, in my opinion. Many people >concentrate on the syntactic stuff because it's clean and theoretical, but >the tools make it by the far the easiest part of compiling, so to me it >does not seem the smart place to spend limited classroom time. I have to agree with this point of view. I took a class in programming languages that involved writing a nearly-full front end for a Unity compiler, and the lexical analyzer was the EASIEST part of the project by far, both to understand and to code. 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. Again unfortunate is that the semantic analyzer is probably the most important and helpful part of the compiler. It's usually easy to find a simple syntactic mistake in a program like missing a semicolon or failing to include spaces, even if the error is generic and cryptic. It's harder to keep track of things like type compatibilities and proper code use that the semantic analyzer manages. So I'm all for using yacc. That's how the professor constructed his assignment solutions anyway! BNF grammars are a little easier to handle, even when disambiguating them is taken into account. Doug Lamb University of Virginia dtl8v@Virginia.EDU -- Send compilers articles to compilers@iecc.cambridge.ma.us or {ima | spdcc | world}!iecc!compilers. Meta-mail to compilers-request.