在vb.net中创建自己的解释器

在vb.net中创建自己的解释器,vb.net,interpreter,Vb.net,Interpreter,我有一个Vb.net程序,这是一个金融应用程序。这是一个图表程序,意味着它加载股票市场数据并显示图表。我需要创建一个小型解释器,以便用户可以编写代码并执行 例如,如果用户希望应用移动平均等技术工具,则可以键入Dim M作为整数。M=MovingAvg(“简单”,10) 诸如此类的东西,它应该支持诸如变量decl、数组、for next、do loop、加法、减法、乘法和除法之类的计算语句。以及特定于我的软件的其他语句。因为我不是在构建一个独立的windows应用程序,所以没有必要降低级别或考虑e

我有一个Vb.net程序,这是一个金融应用程序。这是一个图表程序,意味着它加载股票市场数据并显示图表。我需要创建一个小型解释器,以便用户可以编写代码并执行

例如,如果用户希望应用移动平均等技术工具,则可以键入Dim M作为整数。M=MovingAvg(“简单”,10)

诸如此类的东西,它应该支持诸如变量decl、数组、for next、do loop、加法、减法、乘法和除法之类的计算语句。以及特定于我的软件的其他语句。因为我不是在构建一个独立的windows应用程序,所以没有必要降低级别或考虑exe术语

在开始之前,我想听听你们的建议。我该怎么做?我应该记住哪些重要的事情

我确实考虑了像Lua这样的语言,我可以嵌入,但是任务太多,而Lua的编程风格对于非程序员来说是很复杂的。这就是为什么我要坚持基本的语言风格

任何意见或建议或pdf(电子书)参考将不胜感激

谢谢


Greatchap

这是金融领域的常见要求。您必须使用“表达式求值”库

其中一些是:


它很容易嵌入。如果你真的想坚持使用类似vb的语言,那么你可以使用vb.NET本身编写脚本——Mono提供了一个托管的vb.NET编译器实现。

谢谢你的帮助。我应该从头开始为解释器编写代码还是使用现有的工具。虽然我想使用一种易于理解的语言类型/代码,但我想知道像microsoft script control之类的东西是否有用。但是脚本控件只支持XP,所以我认为使用它并不明智。任何类似的或任何有助于语法突出显示/智能感知的工具。语言语法应为基本类型,我必须为一些函数添加自己的语法。这称为“域特定语言”,例如,关于IDE,最好根据场景(例如,风险建模)使其工作。这可能比构建一个通用IDE(或为现有IDE编写插件)的工作量要少@Shamit:Well Easy Language,如上所述,是一个软件(TradeStation)的所有者,我不能使用。我想我可能需要从头开始写一个IDE。这可能是我感兴趣的:还有@Shamit,谢谢你提供的信息。我想我可以从零开始发展自己。顺便问一下,我应该如何处理语法突出显示和智能感知。我看过两个商业产品,但它们很难定制。我想我会从头开始写我的语言。我想知道的是如何处理语法突出显示和智能感知。我确实遇到过2种流行的商业产品,但是定制它们是困难的,而且其中的一个太贵了。然后你可以看看VisualStudio:@ GrimChAP的例子,而且,我建议考虑实施编译器而不是解释器-令人惊讶的是,在.NET中更容易。@SK logic:我在构建windows应用程序时不需要编译器。这种语言是特定于领域的。再加上我在网络上做的一些研究,我发现在大多数情况下构建编译器比构建解释器要困难得多。@Greatchap,“windows应用程序”的编译器有什么问题吗?事实上,在.NET上构建一个小型的[e]DSL编译器比构建一个解释器更容易——因为您可以依赖较低级别的语言编译器(C#本身,或IronPython,或F#,或其他任何东西)来生成代码。请参阅本教程:-您可以轻松地在C#或VB.NET中使用相同的代码生成技术。