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

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

 2009-05-28 08:28:55 来源:WEB开发网   
核心提示:1、添加一元操作符 + 和 -,这两个操作符具有最高的优先权2、添加二元操作符 ^ 和 %,用 C# 设计与实现一个算术运算解释器 2,前者(幂运算)具有比乘法和除法较高的优先权,后者与乘法和除法拥有相等的优先权,和一个一元运算符,负号 –,3、支持了括号,程序主界面运行的效果没有太多变化:计算 3 + -

1、添加一元操作符 + 和 -,这两个操作符具有最高的优先权

2、添加二元操作符 ^ 和 %。前者(幂运算)具有比乘法和除法较高的优先权,后者与乘法和除法拥有相等的优先权。

3、支持了括号。

程序主界面运行的效果没有太多变化:

计算 3 + -4 = –1:

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

计算 -1 + -2 * (3 + -4) = 1

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

也能够识别语法错误:

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

也能够识别缺少或者多余了括号:

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

好了,现在介绍作出改进的地方。

一、运算符的元数和优先权

在第一个版本中,没有考虑到运算符的元数。或者,简单的说,认为所有的运算符是二元运算符。在第二版中,我考虑到了要添加一元操作符,比如如下的表达式:

1 + –2

里面包含了一个二元运算符,加法运算符 +,和一个一元运算符,负号 –。

所以,添加了一个新的枚举:

internal enum OpArity : ushort
{
  Nullary = 0,
  Unary  = 1,
  Binary = 2,
  Ternary = 3
}

1 2 3 4 5 6  下一页

Tags:设计 实现 一个

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