文档库 最新最全的文档下载
当前位置:文档库 › 北京理工大学软件学院编译原理第一次实验作业

北京理工大学软件学院编译原理第一次实验作业

北京理工大学软件学院编译原理第一次实验作业
北京理工大学软件学院编译原理第一次实验作业

试验1:PL/0编译程序跟踪与分析阅读第10章PL/0编译程序并完成:

P304 —10.1 ,10.2,10.3 ,10.4。(PL/0源程序放在在网络教室)

试验2:词法分析试验二选一

(一)Java语言词法分析器的设计与实现

一.实验目的

1.强化对系统软件综合工程实现能力、规划能力的训练;2.加强对词法分析原理、方法和基本实现技术的理解;二.实验内容

用C语言(或C++ )作为宿主语言完成:

Java语言词法分析器的设计和实现

其中具体要求:

1.使用DFA实现词法分析器的设计;

2.实现对Java源程序中注释的过滤;

3.利用两对半缓冲区从文件中逐一读取单词;

4.词法分析结果属性字流存放在独立文件(文件名:

scanner_output)中;

5.具有报告词法错误和出错位置(源程序行号和该行字符)的

功能;

注:附Java语言词法规则(附件一);

附Java语言词法分析器的属性字设计(附件二)

三.实验验收与评分要求

1.编写Java语言词法分析器的源程序并调试通过;

2.通过测试程序的验收 (测试程序名称:Test-Lexcial);

3. 提交简明扼要的书面实验报告。内容包括:FA设计;

源程序主要函数功能;主要数据结构设计。

附件一

JA V A语言词法规则

关键字:

abstract boolean break byte case catch char class

const continue default do double else extends false

final finally float for goto if implements import

instanceof int interface long native new null package

private protected public return short static super switch

synchronized this throw throws transient true try void

volatile while

标识符:

字母或美元符号“$”或下划线开头,连接字母或美元符号“$”或下划线或数字字符的串。

常量:

整型常量:123, 0, -456, 0123 , 0x123, -0X12,123L

实型常量: 1.23, 0.123, .123, 123., 123.0, 123e3, 123E3, 12.3F

布尔常量:true、false

字符串常量:"This is a constant string."。

字符常量:‘ a’ ,

转义字符描述

\ddd 1到3位8进制数据所表示的字符(ddd)

\uxxxx 1到4位16进制数所表示的字符(xxxx)

\' 单引号字符

\\ 反斜杠字符

\r 回车

\n 换行

\f 走纸换页

\t 横向跳格

\b 退格

界限符:

运算符:

附件二

JA V A词法分析器的属性字设计单词属性用整数表示:

关键字 1

标识符 2

布尔型 3

字符型 4

整型 5

浮点型 6

字符串7

= += -= *= /= %= &=

^= |= >>= <<= >>>= 8 ?: 9 || 10 && 11 | 12 ^ 13 & 14 == != 15 < > <= >= 16 << >> >>> 17 + - 18 * / % 19 ++ -- +(正) –(负) ! ~ 20 [] () . 21 , 22 {} 23 ; 24

(二)程序设计语言的词法分析器

一.实验目的

1.强化对系统软件综合工程实现能力、规划能力的训练;2.加强对词法分析原理、方法和基本实现技术的理解;二.实验内容

用C语言(或C++ )作为宿主语言完成:

程序设计语言词法分析器的设计和实现其中具体要求:

1.语言的单词描述、单词类别分类、属性字设计;

1.使用DFA实现词法分析器的设计;

2.实现对源程序中注释的过滤;

3.利用两对半缓冲区从文件中逐一读取单词;

4.词法分析结果属性字流存放在独立文件(文件名:

scanner_output)中;

5.具有报告词法错误和出错位置(源程序行号和该行字符)的

功能;

三.实验验收与评分要求

1.编写词法分析器的源程序并调试通过;

2. 提交简明扼要的书面实验报告。内容包括:FA设计;

源程序主要函数功能;主要数据结构设计。

编译原理实验报告实验一编写词法分析程序

编译原理实验报告实验名称:实验一编写词法分析程序 实验类型:验证型实验 指导教师:何中胜 专业班级:13软件四 姓名:丁越 学号: 电子邮箱: 实验地点:秋白楼B720 实验成绩: 日期:2016年3 月18 日

一、实验目的 通过设计、调试词法分析程序,实现从源程序中分出各种单词的方法;熟悉词法分析 程序所用的工具自动机,进一步理解自动机理论。掌握文法转换成自动机的技术及有穷自动机实现的方法。确定词法分析器的输出形式及标识符与关键字的区分方法。加深对课堂教学的理解;提高词法分析方法的实践能力。通过本实验,应达到以下目标: 1、掌握从源程序文件中读取有效字符的方法和产生源程序的内部表示文件的方法。 2、掌握词法分析的实现方法。 3、上机调试编出的词法分析程序。 二、实验过程 以编写PASCAL子集的词法分析程序为例 1.理论部分 (1)主程序设计考虑 主程序的说明部分为各种表格和变量安排空间。 数组 k为关键字表,每个数组元素存放一个关键字。采用定长的方式,较短的关键字 后面补空格。 P数组存放分界符。为了简单起见,分界符、算术运算符和关系运算符都放在 p表中 (编程时,还应建立算术运算符表和关系运算符表,并且各有类号),合并成一类。 id和ci数组分别存放标识符和常数。 instring数组为输入源程序的单词缓存。 outtoken记录为输出内部表示缓存。 还有一些为造表填表设置的变量。 主程序开始后,先以人工方式输入关键字,造 k表;再输入分界符等造p表。 主程序的工作部分设计成便于调试的循环结构。每个循环处理一个单词;接收键盘上 送来的一个单词;调用词法分析过程;输出每个单词的内部码。 ⑵词法分析过程考虑 将词法分析程序设计成独立一遍扫描源程序的结构。其流程图见图1-1。 图1-1 该过程取名为 lexical,它根据输入单词的第一个字符(有时还需读第二个字符),判断单词类,产生类号:以字符 k表示关键字;i表示标识符;c表示常数;p表示分界符;s表示运算符(编程时类号分别为 1,2,3,4,5)。 对于标识符和常数,需分别与标识符表和常数表中已登记的元素相比较,如表中已有 该元素,则记录其在表中的位置,如未出现过,将标识符按顺序填入数组id中,将常数 变为二进制形式存入数组中 ci中,并记录其在表中的位置。 lexical过程中嵌有两个小过程:一个名为getchar,其功能为从instring中按顺序取出一个字符,并将其指针pint加1;另一个名为error,当出现错误时,调用这个过程, 输出错误编号。 2.实践部分

