`
linuxstuding
  • 浏览: 1233950 次
文章分类
社区版块
存档分类
最新评论

计算机编译过程

 
阅读更多

计算机编译程序的基本过程

编译程序是将高级语言的源程序翻译成与之等价的目标程序(汇编语言或机器语言)

1:词法分析

词法分析的任务就是把源程序构成的字符串转换成单词序号序列.:标识符,常数,关键字,运算符,分界符等.

词法分析用到有限自动机的方法去处理.

有限状态自动机所接受的语言就是正规语言.使用正规表示是表达.

2:语法分析

语法分析的任务就是在词法分析的基础上,根据语言的规则将单词符号的序列转换成各类语法单位,"表达式","语句","程序".语法规则就是各类语法单位构成的规则,通过分析确定输入串是否构成一个语法上正确的程序.如果源程序没有错误,就构造其语法树,否则指出语法错误,给出诊断信息.

语法分析用到下推自动机处理.

下推自动机除了有限状态自动机以外,还包括一个长度不受限制的栈.下推自动机把有限状态自动机扩展为可以存取一个栈.

下推自动机定义:

下推自动机 M 是如下的一个七元组 ( Q, Σ, Γ, δ, q0, Z0,F ) ,其中:

  *Q 是一个有穷状态集合;

  * Σ 是一个字母表,称为输入字母表。

  * Γ 是一个字母表,称为栈字母表。

  *q0 属于 Q ,是初始状态。

  * Z0 属于 Γ ,是一个特殊的栈符号,称为栈起始符号。

  *F 包含于 Q ,是终结状态集合。

  * δ : Q×(Σ{ε})×Γ -> Q×Γ* 是 M 的动作函数。

3:语义分析阶段

主要检查程序是否包含语义错误,并收集类型信息供后面代码生成阶段使用.主要进行类型分析检查.比如整除只能对整数数据进行.

4:中间代码生成

虽然编译程序可以直接把一个源程序翻译成目标程序,但是很多编译系统的设计中采取独立与机器的代码过度.便于编译系统的建立和移植,优化.常见代码有:语法树,后缀式,三地址代码.

后缀式就是表达式的后缀表达式.也叫逆波兰式.

三地址式就四元式.

5:代码优化

中间代码在时间和空间上往往有很大的浪费.当需要生成高效的目标代码时,就需要优化.优化往往在中间代码优化,对程序的控制流和数据流进行优化.

6:目标代码生成

将中间代码变成机器指令代码,或汇编指令代码.

7:符号表管理

符号表的作用是记录目标程序中的符号必要信息,以辅助语义的正确性检查和代码生成,在编译过程需要对符号表进行快速的查找,插入,删除,修改操作.可以在词法分析阶段开始,可以放放到语法分析和语义分析阶段.

一直延续到目标代码生成

8:出错处理

错误分类:

静态错误:是编译阶段发现的程序错误,分为语法错误,和静态语义错误.如单词拼写错误,标点符号错误,表达式缺少操作符等.

动态错误:又指动态语义错误,逻辑错误.发生在运行阶段,例如数组下标越界等.

编译器发现错误后,采取适当策略修复它们,时的分析错误继续下去,以便找出更多错误.


分享到:
评论

相关推荐

    计算机语言编译运行过程简介

    计算机语言编译运行过程简介

    编译原理课件导论--总体编译过程介绍

    1.2 编译过程和编译程序的结构 1.3 解释程序和一些软件工具 1.4 程序设计语言范型 本章没有难以理解的内容,重点对编译程序的功能和结构做一综述,要说难点的话可能是:了解编译程序各个成分在编译阶段的逻辑关系...

    高级语言源程序经过 编译 变成可执行文件,反编译就是逆过程。 但是通常不能把可执行文件变成高级语言源代码,只能转换成汇编程序。 计算机软件反向工程(Reversepengineering)也称为计算机软件还原工程,是指通过对他人..共1次编辑

    高级语言源程序经过 编译 变成可执行文件,反编译就是逆过程。 但是通常不能把可执行文件变成高级语言源代码,只能转换成汇编程序。 计算机软件反向工程(Reversepengineering)也称为计算机软件还原工程,是指通过对...

    计算机专业主要学习哪些课程.docx

    编译原理的学习和实践通常基于对计算机编译过程、计算机基本工作原理、甚至一定的数学知识有一定积累,这些知识分别分布并应用在了编译原理的不同阶段。没有这些基本知识的积累,很快就会在某个阶段由于功底不够而...

    计算机编译原理课程设计

    法分析作为编译过程的核心部分,其任务是在词法分析识别单词符号串的基础上,分析并判断程序的的语法结构是否符合语法规则。语言的语法结构是用上下文无关文法描述的。因此语法分析器的工作的本质上就是按文法的产生...

    电子科技大学计算机学院编译原理实验报告

    电子科技大学 计算机学院 编译原理实验报告 (一)实验内容: 根据给定的方法,编写相应的递归下降的语法分析程序,实现对词法分析后的单词序列的语法检查和程序结构的分析,生成相应的变量名表和过程名表,并将...

    计算机编译原理——词法分析源程序

    计算机编译原理书上要求的,是课堂作业。程序要求能对输入的字符串流进行词法分析。在实验的过程中,学会应用单词分析的方法——NFA(非确定有穷自动机)和DFA(确定有穷自动机)。

    编译原理期中测试

    用解释型编译程序,执行速度很慢,但可以进行人和计算机的"对话",随时 可以修改高级语言的程序。BASIC语言就是解释型高级语言。编译型编译程序将 级语言编写的程序,一次就会部翻译成机器语言表示的程序,而且过程...

    计算机编译原理 课后答案

    编译原理课后答案,解析过程很详细,但是不是十分的完整。

    编译原理中文版

    《计算机科学丛书:编译原理》全面、深入地探讨了编译器设计方面的重要主题,包括词法分析、语法分析、语法制导定义和语法制导翻译、运行时刻环境、目标代码生成、代码优化技术、并行性检测以及过程间分析技术,并在...

    计算机编译原理实验报告

    1、对PL/0作以下修改扩充: (1)增加单词:保留字 ELSE,FOR,TO,DOWNTO,RETURN ...# define levmax 3 /*最大允许过程嵌套声明层数[0,lexmax]*/ # define cxmax 200 /*最多的虚拟机代码数*/ /*符号*/

    VC分布式编译_3.10

    这是一个对应Visual C++ 的分布式编译软件, 通过Visual C++强大的IDE扩展功能, 它有着非常友好的界面, 可以将整个分布式编译过程直观的展现给用户, 并且它通过一个"虚拟机"的技术, 使能编译的参与者可以与编译发起者...

    程序设计语言编译原理 (陈火旺)

    1.2编译过程概述 1.3编译程序的结构 1.3.1编译程序总框 1.3.2表格与表格管理 1.3.3出错处理 1.3.4遍 1.3.5编译前端与后端 1.4编译程序与程序设计环境 1.5编译程序的生成 第二章高级语言及其语法描述 2.1 ...

    《编译原理》课后习题答案

    可以说整个编译过程就是造表、查表的工作过程。需要指 出的是,这里的“表格管理程序”并不意味着它就是一个独立的表格管理模块,而是指编译 程序具有的表格管理功能。 错误处理程序:处理和校正源程序中存在的词法...

    c语言编译过程详解,预处理,编译,汇编,链接

    我们的代码会经过这4个环节,从而形成最终文件,c语言作为编译语言,用来向计算机发出指令。让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。预处理展开头文件/宏替换/...

    编译原理(第二版)徐国定

    编译原理是高等学校计算机专业的一门专业基础课程。本书系统地介绍程序语言编译程序的构造方法,内容涉及词法分析、句法分析、语义分析、目标代码生成、代码优化和出错处理。为了让读者深刻理解编译程序的工作过程,...

    编译原理(设计符号表)

    用c编译的符号表,用于编译原理,里面也包含源代码

    jvm指令手册 +JVM必知必会,掌握虚拟机编译过程.rar

    JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 引入Java语言虚拟机后,Java语言在不同平台...

    编译原理 第二版

    作者: Alfred V. Aho / Monica S.Lam / Ravi Sethi / ...本书是编译原理课程方面的经典教材,内容丰富,适合作为高等院校计算机及相关专业本科生及研究生的编译原理课程的教材,也是广大技术人员的极佳参考读物。

    编译原理_何炎祥_课后答案

    这是04年版编译原理的课后答案。1、简述计算机语言的发展过程

Global site tag (gtag.js) - Google Analytics