图6.51 编译的各个阶段
词法分析阶段是编译过程的第一个阶段。这个阶段的任务是从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词(也称单词符号或符号)。这里所谓的单词是指逻辑上紧密相连的一组字符,这些字符具有集体含义。比如标识符用于表示变量名,是由字母字符开头,后跟字母、数字字符的字符序列组成的一种单词。保留字(关键字或基本字)是一种单词,此外还有算符、界符等。例如某源程序片段如下:
begin var sum,first,count:real;sum∶=first﹢count∗10 end.
词法分析阶段将构成这段程序的字符组成了如下19个单词序列:
•保留字begin
•保留字var
•标识符sum
•逗号,
•标识符first
•逗号,
•标识符count
•冒号:
•保留字real
•分号;
•标识符sum
•赋值号∶=
•标识符first
•加号﹢
•标识符count
•乘号∗
•整数10
•保留字end
•界符·
可以看出,五个字符即b,e,g,i和n构成了一个称为保留字的单词begin,两个字符即“:”和“=”构成了表示赋值运算的符号“∶=”。这些单词间的空格在词法分析阶段都被过滤掉了。
我们知道,标识符用于表示变量名,可以很方便地使用id1,id2和id3分别表示sum,first和count三个标识符的内部形式,那么经过词法分析后上述程序片段中的赋值语句:
sum∶=first﹢count∗10则表示为id1∶=id2﹢id3∗10
词法分析阶段的任务是读字符流的源程序,从中识别并构成单词。
一个Pascal源程序片段:position:=initial﹢rate∗60;词法分析后可能返回:(www.daowen.com)
单词类型 单词值
标识符position
算符(赋值):=
标识符initial
算符(加)﹢
标识符rate
算符(乘)∗
整数60
界符(分号);
一个C源程序片段:
int a;
a=a﹢2;
词法分析后可能返回:
单词类型 单词值
保留字int
标识符a
界符;
标识符a
算符(赋值)=
标识符a
算符(加)﹢
整数2
界符;
有关的英文:
词法分析——lexical analysis或者scanning
单词——token
保留字——reserved word
标识符——identifier(user-defined name)
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。