flex++ and bison++ were created from flex and bison by A. Coetmeur in the 1990s. These two programs provided seamless integration with C++, allowing developers to code actions in C++ and call private member functions of a parent class. This makes it straightforward to embed a parser and scanner by private inheritance, creating a clean “compiler” class which need expose only the results of the parsing. For these and other reasons, flex++ and bison++ impressed me as being well-engineered when I first discovered them, and I still prefer their approach to C++ integration.
Releases of flex++ and bison++ ended in 1993 and they fell out of date as C++, gcc, flex,and bison all evolved. New releases of gcc would often reject the generated parser and lexer code because it no longer conformed to the evolving C++ standard. To keep two legacy programs that used flex++ and bison++ afloat, I was making hasty, on-the-fly patches whenever a new version of gcc arrived.
No pre-built flex++/bison++ packages are available for openSUSE (as of this post). So recently I loaded the 1993 releases into Google Project Hosting and updated them more carefully to build cleanly under gcc 4.5 and generate code that compiles and links cleanly under g++ 4.5. I also added a configure file to flex++, which was so old it didn’t have one.
If you’ve arrived here by following the Contact Page link from the Google Project page, leave a comment and I’ll get back to you.
I am trying to build flex++-2.3.8-45 under Ubuntu 11.04 and getting some link errors on ‘flexscan’ and ‘set_input_file’. I am using byacc-20100610 for yacc and flex-2.5.35. What do I need to do to resolve these two undefined references?
I would appreciate any guidance you can give me. In the meantime, I’ll dig into the source and see if I can figure out what to substitute.
Sincere regards,
Gerald.
Link | November 29th, 2011 at 2:07 am
Hi Gerald,
Fixes to the issues you discovered have been checked in as rev 26.
Thanks for your help tracking down the problems and testing the fixes.
Link | December 21st, 2011 at 5:36 pm