1.理解符号串与集合运算。
L={A,B, … ,Z,a,b, … ,z}
D={0,1, … ,9}
说明下表示的含义:
LUD:全部字母和数字在集合
LD:由一个字母后跟一个数字组成的所有符号串的集合
L4:由4个字母组成的所有符号串集合
L*:由字母组成的所有符号串的集合
D+:由一个或若干个数字组成的所有符号串集合
L(LUD)*以字母开头,后跟字母、数字组成的所有符号串的集合
- 文法G(Z):Z->aZb|ab定义的是什么样的语言?
答:
因为Z->aZb
所以Z->aaZbb
因为 Z->ab
所以Z-> aabb
又因为Z->aZb
所以aaZbb->aaabbb
又因为Z->ab
所以aabb->aaabbb
L(G)={anbn丨n>=1}
因此定义L(G)定义的是anbn
3.写出教材22页例2.2中标识符的文法四元组形式(VN,NT,P,S)。
有文法G=(Vn,Vt,P,S)
Vn ={L(标识符),D(字母),H(数字)},Vt ={a,b,c,d,~~~,y,z,0,1,2,~~~,9}
P={
<L>-><D>
<L>-><L><D>
<L>-><L><H>
<D>->a
<D>->b
<D>->c
……
<D>->z
<H>->1
<H>->2
<H>->3
……
<H>->9
}
S=<L>
4.写出下列表达式的最左推导、最右推导。
G(E):
E=> E + T | T
T=>T * F | F
F=>(E)| i
- i*i+i
- i+i*i
- i+(i+i)
注意观察最左和最右推导过程的不同。
最左推导:
E -> E + T
-> T + T
-> F + T
-> i + 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