Scala协议缓冲编译器

ven*_*hka 18 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;
  )
}
Run Code Online (Sandbox Code Playgroud)

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

val foo = Foo (
  F1(127),
  F2("first", "second"),
  Inner (
    F3(911)
  )
)
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果有人知道已经存在的这些方面的东西,或者如果没有,你发现它值得开始一个新的项目吗?

San*_*čić 14

我正在与我的导师Viktor Klang一起研究Scala Protocol Buffers编译器.这是我的Google Summer of Code项目,你可以在https://github.com/SandroGrzicic/ScalaBuff上关注github上的进展.

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

  • 您的实施进度如何?它已经有用吗? (2认同)
  • 它由多个部分组成:主要部分是Parser,它识别输入.proto文件并返回一个解析树,Generator接收该树并生成输出Scala类,当然还有处理Parser和Generator的主类(并且具有与protoc非常相似的CLI功能).ScalaBuff和Parser部件已经完成了一段时间了; 解析器(应该)从任何有效的.proto文件中识别并构建一个树.Generator目前支持生成消息和枚举,但我目前正在完成该部分.请继续关注,我会经常更新.;) (2认同)
  • 我最近使用过ScalaBuff.+1 (2认同)

Vik*_*ang 1

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

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

  • 它不会生成java绑定吗? (5认同)