收藏 分享(赏)

编译原理4.4-递归下降分析程序构造.ppt

上传人:hyngb9260 文档编号:4218929 上传时间:2018-12-16 格式:PPT 页数:18 大小:70KB
下载 相关 举报
编译原理4.4-递归下降分析程序构造.ppt_第1页
第1页 / 共18页
编译原理4.4-递归下降分析程序构造.ppt_第2页
第2页 / 共18页
编译原理4.4-递归下降分析程序构造.ppt_第3页
第3页 / 共18页
编译原理4.4-递归下降分析程序构造.ppt_第4页
第4页 / 共18页
编译原理4.4-递归下降分析程序构造.ppt_第5页
第5页 / 共18页
点击查看更多>>
资源描述

1、第四章,4.1 语法分析器的功能 4.2 自上而下分析面临的问题 4.3 LL(1)分析法 4.4 递归下降分析程序构造 4.5 预测分析程序 4.6 LL(1)分析中的错误处理,4.4 递归下降分析程序构造,前提: 文法满足LL(1)文法 实现思想: 每个非终结符对应一个递归过程,约定的数据结构和函数,IP: 输入串指示器 SYM: IP当前所指的输入符号 ADVANCE: 使IP指向下一输入符号 getsym , NextCh ERROR: 出错诊察处理程序,p74,文法 (4.2) E TEE +TE|T FTT *FT|F (E) | i,E TE,PROCEDURE E; BEGIN

2、T;E END,T FT,PROCEDURE T; BEGINF;T END,E +TE|,PROCEDURE E; IF SYM=+ THEN BEGINADVANCE;T;E END,T *FT|,PROCEDURE T; IF SYM=* THEN BEGINADVANCE;F;T END,F (E) | i,PROCEDURE F; IF SYM= i THEN ADVANCE ELSEIF SYM=( THENBEGINADVANCE;E;IF SYM=) THEN ADVANCE;ELSE ERRORENDELSE ERROR,基本架构(1) Uu1 | u2 | un,U( )

3、if (sym SELECT(Uu1) ) 处理u1else if (sym SELECT(Uu2) ) 处理u2 else ERROR ,补充,基本架构(2) 对于U的每个右部ui=x1x2xn,处理ui处理x1的程序;处理x2的程序; 处理xn的程序;如果右部为, 则不处理,基本架构(3) 对于右部中的每个符号xi,xiVTif(xi = =sym) ADVANCE; return; else ERRORxiVNxi( ) /直接调用相应的过程,基本架构(4) sx*,while symselect (sx)do x,补充例: 用递归下降分析程序进行句型分析,G: SbAABaA|Bab

4、输入串 baba#,SELECT(SbA) = bSELECT(ABaA)= a SELECT(A)= #SELECT(Bab) = a,G: SbAABaA|Bab 输入串 baba#,S,主程序,program parser begingetsym; S;If sym= #Successelsefail end,SbA,procedure S beginif sym in SELECT(SbA) /b if sym = b getsym; Aelse errorelse error end,ABaA|,procedure A beginif sym in SELECT(ABaA) /aBif sym = agetsym; A;else errorelse if sym in SELECT(A) /#else error end,Bab,procedure B beginif sym in SELECT(Bab) /aif sym = a getsym; if sym = bgetsym; else errorelse errorelse error end,*EBNF和语法图 p75,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报