程序设计语言的大多数语法现象可以用CFG (上 下文无关文法)表示。下面的CFG产生式集用于描述简单算术表达式,其中+、-、*表示加、减、乘运算,id表示单个字母表示的变量,那么符合该文法的表达式为( )。
P:E→E+T|E-T|T
T→T*F|F
F→-F|id
- A.a+-b-c
- B.a*(b+c)
- C.a*-b+2
- D.-a/b+c
正确答案及解析
正确答案
A
解析
根据本题的语法推导式,可以发现,这里没有终结符“(”、")"、"/",因此选项B和D错误。
在推导的过程中,会发现"*"只能通过T推导,此时必定经过了E+T或E-T,也就是说“+”或“-”必定在“*”前面。因此C错误。
只有A能够被推导,推导过程如下:
(1)通过E→E-T,从起始符E得到E-T;
(2)通过E→E+T,将上面的E展开为E+T,得到E+T-T;
(3)通过E→T→F→id→单个字母a;
(4)通过T→F→-F→-id→单个字母-b;
(5)通过T→F→id→单个字母c。
综上,可以从起始符E得到a+-b-c,即为A选项。
包含此试题的试卷
你可能感兴趣的试题

-
- A.V(S2)和P(S4)
- B.P(S2)和V(S4)
- C.P(S2)和P(S4)
- D.V(S2)和V(S4)
- 查看答案

-
- A.V(S1)P(S2)和V(S3)
- B.P(S1)V(S2)和V(S3)
- C.V(S1)V(S2)和V(S3)
- D.P(S1)P(S2)和V(S3)
- 查看答案

-
- A.P(S4)和V(S4)V(S5)
- B.V(S5)和P(S4)P(S5)
- C.V(S3)和V(S4)V(S5)
- D.P(S3)和P(S4)V(P5)
- 查看答案

-
- A.P(S3)和V(S4)V(S5)
- B.V(S3)和P(S4)P(S5)
- C.P(S3)和P(S4)P(S5)
- D.V(S3)和V(S4)V(S5)
- 查看答案

-
- A.P(S2)和P(S4)
- B.P(S2)和V(S4)
- C.V(S2)和P(S4)
- D.V(S2)和V(S4)
- 查看答案