2012-02-16 8 views

答えて

2

既存のANTLR文法に基づくASTを生成することをANTLRを使用して取得することはよく最も簡単かもしれ、例えばthe source。 }が、Cコードの多くの本物の方言のための堅牢なパーサを提供 - :http://www.antlr.org/api/Java/index.html

+3

Cパーサーを構築することができます。確かにANTLRは細い意味で細かいパーサーを構築します。しかし、OPが望んでいるものは、本当のCプログラムを読むものであるように見えます。プリプロセッサ、ダイアレクト(C89、C99、C11、...)、ベンダーの種類(GCC、MSVC、GreenHills)、文字セットなど、この権利を得るための詳細な作業ははるかに大きくなります。あなたは自分でそれを再発明しようとするよりも、すでにすべてのことをしている方が良いです。 –

-1

当社C Front EndはPythonで間違いなく、Javaではないではありません。

ANTLRは、ここでのJava APIを持っています。それはただのASTの構築を超えています。それはプリプロセッサー、シンボルテーブル、ローカルおよびグローバルフロー分析を提供します。これは、 "ASTを持つ"以外の何かをCにしたい場合に必要となります。

これは、解析とフロー解析のためのインフラストラクチャを提供し、パターンを使用してASTに変換を適用し、有効なソースコードを再生成できるDMS Software Reengineering Toolkitの上に構築されています。

EDIT(コメントに対する回答):DMS自体は、C言語のような並列プログラミング言語PARLANSEで実装されていますが、ファイングレイン並列構造と例外処理が含まれています。 DMSは、完全Unicode対応のレクサー、文法のBNF、ツリー型解析のための属性文法、パターン認識やソースコードの書き換えに役立つソース・ソース変換など、言語処理を定義する一連のDSLを提供します。

+0

これは質問に対する答えを提供しません。批評をしたり、著者の説明を求めるには、投稿の下にコメントを残してください。 –

+0

@TonyHopkinson: "* Cソースコードパーサーを探しています*"は、これは直接答えませんか?この答えの批判はどこにありますか? –

+1

私は仲間の上を見渡した。ガイはまた、Javaを求めて、あなたはそれが何に組み込まれているか言っていませんでした。私たちのビルド。それが私だったら、コメントを見たいと思うかもしれないので、これをやったでしょう。 PS私はdownvoteをしなかった... –

2

Eclipse CDTプロジェクトには、Javaで書かれたCパーサーがあります。同様の質問で私のanswerを参照してください。