编译原理课程设计

<PL0编译器-PCompiler> 软件需求说明书 作者:刁诗云、麻汉华、潘彦荃、周津、李程完成日期:2009年6月7日 签收人: 签收日期: 修改情况记录:

目录 软件需求说明书 (1) 1 引言 (1) 1.1 编写目的 (1) 1.2 项目背景 (1) 2 项目概述 (2) 2.1 产品描述 (2) 2.2 产品功能 (2) 2.3 用户特点 (2) 3 具体需求 (3) 3.1 EBNF定义的PL/0文法 (3) 3.2 语法图 (4) 3.3 功能需求 (6) 3.4 系统概要设计 (15)

1 引言 1.1 编写目的 为了清楚表达客户提出的需求,便于用户理解和确认项目所包含的具体功能需求、性能需求以及非公能性需求,因此以文件化的形式,把系统整体及其部分的业务流程、系统功能进行了详细的说明。同时,此文也对开发人员起到引导的作用,请认真阅读。 1.2 项目背景 PL/0是由世界著名计算机科学家、PASCAL语言的创始人N.Wirth教授选择提供的。在选择PL/0语言的过程中,Wirth很费了一番脑筋。一方面他希望借助这个语言,能尽可能把程序设计语言和编译技术一些最重要的内容都讲到;但另一方面又不希望内容太多,太杂,而希望尽可能简单一些,以便与有限的课时和课程范围相适应。于是他精心选择提供了这个PL/0语言。事实证明,它非常适合于编译技术的教学,目前已被国内越来越多的编译教材所采用。 PL/0语言的语句类型比较丰富,能适应各种可能的程序结构。最进本的是赋值语句。组合结构语句有语句串、条件语句和循环语句。还有重要的子程序概念,是通过过程说明和过程调用两部分实现的。至于数据类型和数据结构,PL/0则特别简单,只有整数类型一种,没有数据结构,因此只允许有整常数和整数变量的说明以及相应的算术运算表达式。PL/0允许在一个过程范围内说明常数、变量和过程。这些常数、变量和过程只在它们被说明的过程范围内有效。PL/0语言也允许递归调用,既可以间接递归,也可以直接递归。

北京理工大学珠海学院档案管理暂行办法

北京理工大学珠海学院档案管理暂行办法 第一章总则 第一条为了加强学校档案管理工作,实现学校档案管理工作规范化、制度化,提高档案管理水平,充分发挥档案作用,根据《中华人民共和国档案法》、《普通高等学校档案管理办法》制订本办法。 第二条档案工作是学校工作的一个重要组成部分,是重要基础工作之一,是维护学校真实面貌的一项科学文化事业,它在一定程度上是衡量学校管理水平的标志。学校应将档案工作纳入学校整体发展规划,所需经费应单独立项,列入学校预算,统筹解决。 第三条我校档案是指在教学、科研、管理及其它各项活动中直接形成的有保存价值的各种文字、图表、声像等不同形式的历史记录。包括文字、图纸、实验记录、计算材料、照片、影片、录像带、磁盘、光盘等。 第四条我校档案严格实行部门立卷归档制度,档案工作要实现“四同步”:即在布置、检查、总结、验收各项工作的同时,布置、检查、总结、验收档案工作;“三纳入”:将档案工作纳入领导的议事日程,纳入教学、科研及各项管理工作,纳入教师、科技人员和干部的职责范围;“三卡关”:卡好鉴定验收关、上报成果关、升等晋级关。 第二章领导体制及职责 第五条我校档案室由学校主管副院长分管,综合办公室直接负责,配备必要工作人员。 第六条各处(室)、专业学院、教学部均应结合本单位档案收集、整理、立卷、归档等工作任务的实际情况,确定一名领导分管,并设专职或兼职档案管理工作人员负责本单位的档案工作。 第七条我校档案工作实行统一领导和分级管理的原则。档案室对全校档案工作实行统筹规划、组织协调、统一制度,并负责进行业务指导、监督和检查。 第八条档案室的职责 1、贯彻执行国家关于档案工作的政策法规,并广泛宣传。 2、规划全校档案工作,建立健全各项规章制度,并负责监督、指导和检查执行情况。 3、负责收集(征集)、整理、保管、鉴定、统计、销毁全校各种门类、载体的档案及有关资料。 4、负责档案的科学管理和开放利用工作。 5、保守档案秘密、确保档案安全保护工作,最大限度地延长档案寿命。 6、开展档案编研工作,积极开发档案信息资源,编制各种检索工具和专题目录、各种档案参考资料。 7、参加档案工作协作、学术研究和交流活动。 8、健全全校档案工作网络,培训全校专(兼)职档案管理工作人员。 9、完成校领导交办的其他任务。 第三章文件材料的归档、移交和接收工作

编译原理作业答案

编译原理作业答案 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】

《编译原理》第一次作业参考答案 一、下列正则表达式定义了什么语言(用尽可能简短的自然语言描述) 1.b*(ab*ab*)* 所有含有偶数个a的由a和b组成的字符串. 2.c*a(a|c)*b(a|b|c)* | c*b(b|c)*a(a|b|c)* 答案一:所有至少含有1个a和1个b的由a,b和c组成的字符串. 答案二:所有含有子序列ab或子序列ba的由a,b和c组成的字符串. 说明:答案一要比答案二更好,因为用自然语言描述是为了便于和非专业的人员交 流,而非专业人员很可能不知道什么是“子序列”,所以相比较而言,答案一要更 “自然”. 二、设字母表∑={a,b},用正则表达式(只使用a,b,?,|,*,+,)描述下列语言: 1.不包含子串ab的所有字符串. b*a* 2.不包含子串abb的所有字符串. b*(ab)* 3.不包含子序列abb的所有字符串. b*a*ba* 注意:关于子串(substring)和子序列(subsequence)的区别可以参考课本第119页方框中的内容. ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ 《编译原理》第二次作业参考答案

