2009-03-23 13 views
2

Javaでプログラムで使用できる既存のC++パーサー/コードモデルを知っている人がいるのだろうか。私はJavaからライブラリとして使用できるEclipse CDTに似たものを探しています(Eclipseに依存していません)。前もって感謝します。C++ Parser/Java for Model

答えて

0

レックス、Yaccの、ANTLR、ジャックのようなパーサジェネレータのためのいくつかの不完全なLALR文法は

は、C++はLALRとBNRの文法は常に不完全になりますので、決定不能構文文法を持っていますが、あなたと同じくらい長いなど、ありますC++コンパイラを書こうとしていないので、十分に良いはずです。

+1

C++は決めることができません。これはLRまたはLALRではないため、これらのパーサー技術を使用して解析することは困難です。これは、C++のシンボルテーブルの作成と比べると小さな痛みです。これは王室の雌犬(C++標準の600ページ...)です。率直に言えば、それはあなたの生活をしたい方法でない限り、独自のC + +パーサをロールしようとするだけばかげている。 –

+0

私の間違い。それは「決めることができない」と私が頻繁に見ている、まれに論争するコメントです。私は「決めることができない」という意味を誤解していたと思う。 – greyfade

+0

パーズツリーは意味変数に依存することがあるので、C++は実際には決めることができません。ここでの「不可能性」とは、Haltingの問題をC++の解析に還元できることを意味します。 http://yosefk.com/c++fqa/web-vs-c++.html#misfeature-3 –

-1

JavaCCにはいくつかのC++文法があります。 Googleを試してみてください。

+0

C++用の堅牢なJavaCC文法は得られません。そうしても、プリプロセッサ処理については心配する必要があります。 どちらもC++のシンボルテーブルの作成と比べて小さな痛みです。これは王室の雌犬(C++の標準600ページ...)です。 –

+0

"g ++ -E"のようなものを使って、前処理をスキップしたり、最初のパスとして独立して実行することができます。 --- ARM(Annotated C++ Reference Manual)のような書籍(少し古くなった - それ以来C++は改良されている)には、C++文法が含まれています。私はここでの目標はコンパイルではなく、解析していると思った。したがって、シンボルテーブルは不要です。私は過去にC++ JavaCCパーサを書いてきました。オープンソースのソリューションは存在します。 –

+0

彼は何をしたいのか分かりませんでした。いずれにしても、シンボルテーブルなしでC++にできることはあまりありません。非常に限られた情報を探していない限り、彼は必要です。 –

2

独自のC++パーサーを構築する必要はありません。それはあなたを殺すでしょう。

あなたはすでにEclipseのCDTプロジェクトについて知っている: www.ibm.com/developerworks/library/os-ecl-cdt3/index.html 私の知る限りを、そのパーサは、良く、エッジの周りに少しあいまいです。 YMMV。 利点:Java(およびEclipseの場合は気にします)。 C++を処理してJavaで実行する場合は、 が唯一の実用的な選択肢になります。 C++の方言(ANSI、GNU、MSVC 2005/2008)、 数百万行のコードで火災によってテストの多種多様な http://www.semdesigns.com/Products/FrontEnds/CppFrontEnd.html 作品:

また、当社のDMSソフトウェアリエンジニアリングツールキットC++フロントエンドがあります。 あなたの視点から見ると、Javaではなく、不利です。 C++を分析したい場合は、 をJavaで実行しても構いませんが、 が最適です。