5

一部のアプリケーションでロードできるC#用の小さなインタープリターを作成することを検討しています。このようなことを実行できる可能性があるもの:

 > var arr = new[] { 1.5,2.0 };
                                 arr = { 1.5, 2.0 }
 > var sum = arr.Sum();
                                 sum = 3.5

したがって、これは、すべての変数とそのタイプのディクショナリを作成し、各行をコンパイルしてから関数を実行し、結果を取得して変数のディクショナリに貼り付けることで実現できると考えていました。

ただし、これは実際には構築が非常に難しく、おそらく非常に非効率的であるように思われます。

次に、Powershellが必要なことを実行していると思いました。しかし、それはどのように行われますか?Powershellがどのように機能するか、または.Netインタープリターを構築するための良い方法について誰かに教えてもらえますか?

4

3 に答える 3

5

アプリケーションでPowerShellエンジンをホストし、それによって解釈を行わせるのはどうですか?例えば:

private static void Main(string[] args)
{
  // Call the PowerShell.Create() method to create an 
  // empty pipeline.
  PowerShell ps = PowerShell.Create();

  // Call the PowerShell.AddScript(string) method to add 
  // some PowerShell script to execute.
  ps.AddScript("$arr = 1.5,2.0"); # Execute each line read from prompt

  // Call the PowerShell.Invoke() method to run the 
  // commands of the pipeline.
  foreach (PSObject result in ps.Invoke())
  {
    Console.WriteLine(result.ToString());
  } 
} 

インタプリタの作成方法を学ぶことが目標である場合は、インタプリタパターンを確認してください。

于 2012-09-10T13:24:34.030 に答える
3

このような何か?または、おそらくRoslyn(http://msdn.microsoft.com/en-gb/roslyn)

私が最初に思ったよりも便利だと思われるので、回答としてコメントを追加しました

于 2012-09-11T08:15:42.400 に答える
3

Roslynhttp ://msdn.microsoft.com/en-US/roslynまたはMonoCompilerhttp ://www.mono-project.com/CSharp_Compilerのいずれかを見てください。両方ともあなたが探していることをすることができるはずです

于 2012-09-10T13:24:46.067 に答える