资源简介

大三上学期的编译原理实验,自己用C#写的代码。有词法分析、LL1分析、LR1分析这三次实验。

资源截图

代码片段和文件信息

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

namespace LL_1_分析法
{
    public partial class Form1 : Form
    {
        List Vt = new List();//终结符集合
        List Vt1 = new List ();//去ε的终结符集合
        List Vn = new List ();//非终结符集合
        List production = new List();
        //string[] production = { “E->TG“ “G->+TG“ “G->-TG“ “G->ε“ “T->FS“ “S->*FS“ “S->/FS“ “S->ε“ “F->(E)“ “F->i“ };//产生式
        string[][] table;//预测分析表
        Stack symbolStack = new Stack();//分析栈
        char[] inString;//输入符号串
        int index = 0;//当前输入符号的指针
        public class Log
        {
            public string strStack;
            public string strRemain;
            public string strProduction;
            public string strAction;
        }
        List log = new List();//记录分析过程
        List> firstSets = new List>();//利用集合中元素的互异性可以避免first集元素重复
        List> followSets =new List>();
        //List> selectSets = new List>();
        public Form1()
        {
            InitializeComponent();
            Console.WriteLine(“Debug“);
        }
        private void Form1_Load(object sender EventArgs e)
        {
            this.labelDateTime.Text = DateTime.Now.ToString(“yyyy-MM-dd    HH:mm:ss“);
            this.timer1.Interval = 1000;
            this.timer1.Start();
            dgvAnalysis.TopLeftHeaderCell.Value = “步骤“;
        }
 
        //获得非终结符在非终结集合中的位置
        int getNIndex(char target)
        {
            for (int i = 0; i < Vn.Count; i++)
            {
                if (Vn[i]==target)
                {
                    return i;
                }
            }
            return -1;
        }
        //获得终结符在终结集合中的位置
        int getIndex(char target)
        {
            for (int i = 0; i < Vt1.Count; i++)
            {
                if (Vt1[i] == target)
                {
                    return i;
                }
            }
            if (target == ‘ε‘)
            {
                return getIndex(‘#‘);
            }
            else
                return -1;
        }

        #region 算法
        //查找目标字符,返回在表中的下标
        private int LocateChar(List collectionchar target)
        {
            for (int i = 0; i < collection.Count; i++)
            {
                if (collection[i]==target)
                {
                    return i;
                }
            }
            return -1;
        }
        //查找预测分析表中是否有对应项的信息
        private string LocateStr(int iint j)
        {
            if (i>=Vn.Count()||j>=Vt1.Count()||i<0||j<0|| table[i][j]==null)
 

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

     文件       3584  2017-10-10 22:20  LL(1)分析法\.vs\LL(1)分析法\v14\.suo

     文件        189  2017-10-09 22:48  LL(1)分析法\App.config

     文件     137216  2018-09-04 19:33  LL(1)分析法\bin\Debug\LL(1)分析法.exe

     文件        189  2017-10-09 22:48  LL(1)分析法\bin\Debug\LL(1)分析法.exe.config

     文件      50688  2018-09-04 19:33  LL(1)分析法\bin\Debug\LL(1)分析法.pdb

     文件      22696  2018-09-04 19:43  LL(1)分析法\bin\Debug\LL(1)分析法.vshost.exe

     文件        189  2017-10-09 22:48  LL(1)分析法\bin\Debug\LL(1)分析法.vshost.exe.config

     文件        490  2018-04-12 07:35  LL(1)分析法\bin\Debug\LL(1)分析法.vshost.exe.manifest

     文件         47  2017-10-15 15:57  LL(1)分析法\bin\Debug\LL1文法1.txt

     文件         98  2017-10-15 22:43  LL(1)分析法\bin\Debug\LL1文法2.txt

     文件        115  2017-10-27 12:39  LL(1)分析法\bin\Debug\LL1文法3.txt

     文件         55  2017-10-15 15:59  LL(1)分析法\bin\Debug\LL1文法4.txt

     文件         94  2017-10-15 15:49  LL(1)分析法\bin\Debug\LL1文法实验例子.txt

     文件         37  2017-10-15 16:01  LL(1)分析法\bin\Debug\非LL1文法1.txt

     文件         33  2017-10-15 16:31  LL(1)分析法\bin\Debug\非LL1文法2.txt

     文件      32005  2017-12-06 13:07  LL(1)分析法\Form1.cs

     文件      42118  2017-10-28 16:35  LL(1)分析法\Form1.Designer.cs

     文件      76650  2017-10-28 16:35  LL(1)分析法\Form1.resx

     文件       4170  2017-10-13 18:01  LL(1)分析法\LL(1)分析法.csproj

     文件       1464  2018-09-04 19:33  LL(1)分析法\obj\Debug\DesignTimeResolveAssemblyReferences.cache

     文件       7385  2018-09-04 18:50  LL(1)分析法\obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache

     文件        825  2018-09-04 19:43  LL(1)分析法\obj\Debug\LL(1)分析法.csproj.FileListAbsolute.txt

     文件       1138  2017-12-08 21:47  LL(1)分析法\obj\Debug\LL(1)分析法.csproj.GenerateResource.Cache

     文件       2384  2018-09-04 19:33  LL(1)分析法\obj\Debug\LL(1)分析法.csprojResolveAssemblyReference.cache

     文件     137216  2018-09-04 19:33  LL(1)分析法\obj\Debug\LL(1)分析法.exe

     文件      50688  2018-09-04 19:33  LL(1)分析法\obj\Debug\LL(1)分析法.pdb

     文件      46738  2017-12-08 21:47  LL(1)分析法\obj\Debug\LL_1_分析法.Form1.resources

     文件      55121  2017-12-08 21:47  LL(1)分析法\obj\Debug\LL_1_分析法.Properties.Resources.resources

     文件          0  2017-10-09 22:48  LL(1)分析法\obj\Debug\TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs

     文件          0  2017-10-09 22:48  LL(1)分析法\obj\Debug\TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs

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

评论

共有 条评论