构建一个简单的解释器

ANa*_*imi 9 c# architecture compiler-construction programming-languages

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

解释器应该支持基本的编程语言功能:

  • 实数,变量,多维数组
  • 二进制(+, - ,*,/,%)和布尔(==,!=,<,>,<=,> =)操作
  • 循环(for,while),条件表达式(if)
  • 功能

MathWorks MatLab是我前进的一个很好的例子,更简单.解释器将用作演示算法的环境; 简单的算法,如查找数据集/数组的平均值,或稍微复杂的算法,如高斯消元法RSA.

我在这个主题上找到的最佳/最实用的资源是Ron Ayoub在Code Project上的条目(使用解释器模式解析代数表达式) - 这是我问题的缩小版本的完美示例.

紫龙书似乎太多了,什么更实用?

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

有实用资源吗?

(请避免"这不是微不足道的"或"为什么重新发明轮子"的回应)

Mar*_*wis 10

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