按照语法树的建立方法,可把语法分析方法分成两类: 自上而下分析法 自下而上分析法 LL(1)文法 问题:是否每个非终结符A的多个候选式不存在公共左因子,文法也不含左递归,就可以进行确定的自上而下的语法分析呢? 答:不能。 如文法对输入串dbc进行分析。 LL(1)文法 结论:并非所有的文法都能进行确定的自上而下的分析。 新问题:对于P→α1|α2|…|αn,当前输入串$:…αi…。能否有一种办法,只根据当前的αi就能在α1、α2、…、αn中准确地选择一个候选式进行匹配? 先给出两个定义:First集、Follow集。 算法4.1 计算非终结符A的First集。 例4.6 求下列文法中各个非终结符和各个候选式的First集。 基于LL(1)文法的语法分析程序实现 有两种确定的自上而下的语法分析方法: 递归下降的语法分析方法 预测分析方法(也称LL(1)分析方法) 预测分析过程举例 例4.11 使用表4.1对输入串i+i*i 进行语法分析。 程序结构与伪代码 若非终结符U的产生式形如U→u1|u2|…|un,其递归子程序的原型如下: U( ){ ch=当前输入符号; if(ch∈First(u1)) 调用u1( ); else if(ch∈First(u2)) 调用u2( ); ┆ else if((ε∈First(U))(ch∈Follow(U))); else error( ) ; } 代码说明:P87 对于U的每个右部ui=x1x2…xn的处理架构如下: ui( ) { 处理x1子程序; 处理x2子程序; ┆ 处理xn子程序; } 处理xi子程序 { if (xi是终结符) match(ch); else xi( ) } void match(token ch ) { if (xi==ch) //与当前输入符号相同? { ch=getnexttoken( ); // 取下一个符号 return; } else error( ); //不匹配,进行出错处理 } 例4.10 编写例4.4中的文法G4.2对应的递归下降分析程序。 (解答看教材87页) E ?TEE ? +TE |εT ? FTT ? *FT |εF ?(E) |i 实例:写IF语句的递归下降的分析程序 方法:在给定的语法定义中选择与IF语句有关的产生式,再对每个非终结符写一个函数。 if语句 ::= if 布尔表达式 then 执行句 布尔表达式 ::= 变量关系符变量 关系符 ::= | | | = | = | = 执行语句 ::= 变量:=整数 变量 ::= 标识符 整数 ::= 数字 | 整数 数字 数字::=0|1|2|3…|9 对应于非终结符if语句,有产生式 if语句 ::= if 布尔表达式 then 执行句 则if语句对应的函数可描述为: ifs() { token =getnexttoken(); If (token !=“if”) error; token = getnexttoken(); bool_expr(); token = getnexttoken(); If (token !=“then”) error; token = getnexttoken(); exe_sentence(); } 相应于非终结符布尔表达式,有产生式: 布尔表达式 ::= 变量关系符变量 布尔表达式的函数可描述为: bool_expr() { gettoken(); handle_varible(); Getnexttoken(); If (token not in ! ( | | | = | = | = ) error; Getnexttoken(); handle_varible(); } 练习:请写出for语句的递归下降的分析程序: for语句::= for 标识符:=算术表达式1 to 算术表达式2 do 执行句 算术表达式::=算术表达式±项|±项|项 项::= 项*因子|项/因子|因子 因子::=算术量 算术量::=标识符|整数 执行语句 ::= 变量:=整数 执行语句 ::= for语句 …………. 递归分析程序的优缺点 优点:实现思想简单
您可能关注的文档
- 《爸爸的花儿落了上课课件.ppt
- 《白鹅》修改版.ppt
- 《暴利零营销模式》精彩文摘.doc
- 《必修一》第三章-几种重要的金属化合物.ppt
- 《病是教养出来的》分享.doc
- 《陈涉世家》(课件).ppt
- 《城乡规划法》课件.ppt
- 《程序设计与问题求解》实验指导书(2015-11-26).doc
- 《创新能力培养与提高》题库答案.doc
- 《安全生产事故案例分析》科目知识要点.doc
- 小区绿化施工协议书.docx
- 墙面施工协议书.docx
- 1 古诗二首(课件)--2025-2026学年统编版语文二年级下册.pptx
- (2026春新版)部编版八年级道德与法治下册《3.1《公民基本权利》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《4.3《依法履行义务》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.2《按劳分配为主体、多种分配方式并存》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.1《公有制为主体、多种所有制经济共同发展》PPT课件.pptx
- 初三教学管理交流发言稿.docx
- 小学生课外阅读总结.docx
- 餐饮门店夜经济运营的社会责任报告(夜间贡献)撰写流程试题库及答案.doc
原创力文档

文档评论(0)