实现下列函数使得分别在listView1、listView2中显示first集和follow集带横线的表格其中第一行为终结符第一列为非终结符若对应first集含有相应非终结符则对应位置填1反之填0;格式如下: +¥i#E0001010T0001010B1100000F0001010P0110000private void button1_Clickobject sender EventArgs e
首先需要定义一个函数来计算某个非终结符的first集,以及一个函数来计算某个非终结符的follow集。这里假设已经有了这两个函数。
然后在button1_Click事件中,先清空listView1中的所有项,然后添加第一行和第一列的表头:
listView1.Items.Clear(); listView1.Columns.Clear(); listView1.Columns.Add("", 50); foreach (char c in terminals) { listView1.Columns.Add(c.ToString(), 50); } foreach (char c in nonterminals) { ListViewItem item = new ListViewItem(c.ToString()); item.SubItems.Add(""); for (int i = 0; i < terminals.Length; i++) { item.SubItems.Add(""); } listView1.Items.Add(item); }
其中terminals和nonterminals分别是终结符和非终结符的集合。
然后对于每个非终结符,计算它的first集,并将对应的位置填上1:
foreach (char A in nonterminals)
{
HashSet
最后在button2_Click事件中,同样先清空listView2中的所有项,然后添加第一行和第一列的表头:
listView2.Items.Clear(); listView2.Columns.Clear(); listView2.Columns.Add("", 50); foreach (char c in terminals) { listView2.Columns.Add(c.ToString(), 50); } foreach (char c in nonterminals) { ListViewItem item = new ListViewItem(c.ToString()); item.SubItems.Add(""); for (int i = 0; i < terminals.Length; i++) { item.SubItems.Add(""); } listView2.Items.Add(item); }
然后对于每个非终结符,计算它的follow集,并将对应的位置填上横线:
foreach (char A in nonterminals)
{
HashSet
原文地址: https://www.cveoy.top/t/topic/gIMM 著作权归作者所有。请勿转载和采集!