- 6
- 0
- 约6.7千字
- 约 20页
- 2018-10-19 发布于山东
- 举报
主要内容
自顶向下分析概述
递归下降分析算法
First 集合和Follow集合
LL(1)分析
TINY语言的递归下降分析程序
自顶向下分析程序中的错误校正
• TINY语言的递归下降分析程序
自学并运行相关程序
主要内容
自顶向下分析概述
递归下降分析算法
First 集合和Follow集合
LL(1)分析
TINY语言的递归下降分析程序
自顶向下分析程序中的错误校正
• 自顶向下分析程序中的错误校正
分析程序对于语法错误的反应通常是编译器使用
中的主要问题。在最低限度之下,分析程序应能
判断出一个程序在语句构成上是否正确。
分析程序(识别程序recognizer)的工作:若程
序包括了一个语法错误,则分析必须指出某个错
误的存在;反之若程序中没有语法错误,则分析
程序不应声称有错误存在。
出错的要求:
(1)尽可能快地判断出错误的发生。
(2 )从出错的地方恢复分析,以便找到尽可能多
的真实错误。
(3 )避免出现错误级联问题(error cascade
problem),即不会产生一个冗长的虚假的出错
信息。
(4 )避免错误的无限循环
递归下降分析程序中的错误校正的标准形式叫做
应急方式(panic mode)。错误处理器尽可能地
试图在大量的记号中找到一个恢复分析的位置。
应急方式还具有一个优点:它能真正保证在错误
校正时,分析程序不会掉到无穷循环之中。
应急方式的基本机制是为每个递归过程提供一个
额外的由同步记号(synchronizing token )组
成的参数。在分析处理时,作为同步记号的记号
在每个调用发生时被添加到这个集合之中。若遇
到错误,分析程序就向前扫描(scan ahead ),
并一直丢弃记号直到看到输入中记号的一个同步
集合为止,并从这里恢复分析。在做这种快速扫
描时,通过不生成新的出错信息来(在某种程度
上)避免错误级联。
在进行该错误校正时需要作出一个重要的判断:在分析的
每步中需添加哪些记号。
一般地,Follow集合是这样的同步记号中的重要一员。
Follow集合也可用来使错误处理器避免跳过开始新的主要
结构的重要记号 (如语句或表达式)。
First集合也很重要,这是因为它们允许递归下降分析程
能在分析的早些时候检测出错误,它对于任何错误校正总
是有用的。
• 总结
设非终结符A 的产生式为:AE
则它相应的递归子程序为:
void A ()
{
E ();
}
设语法分析程序调用过程A ,并且当进入过程A 时当前符
号token不是A 的开始符,这时出现语法差错。
为了继续进行语法检查,应向前继续读符号,直到遇到A
的开始符为止。
然后,执行E继续进行检查。
但是,如果用户程序中在此处缺少A 的开始符,那么向前
读符号将会漏检太多的符号。
因此,在向前读符号时,遇到A 的后继符或正在活动的那
些过程 (目前调用A过程的过程以及各个直接外层相应的
过程)相应的非终结符的后继符时也应停止读入。
在这种情形下,应放弃当前语法单位的检查,即不作任何
动作就退出过程A ,进而退出那些正在活动的过程而从该
后继符 (它是下一语法单位的开始符)起进行下一语法单
位的检查。
这就是说,在进入过程A 时,应该先调用检测头符号的过
程。
void checkinput ( firstset, followset ) ;
{
if not ( token in firstset )
{ error( ) ;
scanto ( firstset ∪followset ) ;
}
}
firstset是头符号集合,followset是正在活动的那些过程
相应的非终结符的后继符集合。scanto是表示向前读符
号,直到所读符号属于集合firstset ∪followset为止。
void scanto ( synchset ) ;
{
while not ( token in synchset ∪{ $ })
getToken( ) ;
}
注意:这里的$指的是输入的结尾(EOF)。
从前面的讨论看到,当向前跳到的符号属于A 的后继符集
或正在活动的那些过程相应的非终结符的后继符
您可能关注的文档
最近下载
- 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)