苏州大学-苏州大学自然语言处理试验室.PPT

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
苏州大学-苏州大学自然语言处理试验室

* 大家有哪些常用的编程语言 * * 为什么要进行后缀表示 后缀表示-stack 三地址码-只有一个操作符 * * 一个赋闲的程序员+一段意外的假期+一台被淘汰的设备,Unix就这样诞生了。 那个赋闲的程序员,叫做Ken Thompson。照片上看上去很成熟,其实年龄不大,发明Unix的时候只有26岁。 1969年,他参与的研究项目Multics被贝尔实验室取消了,他顿时就无事可干了。 正好那年夏天,他的老婆带着孩子回娘家了,只留下他一个人在新泽西。反正空闲时间多得很,他就用了一个月的时间,在家里写了一个小型版的Multics。 但是,贝尔实验室没有机器可以让他测试,因为那时计算机太贵了,不可能用于一个年轻程序员的业余项目。Ken Thompson没有办法,只好在一台型号为PDP-7的小型机上测试自己的软件。这台小型机因为性能太差,所以没人去用,就被闲置在一边了。 虽然PDP-7叫小型机,其实也是庞然大物,需要一间房间才能放得下。 PDP-7在1965年上市的时候,价格是72000美元,已经属于超级便宜的计算机了。第一版的Unix就是在这种机器上诞生的,下面就是一张Ken Thompson和他的同事当时的工作照。 * * * 1.2 编译器结构 代码优化 改进代码,以产生执行较快的机器代码。 * 1.2 编译器结构 目标代码生成 生成可重定位的机器代码或汇编码 为源程序所用的每个变量选择存储单元,并且把中间代码翻译成等价的机器指令序列。 关键问题是寄存器分配。 * 1.2 编译器结构 符号表管理 编译器的一项重要工作是记录源程序中使用的标识符,并收集每个标识符的各种属性。 这些属性提供标识符的存储分配、类型和作用域信息。 如果是过程标识符,还有参数的个数和类型、参数传递方式和返回值类型。 符号表是为每个标识符保存一个记录的数据结构,记录的域是标识符的属性。 该数据结构允许我们迅速地找到一个标识符的记录,在此记录中存储和读取数据。 * 1.2 编译器结构 符号表管理 实例 语句 position = initial + rate * 60 词法分析器发现源程序的标识符时,把该标识符填入符号表。但是,词法分析期间不能确定一个标识符的属性。 例如: 其余的阶段把标识符的信息填入符号表,然后以不同的方式使用这些信息 * 1.2 编译器结构 出错管理 每个阶段都可能发现源程序的错误。发现错误后,该阶段必须处理此错误,使得编译可以继续进行,以便进一步发现源程序的其他错误。 词法分析:当前被扫描的字符串不能形成语言的词法记号。 语法分析:记号流违反语言的语法规则。 语义分析:编译器试图找出语法正确但对所含的操作来说是无意义的结构,如相加的两个标识符,其一是数组名,另一个是过程名。 * 1.3 编译系统 除了编译器外,还需要一些其他工具的帮助,才能得到可执行的目标程序,这些工具包括预处理器、汇编器和连接器等 C语言的编译系统 Java语言的编译系统 * 1.3 编译系统 C语言的编译系统 一个语言处理系统:图1.5 设有两个文件 main.c swap.c gcc–v–o swap main.c swap.c -v 可以输出该编译系统各步骤执行的命令和执行结果 -o 指示生成的可执行文件的名字 * 1.3 编译系统 C语言的编译系统 预处理器 实现文件包含 #include stdio.h 实现宏展开 #define pi 3.1415926 条件编译 #if 、#ifdef * 1.3 编译系统 C语言的编译系统 汇编器:对输入进行两遍扫描 第一遍,汇编器扫描输入,将表示存储单元的所有标识符都存入符号表,并分配地址。 第二遍,汇编器再次扫描输入,把每个操作码翻译成机器语言中代表那个操作的位串,并把代表存储单元的每个标识符翻译成符号表中为这个标识符分配的地址。 gcc –S main.c as –o main.o main.s * 1.3 编译系统 C语言的编译系统 连接器:收集、组织程序所需的不同代码和数据 静态连接器:将多个可重定位目标文件组成一个可执行目标文件(也可以组成一个可重定位目标文件) 动态连接器:支持在内存中的可执行程序在执行时与共享目标文件进行动态的连接。 * 1.3 编译系统 Java语言的编译系统 一般的高级语言程序如果要在不同的平台上运行,至少需要编译成不同的目标代码。 Java虚拟机技术是实现Java平台无关性特点的关键。 Java虚拟机语言(简称JVML) JVML程序只需要与虚拟机交互,不需要关心底层的硬件和操作系统。 * 1.3 编译系统 Java语言的编译系统 * 1.4 程序设计语言发展历程(1.3) 程序设计语言发展历程 机器语言(第一代): 20世纪40年代

文档评论(0)

fengruiling + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档