Path: csiph.com!newsfeed.hal-mli.net!feeder3.hal-mli.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!news.misty.com!news.iecc.com!.POSTED!nerds-end From: anton@mips.complang.tuwien.ac.at (Anton Ertl) Newsgroups: comp.compilers Subject: Re: Articles/books that discuss separating the context-free part of a language from the context-sensitive part? Date: Mon, 20 May 2013 10:53:39 GMT Organization: Institut fuer Computersprachen, Technische Universitaet Wien Lines: 31 Sender: johnl@iecc.com Approved: comp.compilers@iecc.com Message-ID: <13-05-018@comp.compilers> References: <13-05-010@comp.compilers> NNTP-Posting-Host: news.iecc.com X-Trace: leila.iecc.com 1369076688 43290 64.57.183.58 (20 May 2013 19:04:48 GMT) X-Complaints-To: abuse@iecc.com NNTP-Posting-Date: Mon, 20 May 2013 19:04:48 +0000 (UTC) Keywords: parse, theory Posted-Date: 20 May 2013 15:04:48 EDT X-submission-address: compilers@iecc.com X-moderator-address: compilers-request@iecc.com X-FAQ-and-archives: http://compilers.iecc.com Xref: csiph.com comp.compilers:904 "Costello, Roger L." writes: >The poster makes the point that most programming languages define a >context-free core, and then have additional algorithms which run on the parse >tree to filter out constructs that are illegal in the language: ... >[ [...] it also permits much better >error messages. -John] That depends on the syntax of the language. E.g., at one time Modula-2 was the language used in our introductory programming course 25 years ago, our students used to write things like a<3 AND b<3 and the compiler reported a type error (a and b were of type INTEGER). But it really was a syntax error. The students should have written (a<3) AND (b<3) because the implicit binding was a<(3 AND b)<3 and "3 AND b" was a type error. This error message confused the students no end. - anton -- M. Anton Ertl anton@mips.complang.tuwien.ac.at http://www.complang.tuwien.ac.at/anton/