Я хочу использовать 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;
}
Возможно, самое простое решение — добавить отдельную функцию в файл грамматики, которая, в свою очередь, вызывает yy_scan_string
,
/* Stuff... */
%%
/* Grammar */
%%
void scan_string(const char* str)
{
yy_switch_to_buffer(yy_scan_string(str));
}
Тогда позвони scan_string
из вашего кода.
Других решений пока нет …