private void button6_Click(object sender, EventArgs e) { // 获取所有终结符和非终结符 terminals = new List(); nonterminals = new List(); foreach (var item in production) { if (!nonterminals.Contains(item.Key)) nonterminals.Add(item.Key); foreach (var prod in item.Value) { foreach (var s in prod) { if (IsTerminal(s) && !terminals.Contains(s.ToString())) terminals.Add(s.ToString()); else if (!IsTerminal(s) && !nonterminals.Contains(s.ToString())) nonterminals.Add(s.ToString()); } } } terminals.Add("#");

// 初始化预测分析表
table = new Dictionary<string, Dictionary<string, string>>();
foreach (var nonterm in nonterminals)
{
    table.Add(nonterm, new Dictionary<string, string>());
    foreach (var term in terminals)
    {
        table[nonterm].Add(term, "");
    }
}

// 填充预测分析表
GetSelect(production, firsts, follows);


// 输出预测分析表到 listView3 中
listView3.Columns.Clear();
listView3.Items.Clear();
listView3.View = View.Details;

// 添加第一列
listView3.Columns.Add("", 40);

// 添加终结符列
foreach (var item in terminals)
{
    listView3.Columns.Add(item, 40);
}


// 填充表格
foreach (var nonterm in nonterminals)
{
    ListViewItem item = new ListViewItem(nonterm);
    foreach (var term in terminals)
    {
        item.SubItems.Add("->" + table[nonterm][term]); // 加上 "->"
    }
    listView3.Items.Add(item);
}
private void button6_Clickobject sender EventArgs e 获取所有终结符和非终结符 terminals = new Liststring; nonterminals = new Liststring; foreach var item in pro

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

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