Skip to main content
QUICK REVIEW

[論文レビュー] Recognising and Generating Terms using Derivatives of Parsing Expression Grammars

Tony Garnock-Jones, Mahdi Eslamimehr|arXiv (Cornell University)|Jan 31, 2018
Software Testing and Debugging Techniques参考文献 23被引用数 5
ひとこと要約

この論文は、パースィング・エクスプレッション・グラマー(PEGs)における項の認識および生成のための導出に基づく手法を導入する。これは、従来、正規表現やCFGsに用いられていたBrzozowskiの導出概念をPEGsへと拡張したものである。PEGの導出を定義し、それを文の生成に活用することで、正確でツール支援された文法解析が可能となり、隠れたバグ(例: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のデバッグに向けたツール支援の欠如に取り組む。これは、先行照合と優先順位付き選択の複雑な相互作用により、微妙で検出が困難なバグを含むためである。
  • 正規表現やCFGsで成功した導出技法を、パースィング・エクスプレッション・グラマー(PEGs)へと拡張し、統一されたフレームワーク内で認識と生成を可能にする。
  • 言語設計者および実装者に、PEGから例文を自動的に生成する実用的で自動化された手法を提供し、文法の欠陥を早期に発見し、理解を深める。
  • 導出の一般応用可能性を言語工学分野に探る。テスト、同等性の検査、左再帰や構造化データ上のパターンマッチングといった高度な機能を支援する。

提案手法

  • 核心的なPEG式にワイルドカード($\_$)と失敗($\emptyset$)を追加することで、PEGの導出を定義し、体系的な導出計算を可能にする。
  • 導出に基づく認識アルゴリズムをPEGsに適応し、選択肢が並列に評価され、先行照合制約が導出計算中に保持されることを保証する。
  • PEG式の導出を用いて、すべての可能な導出を体系的に探索し、導出木をたどることで有効な文を生成する。
  • 導出に基づく生成手法を活用し、負の先行照合、正の先行照合、優先順位付き選択を含む任意のPEGから具体的な例文を生成する。
  • テスト文の生成により文法の欠陥を特定する応用を実施する。例として、Fordの$a^n b^n c^n$文法が$a a a$も受理することを明らかにし、デバッグにおける有効性を示す。
  • O-Mapスタイルのパターンマッチングをサポートするようにアプローチを一般化し、テスト目的で構造化されたデータ(例:オブジェクト、配列)のランダム生成を可能にする。

実験結果

リサーチクエスチョン

  • RQ1正規表現やCFGsで有効であった導出技法を、優先順位付き選択や先行照合といった複雑な特徴を含むパースィング・エクスプレッション・グラマー(PEGs)へと拡張可能か?
  • RQ2負の先行照合および正の先行照合が存在する状況でも、意味的正しさを保つために、PEGsに対する導出を形式的に定義する方法は何か?
  • RQ3複雑な文法的制約を持つPEGですべての有効な文を導出に基づいて生成可能か?
  • RQ4導出に基づく文生成は、とくに微妙な文法バグの検出に、言語設計者に対するツール支援をどの程度向上させるか?
  • RQ5導出フレームワークを、左再帰、OMetaスタイルのパターンマッチング、確率的同等性検査といった高度な言語機能をサポートするように拡張可能か?

主な発見

  • 本論文は、$\epsilon$、端末記号、非端末記号、直列、選択肢、繰り返し、および正・負の先行照合を含む、PEGのすべての基本的構成要素をサポートする導出を成功裏に定義した。
  • 導出に基づく文生成手法は、Fordの$a^n b^n c^n$文法が$a a a$を意図せず受理することなど、意図しない言語の要素を正しく特定した。これは、以前に発見されなかった欠陥を明らかにした。
  • 本手法により、IDE内でのリアルタイムの文法フィードバックが可能となり、文法が編集されるたびに動的に例文が生成される。これにより、開発者の理解が深まり、バグの早期検出が可能になる。
  • 両側からランダムに文を生成し、一致の一貫性を検証することで、PEGの確率的同等性検査をサポートする。
  • 導出フレームワークは、OMetaスタイルのパターンマッチングをサポートするように拡張可能であり、テスト目的で構造化されたデータ(例:オブジェクト、配列)のランダム生成を可能にする。
  • 導出による選択肢の並列評価を可能にすることで、導出フレームワークは、混合された左再帰および右再帰ルールの自然な解釈といった、PEGの意味論に関する未解決の問題の解決に基礎を提供する。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。