2012-04-15 8 views
0

私はカスタム言語を開発していますが、すべてうまくいきますが、getchar()、fopen()などの標準関数のサポートを追加するのをやめました。視覚的な.libファイルですが、大量のタスク(例えば、仕様が不足しているため)です。他にもアイデアはありますか?それはどのようにDのような言語で作られていますか?カスタム言語での標準的なCライブラリのサポート

編集: 私が達成したいことは、システム機能(たとえば、ファイルを開く、ソケットを使用するなど)を使用できるようにすることですが、ゼロから書き込む必要はありません。すでに書かれているlibs/dllにアクセスするには何らかの方法が必要です。

最も簡単な解決策は、 Cの標準ライブラリとこれらの関数(前にスタックを設定する)を呼び出すが、私はこのコードを取得するいくつかの方法が必要です(組み立てられた)。

+1

あなたが求めていることを理解するのは難しいです。投稿を編集して詳細を説明してください。 – pzanoni

答えて

1

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

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

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