[논문 리뷰] Yacc is dead
이 논문은 브조조프스키의 유도 개념을 일반화하여 두 가지 새로운 파싱 기법을 제안한다: 문맥 자유 문법에 대한 것과 파서 조합자에 대한 것. 이 접근법은 임의의 문맥 자유 문법을 처리하고 래지 파싱 숲을 생성하는 컴act하고 효율적인 파싱 라이브러리(250줄 이내)를 가능하게 하며, 스타일과 하스켈 모두에서 S-표현식에 대해 초당 수백만 토큰의 성능을 달성한다.
We present two novel approaches to parsing context-free languages. The first approach is based on an extension of Brzozowski's derivative from regular expressions to context-free grammars. The second approach is based on a generalization of the derivative to parser combinators. The payoff of these techniques is a small (less than 250 lines of code), easy-to-implement parsing library capable of parsing arbitrary context-free grammars into lazy parse forests. Implementations for both Scala and Haskell are provided. Preliminary experiments with S-Expressions parsed millions of tokens per second, which suggests this technique is efficient enough for use in practice.
연구 동기 및 목표
- 전통적인 파싱 도구인 야크의 한계를 해결하기 위해, 문맥 자유 언어를 파싱하는 데 있어 새로운 원칙적인 접근법을 제안하기 위해.
- 수동으로 문법을 변환할 필요 없이 임의의 문맥 자유 문법을 지원하는 경량이고 조합 가능한 파싱 라이브러리를 개발하기 위해.
- 실제 응용 프로그램에 적합한 고성능과 실용적 효율성을 달성하기 위해, S-표현식에 대한 벤치마킹을 통해 이를 입증하기 위해.
- 이전에 정규 표현식에 사용된 도함수 기법을 문맥 자유 문법과 파서 조합자 영역으로 일반화하기 위해.
제안 방법
- 브조조프스키의 도함수를 정규 표현식에서 문맥 자유 문법으로 확장하여, 도함수 계산을 통한 증분 파싱을 가능하게 하기 위해.
- 파서 조합자에서 작동하는 일반화된 도함수 연산을 정의하여 모듈화되고 조합 가능한 파싱 구조를 만들 수 있도록 하기 위해.
- 모호한 문법의 여러 가능한 파싱을 효율적으로 표현하기 위해 래지 파싱 숲 표현 방식을 설계하기 위해.
- 언어 간 적용 가능성을 입증하고 실용성을 입증하기 위해 스타일과 하스켈 모두에 이 접근법을 구현하기 위해.
- 정확성과 조합 가능성을 보장하기 위해 기능적이고 불변적인 스타일을 사용하여 파싱 라이브러리의 설계를 위해.
실험 결과
연구 질문
- RQ1정규 표현식에서 유도된 기법이 임의의 문맥 자유 문법을 다룰 수 있도록 일반화될 수 있는가?
- RQ2일반화된 도함수 연산을 사용하여 파서 조합자를 강화함으로써 효율적이고 정확한 파싱을 지원할 수 있는가?
- RQ3이러한 일반화된 도함수를 사용하여 고성능이고 조합 가능한 파싱 라이브러리를 구축할 수 있는가?
- RQ4실제로 이 도함수 기반 파싱 접근법은 야크와 같은 전통적 도구와 비교해 어떤 성능을 보이는가?
주요 결과
- 일반화된 도함수 접근법은 문맥 자유 문법으로 성공적으로 확장되어 임의의 문법에 대해 정확하고 체계적인 파싱을 가능하게 한다.
- 결과적으로 도출된 파싱 라이브러리는 매우 컴팩트하여 스타일과 하스켈 모두에서 250줄 이내로 구현된다.
- 구현은 높은 성능을 달성하여 S-표현식을 초당 수백만 토큰의 속도로 파싱하며 실용적 효율성을 시사한다.
- 래지 파싱 숲의 사용은 성능을 희생시키지 않은 채 모호한 문법의 효율적 처리를 가능하게 한다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.