一、考虑以下NFA: 1.这一NFA接受什么语言(用自然语言描述) 所有只含有字母a和b,并且a出现偶数次或b出现偶数次的字符串. 2.构造接受同一语言的DFA. 答案一(直接构造通常得到这一答案): 答案二(由NFA构造DFA得到这一答案): 二、正则语言补运算

实验1-3-《编译原理》词法分析程序设计方案

实验1-3 《编译原理》S语言词法分析程序设计方案 一、实验目的 了解词法分析程序的两种设计方法之一:根据状态转换图直接编程的方式; 二、实验内容 1.根据状态转换图直接编程 编写一个词法分析程序,它从左到右逐个字符的对源程序进行扫描,产生一个个的单词的二元式,形成二元式(记号)流文件输出。在此,词法分析程序作为单独的一遍,如下图所示。 具体任务有: (1)组织源程序的输入 (2)拼出单词并查找其类别编号,形成二元式输出,得到单词流文件 (3)删除注释、空格和无用符号 (4)发现并定位词法错误,需要输出错误的位置在源程序中的第几行。将错误信息输出到屏幕上。 (5)对于普通标识符和常量,分别建立标识符表和常量表(使用线性表存储),当遇到一个标识符或常量时,查找标识符表或常量表,若存在,则返回位置,否则返回0并且填写符号表或常量表。 标识符表结构:变量名,类型(整型、实型、字符型),分配的数据区地址 注:词法分析阶段只填写变量名,其它部分在语法分析、语义分析、代码生成等阶段逐步填入。 常量表结构:常量名,常量值 三、实验要求 1.能对任何S语言源程序进行分析 在运行词法分析程序时,应该用问答形式输入要被分析的S源语言程序的文件名,然后对该程序完成词法分析任务。 2.能检查并处理某些词法分析错误 词法分析程序能给出的错误信息包括:总的出错个数,每个错误所在的行号,错误的编号及错误信息。 本实验要求处理以下两种错误(编号分别为1,2): 1:非法字符:单词表中不存在的字符处理为非法字符,处理方式是删除该字符,给出错误信息,“某某字符非法”。 2:源程序文件结束而注释未结束。注释格式为:/* …… */ 四、保留字和特殊符号表

嵌入式Linux学习之规划篇

嵌入式Linux学习之规划篇 嵌入式Linux 课程目标是达到适应嵌入式应用软件开发、嵌入式系统开发或嵌入式驱动开发的基本素质。采用了目前应用最广泛的软硬件开发平台(Linux和Arm)。 学习步骤如下: 1、Linux 基础 安装Linux操作系统 Linux文件系统(windows的文件共享) Linux的基本命令及使用 Linux启动过程详解 熟悉Linux服务能够独立安装Linux操作系统 能够熟练使用Linux系统的基本命令 认识Linux系统的常用服务安装Linux操作系统 Linux基本命令实践 设置Linux环境变量 定制Linux的服务 Shell 编程基础使用vi编辑文件 使用Emacs编辑文件 使用其他编辑器 2、Shell 编程基础 Shell简介 认识后台程序 Bash编程熟悉Linux系统下的编辑环境 熟悉Linux下的各种Shell 熟练进行shell编程熟悉vi基本操作 熟悉Emacs的基本操作 比较不同shell的区别 编写一个测试服务器是否连通的shell脚本程序 编写一个查看进程是否存在的shell脚本程序 编写一个带有循环语句的shell脚本程序 3、Linux 下的 C 编程基础 linux C语言环境概述 Gcc使用方法 Gdb调试技术 Autoconf Automake Makefile 代码优化熟悉Linux系统下的开发环境 熟悉Gcc编译器 熟悉Makefile规则编写Hello,World程序 使用 make命令编译程序 编写带有一个循环的程序 调试一个有问题的程序

4、嵌入式系统开发基础 嵌入式系统概述 交叉编译 配置TFTP服务 配置NFS服务 下载Bootloader和内核 嵌入式Linux应用软件开发流程 熟悉嵌入式系统概念以及开发流程 建立嵌入式系统开发环境制作cross_gcc工具链 编译并下载U-boot 编译并下载Linux内核 编译并下载Linux应用程序 嵌入式系统移植 Linux内核代码 平台相关代码分析 ARM平台介绍 平台移植的关键技术 移植Linux内核到 ARM平台了解移植的概念 能够移植Linux内核移植Linux2.6内核到 ARM9开发板【1 配置编译Linux内核 1.1 Linux内核源代码结构 1.2 Linux内核编译选项解析 1.3 Linux内核编译链接 2.0 Linux启动过程源代码分析 3.0 Linux内核移植平台相关代码分析】 5、嵌入式 Linux 下串口通信 串行I/O的基本概念 嵌入式Linux应用软件开发流程 Linux系统的文件和设备 与文件相关的系统调用 配置超级终端和MiniCOM 能够熟悉进行串口通信 熟悉文件I/O 编写串口通信程序 编写多串口通信程序 6、嵌入式系统中多进程程序设计 Linux系统进程概述 嵌入式系统的进程特点 进程操作 守护进程 相关的系统调用了解Linux系统中进程的概念 能够编写多进程程序编写多进程程序 编写一个守护进程程序 sleep系统调用任务管理、同步与通信 Linux任务概述任务调度 管道

北京理工大学珠海学院弘毅楼FGH栋学3841栋

