733 views
1. An identifier in a programming language consists of up to six letters and digits of which the first character must be a letter. Derive a regular expression for the identifier.

2. Build an $LL(1)$ parsing table for the language defined by the $LL(1)$ grammar with productions

$\text{Program} \rightarrow \text{ begin } d \text{ semi } X\text{ end}$

$X \rightarrow d \text{ semi } X \mid sY$

$Y \rightarrow \text{ semi } s Y \mid \epsilon$

edited | 733 views

a.  $(letter)(letter+digit+\epsilon)^5$

b. Program $\rightarrow$ begin d semi $X$ end  --------------$A$

$X \rightarrow d \ semi X$  -------$B$

$X \rightarrow sY$--------------$C$

$Y \rightarrow semi \ sY$------------$D$

$Y \rightarrow \epsilon$ ---------------$E$

 Variable First Follow Program begin Xd,s$end$Ysemi$,$\epsilon$end Here First$(Y)$contains$\epsilon$so we need to add$Y \rightarrow \epsilon$at follow$(Y)$ Variable begin$d$semi$s$end$ Program $A$ $X$ $B$ $C$ $Y$ $D$ $Y \rightarrow \epsilon$
edited
0
How did you decide "semi" is variable or terminal?
+1
"semi" cannot be a variable as we do not have any productions from it.
+3

for part a) (letter)(letter+digit+epsilon)5

0

a.
$(letter)(letter + digit + epsilon)^5$
b.
1.program ---> begin d semi X end
2.    X -----> d semi x
3.              | sY
4.    Y ----->  semi sY
5.              | epsilon

begin       d       semi      s       end     \$
program       1
X                            2                      3
Y                                       4                                5

edited
+1

Given is, Programs →  begin d semi X end

while u considered program ---> begin s end

why?

0
Given

Programs →  begin d semi X end

then why program ---> begin s end  is considered here
+2

@Digvijay Pandey  entry '5' should be in 'y' row and 'end' column

0
How did you decide "semi" is variable or terminal?
+1
terminals are given in small letters.
0
if any symbol(semi in this case) is a non terminal, then we must have it at the LHS of a production.So semi is a terminal.