11

Ahora estoy escribiendo mi propuesta de doctorado para construir un procesador de lenguaje para un nuevo lenguaje de especificación para Java (JML o SpeC# para C#) y necesito establecer una herramienta de implementación para comenzar el desarrollo. Los aspectos de investigación del lenguaje (sintaxis, semántica, resultados teóricos) son ortogonales a mi elección de implementación, por lo que me gustaría usar Python (2.6+) por mis propios motivos. El producto final será bien un compilador o intérprete capaz de verificar algunas propiedades especificadas para programas escritos en Java.Construyendo un compilador o intérprete usando Python

¿Cuál es el mejor marco/biblioteca para construir compiladores/intérpretes en Python? ¿Las "baterías incluidas" para este problema?

Puntos de bonificación otorgados a soluciones que tienen compiladores de referencia para Java 6+.

+0

Sé que quieres usar Python, pero si estás buscando las "baterías incluidas" vas a estar mejor con F # ... ese lenguaje parece construido para construir compiladores/intérpretes. – sholsapp

+2

@gnucom: no solo F #, sino que todos los lenguajes de la familia ML son adecuados para la implementación del lenguaje. De hecho, "ML" significa "Meta Lenguaje". Haskell también tiene algunas geniales bibliotecas de analizadores (parsec). – delnan

+0

@delnan: Absolutamente. Estoy corregido. :) – sholsapp

Respuesta

1

tal vez usted desee echar un vistazo a this

+0

¿Por qué recomienda el tiempo de ejecución ANTLRv2 Python cuando también uno existe para ANTLRv3? –

+0

Particularmente, ¿qué compensaciones hay para Python que no están ya cubiertas en esta pregunta? http://stackoverflow.com/questions/633224/antlr2-vs-antlr3 –

+0

Ok, ninguno parece lo suficientemente robusto para esta investigación. ¡Gracias por apuntarme a ANTLR + Python, sin embargo! –

0

Puedo sugerir antlr con la unión de su pitón?

+0

Vaya, demasiado lento :) –

7

Personalmente no soporto antlr, uso lex/yacc como generador de analizadores. Aquí hay una implementación de Python http://www.dabeaz.com/ply/ que puede usar.

Eso solo trata con el análisis, eso realmente ni siquiera comienza a construir su intérprete . Para eso, probablemente lo estarás construyendo desde el principio. Nunca he oído hablar de una biblioteca específicamente orientada hacia esto (me gustaría ver algunos de ellos, por favor contáctame allí en los comentarios si sabes de algún)

Echa un vistazo a esta publicación de SO how to start writing a very simple programming language tiene buenas ideas.il.

+0

Soy exigente con la calidad de los informes de errores, por lo que prefiero las sugerencias basadas en ANTLR de Anders a estos. –

Cuestiones relacionadas