北京理工大学珠海学院弘毅楼FGH栋、学38-41栋 防水补漏工程施工方案 一、伸缩缝渗水 1基层要求:用切隔机将伸缩缝两边各50cm处切开,然后将切隔处和伸缩缝之间的砂浆层打掉,直到基层(混凝土楼板面)清理干净。 2将伸缩缝两边10cm宽打“V”形模垂深5cm. 3用水泥砂浆将打成的“V”形两侧找平层。 4在伸缩缝底部用50×50cm遇水膨胀止水条嵌底。 5用双组份聚氨酯密封膏将止水条与结构层密封、压实。 6铺设橡胶防水卷材 ①基层清理。将基层表面凸起物等铲平,并将尘土杂物彻底清扫干净。 ②涂基层处理剂。基层处理剂采用涂刷法施工,涂刷应均匀一致。 ③涂基层胶粘剂。基底胶粘剂使用之前,需搅拌均匀方可使用,分别涂在基层和卷材底面。涂刷应均匀,不漏底,不堆积。 ④铺设卷材。涂胶20分钟左右,基本不粘手后,用手一边压一边驱除空气,粘合后应再用压辊滚压一遍,粘结牢固不翅边,不起鼓,然后用聚氨酯密封膏封口。 二、窗台渗水案列分析 1、窗台四周防水处理,先用丙烯酸脂高弹性防水涂料涂刷2遍,先修补窗台靠墙上下周边补好。 2、待干燥后,用机器灌浆环氧树脂罐在塑钢窗罐满,把接口处及钉子补好。 三、架空层渗水 首先把架空层漏水的地方反面凿开30公分宽到钢筋的地方,用水清洗干净,防水涂料做二毫米厚度。然后再用防水堵漏王整平,最后复原墙体颜色。 四、外墙渗水案列分析 1、首先要做好各项外墙补漏的安全措施如:安全绳,吊板等在墙外施工。 2、把结合缝上方原来空鼓,先把外墙清洗干净结合缝的施工槽。先

用防水涂料大面积涂刷两遍外墙,待材料干燥后再用透明防水胶及防水剂涂刷两遍,使水不能渗入墙体。 3、在晴朗的日子里,在施工槽上(包括割开部位)用防水涂料均匀地涂刷再结合缝的施工槽上,材料要求具有好的防水性能,耐腐蚀及耐候性,胶膜柔韧,附着力强,不易老化,半透明,抗紫外线,适用于玻璃之间的结合缝止。 五、天面裂缝渗水 首先凿开隔热板60公分宽,找到裂缝漏水的地方,裂缝凿开一条V 型槽,用水清洗干净,在用进口防水确保持粉配防水奇妙剂配成糊状,再凿开的裂缝分两遍灌浆,自然干燥后,再用防水伸缩胶补好,然后再打1:2的水泥砂浆找坡层,最后恢复。 六、卫生间渗水 首先把卫生间地板砖跟坐厕全部凿开,到楼板层后用水清洗干净,坐厕的主管四周先凿开原来的水泥砂浆层,先管口处理,用确保持防水粉和防水胶水做一次整体防水,再做一次防水涂料做二毫米厚度。然后再打水泥砂浆,做第二次排水将水引流到排水管处避免防水层积水,最后复原地板砖。 七、阳台渗水 首先把阳台四周凿开30公分到楼板层,到楼板层后用水清洗干净,用确保持防水粉和防水胶水做一次防水,再做一次防水涂料做二毫米厚度。然后再打水泥砂浆,最后复原地板砖。 后勤保卫处 2017年10月24日

编译原理作业

编译原理作业 P7:1.1;1.2自编2.1;2.2自编2.3;2.4自编2.5自编3.1 自编3.2自编3.3;3.4P100.4.1;4.2自编4.3;4.4自编5.1 自编5.2自编7.1;7.2 自编8.1 P7:1.1 P7;1.2 自编2.1 文法G[S]:S→xSx│y所识别的语言是。 a. xyx b. (xyx)* c. x n yx n(n≥0) d. x*yx* 【解答】 自编2.2 令文法G[N]为 G[N]: N→D∣ND D→0∣1∣2∣3∣4∣5∣6∣7∣8∣9 (1) G[N]的语言L(G)是什么? (2) 给出句子0127、34和568的最左推导和最右推导。 【解答】 自编2.3 对于文法G[S]: S→(L)∣aS∣a L→L, S∣S (1) 画出句型(S,(a))的语法树; (2) 写出上述句型的所有短语、直接短语、句柄。 【解答】 自编2.4 已知文法G[S]为S→SaS∣ε,试证明文法G[S]为二义文法。 【解答】 自编2.5 按指定类型,给出语言的文法。 (1) L={a i b j│j>i≥1}的上下文无关文法; (2) 字母表∑={a,b}上的同时只有奇数个a和奇数个b的所有串的集合的正规文法;

自编3.1 什么是扫描器?扫描器的功能是什么? 自编3.2 结合自动机证明:正规式(ab)*a与正规式a(ba)*是否等价?给出分析过程。 自编3.3 已知自动机DFA如图3-4所示 图3-4 DFA 写出其对应的语言,分别用正规文法和自然语言描述。 【解答】 自编3.4 设有L(G)={a2n+1b2m a2p+1| n≥0,p≥0,m≥1}。 (1) 给出描述该语言的正规表达式; (2) 构造识别该语言的确定有限自动机(可直接用状态图形式给出)。【解答】 P100:4.1 P100;4.2 自编4.3 在算符优先分析法中,为什么要在找到最左素短语的尾时才返回来确定其对应的头,能否按扫描顺序先找到头后再找到对应的尾,为什么? 【解答】 自编4.4 设有文法G[S]: S→a|b|(A) A→SdA|S (1) 构造算符优先关系表;

17春北理工《操作系统》在线作业

2017秋17春北理工《操作系统》在线作业 一、单选题(共20 道试题,共40 分。) 1. 操作系统中有一类程序,其执行过程不可中断,该程序叫做:( ) A. 过程 B. 子程序 C. 原语 D. 模块机制 正确答案: 2. 操作系统向用户提供了使用计算机的程序一级的接口为() A. 原语 B. 进程管理 C. 命令接口 D. 系统调用 正确答案: 3. 请求分页系统管理中,若把页面的尺寸增加一倍,程序顺序执行时,其缺页中断次数一般会:( ) A. 增加 B. 减少 C. 不变 D. 可能增加,也可能减少 正确答案: 4. 以下关于主存空间的说法中正确的是() A. 主存储器的空间分成三部分:系统区、用户区和缓冲区 B. 操作系统与硬件的接口信息、操作系统的管理信息和程序等存放在主存储器的系统区 C. 所有的程序存放在用户区 D. 存储管理是对主存储器空间的各部分如系统区、用户区等进行管理 正确答案: 5. 在可变式分区分配方案中,最佳适应算法是将空闲区在空闲区表中按()次序排列 A. 容量递增 B. 容量递减 C. 地址递增 D. 地址递减 正确答案: 6. 一个功能强的文件系统,向用户提供更加灵活的文件物理结构是:( ) A. 连续结构 B. 串联结构

C. 索引结构 D. 三者都不对 正确答案: 7. UNIX系统中,()是实现把一个进程的输出连接到另一个进程的输入功能的机制。 A. 普通文件 B. 特殊文件 C. 目录文件 D. 管道文件 正确答案: 8. 虚拟存储器的最大容量() A. 为内外存容量之和 B. 由计算机的地址结构决定 C. 是任意的 D. 由作业的地址空间决定 正确答案: 9. 以下叙述中,不正确的是() A. 采用动态重定位,在必要时可以改变装入的作业在主存中的存放区域 B. 采用动态重定位的系统支持“程序浮动” C. 采用静态重定位的系统不支持“程序浮动” D. 采用动态和静态重定位的系统都支持“程序浮动” 正确答案: 10. 吞吐量是指:( ) A. 单位时间内完成的信息量 B. 操作系统响应进程命令需要的信息量 C. 完成作业或进程所需要的信息量 D. 都不对 正确答案: 11. 计算机系统的二级存储包括() A. 主存储器和辅助存储器 B. ROM和RAM C. 超高速缓存和内存储器 D. CPU寄存器和主存缓冲区 正确答案: 12. 最佳适应算法通常是将空闲区按()排列 A. 地址大到小 B. 地址小到大 C. 空间大到小 D. 空间小到大 正确答案: 13. 适合多道程序运行的最简单的方案是( ) A. 分页式存储管理 B. 固定分区式存储管理 C. 分段式存储管理

编译原理大作业

《编译原理》实验报告 课程编译原理 实验名称编译原理综合实验 专业 班级 姓名 学号 完成日期2013/6/5

目录 实验一 (2) 实验目的和内容 (2) PL/0语言描述 (2) 内部码对照表 (3) 实验过程及方法 (4) 实验结果 (4) 总结 (5) 实验二 (5) 实验目的 (5) 实验内容及要求 (6) 实验算法 (7) 实验结果 (7) 总结 (8) 实验三 (8) 实验目的 (8) 实验内容 (9) 实现算法 (9) 实验结果 (9) 总结 (12) 实验一 实验目的和内容 1.实验目的:通过完成词法分析程序,了解词法分析的过程。 2.实验内容:用C/C++实现对Pascal的子集程序设计语言的词法识别程序。 3.实验要求:将该语言的源程序,也就是相应字符流转换成内码,并根据需要是否对于标识符填写相应的符号表供编译程序的以后各阶段使用。 PL/0语言描述 PL/0程序设计语言是一个较简单的语言,它以赋值语句为基础,包括顺序、条件和循环三种控制结构。PL/0有子程序(即函数)概念。PL/0中唯一的数据类型是整型,可以用来说明该类型的常量和变量。当然PL/0也具有通常的算术运算和关系运算。

具体的PL/0语法描述如下(采用扩充的BNF表示)。 <程序>→<程序首部> <分程序> {<分程序>}. <程序首部>→PROGRAM标识符; <分程序>→<过程首部> [<常量说明部分>] [<变量说明部分>] <复合语句> <常量说明部分>→CONST <常量定义> {,<常量定义> } ; <常量定义>→标识符= 无符号整数 <变量说明部分>→V AR <变量定义> {;<变量定义>}; <变量定义>→标识符{,标识符}:<类型> <类型>→INTEGER <过程首部>→PROCEDURE标识符;| PROCEDURE标识符(标识符:<类型>); <复合语句>→BEGIN<语句>{;<语句>}END <语句>→<赋值语句>|<条件语句>|<当型循环语句>|<过程调用语句> |<读语句>|<写语句>|<复合语句>|ε <赋值语句>→标识符:=<表达式> <条件语句>→IF<条件>THEN<语句> <条件语句> → if<布尔表达式> then <语句>|if<布尔表达式> then <语句> else <语句> <布尔表达式> → <条件> | !<布尔表达式>| <布尔表达式> && <布尔表达式> <当型循环语句>→WHILE<条件>DO<语句> <过程调用语句>→CALL 标识符| CALL 标识符(<表达式>) <读语句>→READ(标识符{,标识符} ) <写语句>→WRITE(<表达式>{,<表达式>}) <条件>→<表达式><关系运算符><表达式> | ODD<表达式> <表达式>→<项>{<加型运算符><项>} <项>→<因子>{<乘型运算符><因子>} <因子>→标识符| 无符号整数| (<表达式>) <加型运算符>→+|- <乘型运算符>→* | / <关系运算符>→=|<>|<|<=|>|>= 内部码对照表 表1-1 内部码对照表 内码单词内码单词内码单词内码单词 1 PROGRAM 2 CONST 3 V AR 4 INTEGER 5 Call 6 PROCEDURE 7 IF 8 THEN

编译原理作业答案

《编译原理》第一次作业参考答案 一、下列正则表达式定义了什么语言(用尽可能简短的自然语言描述)? 1.b*(ab*ab*)* 所有含有偶数个a的由a和b组成的字符串. 2.c*a(a|c)*b(a|b|c)* | c*b(b|c)*a(a|b|c)* 答案一:所有至少含有1个a和1个b的由a,b和c组成的字符串. 答案二:所有含有子序列ab或子序列ba的由a,b和c组成的字符串. 说明:答案一要比答案二更好,因为用自然语言描述是为了便于和非专业的人员交流,而非专业人员很可能不知道什么是“子序列”,所以相比较而言,答案一要更“自然”. 二、设字母表∑={a,b},用正则表达式(只使用a,b, ,|,*,+,?)描述下列语言: 1.不包含子串ab的所有字符串. b*a* 2.不包含子串abb的所有字符串. b*(ab?)* 3.不包含子序列abb的所有字符串. b*a*b?a* 注意:关于子串(substring)和子序列(subsequence)的区别可以参考课本第119页方框中的内容. ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ 《编译原理》第二次作业参考答案 一、考虑以下NFA: 1.这一NFA接受什么语言(用自然语言描述)? 所有只含有字母a和b,并且a出现偶数次或b出现偶数次的字符串. 2.构造接受同一语言的DFA. 答案一(直接构造通常得到这一答案):

