2011-04-11 3 views
1

私は、Cに基づいてカスタム(小)プログラミング言語(構文)を作成しようと考えています。 [testClass runThis:true]のような演算子でappleがどのようにobjective-cを実装したか分かりません。その構文で。あなたがベースの新しい言語、Clang(C、C++およびLLVMコンパイラのOBJの-Cフロントエンド)とEero Programming Languageで見たいと思うかもしれませんどのように私は私のカスタムC言語プログラミング言語に関する質問を作成する

答えて

5

のカスタム構文を実装し

Objective-CではLLVMで構築されています。どちらのプロジェクトもオープンソースです。

2

まずはパーサとレクサーを実装する必要があります。これについては、K & Rの "The C programming language"からCの構文と文法を取得し、それをFlexとBisonの入力として使用してスタンドアロンパーサーを作成する方法があります。それは構文的に有効なCプログラムを解析します。その後、必要に応じて調整してカスタマイズすることができます。

しかしこれは簡単なプロジェクトではなく、コンパイラについて多くのことを教える準備が必要です。がんばろう!

+0

私は、objective-cのように、Cに基づいて私のカスタム構文言語を作成しようとしています – Daniel

1

[...]の内側のビットは、Smalltalkの構文に基づいています。

自分の言語を設計するのはかなり大きな課題です。あなたはcontext free grammarslexical analysisrecursive descent parsersLALR parsersと知り合う必要があります。まだ実行可能コードを生成することさえできていません。それでも楽しいです。実行可能なコンピュータ言語を設計して実装することは、挑戦的ですが、(IMO)報酬を与える運動です。

0

C++にステップアップし、DSEL(Domain-Specific Embedded Language)を作成することができます。私はどの問題を解決しようとしているのか分かりませんが、よく設計されたDSELは、自分の言語を設計し、パーサ、コンパイラなどを作成するよりもはるかに便利かもしれません。C++ Template Metaprogramming

1

コンパイラを書く必要があります。セマンティクスが合っていれば、Cコードに直接コンパイルできます。それ以外の場合は、簡単に直接Cに翻訳されない言語のビットのランタイムを記述する必要があります。小さなCベースの言語について話しているとすれば、それはおそらく問題ではありません。

これはどうやって行っていますか?ああ。おとこ。

writing a compilerの件に関して、数多くの本、記事、チュートリアルなどがあります。コンパイラの個々の部分は特に難しいわけではありませんが(少なくともナイーブで最適化されていないコンパイラの場合は)、多くの異なる方法、多くの場合互いに矛盾する方法があります。

非常に少なくとも、あなたはparser(通常Bisonと前述のANTLRのような自動化ツールを使用して)とcode generatorlexer(通常flex様またはANTLRなどのコンパイラスイートの一部として自動化ツールを使って)をお勧めします(通常は手作業で生成されます)。実際にはabstract syntax treeをパーサーとコードジェネレーターの間に貼り付けて、さまざまなコードを生成するためにさまざまなoptimizationsを実装する余地があります。

このトピックでは、研究論文はもちろん、lots of booksがあります。楽しむ。あなたがしようとしていることは、挑戦することですが、それを取り除くと報いることです。

関連する問題