2

我想知道“原型编译器”(用于从 Java、Python 或 C++ 生成源文件的编译器)是用哪种语言编写的?可能是多种语言的混合?

任何帮助,将不胜感激。

提前致谢 贺拉斯

4

2 回答 2

2

它似乎是用C++编写的。还有关于JavaPython API 的文档,但它们似乎不包含编译器本身(至少我没有看到任何明显是编译器的东西,尽管我没有花很多时间寻找它要么)。

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

于 2012-05-08T19:37:54.080 回答
1

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

当我想处理java文件中的proto文件时,我

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

    protoc protofile.proto --descriptor_set_out=输出文件

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

一个过于复杂的例子是example,是 compileProto方法在

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

它之所以复杂是因为 options 因为 protoc 命令和选项可以存储在属性文件中。

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

于 2012-05-09T07:00:10.757 回答