答案二(由NFA构造DFA得到这一答案): 二、正则语言补运算 3.画出一个DFA,该DFA恰好识别所有不含011子串的所有二进制串. 1.画出一个DFA,该DFA恰好识别所有不含011子串的所有二进制串.

《编译原理(实验部分)》实验1_程序预处理

《编译原理》(实验部分) 实验1_程序预处理 一、实验目的 明确预处理子程序的任务,构造一个简单的预处理子程序,对源程序进行相应的预处理。 二、实验设备 1、PC 兼容机一台;操作系统为WindowsWindowsXP。 2、Visual C++ 6.0 或以上版本, Windows 2000 或以上版本,汇编工具(在Software 子目录下)。 三、实验原理 定义模拟的简单语言的词法构成,编制读入源程序和进行预处理的程序,要求将源程序读入到文件或存入数组中,再从文件或数组中逐个读取字符进行预处理,包括去掉注释、Tab、Enter和续行符等操作,并显示预处理后的程序。 四、实验步骤 1、从键盘读入源程序存放到输入缓冲区中。 2、对源程序进行预处理,预处理后的程序存放到扫描缓冲区中。 3、显示预处理后的程序。 参考源程序(C++语言编写) //源程序的输入及预处理 #include #include void pro_process(char *); void main( ) //测试驱动程序

