c# - 构造一个简单的解释器

标签 c# architecture compiler-construction programming-languages

我正在开始一个项目,我需要在其中实现一个轻量级解释器。 解释器用于执行简单的科学算法。 该解释器将使用的编程语言应该很简单,因为它针对的是非软件开发人员(例如,数学家)。

解释器应该支持基本的编程语言特性:

  • 实数、变量、多维数组
  • 二进制(+、-、*、/、%)和 bool (==、!=、<、>、<=、>=)运算
  • 循环(for、while)、条件表达式(if)
  • 职能

MathWorks MatLab是我要去的地方的一个很好的例子,只是简单得多。 解释器将用作演示算法的环境;简单的算法,例如查找数据集/数组的平均值,或稍微复杂的算法,例如 Gaussian eliminationRSA .

我找到的关于该主题的最佳/最实用资源是 Ron Ayoub 在代码项目 (Parsing Algebraic Expressions Using the Interpreter Pattern) 上的条目 - 我的问题的缩小版本的完美示例。

紫龙书好像太多了,有什么更实用的吗?

解释器将使用 C# 作为 .NET 库实现。但是,欢迎使用任何平台的资源,因为这个问题的设计架构部分最具挑战性。

有什么实用的资源吗?

(请避免“这不是微不足道的”或“为什么要重新发明轮子”的回答)

最佳答案

我会写在ANTLR .编写语法,让 ANTLR 生成一个 C# 解析器。你可以 ANTLR 请求解析树,并且解释器可能已经可以在解析树上进行操作。也许您必须将解析树转换为一些更抽象的内部表示(尽管 ANTLR 已经允许在生成树时省略不相关的标点符号)。

关于c# - 构造一个简单的解释器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/256629/

相关文章:

architecture - 面向方面编程中的对称和非对称

c# - 插件架构模式

c# - 使用 ManagementObjectSearcher 查询 Win32_PnPEntity 返回空

带有 POST 编码问题的 C# Web 请求

javascript - 用 JavaScript 表示地牢然后用怪物填充它的最佳方法是什么?

c# - 为我的应用程序重新分发和使用 CS.exe 编译器 (C#)

open-source - F# 会开源吗?

c# - 对文本框对象列表进行排序

javascript - 将项目添加到另一个部分 View 中的下拉列表中,而不刷新 View

c# - 为什么 C# 编译器会第二次启动?