私はLLVMの初心者です。私の基本的な必要性は、Fortranのコードを解析することです。 LLVMのウェブサイトを見ると、LLVMはコードを解析するためのライブラリとして使用できるようです。だから私はFortranコードを解析し、コード(AST?)に関する情報を抽出するためにそれを使うことができますか?Fortranの解析にLLVMを使用できますか?
答えて
LLVMはコンパイラのバックエンドです。解析する方法を知っている唯一のものは、プログラミング言語のフロントエンドから生成されるように設計された中間言語であるLLVM IRです。 LLVMの公式フロントエンドはClangであり、C、C++、ObjCを扱うことができます。他の言語に興味がある場合は、DragonEggもあります。これはgccのLLVMプラグインです。 gccのフロントエンドとLLVMをバックエンドとして使用するので、gccがパースする方法を知っているものを解析できます。私は、AdaとFortranから正しいコードを生成するように作業が行われていることを知っています。
現状
のgcc-4.6で最適に動作
- :ここではそのページからの抜粋です。
- Fortranは非常にうまく動作します。 Ada、C、C++もうまくいきます。 Adaはgcc-4.7でうまく動作しません。
- Obj-C、Obj-C++、Goの合理的な量をコンパイルできます。
- これは単純なJavaプログラムをコンパイルできますが、正しく実行されません(これはGCCの LTOをサポートしていないJavaフロントエンドの結果です)。
- デバッグ情報が不良です。イーライBenderskyのコメントに追加
ありがとう!だから私はライブラリとしてDragonEggを使うことができますか? Fortranコードを解析し、シンボル情報を要求するようにします。 –
@LiDong:Fortranを解析してシンボル情報を取得する必要があるのであれば、おそらくDragonEggやLLVMは必要ありません。おそらく、フロントエンドのデータをダンプするにはgccが必要です。私はgccでそれを行うためのドキュメントを探します。 –
いいえ、LLVMはFortranを解析するためのライブラリではありません。 LLVMは、コンパイラのバックエンドを実装するためのライブラリです。自分でFortranフロントエンドを書く必要があります。
またはhttp://dragonegg.llvm.orgなどのFortranフロントエンドを書いた他の人の作品を使用してください –
、あなたは「コード生成を開始する前に、出力内部解析ツリー」のためのgfortranで-fdump-構文解析木のオプションを使用することができます。
- 1. LLVMでのエイリアス解析
- 2. JavaからLLVMビットコードを解析する
- 3. LLVM IRを解析するには
- 4. Fortranでの文字列の解析
- 5. Javaでデータフロー解析にPMDを使用できますか?
- 6. データ構造を解析するCLANG/LLVM
- 7. ヘッダーファイル解析にframa-cを使用できますか?
- 8. LLVMの静的解析ツールIR
- 9. vb.netを使用してSQLクエリを解析できますか?
- 10. LLVMパスを使用してコードを変更できますか?
- 11. 元のソースに戻すためのLLVM IRコード(デバッグシンボル付き)の解析
- 12. OpenMPはHigh Sierra LLVMで使用できますか?
- 13. Fortranコンパイラを使用してソースファイルの解析チェックやかなりの印刷を行うには?
- 14. Environment.GetCommandLineArgs()の解析を再利用できますか?
- 15. Xpathを使用してXMLを解析できません
- 16. strptimeを使用してdatetimeを解析できません
- 17. Jqueryを使用してJSONを解析できません
- 18. Kibanaを使用してメッセージフィールドを解析することはできますか
- 19. はParse :: Lexを使用して解析できません
- 20. 新しいバージョンのLLVMをコンパイルしてXcodeで使用できますか?
- 21. NSArray、NSDictionary、NSNumberの "リテラル"をXcode 4.3で使用できますか? (LLVM 4.0)
- 22. pexpectをリアルタイムでどのように解析できますか?
- 23. PerlでJSONをどのように解析できますか?
- 24. Watcom Fortranからgfortranに移行し、このエラーを理解できません
- 25. 2つのFORTRANモジュールが互いの部分を使用できますか?
- 26. 読み取り後の依存関係LLVMメモリ依存解析
- 27. 理解LLVM-IR
- 28. クエリを使用して解析データベースからユーザーデータを取得できません。
- 29. SWXMLHashを使用してWebサービスからXMLを解析できません
- 30. BBCodeの解析にPEGパーサーを使用する:pegjsまたは...何ですか?
LLVMには解析するための* nothing *があります。 f2cからのパーサー、またはantlr Fortran文法の1つを再利用することができます。あるいは、単にあなた自身のパーサーを書くと、Fortranはかなり簡単です。 –
@ SK-logic私は、私の目的のためにTreetopを使ってFortranパーサを書いて始めました。 –