Pregunta

En mi esfuerzo continuo por saciar mi inquebrantable sed de más conocimientos de programación, se me ocurrió la idea de intentar escribir un lenguaje de programación simple (al menos por ahora) que se compile en el código de bytes. El problema es que no sé lo primero sobre el diseño del lenguaje. ¿Alguien tiene algún consejo sobre una metodología para construir un analizador y cuáles son las características básicas que debe tener cada idioma? ¿Qué lectura recomendaría para el diseño de idiomas? ¿Qué tan alto nivel debería estar disparando? ¿Es poco realista esperar poder incluir una función para permitir que uno pueda bytecode en línea de una manera similar a gcc permitiendo ensamblador en línea? ¿Al ver que codifico principalmente C y Java, cuál sería mejor para la escritura del compilador?

¿Fue útil?

Solución

Hay tantas maneras ...

Podrías mirar en lenguajes de pila y Forth. No es muy útil cuando se trata de diseñar otros idiomas, pero es algo que se puede hacer muy rápidamente.

Podrías buscar en lenguajes funcionales. La mayoría de ellos se basan en algunos conceptos simples y tienen un análisis simple. Y, sin embargo, son muy poderosos.

Y, entonces, las lenguas tradicionales. Ellos son los más difíciles. Tendrá que aprender sobre analizadores léxicos, analizadores, gramáticas LALR, gramáticas LL, EBNF y lenguajes regulares para pasar el análisis.

Dirigir un código de bytes no es solo una buena idea & # 8211; hacer lo contrario es simplemente una locura, y en su mayoría inútil, en un ejercicio de aprendizaje.

Hazte un favor y busca libros y tutoriales sobre compiladores.

O C o Java lo harán. Probablemente Java tenga una ventaja, ya que la orientación a objetos es una buena combinación para este tipo de tarea. Mi recomendación personal es Scala. Es un buen lenguaje para hacer este tipo de cosas, y le enseñará cosas interesantes sobre el diseño del lenguaje en el camino.

Otros consejos

Es posible que desee leer un libro sobre compiladores .

Para comprender realmente lo que está pasando, es probable que desees escribir tu código en C.

Java no sería una mala elección si quisiera escribir un lenguaje interpretado, como

Recomiendo leer los siguientes libros:

ANTLR

Patrones de diseño de idiomas

Esto le dará herramientas y técnicas para crear analizadores, lexers y compiladores para lenguajes personalizados.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top