Conquistando la Recursividad a la Izquierda: Arreglando la Gramática de un Desmontador C++
Este artículo detalla el proceso del autor al resolver problemas de recursividad a la izquierda y recursividad mutua a la izquierda en una gramática libre de contexto (CFG) mientras reescribía el desmontador C++ de RizinOrg, rz-libdemangle. Comienza explicando los conceptos de recursividad a la izquierda y recursividad mutua a la izquierda, demostrando con ejemplos simples y diagramas de estado cómo transformar gramáticas recursivas a la izquierda en gramáticas recursivas a la derecha para evitar la recursividad infinita. El autor luego comparte un problema del mundo real encontrado en el desmontador Itanium ABI, mostrando una gramática compleja con recursividad a la izquierda y recursividad mutua a la izquierda, y cómo usó macros y transformaciones de gramática inteligentes para resolver estos problemas, evitando errores de desbordamiento de pila.