当前位置:  开发笔记 > 编程语言 > 正文

可以在运行时解析和评估.NET

如何解决《可以在运行时解析和评估.NET》经验,为你挑选了1个好方法。

我认为如果我能在运行时编写vb.net或c#代码会很有趣,而解释器会像python一样自动解析它,所以我做了一个小程序,它会做类似的事情.基本上它看起来像这样:

InputArgs = Console.ReadLine()
ParseInput(InputArgs.Split(" "))

Private Sub ParseInput(Args as List(Of String), Optional TempArgs as List(Of String))
Dim arg as string = Args(0)
If arg = ".." then
 ...
elseif arg = ".." then
 ...
end if
End Sub

我知道这不是一个好的系统,但它显示了基础知识.所以我的问题是:是否有可能使vb.net或c#像python一样 - 在运行时解释?



1> sehe..:

这已经存在于相当多的形状和形式:

Mono.CSharp

Mono有Mono.CSharp程序集,你可以参考做任何CSharp.exe(AC#'解释器'或交互式shell,如果你愿意)可以做:

void ReadEvalPrintLoopWith (ReadLiner readline)
{
    string expr = null;
    while (!InteractiveBase.QuitRequested){
            string input = readline (expr == null);
            if (input == null)
                return;

            if (input == "")
                continue;

            expr = expr == null ? input : expr + "\n" + input;

            expr = Evaluate (expr);
    } 
}

毋庸置疑,这也适用于MS.Net(当然,这是关于便携式.Net的观点).

github上有完整的消息来源- 就像其他的Mono一样.

DLR

已经实施了几种DLR语言,包括但不限于

IronRuby的

IronPython的

Jint(http://jint.codeplex.com/) - 在.Net 2.0上运行javascript

它允许您在.NET框架中动态评估python/ruby​​代码.

罗斯林

Microsoft已将Roslyn发布为CTP(预览版).它基本上可以做与Mono REPL(第一项)相同的东西,以及(更多).但它仍然是预览.

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有