On Fri, 1 Dec 2006, Jeff Inman wrote: > It seems wrong to me that the second set of "%{ ... %}", after a "%union{ > ...}", should insert > into the tab.cpp file, instead of into the tab.hpp file. I want to make more > declarations > that depend on the type produced by the union.
I definitely agree that the relationship between %{...%} and %union is confusing. We're working on a set of alternatives to %{...%} that will hopefully make things more explicit and more flexible: 1. %code {...} will insert code into your tab.cpp after the contents of the header, which include the union definition. You can, for example, declare static globals here. 2. %requires {...} will insert code into your tab.hpp and tab.cpp before the union definition. This is the right place for dependencies of your union. 3. %provides {...} will insert code into your tab.hpp and tab.cpp after the union definition. In other words, it's a place to write code that your parser module provides to external code. 4. %code-top {...} is not as often useful. It inserts code at the very top of your tab.cpp. These are implemented in CVS now. We will consider them experimental until we can get some user feedback. I can't promise when the next release will be though. _______________________________________________ help-bison@gnu.org http://lists.gnu.org/mailman/listinfo/help-bison