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-US/roslyn或 Mono Compiler http://www.mono-project.com/CSharp_Compiler。两者都应该能够做你正在寻找的东西

于 2012-09-10T13:24:46.067 回答
3

这样的东西?或者也许是罗斯林(http://msdn.microsoft.com/en-gb/roslyn)

添加评论作为答案,因为它似乎比我最初想象的更有用

于 2012-09-11T08:15:42.400 回答