编译原理作业3
答案仅供参考,若有问题欢迎评论区讨论~
4.2.1
考虑上下文无关文法:S ->SS+|SS*|a,以及串aa + a*
(1)给出这个串的一个最左推导。
(2)给出这个串的一个最右推导。
(3)给出这个串的一棵语法分析树。
(1)最左推导:
S->SS*
->SS+S*
->aS+S*
->aa+S*
->aa+a*
(2)最右推导:
S->SS*
->Sa*
->SS+a*
->Sa+a*
->aa+a*
(3)语法分析树
4.2.2
对下列的每一对文法和串重复练习4.2.1
-
S->0S1 | 01和串000111。
-
S->+SS | *SS |a和串+*aaa。
-
S->S(S)S | ε 和串(()())
-
S->(L) | a以及L->L,S | S和串((a, a), a, (a))。
- 1. S->0S1 | 01和串000111
(1)最左推导:
S->0S1
->00S11
->000111
(2)最右推导:
S->0S1
->00S11
->000111
(3)语法分析树
- S->+SS | *SS |a和串+*aaa
(1)最左推导:
S->+SS
->+*SSS
->+*aSS
->+*aaS
->+*aaa
(2)最右推导:
S->+SS
->+Sa
->+*SSa
->+*Saa
->+*aaa
(3)语法分析树
- S->S(S)S | ε 和串(()())
(1)最左推导:
S->S(S)S
->(S)S
->(S(S)S)S
->((S)S)S
->(()S)S
->(()S(S)S)S
->(()(S)S)S
->(()()S)S
->(()())S
->(()())
(2)最右推导:
S->S(S)S
->S(S)
->S(S(S)S)
->S(S(S))
->S(S())
->S(S(S)S())
->S(S(S)())
->S(S()())
->S(()())
->(()())
(3)语法分析树: