たいのですが解析コードをコンパイラのJava?
-
21-08-2019 - |
質問
が必要で書くコンパイラです。この課題を大学大学院の先生のおっしゃるとおり利用することができます。APIいる解析コードのどこういう要素もあると思います。そのようにできるのは、JVMまを生成する際に使われます。
そうそう、私が書くコンパイラのJavaをJava.
しやすいよ。APIです。どちらを使うべきregex?私は常に自分でパーサによる方が賢明ではないこと。
の手によりお願い申し上げます。
解決
正規表現は利用コンパイラが認識トークン(な再帰的構造を
クラシックの書面にコンパイラが 語彙分析装置 のためのトークンを認識し、 構文解析装置 認識構造 意味分析装置 を意味し、 中間コード発生装置, では、 オプティマイザ, は、前 対象コード発生装置.任意のステップを設定することができ合併し、またはスキップされ、場合には、コンパイラやすくなりました。
多くのツール開発のお手伝いをすること.Javaています
- AOETOOLS- http://www.antlr.org/
- ココ/R http://ssw.jku.at/Coco/
- Libdevhelp- https://javacc.dev.java.net/
- SableCC- http://sablecc.org/
他のヒント
私は主にStringTemplateを経由して、その出力生成機能を、 ANTLR のをお勧めします。
は何優れていることは同じでテレンス・パーの本には、であるということですはるかに優れた本の一つは、パーサジェネレータと書き込みコンパイラを志向ます。
そして、あなたが持っている ANTLRWorks のあなたがその場であなたの文法を勉強してデバッグすることができました。
それをすべてを先頭に、 ANTLRウィキ+ドキュメント、(十分な私の好みに合わせて包括的ではないが)、任意の初心者のためにオフに開始するには良い場所です。それは私が週にコンパイラの書き込みに関する知識をリフレッシュ助けます。
JavaCCのに、Java用の言語パーサを見てください。それはのこつを使用して取得することは非常に簡単です。
くクラシック-Lex+Yacc.Javaで呪文 JAX や libdevhelp.Libdevhelpもあ Javaの文法 準備を検査しています。
でおすすめられていますが、metacompilerのように AOETOOLS, は、簡単な パーサcombinator 図書館があります。 機能Java は パーサcombinator API.ものもありま JParsec.これらに基づ のParsec図書館のためのウ.
私はないが選択することによって、私のコンパイラのコースでSableCCを使用しました。
私はより多くの利便性よりも清潔さに重点を置いて、非常に大型で重量級のそれを見つけることを覚えておいてください。(無演算子の優先順位、または何か、あなたが述べるために持っている文法で)
私はおそらく、私は選択肢を持っていた場合は、何か他のものを使用したいと思います。 (Haskellのための)(C用)のyaccと幸せと私の経験では、両方の快適されています。
パーサコンビネータ良い選択です。人気のJava実装はJParsecです。
で http://llvm.orgするのビットに投げますミックス:)
私はあなたがBeanShellのためのソースを見てお勧めします。これは、Java用のコンパイラを持っていると読み取ることが非常に簡単です。
http://java-source.net/open-source/parser-generators と http://catalog.compilertools.net/java.html のカタログを含めますこのためのツール。また、正規表現にhref="https://stackoverflow.com/questions/514313/alternatives-to-regular-expressions">代替にStackOverflowの質問
JParsec のように、パーサコンビネータを使用してください。それをの使用方法については、良いビデオチュートリアルがあります。