パーサー理論に関する良い本は?


9

私のJavaプロジェクトの1つはパーボイルドのフォークであり、AntlrやJavaCCなどとは異なり、パーサーは実行時に生成されます。生成された文法は、解析式文法、またはPEGです(別の用語は「packrat」です)。

ランタイム生成は複雑さを追加しますが(バイトコード生成が含まれます)、別の側面はパーサー理論自体に関連します。残念ながら、私にはコンピューターサイエンスの確かな背景がないため、既存のコードを既存の概念(この場合はパーサー)にマッピングするための理論的な知識が不足しています。

私の購入したり読んだりできるパーサーに関する優れた参考書や、インターネット上のリンクさえあれば、理論的な知識が足りないため、このような「マッピング」を構築するのに役立ちますか?

回答:



3

パーサーの理論について学びたい場合は、この古典的な本の第1巻をお勧めします。

アホ、アルフレッドV。Ullman、Jeffrey D.、「解析、翻訳、およびコンパイルの理論」、Prentice-Hall(1972)。


これは、発行時のトピックに関する百科事典でした。しかし、それ以来、研究が行われてきました。
babou

1

言語の違いを気にしない場合、Higher Order Perlの第8章はすべて解析に関するものであり、特にパーサーコンビネーターを使用して再帰的降下パーサーを構築します。アクセス可能で(Perlを恐れていない場合)、必要に応じて無料で読むことができます。それは、何年も前にパース手法への私の興味を刺激するのに役立ちました。


0

解析テクニックは素晴らしい本であり、何度か読んだこともありますが、LR解析に重点を置いているため、興味をそそられません。あなたの特定のケースでは、代替の順序に基づいてバックトラッキングを行うトップダウンの再帰降下解析の一種であるPEGを調べています。

同じ戦略を使用するパーサーコンビネーターを確認することをお勧めします。たとえば、Haskellを使用してパーサーコンビネーターを構築するこのペーパーhttp://research.microsoft.com/pubs/65201/parsec-paper-letter.pdfを確認できます。try バックトラッキングが組み込まれているセクションを確認してください(セクション3.4)。

いずれにせよ、あなたが学ぶ必要があるのは:

  • 再帰降下構文解析とLL文法
  • 固定先読みと無限先読みの比較(バックトラックで実行)
  • バックトラック戦略
  • 左再帰ルールの扱い方
  • 指数的な動作を回避するための部分的な結果のメモ化
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.