Related articles |
---|
Source locations with Flex+Bison bjarni.ferret@update.uu.se (Bjarni Juliusson) (2005-03-31) |
Re: Source locations with Flex+Bison lfinsto1@gwdg.de (Laurence Finston) (2005-04-02) |
From: | Laurence Finston <lfinsto1@gwdg.de> |
Newsgroups: | comp.compilers |
Date: | 2 Apr 2005 19:32:51 -0500 |
Organization: | GWDG, Goettingen |
References: | 05-03-132 |
Keywords: | errors, lex |
Posted-Date: | 02 Apr 2005 19:32:50 EST |
On Fri, 31 Mar 2005, Bjarni Juliusson wrote:
> The problem:
> I have a lexer, written for Flex, and a parser, written for Bison. Now I
> want the source code locations of the tokens to be propagated up to the
> parser to allow meaningful error messages.
[...]
> I have no reason to make the parser pure, by the way.
I recommend always generating a pure parser. Even if you don't want
to use multiple threads or processes now, you might want to in the
future. I find the extra effort of making functions (including
`yylex()' and `yyparse()') thread-safe and/or reentrant is minimal in
comparison to the potential benefits. In addition, with Bison, you
can pass a parameter to `yyparse()' when you generate a pure parser; a
feature I find extremely useful.
I don't remember the details of using locations, since I haven't been
working on this part of my package lately. However, if you want an
example, you may examine my code. It's available at:
http://savannah.gnu.org/cgi-bin/viewcvs/3dldf/3dldf/Group/
I define `YYLTYPE' in the file
http://savannah.gnu.org/cgi-bin/viewcvs/3dldf/3dldf/Group/CWEB/pbsndecl.w
It's also used in the files `pfuncfin.w', `scan.web',
and `scanprsf.web' in the same directory.
You can find examples of using locations in parser rules in
the files `pcondit.w' and `pnumexpr.w'.
Laurence Finston
http://www.gnu.org/software/3dldf/LDF.html
Return to the
comp.compilers page.
Search the
comp.compilers archives again.