- El autor asumió el difícil reto de escribir un compilador de C en 500 líneas de código Python
- El compilador es de una sola pasada y, a diferencia de los compiladores habituales de dos pasadas que primero construyen un árbol sintáctico y luego lo transforman en código máquina, genera código durante el análisis sintáctico
- El compilador apunta a WebAssembly, una decisión tomada más por curiosidad que por practicidad. Se destacan los desafíos particulares de WebAssembly, como la ausencia de registros y el uso de una máquina de pila
- Debido a la restricción de 500 líneas, el compilador no soporta ciertas funciones de C, como
struct, enum, union, directivas del preprocesador, punto flotante y tipos de 8 bytes
- El compilador pasa 34 de los 220 casos de prueba de c-testsuite, y puede compilar y ejecutar con éxito un programa que calcula la secuencia de Fibonacci
- Ofrece un análisis detallado del código del compilador y explica cómo maneja varios aspectos de la sintaxis de C, así como las dificultades de trabajar con WebAssembly
- A pesar de la complejidad de un compilador, demuestra que, si se sacrifica la calidad del código y se hace todo en una sola pasada, puede resultar sorprendentemente conciso
- Sugiere que este tipo de compilador de una sola pasada podría ser excelente como stage0 para un lenguaje self-hosting gracias a su concisión
- La cantidad de líneas de código se midió con la herramienta sloccount, excluyendo comentarios, docstrings y espacios en blanco
1 comentarios
Opiniones en Hacker News
structmás antiguo de Ritchie y el compilador de C de v7 Unix