资源描述:
《编译程序是将高级语言书写的源程序翻译成低级语言程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、编译程序是将高级语言书写的源程序翻译成低级语言程序。一般包括词法分析,语法分析,中间代码生成,代码优化,目标代码生成五个部分,还应该包括表格管理和出错处理。其中中间代码生成和代码优化并不是每个程序都需要的。词法分析器用于识别单词,语法分析器用于发现源程序中的语法错误。代码优化一般都是在中间代码级上完成的,对中间代码的优化可以使目标程序的运行时间更短或所占的空间更少。第2讲第一章课程复习算符左操作数右操作数结果词法分析,语法分析,中间代码生成,代码优化,目标代码生成均要与符号表格管理打交道,他们各自把工作产生的一些信息存放在符号表里,都涉及到制造,查询,更新符号表格的工作,所以符号表
2、的存取方法直接影响着编译程序的效率。许多编译程序采用了一种与“3地址指令”非常相似的“四元式”作为中间代码,格式是:第2章文法和语言QU:1、A=B*2、A=B*C在C语言中的,以上两个符号串是否是合法的、正确的?QU:那么,Compiler如何对语法进行定义?是基于什么形式进行判断识别的?AN:形式语言中的文法是阐明语法的一个重要工具。2.1引言形式化方法:指用一整套带有严格规定的符号体系来描述问题的方法。<句子><主语><谓语><间接宾语><直接宾语><主语><代词><谓语><动词><间接宾语><代词><直接宾语><冠词><名词>……2.2符号串一、字母表和符号串二、
3、符号串的运算一、字母表和符号串1、字母表(Σ)Def:是元素的非空有穷集合。Note1:Σ中至少有一个元素;2:Σ中可以是字母、数字或其它符号。Ex1:C语言的字母表ΣC={保留字,字母,数字,专用符号,……}C语言=ΣC一组规则Ex2:汉语的字母表Σ汉={汉字,数字,标点符号,……}2、符号与符号串符号(字符):一个符号是字母表中的元素。符号串:是符号的有穷序列。EX1:Σ={a,b,c},则a,b,c,ab,ba都是Σ上的符号串。Note1:符号串的顺序很重要,如:ab≠ba;2:不含任何符号的符号串称为空串,用ε表示。符号串长度:|a|=1,|ab|=2,|ε|=0二、符号
4、串的运算1、连接设X和Y是符号串,则串XY称为它们的连接。EX:X=ABC,Y=CDFXY=ABCCDFYX=CDFABCNote:ε与X的连接或X与ε的连接=X2、集合的乘积设A、B是符号串的集合,则定义A与B的乘积为:AB={xyxA,yB}EX:A={a,b},B={c,d},则AB={ac,bc,ad,bd}A{}={}A=A{}{},{}=3、符号串的幂运算设X是符号串,则X0=注:X0≠1X1=XX2=XXXn=XX……X例、设X=abc,则X0=X1=abcX2=abcabcXn=abc……abcn个Xn个abc4、集合的幂运算设A是符号串的集合,则
5、定义:A0={}A1=AA2=AAAn=AA……A=An-1AEX:A={a,b},则有A0={ac,bc,ad,bd}A1=A={a,b}A2=AA={aa,ab,ba,bb}A3=A2A={aaa,aab,aba,abb,baa,bab,bba,bbb}5、集合的闭包(A+和A*)设A是任意一个集合,则定义:A+=A1∪A2∪A3…A=A0∪A+=A0∪A1∪A2……A的正闭包,其中无空串A的闭包,其中有空串EX:A={a,b},则有A+={a,b,aa,ab,ba,bb,aaa,aab,……}A=A0∪A+={,a,b,aa,……}2.3文法与语言的形式意义形式语言形
6、式语言的描述文法的形式定义语言的形式定义最左、最右推导归约递归一、形式语言<句子><主语><谓语><间接宾语><直接宾语><主语><代词><谓语><动词><间接宾语><代词><直接宾语><冠词><名词><代词>He<代词>me<冠词>a<动词>gave<名词>bookQU:句子Hegavemeabook语法上是否是正确的?“定义为”或“由……组成”<句子><主语><谓语><间接宾语><直接宾语><代词><谓语><间接宾语><直接宾语><谓语><间接宾语><直接宾语><动词><间接宾语><直接宾语><间接宾语><直接宾
7、语><代词><直接宾语><直接宾语><冠词><名词><名词>推导出同样还可推导出:HegaveHeabook,MegavemeabookMegaveHeabook句子主语谓语间接宾语直接宾语代词He动词gave代词me冠词a名词bookNote:1、形式语言是一种上下文无关的语言,是有别于自然语言的一种语