Skip to main content
QUICK REVIEW

[논문 리뷰] Recognising and Generating Terms using Derivatives of Parsing Expression Grammars

Tony Garnock-Jones, Mahdi Eslamimehr|arXiv (Cornell University)|2018. 01. 31.
Software Testing and Debugging Techniques참고 문헌 23인용 수 5
한 줄 요약

이 논문은 파싱 표현 문법(Parsing Expression Grammars, PEGs)에서 용어를 인식하고 생성하기 위한 도함수 기반 기법을 소개한다. 이는 기존에 정규 표현식과 문맥 자유 문법(Context-Free Grammars, CFGs)에 사용된 Brzozowski의 도함수 개념을 PEGs로 확장한 것이다. 도함수를 정의하고 이를 문장 생성에 활용함으로써 정밀한 도구 기반 문법 분석이 가능해지며, 이는 숨겨진 버그(예: Ford의 $a^n b^n c^n$ 문법에서의 문제)를 드러내고, 도함수 정의가 가능한 모든 형식 체계에 적용 가능한 일반적 프레임워크를 제공한다.

ABSTRACT

Grammar-based sentence generation has been thoroughly explored for Context-Free Grammars (CFGs), but remains unsolved for recognition-based approaches such as Parsing Expression Grammars (PEGs). Lacking tool support, language designers using PEGs have difficulty predicting the behaviour of their parsers. In this paper, we extend the idea of derivatives, originally formulated for regular expressions, to PEGs. We then present a novel technique for sentence generation based on derivatives, applicable to any grammatical formalism for which the derivative can be defined--now including PEGs. Finally, we propose applying derivatives more generally to other problems facing language designers and implementers.

연구 동기 및 목표

  • PEGs 디버깅을 위한 도구 지원 부족 문제를 해결하기 위해, 복잡한 룩어웨이와 우선순위 선택 간의 상호작용으로 인해 발생하는 미묘하고 감지하기 어려운 버그가 많은 PEGs의 특성을 다루는 것.
  • 정규 표현식과 CFGs에서 성공한 도함수 기법을 파싱 표현 문법(Parsing Expression Grammars, PEGs)으로 확장하여, 통합된 프레임워크 내에서 인식과 생성을 가능하게 하는 것.
  • 언어 설계자와 구현자에게 PEGs에서 예시 문장을 자동으로 생성할 수 있는 실용적이고 자동화된 방법을 제공하여, 문법 결함을 조기에 발견하고 이해도를 향상시키는 것.
  • 도함수의 보다 광범위한 적용 가능성을 탐색하여, 테스트, 동치성 검증, 그리고 왼쪽 재귀나 구조화된 데이터에 대한 패턴 매칭과 같은 고급 기능 지원을 포함한 언어 공학 분야에서의 활용 가능성을 탐색하는 것.

제안 방법

  • 핵심 PEG 표현식에 와일드카드($\_$)와 실패($\emptyset$)를 추가하여 도함수 계산을 체계적으로 수행할 수 있도록 PEGs의 도함수를 정의한다.
  • PEGs에 적합한 도함수 기반 인식 알고리즘을 적용하여, 선택 항목이 동시에 평가되고, 룩어웨이 제약 조건이 도함수 계산 중에 유지되도록 보장한다.
  • PEG 표현식의 도함수를 이용해 모든 가능한 유도 경로를 체계적으로 탐색함으로써, 도함수 트리를 따라가면서 유효한 문장을 생성할 수 있도록 한다.
  • 도함수 기반 생성 기법을 활용하여, 음성 및 양성 룩어웨이, 우선순위 선택이 포함된 모든 PEG에서 구체적인 예시 문장을 생성한다.
  • 테스트 문장을 생성함으로써 문법 결함을 탐지하는 데 응용한다. 예를 들어, Ford의 $a^n b^n c^n$ 문법이 $aaa$도 수용한다는 점을 드러내어 디버깅에 유용함을 입증한다.
  • 고급 언어 기능을 지원하기 위해 접근법을 일반화하여, OMeta 스타일의 구조화된 데이터에 대한 패턴 매칭을 가능하게 하며, 테스트를 위한 임의의 객체 생성을 지원한다.

실험 결과

연구 질문

  • RQ1정규 표현식과 CFGs에서 효과적이었던 도함수 기법이, 우선순위 선택과 룩어웨이를 포함한 복잡한 기능을 지닌 파싱 표현 문법(PEGs)으로도 확장 가능한가?
  • RQ2음성 및 양성 룩어웨이가 존재하는 상황에서도 의미적 정확성을 유지하기 위해 도함수를 PEGs에 공식적으로 정의할 수 있는가?
  • RQ3복잡한 문법적 제약 조건을 가진 PEGs에서도 도함수 기반 접근법을 사용해 유효한 문장을 생성할 수 있는가?
  • RQ4도함수 기반 문장 생성이 언어 설계자들에게 도구 지원을 얼마나 향상시킬 수 있는가? 특히, 미묘한 문법 버그를 탐지하는 데서의 유용성은 어느 정도인가?
  • RQ5도함수 프레임워크는 왼쪽 재귀, OMeta 스타일의 패턴 매칭, 확률적 동치성 검증과 같은 고급 언어 기능을 지원하기 위해 확장할 수 있는가?

주요 결과

  • 논문은 $\epsilon$, 터미널, 넌터미널, 시퀀스, 선택, 반복, 그리고 양성 및 음성 룩어웨이를 포함한 모든 핵심 구성요소를 지원하는 PEGs의 도함수를 성공적으로 정의하였다.
  • 도함수 기반 문장 생성 기법은 Ford의 $a^n b^n c^n$ 문법에서 $aaa$와 같은 의도하지 않은 언어 구성요소를 정확히 식별하여, 이전에 발견되지 않은 결함을 드러냈다.
  • 이 방법은 IDE에서 실시간 문법 피드백을 가능하게 하여, 사용자가 문법을 편집함에 따라 동적으로 예시 문장을 생성함으로써 개발자 이해도 향상과 초기 버그 탐지에 기여한다.
  • 두 쪽에서 임의의 문장을 도함수 기반으로 생성하여 일치 일관성을 검증함으로써, PEGs의 확률적 동치성 검증을 지원한다.
  • 도함수 프레임워크는 OMeta 스타일의 패턴 매칭을 지원하도록 확장 가능하여, 테스트를 위한 구조화된 데이터(예: 객체, 배열)의 임의의 생성을 가능하게 한다.
  • 이 기법은 도함수를 통한 선택 항목의 동시 평가 기능을 통해, 혼합된 왼쪽 및 오른쪽 재귀 규칙의 자연스러운 의미 해석과 같은 PEG 의미론의 열린 문제를 해결하는 데 기초를 마련한다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.