2010-08-04 13 views
18

Estaba pensando en escribir un generador de código para generar scala desde el archivo de definiciones de google protobuf. La razón por la que lo veo valioso es que los enlaces java son demasiado Java-ish y uno podría hacerlo mucho mejor en scala. Por ejemplo, para la siguiente definiciónCompilador de buffers de protocolo Scala

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

Quiero ser capaz de construir el objeto proto de Scala como esto:

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

Mi pregunta es si alguien sabe algo en esta línea ya existente, o si no, ¿le parece valioso comenzar un nuevo proyecto?

+2

He buscado un proyecto así, pero no he encontrado ninguno. ¡Por favor comience! Puede consultar http://scalaxb.org/ para obtener inspiración. Y piense en el límite de 22 elementos en las clases de casos desde el inicio :) – retronym

+0

Interesante. No tenía intención de utilizar clases de casos en mis proyecciones. ¿Podría darme una pista de cómo se usaron en Scalaxb (o en alguna otra situación similar)? – venechka

+0

El límite de 22 elementos significa que tenía razón para no pensar en las clases de casos. No son útiles aquí. –

Respuesta

1

Hay un proyecto que utiliza simple-Build-Tool plugins para lograr ese efecto: http://github.com/codahale/protobuf-sbt?locale=sv

Actualización: El proyecto anterior ya no existe. El complemento sbt-protobuf extendió la funcionalidad de ese proyecto original. Sin embargo, tenga en cuenta que sbt-protobuf genera clases Java, no Scala.

+5

¿No genera enlaces java? – venechka

+0

El enlace está roto. ¿Esta quizás? https://github.com/sbt/sbt-protobuf –

0

¿Sería posible escribir un complemento del compilador Scala que lea y compile archivos .proto?

+0

Podría ser un compilador de proto para scala. El código abierto de Google tiene backends para varios lenguajes de programación. – venechka

15

Actualmente estoy trabajando en un compilador Scala Protocol Buffers con mi mentor Viktor Klang. Es mi proyecto Google Summer of Code y puede seguir el progreso en github al https://github.com/SandroGrzicic/ScalaBuff.

[Actualizar] La parte principal está completa; Todavía necesito implementar extensiones, grupos y soporte de opciones de campo. Es útil e invito a todos a probarlo y dar su opinión; Estoy abierto a sugerencias y solicitudes de funciones.

+2

¿Cuál es el progreso de su implementación? ¿Ya es útil? – aindl

+2

Consta de varias partes: las principales son Analizador que reconoce archivos .proto de entrada y devuelve un árbol de análisis sintáctico, Generador que toma ese árbol y genera clases Scala de salida, y por supuesto la clase principal que maneja el Analizador y el Generador (y tiene una funcionalidad CLI muy similar a protoc). Las partes ScalaBuff y Analizador se han completado desde hace un tiempo; el analizador (debería) reconocer y construir un árbol de cualquier archivo .proto válido.Actualmente, el generador admite la generación de mensajes y entradas, sin embargo, actualmente estoy terminando esa parte. Estén atentos, lo actualizo a menudo. ;) –

+1

@ SandroGržičić - podría ser interesante actualizar esta respuesta. Parece que ha habido compromisos recientes para el proyecto. –

1

Una herramienta realmente buena para generar tanto clases Scala como Java a partir de archivos .proto es ScalaPB. La herramienta amplía la funcionalidad del complemento sbt-protobuf.

Cuestiones relacionadas