2008-12-13 13 views
8

Si estuviera buscando crear mi propio idioma, ¿hay alguna herramienta que me pueda ayudar? He oído hablar de yacc, pero me pregunto cómo implementaría las características que quiero en el idioma.Creando su propio idioma

+3

La pregunta canónica para esto es: http://stackoverflow.com/questions/1669/learning-to-write-a-compiler – dmckee

Respuesta

9

La primera herramienta que recomendaría es el Libro del Dragón. Esa es la referencia para compilar compiladores. Diseñar un idioma no es una tarea fácil, su implementación es aún más difícil. El libro del dragón ayuda allí. El libro incluso hace referencia a las herramientas estándar de Unix lex y yacc. Las herramientas equivalentes gnu se llaman flex y bison. Ambos generan lexer y analizador. También existen herramientas más modernas para generar lexer y analizador sintáctico, p. para Java hay ANTLR (también recuerdo javacc y CUP, pero solo me usé ANTLR). El hecho de que ANTLR combine el analizador y el lexer y que el complemento eclipse esté disponible hace que sea muy cómodo de usar. Pero para compararlos, el tipo de analizador sintáctico que necesita y saber para qué los necesita, debe leer el libro del Dragón. También hay otras cosas que debe tener en cuenta, como el entorno de tiempo de ejecución, el paradigma de programación, ...

Si ya tiene ciertas ideas de diseño y necesita ayuda para un cierto paso o detalle, los indicadores podrían ser más útiles.

preguntas
4

ANTLR es un generador de analizadores muy agradable escrito en Java. Hay un terrific book disponible, también.

10

estrechamente relacionados (todas tomadas mediante la búsqueda en [compiler] en stackoverflow):

y similares temas (de la misma búsqueda):


Editar: Sé que la búsqueda relacionada stackoverflow cuestión no es lo que nos gustaría que fuera, pero lo que realmente necesito la iteración n de este tema? Meh!

2

me gusta Flex (Fast Lex) [escáner léxico]
y bisonte (A Hairy Yacc) [Sin embargo, otro compilador de compilador]

Ambos son gratuitos y están disponibles en todas las instalaciones * NIX. Para Windows simplemente instale cygwin.
Pero yo en la vieja escuela.

Al usar estas herramientas también puede encontrar las reglas de lex y yacc gramers para una gran cantidad de idiomas populares en Internet.Por lo tanto, le proporciona una forma rápida de comenzar a usarlo y luego puede personalizar las gramolas a medida que avanza.

Ejemplo: manejo de expresiones aritméticas [el orden de precedencia, etc. es un problema de muerte] puede obtener rápidamente la gramática para esto desde la web.

Una alternativa para pensar es escribir una extensión de front-end para GCC.
No es trivial, pero si quiere un lenguaje compilado, ahorra mucho trabajo en la sección de generación de código (aún necesitará conocer el amor y comprender flex/bison).

Cuestiones relacionadas