Compiler Design
02/08/2025
Name : Shubhangam Singh
Reg No. : 23BKT0059
Que) Write a C++ Program to implement recursive descent parser for the following grammar
E -> TE'
E' -> +TE' | ε
T -> FT'
T' -> *FT' | ε
F -> (E) | id
Code)
// 23BKT0059 Shubhangam Singh
#include <bits/stdc++.h>
char lookahead;
void E();
void E_prime();
void T();
void T_prime();
void F();
void match(char terminal)
{
if(lookahead == terminal)
{
lookahead = getchar();
}
else
{
printf("Syntax Error");
exit(1);
}
}
void E() // E -> TE'
{
T();
E_prime();
}
void E_prime() // E' -> +TE' | ε
{
if(lookahead == '+')
{
match('+');
T();
E_prime();
}
}
void T() // T -> FT'
{
F();
T_prime();
}
void T_prime() // T' -> *FT' | ε
{
if(lookahead == '*')
{
match('*');
F();
T_prime();
}
}
void F() // F -> (E) | id
{
if(lookahead == '(')
{
match('(');
E();
match(')');
}
else if(lookahead == 'i')
{
match('i');
}
else
{
printf("Syntax error");
exit(1);
}
}
int main()
{
printf("Enter an expression ending with $:\n");
lookahead=getchar();
E();
if(lookahead == '$')
{
printf("\nParsing Successful\n");
}
else
{
printf("\nInvalid Input\n");
}
return 0;
}
Screen Shots ->