Conquistando a Recursão à Esquerda: Corrigindo a Gramática de um Desmontador C++

2025-02-02

Este artigo detalha a jornada do autor ao resolver problemas de recursão à esquerda e recursão mútua à esquerda em uma gramática livre de contexto (CFG) enquanto reescrevia o desmontador C++ da RizinOrg, rz-libdemangle. Começa explicando os conceitos de recursão à esquerda e recursão mútua à esquerda, demonstrando com exemplos simples e diagramas de estado como transformar gramáticas recursivas à esquerda em gramáticas recursivas à direita para evitar recursão infinita. O autor então compartilha um problema do mundo real encontrado no desmontador Itanium ABI, mostrando uma gramática complexa com recursão à esquerda e recursão mútua à esquerda, e como ele usou macros e transformações de gramática inteligentes para resolver esses problemas, evitando erros de estouro de pilha.