WEB开发网
开发学院软件开发C语言 用 C# 设计与实现一个四则算术运算解释器 阅读

用 C# 设计与实现一个四则算术运算解释器

 2009-05-29 08:31:32 来源:WEB开发网   
核心提示: 一、输入和输出输入是一个用字符串表达的四则运算,比如 1 + 2 * 3 ,用 C# 设计与实现一个四则算术运算解释器(2),目的是试图去理解这个字符串表达的运算指令,然后计算出结果 7,也就是 * ,然后是第二级的 + 和 / ,之所以是一个解释器 Interpreter,而不是一个编译

一、输入和输出

输入是一个用字符串表达的四则运算,比如 1 + 2 * 3 。目的是试图去理解这个字符串表达的运算指令,然后计算出结果 7。之所以是一个解释器 Interpreter,而不是一个编译器 Compiler,是因为程序是去理解指令并且执行指令,而不是把指令编译成机器代码来运行;后者是编译器的目标。

在解释的过程中,要能够分辨出不合法的指令:比如非法的字符 abc,非法的数字 2.3.1.4,非法的运算指令 2 * + 3,还有等等。

整个程序可以分为两个部分:

第一个部分,是截取输入字符串,然后返回单元指令。比如,对于指令 1 + 2 * 3 – 4 / 5,就需要被分解成如下所示的单元指令集:

用 C# 设计与实现一个四则算术运算解释器

第二个部分,是把单元指令集(上图橙色包含部分)组成一个树结构,称之为 Abstract Syntax Tree。按照将来需要解释的顺序,优先执行的指令会放在树的叶的位置,最后执行的指令会是树的根 Root。

用 C# 设计与实现一个四则算术运算解释器

图片看不清楚?请点击这里查看原图(大图)。

在上图所示的 Abstract Syntax Tree 中,最先执行的指令是位于树上最深的子树,也就是 * ,然后是第二级的 + 和 / ,最后执行的位于根的指令 – 。

二、截取单元指令 (Tokenize)

上一页  1 2 3 4 5 6  下一页

Tags:设计 实现 一个

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接