“编译程序”的版本间的差异
跳到导航
跳到搜索
Jihongchang(讨论 | 贡献) (→3)语法分析) |
Jihongchang(讨论 | 贡献) (→3)语法分析) |
||
第50行: | 第50行: | ||
包括:语言结构出错、if...end if不匹配,缺少分号、括号不匹配、表达式缺少操作数等。 | 包括:语言结构出错、if...end if不匹配,缺少分号、括号不匹配、表达式缺少操作数等。 | ||
[[文件:语法分析.png|无|缩略图|600x600像素]] | [[文件:语法分析.png|无|缩略图|600x600像素]] | ||
+ | |||
+ | === 4)语义分析 === | ||
+ | 语义分析:进行类型分析和检查,主要检测源程序是否存在静态语义错误。 | ||
+ | |||
+ | 包括:运算符和运算类型不符合,如取余时用浮点数。 | ||
+ | {| class="wikitable" | ||
+ | |X | ||
+ | |real | ||
+ | |0 | ||
+ | |- | ||
+ | |Y | ||
+ | |real | ||
+ | |4 | ||
+ | |- | ||
+ | |Z | ||
+ | |real | ||
+ | |8 | ||
+ | |- | ||
+ | |... | ||
+ | |... | ||
+ | |... | ||
+ | |} | ||
+ | [[文件:语义分析.png|无|缩略图]] |
2022年9月16日 (五) 06:44的版本
https://www.bilibili.com/video/BV1hg411V7Bm?p=49
1)编译过程
编译程序的功能是把某高级语言书写的源程序翻译成与之等价的目标程序(汇编语言程序或机器语言程序)。
编译程序的工作过程可以分为6个阶段,如图所示,实际的编译器中可能会将其中的某些阶段结合在一起进行处理。
2)词法分析
词法分析:从左到右逐个扫描源程序中的字符,识别其中如关键字(或称保留字)、标识符、常数、运算符以及分隔符(标点符号和括号)等。
例:
VAR X,Y,Z: real;
X:=Y+Z*60;
词法分析:
(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不匹配,缺少分号、括号不匹配、表达式缺少操作数等。
4)语义分析
语义分析:进行类型分析和检查,主要检测源程序是否存在静态语义错误。
包括:运算符和运算类型不符合,如取余时用浮点数。
X | real | 0 |
Y | real | 4 |
Z | real | 8 |
... | ... | ... |