Happy-GLL: modular, reusable and complete top-down parsers for parameterized nonterminals

要約

パーサー ジェネレーターとパーサー コンビネーター ライブラリは、パーサーを作成するための最も一般的なツールです。
パーサー コンビネーターは、ホスト言語を使用して、パーサーをパラメーターとして持つ高階関数の形式で再利用可能なコンポーネントを提供します。
抽象化によるこの種の再利用をサポートするパーサー ジェネレーターはほとんどなく、生成される文法の部分と同じくらいモジュール化され、再利用可能なパーサーを生成するパーサーはさらに少数です。
この論文では、GLL アルゴリズムの FUN-GLL バリアントに基づいて、パラメーター化された非終端記号を含む構文記述から、モジュール式で再利用可能な完全なトップダウン パーサーを生成するための戦略を提示します。
この戦略は、Happy パーサー ジェネレーターの新しいバックエンドとして説明および実証されています。
Happy grammar には、パラメーターが文法記号を抽象化する「パラメーター化された非終端記号」を含めることができ、再利用可能な文法演算子を定義するための抽象化メカニズムを提供します。
ただし、パラメータ化された非終端記号は文法全体で再利用できないため、既存の Happy バックエンドは、パラメータ化された非終端記号の可能性を十分に発揮できません。
さらに、パーサー生成プロセスが終了しない場合や、指数関数的な時間内に指数関数的に大きなパーサーが生成される場合があります。
このホワイト ペーパーで紹介する GLL バックエンドは、パーサー コンビネーターに似た高次関数を生成することにより、パラメーター化された非終端記号を正常に実装し、トップダウン解析のすべての利点を継承します。
バックエンドは、文脈自由文法の完全なクラスのパーサーを生成することができ、線形時間でパーサーを生成し、入力文字列のすべての派生を見つけるパーサーを生成します。
私たちの知る限り、提示された GLL バックエンドにより、Happy はこれらすべての機能を組み合わせた最初のパーサー ジェネレーターになります。
この論文では、GLL バックエンドの翻訳手順について説明し、いくつかの実験で Happy の LALR および GLR バックエンドと比較します。

要約(オリジナル)

Parser generators and parser combinator libraries are the most popular tools for producing parsers. Parser combinators use the host language to provide reusable components in the form of higher-order functions with parsers as parameters. Very few parser generators support this kind of reuse through abstraction and even fewer generate parsers that are as modular and reusable as the parts of the grammar for which they are produced. This paper presents a strategy for generating modular, reusable and complete top-down parsers from syntax descriptions with parameterized nonterminals, based on the FUN-GLL variant of the GLL algorithm. The strategy is discussed and demonstrated as a novel back-end for the Happy parser generator. Happy grammars can contain `parameterized nonterminals’ in which parameters abstract over grammar symbols, granting an abstraction mechanism to define reusable grammar operators. However, the existing Happy back-ends do not deliver on the full potential of parameterized nonterminals as parameterized nonterminals cannot be reused across grammars. Moreover, the parser generation process may fail to terminate or may result in exponentially large parsers generated in an exponential amount of time. The GLL back-end presented in this paper implements parameterized nonterminals successfully by generating higher-order functions that resemble parser combinators, inheriting all the advantages of top-down parsing. The back-end is capable of generating parsers for the full class of context-free grammars, generates parsers in linear time and generates parsers that find all derivations of the input string. To our knowledge, the presented GLL back-end makes Happy the first parser generator that combines all these features. This paper describes the translation procedure of the GLL back-end and compares it to the LALR and GLR back-ends of Happy in several experiments.

arxiv情報

著者 L. Thomas van Binsbergen,Damian Frolich
発行日 2023-03-14 16:23:23+00:00
arxivサイト arxiv_id(pdf)

提供元, 利用サービス

arxiv.jp, Google

カテゴリー: cs.CL, cs.PL, cs.SE パーマリンク