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
Respuesta
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.
preguntasANTLR es un generador de analizadores muy agradable escrito en Java. Hay un terrific book disponible, también.
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!
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).
- 1. Creando su propio uid de estilo Tinyurl
- 2. Creando su propio resaltado de sintaxis en GEdit?
- 3. Creando su propio intérprete que puede funcionar como un compilador
- 4. Creando tu propio HRESULT?
- 5. implementar su propio sizeof
- 6. compilando su propio glibc
- 7. Escriba su propio administrador de memoria
- 8. Creando mi propio objeto "entero" en Python
- 9. haskell - ¿alguna forma de hacer rodar su propio grupo de pragmas de IDIOMA?
- 10. Significado del programa en su idioma y programa en su idioma
- 11. Spring Bean ejecutándose en su propio hilo
- 12. -su-propio-escribe la consistencia en MongoDB
- 13. Cómo escribir su propio .net obfuscator
- 14. ¿Cómo hacer su propio símbolo matemático laTex?
- 15. programa Clojure leyendo su propio MANIFEST.MF
- 16. ¿Cómo proporcionar su propio LocationProvider en Android?
- 17. ¿Cómo implementar su propio servidor WHOIS?
- 18. Eclipse añadir su propio comando de generación
- 19. Este objetivo puede incluir su propio producto
- 20. escribir mi propio mapa su funcionamiento genérico
- 21. ¿Cómo aloja su propio depósito de huevos?
- 22. ¿Cómo configurar su propio canal PEAR?
- 23. ¿Puede un método ColdFusion cfc determinar su propio nombre?
- 24. creando mi propio procesador de contexto en django
- 25. ¿Cómo ejecutar la solicitud web en su propio hilo?
- 26. manera genérica para reemplazar un objeto en su propio método
- 27. ¿Cree su propio estilo BibTeX o personalice el existente?
- 28. ¿Hay alguna manera de crear su propio elemento HTML?
- 29. ¿Cómo ha usado IContainer/ISite/IComponent en su propio código?
- 30. ¿Cómo muevo una rama de Git a su propio repositorio?
La pregunta canónica para esto es: http://stackoverflow.com/questions/1669/learning-to-write-a-compiler – dmckee