学编译原理--1

本文介绍了编译器和解释器的基本概念及优缺点,并详细解析了C语言程序从源代码到机器语言的整个编译流程,包括词法分析、语法分析、语义分析等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编译器:一个程序,将源程序(高级语言)翻译成目标程序(机器语言)

优点:执行速度快

解释器:用户边输入边执行

优点:错误诊断好 缺点:效率低

二者本质区别-----输出:一个输出目标程序,一个输出执行结果

C语言程序执行过程:预处理--->编译--->链接--->装入

编译步骤:

源程序--->

词法分析器----语法分析器---语义分析器---中间代码生成器----代码优化器----机器代码生成器

                         前端(front end)                                                   后端(back end)

词法分析器(Lexical Analysis)aka 扫描程序(scanning)

是编译的第一个阶段,将源程序字符流转换为词法单元tokens(aka.单词words)

(其中源程序中的空格被删除,注释也可被处理)

词法单元/单词 分类有:

1.保留字:if、else、while、do、int、float等

2.标识符:即用户自定义的变量名等,如nums、a、elem、x

3.常数:如int常数369、bool常数TRUE等

4.运算符:如“+、-、*、/、<、>”

5.界符:分界符号使用,如“,”“;”“(”“)”等

注意:保留字、运算符、界符的个数是确定的; 而常数、标识符则是不限定个数的。

语法分析器(Syntax analysis)aka.识别程序(parser)

将词法分析器的输出,根据一定语法规则,检查语法的正确性,转换为一种内部表示,比如语法树,如

 

语义分析(Semantic Analysis)

对语法分析器的结果进行进一步分析,避免指代不明和二义性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值