Chapter 1 概述
1.1 概念
编译器:翻译官,语义要相同
编译器静态计算生成目标程序,动态计算得到结果;
解释器:边解释边运行
1.2 结构
非常模块化,分为前端和后端;
按照阶段来看,可以看作流水线。
一、没有优化的结构
(字符序列)词法分析(记号序列)语法分析(抽象语法树)语义分析(中间代码)代码生成(目标代码)
1.3 例子
一、栈式计算机
包含,一个栈、两条指令
1+2+3->加法树(IR)->代码生成
1.4 转移图
转移图:判断分析代码的流程,比如,可以分析大于小于号
标识符(变量名)和关键字有交集,词法分析角度上来看,关键字是标识符一部分。
除了转移图,还能用哈希表,哈希表存入所有关键字。
方法:先转移图,识别完成后查表,看看是不是关键字。
1.5 正则表达式
也就是自动生成了
一、规则
空串是正则表达式;
任意字符集,是正则表达式;
如果M、N是正则表达式,那么M|N选择、MN连接、M*闭包也是正则表达式。