피드로 돌아가기
Dev.toBackend
원문 읽기
Raw Characters를 Token으로 추상화하는 Lexer 설계 원리
Lexers
AI 요약
Context
컴파일러가 소스 코드를 단순한 문자열 스트림으로 인식하여 발생하는 처리 효율 저하 문제. 개별 문자를 반복적으로 분석하는 오버헤드를 줄이기 위해 의미 단위의 분류 체계 필요.
Technical Solution
- Raw Stream을 분석하여 의미 있는 최소 단위인 Token으로 변환하는 Lexical Analysis 계층 설계
- 정의된 규칙(Patterns)에 따라 문자열을 분류하여 Parser의 분석 복잡도를 낮추는 구조 채택
- Identifier, Number, Operator 등 TokenType을 부여하여 데이터 추상화 수준 향상
- Whitespace 제거 로직을 통한 불필요한 데이터 처리 비용 최적화
- Grammar 검증 단계와 분리하여 분류(Classification) 기능에만 집중한 단일 책임 원칙 적용
- While-loop 기반의 포인터 이동 방식을 통해 소스 코드를 단일 패스로 스캔하는 효율적 구현
실천 포인트
1. 입력 스트림의 처리 단위를 최소 의미 단위로 정의했는가
2. 분석 단계(Lexer)와 검증 단계(Parser)의 책임을 명확히 분리했는가
3. 불필요한 공백이나 무의미한 문자를 효율적으로 스킵하는 로직이 포함되었는가