Files
bison/data
Akim Demaille 0e0ed236ab Fuse the three stacks into a single one.
In order to make it easy to perform benchmarks to ensure that there are no
performance loss, lalr1.cc is forked into lalr1-fusion.cc.  Eventually,
lalr1-fusion.cc will replace lalr1.cc.

Meanwhile, to make sure that lalr1-fusion.cc is correctly exercized by the
test suite, the user must install a symbolic link from lalr1.cc to it.

Instead of having three stacks (state, value, location), use a stack
of triples.  This considerably simplifies the code (and it will be
easier not to require locations as currently does the C++ parser),
and also gives a 10% speedup according to etc/bench (probably mainly since
memory allocation is done once instead of three times).

Another motivation is to make it easier to destruct properly
semantic values: now that they are bound to their state (hence
symbol type) it will be easier to call the appropriate destructor.

These changes should probably benefit the C parser too.

	* data/lalr1.cc: Copy as...  * data/lalr1-fusion.cc: this new
	file.
	(b4_rhs_value, b4_rhs_location): New definitions overriding those
	from c++.m4.
	(state_stack_type, semantic_stack_type, location_stack_type)
	(yystate_stack_, yysemantic_stack_, yylocation_stack_): Remove.
	(data_type, stack_type, yystack_): New.
	(YYLLOC_DEFAULT, yypush_): Adjust.
	(yyerror_range): Now based on data_type, not location_type.
2008-11-03 21:59:59 +01:00
..
2008-08-27 20:44:41 -06:00
2002-02-25 14:27:12 +00:00
2008-11-01 20:00:01 +01:00
2008-11-01 20:00:01 +01:00
2007-08-15 20:21:33 +00:00

-*- outline -*-

This directory contains Bison skeletons: the general shapes of the
different parser kinds, that are specialized for specific grammars by
the bison program.

Currently, there are only three supported skeletons:

- yacc.c
  It used to be named bison.simple: it corresponds to C Yacc
  compatible LALR(1) parsers.

- lalr1.cc
  Produces a C++ parser class.  It is still very experimental, and not
  yet supported.  Please, subscribe to bison-patches@gnu.org.

- glr.c
  A Generalized LR C parser based on Bison's LALR(1) tables.

These skeletons are the only ones supported by the Bison team.
Because the interface between skeletons and the bison program is not
finished, *we are not bound to it*.  In particular, Bison is not
mature enough for us to consider that ``foreign skeletons'' are
supported.

-----

Copyright (C) 2002 Free Software Foundation, Inc.

This file is part of GNU Bison.

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.