왼쪽 재귀 정복하기: C++ 디매ング러의 문법 수정

2025-02-02

이 글에서는 RizinOrg의 C++ 디매ング러인 rz-libdemangle을 다시 작성하는 과정에서 문맥 자유 문법(CFG)의 왼쪽 재귀와 상호 왼쪽 재귀 문제를 해결한 과정을 자세히 설명합니다. 왼쪽 재귀와 상호 왼쪽 재귀의 개념을 설명하고, 간단한 예와 상태 다이어그램을 사용하여 왼쪽 재귀 문법을 오른쪽 재귀 문법으로 변환하여 무한 재귀를 방지하는 방법을 보여줍니다. 그런 다음 Itanium ABI 디매ング러에서 발생한 실제 문제를 소개하고, 왼쪽 재귀와 상호 왼쪽 재귀를 가진 복잡한 문법과 매크로 및 영리한 문법 변환을 사용하여 이러한 문제를 해결하고 스택 오버플로우 오류를 방지한 방법을 보여줍니다.