欢迎来到天天文库
浏览记录
ID:34451422
大小:1.39 MB
页数:38页
时间:2019-03-06
《chapter01-instroduction》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、编译原理CompilerPrinciples2011年9月联系方式计算机与软件学院计算机楼(电子楼)205郑关胜Email:zgs@nuist.edu.cn班级信箱:ID:nuistcompiler@hotmail.comPassword:2008compiler第一章编译概述•前导课程及涉及内容•什么是编译•学习编译原理的重要性•编译器的逻辑结构(工作阶段)•编译器各阶段的工作•编译器的组织•编译器的设计•学习本课程应注意的问题32011年9月4日前导课程及涉及内容组成原理——计算机机器结构微机原理——汇编语言与机器语言离散数学——推理知识及其完备性
2、数据结构——表、树和哈希表表示与实现操作系统——提供虚拟机和系统调用高级程序设计语言——语言定义和编程42011年9月4日第一章编译概述•前导课程及涉及内容•什么是编译•学习编译原理的重要性•编译器的逻辑结构(工作阶段)•编译器各阶段的工作•编译器的组织•编译器的设计•学习本课程应注意的问题52011年9月4日编译的发展历史机器语言、汇编语言的局限性50年代左右开始编译原理的研究54~57年IBM的JohnBackus研究第一个编译器56年NoamChomsky形式语言1966年A.J.Perlis因在新一代编程技术和编译架构方面的贡献而获奖70年编译
3、技术成熟,实现词法与语法识别自动化Lex&Yacc主要是后端发展---优化、对象、容错、分布62011年9月4日术语:编译程序把高级语言源程序表示的算法翻译成等价的低级语言表示的翻译程序。源目程编译程序标序程序把面向人的高级抽象描述的算法等价转换到可执行程序的程序72011年9月4日汇编、编译和解释联系与区别汇编程序:汇编语言源程序某机器语言程序编译程序:高级语言源程序低级语言程序解释程序:对高级语言源程序逐句进行解释执行,不产生目标代码(与用户通信方便)82011年9月4日第一章编译概述•前导课程及涉及内容•什么是编译•学习编译原理的重要性•编译器的
4、逻辑结构(工作阶段)•编译器各阶段的工作•编译器的组织•编译器的设计•学习本课程应注意的问题92011年9月4日学习编译原理的重要性学习这门课程有利于对程序设计语言的理解,可以迅速掌握新的语言工具编译程序是计算机系统中的系统软件,包含许多软件技术,提供一个软件设计的参考编译原理蕴涵着抽象问题、解决问题的思路和方法编译原理对计算机学科的重要性就如同高等数学对理工科学生一样102011年9月4日第一章编译概述•前导课程及涉及内容•什么是编译•学习编译原理的重要性•编译器的逻辑结构(工作阶段)•编译器各阶段的工作•编译器的组织•编译器的设计•学习本课程应注意的问题
5、112011年9月4日编译程序的逻辑结构各种信息表的管理词语语中目源法义间优标目法代代标程分分码码分代序析析析生化生码和成成错误诊查处理122011年9月4日第一章编译概述•前导课程及涉及内容•什么是编译•学习编译原理的重要性•编译器的逻辑结构(工作阶段)•编译器各阶段的工作•编译器的组织•编译器的设计•学习本课程应注意的问题132011年9月4日源程序#includeintmain(void){floata,b,c;cin>>b>>c;a:=b+c*60;cout<6、隔符,#><保留字,include><分隔符,<><标识符,iostream><分隔符,.><标识符,h><分隔符,>><保留字,int><保留字,main>……<保留字,float><标识符,a><分隔符,,><标识符,b><分隔符,,><标识符,c><分隔符,;>……<标识符,a><算符,=><标识符,b><算符,+><标识符,c><算符,*><常数,60>……<分隔符,;><分隔符,}>152011年9月4日语法分析a=b+c*60;赋值语句变量=表达式;a表达式+项项项*因子因子因子60bc162011年9月4日语义分析=a+*binttorealc7、60172011年9月4日生成中间代码temp1:=inttoreal(60);temp2:=c*temp1;temp3:=b+temp2;a:=temp3;182011年9月4日优化temp1:=c*60.0a:=b+temp1生成目标代码movfc,r2mulf#60.0,r2movfb,r1addfr2,r1movfr1,a192011年9月4日编译程序使用的数据结构记号、符号、单词(token):枚举类型语法树:基于指针的树型结构,节点是包含共同体数据类型的记录符号表:记录与标号相关的信息文字表:记录程序中使用的常量和字符传中间代码:三元式8、和P代码临时文件202011年9月4日符号表名字种
6、隔符,#><保留字,include><分隔符,<><标识符,iostream><分隔符,.><标识符,h><分隔符,>><保留字,int><保留字,main>……<保留字,float><标识符,a><分隔符,,><标识符,b><分隔符,,><标识符,c><分隔符,;>……<标识符,a><算符,=><标识符,b><算符,+><标识符,c><算符,*><常数,60>……<分隔符,;><分隔符,}>152011年9月4日语法分析a=b+c*60;赋值语句变量=表达式;a表达式+项项项*因子因子因子60bc162011年9月4日语义分析=a+*binttorealc
7、60172011年9月4日生成中间代码temp1:=inttoreal(60);temp2:=c*temp1;temp3:=b+temp2;a:=temp3;182011年9月4日优化temp1:=c*60.0a:=b+temp1生成目标代码movfc,r2mulf#60.0,r2movfb,r1addfr2,r1movfr1,a192011年9月4日编译程序使用的数据结构记号、符号、单词(token):枚举类型语法树:基于指针的树型结构,节点是包含共同体数据类型的记录符号表:记录与标号相关的信息文字表:记录程序中使用的常量和字符传中间代码:三元式
8、和P代码临时文件202011年9月4日符号表名字种
此文档下载收益归作者所有
点击更多查看相关文章~~