LR(1)语法分析器C#实现: 项目集规范族和DFA构建
LR(1)语法分析器C#实现:项目集规范族和DFA构建
本文分析两段C#代码,它们分别用于构建LR(1)语法分析器的项目集规范族和DFA。
代码1: 按钮点击事件处理C#private void button4_Click(object sender, EventArgs e){ step = 0;//单步计数置零 lr = new LR();
listView1.Columns.Clear(); listView1.Items.Clear(); listView1.View = View.Details;
// 添加第一列 listView1.Columns.Add('状态', 150); listView1.Columns.Add('项目族信息', 350);
lr.Buildprod(richTextBox1.Text);//调用
for (int i = 0; i < lr.proitemset.Count; i++)//输出 { ListViewItem li = new ListViewItem(); li.SubItems.Clear(); li.SubItems[0].Text = i.ToString(); string tempstr = ''; for (int j = 0; j < lr.proitemset[i].Container.Count; j++) { tempstr += lr.LRobjNum[lr.proitemset[i].Container[j]].Left + '->' + lr.LRobjNum[lr.proitemset[i].Container[j]].Right + ' '; } li.SubItems.Add(tempstr); listView1.Items.Add(li); } listView1.GridLines = true;}
这段代码处理按钮点击事件,主要功能是:
- 初始化LR(1)分析器对象
lr。2. 清空并设置listView1控件,用于显示分析结果。3. 调用lr.Buildprod方法,将用户在richTextBox1中输入的文法进行处理,构建项目集规范族。4. 遍历lr.proitemset(项目集规范族),将每个项目集的信息格式化后添加到listView1中。
代码2: 构建项目集规范族C#public void Buildprod(string str){ // ... (代码省略,详见下文) ... }
public void Creteitemsets(){ // ... (代码省略,详见下文) ..
原文地址: https://www.cveoy.top/t/topic/fZVM 著作权归作者所有。请勿转载和采集!