web-dev-qa-db-ja.com

コンパイラの構築方法を教える本は、インタプリタの実装を学ぶのに適していますか?

プログラミング言語の通訳を実装する方法を学ぶための本を探しています。 「通訳本」よりも「コンパイラ本」の方がはるかに多いのです。だから私の質問は:コンパイラを構築する方法を教えている本を読んで、(非常に初心者レベルで)インタプリタを構築する方法を学ぶことができますか?これは良い考えですか?もしそうなら、私は読んでいる間何を心に留めておく必要がありますか?

1
Aviv Cohn

絶対に-インタプリタは「一度に1行」のコンパイラです。これは、人間が理解できる何らかの形式のソースコードを取得し、それをコンピュータープロセッサが理解できるものに変換するという、ほぼ同じタスクを実行します。コンパイラーはソースファイル全体に対してこれを実行しますが、インタープリターは読み取りベースでこれを実行します。

必要に応じてソースをロードし、ソースファイルを解析して次に読み取る行を見つけることに関するいくつかの違いを処理する必要がありますが、それ以外の場合は、基本的にコンパイラを実装することになります。

7
gbjbaanb

コンパイラの構築方法を教える本は、インタプリタの実装を学ぶのに適していますか?

はい-コンパイラに関する優れた本は、幅広いトピックをカバーし、その多くはインタプリタ/インタープリタ言語に直接関連しています。例えば:

  • 字句解析
  • 構文解析
  • aSTの作成
  • 型チェック、識別子解決、その他の種類のセマンティック分析
  • 「コンパイラ」エラーレポート
  • おそらく...インタプリタが「実行」する抽象マシンコードの生成。

もしそうなら、私は読んでいる間何を心に留めておく必要がありますか?

本の一部の資料はそれほど関連性がない場合があることに注意してください。たとえば、typical抽象マシンはレジスタレスであるため、コード生成中のレジスタ割り当てに関する本のセクションは、通常、インタプリタには関係ありません。

(しかし、それは常識です。通常、そのような本を表紙から表紙まで読むことはありません。通常、目標に関連していないと思われる部分をざっと読みます。)

3
Stephen C