{ //定义扫描缓冲区 char buf[4048]={'\0'}; //缓冲区清0 //调用预处理程序 pro_process(buf); //在屏幕上显示扫描缓冲区的内容cout<='A' && cur_c<='Z') //大写变小写 cur_c+=32; if(cur_c =='\t' || cur_c =='\n') //空格取代TAB换行 cur_c=' '; buf[i++]=cur_c ;

北理工应用文在线作业答案

北京理工大学应用文写作在线作业答案 北理工应用文在线作业答案 第1阶段第一阶段 第2阶段第二阶段 计划的标题同许多事务文书一样,不必写明时限 写总结不一定要按照完成工作的时间先后顺序来写 调查报告可以用于向上级机关汇报工作,供领导决策参考 对未来一定时期的任务作出预想性安排的文种是 总结的开头包括的内容,下列不准确的一项是 调查报告在格式上没有固定的要求,一般包括 计划的种类很多,而且从不同的角度可以对其进行不同的分类,如按其内容分,可将其分为

综合性计划和 总结的正文一般包括基本情况、成绩收获、____________、经验体会等几部分内容 关于计划的主要作用,以下叙述正确的是 总结主体的主要内容包括 条款式合同适用于工程承包、科技合作、合作生产、技术引进等内容比较的经济合同。 招标、投标文书最为突出的两大特点是竞争性和公开性。 我国《广告法》中所称的广告包括商业广告和非商业广告。 下列计划标题拟定恰当的一项是 写作调查报告,在表达方式上,要做到 一篇演讲稿的结尾以极富鼓动性的言辞号召人们为某种目的、某种理想而行动起来。这种结尾的方式叫 经济活动分析报告的标题各项内容中不能省去的一项是

是审计机构或审计人员在完成某一项审计工作后,向委托者或授权者提交的情况书面报告。投标书一般是由_____________设计并送给投标单位的。 审计报告写作应注意的事项 第3阶段第三阶段 个人请柬应一人一柬,夫妻也不可合写一柬。 撰写欢迎词要大量选择感情色彩浓烈,感染力量强大的形容词、比喻词、象征词。 启事的标题可以只用事由表示。 消息的第一自然段或开头的一两句话,一般被称作(),它将消息最重要、最新鲜的事实概括出来,并吸引读者。 通讯写作首先要注意 不管是欢迎词表达“有朋自远方来,不亦乐乎”的愉悦心情,还是欢送词表达亲朋远行的依依惜别之情,都具有的特点是( )。 着重记述社会变化、风土人情和建设状况,并在报纸上常以“巡礼”、“侧记”等形式出现的新闻体裁是____________。 广播稿主要使用语言来影响听众,所以_________是其最大特色。 消息有不同的划分方法,如从写作的角度来划分,可分为()四类。 请柬结尾的礼貌用语有 一般书信常用于个人之间的交往,也可以是个人写给单位或集体的 申请书内容比较单纯,一般一事一书 介绍信是用来介绍联系接洽事宜的一种应用文体,它只具有介绍的作用 中央电视台的新闻联播属于 下列材料不适合写贺信的是 下面关于悼词写作不正确的一项是 书信的种类很多,按使用目的和范围可分一般书信和( )两大类 下列语句叙述有错误的有 报告要反映工作实践,是可以运用某些修辞手法写得生动些,但有些修辞手法是不能使用的。

【北航保研辅导班】北航软件学院推免保研条件保研材料保研流程保研夏令营

【北航保研辅导班】北航软件学院推免保研条件保研材料保研流程保 研夏令营 2018年保研夏令营已陆续拉开帷幕,为了方便考生及时全面的了解985/211等名校保研信息,启道保研小编为大家整理了2018年名校各院系保研汇总信息,以供考生参考。一、北航软件学院保研资格条件(启道北航保研辅导班) 1.热爱祖国,拥护中国共产党的领导,具有高尚的爱国主义情操和集体主义精神,社会主义信念坚定,社会责任感强。 2.具有推荐免试资格的高校优秀应届本科毕业生,本科前三学年综合成绩在学院年级排名前25%。 3.有学术论文发表、获得专利、学科竞赛、科技活动等获奖者综合成绩排名可以适当放宽。 4.研究兴趣浓厚,有较强的专业基础、创新意识和创新能力。 5.诚实守信,品行端正,无任何考试作弊、学术不端以及其他违法违纪处分记录。 6.身体健康状况符合《北京航空航天大学招收学历研究生体检工作标准》的体检要求。 二、北航软件学院保研政策(启道北航保研辅导班) 一、招收项目: 本年度推荐免试研究生接受以下项目的申请: 1、085212专业硕士 2、083500学术型 二、申请材料: 1.《北京航空航天大学接收推荐免试攻读2018年研究生申请表》原件一份(须本人签字)。 2.有效居民身份证的复印件一份(正反面需复印在A4纸张的同一页面上)。 3.政审表纸质版一份,具体填写要求见其说明。 4.“思想政治与道德品格”情况的书面小结一份。 5.对申请有参考价值的本人自述(限500字以内)一份。 6.加盖所在学校教务处公章的本人本科阶段成绩单原件一份。 7.提交加盖所在学院(或者学校)公章的本人排名证明原件一份。

8.若本人发表过学术论文或出版物,提交复印件一份。 9.若本人在学期间,有学科竞赛、科技活动等各种获奖证明,提交复印件一份。 10.近一个月内由二级甲等以上(含二级甲等)医疗机构或北航校医院出具的体格检查表一份,体格检查表上的体检内容不得少于附件样表所列项目,并且注意须随体格检查表附各种检查的化验单。。 三、申请材料审核及复试资格确认 每一位申请推免的学生须提供完整有效的申请材料,材料不完整者取消推免资格。 申请者请到北航研究生招生信息网https://www.wendangku.net/doc/1713431514.html,/查阅相关说明及要求,下载申请表,按照软件学院要求的截止日期将全部申请材料(统一用A4纸)寄(或送)达软件学院的研究生教务办公室。软件学院接收材料的截止时间为2017年9月22日(以收到日期为准,如需快递,建议采用顺风快递)。 申请者需及时登录教育部的“推免服务系统”(https://www.wendangku.net/doc/1713431514.html,/tm),完成注册、填写个人基本信息、上传照片、网上支付、填写志愿等步骤,网报志愿须与纸质材料填写志愿一致。 四、复试形式 复试共分为四个环节,采取差额面试,考生的面试总时间不少于20分钟。各个环节的面试内容如下: 第一环节:思想政治与道德品格(100分) 个人陈述思想政治与道德品格的情况并接受面试提问和答题。 第二环节:英语(100分) 面试采用口语交流形式,考查英语能力。 第三环节:专业基础(150分) 主要考查软件工程、操作系统、编译原理、计算机网络、数据库基本概念的掌握程度。 第四环节:专业实践与综合能力(150分) 主要考查软件工程的专业实践能力和专业综合能力(考生可介绍课程大作业、专业实习与实践、科技创新创意创业实践、毕业设计等)。 第一、二、三、四环节为并行环节,考生总体上按照复试时间及名单的顺序,根据各个环节的面试情况,在助管老师的协调下,进入各个环节的面试; 整个面试过程全程录音、录像。

北京理工大学珠海学院《高等数学B》课程教学大纲

必须有所知,否则不如死。——罗曼·罗兰 北京理工大学珠海学院 《高等数学B》课程教学大纲 课程编号: 课程名称:高等数学B Advanced Mathematics(B) 学分:8 学时:128 一、目的与任务 1.课程性质:必修课 2.课程类别:公共基础课 3.目的与任务: 《高等数学B》本课程是高等学校经济类与管理类专业的一门必修的重要基础理论课。 通过本课程的学习,应使学生获得一元函数微积分及其应用、多元函数微积分及其应用、无穷级数、常微分方程与差分方程、向量代数与空间解析几何等方面的基本概念、基本理论、基本方法和运算技能,为今后学习各类后继课程和进一步扩大数学知识面奠定必要的数学基础。 教学过程中,要将数学知识与其经济应用有机结合。在传授知识的同时,要注意培养学生进行抽象思维和逻辑推理的理性思维能力,综合运用所学的知识分析问题和解决问题的能力以及较强的自主学习能力,逐步培养学生的探索精神和创新能力。通过本课程的学习,不仅使学生获得一种工具,一种知识,一种科学,更使学生获得一种思维模式,一种素养,一种文化。形成良好的数学素养,为今后学习、工作奠定必要的数学基础。 二、教学内容、要求及学时分配 根据教育部最新制定的经济管理类本科数学基础课程教学基本要求,结合北京理工大学珠海学院的实际,确定本课程的教学大纲。 课程的内容按教学要求的不同,分为两个层次: (1)应使学生深入领会和掌握,并能熟练运用--其中,概念、理论用"理解"一词表述,方法、运算用"掌握"一词表述; (2)在教学要求上低于前者--其中,概念、理论用"了解"一词表述,方法、运算用"会" 一词表述。 本课程教学内容分七个部分,各部分教学基本内容及其基本要求如下: 1. 函数、极限、连续(14学时) (1) 在中学已有函数知识的基础上,加深对函数概念的理解和对函数基本性态(奇偶性、周期性、单调性和有界性)的了解。 (2) 会建立简单的经济问题的函数关系式;了解经济学中常用的一些函数。 (3) 理解复合函数的概念;了解反函数的概念,理解初等函数的概念。 (4) 掌握基本初等函数的性质及其图形。 (5) 理解数列极限和函数极限的概念,了解极限的定义(不要求学生做给出求或的习题)。 (6) 掌握极限的四则运算法则,会用变量代换求某些简单复合函数的极限。 (7) 了解极限存在的两个准则(夹逼准则和单调有界准则);了解两个重要极限与 ,并会用它们求一些相关的极限。 (8) 了解无穷大、无穷小、高阶无穷小和等价无穷小的概

编译原理实验代码

[实验任务] 完成以下正则文法所描述的Pascal语言子集单词符号的词法分析程序。 <标识符>→字母︱<标识符>字母︱<标识符>数字 <无符号整数>→数字︱<无符号整数>数字 <单字符分界符> →+ ︱-︱* ︱; ︱(︱) <双字符分界符>→<大于>=︱<小于>=︱<小于>>︱<冒号>=︱<斜竖>* <小于>→< <等于>→= <大于>→> <冒号> →: <斜竖> →/ 该语言的保留字:begin end if then else for do while and or not 说明:1 该语言大小写不敏感。 2 字母为a-z A-Z,数字为0-9。 3可以对上述文法进行扩充和改造。 4 ‘/*……*/’为程序的注释部分。 [设计要求] 1、给出各单词符号的类别编码。 2、词法分析程序应能发现输入串中的错误。 3、词法分析作为单独一遍编写,词法分析结果为二元式序列组成的中间文件。 4、设计两个测试用例(尽可能完备),并给出测试结果。 demo.cpp #include #include #include #include "demo.h" char token[20]; int lookup(char *token) { for (int i = 0; i < 11; i++) { if (strcmp(token, KEY_WORDS[i]) == 0) { return i+1; } } return 0; } char getletter(FILE *fp) { return tolower(fgetc(fp)); } void out(FILE *fp, int c, char *value) {

北京理工大学珠海学院实验报告模版

ZHUHAI CAMPAUS OF BEIJING INSTITUTE OF TECHNOLOGY 班级××××学号×××××××姓名×××指导教师×××成绩××实验题目×××××××××××××实验时间××××一、目的与要求 1.学习设置和运行ModelSim。 2.学习使用ModelSim进行功能仿真。 3.熟悉ModelSim软件。 4.熟悉Verilog硬件描述语言。 二、实验准备 1、复习教材有关RTL代码仿真的一般流程等内容。 2、根据要求写出用硬件描述语言写的RTL代码和测试用代码。 三、上机步骤 1、启动modelsim软件 先在c盘建立新文件夹,在modelsim中选择File -> Change Directory,在弹出的Choose folder对话框中设置目录路径为你的新文件夹(工作目录)。 2、建立工程 在modelsim中建立project,选择File ->New ->Project. 在Project Name栏中填写你的项目名字,建议和你的顶层文件名字一致。Project Location是你的工作目录,你可通过Brose按钮来选择或改变。Ddfault Library Name 可以采用工具默认的work。Workspace窗口的library中就会出现work库。. 3、为工程添加文件 工程建立后,选择Add Exsiting File后,根据相应提示将文件加到该Project中,包括add.v和其测试向量add_tp.v,源代码。 4、编译文件 编译(包括源代码和库文件的编译)。编译可点击Comlile Comlile All来完成。 5、装载文件 (1)双击libray 中work中的count_tp装载 (2)点击simulate –start simulation 按右图设置,点击ok 6、开始仿真 点击workspace下的sim,点击add_tp,选择add ? add to wave然后点run –all,开始仿真四、实验结果 五、实验结论

编译原理作业集-第七章

第七章语义分析和中间代码产生 本章要点 1. 中间语言,各种常见中间语言形式; 2. 说明语句、赋值语句、布尔表达式、控制语句等的翻译; 3. 过程调用的处理; 4. 类型检查; 本章目标 掌握和理解中间语言,各种常见中间语言形式;各种语句到中间语言的翻译;以及类型检查等内容。 本章重点 1.中间代码的几种形式,它们之间的相互转换:四元式、三元式、逆波兰表示; 3.赋值语句、算术表达式、布尔表达式的翻译及其中间代码格式; 4.各种控制流语句的翻译及其中间代码格式; 5.过程调用的中间代码格式; 6.类型检查; 本章难点 1. 各种语句的翻译; 2. 类型系统和类型检查; 作业题 一、单项选择题: 1. 布尔表达式计算时可以采用某种优化措施,比如A and B用if-then-else可解释为_______。 a. if A then true else B; b. if A then B else false; c. if A then false else true; d. if A then true else false; 2. 为了便于优化处理,三地址代码可以表示成________。 a. 三元式 b. 四元式 c. 后缀式 d. 间接三元式 3. 使用三元式是为了________:

a. 便于代码优化处理 b. 避免把临时变量填入符号表 c. 节省存储代码的空间 d. 提高访问代码的速度 4. 表达式-a+b*(-c+d)的逆波兰式是________。 a. ab+-cd+-*; b. a-b+c-d+*; c. a-b+c-d+*; d. a-bc-d+*+; 5. 赋值语句x:=-(a+b)/(c-d)-(a+b*c)的逆波兰式表示是_______。 a. xab+cd-/-bc*a+-:=;a. xab+/cd-bc*a+--:=;a. xab+-cd-/abc*+-:=;a. xab+cd-/abc*+--:=; 6. 在一棵语法树中结点的继承属性和综合属性之间的相互依赖关系可以由________来描述。 a. 抽象语法树; b. 语法规则; c. 依赖图; d. 三地址代码; 7. 按照教材中的约定,三地址语句if x relop y then L表示成四元式为。 a. (relop,x,y,L); b. (relop,L,x,y); c. (relop,x,L,y); d. (L,x,y,relop); 8. 在编译程序中,不是常见的中间语言形式。 a.波兰式; b. 三元式; c. 四元式; d. 抽象语法树; 9. 在编译程序中安排中间代码生成的目的是________。 a. 便于提高编译效率; b. 便于提高分析的正确性; c. 便于代码优化和目标程序的移植; d.便于提高编译速度; 10. 按照教材中的约定,下面不是类型表达式: a. boolean; b. type-error; c. real; d. DAG; 11. 一个Pascal函数 function f ( a, b:char ) :↑integer; …… 其作用域类型是: a. char×integer; b. char×char; c. char×pointer(integer); d. integer×integer; 12. 因为标识符可用于多种情况,比如常量标识符、变量标识符、过程标识符等等。因此,在符号表中为了给出各个符号的标志,常给标识符引入一个属性kind,然后在相应产生式的语义动作中添加给kind属性赋值的语句。比如,在在产生式D id:T的语义动作中添加赋值语句id.kind= 。 a. V AR; b. CONSTANT; c. PROC; d. FUNC; 13. 下面情况下,编译器需要创建一张新的符号表。 a. 过程调用语句; b. 标号说明语句; c. 数组说明语句; d.记录说明语句; 14. 函数function f(a,b:char):↑integer;… 所以f函数的类型表达式为: a. char×char→pointer(integer); b. char×char→pointer; c. char×char→integer; d. char×char→integer (pointer) 15. 如果一个语言的编译器能保证编译通过的程序,在运行时不会出现类型错误,则称该语言是。 a. 静态的; b. 强类型的; c. 动态的; d. 良类型的; 一.答案:1. b;2. d;3. b;4. d;5. c;6. c.;7. a;8. a;9. c;10. d;11. b;12. a;13. d; 14. a;15. b;

相关文档
相关文档 最新文档