编译原理读书笔记之"虎书"
来源:互联网 发布:程序员之路 编辑:程序博客网 时间:2024/05/16 12:53
作者:Andrew W.Appel,with Jens Palsberg
中文名:现代编译原理-C语言描述
现在又有了其它两个语言的版本
Modern Compiler Implementation in JAVA
Modern Compiler Implementation in ML
语法分析
1、LL(k)文法: (用于递归下降分析器。进行自顶向下的语法分析。方法是计算出非终结符的FIRST、FELLOW集,建立预测分析表。左递归消除是必须的)
第一个L表示从左到右扫描
第二个L表示最左推导
k表示最多向前使用几个token
LL(0)文法
S --> A
A --> + ID ID
ID --> a
该文法的推导过程不需要知道下一个token就能确定使用哪一个产生式进行推导
示例 +aa 的推导过程
S->A ---> + IDID --> +aID --> +ab
LL(1)文法
产生式一: S --> A | B
产生式二: A --> + ID ID
产生式三: B --> - ID ID
产生式四 : ID --> a | b
示例 a+b 的推导过程 中 只需要向后搜索一个token 就能判断出来使用产生式三还是产生式四进行推导
预测分析表:
预测分析表,罗列出在识别
完整示例
文法:- S->AB
A->CD
B->+AB|-AB |ε
C->ID|num|(S)
D->*CD| /CD |ε
构造预测分析表:(如果一个格内有两个产生式,那么就不是LL(1)文法
ID
num
(
)
+
-
*
/
#
S
S->AB
S->AB
S->AB
A
A->CD
A->CD
A->CD
B
B->ε
B->+AB
B->-AB
B->ε
C
C->ID
C->num
C->(S)
D
D->ε
D->ε
D->ε
D->*CD
D->/CD
D->ε
LR(k)
LR(0):每个状态(LR(0)项集)要么只包含归约,要么只包含移进,不用向前看token就知道是应该进行归约还是进行移进。
- 编译原理读书笔记之"虎书"
- 编译原理 虎书 读书笔记
- 编译原理读书笔记
- 读书笔记(II) 编译原理及实践
- 操作系统原理读书笔记之文件系统
- 操作系统原理读书笔记之死锁
- 编译原理之概述
- 编译原理之语法分析
- 编译原理之扫描器
- 编译原理之文法
- 编译原理之序言
- 编译原理之引论
- 编译原理之文法
- 读书笔记之《单片机原理与应用》
- 读书笔记之《Windows内核原理与实现》
- 读书笔记之《Windows内核原理与实现》
- 操作系统原理读书笔记之进程互斥
- 操作系统原理读书笔记之进程同步
- 从源码角度看for循环和foreach的区别
- PHP生成pdf
- CHARINDEX:显示包含"A"的所有雇员的姓名及"A"在姓名字段中的位置
- 学习Material Design Support
- 16个Linux服务器监控命令
- 编译原理读书笔记之"虎书"
- 1071. Speech Patterns (25)【字符串操作】——PAT (Advanced Level) Practise
- 如何获取彩色图像中的主色彩
- The Maximum-Subarray Problem
- [天文与科学]黄金眼
- iOS SEL(@selector)原理
- PHP定时执行任务的实现
- GNU自动化工具链autotools
- Codeforces 610С — Harmony Analysis 找规律