- 1、本文档共124页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
对每个a(包括#)∈VT,对应两个符号fa,ga。 把所建立的符号尽可能划分为许多组: 若a b,则fa和gb就在一组; 若a b,c b,则fa和fc同组; 建立一个有向图,其结点是上一步中找出的组。 对于任何a和b,若 a b,画 fa→gb 弧,意味着f(a)g(b); 若 a b,画 gb→fa 弧,意味着f(a)g(b)。 如果上一步结果构成环,则f,g不存在; 否则 f(a)= 从fa组开始的路径和; g (b) = 从gb组开始的路径和。 例 6.8 利用上述分析表,假定输入串为 i * i + i ,描述LR分析器的工作过程。 二义文法的应用 任何二义文法决不是一个LR文法,因而也不是SLR或LALR文法,这是一条定理。 某些二义文法是非常有用的。可采用一定的方式对文法加以限制,保证每个句子只有一颗分析树。 二义性文法的应用 一、使用优先级和结合规则来解决分析动作的冲突 二义文法的应用 文法G7.1有两个明显的好处: 1)如需改变算符的优先级或结合规则无需改变文法自身; 2)文法的分析表所包含的状态肯定比G7.2所包含的状态要少得多。 下面将讨论如何使用LR分析的基本思想,凭借一些其他条件,来分析而已文法所定义的语言。 二义文法的应用 二义文法的应用 在I1,I7,I8中都存在冲突,用任何一种方法解决都会产生冲突。 因此:可用+,*优先级结合LR分析法解决。 规定*优先高于+; *,+是左结合。 故: I7中,*优先高于+,则遇*移入,其它是归约,+左结合 I8中,*优先高于+,则遇*归约,同时*左结合 二义文法的应用 二、悬空else的二义性 二义文法的应用 二义文法的应用 在I4中存在冲突,用任何一种方法解决都会产生冲突。 因此: 规定else必须有if配对。 故: 此处是将e移进。 分析表的自动生成 下面介绍一个编译程序编写系统YACC的基本思想。 YACC能接受用户提供的文法(可能二义)和优先级、结合性质等附加信息,自动产生这个文法的LALR分析表。 思想: 对用户提供的文法,YACC首先产生它的LALR(1)状态,然后试图为每个状态选择适当的分析动作。 如果不存在冲突,无需使用其它附加信息。 如果文法是二义的,则附加信息必不可少。 分析表的自动生成 YACC解决移进-规约冲突的基本方法是赋予每个终结符和产生式一 定的优先级。 假定面临输入符号a时碰到移进和规约(用A?α)的冲突,就比较终结符a和产生式A?α的优先级。若A?α的优先级高,则作规约,否则作移进。 如果对产生式A?α不特别赋予优先级,就认为A?α和出现在α中的最右终结符具有相同的优先级。 分析表的自动生成 我们可以采用如下写法,把一个文法连同它的优先信息提供该YACC: TERMINAL e //优先级高的在前面 TERMINAL i //i的优先级低于e S?iSeS //列出文法的所有产生式 S?iS S?a 分析表的自动生成 也可以通过引进一个优先级低于e的哑终结符的办法,直接指明产生式S?iS的优先级: TERMINAL e TERMINAL dummy //哑终结符dummy的优先级低于e S?iSeS S?iS PRECEDENCE dummy // PRECEDENCE //意味着“优先级等于” S?a 分析表的自动生成 优先级和结合性质的规定解决了冲突。 实际上,左结合意味着实行规约,右结合意味着实行移进。 有些算符不允许结合,这可以用YACC的NONASSOC给以特别指明。 YACC的专用字:LEFT—左结合,TIGHT—右结合,NONASSOC—禁止结合。 TERMINAL +, - LEFT LR分析表的安排 建立一个以状态为下标的一维数组。 它的每一个元素是一个指示器,指向某一ACTION行。 每个ACTION行自身是一个一维数组,以终结符为下标。 对GOTO标中的每个非终结符安排一张包含二元式(当前状态,下一状态)的表。 LR语法分析的错误恢复 在LR分析中,若输入符号既不能移入栈内,栈顶元素也不能归约,就意味着发现错误。LR语法分析器立即给出错误报告。 LR(1)(规范LR)在报告错误前不进行任何无效归约; SLR,LALR则可能会执行几步归约,但不会把出错点的输入符号移入栈内。 LR语法分析的错误恢复 处理办法: 1.使用插入、删
您可能关注的文档
- 石河子大学水利建筑工程学院房地产开发与投资分析课件第八章 房地产开发合同.ppt
- 石河子大学水利建筑工程学院房地产开发与投资分析课件第二章 房地产开发项目可行性研究.ppt
- 石河子大学水利建筑工程学院房地产开发与投资分析课件第九章 房地产开发项目的工程建设管理.ppt
- 石河子大学水利建筑工程学院房地产开发与投资分析课件第六章 房地产开发项目规划设计及其评价.ppt
- 石河子大学水利建筑工程学院房地产开发与投资分析课件第七章 房地产开发工程招标与投标.ppt
- 石河子大学水利建筑工程学院房地产开发与投资分析课件第三章 房地产开发用地的取得.ppt
- 石河子大学水利建筑工程学院房地产开发与投资分析课件第十二章 物业管理.ppt
- 石河子大学水利建筑工程学院房地产开发与投资分析课件第十三章 房地产开发项目策划.ppt
- 石河子大学水利建筑工程学院房地产开发与投资分析课件第十一章 房地产销售.ppt
- 石河子大学水利建筑工程学院房地产开发与投资分析课件第十章 房地产开发项目市场推广.ppt
最近下载
- API Spec7-1 - 2006旋转钻柱构件规范 【中文版】.pdf
- 蒸汽管道报检资料全.doc
- AQ 1064-2008 煤矿用防爆柴油机无轨胶轮车安全使用规范.pdf VIP
- 康复科绩效工资考核分配方案.pptx
- 【云合数据-2025研报】2024年长剧集网播年度观察.pdf
- 铷铯及其化合物,中国前8强生产商排名及市场份额调研数据.docx
- 面瘫(面神经麻痹)中医临床路径.pdf
- 面瘫(周围性面神经炎)-中医诊疗指南-等级评审.pdf
- 众泰-T600-产品使用说明书-T600 2.0T 豪华型DCT-JNJ6460QT-T600车系使用手册20131201.pdf
- (2025新版本)人教版一年级数学下册全册教案.doc
文档评论(0)