VS使用C#语言现在需要补充代码private void button7_Clickobject sender EventArgs e使用子集构造算法使得在lisview2容器中显示DFA文件只包含起始状态、接受符号、到达状态三列并在label5中显示初始状态集label7中显示终止状态集private void button3_Clickobject sender EventArgs e
private void button7_Click(object sender, EventArgs e) { // 获取NFA文件中的起始状态、接受符号、到达状态信息 string[] startStates = startSymbol.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); string[] endStates = endSymbol.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
// 使用子集构造算法构造DFA
DFA dfa = SubsetConstruction.BuildDFA(startStates, symbolSet, TransitionFunction);
// 在listView2中显示DFA文件
listView2.Columns.Add("起始状态", 100);
listView2.Columns.Add("接受符号", 100);
listView2.Columns.Add("到达状态", 100);
foreach (var transition in dfa.Transitions)
{
ListViewItem item = new ListViewItem(transition.Key);
item.SubItems.Add(string.Join(",", transition.Value.AcceptSymbols));
item.SubItems.Add(string.Join(",", transition.Value.NextStates));
listView2.Items.Add(item);
}
// 在label5中显示初始状态集
label5.Text = "初始状态集:" + string.Join(",", dfa.StartStates);
// 在label7中显示终止状态集
label7.Text = "终止状态集:" + string.Join(",", endStates);
}
private Dictionary<string, Dictionary<string, List
foreach (string state in states)
{
transitions[state] = new Dictionary<string, List<string>>();
foreach (string symbol in symbols)
{
List<string> nextStates = new List<string>();
foreach (ListViewItem item in listView1.Items)
{
if (item.SubItems[0].Text == state && item.SubItems[1].Text == symbol)
{
nextStates.Add(item.SubItems[2].Text);
}
}
transitions[state][symbol] = nextStates;
}
}
return transitions;
原文地址: https://www.cveoy.top/t/topic/cZyE 著作权归作者所有。请勿转载和采集!