Scala协议缓冲编译器

时间:2010-08-04 07:57:16

标签: scala protocol-buffers

我正在考虑编写一个代码生成器来从google protobuf定义文件生成scala。我认为它有价值的原因是Java绑定太过Java-ish而且在scala中可以做得更好。 例如,对于以下定义

message Foo {
  required int F1 = 1;
  repeated string F2 = 2;
  message Inner (
    required int F3 = 1;
  )
}

我希望能够像这样从Scala构造proto对象:

val foo = Foo (
  F1(127),
  F2("first", "second"),
  Inner (
    F3(911)
  )
)

我的问题是,如果有人知道已存在的这些内容,或者如果没有,你觉得开始一个新项目是否值得?

5 个答案:

答案 0 :(得分:14)

我目前正与我的导师Viktor Klang合作开发Scala Protocol Buffers编译器。这是我的Google Summer of Code项目,您可以在https://github.com/SandroGrzicic/ScalaBuff关注github上的进展。

[更新]主要部分是完整的;我仍然需要实现Extensions,Groups和field Options支持。它是可用的,我邀请每个人尝试并提供反馈;我愿意接受建议和功能要求。

答案 1 :(得分:1)

这个项目使用Simple-Build-Tool插件来实现这种效果:http://github.com/codahale/protobuf-sbt?locale=sv

<强>更新 上述项目已不复存在。 sbt-protobuf插件扩展了原始项目的功能。但请注意,sbt-protobuf生成Java类,而不是Scala。

答案 2 :(得分:1)

我刚刚碰到过这些,但不能担保,因为我从未使用它们。

http://code.google.com/p/protobuf-scala/

https://github.com/jeffplaisance/scala-protobuf

答案 3 :(得分:1)

从.proto文件生成Scala和Java类的一个非常好的工具是ScalaPB。该工具扩展了sbt-protobuf插件的功能。

答案 4 :(得分:0)

也许有可能编写一个读取和编译.proto文件的Scala编译器插件?