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

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

 2009-05-29 08:31:32 来源:WEB开发网   
核心提示: 因为程序比较简单,只有 2 种单元指令:NumToken 和 OpToken,用 C# 设计与实现一个四则算术运算解释器(3),我定义了一个基本类,叫做 Token,对小数点的处理,若是缓冲区里面已经存在了一个小数点,然后 NumToken 和 OpToken 继承了该基本类,Class

因为程序比较简单,只有 2 种单元指令:NumToken 和 OpToken。

我定义了一个基本类,叫做 Token,然后 NumToken 和 OpToken 继承了该基本类。

Class Token:什么也没有,暂时是空壳子。

internal abstract class Token
{
}

Class NumToken: 表述一个数。

internal sealed class NumToken : Token
{
  public double Value { get; }
}

Class OpToken: 表述一个运算符。

internal sealed class OpToken : Token
{
  public Op Value { get; }
  public Prioirty Prioirty { get; }
}
 

Op 和 Priority 是 2 个 enum:

internal enum Op : int
{
  Plus = '+',
  Minus = '-',
  Multiply = '*',
  Divide = '/'
}
internal enum Prioirty
{
  Lv2 = 2,
  Lv1 = 1,
  Lv0 = 0
}

截取的算法相对来说很简单,是由 Tokenizer 类来实现的。这个类是 internal sealed,因为外界不需要知道它的存在。Tokenizer 会被 Intepreter 类所使用。

internal sealed class Tokenizer
{
  public Token[] Parse(string value);
}

在 Parse 函数里面,扫描输入字符串,从第一个字符开始,一直到最后一个字符。空白字符会被忽略掉。

我们定义了个缓冲 buffer,用来存储已经扫描到的数字。若是遇到了一个非数字,就把缓冲区所有的存储的字节转变成 double 类型,然后保存下来。值得注意的是,对小数点的处理。若是缓冲区里面已经存在了一个小数点,遇到一个新的小数点就应该抛出错误。

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

Tags:设计 实现 一个

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