自考13007编译原理考试大纲(2025年版)
湖南省高等教育自学考试课 程考 试大 纲编译原理 (课程代码:13007) 湖南省教育考试院组编 2025 年 6 月高等教育自学考试课程考试大纲课程名称:编译原理课程代码:13007
第一部分
课程性质与目标
一、课程性质与特点
编译原理是高等教育自学考试计算机科学与技术专业的选考课程。编译原理课程是信息技术教育专业、计算机科学技术专业的一门重要的专业基础课。它有一定的理论性, 又有一定的实践性,尤其是本课程的知识与计算机应用的很多领域有密切的联系,了解与掌握本课程的基本内容有利于提高学生的专业素质和适应社会多方面需要的能力。
二、课程目标与基本
要求通过本课程的学习,设置以下三个课程目标:
目标 1:通过对编译系统的构造原理和各阶段实现方法的学习,能够理解编译系统的结构、工作流程以及编译程序各组成部分的设计原理和实现技术,具有分析和维护编译系统等方面的初步能力。
目标 2:能够根据问题的需求,分析问题,设计试验方案与实现问题的算法,根据实验结果进行分析,并综合考虑各方影响因素,得到有效结论,撰写相关文档。
目标 3:编译器是一个复杂的系统,通过研究分析目前国际上不同的编译器,能够深入理解程序语言和程序执行过程,提高对计算机系统的总体发展趋势。
要求考生掌握形式语言与编译相关的基本知识与基本概念,了解并掌握编译程序构造的基本原理和技术,从宏观和微观的角度掌握编译的基本过程、基本方法、编译系统的组成,进一步认识与理解编译系统与程序设计语言的关系。本课程的内容包形式语言基本知识、词法分析、语法分析、中间代码生成和目标代码生成。
三、与本专业其他课程的关系
本课程的先修课程包括高等数学、离散数学、高级语言程序设计,数据结构、汇编语言。编译原理课程中有许多算法实现,而在计算机上任何问题的解决都要涉及到数据的表示、存储和操作,这些是数据结构的基本内容,任何解决问题的算法都必须借助于某种程序设计语言来实现。汇编语言的学习能帮助学生理解计算机的内部结构和存取机制。
第二部分考核内容与考核目标
第一章 编译概述
本章介绍了编译程序的作用、工作过程和编译程序的构造方法,概括地提出了后继所要学习的内容,为进入具体内容的学习提供了必要的引导。
本章总的要求是:理解编译程序、汇编程序、汇编语言程序、解释程序、翻译程序、源程序、目标程序等概念及相互关系;掌握编译程序的工作过程和编译程序的总体框架, 理解编译程序的几种构造方法。
本章的学习难点是有关编译程序的基本概念和编译程序的工作过程、编译程序的结构、编译程序构造方法的理解。
(一)程序设计语言及翻译程序(一般)
理解:高级语言的运行方式(二)编译过程和编译程序的结构、编译系统(重点)识记:1.编译程序的结构
2.编译阶段的组合
理解:1.高级语言编译流程
2.高级语言编译实例(三)认识 Sample 语言(一般)
理解:1.高级语言的构成成分:语法、语义
2.程序的层次结构
3.Sample 语言的 7 个构成成分(四)编译程序的发展及编译技术的应用(一般)
理解:编译程序的发展和编译技术应用
第二章 词法分析
能够通过分析正规语言特点,构造相应等价的有限自动机。能够设计小规模语言集的词法分析器。本章学习难点是理解词法分析器的任务、掌握词法分析器的设计方法、 理解正则表达式与有穷自动机的等价性、DFA 与NFA 及其等价性、了解确定自动机的极小化、 了解词法分析器的自动生成。
(一)词法分析器的设计(重点)识记:1.词法分析器的设计
2.集合的运算及语言的定义理解:1.符号和符号串
2.正则表达式
(二)正则表达式与有穷自动机(重点)
理解:1.有穷自动机的定义
2.有穷自动机的分类:DFA 和 NFA应用:1.正则表达式与有穷自动机的等价性
2.正则表达式与有穷自动机相互转化(三)单词的识别(次重点)识记:1.单词的种别码
2.单词的分类
理解:1.超前搜索技术和双界符的识别
2.数值型常量的识别、状态转换图的合并
3.状态转换图、单词识别程序(四)词法分析器的自动生成工具(一般)
理解:1.使用 Lex 自动生成词法分析器
2.词法分析中的错误处理
第三章 语法分析
能够理解各语法分析器的抽象模型,并实现关键算法。能够设计或借助自动工具设计给定语言的语法分析器。本章学习难点是理解上下文无关文法、推导与语法树构造、 掌握确定的自上向下的语法分析方法—LL(1)文法、算符优先文法、熟练掌握 LR(0)分析器、SLR(1)分析器。了解 LR(1)分析器,LALR(1)分析器的工作原理及其 LR 分析表构造方法。
(一)上下文无关文法(重点)识记:1.文法的定义、二义文法的定义
2.推导的定义
理解:1.文法产生的语言
2.消除二义性
(二)自上而下的语法分析(重点)识记:自上而下的语法分析的定义理解:1.LL(1)文法
2.递归下降分析方法
3.预测分析方法
应用:设计自上而下语法分析器(三)自下而上的语法分析(重点)识记:自下而上的语法分析的定义理解:1.算符优先分析
2.LR 分析法
应用:设计自下而上语法分析器(四)语法分析概述、语法分析中的错误处理(次重点)识记:语法分析中的错误处理的一般原则理解:语法分析的错误处理应用:语法分析器的自动生成工具
第四章 语义分析
能够理解语义分析的作用,符号表格管理、语义检查的方法与技巧。能够通过语义分析,设计相应的语义规则,实现表格管理和语义检查的有效处理。本章学习难点是掌握语义分析和表格管理方法和技术、了解适静态语义检查的相关方法和技术、了解某种具体的高级语言对语义的要求。
(一)符号表管理技术(重点)识记:符号表的操作理解:1.符号表的组织方式
2.表格管理方法和技术(二)静态语义检查(次重点)识记:1.语义检查的声明与定义
2.语义检查的表达式、语句语义检查(三)Sample 语言的语义描述(次重点)识记:1.语义分析在编译中的作用
2.程序的语义、函数的语义理解:1.各种名字的声明和使用的语义
2.各种语句的语义
应用:1.表达式的语义
2.Sample 语言的语义应用
第五章 中间代码生成
能够理解中间代码的作用,语法制导翻译成中间代码的方法与技巧。能够通过语义分析,设计相应的语义规则,实现中间代码的输出。本章学习难点是了解属性文法、掌握语法制导翻译、掌握逆波兰记号、三元式和四元式等常用的中间代码、掌握赋值语句、 布尔表达式的翻译。
(一)常见语句的语法制导的翻译(重点)识记:声明语句的语义处理理解:1.布尔表达式的翻译
2.控制语句的翻译
(二)中间代码、属性文法和语法制导的翻译(重点)识记:1.逆波兰式
2.三地址代码
3.属性文法
理解:1.有向无环图表示
2.属性的计算、属性的计算顺序应用:语法制导翻译的实现方法(三)中间代码生成的概述(一般)识记:抽象语法树定义理解:1.抽象语法树
2.函数定义、函数调用的翻译
第六章 运行时存储组织理解高级语言的特点对编译程序设计的影响
。这部分是该课程的支持模块,为后续章节的代码优化与代码生成提供条件。通过这部分的学习,能使学生较全面的理解编译系统,并能够开发和维护有合理存储组织的编译程序。本章学习难点是理解静态存储管理、简单栈式存储管理和嵌套语句的栈式存储管理、了解符号表的组织方法。
(一)存储分配策略(重点)识记:1.静态存储分配
2.栈式存储分配
3.堆式存储分配
(二)函数调用(重点)识记:1.源程序中的函数
2.函数执行时的活动
3.名字的作用域
4.参数的传递
5.名字的绑定
(三)语言编译程序运行时存储实例(次重点)
理解:1.内存的划分及程序执行的总体情况
2.程序执行时存储器的划分和活动记录
3.局部数据布局
应用:程序运行时内存的变化
第七章 代码优化
这部分是该课程的高级模块,为开发实用的编译程序提供条件。通过这部分的学习,能使学生全面理解编译系统,并能够开发和维护较完整的编译程序。本章学习难点是掌握局部优化、循环优化、了解寄存器的管理及相应的算法。
(一)局部优化、循环优化(重点)识记:1.删除公共子表达式
2.循环的定义
3.基本块的 DAG 表示及优化理解:1.复写传播、删除无用代码
2.代码外提、删除归纳变量(二)局部优化、循环优化(次重点)
理解:1.强度削弱
2.代数恒等变换
(三)代码优化概述(一般)识记:1.代码优化的地位
2.基本块的概念及流图
第八章 目标代码生成
理解目标代码生成的任务,设计目标代码生成器需要考虑的主要问题,了解简单的代码生成器,了解目标代码生成要考虑的主要问题,寄存器的分配,基本块的代码生成, 以及从 DAG 生成代码。本章学习难点是掌握目标代码生成器的设计。
(一)基本块的代码生成器(重点)识记:1.引用信息和活跃信息
2.寄存器描述和地址描述理解:1.基本块的代码生成
2.从 DAG 生成目标代码(二)代码优化及目标代码生成器的设计(次重点)识记:1.目标代码生成器的结构
2.汇编指令的选择
应用:构成完整的汇编语言程序
第三部分
有关说明与实施要求
一、考核的能力层次表述
本大纲在考核目标中,按照“识记”、“理解”、“应用”三个能力层次规定其应达到的能力层次要求。各能力层次为递进等级关系,后者必须建立在前者的基础上,其含义是:识记:能知道有关的名词、概念、知识的含义,并能正确认识和表述,是低层次的要求。
理解:在识记的基础上,能全面把握基本概念、基本原理、基本方法,能掌握有关概念、原理、方法的区别与联系,是较高层次的要求。
应用:在理解的基础上,能运用基本概念、基本原理、基本方法联系学过的多个知识点分析和解决有关的理论问题和实际问题,是最高层次的要求。
二、教材
1.指定教材
《编译原理及实践教程》,黄贤英、王柯柯、曹琼、魏星,清华大学,2019 第三版
2.参考教材
[1]《编译原理教程》,李玉军、胡元义,西安电子科技大学出版社,2021 年第五版。
[2]《编译原理》,蒋宗礼,姜守旭,高等教育出版社,2017 年第二版。
[3]《编译器设计》,Keith D. Cooper,Linda Torczon,人民邮电出版社,2013 年第 2 版。
三、
自学方法指导
1.在开始阅读指定教材某一章之前,先翻阅大纲中有关这一章的考核知识点及对知识点的能力层次要求和考核目标,以便在阅读教材时做到心中有数,有的放矢。
2.阅读教材时,要逐段细读,逐句推敲,集中精力,吃透每一个知识点,对基本概念必须深刻理解,对基本理论必须彻底弄清,对基本方法必须牢固掌握。
3.在自学过程中,既要思考问题,也要做好阅读笔记,把教材中的基本概念、原理、方法等加以整理,这可从中加深对问题的认知、理解和记忆,以利于突出重点,并涵盖整个内容,可以不断提高自学能力。
4.完成书后作业和适当的辅导练习是理解、消化和巩固所学知识,培养分析问题、解决问题及提高能力的重要环节,在做练习之前,应认真阅读教材,按考核目标所要求的不同层次,掌握教材内容,在练习过程中对所学知识进行合理的回顾与发挥,注重理论联系实际和具体问题具体分析,解题时应注意培养逻辑性,针对问题围绕相关知识点进行层次(步骤)分明的论述或推导,明确各层次(步骤)间的逻辑关系。
四、对社会助学的要求
1.应熟知考试大纲对课程提出的总要求和各章的知识点。
2.应掌握各知识点要求达到的能力层次,并深刻理解对各知识点的考核目标。
3.辅导时,应以考试大纲为依据,指定的教材为基础,不要随意增删内容,以免与大纲脱节。
4.辅导时,应对学习方法进行指导,宜提倡“认真阅读教材,刻苦钻研教材,主动争取帮助,依靠自己学通”的方法。
5.辅导时,要注意突出重点,对考生提出的问题,不要有问即答,要积极启发引导。
6.注意对考生能力的培养,特别是自学能力的培养,要引导考生逐步学会独立学习,在自学过程中善于提出问题,分析问题,做出判断,解决问题。
7.要使考生了解试题的难易与能力层次高低两者不完全是一回事,在各个能力层次中会存在着不同难度的试题。
8.助学学时:本课程共 4 学分,建议总课时 72 学时,其中助学课时分配如下:
章次章节名称学时
第一章
编译概述
第二章
词法分析
第三章
语法分析
第四章
语义分析
第五章
中间代码生成
第六章
运行时存储组织
第七章
代码优化
第八章
目标代码生成合计
五、关于命题考试的若干规定
1.本大纲各章所提到的内容和考核目标都是考试内容。试题覆盖到章,适当突出重点。
2.试卷中对不同能力层次的试题比例大致是:“识记”为 30 %、“理解”为 40%、“应用”为 30 %。
3.试题难易程度应合理:容易、中等、难比例为 3:4:3。
4.每份试卷中,各类考核点所占比例约为:重点占 60%,次重点占 30%,一般占 10%。
5.试题类型一般分为:单项选择题、多项选择题、填空题、简答题、应用题、综合题等。
6.考试采用闭卷笔试,考试时间 150 分钟,采用百分制评分,60 分合格。
六、题型示例(样题)
一、单项选择题
(本大题共 5 小题,每小题 2 分,共 10 分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题卡”上的相应字母涂黑。错涂、多涂或未涂均无分。
1.编译程序的总体结构是A.词法分析、语法分析、语义分析与中间代码生成、代码优化、目标代码的生成 B.词法分析、语法分析、代码优化、目标代码的生成 C.词法分析、语法分析、语义分析与中间代码生成、目标代码的生成 D.词法分析、语法分析、语义分析与中间代码生成、代码优化
二、多项选择题
(本大题共 5 小题,每小题 2 分,共 10 分)在每小题列出的五个备选项中至少有两个是符合题目要求的,请将其选出并将“答题卡”上的相应字母涂黑。错涂、多涂、少涂或未涂均无分。
6. 词法分析中单词的种类一般包括A.常数 B.运算符 C.逻辑运算符 D.保留字 E.英文符
三、填空题
(本大题共 5 小题,每小题 2 分,共 10 分)
11.文法的四元组是指 。
四、简答题
(本大题共 4 小题,每小题 5 分,共 20 分)
16.写出由 0、1 构成的任意集合。
五、
应用题(本大题共 3 小题,每小题 6 分,共 18 分)
20.令Σ={a,b},设 R=a(a∣b)* 是Σ上的正规式,试求其表示的正规集。
六、综合题
(本大题共 2 小题,每小题 16 分,共 32 分)
23.LR 文法分析题给定文法 G[S]:S → AB A → dAd | a B → Bad | b
(1) 构造项目集合表示图
(2) 构造文法 SLR(1)分析表 (填写表 1)。
(3) 对句子 abad 进行分析,完成分析过程(填写表 2)。
表 1 Action Goto a b d # S A B I0 I1 I2 I3 I4 I5 I6 I7 I8 I9 I10 表 2 步骤状态栈符号栈输入串动作
