資源簡介
大三上學期的編譯原理實驗,自己用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?????????????{
????????????????if?(Vn[i]==target)
????????????????{
????????????????????return?i;
????????????????}
????????????}
????????????return?-1;
????????}
????????//獲得終結符在終結集合中的位置
????????int?getIndex(char?target)
????????{
????????????for?(int?i?=?0;?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?????????????{
????????????????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個文件信息
評論
共有 條評論