预测分析表的构造
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四章 4.1 语法分析器的功能 4.2 自上而下分析面临的问题 4.3 LL(1)分析法 分析法 4.4 递归下降分析程序构造 4.5 预测分析程序 4.6 LL(1)分析中的错误处理 分析中的错误处理
4.5 预测分析程序 4.5.2 预测分析表的构造
(1)
计算FIRST集 集 计算 (2) 计算 计算FOLLOW集 集 (3) 计算 计算SELECT集* 集
E E' T T' F
G': E → TE' E'→ +TE'|ε T → FT' T'→ *FT'|ε F → (E) | i 推出 FIRST FOLLOW ε 集 集 N (,i ),# Y + ,ε ),# N (,i +,),# Y * ,ε +,),# N (,i *,+,),#
SELECT集合 集合 E→TE' (,i E'→+TE' + E'→ε ),# T → FT' ( , i T'→ *FT' * T'→ ε +,),# F → (E) ( F→ i i
构造预测分析表 对每个终结符或"#", 用a表示 表示. 对每个终结符或 表示 • 若a∈SELECT(A→α) , ∈ 放入M[A,a]中 把A→α放入 放入 中 • 把所有无定义的 把所有无定义的M[A,a] 标上出错标记 或 标上出错标记(或 空白) 空白 • 产生式的左部可以不写入表中
E E' T T' F
表达式文法的预测分析表 i + * ( ) →TE' →TE' →+TE' →ε →FT' →FT' →ε →*FT' →ε →i →(E)
ቤተ መጻሕፍቲ ባይዱ
# →ε →ε
结论:一个文法G的预测分析表 的预测分析表M不含多 结论:一个文法 的预测分析表 不含多 重定义入口, 该文法为LL(1)文法 文法. 重定义入口 当且仅当 该文法为 文法
4.5 预测分析程序 4.5.2 预测分析表的构造
(1)
计算FIRST集 集 计算 (2) 计算 计算FOLLOW集 集 (3) 计算 计算SELECT集* 集
E E' T T' F
G': E → TE' E'→ +TE'|ε T → FT' T'→ *FT'|ε F → (E) | i 推出 FIRST FOLLOW ε 集 集 N (,i ),# Y + ,ε ),# N (,i +,),# Y * ,ε +,),# N (,i *,+,),#
SELECT集合 集合 E→TE' (,i E'→+TE' + E'→ε ),# T → FT' ( , i T'→ *FT' * T'→ ε +,),# F → (E) ( F→ i i
构造预测分析表 对每个终结符或"#", 用a表示 表示. 对每个终结符或 表示 • 若a∈SELECT(A→α) , ∈ 放入M[A,a]中 把A→α放入 放入 中 • 把所有无定义的 把所有无定义的M[A,a] 标上出错标记 或 标上出错标记(或 空白) 空白 • 产生式的左部可以不写入表中
E E' T T' F
表达式文法的预测分析表 i + * ( ) →TE' →TE' →+TE' →ε →FT' →FT' →ε →*FT' →ε →i →(E)
ቤተ መጻሕፍቲ ባይዱ
# →ε →ε
结论:一个文法G的预测分析表 的预测分析表M不含多 结论:一个文法 的预测分析表 不含多 重定义入口, 该文法为LL(1)文法 文法. 重定义入口 当且仅当 该文法为 文法