我有许多面向位的数据包格式。 Flex / lex是面向比特的版本,而不是手动编写许多相当复杂的词法分析器,而是在寻找位级词法分析器生成器。显然,我可以直接编写 C ,但是我想知道是否存在这样的位级词法生成器。快速浏览Google之后,我发现了许多媒体解码器,但是这些解码器不是解析媒体文件,而是解析网络数据包。
另外,是否有一种方法可以在以位为导向的产品中运行flex?
最佳答案
您可以研究重新定义YY_INPUT
(请参阅flex
文档中的Generated Scanner),并将每个输入字节分解为各个位,然后将'0'
和'1'
用作正则表达式的字母。您可能要考虑是否可以使用YY_INPUT
的简单定义来定义稍大的字母。
关于bit-manipulation - 比特流词法生成器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17317306/