2012-03-04 4 views
7

Delphiで教育目的のための簡単なコンパイラを作成したいと思います。私はCoco/Rについて読んで、この実装がDelphiのために見つかりました:http://code.google.com/p/dcocor/。私が読んだことから、これはDelphi 2009の構文のパーサーです。Coco/Rは解析されたファイルをバイトコードに変換できますか?

解析されたファイルをバイトコードに変換するにはどうすればよいですか? Coco/Rはこれを行うことができますか?

私は、FastScriptやDWSのようなスクリプト言語について知っていますが、私自身の目的のために自分自身で作成してみたいと思います。

少しアドバイスをしたり、少し物事を明確にしてください。

+2

Coco/Rマニュアルを読んでいますか?私はそこから始めると言います。 http://ssw.jku.at/Coco/Doc/UserManual.pdf –

答えて

7

解析されたファイルをバイトコードに変換するにはどうすればよいですか?

まず、どのような種類のバイトコードを使用するかを決めます。JVM? LLVM? MSIL?自分の発明ですか?

Can Coco/Rはこれを行うことができますか?

Coco/Rはパーザジェネレータフレームワークで、定義してジェネレータに供給する言語用のレクサーパーサーのみを生成します。その後の手順はあなたの責任です。 ast/target codeの生成に役立つプロジェクトがあるかもしれません(しかし、Coco/Rのためのものは見つかりませんでした)。

+1

スクリプトを実行可能なコードに変換したいのですが、x86 EXEは完璧です。私はDelphi(http://code.google.com/p/llvm-pascal/)用のLLVMパーサーを見つけましたが、バイトコードを生成していないようです。何か不足していますか? – Pateman

+0

この回答は、独自のコードジェネレータを記述する必要があることを示しています。 –

+0

@Pateman:そのプロジェクトは、実行可能ファイル/バイトコードに対する任意のスクリプトではなく、LLVMバックエンドを持つPascalコンパイラです。しかし、そのようなものは存在しません。あなたがそれを使いたいなら、Coco/Rのドキュメントを読んで、パーザが生成するものを、そしてあなたのターゲットアーチを決めた後、パーサーがあなたのターゲットアーチの母国語(つまり、x86 asm、llvm irなど)に生成するものをマップしてください。 – LeleDumbo

関連する問題