私はいくつかのリソースを開始する必要があります(私はCS学生です)パーサーとコンパイラを書くのに最高のプログラミング言語は何ですか?
答えて
Lisp/Schemeは私たちがuniでbackを使用して任命したものでした。
彼らは自分自身を非常にうまくやっています。
ダン
私はかつてのJavaにおける現代コンパイラの実装 "というタイトルのテキストブックを持っていますが、私は彼らの言語は自身をコンパイルできることを証明するよりも、専門家がまだC.その他を使用してだと思います。
汎用言語のパーサーを作成しますか?この場合は、ターゲット言語での記述(およびブートストラップ)を行うことをお勧めします。あなたは自分のドッグフードを食べるべきです。
私は「多くの場合推奨」と言っていますが、「はっきりと推奨」していません。 「汎用言語」は、すべてのタスクに適した言語がないため、一種の誤解です。私はCでWebアプリケーションを書くつもりはなく、Pythonでオペレーティングシステムを書いていません。あなたがこれらのことのどちらも行うことができないということではありません。それはそうするのが適切ではないということだけです。このロジックを受け入れると、構文解析には適していない汎用目的の言語を作成している可能性があるため、解析するためには使用しないでください。 – Imagist
ここではすてきな例があります:STEPSプロジェクトの* JavaScriptインタプリタ全体は、170行のOMetaソースコードであり、1人で午後1人で書いています。 Narcissus JavaScriptインタプリタでは、パーサー単独で*はJavaScriptの1000行以上で、AST訪問者にはさらに1000行です。したがって、JavaScriptを使用してJavaScriptを実装すると、OMetaを使用する場合よりも10倍も冗長になります。 –
しかし、パーサー/コンパイラを実際に使用する場合は、バグの溜めを洗い流してください。そして、あなたは実際にそれをこの言語自体で実装することによってそれを使用します。 – Mnementh
コンパイラーを基本から実装する場合、ほとんどのプログラミング言語はタスクに依存します。 (私はFortran IVとCOBOLで書かれたコンパイラ/パーサについて知っていますが、それを試すことはお勧めしません)
しかし、あなたが実装しようとしている言語が些細ではない文法であっても、フロントエンドを実装するために、レクサージェネレータおよび/またはパーサジェネレータを使用する方がよいでしょう。はるかに高速で信頼性の高いパーサーが得られます。
したがって、適切なプログラミング言語であり、適切なパーサジェネレータが利用可能です。多数のパーサージェネレーターを比較するページがWikipediaにあります。私はたくさんの人がいたことに気付かなかった!
パーサー(およびトークナイザー)の背後にあるテクニックを学ぶことを目的としている場合は、ゼロから自分自身を書く方が良いかもしれません。ほとんどのプログラミング言語でこれを行うことができますので、使い慣れたものを選ぶことができます。
少し前、私は、C#で、小さな架空のBASICライクなプログラミング言語用のパーサーを書くのがいかに簡単かを示す一連のブログ記事を書いた。私はここで迷惑メールをしたくないので、直接リンクはしませんが、ブログにアクセスして(私のプロフィールを参照)、下に行くと、 "私の投稿にパーサーを書く"というリンクがあります"-セクション。
パーサージェネレーターを調べたいと思うでしょう。あなたがCSの学生なら、おそらくドラゴンブックを見てみたいと思うでしょう:http://en.wikipedia.org/wiki/Compilers:_Principles,_Techniques,_and_Tools。
メモリ管理などのことを心配する必要がなく、文法に集中できるので、おそらくC#またはJavaを使用してパーサーを構築するのが最も簡単です。
良いC#パーサジェネレータは、GPPG:http://plas.fit.qut.edu.au/gppg/です。
なぜこれがdownvotedされたか説明することができますか?ドラゴンブックは優れたリソースであり、C#/ javaは問題の言葉に従っています。私はその質問自体は馬鹿だと思うが。 – gimpf
パーサーとコンパイラは、別々の2つの問題です。たとえば、私はCでコンパイラを書くかもしれませんが、私はパーサーをCで書くことはありません(私はパーサジェネレータを使用します)。速度が最優先ではない非常に単純なパーサの場合、良いテキスト操作機能を持つPerlまたはPythonでパーサを手作業でコードするかもしれません。しかし、非常に基本的なパーサーを超えて、私はパーサー生成ツールのいくつかの並べ替えを使用します。最も一般的に使用されるものはANTLR,Coco/R、Lex/Yacc、GNU実装のFlex/Bisonです。私の個人的な好みはCoco/Rですが、ANTLRは最近普及しているようです。
汎用プログラミング言語を作成している場合は、それ自体を書くことを検討してください。これには、移植性(人々は言語の最初のバージョンを移植するだけです)や機能のデモンストレーション(難解な問題なので、あなたの言語の証拠であるならあなたの言語で行うことができます)など、多くの利点があります。言語が解釈される場合、これはパフォーマンス上の理由から適切ではないかもしれません。
- 1. コンパイラを書くのに最も簡単なプログラミング言語は何ですか?
- 2. ウェブボットを書くのに最高のプログラミング言語はどれですか?
- 3. プログラミング言語コンパイラとデータベースコンパイラの違いは何ですか?
- 4. AWKで言語パーサーを書くことは可能ですか?
- 5. Androidで書かれたInit.goldfishのプログラミング言語は何ですか?
- 6. 最高のXMLパーサーは何ですか
- 7. Arduinoのプログラミング言語は何ですか?
- 8. プログラミング言語のインタプリタを書く
- 9. プログラミング言語でコンパイラを作成するために必要な言語機能は何ですか?
- 10. 関数 `selfApp`を本の中で書く*タイプとプログラミング言語*をスカラーに書く
- 11. 自然言語とプログラミング言語の文法上の違いは何ですか?
- 12. ATI GPUコードを書くための言語とコンパイラは?
- 13. 「語彙タイプ」とは何ですか?プログラミング言語間
- 14. 私の経験では、2Dプラットフォームゲームに最適なプログラミング言語は何ですか?
- 15. プログラミング言語のコンテキストでアクターモデルとは何ですか?
- 16. CLR言語の最適化。言語コンパイラVS JITコンパイラ
- 17. この新しいAxumプログラミング言語とは何ですか?
- 18. 機械学習の学習に最適なプログラミング言語は何ですか?
- 19. プログラミング言語コンパイラは、最初にアセンブリに変換するか、直接機械語に変換しますか?
- 20. 高水準のプログラミング言語がC言語ほど速くないのはなぜですか?
- 21. 最高のCSSジェネレータ言語ですか?
- 22. 辞書翻訳に使用するプログラミング言語、アルゴリズムは何ですか?
- 23. プレースホルダに#sを使用するプログラミング言語は何ですか?
- 24. Jプログラミング言語の 'assert'キーワードの機能は何ですか?
- 25. protoコンパイラ(googleプロトコルバッファ)の言語はどの言語ですか?
- 26. n/wプログラミング+ウェブ開発に最適なスクリプト言語は何ですか
- 27. プログラミングに関する最高のスクリーンキャストは何ですか?
- 28. マルチスレッドHTTPダウンロードアプリケーションのプログラミング言語は何ですか?
- 29. コンパイルされたコンパイル済みのプログラミング言語は何ですか?
- 30. Hackプログラミング言語のファイル拡張子は何ですか?
多くの他の多くの人々の間でhttp://stackoverflow.com/questions/1669/learning-to-write-a-コンパイラの相違 –
これはオープンエンドのリソース要求である場合、Neilは正しいです。それが比較とコントラストを求めているなら、それは "主観的で議論の的になる"ものに接する。 – dmckee
[最善の言葉を書くコンパイラ・イン](http://stackoverflow.com/質問/ 809710/what-is-the-the-best-language-to-a-compiler-in) – nawfal