private void button7_Click(object sender, EventArgs e) { // 获取NFA文件中的起始状态、接受符号、到达状态 List<string[]> nfaList = new List<string[]>(); for (int i = 0; i < listView1.Items.Count; i++) { string[] row = new string[3]; row[0] = listView1.Items[i].SubItems[0].Text; row[1] = listView1.Items[i].SubItems[1].Text; row[2] = listView1.Items[i].SubItems[2].Text; nfaList.Add(row); }

// 构造NFA对象
NFA nfa = new NFA(nfaList);

// 使用子集构造算法生成DFA文件
DFA dfa = nfa.ToDFA();

// 在listView2中显示DFA文件
listView2.Items.Clear();
foreach (string state in dfa.States)
{
    foreach (string symbol in dfa.Symbols)
    {
        string[] row = new string[3];
        row[0] = state;
        row[1] = symbol;
        row[2] = string.Join(",", dfa.GetNextState(state, symbol));
        listView2.Items.Add(new ListViewItem(row));
    }
}

// 在label5中显示初始状态集
label5.Text = string.Join(",", dfa.StartState);

// 在label7中显示终止状态集
label7.Text = string.Join(",", dfa.AcceptStates);
VS使用C#语言实现正规式到NFA到DFA再到MFA的过程其中listView1中是读入的只有起始状态、接受符号、到达状态三列的NFA文件并在label3中显示初始状态集label4中显示终止状态集现在需要实现private void button7_Clickobject sender EventArgs e使用子集构造算法使得在lisview2中生成只有起始状态、接受符号、到达状态三列的DFA

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

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