Scala协议缓冲区编译器
我正在考虑编写一个代码生成器来从google protobuf定义文件生成scala。我认为它有价值的原因是java绑定太Java-ish,而且在scala中可以做得更好。 例如,对于下面的定义Scala协议缓冲区编译器
message Foo {
required int F1 = 1;
repeated string F2 = 2;
message Inner (
required int F3 = 1;
)
}
我希望能够从斯卡拉构建原型对象是这样的:
val foo = Foo (
F1(127),
F2("first", "second"),
Inner (
F3(911)
)
)
我的问题是,如果有人知道这些方针的东西已经存在,或如果不是你觉得值得开始一个新项目吗?
有这个项目,使用简单,内建工具插件来达到这样的效果:http://github.com/codahale/protobuf-sbt?locale=sv
更新: 以上项目不再存在。 sbt-protobuf插件扩展了原始项目的功能。但是,请注意,sbt-protobuf生成Java类,而不是Scala。
它不会生成java绑定吗? – venechka 2010-08-04 10:36:20
链接已损坏。这可能吗? https://github.com/sbt/sbt-protobuf – 2013-09-17 05:51:50
也许有可能编写一个Scala编译器插件来读取和编译.proto文件?
它可能是scala的proto编译器。开放源代码的Google代码具有各种编程语言的后端。 – venechka 2010-08-04 11:42:46
我刚刚遇到这些,但不能为他们担保,因为我从来没有使用过它们。
**二月20016 **以上所有链接均为非活动项目(请参阅下面的更多更新版本)。 – marios 2016-02-10 06:55:19
我目前工作的一个斯卡拉Protocol Buffers的编译器,我的导师维克多·巴生。这是我的Google Summer of Code项目,你可以在github上按照进度https://github.com/SandroGrzicic/ScalaBuff。
[更新]主要部分完整;我仍然需要实现扩展,组和字段选项支持。这是可用的,我邀请所有人尝试并提供反馈意见;我愿意接受建议和功能要求。
你的实施进展如何?它已经有用了吗? – aindl 2011-08-17 19:44:00
它由多个部分组成:主要是解析器,它识别输入.proto文件并返回一个解析树,生成器接收该树并生成输出Scala类,当然还有处理解析器和生成器的主类(以及与protoc具有非常类似的CLI功能)。 ScalaBuff和Parser部分已经完成了一段时间了;解析器(应该)从任何有效的.proto文件中识别并构建一棵树。发生器当前支持消息和枚举的生成,但是我正在完成该部分。敬请关注,我经常更新它。 ;) – 2011-08-19 02:59:33
@SandroGržičić - 可能更有趣,更新此答案。看起来这个项目最近有过提交。 – 2012-07-27 05:24:13
我找过这样一个项目,但还没找到。请开始!你可以看看http://scalaxb.org/的灵感。并从头开始考虑案例类别的22元素限制:) – retronym 2010-08-04 10:39:19
Intereseting。我无意在我的预测中使用案例类。您能否给我一个提示,告诉我们他们是如何在scalaxb中使用的(或者在其他类似的情况下)? – venechka 2010-08-04 12:07:41
22个元素的限制意味着你不应该去考虑案例类。他们在这里没用。 – 2012-02-11 17:16:43