Antlr を使用して DSL を作成し、文法ファイルからレクサーとパーサーを生成しました。パーサーは、計算可能なさまざまなノード (関数ノードなど) を含む抽象構文ツリーを生成します。関数ノードのコードでは、バインドを処理します。つまり、関数のライブラリから一致する関数名とパラメーターの型をチェックします。関数のルックアップを最適化するために、ここにいくつかの単純なキャッシュがあります (2 つの int で A+B を呼び出すと、次に plus 演算子を使用するときに 2 つの int になる可能性が高くなります)。
最近、DLR について読んでいますが、このタイプのスクリプト言語の実装に対応するように設計されているようです。一見したところ、パーサーまたはレクサーを生成するようには見えませんが、実装の他の部分を支援しているようです。DLR の使用に切り替えることの主な利点は何だろうと考えていました。