1.文法G(Z):Z->aZb|ab定义的是什么样的语言?
答:Z → ab
Z → aZb → aaZbb → aaaZbbb → anbn
所以定义的语言为:anbn
2.写出教材22页例2.2中标识符的文法四元组形式。
答:设标识符为E,字母为A,数字为B
VN={E,A,B} VT={A,B}
P={
E → A | EA | EB
A → a | b | c | … | z |
B → 1 | 2 | 3 | … | 9 |
}
S = E
3.写出下列表达式的最左推导、最右推导和语法树。
G(E):
E=> E + T | T
T=>T * F | F
F=>(E)| i
- i*i+i
- i+i*i
- i+(i+i)
注意观察最左和最右推导过程的不同,以及语法树的异同。
答:(1)i*i+i
最左推导:E → E+T → T+T → T*F+T → F*F+T → i*F+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
语法树:
(2)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
语法树:
(3)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)
语法树: