程序语言基本知识--编译


编译概述

编译程序(编译器)将某种高级语言书写的源程序翻译成与之等价的目标程序(汇编语言或机器语言),然后在计算机上运行生成的目标程序。源程序与编译程序都不参加目标程序的执行过程。

编译过程

1.词法分析
输入源程序,对构成源程序的字符串从左到右(从前到后)逐个字符进行扫描,从中识别出一个个“单词”符号,删除无用信息。
符号是程序设计语言的基本单位,如关键字、标识符、常数、运算符、界符。词法分析输出的单词经常以二元组的方式输出,即单词种类与单词自身的值。描述词法规则通常使用正规式和有限自动机。

2.语法分析
以“单词符号”作为输入,分析单词符号串是否形成符合语法规则的语法单位。例如表达式、赋值、循环等。按照语法规则检查每条语句是否有正确的逻辑结构。

int a[5],b;//语句1
b=a*10;    //语句2

在上面的例子中,语句1定义了整型数组a与整型变量b,语句二将数组地址与整型相乘赋值给b。语句二毫无疑问是错误的。数组地址无法赋值整型变量。
但是在语法分析阶段,这里只检查语法单位是否存在逻辑结构错误,例如for循环是否有循环体,if…else语句是否有括号等。

3.语义分析

语义分析的主要是审查源程序是否存在语义错误,并收集类型信息供后面的代码生成阶段使用。语义分析的主要工作是进行各类型的分析与检查,例如赋值语句右端与左端变量类型不匹配,除数为0等错误都是在语义分析阶段发现的。
只有语法与语义都正确的源程序才能翻译成正确的目标代码。

4.中间代码生成
中间代码是一种结构简单且含义明确的记号系统,可以有多种形式。中间代码

代码的方式与具体的方式无关

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值