0

我有一个嵌入式应用程序,它通过 HTTP 与 RESTful 服务器通信。一些服务涉及向客户端发送一些数据,这些数据使用我使用flex编写的非常简单的词法分析器进行解释。

现在我正在添加一个 gzip 压缩层以减少带宽消耗,但由于内存要求,我对当前架构不满意:首先我在缓冲区中接收整个数据,然后我将整个缓冲区解压缩到一个新的缓冲区,然后我将整个数据提供给 flex。

通过将来自 HTTP 客户端的分块数据提供给 zlib 例程,我可以在第一步和第二步之间节省一些内存。但我想知道是否可以在 zlib 分块输出和 flex 输入之间做同样的事情。

目前我只使用yy_scan_bytesandyylex来分析输入。flex 是否有任何功能可以将多个数据块提供给yylex? 我已阅读有关多个输入缓冲区的文档,但无济于事。

4

1 回答 1

0

YY_INPUT似乎是正确的答案:

[扫描仪] 如何获取其输入的性质可以通过定义 YY_INPUT 宏来控制。YY_INPUT() 的调用顺序是 YY_INPUT(buf,result,max_size)。它的作用是在字符数组 buf 中放置最多 max_size 个字符,并在整数变量结果中返回读取的字符数或常量 YY_NULL(在 Unix 系统上为 0)以指示“EOF”。

于 2011-12-09T11:27:58.383 回答