C# 使用NFA数据生成DFA文件数据:VS软件中实现NFA到DFA转换
private void button7_Click(object sender, EventArgs e) { // 获取NFA文件的初始状态集和终止状态集 string initialStates = label3.Text; string finalStates = label4.Text;
// 将NFA数据转化为DFA数据
string dfaData = "";
string[] nfaLines = new string[listView1.Items.Count];
for (int i = 0; i < listView1.Items.Count; i++)
{
string line = listView1.Items[i].SubItems[0].Text + " " +
listView1.Items[i].SubItems[1].Text + " " +
listView1.Items[i].SubItems[2].Text;
nfaLines[i] = line;
}
DFA dfa = new DFA(nfaLines, initialStates, finalStates);
dfaData += "开始符:" + dfa.InitialState + ";;
"; dfaData += "终结符:" + dfa.FinalStates + ";; "; foreach (KeyValuePair<string, string> pair in dfa.Transitions) { dfaData += pair.Key + " "; dfaData += pair.Value + " "; }
// 显示DFA数据
listView2.Items.Clear();
string[] dfaLines = dfaData.Split(new string[] { "
" }, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < dfaLines.Length; i += 2) { string[] dfaLine1 = dfaLines[i].Split(' '); string[] dfaLine2 = dfaLines[i + 1].Split(' '); ListViewItem item = new ListViewItem(dfaLine1[0]); item.SubItems.Add(dfaLine1[1]); item.SubItems.Add(dfaLine2[2]); listView2.Items.Add(item); }
// 显示DFA文件的初始状态集和终止状态集
label5.Text = dfa.InitialState;
label7.Text = dfa.FinalStates;
}
原文地址: https://www.cveoy.top/t/topic/jM3a 著作权归作者所有。请勿转载和采集!