質問

私はXNAでゲームを作成していますし、私自身のスクリプト言語(非常に簡単なあなたの心を)作成を考えていました。私はこれについて移動するためのより良い方法だ(と私は車輪の再発明だことを)知っているが、私はより生産的かつ速いことよりも、学習体験をしたい。

私が理解から、実行時にコードに直面したとき、

、通常のアプローチは、右、マシンコードや、実際に実行可能であるバイトコードまたは何か他のものに解析し、それを実行するのですか? Chromeは最初に出てきたときには、例えば、彼らはそれがマシンコードにJavaScriptをコンパイルするために彼らのJavaScriptエンジンが速かったと述べました。これは、他のエンジンは、マシンコードにコンパイルされませんでした暗示ます。

私は下の言語にコンパイルしないことを好むだろう、非常に低いレベルにコンパイルせずに、コードを解析し、実行するための任意の既知の近代的な技術が存在しますか?おそらく、木のいくつかの並べ替えにコードを解析ツリーを分岐し、それぞれのシンボルを比較し、そのシンボルを扱ういくつかの関数を呼び出すような何か? (野生が推測し、暗所で刺す)

役に立ちましたか?

解決

私は個人的にあなた自身のパーサー(トークンへの入力を回す)またはレクサー(あなたの言語の文法の入力トークンをチェックする)ロールではないでしょう。あなたがしたい場合は、それは偉大なフレームワークだと完全なソースコードを持っている - パース/字句のための ANTLR のを見てみましょうその根性を掘り下げます。

あなたが解析されたコードを実行するために、私はシンプルな仮想マシンを実行しているを見てみたいか、さらに良い LLVM <見て/>仮想マシンのバイトコードのフォーマットを標準化し、(アセンブリにスクリプトコンパイルしたバイトコードを回す)JITingのような素晴らしい機能を提供するために、オープンソース(っぽい)の試みがあります。

私はこれが本当の高速で、非常に専門的な領域であり、実際の複合体を取得するような心の中でネイティブのマシンコードの実行が、熊のように、あなたのマシンより高度なオプションからあなたを落胆されません!

Earlzは私の返事はこれを自分でやって気にしない」を意味するように見えるかもしれないと指摘しました。再読み込み私のポストをそれは少しをそのように聞こえるん。私はANTLRとLLVMを言及した理由は、私はこれは良いリファレンスソースと感じるので、どちらもソースコードとチュートリアルのヒープを持っています。ベースとしてそれを取ると遊ぶ

他のヒント

Pythonはスクリプト言語として最適です。私はあなたがそのC APIのバインディングのC#を作成し、それを使用することをお勧めします。 Pythonの組み込みが容易になります。アプリケーションはPythonインタプリタがアクセスできるモジュール内部関数、型/クラスや変数を定義することができます。また、アプリケーションは、Pythonスクリプトで関数を呼び出して、バックの結果を得ることができます。組み合わせたこれらの2つの機能はあなたの双方向通信方式を与えます。

基本的に、あなたは自由のためのPythonの構文とセマンティクスを取得します。何を実装する必要があるだろうと、アプリケーションは、Pythonに公開するAPIです。例では、ゲームロジック機能にアクセスすることと機能をレンダリングすることができます。 Pythonスクリプトは、これらを呼び出し、ホストアプリケーションは、仕事を成し遂げるために(パラメータで)Python関数を呼び出すことになる関数を定義します。

EDIT:IronPythonのはあなたにも、より多くの作業を保存することができますように思えます。それはCPythonののC#実装だし、独自の埋め込みAPIがあります。 http://www.ironpython.net/

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top