3

私は、オペレーティングシステム、アルゴリズム、ソフトウェアの正当性を数学的に証明するなど、低レベルの概念に興味を持っています。

私が最も興味をそそられたのはコンパイラーです。私はそれらについて学び始め、学習のためにおもちゃのコンパイラを実装したいと思っています、そして多分それは何か大きなものであることが判明しました(あなたは決して知りませんよね?)。

私の目標は、luaのような静的に型付けされた、スレッド対応のプログラミング言語を実装することです(最初の目標は、もちろん基本的なスタック操作を備えたインタープリターです)。私の問題は、c、c ++やpascalなどの低レベル言語にはほとんどまたはまったく関心がなく、動的型付け環境で静的型付け言語用のコンパイラーを実装できるかどうか疑問に思っていたことです。

私はそのような言語をluaまたはpythonで実装することに興味があります(luaの方が適しています)。

4

3 に答える 3

6

簡単な質問: はい、絶対に、それは常に行われています。ほとんどのコンパイル済み言語は、独自のコンパイラが言語自体で記述されるように、最終的に「ブートストラップ」されます。たとえば、javac標準の Java コンパイラは Java で記述されます。

于 2012-07-29T23:56:44.650 に答える
2

はい、そうです。実際、C# の最新バージョンのコンパイラは実装される予定です... C#: http://blogs.msdn.com/b/csharpfaq/archive/2011/10/19/introducing-the-microsoft-roslyn- ctp.aspx

(私は Roslyn C# ライブラリについて話している:)

この作業の基盤は、C# で記述された新しい C# コンパイラです (また、VB で記述された新しい VB コンパイラについても詳しくは、VB チームのブログを参照してください)。

編集

これをチェックしてください: https://bitbucket.org/pypy/pypy

Python で書かれた Python の実装です。

于 2012-07-30T00:01:07.910 に答える
-1

他の人が指摘しているように、はい、これは可能ですが...

1- コンパイラでは、通常、実装されているプログラミング言語と実装に使用されるプログラミング言語との間の結合はかなり薄いです。一方、さまざまな言語にはさまざまなコミュニティがあり、さまざまな「専門領域」があります。コンパイラを書くために、最前線の関数型プログラミング言語 (Haskell、Ocaml など...) には、ユースケースと例のはるかに豊富なライブラリがあります。彼らの経験を喜んで共有します。

2-通訳者(または翻訳者)の作成に興味がある場合、話は異なります。ホスト言語の特性のいくつかは、通訳者言語のいくつかの機能を実装する際の容易さに強く影響します。たとえば、アプリケーションの順序、動的スコープとクロージャーは、ホストでの実装がはるかに簡単で、インタープリター言語は同じルールに従います。

于 2012-08-01T19:20:22.637 に答える