王鸿百学年论文

王鸿百学年论文

ID:47691482

大小:508.44 KB

页数:23页

时间:2019-10-23

王鸿百学年论文_第1页
王鸿百学年论文_第2页
王鸿百学年论文_第3页
王鸿百学年论文_第4页
王鸿百学年论文_第5页
资源描述:

《王鸿百学年论文》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

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*为当前输入算术符

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。