private void button5_Click(object sender, EventArgs e) { //获取开始符和终结符 string startSymbol = listView1.Items[0].SubItems[0].Text; string endSymbols = ""; for(int i=0; i<listView1.Items.Count; i++) { if(listView1.Items[i].SubItems[1].Text == "#") { endSymbols += listView1.Items[i].SubItems[2].Text + ";"; } } //写入NFA.txt文件 using(StreamWriter sw = new StreamWriter("NFA.txt")) { sw.WriteLine("开始符:" + startSymbol + ";"); sw.WriteLine("终结符:" + endSymbols); sw.WriteLine("状态数:" + (listView1.Items.Count+1)); sw.WriteLine("符号集:a;b;"); for(int i=0; i<listView1.Items.Count; i++) { string from = listView1.Items[i].SubItems[0].Text; string symbol = listView1.Items[i].SubItems[1].Text; string to = listView1.Items[i].SubItems[2].Text; sw.WriteLine(from + " " + symbol + " " + to); } } }

private void button6_Click(object sender, EventArgs e) { //读取DFA文件 string[] lines = File.ReadAllLines("DFA.txt"); string startSymbol = lines[0].Substring(5,1); string endSymbols = lines[1].Substring(5); int maxState = int.Parse(lines[2].Substring(7)); string symbols = lines[3].Substring(5); //设置listView2列标题 listView2.Columns.Add("起始状态", 80); listView2.Columns.Add("接受符号", 80); listView2.Columns.Add("到达状态", 80); //读取DFA文件中的状态转移信息 for(int i=4; i<lines.Length; i++) { string[] items = lines[i].Split('\t'); string from = items[0]; string symbol = items[1]; string to = items[2]; //向listView2中添加状态转移信息 ListViewItem lvi = new ListViewItem(from); lvi.SubItems.Add(symbol); lvi.SubItems.Add(to); listView2.Items.Add(lvi); }

private void button5_Clickobject sender EventArgs e函数在private void button6_Clickobject sender EventArgs e函数基础上实现NFA文件保存功能文件名称为NFAtxt其中第一行是开始符第二行是终结符后者函数功能为用VS软件C#语言实现读入DFA文件的功能且该DFA文件的前四行中的数据第一行是开始符第二

原文地址: https://www.cveoy.top/t/topic/cg1t 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录