编译原理实用教程Tsu版电子教案

第1章编译系统概述翻译系统(编译系统)、操作系统、数据库管理系统是计算机的三大系统软件。1.1程序设计语言的发展机器语言汇编语言程序设计语言(高级语言)例计算表达式3*16+2的值,实现该计算的机器语言程序、汇编语言程序和高级语言(C语言)程序如下所示,该计算机的系统结构和汇编语言的使用方法详见本书第7章。机器语言程序汇编语言程序高级语言程序1.2基本术语解释㈠源语言和源程序㈡文本文件㈢目标语言和目标程序㈣二进制文件㈤翻译程序将源程序译成逻辑上等价的目标程序的程序,有二种翻译方式:编译和解释。①解释方式以源程序作为输入,输入一句,解释执行一句,不产生完整的目标程序,相应的翻译程序称为解释程序,工作方式如下图所示:解释、执行源解释程序结程interpreter果序输入数据②编译方式将源程序全部译为目标程序,该目标程序可在操作系统环境下直接执行,相应的翻译程序称为编译程序,工作方式如下图所示:源程序ASCII码二进制(整体未定位)二进制(整体定位)结果2203//16进制8210260261011000f000LoadR0,3MulR0,10//10表示16LoadR1,2AddR0,R1WriteR0Haltvoidmain(void)//C语言{cout<<3*16+2;}编辑程序Edit编译程序Compile连接程序Link装入运行Run输入数据1.3编译过程概述编译程序工作过程相当复杂,从数据加工的角度来看,可将其分成4个逻辑阶段,它们是:词法分析语法分析语义分析(中间代码产生)目标代码生成图示如下:源程序词法语法中间代码目标代码目标程序分析分析产生生成编译程序的结构基本上是按照这个流程来设计的。下面以算术表达式3+abc*128为例,来说明编译程序工作过程。㈠词法分析执行词法分析任务的程序称为词法分析器。任务:字符串形式的单词编码形式的单词内部码(二元式)依据:语言的构词规则①二元式(单词种别,单词值)单词种别:用整数码表示(为直观起见用字符表示),语法分析时用。单词值:在本书中用字符串表示,语义分析时用。当一个单词种别中可能有多个单词时,单词的值才有意义。为了便于输入处理,无意义的单词值用"NUL"表示。②二元式编码单词单词种别(字符形式)单词值(字符串形式)++NUL--NUL**NUL//NUL((NUL))NUL………标识符i字符串形符号名整常数x字符串形式数字实常数y字符串形式数字………经词分析,算术表达式3+abc*128的单词内部码(二元式)为:('x',"3")('+',"NUL")('i',"abc")('*',"NUL")('x',"128")㈡语法分析执行语法分析任务的程序称为语法分析器。任务:检查源程序的语法结构是否正确依据:语言的语法规则在语法分析时,算术表达式3+abc*128的语法结构应表示为x+i*x,语法分析器最终应识别出这是一个算术表达式,识别过程相当于建立一棵语法树。<算术表达式><算术表达式>+<项><项><项>*<因子><因子><因子>x(整常数)x(整常数)i(标识符)㈢语义分析执行语义分析任务的程序称为语义分析器或中间代码产生器。任务:建立符号表和常数表,记录源程序中标识符属性和常数值,根据语言的语义规定生成中间代码。依据:语言的语义内涵语义分析(中间代码产生)主要工作为:语义正确性检查和语义翻译。①语义正确性检查例:beginreala;integera;…………end语法正确,语义错误,除非语言允许变量性质可动态修改。②语义翻译1)说明语句的翻译将标识符及其属性填入符号表。2)执行语句的翻译根据不同语句的语义,生成逻辑上等价的中间代码。中间代码结构简单、意义明确的记号系统,非常接近机器指令,但又独立于具体机器。常用的中间代码有三元式和四元式。表达式3+abc*128可译成如下四元式:(*,abc,128,T1)(+,3,T1,T2)其中,abc表示标识符abc在符号表中入口;T1和T2是在翻译过程中由编译程序引入的临时变量;而128表示常数128在常数表中的地址。符号表符号表用于记录源程序中出现的标识符,一个标识符往往具有一系列的语义值,它包括标识符的名称、标识符的种属、标识符的类型、标识符值的存放地址等等。每个标识符在符号表中有一项记录,用于记录标识符的各种语义值,而在四元式中填写的是标识符在符号表中的记录地址,通常称为符号表入口。符号表的结构示意如下:内存地址符...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

确认删除?