为分块数据编写词法分析器

时间:2011-12-08 13:07:12

标签: flex-lexer lexical-analysis chunking

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

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

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

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

1 个答案:

答案 0 :(得分:0)

YY_INPUT似乎是正确答案:

  

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