【发布时间】:2010-10-19 14:19:55
【问题描述】:
我正在开发一个包含两台服务器的项目,一台是用 python 编写的,另一台是用 C 编写的。为了最大限度地提高服务器的容量,我们定义了一个二进制专有协议,通过该协议这两个服务器可以相互通信。
协议以Cstruct的形式定义在C头文件中。通常,我会使用 VIM 做一些替换来将此文件转换为 Python 代码。但这意味着每次修改协议时我都必须手动执行此操作。
所以,我相信可以解析 C 头文件的解析器会是更好的选择。但是,至少有a dozen of Python parser generator。所以我不知道哪一个更适合我的特定任务。
有什么建议吗?非常感谢。
编辑:
当然我要求任何人给我写代码....
代码已经完成。我将头文件转换成 Python 代码的形式,构造一个可以解析二进制数据的 Python 库,可以识别。
我也不是在寻找一些已经存在的 C 解析器。我问这个问题是因为我正在阅读的一本关于解析器生成器的书启发了我学习如何使用真正的解析器生成器。
再次编辑:
在我们设计系统时,我建议使用 Google Protocol Buffer、ZeroC ICE 或任何多语言网络编程中间件来消除实现协议的任务。
然而,并不是每个程序员都能阅读英文文档并愿意尝试新事物,尤其是当他们有丰富的老而简单但有点笨拙的方法的经验时。
【问题讨论】:
-
所以问题是:(1)推荐一个python解析器生成器来处理C结构定义和(2)给我写代码?只是想弄清楚你想要什么。
-
请注意,这正是促使 Google 创建协议缓冲区 (code.google.com/p/protobuf) 的用例,它从一开始就有 Python、Java 和 C++ 生成器。我认为现在也有 C 绑定。
-
我怀疑在 python 中解析二进制格式会“最大化容量”