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

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

 2009-03-31 08:21:50 来源:WEB开发网   
核心提示: 代码中包含详细的注释,这里做简要说明,仿查询分析器的C#计算器——5.计算求值(3),未选中输入框中的文本则执行全部代码,否则执行选中部分的代码,但是这里只能选中第一次发生的错误,不能像VS.NET的IDE一样捕获所有错误,将要执行的代码根据是否计算多行进行分解,存放在一个字符串数组中

代码中包含详细的注释,这里做简要说明。未选中输入框中的文本则执行全部代码,否则执行选中部分的代码。将要执行的代码根据是否计算多行进行分解,存放在一个字符串数组中。然后对表达式数组循环计算。如此实现了选择部分表达式计算以及多行表达式计算。另外如何实现错误定位,则是通过捕获错误。程序中定义了一个Exception类,但进行词法分析和语法分析的时候,如果发生错误,则会抛出该异常。通过该异常类中的错误序号以及长度,就可以选中输入框中的错误部分。但是这里只能选中第一次发生的错误,不能像VS.NET的IDE一样捕获所有错误。Exception类的定义如下:

    /// <summary>
    /// 语法错误类,用于发生错误时提示用户并选中错误的操作符
    /// </summary>
    /// <remarks>Author:Alex Leo; Date:2008-5-21;</remarks>
    public class SyntaxException : Exception
    {
        private int m_Index;
        /// <summary>
        /// 错误列号
        /// </summary>
        /// <remarks>Author:Alex Leo; Date:2008-5-21;</remarks>
        public int Index
        {
            get { return m_Index; }
        }

        private int m_Length;
        /// <summary>
        /// 错误操作符长度
        /// </summary>
        /// <remarks>Author:Alex Leo; Date:2008-5-21;</remarks>
        public int Length
        {
            get { return m_Length; }
        }

        private string m_Message;
        /// <summary>
        /// 错误信息
        /// </summary>
        public override string Message
        {
            get { return m_Message; }
        }

        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="Index">错误处的列号(用于错误时确定错误操作符起始位置)</param>
        /// <param name="Length">错误操作符长度(用于错误时选择错误操作符的长度)</param>
        /// <param name="ErrorInformation">错误信息</param>
        public SyntaxException(int Index, int Length, string ErrorInformation)
        {
            this.m_Index = Index;
            this.m_Length = Length;
            this.m_Message = ErrorInformation;
        }
    }

上一页  1 2 3 4  下一页

Tags:查询 分析器 计算器

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