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

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

 2009-05-29 08:31:32 来源:WEB开发网   
核心提示: 每当扫描到一个操作符,比如 +, –, *, /,用 C# 设计与实现一个四则算术运算解释器(4),就把他们当作一个操作符存储起来,这里要注意的是,运算顺序是由左至右的话,那么新的操作符会成为新的树的根,数字的正负号其实是一个一元操作符,是何数字分开保存的

每当扫描到一个操作符,比如 +, –, *, /,就把他们当作一个操作符存储起来。这里要注意的是,数字的正负号其实是一个一元操作符,是何数字分开保存的。

遇到其他没有定义的字符,就直接抛出错误。

三、创建 Abstract Syntax Tree

这里需要考虑到2个不同的正常情况:

1、不同级别的操作符:+和-的优先等级比较低,×和/的优先等级比较高

2、同级别的操作符,操作的顺序。比如,+和-的优先顺序是从左往右。

从最简单的情况开始考虑:分析 1 + 2 + 3 + 4

首先,AST 树是空的, Root = NULL。

当把 NumToken 1 插入树的时候,简单的设置该 Token 为根即可。

当把 OpToken + 插入树的时候,我们就需要挪动树,把 + 设置成根:

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

当把 NumToken 2 插入树的时候,我们就把数字 2 插入树的右侧:

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

当把 OpToken + 插入树的时候(同级别的操作符,顺序是左到右),我们就需要把最新的 OpToken 设置成根,当前树设置成新根的左侧:

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

到这里为止,我们可以得出一个很重要的法则:插入一个新的操作符进入 AST 树的时候,若是树的根是一个操作符,并且和此新操作符同级,运算顺序是由左至右的话,那么新的操作符会成为新的树的根,现有的树会成为新树的左子树。

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

Tags:设计 实现 一个

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