Bison + Flex on C++ don't work

Joao Pedro Abreu De Souza <[email protected]>
Newsgroups gmane.comp.parsers.bison.general
Message-ID <CAB57kXrR280-svsLADAweqcOpaQGaB6PQ++cbAPdOH2Qkr3Hgw@mail.gmail.com>
Hi folks. My friend Nicholas and I are trying to make a compiler for a
simpler language(just expressions by now) with flex and bison using C++.

Using
https://www.gnu.org/software/bison/manual/html_node/A-Complete-C_002b_002b-Example.html
as a guide, we code the repository below, but when We try

bison -d parser.yy -o parser.cc
lex scanner.l
g++ lex.yy.cc parser.cc main.cc -o cppimp


Give us the error in the file

repository : https://github.com/nicholas-barcelos/Cppimp

We try to change headers of place, move definitions of class, but nothing
work. What are we making wrong? Thanks in advance

_______________________________________________
[email protected] https://lists.gnu.org/mailman/listinfo/help-bison
log.txt (text/plain, 14.1 KB)
Commands

bison -d parser.yy -o parser.cc
lex scanner.l 
g++ *.cc -o cppimp

Log

driver.cc: In member function ‘int driver::parse(const string&)’:
driver.cc:18:19: error: no match for call to ‘(yy::parser) ()’
   int res = parse();
                   ^
lex.yy.cc: In function ‘yy::parser::symbol_type yylex(driver&)’:
lex.yy.cc:667:9: error: ‘yy_init’ was not declared in this scope
  if ( !(yy_init) )
         ^~~~~~~
lex.yy.cc:667:9: note: suggested alternative: ‘yy_nxt’
  if ( !(yy_init) )
         ^~~~~~~
         yy_nxt
lex.yy.cc:675:11: error: ‘yy_start’ was not declared in this scope
   if ( ! (yy_start) )
           ^~~~~~~~
lex.yy.cc:675:11: note: suggested alternative: ‘yy_act’
   if ( ! (yy_start) )
           ^~~~~~~~
           yy_act
lex.yy.cc:678:10: error: ‘yyin’ was not declared in this scope
   if ( ! yyin )
          ^~~~
lex.yy.cc:685:10: error: ‘yyout’ was not declared in this scope
   if ( ! yyout )
          ^~~~~
lex.yy.cc:685:10: note: suggested alternative: ‘yy_act’
   if ( ! yyout )
          ^~~~~
          yy_act
lex.yy.cc:317:30: error: ‘yy_buffer_stack’ was not declared in this scope
 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
                              ^
