《LL-1-预测分析器的构造》由会员分享,可在线阅读,更多相关《LL-1-预测分析器的构造(10页珍藏版)》请在金锄头文库上搜索。
1、LL1预测分析器的构造 预测分析器的构造计算机时代年第期()预测分析器的构造褚亚飞(浙江海洋学院高职杭州分院,浙江杭州)摘要:着重分析了编译原理课程中的()预测分析器的设计算法。对于给定的代码,求出、和集,构造相应的()预测分析器,给出预测分析表,并对求解集和集中存在的环问题提出了解决算法。关键词:;();算法引言学好编译原理对计算机专业的学生至关重要。随着计算机科学的迅速发展,程序设计语言也有了飞速的发展,语言的功能、结构均有了本质的改变。相对而言,编译原理课程的教学却大大落后于实际需要,仍然停留在以理论教学为主的状态。编译原理作为计算机专业学生的必修课,较其他专业课程而言,显得过于枯燥、抽
2、象和难于理解,由此出现学生学习积极性不高、兴趣不浓、掌握不透等现象。本分析器以给出解答过程和答案为主要内容,以简单清晰的界面给出问题的具体解答过程,给学习者一个直观的认识,使他们了解编译原理工作的过程,进而提高对编译原理的兴趣。给,是指串中第个字符。逐一扫描产生式右部,要处理如下两种情况:若产生式的右部为空字符串或第一个字符为非终结符,则将和终结符加入此非终结符的集合,跳出;若产生式右部为非终结符,则将的集合加入该非终结符的集合。若不能推出空字符串,则结束,跳出;若串的长度(即该非终结符不是产生式最后一个字符),则继续执行;否则,结束,跳出。扫描完所有的产生式,求得所有的非终结符的集合,跳出。
3、所求得的集合中还可能存在环的问题(形如产生式,集的算法设计求解集合的算法()或者求非终结符的集合需要先求代码中其他非终结符的集合的两种情况)和存在重复终结符的问题。下面就这两个问题提出解决的算法。逐一扫描代码中的产生式,将产生式右部的字符串赋!编辑软件,如对屏幕录像和摄像机的录像进行合成,形成画中画功能,再做流化处理。如电子科技大学网络教育学院的网页设计教程课件就是一种有“动态电脑屏幕画面”和(合成为画中画)及“讲课音频”的流媒体课件。“教师讲课画面”过程录制成上述课件则可以“以不变应万变”。当然日常课堂教学中用的屏幕录像课件可以直接生成文件,若不在网上传输可不必进行流化处理。此外,还可以对电
4、脑上播放的一些现成的视频(音频)进行屏幕录像(要注意保护版权)制成课件,但要设置“录像模式基本设置”中的参数:去掉“帧数过大,自要录动停止录制”和“自动”选项,把录制频率设置成帧秒。制播放中的声音,还需设置好录音来源,可选“”,但这时录制的文件数据量将会大增。“动态屏幕捕获型”流媒体课件的应用“动态屏幕捕获型”流媒体课件的应用非常广泛,可用于网上教学、课堂教学。用于网上教学流媒体课件的最大优势是实时传输,能实现网上边下载边播放。“动态屏幕捕获型”流媒体课件在现代远程教育(如电大、网络教育学院开办的远程教育)或校园网教学中大有用武之地。若将一些应用软件的教学制成流媒体课件,学习者可以在家里直观自
5、主地学习,定能收到好的学习效果。没有上网的学习者,可以购买配套光盘进行学习。结束语通过所述屏幕录像方式可以将电脑屏幕的动态变化信息以文件的形式记录保存下来,编制成流媒体课件,特别适宜于网上进行应用软件教学。它建构出直观生动的学习情境,避免了教学中出现“只可意会不可言传”的尴尬局面,丰富了教学信息资源,增大了教学信息容量,减轻了教师的劳动强度,取得了良好的教学效果,具有广阔的应用前景。参考文献:用于课堂教学在课堂教学中,公用的多媒体教室讲台上的电脑只安装了一些常用的软件,而且由于大家共用电脑,出现软件故障是常事,再加之教师上课地点的不固定性,给一些上应用软件课的教师带来了诸多不便,经常要装机。教
6、师如果将应用软件教学陈代武流媒体课件制作中关键技术研究计算机与现代化,:李志河多媒体课件制作技术清华大学出版社,预测分析器的构造解决“环”的算法号对输入串进行预测分析,而预测的信息则存放在分析表的相矩阵的元素,中应入口里。分析表可用一个矩阵表示。“”。矩阵元素的下标表示非终结符,为终结符或句子括号将代码中的所有非终结符按预处理的结果顺序处理。三种扫描方式:按顺序扫描集合(,),若该非终结符需由另一个非终结符的求得,那么若排在前面,则将代入中;,中存放着一条关于的产生式,即当用非终结符向下推导,遇到输入符时所应采取的候选产生式,当元素内容无产生式时,则表明用为左部向下推导时遇到了不该出现的符号,
7、此时应转向出错处理。分析程序的工作流程如图所示。逐一扫描按顺序排列的集合(,),若非终结符的集合中含有它本身,则删除等式右部的该非终结符;从序号最大的非终结符的集开始,逐一扫描按顺序排列的集合(,),若该非终结符需由另一个非终结符的求得,那么若排在后面,则将该回代入中,调用第步。若所有非终结符的集中都已经为终结符,则“环”问题已经解决。解决终结符的重复存在问题的算法“起泡法”对集合里的终结符进行判断并将重用复的终结符删除;字符加入可以推出空的非终结符集合中,将并将不能推出空的非终结符的集合中的字符全部删除。图预测分析程序的工作流程图类定义定义产生式类:();(,);();“”的左边字符();截
8、取产生式中“”的右边字符();截取产生式中求解集合的算法逐一扫描代码中的产生式,将产生式右部赋给串,表示串中的第个字符。逐一扫描产生式的右部,若为非终结符,找出后继的第一个字符。若为终结符,则将该终结符加入到集合,结束,跳出;,执行。若为非终结符,则集合:“”的左边字符;存放“”的右边字符;存放逐一扫描后的字符串,分为下面两种情况:若非终结符能推出空字符串,则,继续执行、两步;若非终结符为产生式最后一个字符,则将该产生式的左部非终结符的集合加入该非终结符的:();将所有产生式清空;定义集合类:();();();构造函数();构造函数();在原来的集合中插入一个字符();在原来的集合中删除一个字
9、符();在集合中查找字符();在集合中查找字符的位置();添加集合();删除集合();求集合的大小();合并两个集合();集合。若扫描完全部的产生式,则求得所有非终结符的集合。在计算集中也存在“环”和重复的终结符的问题,解决的办法与集的相同。求集合对代码中的任意产生式,求集。可按下列算法:(不能推出)()()()()()()预测分析器的构造预测分析器的工作流程()预测分析器的总控程序利用栈顶元素和当前输入符预测分析器的构造计算机时代年第期在集合中删掉集合中的字符();对集合进行赋值();取集合中第个字符();判断集合是否为空:;变量存放集合的具体内容;定义()代码类:();();();构造函数();对代码进行赋值();设置终结符集合的值为();设置非终结符集合的值为();设置代码的开始符号为();添加产生式();构造预测分析表();判断代码是否合法();将结果输在窗体中();将结果写入文件中();判断是否在非终结符集合中();构造预测分析表();判断字符串是否可以推出空字符();判断字符是否可以推出空字符();求字符的集();求字符串的集();求字符的集;构造预测分析表的算法设计对于给定的代码,首先需要判断它是否为合法的代码,然后判断是否为()代码,这需要求出代码中每个产生式的集合,然后进行判断。而对于已经判定是()代码的代码,就可以构造预测分析表,首先将表清空,然