我想在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;
}
答案 0 :(得分:4)
最简单的解决方案可能是在语法文件中添加一个单独的函数,然后调用yy_scan_string
。
/* Stuff... */
%%
/* Grammar */
%%
void scan_string(const char* str)
{
yy_switch_to_buffer(yy_scan_string(str));
}
然后从您的代码中调用scan_string
。