lex.yy.cc:692:10: note: in expansion of macro ‘YY_CURRENT_BUFFER’
   if ( ! YY_CURRENT_BUFFER ) {
          ^~~~~~~~~~~~~~~~~
lex.yy.cc:317:30: note: suggested alternative: ‘yy_buffer_state’
 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
                              ^
lex.yy.cc:692:10: note: in expansion of macro ‘YY_CURRENT_BUFFER’
   if ( ! YY_CURRENT_BUFFER ) {
          ^~~~~~~~~~~~~~~~~
lex.yy.cc:318:48: error: ‘yy_buffer_stack_top’ was not declared in this scope
                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
                                                ^
lex.yy.cc:692:10: note: in expansion of macro ‘YY_CURRENT_BUFFER’
   if ( ! YY_CURRENT_BUFFER ) {
          ^~~~~~~~~~~~~~~~~
lex.yy.cc:318:48: note: suggested alternative: ‘yy_buffer_state’
                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
                                                ^
lex.yy.cc:692:10: note: in expansion of macro ‘YY_CURRENT_BUFFER’
   if ( ! YY_CURRENT_BUFFER ) {
          ^~~~~~~~~~~~~~~~~
lex.yy.cc:693:4: error: ‘yyensure_buffer_stack’ was not declared in this scope
    yyensure_buffer_stack ();
    ^~~~~~~~~~~~~~~~~~~~~
lex.yy.cc:693:4: note: suggested alternative: ‘yy_buffer_state’
    yyensure_buffer_stack ();
    ^~~~~~~~~~~~~~~~~~~~~
    yy_buffer_state
lex.yy.cc:695:23: error: ‘yyin’ was not declared in this scope
     yy_create_buffer( yyin, YY_BUF_SIZE );
                       ^~~~
lex.yy.cc:695:5: error: ‘yy_create_buffer’ was not declared in this scope
     yy_create_buffer( yyin, YY_BUF_SIZE );
     ^~~~~~~~~~~~~~~~
lex.yy.cc:695:5: note: suggested alternative: ‘yy_new_buffer’
     yy_create_buffer( yyin, YY_BUF_SIZE );
     ^~~~~~~~~~~~~~~~
     yy_new_buffer
lex.yy.cc:698:3: error: ‘yy_load_buffer_state’ was not declared in this scope
   yy_load_buffer_state(  );
   ^~~~~~~~~~~~~~~~~~~~
lex.yy.cc:698:3: note: suggested alternative: ‘yy_buffer_state’
   yy_load_buffer_state(  );
   ^~~~~~~~~~~~~~~~~~~~
   yy_buffer_state
lex.yy.cc:719:12: error: ‘yy_c_buf_p’ was not declared in this scope
   yy_cp = (yy_c_buf_p);
            ^~~~~~~~~~
lex.yy.cc:719:12: note: suggested alternative: ‘yy_bp’
   yy_cp = (yy_c_buf_p);
            ^~~~~~~~~~
            yy_bp
lex.yy.cc:722:13: error: ‘yy_hold_char’ was not declared in this scope
   *yy_cp = (yy_hold_char);
             ^~~~~~~~~~~~
lex.yy.cc:722:13: note: suggested alternative: ‘__u_char’
   *yy_cp = (yy_hold_char);
             ^~~~~~~~~~~~
             __u_char
lex.yy.cc:730:23: error: ‘yy_start’ was not declared in this scope
   yy_current_state = (yy_start);
                       ^~~~~~~~
lex.yy.cc:730:23: note: suggested alternative: ‘yy_act’
   yy_current_state = (yy_start);
                       ^~~~~~~~
                       yy_act
lex.yy.cc:737:6: error: ‘yy_last_accepting_state’ was not declared in this scope
     (yy_last_accepting_state) = yy_current_state;
      ^~~~~~~~~~~~~~~~~~~~~~~
lex.yy.cc:738:6: error: ‘yy_last_accepting_cpos’ was not declared in this scope
     (yy_last_accepting_cpos) = yy_cp;
      ^~~~~~~~~~~~~~~~~~~~~~
lex.yy.cc:750:12: error: ‘yy_last_accepting_cpos’ was not declared in this scope
   yy_cp = (yy_last_accepting_cpos);
            ^~~~~~~~~~~~~~~~~~~~~~
lex.yy.cc:751:23: error: ‘yy_last_accepting_state’ was not declared in this scope
   yy_current_state = (yy_last_accepting_state);
                       ^~~~~~~~~~~~~~~~~~~~~~~
lex.yy.cc:365:20: error: ‘yytext’ was not declared in this scope
 #define yytext_ptr yytext
                    ^
lex.yy.cc:380:3: note: in expansion of macro ‘yytext_ptr’
  (yytext_ptr) = yy_bp; \
   ^~~~~~~~~~
lex.yy.cc:757:3: note: in expansion of macro ‘YY_DO_BEFORE_ACTION’
   YY_DO_BEFORE_ACTION;
   ^~~~~~~~~~~~~~~~~~~
lex.yy.cc:365:20: note: suggested alternative: ‘yylex’
 #define yytext_ptr yytext
                    ^
lex.yy.cc:380:3: note: in expansion of macro ‘yytext_ptr’
  (yytext_ptr) = yy_bp; \
   ^~~~~~~~~~
lex.yy.cc:757:3: note: in expansion of macro ‘YY_DO_BEFORE_ACTION’
   YY_DO_BEFORE_ACTION;
   ^~~~~~~~~~~~~~~~~~~
lex.yy.cc:764:8: error: ‘yy_flex_debug’ was not declared in this scope
   if ( yy_flex_debug )
        ^~~~~~~~~~~~~
lex.yy.cc:579:14: error: ‘LexerOutput’ was not declared in this scope
 #define ECHO LexerOutput( yytext, yyleng )
              ^
scanner.l:55:1: note: in expansion of macro ‘ECHO’
 
 ^   
lex.yy.cc:323:35: error: ‘yy_buffer_stack’ was not declared in this scope
 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
                                   ^
lex.yy.cc:902:8: note: in expansion of macro ‘YY_CURRENT_BUFFER_LVALUE’
   if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
        ^~~~~~~~~~~~~~~~~~~~~~~~
lex.yy.cc:323:35: note: suggested alternative: ‘yy_buffer_state’
 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
                                   ^
lex.yy.cc:902:8: note: in expansion of macro ‘YY_CURRENT_BUFFER_LVALUE’
   if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
        ^~~~~~~~~~~~~~~~~~~~~~~~
lex.yy.cc:323:53: error: ‘yy_buffer_stack_top’ was not declared in this scope
 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
                                                     ^
lex.yy.cc:902:8: note: in expansion of macro ‘YY_CURRENT_BUFFER_LVALUE’
   if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
        ^~~~~~~~~~~~~~~~~~~~~~~~
lex.yy.cc:323:53: note: suggested alternative: ‘yy_buffer_state’
 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
                                                     ^
lex.yy.cc:902:8: note: in expansion of macro ‘YY_CURRENT_BUFFER_LVALUE’
   if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
        ^~~~~~~~~~~~~~~~~~~~~~~~
lex.yy.cc:913:5: error: ‘yy_n_chars’ was not declared in this scope
    (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
     ^~~~~~~~~~
lex.yy.cc:913:5: note: suggested alternative: ‘__u_char’
    (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
     ^~~~~~~~~~
     __u_char
lex.yy.cc:917:46: error: ‘yyin’ was not declared in this scope
    YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin.rdbuf();
                                              ^~~~
lex.yy.cc:323:35: error: ‘yy_buffer_stack’ was not declared in this scope
 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
                                   ^
lex.yy.cc:929:25: note: in expansion of macro ‘YY_CURRENT_BUFFER_LVALUE’
   if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
                         ^~~~~~~~~~~~~~~~~~~~~~~~
lex.yy.cc:323:35: note: suggested alternative: ‘yy_buffer_state’
 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
                                   ^
lex.yy.cc:929:25: note: in expansion of macro ‘YY_CURRENT_BUFFER_LVALUE’
   if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
                         ^~~~~~~~~~~~~~~~~~~~~~~~
lex.yy.cc:323:53: error: ‘yy_buffer_stack_top’ was not declared in this scope
 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
                                                     ^
lex.yy.cc:929:25: note: in expansion of macro ‘YY_CURRENT_BUFFER_LVALUE’
   if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
                         ^~~~~~~~~~~~~~~~~~~~~~~~
lex.yy.cc:323:53: note: suggested alternative: ‘yy_buffer_state’
 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
                                                     ^
lex.yy.cc:929:25: note: in expansion of macro ‘YY_CURRENT_BUFFER_LVALUE’
   if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
                         ^~~~~~~~~~~~~~~~~~~~~~~~
lex.yy.cc:929:62: error: ‘yy_n_chars’ was not declared in this scope
   if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
                                                              ^~~~~~~~~~
lex.yy.cc:929:62: note: suggested alternative: ‘__u_char’
   if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
                                                              ^~~~~~~~~~
                                                              __u_char
lex.yy.cc:935:23: error: ‘yy_get_previous_state’ was not declared in this scope
    yy_current_state = yy_get_previous_state(  );
                       ^~~~~~~~~~~~~~~~~~~~~
lex.yy.cc:935:23: note: suggested alternative: ‘yy_current_state’
    yy_current_state = yy_get_previous_state(  );
                       ^~~~~~~~~~~~~~~~~~~~~
                       yy_current_state
lex.yy.cc:946:20: error: ‘yy_try_NUL_trans’ was not declared in this scope
    yy_next_state = yy_try_NUL_trans( yy_current_state );
                    ^~~~~~~~~~~~~~~~
lex.yy.cc:967:17: error: ‘yy_get_next_buffer’ was not declared in this scope
   else switch ( yy_get_next_buffer(  ) )
                 ^~~~~~~~~~~~~~~~~~
lex.yy.cc:967:17: note: suggested alternative: ‘yy_new_buffer’
   else switch ( yy_get_next_buffer(  ) )
                 ^~~~~~~~~~~~~~~~~~
                 yy_new_buffer
lex.yy.cc:971:6: error: ‘yy_did_buffer_switch_on_eof’ was not declared in this scope
     (yy_did_buffer_switch_on_eof) = 0;
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~
lex.yy.cc:973:10: error: ‘yywrap’ was not declared in this scope
     if ( yywrap(  ) )
          ^~~~~~
lex.yy.cc:973:10: note: suggested alternative: ‘yy_bp’
     if ( yywrap(  ) )
          ^~~~~~
          yy_bp
lex.yy.cc:172:32: error: ‘yyin’ was not declared in this scope
 #define YY_NEW_FILE yyrestart( yyin  )
                                ^
lex.yy.cc:993:7: note: in expansion of macro ‘YY_NEW_FILE’
       YY_NEW_FILE;
       ^~~~~~~~~~~
lex.yy.cc:172:21: error: ‘yyrestart’ was not declared in this scope
 #define YY_NEW_FILE yyrestart( yyin  )
                     ^
lex.yy.cc:993:7: note: in expansion of macro ‘YY_NEW_FILE’
       YY_NEW_FILE;
       ^~~~~~~~~~~
lex.yy.cc:1002:24: error: ‘yy_get_previous_state’ was not declared in this scope
     yy_current_state = yy_get_previous_state(  );
                        ^~~~~~~~~~~~~~~~~~~~~
lex.yy.cc:1002:24: note: suggested alternative: ‘yy_current_state’
     yy_current_state = yy_get_previous_state(  );
                        ^~~~~~~~~~~~~~~~~~~~~
                        yy_current_state
lex.yy.cc:615:29: error: ‘LexerError’ was not declared in this scope
 #define YY_FATAL_ERROR(msg) LexerError( msg )
                             ^
lex.yy.cc:1022:3: note: in expansion of macro ‘YY_FATAL_ERROR’
   YY_FATAL_ERROR(
   ^~~~~~~~~~~~~~
lex.yy.cc:615:29: note: suggested alternative: ‘strerror’
 #define YY_FATAL_ERROR(msg) LexerError( msg )
                             ^
lex.yy.cc:1022:3: note: in expansion of macro ‘YY_FATAL_ERROR’
   YY_FATAL_ERROR(
   ^~~~~~~~~~~~~~
scanner.l: In member function ‘void driver::scan_begin()’:
scanner.l:70:5: error: ‘yy_flex_debug’ was not declared in this scope
     if (file.empty () || file == "-")
     ^~~~~~~~~~~~~
scanner.l:72:9: error: ‘yyin’ was not declared in this scope
     else if (!(yyin = fopen (file.c_str (), "r")))
         ^~~~
scanner.l:73:16: error: ‘yyin’ was not declared in this scope
     {
                ^   
scanner.l: In member function ‘void driver::scan_end()’:
scanner.l:83:11: error: ‘yyin’ was not declared in this scope
 }
           ^   
parser.cc: In member function ‘virtual int yy::parser::parse()’:
parser.cc:446:38: error: ‘yylex’ was not declared in this scope
             symbol_type yylookahead (yylex (drv));
                                      ^~~~~
parser.cc:446:38: note: suggested alternative: ‘yylen’
             symbol_type yylookahead (yylex (drv));
                                      ^~~~~
                                      yylen
parser.yy:53:7: error: invalid use of incomplete type ‘class driver’
     | exp                       { drv.result = $1; };
       ^~~
In file included from parser.cc:46:0:
parser.yy:12:11: note: forward declaration of ‘class driver’
     class driver;
           ^~~~~~
parser.tab.cc: In member function ‘virtual int yy::parser::parse()’:
parser.tab.cc:446:38: error: ‘yylex’ was not declared in this scope
             symbol_type yylookahead (yylex (drv));
                                      ^~~~~
parser.tab.cc:446:38: note: suggested alternative: ‘yylen’
             symbol_type yylookahead (yylex (drv));
                                      ^~~~~
                                      yylen
parser.yy:53:7: error: invalid use of incomplete type ‘class driver’
     | exp                       { drv.result = $1; };
       ^~~
In file included from parser.tab.cc:46:0:
parser.yy:12:11: note: forward declaration of ‘class driver’
     class driver;
           ^~~~~~
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.