피드로 돌아가기
Dev.toInfrastructure
원문 읽기
Delphi 호환성을 위한 Line-oriented Preprocessor 설계 및 구현
Preprocessor: IFDEF and Conditional Compilation | Preprocessor: IFDEF e compilação condicional
AI 요약
Context
플랫폼별 코드 분기 및 디버그 로깅 제어를 위해 Delphi 컴파일 모델의 전처리기 기능이 필수적인 상황. 단순 텍스트 처리가 아닌 Lexing 단계 이전의 조건부 컴파일 처리를 통해 Dead Code 포함 방지와 플랫폼별 의존성 해결이 필요함.
Technical Solution
- Lexing 이전 단계에서 Directives를 평가하는 Line-oriented Preprocessor 구조 설계
- Symbol Table을 통한 {$DEFINE}, {$UNDEF} 기반의 조건부 블록 제어 로직 구현
- Recursive Loader와 Preprocessor를 통합하여 Unit Loading 시점에 처리된 소스를 파싱하는 파이프라인 구축
- TOML 설정 파일과 소스 내 선언을 결합한 하이브리드 심볼 관리 체계 도입
- v2.x 업데이트를 통해 예측 가능성을 높인 Line-by-line 평가 방식으로 로직 재설계
- 원본 소스 라인 번호를 유지하는 매핑 기법을 적용하여 Preprocessing 후에도 IDE Jump-to-error 기능 보존
실천 포인트
1. CI 환경과 로컬 환경의 심볼 일치를 위해 Project Config(TOML) 중심의 명시적 {$DEFINE} 관리 권장
2. 플랫폼 포팅 시 `crab-pascal preproc` 명령어를 통한 출력물 Diff 분석으로 심볼 미스매치 검증
3. 기능 점진적 배포를 위해 Feature Flag 기반의 실험적 API 격리 패턴 적용 검토