`
testcs_dn
  • 浏览: 114558 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

C#数学运算表达式解释器

 
阅读更多

C#数学运算表达式解释器


测试文件内容:

a=2+3*2;
b=2*(2+3);
浏览按钮事件处理程序:

        private void button_browse_Click(object sender, EventArgs e)
        {
            OpenFileDialog fbd = new OpenFileDialog();
            fbd.Title = "请选择一个文件:";
            fbd.CheckFileExists = true;
            fbd.CheckPathExists = true;
            fbd.Filter = "*.txt(文本文件)|*.txt|*.*(所有文件)|*.*";
            fbd.FileName = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer);
            if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                textBox_saveDir.Text = fbd.FileName;
                try
                {
                    FileStream fs = new FileStream(fbd.FileName, FileMode.Open, FileAccess.Read);
                    StreamReader sr = new StreamReader(fs);
                    while (!sr.EndOfStream)
                    {
                        string line = sr.ReadLine();
                        analyse(line);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("错误:" + ex.Message + "\r\n堆栈:" + ex.StackTrace);
                }
            }
        }
分析一行表达式:

        private void analyse(string line)
        {
            //以分号作为结束符,支持一行内写多个语句
            string[] expA = line.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
            for (int i = 0; i < expA.Length; i++)
            {
                analyseExpA(expA[i]);
            }
        }
计算一条表达式:
        private void analyseExpA(string expA)
        {
            string[] expB = expA.Split(new string[] { "=" }, StringSplitOptions.RemoveEmptyEntries);
            for (int i = 0; i < expB.Length; i++ )
            {
                Regex reg = new Regex("[a-zA-Z]");
                if (!reg.IsMatch(expB[i]))
                {
                    object obj = EvalExpress(expB[i]);
                    if (obj != null)
                    {
                        textBox1.Text += expA + " = " + obj.ToString() + "\r\n";
                    }
                    else
                    {
                        textBox1.Text += expA + ",无法识别的表达式\r\n";
                    }
                }
            }
        }

源码下载:C#数学运算表达式解释器源码

分享到:
评论

相关推荐

    C#数学运算表达式解释器源码

    在编程领域,构建一个数学运算表达式...通过研究这个C#数学运算表达式解释器,开发者可以增强对编译原理的理解,同时提高在C#环境中解决问题的能力。这不仅有助于日常开发,也为构建更复杂的编译器或解释器奠定了基础。

    四则运算表达式解析器源码(C#)

    标题中的“四则运算表达式解析器源码(C#)”是指一个使用C#编程语言编写的程序,它的主要功能是解析包含加法(+)、减法(-)、乘法(*)、除法(/)、取模(%)以及比较运算符(&lt;、&gt;、=、、、&gt;=)的数学表达式。...

    C# 表达式解析器源代码(修正)

    总的来说,C#表达式解析器是编程语言的一个重要组成部分,它允许我们动态地评估和执行数学或逻辑表达式。通过修正算符优先级错误,解析器现在能更准确地反映C#的语法规则,从而提供更可靠的计算结果。

    c#.NET算数表达式求值程序

    - 中缀表达式是我们常见的运算表达式形式,如`2 + 3 * 4`,但这种形式不利于直接计算,因为需要处理运算符的优先级。 - 后缀表达式(逆波兰表示法)如`2 3 4 * +`,不需要括号,运算符位于其操作数之后,方便计算...

    C#中字符串转换为计算公式-并进行计算的方法(自定义公式的计算)

    对于简单的数学运算,这个方法非常有用。 #### 二、环境搭建与配置 1. **创建项目**: - 打开Visual Studio 2008,创建一个新的Windows Forms应用程序。 - 在解决方案资源管理器中,找到“工具箱”窗口,如果...

    简单的运算解释器例子(C#)

    在本项目中,我们关注的是一个使用C#编程语言实现的简单运算解释器。这个解释器能够处理基本的算术运算,包括加法(+)、减法(-)、乘法(*)、除法(/)以及求余数(%)。这对于理解和实践解释器设计模式非常有...

    C#计算表达式代码

    这种方法不仅易于理解和实现,而且能够高效地处理各种数学表达式,适用于多种应用场景,如计算器应用程序、编程语言解释器等。 通过本文的详细解析,读者可以更好地理解 C# 中实现表达式计算的具体步骤和技术要点,...

    四则混合运算解释器

    四则混合运算解释器是一种程序设计模式,它主要用于处理包含加、减、乘、除等基本数学运算的表达式。这种解释器模式的核心是将一个复杂的语法结构转换为可执行的代码,通常通过构建表达式树来实现。在这个场景中,...

    C#公式编辑器支持自定义函数、阶乘求反、运算优先级

    本主题聚焦于一个特定的应用场景:一个基于C#的公式编辑器,它具有强大的功能,如支持自定义函数、阶乘求反以及运算优先级设定。 公式编辑器的核心在于解析和计算用户输入的数学公式。在C#中,这通常涉及到字符串...

    Delphi、C# 表达式求解

    在编程中,表达式求解通常通过编译器或解释器实现,它们能够理解并执行程序中的算术、逻辑或赋值等操作。 首先,让我们看看Delphi的情况。Delphi的Pascal语法支持丰富的表达式类型,包括算术表达式(如加减乘除)、...

    字符串转表达式,进行加减乘除等逻辑运算

    理解这一过程对于编写解释器、计算器应用或者处理含有计算逻辑的文本至关重要。它不仅帮助我们解析和执行复杂的计算,还可以作为学习数据结构(如栈)和算法(如操作符优先级)的实例,对于提升编程能力非常有益。在...

    编译原理 表达式分析器

    以题目中给出的例子为例,"(a+b/c)"是一个成功的表达式,其中包含了左括号、变量a、加号、变量b、除号、变量c和右括号,它们按照数学运算的规则组合。然而,"(a+b/c#" 和 "23ab+23#"则分别出现了问题:前者缺少右...

    Interpreter 解释器模式

    解释器模式在C#中的应用广泛,特别是在需要动态解析和执行简单语言结构的场景,比如配置文件、脚本语言或者简单的数学表达式。然而,对于复杂的语言结构,解释器模式可能会导致代码变得难以理解和维护,此时可能需要...

    四则运算算法demo

    “DataSetTest”可能是另一个测试文件,可能包含了一组数据集,这些数据集用于模拟不同的四则运算表达式,以便对算法进行全面的性能和正确性验证。 总的来说,这个四则运算算法demo通过值栈和符号栈的数据结构,...

    C# 多功能计算器 多功能计算器

    4. **括号运算**:处理优先级,可能需要实现一个解析器或解释器来正确计算带有括号的表达式。 5. **错误处理**:处理除零错误、无效输入等情况,通过异常处理机制来确保程序的健壮性。 在实际开发过程中,为了提高...

    C#计算器(编译原理)

    在本项目中,"C#计算器(编译原理)"是一个基于C#编程语言实现的计算器应用程序,旨在理解和应用编译器设计的基本概念。...这对于未来从事软件开发,尤其是编译器或解释器相关的开发工作,将具有重要的实践价值。

    公式编译器

    接着,我们讨论C#的数学运算。C#支持基本的算术运算符,包括加法(+)、减法(-)、乘法(*)、除法(/)和取余数(%)。对于浮点数除法,如4/5,结果将是一个浮点数,即使两个操作数都是整数。此外,C#还提供了位...

    犀牛grasshopper运算器名称解释.doc

    9. **Functions**: F1, F2, F3和Variable Expression运算器提供了不同参数数量的函数,让用户可以自定义数学和逻辑表达式。 10. **Scripting**: DotNET C# Script和VB Script运算器允许用户编写和执行C#或VB.NET...

    c#函数图像查看器-可以查看积分、导数

    在开发这样一个应用程序时,C#提供了丰富的图形用户界面(GUI)工具和数学库,如Windows Presentation Foundation(WPF)用于构建界面,以及可能使用.NET框架中的Math类进行数学运算。开发者可能还需要利用一些第三...

    C#教程.pdf

    - **算术操作符**:用于执行基本的数学运算。 - **算术表达式**:由操作数和算术操作符组成的表达式。 - **7.3 赋值操作符和赋值表达式** - **赋值操作符**:用于将一个值赋给变量。 - **赋值表达式**:例如`a ...

Global site tag (gtag.js) - Google Analytics