피드로 돌아가기
The Compiler: Heart and Tools of All Software
Dev.toDev.to
Infrastructure

정보 손실 방지를 위한 Dumb Lexer 기반의 Compiler Pipeline 설계

The Compiler: Heart and Tools of All Software

Gideon Towolawi2026년 5월 18일5advanced

Context

인간의 추상적 의도를 기계어 Binary로 변환하는 과정에서 발생하는 정보 손실 문제 분석. 조기 최적화나 과도한 해석을 수행하는 Smart Lexer 구조로 인한 하위 단계의 컨텍스트 복구 불가능성 식별.

Technical Solution

  • Lexer 단계의 역할을 단순 Token 변환으로 제한하여 정보 무결성을 보존하는 Dumb by Design 원칙 적용
  • span_to 필드를 포함한 Token 구조 설계를 통한 소스 코드의 정밀한 위치 정보 및 범위 기록
  • Lexer의 해석 권한을 Parser로 완전히 위임하여 Scope Resolution 및 Ternary Expression 판별의 정확도 향상
  • 'Reduce at the right stage' 원칙에 따라 각 단계(Lexer → Parser → Semantic Analysis → IR → Backend)의 책임 분리
  • 하위 단계에서 원본 텍스트 복구가 가능하도록 Whitespace 및 Escape Sequence를 보존하는 비파괴적 변환 수행
  • 정밀한 Spatial Information 기록을 통한 LSP(Language Server Protocol) 하이라이팅 및 포매팅 정확도 확보

- 데이터 파이프라인 설계 시 초기 단계에서 임의로 데이터를 정제하거나 병합하여 원본 정보가 유실되지 않는지 검토 - 각 모듈의 책임 범위를 엄격히 분리하여 상위 모듈이 하위 모듈의 판단 로직을 미리 수행하는 '조기 최적화' 배제 - 에러 메시지의 정밀도를 높이기 위해 원본 데이터의 오프셋과 위치 정보를 끝까지 유지하는 메타데이터 구조 설계

원문 읽기