【问题标题】:Create your own interpreter in vb.net在 vb.net 中创建自己的解释器
【发布时间】:2011-03-16 06:00:11
【问题描述】:

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

例如如果用户想要应用诸如移动平均线之类的技术工具,那么他可以键入 Dim M as Integer。 M= MovingAvg("简单",10)

类似的东西,它应该支持变量 decl、数组、for next、do 循环、加法、减法、乘法和除法等计算。加上其他特定于我的软件的陈述。由于我不是在构建独立的 Windows 应用程序,因此无需降低级别或考虑 exe 术语。

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

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

任何可供参考的 cmets 或建议或 pdf(电子书)将不胜感激。

谢谢,

大佬

【问题讨论】:

    标签: vb.net interpreter


    【解决方案1】:

    这是金融领域的常见要求。您将不得不使用“表达式评估”库。

    其中一些是:

    http://flee.codeplex.com/

    http://www.codeproject.com/KB/recipes/eval3.aspx

    【讨论】:

    • 感谢您的帮助。我应该从头开始为解释器编写代码还是使用现有工具。虽然我想使用一种易于理解/编码的语言类型,但我想知道微软脚本控制之类的东西是否有用。但是脚本控制只支持到 XP,所以我认为使用它并不明智。任何类似的或任何有助于语法突出显示/智能感知的工具。语言语法应该是基本类型,我将不得不为几个函数添加我自己的语法。
    • 这称为“域特定语言”,例如lambda-the-ultimate.org/node/2201 关于 IDE,最好让它根据场景工作(例如风险建模)。与构建通用 IDE(或为现有 IDE 编写插件)相比,这可能会少一些工作
    • @Shamit:上面帖子中提到的 Well Easy Language 是软件(TradeStation)的专有产品,我不能使用。我想我可能不得不从头开始编写一个 IDE。
    • @Shamit,感谢您提供的信息。我想我可能会从头开始开发自己的。顺便说一句,我应该如何处理语法高亮和智能感知。确实看到了两种商业产品,但它们很难定制。
    【解决方案2】:

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

    【讨论】:

    • 我想我会从头开始编写我的语言。我想知道的是如何处理语法高亮和智能感知。我确实遇到了 2 种流行的商业产品,但定制它们很困难,而且其中一种太贵了。
    • 那你可以看一下visual studio的例子:msdn.microsoft.com/en-us/library/bb166570%28v=vs.80%29.aspx
    • @Greatchap,另外,我建议考虑实现编译器而不是解释器 - 令人惊讶的是,在 .NET 中它更容易。
    • @SK-logic:我不需要编译器,因为我正在构建 Windows 应用程序。这种语言将是特定领域的。再加上我在网络上进行的任何小研究,我发现在大多数情况下,构建编译器比构建解释器要困难得多。
    • @Greatchap,“Windows 应用程序”的编译器有什么问题(不管它是什么意思)?实际上,在 .NET 之上构建小型 [e]DSL 编译器比构建解释器更容易——因为您可以依赖较低级别的语言编译器(C# 本身、IronPython、F# 或其他任何东西)来生成代码.请参阅本教程:meta-alternative.net/calc.pdf - 您可以轻松地在 C# 或 VB.NET 中使用相同的代码生成技术。
    猜你喜欢
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    • 2016-05-17
    • 2016-03-28
    • 2011-08-24
    • 2020-11-06
    相关资源
    最近更新 更多