- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
郑州大学 郑州大学 程序设计语言编译原理 张 淑 艳 zhang_shu_yan@163.com 温故知新 上下文无关文法 自上而下 最左推导 自下而上 最右推导 可归约串的寻找方式 算符优先分析 规范归约 算符文法/算符优先文法 两终结符的优先关系 两个函数FIRSTVT和LASTVT 优先关系表 ? 优先函数 三个概念:短语、直接短语、句柄 5.2.2 算符优先分析算法 素短语:是一个短语,它至少含有一个终结符,且除自身之外不包含其它的素短语。 最左素短语:处于句型最左边的素短语。 句型的一般形式: # N1a1N2a2……NnanNn+1 # 其中Ni为非终结符或ε,ai为终结符。 一个算法优先文法G的任何句型的最左素短语是满足如下条件的最左子串 Njaj…NiaiNi+1: aj-1 aj aj+1 … ai-1 ai ai+1 E?E+T | T T?T*F | F F?P ? F | P P?(E) | i 句型 #T+T*F+i# 短语: T, T*F, T+T*F , i , T+T*F+i , 素短语: i, T*F 最左素短语: T*F E E + T E + T T * F T F i P 5.2.2 算符优先分析算法 k:=1; S[k]:= ‘#’ REPEAT …… UNTIL a= ‘#’ 1 # 5.2.2 算符优先分析算法 REPEAT 把下一个符号读入a中; IF S[k]∈VT THEN j:= k ELSE j:=k-1; WHILE S[j] a DO //归约 { REPEAT Q:= S[j]; IF S[j-1]∈VT THEN j:=j-1 ELSE j:=j-2 UNTIL S[j] Q; 把S[j+1]...S[k] 归约为某个N; k:=j+1; S[k]:=N; } IF S[j] a OR S[j] a //移进 BEGIN k:=k+1; S[k]:=a END ELSE ERROR UNTIL a= ‘#’ j指向栈顶或次栈顶的终结符 寻找可归约串 四个动作 归约 当栈顶终结符 当前输入符号时,在栈中寻找最左素短语进行归约 移进 当栈顶终结符 或 当前输入符号时 接受 当栈顶终结符 当前输入符号‘#’时,分析成功结束 出错 当栈顶终结符与当前输入符号没有优先关系时 5.2.2 算符优先分析算法 aj-1 aj aj+1 … ai-1 ai ai+1 E?E+T | T T?T*F | F F?P ? F | P P?(E) | i 例 : 写出句型 #T+T*F+i# 的算符优先分析过程 先得出算符优先关系表 + * ? i ( ) # + * ? i ( ) # 算符优先分析 归约过程 步骤 符号栈 优先 关系 剩余 输入串 动作 1 # 2 3 4 5 6 7 8 9 10 11 12 移进 #T +T*F+i# 移进 #T+ T*F+i# 移进 #T+T #T+T* F+i# #T+T*F +i# 归约 T*F T+T*F+i# *F+i# 移进 移进 #T+N +i# 归约 T+N #N +i# 移进 #N+ i# 移进 #N+i # 归约 i #N+N # 归约 N+N #N # 接受 算符优先分析 语法树的框架 N + N i N + N T * F T 优先关系表 算符优先分析 语法树的框架 N + N i N + N T * F T E E + T E + T T * F T F i P 语法树 算符优先分析过程跳过了对单非终结符的归约 所以: 算符优先分析过程不是规范归约 5.2.2 算符优先分析算法 例2: 写出算符优先分析过程和规范归约分析过程 E?E+T | T T?T*F | F F?(E) | i 输入串 #i+i# 5.2.2 算符优先分析算法 求出算符优先关系表 + * i ( ) # + * i ( ) # E?E+T | T T?T*F | F F?(E) | i 输入串 #i+i# 5.2.2 算符优先分析算法 算符优先分析 归约过程 步骤 符号栈 优先 关系 剩余 输入串 动作 1 # i+i# 2 3 4 5 6 7 移进 #i +i# 归约 i #N +i# 移进 #N+ i# 移进 #N+i # 归约 i #N+N # 归约 N+N
您可能关注的文档
- Oracle数据库-李翠霞 10_第06章 数据库安全管理.ppt
- Oracle数据库-李翠霞 13_第07章 数据库对象管理.ppt
- Oracle数据库-李翠霞 15_第09章 PLSQL语言基础.ppt
- Oracle数据库-李翠霞 Oracle_试卷A.doc
- Oracle数据库-李翠霞 oracle期末考试试题及答案.doc
- Oracle数据库-李翠霞 oracle期末考试题及答案.doc
- Oracle数据库-李翠霞 oracle期末考试题目(A)+答案.doc
- Oracle数据库-李翠霞 oracle数据库期末考试试题及答案.doc
- Oracle数据库-李翠霞 ORACLE数据库期末考试题目及答案.doc
- Oracle数据库-李翠霞 第10章习题答案.ppt
文档评论(0)