• 大小: 45.07 KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2024-11-10
  • 语言: 其他
  • 标签:

资源简介

1、使用递归下降分析算法分析表达式文法:
exp ::= exp addop term | term
addop ::= + | -
term ::= term mulop factor | factor
mulop ::= * | /
factor ::= (exp) | number
其中number可以是多位的十进制数字串(整数即可),因此这里还需要一个小的词法分析器来得到number的值。
2、该词法分析器以子程序形式出现,当需要进行词法分析时进行调用;
3、能够识别正确和错误的表达式;
4、在进行语法分析的过程中,计算输入表达式的值

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace 递归下降分析器
{
    public partial class Form1 : Form
    {
        public static string str;//用于记录richtextbox1中输入的字符串
        public static int i = 0;//用于记录str中正在分析的字符位置
        public static string s;
        public static string []F=new string [1000];//用于记录分析过的内容
        public static int f = 0;//用于记录分析过的个数
        //public static int[] A = new int[200];
        //public static int a = 0;
        public struct Stack
        {
            public int top;
            public string[] st;// = new string[1000]
        }
        
        public Stack stack=new Stack();
      
        public Form1()
        {
            InitializeComponent();
        }

//============================================================================================================================================

        public static void E()//------------------------------------------------  e=te1
        {
            T();
            E1();
        }
        public static void E1()//------------------------------------------------  e1=ate1|空
        { 
            if (i == str.Length)
            {
                return;
            }
            if (str[i] != ‘+‘ & str[i] != ‘-‘ )
            {
                return;
            }
           
            A();
            T();
            E1();
        }
        public static void A()//------------------------------------------------  a=+|-
        {
            F[f] = str[i].ToString();
            i++;
            f++;
        }
        public static void T()//------------------------------------------------   t=ft1
        {
            FF();
            T1();
        }
        public static void T1()//------------------------------------------------   t1=mft1|空
        { 
            if(i==str.Length )
            {
                return;
            }
            if (str[i] != ‘*‘ & str[i] != ‘/‘)
            {
                return;
            }
          
            M();
            FF();
            T1();
        }

        public static void M()//------------------------------------------------   m=*|/
        {
            F[f] = str[i].ToString();
            i++; f++;
        }
        public static void FF()//------------------------------------------------  f=(e)|number
        {
            int x = 0;
            if (i == str.Length)
            {
                MessageBox.Show(“表达式有错误!“);
            }
            else if (str[i] == ‘(‘)
            {
                F[f] = str[i].ToString();
                i++; f++;
                E();
                if (i < str.Length)
                {
                    if (str[i] == ‘)‘)
                        F[f] = str[i].ToString();
                    i++; f+

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5612  2009-04-23 19:50  递归下降分析器\递归下降分析器\Properties\Resources.resx

     文件        249  2009-04-23 19:50  递归下降分析器\递归下降分析器\Properties\Settings.settings

     文件       1398  2009-04-23 19:50  递归下降分析器\递归下降分析器\Properties\AssemblyInfo.cs

     文件       2892  2009-04-23 19:50  递归下降分析器\递归下降分析器\Properties\Resources.Designer.cs

     文件       1106  2009-04-23 19:50  递归下降分析器\递归下降分析器\Properties\Settings.Designer.cs

     文件       3788  2009-05-03 17:27  递归下降分析器\递归下降分析器\递归下降分析器.csproj

     文件      14328  2009-05-17 21:56  递归下降分析器\递归下降分析器\bin\Debug\递归下降分析器.vshost.exe

     文件      12288  2009-05-17 21:47  递归下降分析器\递归下降分析器\bin\Debug\递归下降分析器.exe

     文件      30208  2009-05-17 21:47  递归下降分析器\递归下降分析器\bin\Debug\递归下降分析器.pdb

     文件        490  2007-07-21 01:33  递归下降分析器\递归下降分析器\bin\Debug\递归下降分析器.vshost.exe.manifest

     文件        180  2009-05-17 21:47  递归下降分析器\递归下降分析器\obj\Debug\递归下降分析器.Form1.resources

     文件        180  2009-05-03 17:27  递归下降分析器\递归下降分析器\obj\Debug\递归下降分析器.Properties.Resources.resources

     文件       1126  2009-05-17 21:56  递归下降分析器\递归下降分析器\obj\Debug\递归下降分析器.csproj.FileListAbsolute.txt

     文件      12288  2009-05-17 21:47  递归下降分析器\递归下降分析器\obj\Debug\递归下降分析器.exe

     文件      30208  2009-05-17 21:47  递归下降分析器\递归下降分析器\obj\Debug\递归下降分析器.pdb

     文件        847  2009-05-17 21:47  递归下降分析器\递归下降分析器\obj\Debug\递归下降分析器.csproj.GenerateResource.Cache

     文件        502  2009-04-23 19:50  递归下降分析器\递归下降分析器\Program.cs

     文件       5814  2009-05-17 21:46  递归下降分析器\递归下降分析器\Form1.resx

     文件       9793  2009-05-17 21:46  递归下降分析器\递归下降分析器\Form1.cs

     文件       4472  2009-05-17 21:46  递归下降分析器\递归下降分析器\Form1.Designer.cs

     文件        953  2009-04-23 19:50  递归下降分析器\递归下降分析器.sln

    ..A..H.     16896  2009-05-17 21:56  递归下降分析器\递归下降分析器.suo

     目录          0  2009-04-23 19:50  递归下降分析器\递归下降分析器\obj\Debug\TempPE

     目录          0  2009-05-03 16:57  递归下降分析器\递归下降分析器\obj\Debug\Refactor

     目录          0  2009-04-23 19:50  递归下降分析器\递归下降分析器\bin\Debug

     目录          0  2009-04-23 19:50  递归下降分析器\递归下降分析器\obj\Debug

     目录          0  2009-04-23 19:50  递归下降分析器\递归下降分析器\Properties

     目录          0  2009-04-23 19:50  递归下降分析器\递归下降分析器\bin

     目录          0  2009-04-23 19:50  递归下降分析器\递归下降分析器\obj

     目录          0  2009-04-23 19:50  递归下降分析器\递归下降分析器

............此处省略4个文件信息

评论

共有 条评论

相关资源