私は、インタプリタを既存のアプリケーションに整数化するプロジェクトに執着していることに気づきました。解釈される言語は、アプリケーション固有の組み込みを備えたLispの派生語です。個々の「プログラム」は、アプリケーションでバッチスタイルで実行されます。
何年にもわたって、いくつかのコンパイラーといくつかのデータ言語トランスレーター/パーサーを作成してきたことに驚いていますが、実際にインタープリターを作成したことはありません。プロトタイプはかなり進んでおり、C++で構文ツリーウォーカーとして実装されています。私はおそらくプロトタイプを超えてアーキテクチャに影響を与えることができますが、実装言語(C ++)には影響を与えません。したがって、制約:
- 実装はC++で行われます
- 構文解析はおそらくyacc/bison文法で処理されます(現在は)
- NekoVMやLLVMのような完全なVM/インタプリタエコロジーの提案は、おそらくこのプロジェクトでは実用的ではありません。これがNIHのように聞こえても、自己完結型の方が優れています。
私が本当に探しているのは、通訳者の実装の基本に関する資料を読むことです。私はSOと、Lambda the Ultimateとして知られている別のサイトをブラウジングしましたが、それらはプログラミング言語理論をより重視しています。
私がこれまでに集めた一口のいくつか:
クリスチャンQueinnecによる小さな断片のLisp 。それを推奨する人は、「些細なインタプリタからより高度な技術に移行し、バイトコードと「SchemetoC」コンパイラの提示を終了する」と述べました。
NekoVM。上で述べたように、このプロジェクトをサポートするためにVMフレームワーク全体を組み込むことが許可されるとは思えません。
コンピュータプログラムの構造と解釈。もともと私はこれはやり過ぎかもしれないと提案しましたが、健全なチャンクを処理したので、@JBFに同意します。非常に有益で、心を広げます。
ポール・グレアムによるLispについて。私はこれを読みました、そしてそれはLispの原則への有益な紹介ですが、インタプリタの構築をすぐに始めるには十分ではありません。
オウムの実装。これは楽しい読み物のようです。それが私に基本を提供するかどうかはわかりません。
スクラッチからのスキーム。Peter Michauxは、Cで記述された迅速で汚いSchemeインタープリター(後のプロジェクトでブートストラップとして使用するため)からコンパイルされたSchemeコードまで、Schemeのさまざまな実装を攻撃しています。これまでのところ非常に興味深い。
言語実装パターン:独自のドメイン固有および一般的なプログラミング言語を作成します。これは、通訳言語の作成に関する書籍のコメントスレッドで推奨されています。この本には、通訳者の作成の練習に専念する2つの章が含まれているので、私はそれを私の読書キューに追加しています。
- 新しい(そしてまだ古い、すなわち1979年):PJブラウンによるインタラクティブなコンパイラーとインタープリターの作成。これは長い間印刷されていませんが、基本的なインタープリターの実装に関連するさまざまなタスクの概要を提供するのに興味深いものです。これについてはさまざまなレビューを見てきましたが、安いので(注文時に約3.50ドルで使用しています)、試してみます。
では、どうですか?新生児を手に取って、Lispのような言語のためにC / C ++でインタプリタを構築する方法を示す良い本はありますか?構文ツリーウォーカーまたはバイトコードインタープリターを好みますか?
@JBFに答えるには:
現在のプロトタイプはインタプリタであり、任意のコードファイルへのパスを受け入れてアプリケーション環境で実行しているので、私には理にかなっています。ビルトインは、メモリ内のデータ表現に影響を与えるために使用されます。
ひどく遅くてはいけません。現在のツリーウォーカーは許容できるようです。
言語はLispに基づいていますが、Lispではないため、標準への準拠は必要ありません。
- 上記のように、この問題を解決するために完全な外部VM/インタープリタープロジェクトを追加できる可能性はほとんどありません。
他のポスターにも、あなたの引用をチェックします。皆さんありがとう!