查看“编译程序”的源代码
←
编译程序
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看和复制此页面的源代码。
https://www.bilibili.com/video/BV1hg411V7Bm?p=49 === 1)编译过程 === 编译程序的功能是把某高级语言书写的源程序翻译成与之等价的目标程序(汇编语言程序或机器语言程序)。 编译程序的工作过程可以分为6个阶段,如图所示,实际的编译器中可能会将其中的某些阶段结合在一起进行处理。 [[文件:编译过程.png|无|缩略图|683x683像素]] [[文件:编译过程 2.png|无|缩略图|600x600像素]] === 2)词法分析 === 词法分析:从左到右逐个扫描源程序中的字符,识别其中如关键字(或称保留字)、标识符、常数、运算符以及分隔符(标点符号和括号)等。 例:<syntaxhighlight lang="c"> VAR X,Y,Z: real; X:=Y+Z*60; </syntaxhighlight>词法分析: {| class="wikitable" |(1)保留字 VAR |(2)标识符 X |(3) 逗号 , |(4)标识符 Y |- |(5)逗号 , |(6)标识符 Z |(7)冒号 : |(8)标识符 real |- |(9)分号 ; |(10)标识符 X |(11)赋值号 := |(12)标识符 Y |- |(13)加号 + |(14)标识符 Z |(15)乘号 * |(16)整常数 60 |- |(17)分号 ; | | | |} === 3)语法分析 === 语法分析:根据语法规则将单词符号分解成各类语法单位,并分析源程序是否存在语法上的错误。 包括:语言结构出错、if...end if不匹配,缺少分号、括号不匹配、表达式缺少操作数等。 [[文件:语法分析.png|无|缩略图|600x600像素]] === 4)语义分析 === 语义分析:进行类型分析和检查,主要检测源程序是否存在静态语义错误。 包括:运算符和运算类型不符合,如取余时用浮点数。 {| class="wikitable" |X |real |0 |- |Y |real |4 |- |Z |real |8 |- |... |... |... |} [[文件:语义分析.png|无|缩略图]] === 5)出错处理 === ==== 静态错误 ==== * 编译时所发现的程序错误(编译正确的程序没有静态错误) * 分为语法错误和静态语义错误 * 语法错误包含:单词拼写错误、标点符号错误、表达式中缺少操作数、括号不匹配等有关语言结构上的错误 * 静态语义分析:运算符与运算对象类型不合法等错误(比如浮点数取余) ==== 动态错误 ==== * 发生程序运行时(程序可通过编译) * 也叫动态语义错误 * 陷入死循环、变量取零时做除数、引用数组元素下标越界等错误
返回至
编译程序
。
导航菜单
个人工具
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
Spring Boot 2 零基础入门
Spring Cloud
Spring Boot
设计模式之禅
VUE
Vuex
Maven
算法
技能树
Wireshark
IntelliJ IDEA
ElasticSearch
VirtualBox
软考
正则表达式
程序员精讲
软件设计师精讲
初级程序员 历年真题
C
SQL
Java
FFmpeg
Redis
Kafka
MySQL
Spring
Docker
JMeter
Apache
Linux
Windows
Git
ZooKeeper
设计模式
Python
MyBatis
软件
数学
PHP
IntelliJ IDEA
CS基础知识
网络
项目
未分类
MediaWiki
镜像
问题
健身
国债
英语
烹饪
常见术语
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息