でLLVM JITパーサーを書くLLVM tutorialsには単純なJITコンパイラを書く方法があります。このチュートリアルのUnfortunatelly、lexer、parserは手作業で書かれています。私は、このようなソリューションは学習目的には良いと思っていましたが、複雑で生産準備が整ったコンパイラを書くのには適していません。 GCCや他のいくつかの "ビッグコンパイラ"が手書きで書かれているようです。しかし、私は、これらすべてのパーサジェネレータは、独自のコンパイラを書くときに大きな助長を与えると思います(特に、あなたがチームを持たずに単独でそれをやっているとき)。Bison/Antlr/Packrat/Elkhound/
Bison/Antlr/Packrat/Elkhoundなどの既存のパーサージェネレータをLLVMとともに使用してJITコンパイラを作成することはできますか?私は式を使ってパーサーに常に(一度ではなく)「フィード」し、実行時にコンパイルできるようにしたい。
追加 "私は、最高の現代的な"パーサジェネレータ(このようなもの:https://stackoverflow.com/questions/428892/what-parser-generator-do-you-recommend)について多くの質問を見つけました。これらのツールを使用してLLVM JITコンパイラを作成することができれば、この特定のケースでパフォーマンスと柔軟性の点で最も優れたヒントや推奨事項があれば感謝します。
"このようなソリューションは学習目的には適していますが、複雑で生産準備が整ったコンパイラを書くのには適していません。私はいつもGCCは複雑で生産準備が整ったコンパイラだと思っていました。何でも... –
GCCは最初はバイソンを使っていましたが、あなたは正しいです - 私は私の質問でそれを修正しています。しかし、実際には、可能であれば、この作業を簡単にするためにジェネレータを使用したいと考えています。 –
yacc、Bison、et alは、学習目的などには適していますが、深刻な制作作業では手書きパーサーが要件を満たす唯一の方法かもしれません。 –