LR语法分析器
特点:
1)由表格驱动
2)几乎适用所有程序设计语言
3)无回溯的移入归约技术
4)可以尽早检测到错误
项
什么是项?这里所说的项是一种状态,用来在LR语法分析中对集合进行描述。
例如产生式 A -> XYZ 会有四个项
A -> ▪XYZ
A -> X▪YZ
A -> XY▪Z
A -> XYZ▪
产生式 A -> ε 只有一个项 A -> ▪
一个规范的LR(0)项族集提供了构建确定有穷自动机的基础。称为LR(0)自动机。
LR(0)项集中的项共分为四大类:
1)归约项目:归约结束,原点在最右端。如:A -> a▪
2)接收项目:左端为 S’ 的归约项目。如:S’ -> a▪
3)待约项目:原点后为非终结符的项目。如:A -> α▪Bβ
4)移进项目:原点后为终结符的项目。如:A -> α▪aβ
LR(0)自动机
构建一个LR(0)自动机,会涉及到一个增广文法和两个函数(CLOSURE和GOTO)两个函数之前都有了解了,分别用于求闭包和移进。增广文法含义如下:如果 G 是一个以 S 为开始符号的文法,那么 G 的增广文法 G’ 就是在 G 中加上新开始符号 S‘ 和产生式 S’-&