致富彩票

编译原理——哈尔滨工业大学

  • 名称:编译原理——哈尔滨工业大学
  • 分类:电脑基础  
  • 观看人数:加载中
  • 时间:2020/12/11 16:26:53
分享到:

这学期在《编译原理》这门课的实验中收获了很多。最重要的是学习了一种系统设计的思想,一种对全局把握的能力。系统是一个很庞大的工程,它里面包含很多模块,模块之间相互联系,虽然尽量使用“高内聚,低耦合”的设计思想,但系统越大,不可避免地会提高模块之间的耦合程度,这时就需要设计者既有一种纵观全局的开阔眼界,又有对每一个细节的精准把握。在编写这个编译器的过程中我的体会是:代码越多,调试越困难。因为代码越多,程序一旦编写错了,定位出错位置就比较难了。比如我在编写语法分析器的过程中发现有一个错误如何调试都不对,后来发现不是语法分析的代码有错,而是之前编写的词法分析器有一个隐性的错误当时测试时没有发现,这让我感到其实程序测试也是很重要的一项的工作,尤其是在比较大型的系统编写过程中,需要对之前编写的代码进行充分的测试,保证在开始新工作之前以前的代码都是正确的。另一个让我印象深刻的错误是在编写符号表的过程中,是一个很低级的错误,但却花费了我好几天也没调试出来,就是声明一个指针int *pint;那么在访问过程中如pint+1,这个1的单位不是字节,而是这个pint类型的size,在这里相当于加了4个字节。这个错误在于我对C语言的掌握不够,以前的知识模糊。调试这个错误的过程中IDE提示的出错位置不是在这,而是在另一个malloc申请内存的语句处,这是因为以前错误对不该访问的地址访问、赋值,导致程序在申请堆上空间时出错。

本课程共计20讲。

第1讲 绪论

第2讲 程序设计语言及其文法

第3讲 词法分析

第4讲 语法分析_1

第5讲 语法分析_2

第6讲 语法分析_3

第7讲 语法分析_4

第8讲 语法制导翻译_1

第9讲 语法制导翻译_2

第10讲 语法制导翻译_3

第11讲 中间代码生成_1

第12讲 中间代码生成_2

第13讲 中间代码生成_3

第14讲 中间代码生成_4

第15讲 运行存储分配

第16讲 代码优化_1

第17讲 代码优化_2

第18讲 代码优化_3

第19讲 代码优化_4

第20讲 代码生成

 课程大纲

第1讲 绪论

1-1 什么是编译

1-2 编译系统的结构

1-3 词法分析概述

1-4 语法分析概述

1-5 语义分析概述

1-6 中间代码生成及编译器后端概述

本讲模拟练习题(不计分)

本讲课程讲义(PDF文档)

【讨论1-1】编译过程与人工翻译过程之间的关系

【讨论1-2】符号表中NAME字段的设计

第1讲 测验(计分)

本讲课程讲义(PPT文档)

第2讲 程序设计语言及其文法

2-1 基本概念

2-2 文法的定义

2-3 语言的定义

2-4 文法的分类

2-5 CFG的分析树

本讲模拟练习题(不计分)

本讲课程讲义(PDF文档)

【讨论2-1】计算机中是如何表示语言的?

【讨论2-2】每一类单词可否看成一种语言?

第2讲测验(计分)

本讲课程讲义(PPT文档)

第3讲 词法分析

3-1 正则表达式

3-2 正则定义

3-3 有穷自动机

3-4 有穷自动机的分类

3-5 从正则表达式到有穷自动机

3-6 从NFA到DFA的转换

3-7 识别单词的DFA

本讲模拟练习题(不计分)

本讲课程讲义(PDF文档)

第3讲测验(计分)

本讲课程讲义(PPT文档)

第4讲 语法分析_1

4-1 自顶向下分析概述

4-2 文法转换

4-3 LL(1)文法

本讲模拟练习题(不计分)

本讲课程讲义(PDF文档)

4-4 FIRST集和FOLLOW集的计算

本讲课程讲义(PPT文档)

第4讲测验(计分)

第5讲 语法分析_2

4-5 递归的预测分析法

4-6 非递归的预测分析法

4-7 预测分析中的错误处理

本讲模拟练习题(不计分)

本讲课程讲义(PDF文档)

第5讲测验(计分)

本讲课程讲义(PPT文档)

第6讲 语法分析_3

本讲课程讲义(PPT文档)

4-8 自底向上分析概述

4-9 LR分析法概述

4-10 LR(0)分析

4-11 LR(0)分析表构造算法

本讲模拟练习题(不计分)

本讲课程讲义(PDF文档)

【讨论6-1】下推自动机与有穷自动机之间的关系

【讨论6-2】LR语法分析栈中状态信息与文法符号信息之间的关系

第6讲测验(计分)