2011-12-08 41 views
0

我有一個嵌入式應用程序,它通過HTTP與RESTful服務器進行通信。一些服務涉及向客戶端發送一些數據,這些數據使用我使用flex編寫的非常簡單的詞法分析器進行解釋。爲分塊數據編寫詞法分析器

現在我正在添加一個gzip壓縮層來減少帶寬消耗,但由於內存要求,我不滿足於當前體系結構:首先我將整個數據接收到緩衝區中,然後解壓縮整個緩衝區放入一個新的緩衝區,然後我將整個數據傳送給flex。

通過將來自HTTP客戶端的分塊數據提供給zlib例程,我可以在第一步和第二步之間節省一些內存。但我想知道是否可以在zlib分塊輸出和flex輸入之間做同樣的事情。

目前我只使用yy_scan_bytesyylex來分析輸入。 Flex是否有將多個數據塊輸入到yylex的功能?我已閱讀關於multiple input buffers的文檔,但無濟於事。

回答

0

YY_INPUT似乎是正確的答案:

如何[掃描]獲取輸入可以通過定義 YY_INPUT宏來控制的性質。 YY_INPUT()的調用序列是 YY_INPUT(buf,result,max_size)。它的作用是在字符數組buf中放置max_size 個字符並返回整數 可變結果或讀取的字符數或常量 YY_NULL(在Unix系統上爲0)以指示'EOF'。