- 10
- 0
- 约1.44万字
- 约 42页
- 2018-10-19 发布于山东
- 举报
第4章
自顶向下的分析
主要内容
自顶向下分析概述
递归下降分析算法
First 集合和Follow集合
LL(1)分析
TINY语言的递归下降分析程序
自顶向下分析程序中的错误校正
• 自顶向下(top-down )的分析算法从文法开始符
号开始,不断通过最左推导进行推导,直到推导
出所要分析的符号串为止。
G[E]={E→E+T|T,
T→T*F|F,
F→(E)|i },
符号串i+i*i 自顶向下的分析过程:
• 自顶向下的分析程序有两类:
(1)预测分析程序(predictive parser)试图利用超前
查看一个或多个记号来预测出该选择哪条规则。
(2 )回溯分析程序(backtracking parser)则试着分析
所有的可能输入,当一种可能失败时就要求输入中备份任
意数量的字符。
回溯分析程序的特点:功能强大,但非常慢,一般都在指
数的数量级,所以对于实际的编译器并不合适。
两类预测分析算法:
(1)递归下降分析(recursive-descent parsing)很常
用,且最适合于手写的分析程序最为适合。
(2 )LL(1)分析(LL(1) parsing)中第1个“L”指由左向
右地处理输入;第2个“L”指利用最左推导进行分析;括
号中的数字1仅向前查看一个符号进行预测分析。LL(k)分
析利用向前查看k个符号进行预测分析。
主要内容
自顶向下分析概述
递归下降分析算法
First 集合和Follow集合
LL(1)分析
TINY语言的递归下降分析程序
自顶向下分析程序中的错误校正
• 递归下降分析算法:将一个非终结符A 的文法规
则看作将识别A 的一个过程的定义。
• A 的文法规则的右边指出这个过程的代码结构:
一个规则中的终结符和非终结符序列分别与相匹
配的输入和对其他过程的调用相对应,而选择则
与在代码中的替代情况(case(switch)语句和if
语句)相对应。
• 试编写分析如下文法所对应任意串(如acdd )的
分析程序。
G[S]={S→aA|bB
A→cdA|d
B→efB|f}
• 每个非终结符号对应一个分析函数
非终结符号S对应的分析函数
void S(void)//规则S→aA|bB
{
if (token==‘a’)
{
match(‘a’);//匹配函数
A( );
}
else if (token==‘b’)
{
match(‘b’);//匹配函数
B( );
}
else error( );//出错处理函数
} //S
非终结符号A对应的分析函数
void A(void)//规则A→cdA|d
{
if (token==‘c’)
{
match(‘c’);//匹配函数
match(‘d’);//匹配函数
A( );
}
else if (token==‘d’)
{
match(‘d’);//匹配函数
}
else error( );//出错处理函数
} //A
非终结符号B对应的分析函数
void B(void)//规则B→efB|f
{
if (to
您可能关注的文档
最近下载
- 2026年开工第一课主题.ppt
- 普通纪念币防伪课件.pptx VIP
- ASTM A388A388M-2018钢锻件超声检验标准操作方法中文版.pdf VIP
- 艺考真题|2020年中传文史哲初试真题原卷放送(附答案).doc VIP
- 毛石混凝土挡土墙施工方案.docx
- 八年级英语上册全册课课练.doc VIP
- POEMS综合征课件完整版.ppt VIP
- NB-T11409-2023水电工程费用构成及概(估)算费用标准.docx VIP
- 2026年春季学期学校德育工作计划.docx VIP
- 深度解析(2026)《TBT 3474.2-2018机车车辆螺纹连接软管 第2部分:橡胶软管》.pptx VIP
原创力文档

文档评论(0)