编译系统透视:图解编译原理
上QQ阅读APP看书,第一时间看更新

2.1 词法分析概要说明

从第1章我们了解到,编译时要经过词法分析识别出符号、语法分析生成语法树、语法树生成中间代码、中间代码生成目标代码这样几个阶段,最终目标代码产生运行时结构。如图2-1所示。

图2-1 全书讲解内容的总体结构图

本章仍以第1章讲解运行时结构时提供的源程序为例,讲解编译的第一阶段——词法分析。词法分析在全书中的位置如图2-2所示。

图2-2 词法分析在全书结构中的位置

案例程序的C语言表现形式如下所示:

int fun(int a,int b);
int m=10;
int main()
{
  int i=4;
  int j=5;
  m=fun(i,j);
  return 0;
}
int fun(int a,int b)
{
  int c=0;
  c=a+b;
  return c;
}

这是我们看到的源程序的样子,但它在计算机上存储的形式与我们看到的形式不同,如果以十六进制的数字形式展现它们,C语言写的案例程序看上去如图2-3所示。

图2-3 案例程序的十六进制数表现形式

在计算机中,这是一串连续的看起来毫无头绪的数字。词法分析的任务就是要把这一串连续的数字根据C语言的词法规则切割成“int”、“a”、“=”、“10”、“;”——分立的标识符、数字、符号。

词法分析的实现过程是将这一串连续的数字作为字符串逐个读出字符,按照C语言的词法规则把连续的字符切分成独立的符号,并鉴别属性。