私は、Cに基づいてカスタム(小)プログラミング言語(構文)を作成しようと考えています。 [testClass runThis:true]のような演算子でappleがどのようにobjective-cを実装したか分かりません。その構文で。あなたがベースの新しい言語、Clang(C、C++およびLLVMコンパイラのOBJの-Cフロントエンド)とEero Programming Languageで見たいと思うかもしれませんどのように私は私のカスタムC言語プログラミング言語に関する質問を作成する
答えて
のカスタム構文を実装し
Objective-CではLLVMで構築されています。どちらのプロジェクトもオープンソースです。
まずはパーサとレクサーを実装する必要があります。これについては、K & Rの "The C programming language"からCの構文と文法を取得し、それをFlexとBisonの入力として使用してスタンドアロンパーサーを作成する方法があります。それは構文的に有効なCプログラムを解析します。その後、必要に応じて調整してカスタマイズすることができます。
しかしこれは簡単なプロジェクトではなく、コンパイラについて多くのことを教える準備が必要です。がんばろう!
[...]
の内側のビットは、Smalltalkの構文に基づいています。
自分の言語を設計するのはかなり大きな課題です。あなたはcontext free grammars、lexical analysis、recursive descent parsers、LALR parsersと知り合う必要があります。まだ実行可能コードを生成することさえできていません。それでも楽しいです。実行可能なコンピュータ言語を設計して実装することは、挑戦的ですが、(IMO)報酬を与える運動です。
C++にステップアップし、DSEL(Domain-Specific Embedded Language)を作成することができます。私はどの問題を解決しようとしているのか分かりませんが、よく設計されたDSELは、自分の言語を設計し、パーサ、コンパイラなどを作成するよりもはるかに便利かもしれません。C++ Template Metaprogramming
コンパイラを書く必要があります。セマンティクスが合っていれば、Cコードに直接コンパイルできます。それ以外の場合は、簡単に直接Cに翻訳されない言語のビットのランタイムを記述する必要があります。小さなCベースの言語について話しているとすれば、それはおそらく問題ではありません。
これはどうやって行っていますか?ああ。おとこ。
writing a compilerの件に関して、数多くの本、記事、チュートリアルなどがあります。コンパイラの個々の部分は特に難しいわけではありませんが(少なくともナイーブで最適化されていないコンパイラの場合は)、多くの異なる方法、多くの場合互いに矛盾する方法があります。
非常に少なくとも、あなたはparser(通常Bisonと前述のANTLRのような自動化ツールを使用して)とcode generator、lexer(通常flex様またはANTLRなどのコンパイラスイートの一部として自動化ツールを使って)をお勧めします(通常は手作業で生成されます)。実際にはabstract syntax treeをパーサーとコードジェネレーターの間に貼り付けて、さまざまなコードを生成するためにさまざまなoptimizationsを実装する余地があります。
このトピックでは、研究論文はもちろん、lots of booksがあります。楽しむ。あなたがしようとしていることは、挑戦することですが、それを取り除くと報いることです。
- 1. C言語のクールな言語のためのコンパイラの作成に関する質問
- 2. C#でプログラミング言語を作成
- 3. Pythonでプログラミング言語を作成するには
- 4. 送信ボタンとプッシュボタンに関する質問。 HTMLのスクリプト言語
- 5. 中間言語としてのCに関する質問
- 6. IntelliJ Platform言語プラグインの開発に関する質問
- 7. IDEの作成に使用するプログラミング言語
- 8. 質問 - 「プログラミング言語C」のセクション1.6で入力
- 9. 複数のプログラミング言語でコードを作成するウィザード
- 10. 関数は、Cプログラミング言語
- 11. cプログラミング言語 - declare()関数
- 12. 多言語PHPスクリプト質問
- 13. 質問の言語のインタープリタ
- 14. strncpy質問(C言語)
- 15. アセンブリX86言語の質問
- 16. ソリューションの代わりに問題を定義するプログラミング言語?
- 17. プログラミング言語でコンパイラを作成するために必要な言語機能は何ですか?
- 18. PHPにコンパイルするプログラミング言語?
- 19. アセンブリーまたはCプログラミング言語に関する意見
- 20. vimgolfのようなプログラミング言語に関するウェブサイト?
- 21. プログラミング言語
- 22. NesCプログラミング言語
- 23. プログラミング言語の文化的問題
- 24. BloombergのC言語に関する質問金融ソフトウェア開発者のポスト
- 25. 非同期プログラミングに関する質問。ネットでのスレッド
- 26. JavaプログラマからのCプログラミングに関する質問
- 27. Scala Closureに関する質問(「Scalaのプログラミング」から)
- 28. プログラミング言語を変更する
- 29. Javaの構成に関する質問
- 30. このWebアプリケーションを作成できるWebプログラミング言語は何ですか?
私は、objective-cのように、Cに基づいて私のカスタム構文言語を作成しようとしています – Daniel