📜  门| GATE-CS-2017(套装1)|第 53 题

📅  最后修改于: 2021-09-24 06:40:31             🧑  作者: Mango

考虑以下语法:

stmt  -> if expr then else expr; stmt | ε
expr -> term relop term | term
term -> id | number
id ->  a | b | c
number -> [0-9]

其中relop是一个关系操作(例如 < >, ….),ε 指的是空语句,如果
, then , else是终结符。

考虑遵循上述语法的程序 P 包含十个 if 终端。号码
P 中控制流路径的数量是____________。

例如,程序

if e1 then e2 else e3 

有 2 个控制流路径,e 1 -> e 2和 e 1 -> e 3

(一) 20
(二) 1024
(三) 2048
(四) 10答案:(乙)
说明: 10 个 if终端的控制流路径数

  1. 如果然后别的; stmt
  2. 如果然后别的;如果然后别的; stmt
  3. ………………

10倍。

请注意,每个 if 结构后面都有一个分号。

因为,每个 if 结构都有 2 个控制流。
因此,第一个终端有 2 个控制流,
第二个终端有2个控制流,
第三个终端有2个控制流,
…………
第 9 个终端有 2 个控制流,
第10个终端有2个控制流。

使用计数乘法,我们得到
= 2*2*2*2*2……10 次 = 2^10 = 1024 个控制流路数, 10 个 if终端。

1024是正确答案。

这个问题的测验