C# 实现 NFA 文件保存功能及 DFA 文件读取解析
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(' '); 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); } }
原文地址: https://www.cveoy.top/t/topic/nsfC 著作权归作者所有。请勿转载和采集!