private void button2_Click(object sender, EventArgs e)
{
// 获取所有的符号集合
List symbols = new List();
foreach (var item in production.Keys)
{
if (!symbols.Contains(item))
symbols.Add(item);
foreach (var prod in production[item])
{
foreach (var c in prod)
{
if (!symbols.Contains(c.ToString()))
symbols.Add(c.ToString());
}
}
}
// 将符号集合按照终结符和非终结符分开
nonterminals = new List();
terminals = new List();
foreach (var s in symbols)
{
if (char.IsUpper(s[0]))
nonterminals.Add(s);
else
terminals.Add(s);
}
listView2.Clear();
listView2.Columns.Add("", 30, HorizontalAlignment.Center);
ListViewItem[] items = new ListViewItem[nonterminals.Count];
for (int i = 0; i < nonterminals.Count; i++)
{
items[i] = new ListViewItem(nonterminals[i]);
for (int j = 0; j < terminals.Count; j++)
{
if (follows[nonterminals[i]].Contains(terminals[j]))
{
items[i].SubItems.Add("1");
}
else
{
items[i].SubItems.Add("0");
}
}
}
listView2.Items.AddRange(items);
listView2.View = View.Details;
listView2.GridLines = true;
listView2.FullRowSelect = true;