根据上课内容顺序写的博客,并不是按照书的目录来的
使用龙书以及编译程序设计原理(第二版)金成植、金英编著
老师的PPT是英文的,我自己随便翻的,不一定对
文章目录
语法分析parsing
知识图谱
语法分析过程
语法分析基础知识
语法分析器的功能
输入:词法单元/词法单元序列
输出:语法结构的内在表达式
过程:
读取词法单元
生成语法结构——语法树,根据语法定义(上下文无关文法)
检查语法错误
语法结构
用来描述一个明确定义的程序的结构
- 程序
- 声明
常数声明
类型声明
变量声明
程序/函数声明 - 主体
- 声明(赋值,条件语句,循环,函数调用)
- 表达式(算数,逻辑,布尔)
语法错误
不同类型的语法错误:
- 后继单词错误
- 标识符或者常量错
- 关键字错
- 开始单词错
- 括号配对错
处理语法错误:
- 立即退出,不实际
- 错误恢复
- 错误修补
- 错误改正
- 没有完美的办法
语法分析方法分类
通用于任何语法的语法分析方法(低效)
Cocke-Younger-Kasami算法
Earley’s 算法
自顶向下语法分析方法(有限制,可预测的)
递归下降法 recursive descendent parsing
LL(K) – K=1
自底向上语法分析方法(有限制,归约)
SLR(k)
LR(k)
LALR(k)
简