【问题标题】:Writing a lexer for chunked data为分块数据编写词法分析器
【发布时间】:2012-01-15 22:00:28
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: flex-lexer lexical-analysis chunking


    【解决方案1】:

    YY_INPUT 似乎是正确答案:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-21
      • 2011-07-26
      • 1970-01-01
      • 2011-02-07
      相关资源
      最近更新 更多