private void button6_Click(object sender, EventArgs e) { //构造预测分析表 selects = new Dictionary<string, List>(); foreach (var item in production.Keys) { Select select = new Select(new LL1Item(item, production), new First(firsts), new Follow(follows)); selects.Add(item, new List()); foreach (var prod in production[item]) { foreach (var s in select.getselects()[item][prod]) { if (!selects[item].Contains(s)) selects[item].Add(s); } } }

//输出预测分析表
listView3.Columns.Add("非终结符", 100, HorizontalAlignment.Center);
foreach (var t in terminals)
    listView3.Columns.Add(t, 50, HorizontalAlignment.Center);
ListViewItem firstitem = new ListViewItem("FIRST");
firstitem.UseItemStyleForSubItems = false;
firstitem.BackColor = Color.LightSkyBlue;
listView3.Items.Add(firstitem);
ListViewItem followitem = new ListViewItem("FOLLOW");
followitem.UseItemStyleForSubItems = false;
followitem.BackColor = Color.LightSalmon;
listView3.Items.Add(followitem);
ListViewItem selectitem = new ListViewItem("SELECT");
selectitem.UseItemStyleForSubItems = false;
selectitem.BackColor = Color.LightGreen;
listView3.Items.Add(selectitem);

foreach (var item in production.Keys)
{
    ListViewItem lvi = new ListViewItem(item);
    for (int i = 1; i < listView3.Columns.Count; i++)
    {
        lvi.SubItems.Add("");
    }
    foreach (var prod in production[item])
    {
        foreach (var s in selects[item])
        {
            if (s.Equals("#"))
            {
                foreach (var fol in follows[item])
                {
                    if (listView3.Columns.Contains(fol))
                        lvi.SubItems[listView3.Columns.IndexOfKey(fol)].Text = prod;
                }
            }
            else
            {
                if (listView3.Columns.Contains(s))
                    lvi.SubItems[listView3.Columns.IndexOfKey(s)].Text = prod;
            }
        }
    }
    listView3.Items.Add(lvi);
}

for (int i = 0; i < listView3.Items.Count; i++)
{
    for (int j = 1; j < listView3.Columns.Count; j++)
    {
        if (listView3.Items[i].SubItems[j].Text == "")
            listView3.Items[i].SubItems[j].Text = "error";
    }
}

}

构造和输出预测分析表的实现方法

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

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