欢迎来到天天文库
浏览记录
ID:49202905
大小:450.00 KB
页数:58页
时间:2020-02-01
《第9章 小型编译程序介绍.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第九章小型编译程序介绍9.1小型编译程序结构9.2小型编译程序关于高级语言的规定9.3小型编译程序关于单词的内部定义9.4小型编译程序的LR分析表9.5小型编译程序执行过程9.1小型编译程序结构编译程序的工作贯穿于从输入源程序开始到输出目标程序为止的整个过程,是非常复杂的。一般来说,整个过程可以划分成五个阶段:词法分析、语法分析、中间代码生成、优化和目标代码生成。第一阶段为词法分析。词法分析的任务是输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个单词符号,如保留字、标识符、常数、算符和界符等。第二阶段为语法分析。语法
2、分析的任务是在词法分析的基础上,根据语言的语法规则(文法规则)把单词符号串分解成各类语法单位(语法范畴),如“短语”、“子句”、“句子”、“程序段”和“程序”。通过语法分析确定整个输入串是否构成一个语法上正确的“程序”。第三阶段为中间代码产生。按语言的语义将语法分析出来的语法单位翻译成中间代码。一般而言,中间代码是一种独立于具体硬件的记号系统,但它与计算机的指令形式有某种程度的接近,或者能够比较容易地把它变换成计算机的机器指令。常用的中间代码有四元式、三元式、间接三元式和逆波兰记号等。图9-1编译程序结构示意第四阶段为优化。优化
3、的任务在于对前阶段产生的中间代码进行加工变换,以期在最后阶段能产生出更为高效(节省时间和空间)的目标代码。第五阶段为目标代码生成。这一阶段的任务是把中间代码(或经优化处理之后)变换成特定机器上的绝对指令代码或可重新定位的指令代码或汇编指令代码。这一阶段实现了最后的翻译,它的工作有赖于硬件系统结构和机器指令含义。上述编译过程的五个阶段是编译程序工作时的动态特征,编译程序的结构可以按照这五个阶段的任务分模块进行设计。编译程序的结构示意如图9-1所示。我们设计的小型编译程序包含除优化以外的其余各阶段。9.2小型编译程序关于高级语言的规
4、定高级语言程序具有四种基本结构:顺序结构﹑选择结构﹑循环结构和过程。为了便于掌握编译的核心内容,突出重点,简化编译程序的结构,同时又涵盖高级语言程序的基本结构,我们选取赋值语句﹑if语句和while语句作为前三种结构的代表,略去了过程结构。实际上,上述三种语句已经基本满足了高级语言的程序设计。因此,我们仅考虑由下面产生式所定义的程序语句:S→ifBthenSelseS︱whileBdoS︱beginLend︱AL→S;L︱SA→i:=EB→B∧B︱B∨B︱¬B︱(B)︱iropi︱iE→E+E︱E*E︱(E)︱i其中,各非终结符
5、的含义如下:S——语句;L——语句串;A——赋值句;B——布尔表达式;E——算术表达式。各终结符的含义如下:i ——整型变量或常数,布尔变量或常数;rop——六种关系运算符的代表;; ——起语句分隔符作用;:= ——赋值符号;¬——逻辑非运算符“not”;∧ ——逻辑与运算符“and”;∨ ——逻辑或运算符“or”;+ ——算术加运算符;* ——算术乘运算符;( ——左括号;) ——右括号。注意,六种关系运算符分别为<:小于<=:小于等于<>:不等于>:大于>=:大于等于=:等于关于表达式的运算,我们规定由高到低优先顺序为算术运
6、算、关系运算、布尔运算;并且服丛左结合规则。算术运算符优先级的顺序依次为“()”﹑“*”﹑“+”;布尔运算符优先级的顺序依次为“¬”﹑“∧”﹑“∨”;六个关系运算符优先级相同。我们规定的程序是由一条语句或由begin和end嵌套起来的复合语句组成的,并且规定在语句末要加上“#~”表示程序结束。下面给出的是符合规定的程序示例:beginA:=A+B*C;C:=A+2;whileABdoifM=NthenC:=DelsewhileA<=DdoA:=Dend#~9.3小型编译程序关于单词的内部定义由于
7、我们规定的程序语句中涉及单词较少,故在词法分析阶段忽略了单词输入错误的检查,而将编译程序的重点放在中间代码生成阶段。词法分析器的功能是输入源程序,输出单词符号。我们规定输出的单词符号格式为如下的二元式:(单词种别,单词自身的值)我们对常量,变量,临时变量,保留关键字(if、while、begin、end、else、then、do等),关系运算符,逻辑运算符,分号,括号等,规定其内部定义如表9-1所示。表9-1关于单词的内部定义9.4小型编译程序的LR分析表1.算术表达式的LR分析表算术表达式文法G[E]如下:E->E+E︱E*E
8、︱(E)︱I将文法G[E]拓广为文法G′[E]:(0)S′→E(1)E→E+E(2)E→E*E(3)E→(E)(4)E→i由此得到算术表达式的SLR(1)分析表如表9-2所示。表9-2算术表达式的SLR(1)分析表2.布尔表达式的LR分析表布尔表达式的文法如下:
此文档下载收益归作者所有