“编译程序”的版本间的差异
跳到导航
跳到搜索
Jihongchang(讨论 | 贡献) (→2)词法分析) |
Jihongchang(讨论 | 贡献) (→2)词法分析) |
||
| 第13行: | 第13行: | ||
词法分析:从左到右逐个扫描源程序中的字符,识别其中如关键字(或称保留字)、标识符、常数、运算符以及分隔符(标点符号和括号)等。 | 词法分析:从左到右逐个扫描源程序中的字符,识别其中如关键字(或称保留字)、标识符、常数、运算符以及分隔符(标点符号和括号)等。 | ||
| − | 例: | + | 例:<syntaxhighlight lang="c"> |
| − | |||
VAR X,Y,Z: real; | VAR X,Y,Z: real; | ||
| − | + | X:=Y+Z*60; | |
| − | X:=Y+Z* | + | </syntaxhighlight>词法分析: |
| − | + | {| class="wikitable" | |
| − | 词法分析: | + | |(1)保留字 VAR |
| − | + | |(2)标识符 X | |
| − | (1)保留字 VAR | + | |(3) 逗号 , |
| − | + | |(4)标识符 Y | |
| − | (4)标识符 Y | + | |- |
| − | + | |(5)逗号 , | |
| − | (8)标识符 real | + | |(6)标识符 Z |
| − | + | |(7)冒号 : | |
| − | (11)赋值号 := | + | |(8)标识符 real |
| − | + | |- | |
| − | (14)标识符 Z | + | |(9)分号 ; |
| + | |(10)标识符 X | ||
| + | |(11)赋值号 := | ||
| + | |(12)标识符 Y | ||
| + | |- | ||
| + | |(13)加号 + | ||
| + | |(14)标识符 Z | ||
| + | |(15)乘号 * | ||
| + | |(16)整常数 60 | ||
| + | |- | ||
| + | |(17)分号 ; | ||
| + | | | ||
| + | | | ||
| + | | | ||
| + | |} | ||
=== 3)语法分析 === | === 3)语法分析 === | ||
语法分析:根军语法狗福诶 | 语法分析:根军语法狗福诶 | ||
2022年9月16日 (五) 02:27的版本
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)语法分析
语法分析:根军语法狗福诶