作业二:理解文法和语文
1.理解符号串与集合运算。
L={A,B, … ,Z,a,b, … ,z}
D={0,1, … ,9}
说明下表示的含义:
LUD
LD
L4
L*
D+
L(LUD)*
答:LUD:即为L集合与D集合的并集合,即L={A,B, … ,Z,a,b, … ,z,0,1, … ,9}
LD : {xy | x∈L且y∈D}
L4: L集合的4位组合即{AAAA, AAAB, ..., zzzz}
L*: 集合L集合的闭包
D+: 表示D集合的正闭包
L(LUD)* :L并D的正闭包与L的乘积,即{xy | x∈L且y∈(LUD)*}
2.文法G(Z):Z->aZb|ab定义的是什么样的语言?
答:由Z->aZb|ab可得Z->aZb->aaZbb->aaabbb
所以:L(G) = {anbn | n > 1}
3.写出教材22页例2.2中标识符的文法四元组形式(VN,NT,P,S)。
I->
L->
D->
答:
I-> L|IL|ID
L-> a|b|c|...|x|y|z
D-> 0|1|2|...|8|9
4.写出下列表达式的最左推导、最右推导。
G(E):
E=> E + T | T
T=>T * F | F
F=>(E)| i
- i*i+i
- i+i*i
- i+(i+i)
注意观察最左和最右推导过程的不同。
答:
- i*i+i
最左推导:E => E + T => T+T => T*F+T => F*F+T => i*F+T => i*i+T => i*i+F => i*i+i
最右推导:E => E + T => E+F => E+i => T+i => T*F+i => T*i+i => F*i+i => i*i+i
- i+i*i
最左推导:E => E + T => T+T => F + T => i + T*F => i + F*F => i + i*F => i+i*i
最右推导:E => E + T => E + T*F => E + T*i => E + F*i => E + i*i => T +i*i => F+i*i => i+i*i
- i+(i+i)
最左推导:E => E + T => T+T => F + T => i + F => i+(E)=> i+(E+T) => i+(T+T) => i+(F+T) => i+(i+T) => i+(i+F) => i+(i+i)
最右推导:E => E + T => E + (E) => E + (E) => E + (E+T) => E+(E+F)=> E+(E+i) => E+(T+i) => E+(F+i) => E+(i+i) => T+(i+i) => F+(i+i) => i+(i+i)