资源描述:
《王鸿百学年论文》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、哈余滦师范犬学学年论丈目生师级业别院教题学指年专系学算符优先函数的构造王鸿百肖鑫教授2009级计算机科学与技术计算机系计算机科学与信息工程学院哈余滨师范丸学2012年6月论文提要算符优先分析法是自下而上语法分析的一种,它的算法简单、直观、易于理解,所以通常作为学习其它自下而上语法分析的基础。为学好本章内容,学员应复习有关语法分析的知识,如:什么是语言、文法、句子、句型、短语、简单短语、句柄、最右推导、规范归约基本概念。算符优先函数的构造王鸿百摘要:算符优先分析法是Floyd在1963年首先提出来的,是一种古典而又实用的方法,用这种方法在分析程序语言中的各类表达式时尤为有效。不少编译程序中都使用
2、这种方法分析表达式。算符优先分析法就是仿照算术表达式的运算过程而提出的一种自底向上的语法分析方法。其基本思想是:首先规定算符,这里是文法的终极符之间的优先关系,然后根据这种优先关系,通过比较相邻算符的优先次序来确定句型中的“句柄”,然后进行归约。算符优先分析法的关键:算符优先分析法的关键就是寻找当前句型中的最左素短语,并归约它。关键字:小于、大于、等于、句柄、归约一、对表达式文法G[E,]构造算符优先关系表。计算算符优先只针对于终结符,终结符Z间的优先关系有三种,在计算优先关系Z前我们先定义两个集合,对于任意两个终结符(a,b)FTRSTVT(B)={b
3、B=>b-或B=>Cb-},其中…表示
4、V*屮的符号串。LASTVT(B)={a
5、B=>—a或B二〉…aC}三种优先关系:(1)等于关系:口J直接查看产生式的右部,对如下形式的产生式A->・・・ab…A-〉…aBb…则有沪b成立。(2)小于关系:求出每个非终结符B的FIRSTVT(B),观察如下形式的产生式A~>--aB…对每一beFIRSTVT⑻冇a…Bb…对每一■aeLASTVT(B)有a为b成立表达式文法G[E,]:E'-#E#E-E+Q
6、QQ-Q-T
7、TT-T*F
8、FF-F/MIMMPIPP-(E)
9、i根据上而的规则手工构造上述文法的算
10、符优先表如下:+—*/()•1+—*>>>末<<>末>/>>>><<>电>>>>>><><>(<卡卡卡卡<=卡)>>>>>>>.>>>>>>>#<七<<<—表1-1packagecom.op.core;xJxxlxxfxkL^kL^%F^%F^kI^^Jx■]"%F^%Xx^Jx■["%F>kvx%F^%Fx%lx%J^%Fx%J>>X^%F^%Fx%lx%J^kL^%F^kL^%Fx%lxxlx%F^kL^^g%^js*简单表达式文法6[E,]构造算符优先关系表。*E,f#E#*E-E+QQ*Q一Q—TT*TfT*FF*F->F/M
11、M*M-MP1P*P一(E)1■1*@author*/pu
12、blicclassPriorityTable{privatestaticchartablet][J={//+*/zi()#{'>',y'〈‘,y'〈‘,,<,},//+{'>','〈',},//*{'>','〈‘,'〈‘,,〈‘},///{'>','$‘,,>'},//•1{'〈','〈','〈‘,'〈','<‘,'‘X一,小,,〈‘},//({'>','〉‘,'$‘,'$‘,'〉',’>',,>'},//){'〈','<‘,'〈‘,'〈',yg,一,4>>一,},//#{'>','〈‘,'〈‘,,〈‘},//A};//算符优先表xJx>A^kl^>A^kl^^Jx■["xJxkL^kl^>A
13、^%fx%F^%Xx■]"%F^%Xx%F^%Xx■]"■["■丄"%F>%F^%FxkL^%^x%v^kL^^Jx%Fx%lx彳.XTS*卜V、/卜V、V、ZjS彳."卜V、Zrs彳、彳、Zrs.卜V、彳、V、.卜V、<、*卜V、<、Zrs彳、.卜Zr^V、<、.卜V、<、*卜Zrs*判断一个符号在算符优先表中位置**@paramc*©return*/privatestaticintjudgePriority(charc)intpriority=0;switch(c){case'+':priority=0;break;case'*':priority=1;break;case1「:prior
14、ity=2;break;case'i‘:priority=3;break;case'(':priority二4;break;case9Y:priority=5;break;case'#':priority=6;break;case:priority=7;break;returnpriority;}/***判断两个算术符的优先级**@paramm*为符号栈的栈顶元素*©paramn*为当前输入算术符