编译原理1.2

编译器的结构(The Structure of a Compiler)

源程序的分析阶段分为:线性分析,层次分析,语义分析。

1、词法分析(Lexical Analysis)

2、语法分析(Syntax Analysis)

把源程序的记号分组,产生被编译器用于生成代码的语法短语。

词法结构不要求递归,语法结构需要递归。

3、语义分析(Semantic Analysis)

语义分析阶段检查源程序的语义错误,并收集代码产生阶段时用到的类型信息。语义分析通过语法分析的层次结构来区分表达式和语句中的操作符和操作数。

4、中间码的产生(Intermediate Code Generation)

源程序的中间代码:易于产生;易于翻译成目标程序。

5、代码生成(Code Generation)

编译器为源程序定义盒使用的变量选择存储单元,并把中间指令翻译完成相同任务的机器代码指令序列。

6、符号表的管理(Symbol-Table Management)

符号表时一个数据结构。每个标识符在符号表中都有一条记录,记录每个域对对应于该标识符的一个属性。这种数据结构允许我们快速地找到每个标识符的记录,并在该记录中快速地存储盒检索信息。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、以 Hello World开篇 Hello World对程序员而言肯定是如雷贯耳。但是简单的事物背后往往包含这...
    ZhengYaWei阅读 8,598评论 10 84
  • Kotlin 源代码编译过程分析 我们知道,Kotlin基于Java虚拟机(JVM),通过Kotlin编译器生成的...
    光剑书架上的书阅读 2,984评论 0 13
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,259评论 19 139
  • 线程可以理解为下载的通道,一个线程就是一个文件的下载通道,多线程也就是同时开启好几个下载通道。 首先我们先把tom...
    蛋蛋不哭阅读 486评论 0 0
  • 心里很乱。 没有勇气去揭起伤疤。 怕人家说我负能量,便开始不敢过多发朋友圈和空间日志。 于是在这里写写吧。 从没有...
    默鱼牛奶阅读 131评论 0 0