1.理解符号串与集合运算。
L={A,B, … ,Z,a,b, … ,z}
D={0,1, … ,9}
说明下表示的含义:
LUD:L与D符号串的集合
LD:L中的字母后面跟D中的数字组成的符号串的集合
L4:L中的4个字母组成的所有符号串集合
L*:由字母(包括ε)组成的所有符号串集合
D+:由D中一个或若干个数字组成的所有符号串的集合
L(LUD)*:L的字母开头,后跟L的字母和D的数字组成的符号串的集合
2.文法G(Z):Z->aZb|ab定义的是什么样的语言?
答:规则,也称作重写规则,产生式或生成式。
Z->aZb,Z->ab;
Z->aZb->aaZbb->aaabbb
所以:L(G)={abna| n ≥ 1}
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}
首先 设I为<标识符>;L为<字母>;D为<数字>
P={
<I>-><L>
<I>-><I><L>
<L>-><I><D>
<L>->a
<L>->b
....
<L>->z
<D>->0
<D>->1
....
<D>->9
}
所以S=<I>
所以
I-> I | IL | ID
L->a | b | c |...| x | y | z
D->0 |1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
写出下列表达式的最左推导、最右推导。
G(E):
E=> E + T | T
T=>T * F | F
F=>(E)| 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=>i+T*F=>i+F*F=>i+i*i=>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+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+F=>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)