练习2-3
-
对文法G3[<表达式>](见上题),列出句型<表达式>+<项>*<因子>的所有短语和简单短语。
短语:<表达式>+<项>* <因子>, <表达式>+<项>, <项>*<因子>
简单短语:<表达式>+<项>, <项>*<因子>
练习2-4
-
给定文法G[E]为
E ::= RP | P
P ::= (E) | i
R ::= RP+ | RP* |P+ |P*
(1) 证明 i+i*(i+i) 是文法G的句子。
(2) 画出该句子的语法树。
(1) E => RP => R(E) => R(RP) =R(Ri) => R(P+i) => R(i+i) => RP* (i+i) => Ri* (i+i) => P+i* (i+i) => i+i* (i+i)
(2)
-
已知文法G[E]:
E ::= ET+ | T
T ::= TF * |F
F ::= FP↑ | P
P ::= (E) | i
有句型 TF*PP↑+,问此句型的短语、简单短语和句柄是什么?
短语:ET+、 EF+、 EFP↑+、 EPP↑+、TF+、 TFP↑+、 TPP↑+、TF* F+、 TF* FP↑+、 TF* PP↑+、T、 TF*、F、 FP↑、 P
简单短语:ET+、T、 TF*、 F、 FP↑、 P
句柄:TF*
6. 分别对 i+i*i 和 i+i+i 构造两颗语法树,从而证明下述文法G[<表达式>]是二义性的。
<表达式> ::= i | (<表达式>) | <表达式><运算符><表达式>
<运算符> ::= + | - | * | /
i+i*i:
i+i+i:
7. 证明下面的文法G[S]是二义的:
S ::= iSeS | iS | i
对于句子 iiiei,可构造出不同的语法树,故为二义的:
8. 有文法G[N]:
N ::= SE | E E ::= 0 | 2 | 4 | 6 | 8 | 10
S ::= SD | D D ::= 0 | 1 | 2 | ... | 9
举例说明文法G[N]有二义性,此文法描述的语言是什么?试写另一文法G’,使L(G) = L(G') 且G‘ 是无二义性的。
对于句子10,可构造出不同的语法树,故为二义的:
描述的语言为正偶整数。
G’[N]:
N ::= SE | E E ::= 0 | 2 | 4 | 6 | 8
S ::= SD | D D ::= 0 | 1 | 2 | ... | 9
练习2-4
-
设有一文法G[<目标>]:
<目标> ::= V1
V1 ::= V2 | V1iV2
V2 ::= V3 | V2+V3 | iV3
V3 ::= )V1* | (
试分析句子 ( 、)(* 、i( 、(+( 、(+(i 以及 (+)(i*i( 。