Sí! Interesarse en los compiladores fue mi gancho en CS profesional (anteriormente había estado en una ruta hacia EE, y solo cambié formalmente de bando en la universidad), es una gran manera de aprender un TON por una amplia gama de temas de informática. Eres un poco más joven (yo estaba en la escuela secundaria cuando comencé a perder el tiempo con analizadores e intérpretes), pero ahora hay mucha más información al alcance de la mano.
Comience pequeño: Diseñe el lenguaje más pequeño que pueda imaginar, comience con nada más que una simple calculadora matemática que permita la asignación y sustitución de variables. Cuando te vuelves aventurero, intenta agregar "si" o bucles. Olvídese de las herramientas arcanas como Lex y Yacc, intente escribir a mano un analizador de descenso recursivo simple, tal vez conviértalo en códigos de bytes simples y escriba un intérprete para ello (evite todas las partes difíciles de entender el ensamblaje de una máquina en particular, asignación de registro, etc.). Aprenderás muchísimo con este proyecto.
Como otros, recomiendo el libro del dragón (edición de 1986, no me gusta el nuevo, francamente).
Agregaré que para sus otros proyectos, yo recomiendo usar C o C++, zanjar PHP, no porque sea un intolerante del lenguaje, sino porque creo que trabajar con las dificultades en C/C++ le enseñará mucho más sobre la arquitectura subyacente de la máquina y los problemas del compilador.
(Nota:... Si fueras un profesional, el consejo sería no crear un nuevo lenguaje Eso es casi nunca es la solución correcta, pero como un proyecto para el aprendizaje y la exploración, es fantástico)
ya una gran selección de recursos aquí: http://stackoverflow.com/questions/1669/learning-to-write-a-compiler –
Gracias por ese comentario constructivo Paul. –
@Pierre Aquí para ayudar! –