.NETアプリ用のインタラクティブシェルを作成し、それにpython / iron pythonなどのスクリプト言語を埋め込みます

StackOverflow https://stackoverflow.com/questions/808692

質問

標準のPythonインストールに付属するチュートリアルを使用して、Pythonを学習していました。著者がpythonについて述べている利点の1つは、「拡張言語を使用できるプログラムを書いたことがあるかもしれませんが、アプリケーション用にまったく新しい言語を設計および実装したくない」ということです。 -私の質問は、Pythonをインタラクティブに使用して拡張できるプログラム(c#を使用)をどのように設計するかです(これが可能になるためには、何らかの「シェル」または「」を作成する必要があると想像します.netプログラムの対話型モード)?

対話型シェルを備えた.NETプログラムの設計方法に関する指針はありますか。次に、シェルでpythonスクリプトを使用して「拡張」します。またはプログラムと対話します。

編集:この質問の一部は、PDC 2008でMiguel de Icazaがインタラクティブなcsharpコマンドプロンプトを示したデモに由来します。C#4.0では、この「コンパイラをサービスとして」と考えています。特徴。私はそれを見て、対話型シェルを備えた.NETでウィンドウまたはWebプログラムを設計するのがどれほどクールかと考えました。また、Pythonのようなスクリプト言語を使用して、プログラムが提供する機能を拡張できます。

また、私はこの種の機能について考え始めました。SteveYeggeのエッセイの1つを読んだ後、彼は永遠に生きるシステムについて語っています。

役に立ちましたか?

解決

これは、 IronPython をうまく利用しているように思えます。

>

C#から簡単なスクリプトホストをセットアップして、IronPythonスクリプトの呼び出しを許可するだけでなく、IronPythonがC#コードを呼び出すこともできます。 CodePlexサイトには、これを行う方法を示すサンプルと例があります。

例とサンプルに適した別のサイトは、 ironpython.info

です。

そしてここにページがあります、まさにあなたの質問に答える例に専念し、一般的なDLR中心の方法ではありますが、これによりIronPython、IronRuby、またはサポートしたいDLR言語をホストできます。

過去にこれらの例を使用して、 ScrewTurn Wiki のプライベートインストール内にIronPython環境を作成しました。 -非常に表現力豊かなWikiテンプレートを作成でき、一般的に非常に有用であることが証明されました。

他のヒント

同じ問題の解決策を探していたところ、IronTextBoxが見つかりました。 http:// www.codeproject.com/KB/edit/irontextbox2.aspx

現在のバージョンでは少し調整する必要がありますが、必要なものはすべて揃っているようです。最初にコンパイルし、次にシェルからスコープにアクセスしたい変数を追加しました。

拡張言語としてのPythonは、「Embedding Python」と呼ばれます。

基本的にpythonインタープリターを呼び出してpythonソースを実行させることにより、c ++からpythonモジュールを呼び出すことができます。これは、埋め込みと呼ばれます。

CおよびC ++で動作し、おそらくC#でも動作します。

いいえ、「シェル」は必要ありません。 Pythonはインタラクティブにすることができますが、それは要件ではありません。

IronRubyを追加してC#アプリケーションをスクリプト化することに関するブログ投稿へのリンクです。

http:// blog .jimmy.schementi.com / 2008/11 / adding-scripting-to-c-silverlight-app.html

原則は、IronPythonを使用する場合にもうまく機能します。

新しい言語の学習を避けたい場合は、 CSScript.Net と埋め込みスクリプトを使用できます。アプリケーションへのC#またはVB。 CSScriptを使用すると、CLRに完全にアクセスできます。スクリプト実行の3つの異なるモデルがサポートされているため、現在のアプリドメイン内のオブジェクトを参照するスクリプトを実行したり、リモート処理を使用して実行したり、シェルとして実行したりできます。

現在、「接着剤」としてCCScriptを使用しています。 Booを使用するのと似たアプリケーションオブジェクトを構成するためのコード。

このリンクは、良い概要。

あなたが何を意味するのかわかりません

  

" extend"またはプログラムと対話する

だからあなたの質問には答えられません。例を挙げていただけますか?

monoには、オープンソースのインタラクティブなC#シェルがあります。 http://www.mono-project。 com / CsharpRepl

Python、.Net、言語拡張が好きな人は、おそらく鉄のpythonよりも Boo を好むでしょう。 Booには、オープンソースのインタラクティブシェルも付属しています。

同意しない

  

"あなたはデザインしたくないし、   まったく新しい言語を実装する   アプリケーション"

単純なDSLを作成するのは以前ほど難しくありません。実装するのに数日もかからず、ほんの数時間です。興味深いオプションかもしれません。

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