⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.cs

📁 编译原理语法分析和词法分析综合实验: 源程序、可执行程序、测试程序文件、程序运行说明文件、实验报告。
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using regularExpression = System.Text.RegularExpressions;
namespace test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string sss="[a-zA-Z_]";
            regularExpression.Regex re= new System.Text.RegularExpressions.Regex(sss);
            //regularExpression.Match mat = re.Match(textBox1.Text);
            if (re.IsMatch(textBox1.Text))
                MessageBox.Show("true");
            else
                MessageBox.Show("false");
            //button1.Text = ""+Compute(textBox1.Text);
            
        }

        string expr;
        int pos;
        public double Compute(string exp)
        {
            pos = 0;
            expr = regularExpression.Regex.Replace(exp, @"\s+", "");
            return addsubt();
        }

        double addsubt()
        {
            double rtn = multdiv();

            while (pos < expr.Length && (expr[pos] == '+' || expr[pos] == '-'))
            {
                char op = expr[pos++];
                double opr2 = multdiv();

                if (op == '+')
                    rtn += opr2;
                else
                    rtn -= opr2;
            }

            return rtn;
        }

        double multdiv()
        {
            double rtn = number();

            while (pos < expr.Length && (expr[pos] == '*' || expr[pos] == '/'))
            {
                char op = expr[pos++];
                double opr2 = number();

                if (op == '*')
                    rtn *= opr2;
                else
                    rtn /= opr2;
            }

            return rtn;
        }

        double number()
        {
            double rtn;
            string _rtn;

            if (expr[pos] == '(')
            {
                pos++;
                rtn = addsubt();
                if (expr[pos++] != ')')
                    //throw new Exception("缺少关闭括弧!");
                    textBox2.Text = "缺少关闭括弧!";

                return rtn;
            }

            if (pos >= expr.Length)
                //throw new Exception("错误的表达式!");
                textBox2.Text = "错误的表达式!";

            _rtn = Convert.ToString(expr[pos]);

            int pn = 0;//小数点个数   
            while ((pos < expr.Length - 1) && (char.IsDigit(expr[pos]) || expr[pos] == '.'))
            {
                pn += expr[pos] == '.' ? 1 : 0;
                pos++;
                _rtn += Convert.ToString(expr[pos]);
            }

            if (pn > 1)
                //throw new Exception("小数点错误!");
                textBox2.Text = "小数点错误!";

            regularExpression.Match m = regularExpression.Regex.Match(_rtn, @"^\d+(\.\d*){0,1}(?=[\+\-\*/\)])|^\d+(\.\d*){0,1}$");

            if (!m.Success)
                //throw new Exception("错误的表达式!");
                textBox2.Text = "错误的表达式!";

            
                rtn = Convert.ToDouble(m.Value);
            
            
            
            return rtn;
        }

        private void folderBrowserDialog1_HelpRequest(object sender, EventArgs e)
        {

        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -