资源简介
大三上学期的编译原理实验,自己用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个文件信息
评论
共有 条评论