编译器各个步骤的介绍

233

词法分析:scanning

将字符流变成词素序列。每个词素使用  <token-name, attribute-vallue> 格式的词法单元(token)表示。

position = initial + rate * 60 转换成  <id, 1> <=> <id,2> <+> <id,3> <*> <60>

语法分析:parsing

创建树形的中间表示形式。表示词法单元流的语法结构。

扫描二维码关注公众号,回复: 1737470 查看本文章

语义分析:semantic analyzer

检查代码是否符合语义。将类型信息存入语法树或符号表中,包括类型检查和类型自动转换。

中间代码生成:

翻译成目标代码的过程中,编译器可能构造出多个中间表示形式,语法树是其中一种表示形式,通常在语法分析与语义分析中使用。

在完成语义分析后,还需要生成一个明确的低级的或类机器语言的中间表示形式。考虑使用三地址代码的中间表示形式。它 由一组类似汇编语言的指令组成,每个指令有三个运算分量。

   指令的最右部最多只有一个运算符,并且这些指令确定了运算完成的顺序。

代码生成器:

以源程序的中间表示形式作为输入,映射到目标语言。如果目标语言是机器代码,那么必须为程序使用的每个变量选择寄存器或内存位置。这样,中间指令将被翻译成能够完成相同任务的机器指令序列。

猜你喜欢

转载自www.cnblogs.com/lemos/p/9221078.html