前言与简介
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
前言与简介
参考书目
1、《编译原理》陈意云高等教育出版社
2、《程序语言编译原理》陈火旺国防工业出版社
3、《编译原理——习题与解析》伍春香清华大学出版社
教学环节与安排
本课程2学分,课内学时32。
教学环节:讲课、辅导、测验、作业。
成绩评定:平时(作业、测验)占40%
期末考试(笔试、闭卷)占60%
答疑时间:3~17周周四下午3:00~4:00
答疑地点:科研楼B503
前言
编译原理是计算机专业中最难的一门课程之一,在理论上它要求学生掌握有关形势语言和自动机的抽象概念,在技术上要求学生能够熟练地利用各种数据结构进行编程,很具有挑战性。虽然学习编译原理课程相对于其他专业课程来说有一定的难度,但并非高不可攀,只要认真对待、用心去学,同样会在学习的过程中感受到探索的无穷乐趣!我们希望学生在学习完本课程之后,能够对形式语言和其内部结构有一个较深刻的认识。
课程要求
1、一定要预习:因课程有很强的理论性。
2、上课专心致志:有许多问题是前后有连贯性的,中断后难以接续,增加课后负担。
3、充分利用答疑:自学是一种很好的学习方法,对个人学习能力的提高很有帮助。在本课程的学习过程中,利用答疑的机会与教师充分地讨论,将会给您的学习节省很多宝贵时间。
4、重视习题:本课程讲述的一些具体方法,常常涉及到很多知识,不通过练习,很难真正全面地掌握。所以,建议您独立完成每章给定的习题。您将会发现,练习会加深对课程内容的理解,在本课程的学习中尤其如此。
5、确立好学习的角度:在学习的过程中,我们建议您站在编译程序的实现者的角度来看问题,而不仅仅是为了掌握课程的知识点,并且尽可能从编译程序的全局来把握问题,这对您理解各知识点会有很大的帮助。
6、重视实践:实践是深入理解课程内容的一个好帮手。在课程学习的过程中,通过自己的努力完成编译的一部分功能,不仅会让您深刻理解编译程序的工作原理,而且会让您有一种成就感,有助于您提高对本课程的学习信心。另外,在目前的学习阶段,较大的编程任务不多,本课程的实践环节正好可以实践程序设计语言课程所学的编程方法,锻炼一下自己的编程能力。但由于课时原因,本课程未安排实验,所以,希望大家尽量利用课余时间去实践,将课堂知识融会贯通!
7、切忌急功近利:急功近利是学习的一大敌人。有很多课程的学习都是对我们解决问题的能力的一种训练,在学习过程中不一定能马上看到它的作用。编译原理就是这样的一门课。由于本课程涉及程序的实现,所以对本课程的深刻理解,将有助于您今后对本专业许多问题的理解。本课程的学习一定会使您受益非浅!
简介
编译程序(Compiler)是计算机的重要系统软件,是高级程序设计语言的支撑基础。本课程主要介绍设计和构造编译程序的基本原理和方法。
本课程共分12章。
第1章:讲述编译程序的功能、结构、工作过程、组织方式、编译程序与高级语言的关系以及编译自动化方面的基本知识。
第2章:介绍形式语言理论,我们仅仅给出了便于理解、有助于研究各种分析方法和设计构造编译程序的形式语言理论,并着重介绍了上下文无关文法。
第3章:有穷自动机是描述词法的有效工具,也是进行词法分析的主要理论基础。因此,第3章专门讨论有穷自动机,它与正规文法、正规表达式之间的对应关系以及
它的确定化和最小化方面的知识。
第4章:讨论词法分析的功能和词法分析程序的设计方法。
上下文无关文法是一种可用于描述现今大多数高级程序设计语言的语法,也是语法分析的主要理论支柱。为此,在接下来的几章里,主要讨论与上下文无关文法相关的各类语法分析方法。
第5章:介绍自上而下分析方法,包括LL(k)文法、LL(1)分析方法和应用十分广泛的递归下降分析方法。
第6章:讨论自下而上分析方法的一般原理和优先分析方法,包括简单优先分析技术和算符优先分析方法。
第7章:专门讨论自下而上的LR(k)分析方法,包括LR(0)、SLR(1)、规范LR(1)以及LALR分析表的构造算法。
第8章:介绍语法制导翻译方法,主要讨论了SDTS的基本原理、属性翻译文法以及它们在中间代码生成中的应用。
第9章:讨论运行时的存储组织与管理,其中考虑了一些重要的语言特征,如过程调用、参数传递、数组和记录的存取方式以及多种存储分配技术。
第10章:讨论符号表的组织和存取符号表的各种方法。
第11章:介绍常用的优化方法。
第12章:简单讨论代码生成的原理。