可能であれば、C# コード ベースから ANTLR を使用して C++ AST を取得しようとしています。
これで、基本的なワークフローは明確に思えます。ANTLRWorks を使用して .cs レクサーとパーサーを生成し、それらと ANTLR 参照を C# プロジェクトに追加し、C++ ソースを与え、結果のデータ構造を処理します。
しかし、私はすでに2番目のステップで失敗しています。http://www.antlr.org/grammar/listから C++ 文法をダウンロードし(Aurelian Melinte による「C++ 文法」と、Ramin Zaghi による「ANTLR 3.2 の C++ 文法とコード トレーサー」を試しました)、レクサーとパーサーを生成しました。 "language = CSharp3;" を設定することによる C# 文法のオプションで。しかし、パーサー ファイルとレクサー ファイルを含む C# プロジェクトをコンパイルできません。
問題は、これが私が使用している文法の問題なのか、利用可能なバージョンの問題なのかわからないことです... ANTLR、C# ランタイム、C# ターゲットには非常に多くの異なるバージョンがあります。すべての組み合わせを試すことは、かなり絶望的な作業のようです。
ただし、現在の組み合わせは正常に機能しているように見えます。小さな例の文法ではエラーが 1 つだけ出てきます (C# lexer の「HIDDEN」を「Hidden」に変更する必要があり、それだけです)。ただし、C++ パーサー/lexer は引き続き主にプリプロセッサ ディレクティブと配列宣言を処理する多くのコンパイラ エラー。
ANTLR で生成された C# ファイルを使用して C++ を解析できた人はいますか? これがどのように機能するのか、誰にもわかりませんか?