gpt4 book ai didi

c++ - 用 flex & bison 解析压缩文件?

转载 作者:搜寻专家 更新时间:2023-10-31 01:44:39 25 4
gpt4 key购买 nike

是否可以在 flex 中解析压缩文件?

yyinFILE* 类型的指针。所以我想做这样的事情:创建一个压缩文件管道并将 yyin 设置为它?

最佳答案

使用flex,您可以定义宏YY_INPUT(buf,result,maxlen)来改变flex获取输入的方式。宏必须读取最多 maxlen 个字节到buf,并返回存储在result 中的实际字节数,或将 result 设置为 YY_NULL 以指示 EOF。

例如,使用zlib 的便捷接口(interface),您可以将如下内容插入到您的flex 文件中:

 %{

#include <zlib.h>
gzFile gz_yyin;
#define YY_INPUT(buf,result,maxlen) do { \
int n = gzread(gz_yyin, buf, maxlen); \
if (n < 0) { /* handle the error */ } \
result = n > 0 ? n : YY_NULL; \
} while (0)

%}

// lots of stuff skipped

int main(int argc, char** argv) {
gz_yyin = gzopen(argv[1], "rb");
if (gz_yyin == NULL) { /* handle the error */ }
/* Start parsing */
// ...

(您可以使用 gzdopen 使用打开的文件描述符(例如管道)创建 gzfile。)

关于c++ - 用 flex & bison 解析压缩文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23246076/

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