Chapter 1 概述

1.1 概念

编译器:翻译官,语义要相同

编译器静态计算生成目标程序,动态计算得到结果;

解释器:边解释边运行

1.2 结构

非常模块化,分为前端和后端;

按照阶段来看,可以看作流水线

一、没有优化的结构

(字符序列)词法分析(记号序列)语法分析(抽象语法树)语义分析(中间代码)代码生成(目标代码)

1.3 例子

一、栈式计算机

包含,一个栈、两条指令

1+2+3->加法树(IR)->代码生成

1.4 转移图

转移图:判断分析代码的流程,比如,可以分析大于小于号

标识符(变量名)和关键字有交集,词法分析角度上来看,关键字是标识符一部分。

编译原理(极速版)-LMLPHP

除了转移图,还能用哈希表,哈希表存入所有关键字。

方法:先转移图,识别完成后查表,看看是不是关键字。

1.5 正则表达式

也就是自动生成了

一、规则

空串是正则表达式;

任意字符集,是正则表达式;

如果M、N是正则表达式,那么M|N选择、MN连接、M*闭包也是正则表达式。

编译原理(极速版)-LMLPHP

08-27 03:13