- 6
- 0
- 约小于1千字
- 约 57页
- 2020-07-01 发布于福建
- 举报
5.3LR(1)分折
由于LR(O)文法要求文法的每一个LR(O)
项目集中都不含
的项目,这个条件
比较苛刻,对于大多数程序设计语言来说
般都不能满足LR(0文法的条件,即使
是描述一个算述表达式的简单文法也不是
LR(O)文法
例考虑算术表达式E→E+T|T
的文法
T→T*F|F
F→(E)|id
5.3LR(1)分折
将文法拓广并对规则进行编号
0.E→E
4.T-F
E→E+T
5.F→(E)
E→T
6.F→→id
T→T*F
直接构造出识别文法规范句型活前缀
的DFA下如图所示。
lo:E→ELEr1:E
:E-E+T
E→+T
E→E+T
T→·T*F
T→→T*F
I3:T→F
F
T→
F→(E)
中吧
F
F→→id
E→→+T
Is:F→(E)
E→T
E→→E·+T
2:E→T
T→·T*F
一
0E→E
F→(E)
Is:F→id
EET
E+T
Tk.
→(E)
一
F→→id
一
lG:E→ELE「::1+16E→E+T
E→+T
T→T*F
I3:T→F
F
T→→T*F
T→
F→(E)
F
F→(E)
F→id
E→→+T
Ig:F→(E
E→T
E→→E·+T
T→·T*F
F→(E
F→(E)
原创力文档

文档评论(0)