CS2CO16-Compilers
模块供应商: Computer Science
学分数: 10 [5 ECTS credits]
水平:5
教学用语: 春天 term module
先决条件: CS1PR16 Programming or CS1PC20 Programming in C/C++
模块化的必备条件:
相关内容:
模块被排除在外:
目前从: 2021/2
模块召集人: 马丁·莱斯特博士
电子邮件: m.lester@reading.ac.uk
模块类型:
概述模块描述:
This module presents the theory and practice of compilers, including how to write a compiler and introductory computation theory. 编译器将人编写的源代码转换成计算机可执行的机器码。 因此,知道了编译器的工作原理,就可以理解编程和计算机NBA投注[手机]俱乐部之间的联系。 该模块还考虑了编程语言设计和实现中更广泛的问题。
目的:
本模块介绍了编译器的理论和实践。 模块的第一部分概述了编译器及其结构。 MiniJava的编译器逐渐在Java中开发,使用解析器生成器ANTLR。 随着每个新特性被添加到编译器中,编译器的相关部分也会被修改。 该模块的第二部分更详细地涵盖了计算理论和算法的一些相关主题:词法分析的有限状态自动机; 语法分析的解析算法; 以及停止理论与优化的相关性。 这一部分还介绍了几个常见的优化。
可评估的学习成果:
完成本模块后,学生将能够:
- 为一种简单的编程语言编写一个编译器,或者修改现有的语言;
- 使用解析器生成器为编程语言创建解析器;
- 描述和解释典型编译器中每个阶段的目的;
- 计算有限状态自动机是否识别输入单词;
- Convert descriptions of regular languages between natural language, regular expressions and finite state automata;
- 为特定的编程语言结构提出巴克斯瑙尔形式(BNF)的规则;
- 给定一个BNF语法,绘制一个句子的解析树或最左派生;
- 描述一个解析算法是如何工作的,并为一个简单的例子跟踪它的执行;
- 证明给定的语法是不明确的;
- Rewrite an ambiguous grammar to enforce the correct precede nce or associativity;
- 解释类型在编程语言中的作用;
- 建议对编程语言结构或代码片段需要哪些类型检查;
- 编写与高级语言代码对应的中间代码;
- 描述常见的编程语言优化,并将其应用于高级语言代码或中间代码;
- Critically analyse the correctness and effectiveness of unfamilia r optimisations;
- 陈述暂停定理及其与程序优化的相关性;
- 暂停定理的非正式证明;
- 批判性地分析编程语言设计和实现中的决策。
额外的结果:
具有基本的计算理论知识。 对编程语言设计和实现中一些更广泛的问题的理解。
大纲内容:
- 编译器的典型结构以及它如何实现代码重用;
- 指定编程语言的不同方式;
- 用于指定编程语言标记和语法的巴克斯瑙尔格式的正则表达式和语法;
- 使用解析器生成器(如lex/yacc或ANTLR)进行词法分析和语法分析;
- 手工编写简单的词法分析引擎或递归下降解析器;
li>
- 有限状态自动机及其在词法分析中的应用
- Earley对上下文无关语法的解析算法(或其他一些解析算法);
- 语义分析:变量作用域、存储分配和类型在编程语言中的作用;
- Intermediate code generation for a variety of common programming language constructs, such as assignment, compound expressions, conditionals, loops, functions, arrays and objects;
- 机器码生成;
- 程序优化的目标和在确保安全优化中考虑副作用的重要性;
- 一些常见的程序优化;
- 优化的基本限制,如暂停定理所施加的。
教学方法简述:
讲座演示了如何使用“脚手架”方法编写编译器。 新功能逐渐添加到编译器中,允许学生一次专注于编译器的一个阶段。 讲座还包括简短的练习,让学生在讲座期间完成,以检查他们的理解。 After a basic compiler has been developed in lectures, lab practicals provide support for students to develop their understanding of the material with support while completing the coursework.
秋天 | 春天 | 夏天 | |
讲座 | 16 | ||
实践课程和工作坊 | 4 | ||
引导自主学习: | 80 | ||
按学期划分的总学时 | 0 | 100 | 0 |
模块总学时 | 100 |
方法 | 百分比 |
笔试 | 70 |
设置运动 | 30 |
总结性评核-考试:
5月/ 6月一次2小时的试卷(70%)。
总结性评估-课程作业和课堂测试:
一项任务是为现有的编译器添加一个特性(30%)。
形成性评价方法:
没有。
逾期提交的处罚:
支助中心将对逾期提交的工作实行下列处罚:
- 在原定截止日期(或任何正式同意的延期截止日期)之后提交的作业:截止日期后的每个工作日(或其中的一部分)将从该作业的总分数中扣除10%的分数,最多可达五个工作日;
- 如果作品在原始截止日期(或任何正式同意的截止日期延长)后超过五个工作日提交:将记录零分。
You are strongly advised to ensure that coursework is submitted by the relevant deadline. 您应该注意,建议在未完成状态下提交作业,而不是没有提交任何作业。
通过考试的评估要求:
总体得分为40%。
重新安排:
8月/ 9月一次2小时的考试。 请注意,补考模块的分数将以以下两项中较高者为准:(a)本次补考的分数,(b)本次补考的分数与之前课程作业的分数的平均值,根据第一次尝试(70%考试,30%课程作业)进行加权。
额外费用(适用时指定):
1) Required text books: None
2) Specialist equipment or materials: None
3) Specialist clothing, footwear or headgear: None
4) Printing and binding: None
5) Computers and devices with a particular specification: None
6) Travel, accommodation and subsistence: None
最后更新: 2021年7月29日
本模块描述中包含的信息不构成学生合同的任何部分。