gpt4 book ai didi

c++ - 如何在单独的文件中使用 `yy_scan_string(const char *str)`(由 lex yacc 生成)

转载 作者:太空狗 更新时间:2023-10-29 21:03:59 26 4
gpt4 key购买 nike

我想在我的 main.cpp 中使用 YY_BUFFER_STATE yy_scan_string(const char *str) 和其他函数,如 yyparse(),我做的事情:

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

但是出现错误error:YY_BUFFER_STATE' does not name a type`, then I did:

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

关于c++ - 如何在单独的文件中使用 `yy_scan_string(const char *str)`(由 lex yacc 生成),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12564825/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com