编写的原型编译器(谷歌协议缓冲区)是哪种语言?

时间:2012-05-08 19:33:41

标签: serialization protocol-buffers

我想知道用什么语言编写“proto compiler”(用于从Java,Python或c ++生成源文件的编译器)?它可能是混合语言吗?

任何帮助都将不胜感激。

先谢谢 贺

2 个答案:

答案 0 :(得分:1)

似乎是in C++。还有关于JavaPython API的文档,但那些似乎不包含编译器本身(至少在任何一种情况下我都看不到任何显然是编译器的东西,尽管我没有花很多时间寻找它。)

那就是说,我几乎想投票结束 - 对于大多数实际来说,用于实现编译器的语言基本上是一个琐事问题,与实际使用无关。但是,有一个完全合理的例外:如果您要下载和修改编译器,那么了解您需要使用的语言可能非常有用。

答案 1 :(得分:0)

protoc编译器是用C或C ++编写的(无论如何都是原生程序)。

当我想在java文件中处理原型文件时,我

  1. 我使用protoc命令将它们转换为协议缓冲区文件,即

    protoc protofile.proto --descriptor_set_out = OutputFile

  2. 读取新的协议缓冲区文件(它的FileDescriptorSet)并使用它

  3. 一个过于复杂的例子是

    中的 compileProto 方法

    http://code.google.com/p/protobufeditor/source/browse/trunk/%20protobufeditor/Source/ProtoBufEditor/src/net/sf/RecordEditor/ProtoBuf/re/display/ProtoLayoutSelection.java

    由于protoc命令和选项可以存储在属性文件中,所以

    因为选项而被编译。

    注意: getFileDescriptor 方法读取新创建的协议缓冲区