编译原理王生原(第一章).

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《编译原理》第一讲课程概述编译原理PrinciplesandPracticeofCompilerConstruction《编译原理》有关信息编译程序/系统概述课程概述教学内容预览《编译原理》课程信息课程性质教师信息教学目的要求有关信息助教信息参考教材实验计划参考书目答疑与交流考核计划书面作业相关课程《编译原理》课名编译原理类别必修时间09-9-24至10-1-7每周四上午8:00-9:35教室六教6C201班级计07时数32-2课程信息《编译原理》计算机专业主干课编译程序/系统是计算机系统的核心支撑软件贯穿程序语言、系统环境(平台)、体系结构联系计算机科学和计算机系统的典范专业工作者必备的基本技能编译原理的知识影响到专业人员的素质除编译程序外有大量专业工作与编译技术相关课程性质《编译原理》理解编译程序设计与实现的基本原理掌握常用语言机制的实现技术经历开发一个小型编译程序的主要阶段具有使用构造工具开发编译程序的经验会将所学的通用方法和技术应用于类似软件的设计和实现中教学目的要求原理+技术+工具《编译原理》先修课程《程序设计》(高级语言、汇编语言)《数据结构》《形式语言与自动机》其它相关课程《计算机系统结构》,《操作系统》,《程序语言与系统》,《计算语言学》,《形式语义学》相关课程《编译原理》教师信息姓名王生原单位计算机系软件技术研究所电话62794240(O)13366102912办公室东主楼10区209电子信箱wwssyy@tsinghua.edu.cn研究领域程序设计语言理论与实现并发程序设计(方法与模型)《编译原理》姓名张铎(实验)单位计算机系软件与理论研究所电话62781474答疑时间周四下午3:00~5:00答疑地点东主楼10区202网上答疑清华网络学堂电子信箱zhangduo07@mails.tsinghua.edu.cn助教信息《编译原理》姓名孙金龙(收作业)单位计算机系软件与理论研究所电话62794240电子信箱gordon@mail.tsinghua.edu.cn助教信息《编译原理》参考教材Compilers:Principles,Techniques,andTools(龙书)AlfredV.Aho,RaviSethi,JeffreyD.Ullman第一版(1986),人民邮电版影印,2002.(机械工业版中译本,2003)第二版(2007),AddisonWesley(AlfredV.Aho,MonicaS.Lam,RaviSethi,JeffreyD.Ullman)《编译原理》ModernCompilerImplementationinC(虎书)AndrewW.Appel,人民邮电出版社影印,2005ProgrammingLanguagePragmaticsMichaeil.Scottetc.,电子工业出版社中译本,2005参考书目ElementsofCompilerDesignAlexanderMeduna,Taylor&FrancisGroup,2008AdvancedCompilerDesignandImplementation(鲸书)StevenS.Muchnick,1997.机械工业出版社影印,2003EngineeringaCompilerKeithCooper,LindaTorczon,MorganKaufmann,2003其他张素琴吕映芝(清华)陈火旺(国防科大)陈意云(中科大)杜淑敏(北大)《编译原理》随堂布置登记完成情况期末考试前全部交齐书面作业《编译原理》实验计划Decaf/Mind项目实现一个小型面向对象语言(给定架构和部分实现)分4个阶段进行预计8周时间《编译原理》总评成绩(100%)平时(10%)(书面作业抽查+表现)实验(35%)(4阶段9+9+9+8)期末考试(55%)注:对于无实验成绩(或放弃实验成绩)者:期末考试成绩不低于70分,则按56分记入总成绩期末考试成绩低于70分,则按80%记入总成绩考核计划《编译原理》通过网络清华网络学堂(课程讨论区)166.111.68.86电子邮件wwssyy@tsinghua.edu.cn面对面时间预约第2–16周上班时间(节假日除外)地点东主楼10区209室答疑与交流《编译原理》教学形式课内学习和课外学习内容互补教学内容预览原理+技术+工具课内课外《编译原理》教学内容课堂教学内容及课时计划基本概念逻辑结构组织方式伙伴程序生成环境2学时教学内容预览•编译程序/系统概述•Decaf/Mind编译实验项目•词法分析•语法分析•语法制导的语义处理基础•符号表组织•语义分析•中间代码生成•运行时存储组织•目标代码生成•代码优化《编译原理》教学内容实验项目简介2学时教学内容预览课堂教学内容及课时计划•编译程序/系统概述•Decaf/Mind编译实验项目•词法分析•语法分析•语法制导的语义处理基础•符号表组织•语义分析•中间代码生成•运行时存储组织•目标代码生成•代码优化《编译原理》教学内容词法分析基础1学时教学内容预览课堂教学内容及课时计划•编译程序/系统概述•Decaf/Mind编译实验项目•词法分析•语法分析•语法制导的语义处理基础•符号表组织•语义分析•中间代码生成•运行时存储组织•目标代码生成•代码优化《编译原理》教学内容自顶向下语法分析3学时自底向上语法分析5学时教学内容预览课堂教学内容及课时计划•编译程序/系统概述•Decaf/Mind编译实验项目•词法分析•语法分析•语法制导的语义处理基础•符号表组织•语义分析•中间代码生成•运行时存储组织•目标代码生成•代码优化《编译原理》教学内容基于属性文法和翻译模式进行语义处理的基本原理及实现技术4学时教学内容预览课堂教学内容及课时计划•编译程序/系统概述•Decaf/Mind编译实验项目•词法分析•语法分析•语法制导的语义处理基础•符号表组织•语义分析•中间代码生成•运行时存储组织•目标代码生成•代码优化《编译原理》教学内容强调作用域及其组织方式1学时教学内容预览课堂教学内容及课时计划•编译程序/系统概述•Decaf/Mind编译实验项目•词法分析•语法分析•语法制导的语义处理基础•符号表组织•语义分析•中间代码生成•运行时存储组织•目标代码生成•代码优化《编译原理》教学内容以类型检查程序设计为重点2学时教学内容预览课堂教学内容及课时计划•编译程序/系统概述•Decaf/Mind编译实验项目•词法分析•语法分析•语法制导的语义处理基础•符号表组织•语义分析•中间代码生成•运行时存储组织•目标代码生成•代码优化《编译原理》教学内容以常用语言机制的实现技术为主线2学时教学内容预览课堂教学内容及课时计划•编译程序/系统概述•Decaf/Mind编译实验项目•词法分析•语法分析•语法制导的语义处理基础•符号表组织•语义分析•中间代码生成•运行时存储组织•目标代码生成•代码优化《编译原理》教学内容存储布局,存储分配策略,活动记录,过程实现,面向对象程序存储组织,……2学时教学内容预览课堂教学内容及课时计划•编译程序/系统概述•Decaf/Mind编译实验项目•词法分析•语法分析•语法制导的语义处理基础•符号表组织•语义分析•中间代码生成•运行时存储组织•目标代码生成•代码优化《编译原理》教学内容以简单但完整的指令选择、寄存器分配过程为主线3学时教学内容预览课堂教学内容及课时计划•编译程序/系统概述•Decaf/Mind编译实验项目•词法分析•语法分析•语法制导的语义处理基础•符号表组织•语义分析•中间代码生成•运行时存储组织•目标代码生成•代码优化《编译原理》教学内容以基本块内的简单优化方法、控制流数据流分析基础等代码生成和优化相关的基本知识为主线,辅以优化技术的综述】3学时教学内容预览课堂教学内容及课时计划•编译程序/系统概述•Decaf/Mind编译实验项目•词法分析•语法分析•语法制导的语义处理基础•符号表组织•语义分析•中间代码生成•运行时存储组织•目标代码生成•代码优化《编译原理》教学内容实验教学•实现一个简单的面向对象语言一个强类型单继承面向对象语言Decaf/Mind教学内容预览《编译原理》教学内容实验教学Phase1借助Lex和Yacc实现词法和语法分析一遍扫描后产生一种高级中间表示(实验指定的抽象语法树AST)Phase2遍历抽象语法树构造符号表、实现静态语义分析,产生带标注的抽象语法树Phase3从带标注的抽象语法树生成TAC中间表示(可转成MIPS汇编码在SPIM模拟器上运行)Phase4基于TAC实现一些简单的数据流分析•Decaf/MindProject(共8周)教学内容预览《编译原理》编译程序概述什么是编译程序编译程序的逻辑结构编译程序的伙伴程序编译程序的组织编译程序的生成环境《编译原理》什么是编译程序从基本功能来看,编译程序(Compiler)是一种翻译程序(Translator)将语言A的程序翻译为语言B的程序称语言A为源语言(SourceLanguage)称语言B为目标语言(TargetLanguage)sourceprogramtargetprogramcompilerfeedbackmessages《编译原理》什么是编译程序编译程序是较为复杂的翻译程序需要对源程序进行分析(Analysis),识别源程序的结构信息,理解源程序的语义信息,反馈出错的语法、语义信息根据分析结果进行综合(Synthesis),生成语义上等价于源程序的目标程序较为简单的翻译程序如:预处理程序(Preprocessor),一般只基于简单的模式匹配来实现翻译《编译原理》什么是编译程序编译程序通常是从较高级语言的程序翻译至较低级语言的程序,如C代码汇编代码aCcompilerC++代码汇编代码aC++compilerC++代码C代码anotherC++compilerJava代码Bytecode代码aJavacompiler《编译原理》什么是编译程序经编译程序生成的目标语言程序可以在支持该目标语言的虚拟机上执行汇编代码可执行的目标代码汇编程序目标代码连接程序库代码汇编语言虚拟机C代码C语言虚拟机Ccompiler……Java虚拟机Bytecode代码字节码解释程序……《编译原理》编译程序的逻辑结构编译程序的工作逻辑上可分为两个阶段分析(Analysis)阶段理解源程序,挖掘源程序的语义综合(Synthesis)阶段生成与源程序语义上等价的目标程序《编译原理》编译程序的逻辑结构典型编译程序的逻辑过程词法分析语法分析语义分析和中间代码生成中间代码优化目标代码优化目标代码生成字符流单词流语法分析树中间表示优化的中间表示目标代码优化的目标代码后端前端《编译原理》编译程序的逻辑结构编译程序的前端和后端前端(FrontEnd)实现分析阶段的任务(含中间代码生成和优化)传统上,前端不涉及目标程序及其虚拟机的任何信息后端(BackEnd)实现综合阶段的任务(目标代码生成和优化)后端的设计与目标程序及其虚拟机密切相关《编译原理》编译程序的逻辑结构典型编译程序的主要逻辑模块词法分析模块语法分析模块语义分析模块中间代码优化模块目标代码优化模块目标代码生成模块符号表管理模块中间代码生成模块出错处理模块《编译原理》词法分析扫描源程序字符流,识别出有词法意义的单词,返回单词的类别和单词的值,或词法错误信息编译程序的逻辑结构classMain{staticvoidmain(){Print(helloworld);}}单词类别单词值保留字class标识符Main分隔符{保留字static保留字void标识符main分隔符(分隔符)分隔符{保留字Print分隔符(字符串长量“helloworld”分隔符)分隔符;分隔符}分隔符}《编译原理》语

1 / 64
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功