- 1、本文档共63页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[日语学习]z第4章 语法分析 42 自下而上 优先分析法
4.2 算符优先分析算法 算符优先分析法是自下而上进行句型归约的一种分析方法,它是处理算术表达式的一种有力工具,在软件实现中常用“直观算符优先分析法”和“一般的算符优先分析法”。 算符优先分析法的分析过程 第一步,给出描述算法语言语句成分的文法; 第二步,给出文法终极符之间的优先关系表。 第三步,根据优先关系表,使用统一的总控程序,进行源程序的语法分析。 直观算符优先关系表的构造方法 给定文法G:E→E+E|E*E|(E)|i 其中:VT={+,*,i,(,)} 文法G的语言是算术表达式,运算符:+、*、(、)。 句型为E+E*E时,应先处理“E*E”,而不是“E+E”,所以规定符“+”和“*”存在于句型…+E*…中时,“+”号优先级低于“*”号。 句型为E+E+E时,应先处理左面的“E+E”,所以规定当 “+”存在于句型…+E+E+…中时,左面的“+”号优先级高于“+”号。 句型为(E)*E 时,应先处理“(E)”,所以规定终极符“(”与“)”的优先级相同。 注: 1)在此表中 “#”是一个特殊符号,用于语句的开始符号和结束符号。 2)运算量i的优先级高于算符; 3)语句开始和结束符号“#”与终结符a相继出现时,应该有# a和a #,以此来保证语句内先归约。 ( )表示括号是成对归约的。 4) 优先关系和代数中的大于小于关系不同,a b并不意味着b a,终结符所处的左右位置很重要。 ①读输入串中的下一个符号进a; ②若a为运算分量“i”,则“i”进队列QUAD,转①; ③用OPTR(?)和a查优先关系表,若M[OPTR(θ),a]=“ ”,则栈顶符号OPTR(?)进QUAD,?:= ?-1,转③; ④若M[OPTR(θ),a]=“ ”,则有两种情况,一是“(”“)”,此时,“(”退栈,即?:=?-1,a放弃“)”,转①;二是“#” “#”,此时,分析成功,分析结果在队列QUAD中; ⑤若M[OPTR(θ),a]=“ ”,则a进OPTR(?)栈,?:=?+1转①; ⑥若M[OPTR(θ),a]=空白,则表示输入串有误,进行出错处理。 #i+i*i+i#的分析过程 如下表: 直观算符优先分析法的优缺点 优点:技术简单 缺点:适用范围小(四则运算,布尔运算等)。 4.2.2 算符优先分析法 1. 算符优先分析法是仿效四则运算的计算过程而构造的一种语法分析方法。 2、算符优先分析法的特点: 简单直观,特别方便于表达式分析,易于手工实现,是自下而上的归约过程,但未必按照句柄归约—按最左素短语规约,它不一定在句型的最左端,所以不是严格的自左至右的分析。 识别最左素短语时,没有用到非终结符,所以非终结符不必入栈。 3、算符优先分析法的关键: 规定算符(终结符)的优先级及结合性质。 例如:表达式文法: E ?E+E|E-E|E*E|E/E|(E)|i 对这个二义文法的句子可能会有好几个规范推导和归约,真正运算时也有几种不同结果, 若按算符优先顺序和结合规则的规定进行归约,句子的归约过程就是唯一的,运算结果也唯一。 注:对所有的终结符定义某种优先关系,借助这种关系找出可归约的串,进行归约,达到自下而上分析的目的。 2 算符优先关系表构造 算符优先关系表的构造算法 求FIRSTVT(P)的算法 (Ⅰ)对所有的P∈VN若有产生式 P→a… 或 P→Qa… 则a∈FIRSTVT(P); (Ⅱ)若a∈FIRSTVT(Q),且有产生式 P→Q… 则 a∈FIRSTVT(P); (Ⅲ)重复(Ⅱ),直至FIRSTVT(P)不再扩大为止。 现将算符文法的非终极符给出一种排序A1,…,Am;终极符给出一种排序a1,…,an;而aj(j=1,…,n)∈FIRSTVT(Ai)(i=1,…,m)可用布尔矩阵表示,布尔矩阵的格式 如下: (2)FIRSTVT(Ai)的矩阵构造算法 (Ⅰ)对所有的Ai(i=1,…,m),若有产生式 Ai→aj… 或 Ai→Akaj… ,1≤i,k≤m,1≤j≤n 则置M[Ai,aj]=“Y”,且符号对(Ai,aj)推S栈。 (Ⅱ) do { if (S栈!=空) { 将S栈顶符号对(Ai, aj) 逐出, 由符号对(Ai, aj)检查产生式集合,看是 否有形如 AK→Ai…的产生式,若有,且M[AK, aj]!=“Y”,则置M[AK ,aj]=“Y”
您可能关注的文档
- [文学]鲁迅研究.doc
- [文学研究]01恒温恒湿机技术服务手_完成_2007-11-6.pdf
- [文学研究]chap6-2011W-a.pdf
- [文学研究]EBSCO 数据库检索与利用.ppt
- [文学研究]专利文献基础知识及中国专利检索.ppt
- [文学研究]商务部特办子站绩效评估情况交流下载.ppt
- [文学研究]山东普通话水平测试题1-25注音.doc
- [文学研究]戏曲传播研究.pdf
- [文学研究]模块一 单片机内部资源 与最小系统.ppt
- [文学研究]社交礼仪培训.ppt
- 2025年线上职业技能培训跨境课程教学模式优化与教学效果评价报告.docx
- 2025年线上职业技能培训跨境课程开发与国际化教学资源整合策略研究报告.docx
- 2025年线上职业技能培训跨境课程开发与行业规范制定研究报告.docx
- 2025年线上职业技能培训跨境课程教学资源共建共享机制研究报告.docx
- 2025年线上职业技能实训平台与人工智能技术融合报告.docx
- 2025年线上职业技能培训跨境课程设计与实施效果评价报告.docx
- 2025年线上职业技能培训跨境虚拟实训基地行业规范与发展趋势报告.docx
- 2025年线上职业技能培训跨境课程需求与供给分析报告.docx
- 2025年线上职业技能实训平台个性化学习路径规划与推荐研究报告.docx
- 2025年线上职业技能培训跨境课程的教学资源开发与共享平台建设.docx
文档评论(0)