The GATE Grind

GATE 2017 CS – Question 53

Compiler Design · Code Optimization and Data Flow Analysis · 2 marks · Numerical answer

Consider the following grammar:

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

where `relop` is a relational operator (e.g., <, >, ...), ò refers to the empty statement, and `if`, `then`, `else` are terminals.

Consider a program $P$ following the above grammar containing ten `if` terminals. The number of control flow paths in $P$ is ________. For example, the program

if e1 then e2 else e3

has 2 control flow paths, $e_1 \rightarrow e_2$ and $e_1 \rightarrow e_3$.

Practise this question in The GATE Grind →

Show answer and explanation

Correct answer: 1024

Explanation

The statements follow one another in sequence. Each `if ... then ... else` statement gives 2 choices of path, and the choices are independent. With ten of them in sequence the number of paths is $2^{10} = 1024$.