Related articles |
---|
Articles/books that discuss separating the context-free part of a lang costello@mitre.org (Costello, Roger L.) (2013-05-17) |
Re: Articles/books that discuss separating the context-free part of a gah@ugcs.caltech.edu (glen herrmannsfeldt) (2013-05-18) |
Re: Articles/books that discuss separating the context-free part of a ademakov@gmail.com (Aleksey Demakov) (2013-05-18) |
Re: Articles/books that discuss separating the context-free part of a genew@telus.net (Gene Wirchenko) (2013-05-19) |
Re: Articles/books that discuss separating the context-free part of a gah@ugcs.caltech.edu (glen herrmannsfeldt) (2013-05-20) |
Re: Articles/books that discuss separating the context-free part of a anton@mips.complang.tuwien.ac.at (2013-05-20) |
Re: Articles/books that discuss separating the context-free part of a genew@telus.net (Gene Wirchenko) (2013-05-20) |
From: | glen herrmannsfeldt <gah@ugcs.caltech.edu> |
Newsgroups: | comp.compilers |
Date: | Sat, 18 May 2013 00:18:54 +0000 (UTC) |
Organization: | Aioe.org NNTP Server |
References: | 13-05-010 |
Keywords: | parse |
Posted-Date: | 17 May 2013 21:23:53 EDT |
Costello, Roger L. <costello@mitre.org> wrote:
> I read this fantastic post on the comp.theory list:
> http://coding.derkeiler.com/Archive/General/comp.theory/2004-03/0189.html
> 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:
(snip)
> [That's been the conventional wisdom at least since I took a compilers
> course in the early 1970s. I believe I mentioned it in lex&yacc and
> later in flex&bison. It's easier, and it also permits much better
> error messages. -John]
As I remember it, it is not so easy to do for recursive descent
parsers. As a result, as noted, you get poor error messages, such as:
SYNTAX ERROR
somewhere near where the problem is. For languages with reserved works,
it is nice to say exactly what the problem is. It gets more
interesting without reserved words. Yesterday, following a post
in comp.lang.fortran I tried:
TYPE :: DEEP
TYPE(DEEP) :: POINTER
END TYPE
When compiling it, the error message, pointing right to the
word POINTER, say "must have POINTER attribute".
Fortunately it only took me a few seconds to figure out, and then
laugh at it. But yes, you can get funny messages without reserved
words.
-- glen
Return to the
comp.compilers page.
Search the
comp.compilers archives again.