全文预览

《编译原理》.doc

上传者:梦溪 |  格式:doc  |  页数:11 |  大小:0KB

文档介绍
个过程的反复调用中,始终传递fsys变量的值,保证可以在出错的情况下跳过出错的符号,使分析过程得以进行下去。逻辑表达式的处理: 首先判断是否为一元逻辑表达式:判奇偶。如果是,则通过调用表达式处理过程分析计算表达式的值,然后生成判奇指令。如果不是,则肯定是二元逻辑运算符,通过调用表达式处理过程依次分析运算符左右两部分的值,放在栈顶的两个空间中,然后依不同的逻辑运算符,生成相应的逻辑判断指令,放入代码段。判断单词合法性与出错恢复过程分析: 本过程有三个参数,s1、s2为两个符号集合,n为出错代码。本过程的功能是:测试当前符号(即sym变量中的值)是否在s1集合中,如果不在,就通过调用出错报告过程输出出错代码n,并放弃当前符号,通过词法分析过程获取一下单词,直到这个单词出现在s1或s2集合中为止。这个过程在实际使用中很灵活,主要有两个用法: 在进入某个语法单位时,调用本过程,检查当前符号是否属于该语法单位的开始符号集合。若不属于,则滤去开始符号和后继符号集合外的所有符号。在语法单位分析结束时,调用本过程,检查当前符号是否属于调用该语法单位时应有的后继符号集合。若不属于,则滤去后继符号和开始符号集合外的所有符号。通过这样的机制,可以在源程序出现错误时,及时跳过出错的部分,保证语法分析可以继续下去。七、此编译器的缺点和不足之处1、布尔类型中存在一些错误。例如:在布尔类型运算时,只能进行较简单的变量和表达式的编译和运行。2、数组定义过程中考虑不全面。只能编译数组长度确定的一维数组,数组长度由表达式来确定时,不能编译成功。3、错误恢复机制不够完善。由于时间和能力有限,此编译器的错误恢复机制只针对有限的错误进行检测,从而导致所能编译的程序非常有限。4、本程序只适用于比较简单的程序。由于PL/0语言的文法的局限性和编译器各部分之间较弱的融洽,导致该编译器只能编译较简单的程序。八、课程设计总结

收藏

分享

举报
下载此文档