파서
Oxc 파서는 현재 존재하는 가장 빠르고 호환성 높은 자바스크립트 및 타입스크립트 파서로 설계되었습니다. 파서에 기여하기 위해서는 구현 세부 사항과 방대한 테스트 인프라를 이해해야 합니다.
아키텍처 개요
파서는 전통적인 컴파일러 프론트엔드 아키텍처를 따릅니다:
소스 텍스트 → 리커 → 토큰 → 파서 → AST주요 구성 요소
- 리커: 소스 텍스트를 구조화된 토큰으로 분리
- 파서: 재귀 하강식 파서로, AST 생성
- AST: 메모리 효율적인 추상 구문 트리
- 오류 복구: 고급 오류 처리 및 복구
- 의미 분석: 심볼 해결 및 스코프 관리
설계 목표
우리는 다음을 갖춘 가장 빠른 러스트 기반 생산 준비 파서가 되기를 목표로 합니다:
- 속도: SWC보다 3배 빠름, Biome보다 5배 빠름
- 호환성: 100% Test262 호환, Babel/타입스크립트 호환성 99% 이상
- 메모리 효율성: 어레나 기반 할당, 최소한의 힙 사용
- 오류 품질: 도움이 되는 오류 메시지와 복구 기능
개발 워크플로우
환경 설정
bash
# 파서 테스트 실행
cargo test -p oxc_parser
# 호환성 테스트 실행
just c # 또는 `just coverage`프로젝트 구조
crates/oxc_parser/
├── src/
│ ├── lib.rs # 공개 API
│ ├── lexer/ # 토큰화
│ ├── parser/ # 구문 분석 로직
│ ├── cursor.rs # 토큰 스트림 관리
│ └── diagnostics.rs # 오류 처리
├── tests/ # 단위 테스트
└── examples/ # 사용 예제핵심 파서 파일
parser/mod.rs: 메인 파서 진입점parser/statement.rs: 문장 구문 분석parser/expression.rs: 표현식 구문 분석parser/typescript.rs: 타입스크립트 전용 구문 분석parser/jsx.rs: JSX 구문 분석 로직
호환성 테스팅
호환성 테스트 실행
bash
just c이 명령어는 tasks/coverage에 있는 러너를 사용하여 호환성 테스트 세트를 실행합니다.
Test262 - ECMAScript 호환성
자바스크립트에는 ECMAScript 테스트 세트라고 불리는 테스트262가 있습니다.
테스트262의 목적은 사양에서 지정된 모든 관측 가능한 동작을 커버하는 테스트 자료를 제공하는 것입니다.
파서 호환성은 구문 분석 단계 테스트를 사용합니다.
현재 상태: 43765/43765 (100.00%)
바벨 파서 테스트
새로운 언어 기능이 자바스크립트에 추가될 때, 먼저 바벨이 이를 구현합니다.
바벨은 최신 기능을 위한 포괄적인 파서 테스트를 보유하고 있습니다.
현재 상태: 2093/2101 (99.62%)
타입스크립트 호환성
타입스크립트 호환성 테스트는 여기에서 찾을 수 있습니다.
현재 상태: 6470/6479 (99.86%)
결과 보기
테스트 결과는 변경 추적을 위해 스냅샷 파일에 저장됩니다:
