WEB开发网
开发学院软件开发C语言 仿查询分析器的C#计算器——5.计算求值 阅读

仿查询分析器的C#计算器——5.计算求值

 2009-03-31 08:21:50 来源:WEB开发网   
核心提示: 前面几篇文章介绍了各种分析过程,本篇作为完结篇,仿查询分析器的C#计算器——5.计算求值,介绍如何调用之前实现的代码,如何实现多行表达式或者选择部分表达式进行运算, /// <summary> /// 表达式分析计算类,功能入口 /// </summary> /// <remar

前面几篇文章介绍了各种分析过程,本篇作为完结篇,介绍如何调用之前实现的代码,如何实现多行表达式或者选择部分表达式进行运算,以及如何定位错误。

本程序可以不需要UI界面,独立成一个模块。如果表达式分析与计算功能打包成一个dll,那入口只有一个,SyntaxAnalyse类。new一个SyntaxAnalyse类之后,调用其中的Analyse方法,将要计算的运算表达式作为参数传递进去,返回一个顶级TokenRecord对象,再根据返回的TokenRecord对象的值类型取得结果,整个计算过程就完成了,使用起来非常方便。

    /// <summary>
    /// 表达式分析计算类,功能入口
    /// </summary>
    /// <remarks>Author:Alex Leo</remarks>
    public class SyntaxAnalyse
    {
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <remarks>Author:Alex Leo; Date:2007-8-2</remarks>
        public SyntaxAnalyse()
        { }

        /// <summary>
        /// 分析语句并返回记号记录对象
        /// </summary>
        /// <param name="Code">运算表达式</param>
        /// <returns>顶级TokenRecord对象</returns>
        public TokenRecord Analyse(string Code)
        {
            if (Code.Trim().Equals(string.Empty))
            {
                return new TokenValue(0,1);
            }

            List<TokenRecord> ListToken = new List<TokenRecord>();//TokenRecord列表

            int intIndex = 0;
            TokenFactory.LexicalAnalysis(ListToken, Code, ref intIndex);//词法分析,将代码转换为TokenRecord列表

            //语法树分析,将Token列表按优先级转换为树
            TokenRecord TokenTop = SyntaxTreeAnalyse.SyntaxTreeGetTopTokenAnalyse(ListToken, 0, ListToken.Count - 1);
            TokenTop.Execute();
            return TokenTop;
        }
   }

1 2 3 4  下一页

Tags:查询 分析器 计算器

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