用 C# 设计与实现一个算术运算解释器 2
2009-05-28 08:28:55 来源:WEB开发网核心提示:1、添加一元操作符 + 和 -,这两个操作符具有最高的优先权2、添加二元操作符 ^ 和 %,用 C# 设计与实现一个算术运算解释器 2,前者(幂运算)具有比乘法和除法较高的优先权,后者与乘法和除法拥有相等的优先权,和一个一元运算符,负号 –,3、支持了括号,程序主界面运行的效果没有太多变化:计算 3 + -
1、添加一元操作符 + 和 -,这两个操作符具有最高的优先权
2、添加二元操作符 ^ 和 %。前者(幂运算)具有比乘法和除法较高的优先权,后者与乘法和除法拥有相等的优先权。
3、支持了括号。
程序主界面运行的效果没有太多变化:
计算 3 + -4 = –1:
计算 -1 + -2 * (3 + -4) = 1
也能够识别语法错误:
也能够识别缺少或者多余了括号:
好了,现在介绍作出改进的地方。
一、运算符的元数和优先权
在第一个版本中,没有考虑到运算符的元数。或者,简单的说,认为所有的运算符是二元运算符。在第二版中,我考虑到了要添加一元操作符,比如如下的表达式:
1 + –2
里面包含了一个二元运算符,加法运算符 +,和一个一元运算符,负号 –。
所以,添加了一个新的枚举:
internal enum OpArity : ushort
{
Nullary = 0,
Unary = 1,
Binary = 2,
Ternary = 3
}
更多精彩
赞助商链接