web-dev-qa-db-ja.com

レクサーの作成の基本はどこで学べますか?

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

このトピックを検索した後、私は自分がいる場所の数歩先にあると感じる領域に焦点を当てたかなり高度な記事を見つけることができます。私は、より複雑な言語のトークン化を調査するための基礎として使用できる、非常に単純な言語の字句解析器を作成する基本についての議論が必要です。

この段階では、ベストプラクティスや最適化の手法にはあまり興味がありませんが、その代わりに重要事項に焦点を合わせることを好みます。始めるのに役立つリソースは何ですか?

67

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

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

また、 [〜#〜] llvm [〜#〜] ドキュメントの Kaleidoscopeチュートリアル をお勧めします。単純な言語の実装を実行し、特に小さなレクサーの作成方法を示します。チュートリアルには、C++およびObjective Camlバージョンがあります。

このテーマに関する古典的な教科書は コンパイラー:原則、技法、およびツール ドラゴンブックとしても知られています。ただし、これはおそらく「かなり高度な評価」のカテゴリに該当します。

59
vitaut

Dragon Book は、おそらく圧倒的かもしれませんが、主題に関する決定的なガイドです。 Language Implementation Patterns および Programming Language Pragmatics も素晴らしいリソースです。

9
Brandon Moretz