在不创建描述符的情况下解析.proto文件

时间:2017-05-29 10:03:32

标签: python protocol-buffers

我理解使用protobuf的正常方法是创建.proto然后将其编译到相关的类 - Java,Python等。我有一个要求可能需要解析Python代码中的.proto文件。有没有人尝试为.proto文件创建自己的解析器?是否建议始终编译该类而不是直接解析.proto?

1 个答案:

答案 0 :(得分:4)

它可能不会直接帮助你,但,我编写了自己的解析器(live demoparser source)。这段代码是C#,因此它可能无济于事,显然是可能的。我开始了那个分支9 days ago,现在它基本上是功能完整的,包括解析器,生成器和带有语法错误突出显示的交互式网站 - 所以它不一定是巨大的工作量。

然而!您可能会发现shell执行“protoc”更容易(maven上提供)。如果您使用-oFILE / --descriptor_set_out=FILE开关(相同的东西,替代语法),那么它会解析输入.proto文件,并从{{3}写入一个序列化FileDescriptorSet的文件}。这意味着您可以使用常规工具为您选择的语言生成descriptor.proto代码,然后反序列化该文件作为FileDescriptorSet实例。一旦你完成了这个:你可以走对象模型来查看文件,消息,枚举,字段等.IIRC一些protobuf实现支持完全从描述符(这是protoc发出的)工作,没有codegen步骤。