am using bison 2.1, flex version 2.5.4 - I have no choice about using anything newer for now (using gnuwin32), but it would be nice to know if a bug is fixed in a newer version.
Q1. do I always need to write a driver for a C++ parser/lexer combo? Q2. I haven't gotten a C++ version of the parser to successfully compile yet. am using version 2.1 bison. in the lexer, %option noyywrap batch yylineno c++ in the .y file, %locations %skeleton "lalr1.cc" Q3. do I need to write a C++ driver in every case? they do that in the C++ example in the bison manual, but I do not know if it is actually required or not. Q4. I am a wee bit confused by the code generated way below starting at namespace yy. maybe it is just old and experimental (2.1). I am wondering how I can access what used to be yylval. I think it is now semantic_type. and what holds the integer token value itself? token_number_type? how do I call the parser? the parser class is named parser. am I correct in assuming it's something like #include "parser.tab.hpp" int main(void) { yy:parser p; int returnValue = p.parse(); } ? namespace yy { class parser; template <typename P> struct traits { }; template <> struct traits<parser> { typedef unsigned short int token_number_type; typedef short int rhs_number_type; typedef int state_type; typedef YYSTYPE semantic_type; typedef location location_type; }; } namespace yy { /// A Bison parser. class parser { /// Symbol semantic values. typedef traits<parser>::semantic_type semantic_type; /// Symbol locations. typedef traits<parser>::location_type location_type; public: /// Build a parser object. parser () : yydebug_ (false), yycdebug_ (&std::cerr) { } virtual ~parser () { } /// Parse. /// \returns 0 iff parsing succeeded. virtual int parse (); #if YYDEBUG /// A type to store symbol numbers and -1. typedef traits<parser>::rhs_number_type rhs_number_type; ... Jim Michaels [EMAIL PROTECTED] http://JesusnJim.com _______________________________________________ help-bison@gnu.org http://lists.gnu.org/mailman/listinfo/help-bison