1、程序入口main(),里面只有一句重要语句,new MyFrame()
2、进入MyFrame()。执行MyFrame类的构造函数MyFrame(),调用initialize()
3、进入initialize()。对主窗口进行初始化,重要的是设置内容面板
4、进入getJContentPane()。此面板加入了两个JPanel,把整个窗口分成两大板块
5、进入getJPanel()。此面板加入了3个带滚动条的JScrollPane,分别用来显示非终结符、终结符和产生式
6、进入getJPanel1()。此面板加入了有关接收文法的按钮等组件
7、至此,主窗口初始化完毕,剩下的就是等待接收事件了。
8、菜单事件。一共有两个JMenu,共5个JMenuItem,它们所产生的事件较易处理,其中会调用一个displayInformation()的函数,它 的功能是把3个TextArea的信息显示出来,即非终结符、终结符和产生式
9、“确定添加”按钮事件。处理接收的产生式。getElements(s):提取非终结符、终结符和产生式,分别放入VN[],VF[],F[]。 clearTextField():清空文本框,准备接收下一个产生式
10、“删除规则”按钮事件。delete_a_f(i);displayInformation();
11、“清空所有”按钮事件。clearAll();
12、“测试面板”按钮事件。getTestWindow();生成测试窗口
********进入测试面板******************************************
13、“测试”按钮事件。createAll();analysisInPutString();
createAll()调用了
renew(); //如果不是第一次使用,一些数组被改动了,所以要恢复
addf0(); //添加附加产生式S'==>S
displayInformation(); //刷新主窗口内容,因为添加了一个附加产生式
createFollow()
createFirstVN() //求全体非终结符的First集合,放在FirstVN[]中
createVN_emptyTable() //生成非终结符和空传之间的关系表,即哪些VN能*推导出空串,哪些不能
myFirstVN(VN[i]) //求得一个非终结符的First集,createFirstVN()中调用
createLR1() //生成LR1项目集
addPoint(F[0]) //初始化第一个State0项目,包括加上",#"
arrange(v0) //整理新得到的一个状态,合并其中可以合并的项目2008.8.6 22:27
createAction(); //
createGoto(); //
评论6