レクサーの作成の基本はどこで学ぶことができますか?


86

レクサーの書き方を学びたいです。私の大学のコースには、パーサー(およびそれに合わせてレクサー)を作成する必要があるという課題がありましたが、これは(マークを超えて)指示やフィードバックなしで私たちに与えられたので、私はそれからあまり学びませんでした。

このトピックを検索した後、私は自分がいる場所よりも数歩進んでいると感じる分野に焦点を当てたかなり高度な記事しか見つけることができません。より複雑な言語のトークン化を調査するための基礎として使用できる、非常に単純な言語の字句解析プログラムの作成の基本について説明したいと思います。

この段階では、ベストプラクティスや最適化手法にはあまり興味がありませんが、代わりに基本事項に焦点を当てることを好みます。私を始めるための良いリソースは何ですか?

回答:


73

基本的に、レクサーを作成するには2つの主要なアプローチがあります。

  1. 手書きのものを作成する場合は、この小さなチュートリアルをお勧めします。
  2. lexなどのいくつかのレクサージェネレータツールを使用する。この場合、選択した特定のツールのチュートリアルを読むことをお勧めします。

また、LLVMドキュメントのKaleidoscopeチュートリアルをお勧めします。単純な言語の実装を通じて実行され、特に小さなレクサーの記述方法を示します。チュートリアルにはC ++バージョンとObjectiveCamlバージョンがあります。

この主題に関する古典的な教科書は、コンパイラー:原理、技術、およびツールであり、ドラゴンブックとしても知られています。ただし、これはおそらく「かなり高度な記事」のカテゴリに分類されます。


4
万華鏡のチュートリアルは、私にとってこの質問に本当に答えた部分でした。
ロバートバイヤーズ2015

LL(1)パーサーを手動で作成する方法の詳細については、この回答を参照してください。
jchook

12

ドラゴンブックは、それは少し圧倒することができますが、おそらく対象に決定的なガイドです。言語実装パターンプログラミング言語語用論も優れたリソースです。


5
ドラゴンブックの+1。大学時代にそれからたくさんのことを学びました。ええ、そこにはたくさんありますが、コンパイラの設計と実装に本当に興味があるなら、それは素晴らしいリソースです。
DarinH 2011年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.