美文网首页
程序设计语言|高级语言源程序的编译过程

程序设计语言|高级语言源程序的编译过程

作者: 小青多多 | 来源:发表于2022-04-17 08:05 被阅读0次

高级语言源程序的编译过程通常分为:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成。

1.词法分析:输入源代码,对构成源程序的字符串进行扫描和分解,识别出一个个单词符号。单词符号是程序设计语言的基本语法单位,如关键字(或称保留字)、标识符、常数、运算符和分隔符(如标点符号、左右括号)等。词法分析程序输出的单词常以二元组的方式输出,即单词种别和单词自身的值。在词法分析阶段工作所依据的是语言的词法规则,描述词法规则的有效工具是正规式和有限自动机

2.语法分析:在词法分析的基础上,根据语言的语法规则,将单词符号序列分解成各类语法单位,如“表达式”、“语句”和“程序”等。语法分析程序确定整个输入串是否构成一个语法上正确的程序。如果源程序中没有语法错误,语法分析后就正确地构造出其语法树;否则指出语法错误,并给出相应的诊断信息。

3.语义分析:分析各语法结构的含义,检查源程序是否包含静态语义错误,并收集类型信息供后面的代码生成阶段使用。语义分析的一个主要工作是进行类型分析和检查。

4.中间代码生成:根据语义分析的输出生成中间代码。中间代码是一种简单且含义明确的几号系统,可以有若干种形式,他们的共同特征是与具体的机器无关。中间代码除四元式外,还有三元式、间接三元式、逆波兰式(后缀式)、树形表示等。

5.代码优化:对前面产生的中间代码进行加工,以期在最后阶段产生更为高效的代码。所做的优化一般建立在对程序的控制流和数据流分析的基础上,与具体机器无关。优化所依据的原则是程序的等价变换规则,其方法有公共子表达式的提取、循环优化、删除无用代码等。

6.目标代码生成:把中间代码(或经优化处理后)变换成特定机器上的低级语言代码。这个阶段的工作与具体的机器密切相关。

其中词法分析、语法分析、语义分析、目标代码生成是必须的,而中间代码生成、代码优化是可以不需要的。

相关文章

  • Java代码编译

    什么是编译 编译是利用编译程序从源语言编写的源程序产生目标程序的过程,一般是指把用高级程序设计语言书写的源程序,翻...

  • 程序设计语言|高级语言源程序的编译过程

    高级语言源程序的编译过程通常分为:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成。 1.词法分...

  • python等级考试(一)--程序设计基本方法

    程序设计语言发展 机器语言、汇编语言、高级语言 高级语言静态语言、脚本语言 静态语言程序编译与执行过程 采用编译方...

  • 编译原理(部分)

    第1章 引论 1.1 什么是编译程序 功能:高级语言程序(源程序)→【编译程序】→低级语言程序(目标程序) 过程:...

  • 反编译软件+sql注入方式

    反编译 什么是反编译?高级语言源程序经过 编译 变成可执行文件,反编译就是逆过程。 -反编译的工具 1、 jsfi...

  • 2018-11-05 C++常考笔试面试题

    几种语言的特性 汇编程序:将汇编语言源程序翻译成目标程序编译程序:将高级语言源程序翻译成目标程序解释程序:将高级语...

  • 基本执行结构和存储程序原理

    从程序到电子信号: 高级语言源程序-->(编译)-->汇编语言程序-->(汇编)-->目标文件:机器语言模块 & ...

  • 关于Makefile的使用

    本周主要学习在Linux系统下使用Makefile对多个C语言源程序进行编译。 对于多个C语言源程序编译的时候,可...

  • 程序设计语言基础(2)

    3. 编译程序基本原理 编译程序的功能是把某高级语言书写的源程序翻译成与之等价的目标程序(汇编语 言或机器语言)。...

  • java 01

    1.语言基本特点 java面向对象的高级程序设计语言,是编译型的语言,java里面是没有指针的这种概念,优化了内存...

网友评论

      本文标题:程序设计语言|高级语言源程序的编译过程

      本文链接:https://www.haomeiwen.com/subject/bcqhertx.html