0

私はカスタム言語を開発しており、すべてうまく機能しますが、getchar()、fopen() などの標準関数のサポートを追加することをやめました。私のアイデアの 1 つは、ビジュアル .lib ファイルを解析することですが、それは大規模なタスクです (たとえば、仕様の欠如のため)。他のアイデアはありますか?Dのような言語でどのように作られていますか?

EDIT:私が達成したいのは、システム機能(ファイルを開く、ソケットを使用するなど)を使用できるようにすることですが、最初から書く必要はありません。既に作成された libs/dll にアクセスする方法が必要です。

最も簡単な解決策は、たとえば C 標準ライブラリをロードし、これらの関数を呼び出すことです (スタックを事前にセットアップします) が、このコードを取得する (アセンブルする) 方法が必要です。

4

1 に答える 1

1

通常、C 標準ライブラリを使用するのではなく、言語に適した独自の標準ライブラリを作成します。なぜあなたは独自の言語を書いているのですか?それはあなたの標準ライブラリの設計に取り入れるべきではありませんか?

一般的な C ライブラリとの互換性のために、最も一般的なアプローチは、ライブラリへのインターフェイスを別の言語で再表現することです。Python は、このためのctypesモジュールを提供します。.NET では、P/Invokes を使用します。これにより、インターフェースを翻訳する際に手作業が発生し、エラーが発生する可能性がありますが、自動化されたプロセスよりもはるかに簡単で強力です。

また、.NET は、ライブラリと言語が正しく設計されている限り、.NET の任意の言語実装から .NET ライブラリにアクセスできるように設計されています。特定の言語には、独自の標準ライブラリによって満たされる独自のニーズがある場合がありますが、コンソール I/O などは 1 か所にあり、言語ごとに再発明する必要はありません。

于 2012-04-15T22:30:26.943 に答える