3、对于文法 G[S] S→A A→AB |ε B→aB | b (1) 请给出LR(1)项目的DFA,并构造LR(1)分析表; (15分) (2) 给出用LR(1)分析表对输入符号串abab$的分析过程
时间: 2023-08-18 22:08:45 浏览: 93
构造LR(1)分析程序,利用它进行语法分析,判断给出的符号串是否为该文法识别的句子
5星 · 资源好评率100%
(1) LR(1)项目集规范族和DFA如下:
LR(1)项目集规范族:
I0:
S' -> .S
S -> .A
A -> .AB
A -> .
I1:
S' -> S.
$ -> .
I2:
A -> A.B
B -> .aB
B -> .bB
I3:
A -> AB.
I4:
B -> a.B
B -> .aB
B -> .bB
I5:
B -> b.B
B -> .aB
B -> .bB
I6:
A -> A.B
B -> .aB
B -> .bB
I7:
A -> A.B
B -> a.B
B -> .aB
B -> .bB
I8:
A -> A.B
B -> b.B
B -> .aB
B -> .bB
DFA:
![LR1_DFA](https://cdn.luogu.com.cn/upload/image_hosting/qd32h9rb.png)
(2) 对于输入符号串abab$,分析过程如下:
初始状态为I0,分析栈中为状态0和结束符$。
输入符号串为abab$,读入a,根据分析表,状态0和a的组合为S。将S压入分析栈中,状态变为I1。
输入符号串为bab$,读入b,根据分析表,状态1和b的组合为A。将A压入分析栈中,状态变为I3。
输入符号串为ab$,读入a,根据分析表,状态3和a的组合为AB。将B和A弹出分析栈,将AB压入分析栈中,状态变为I2。
输入符号串为b$,读入b,根据分析表,状态2和b的组合为B。将B压入分析栈中,状态变为I5。
输入符号串为$,读入结束符$,根据分析表,状态5和$的组合为S。将S弹出分析栈,分析结束。
阅读全文