4

私は私YY_BUFFER_STATE yy_scan_string(const char *str)のような他の機能を使用したい、私は物事をやった:yyparse()main.cpp

extern "C"{
extern YY_BUFFER_STATE yy_scan_string(const char *str);
}

しかし、error:YY_BUFFER_STATE' が型に名前を付けていないというエラーがあるので、次のようにしました。

extern yy_buffer_state;
typedef yy_buffer_state *YY_BUFFER_STATE;
extern int yyparse();
extern YY_BUFFER_STATE yy_scan_buffer(char *, size_t);

しかし、同じ問題も、それを行う方法、ありがとう、本当に助けてくれてありがとう!!

これが main.cpp ファイルです。#include "main.h"

 #include <string.h>
 extern "C"{void scan_string(const char* str);}
 int yyparse();
 void test::getvalue(int& var)
 {
    if (var!=0)
        std::cout<<"True"<<std::endl;
    else
        std::cout<<"False"<<std::endl;
  }

  int main(){
     std::string str="T+F";
     //how to send str as an Input to parse?

     yyparse();
     return 0;
   }
4

1 に答える 1

5

最も簡単な解決策は、おそらく、文法ファイルに別の関数を追加して、それを呼び出すことyy_scan_stringです。

/* Stuff... */

%%

/* Grammar */

%%

void scan_string(const char* str)
{
    yy_switch_to_buffer(yy_scan_string(str));
}

次にscan_string、コードから呼び出します。

于 2012-09-24T12:14:56.613 に答える